summaryrefslogtreecommitdiff
path: root/libbcachefs/darray.c
diff options
context:
space:
mode:
Diffstat (limited to 'libbcachefs/darray.c')
-rw-r--r--libbcachefs/darray.c5
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;
}