diff options
Diffstat (limited to 'net/ceph/buffer.c')
| -rw-r--r-- | net/ceph/buffer.c | 22 | 
1 files changed, 6 insertions, 16 deletions
diff --git a/net/ceph/buffer.c b/net/ceph/buffer.c index bf3e6a13c21..621b5f65407 100644 --- a/net/ceph/buffer.c +++ b/net/ceph/buffer.c @@ -6,6 +6,7 @@  #include <linux/ceph/buffer.h>  #include <linux/ceph/decode.h> +#include <linux/ceph/libceph.h> /* for ceph_kv{malloc,free} */  struct ceph_buffer *ceph_buffer_new(size_t len, gfp_t gfp)  { @@ -15,16 +16,10 @@ struct ceph_buffer *ceph_buffer_new(size_t len, gfp_t gfp)  	if (!b)  		return NULL; -	b->vec.iov_base = kmalloc(len, gfp | __GFP_NOWARN); -	if (b->vec.iov_base) { -		b->is_vmalloc = false; -	} else { -		b->vec.iov_base = __vmalloc(len, gfp | __GFP_HIGHMEM, PAGE_KERNEL); -		if (!b->vec.iov_base) { -			kfree(b); -			return NULL; -		} -		b->is_vmalloc = true; +	b->vec.iov_base = ceph_kvmalloc(len, gfp); +	if (!b->vec.iov_base) { +		kfree(b); +		return NULL;  	}  	kref_init(&b->kref); @@ -40,12 +35,7 @@ void ceph_buffer_release(struct kref *kref)  	struct ceph_buffer *b = container_of(kref, struct ceph_buffer, kref);  	dout("buffer_release %p\n", b); -	if (b->vec.iov_base) { -		if (b->is_vmalloc) -			vfree(b->vec.iov_base); -		else -			kfree(b->vec.iov_base); -	} +	ceph_kvfree(b->vec.iov_base);  	kfree(b);  }  EXPORT_SYMBOL(ceph_buffer_release);  | 
