Signed-off-by: David Sterba <dste...@suse.com>
---
 fs/btrfs/ioctl.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
index 21423dd15da4..0cb80379e6f6 100644
--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -3468,13 +3468,16 @@ static int btrfs_clone(struct inode *src, struct inode 
*inode,
        u64 last_dest_end = destoff;
 
        ret = -ENOMEM;
-       buf = vmalloc(root->nodesize);
-       if (!buf)
-               return ret;
+       buf = kmalloc(root->nodesize, GFP_KERNEL | __GFP_NOWARN);
+       if (!buf) {
+               buf = vmalloc(root->nodesize);
+               if (!buf)
+                       return ret;
+       }
 
        path = btrfs_alloc_path();
        if (!path) {
-               vfree(buf);
+               kvfree(buf);
                return ret;
        }
 
@@ -3775,7 +3778,7 @@ static int btrfs_clone(struct inode *src, struct inode 
*inode,
 
 out:
        btrfs_free_path(path);
-       vfree(buf);
+       kvfree(buf);
        return ret;
 }
 
-- 
2.7.1

--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to