diff options
Diffstat (limited to 'libbcachefs/darray.c')
-rw-r--r-- | libbcachefs/darray.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/libbcachefs/darray.c b/libbcachefs/darray.c index 4c900c85..ac35b8b7 100644 --- a/libbcachefs/darray.c +++ b/libbcachefs/darray.c @@ -4,7 +4,7 @@ #include <linux/slab.h> #include "darray.h" -int __bch2_darray_resize(darray_void *d, size_t element_size, size_t new_size, gfp_t gfp) +int __bch2_darray_resize(darray_char *d, size_t element_size, size_t new_size, gfp_t gfp) { if (new_size > d->size) { new_size = roundup_pow_of_two(new_size); @@ -14,7 +14,8 @@ int __bch2_darray_resize(darray_void *d, size_t element_size, size_t new_size, g return -ENOMEM; memcpy(data, d->data, d->size * element_size); - kvfree(d->data); + if (d->data != d->preallocated) + kvfree(d->data); d->data = data; d->size = new_size; } |