|
@@ -1373,8 +1373,8 @@ static ssize_t fuse_dev_splice_read(struct file *in, loff_t *ppos,
|
|
|
if (!fud)
|
|
|
return -EPERM;
|
|
|
|
|
|
- bufs = kmalloc_array(pipe->buffers, sizeof(struct pipe_buffer),
|
|
|
- GFP_KERNEL);
|
|
|
+ bufs = kvmalloc_array(pipe->buffers, sizeof(struct pipe_buffer),
|
|
|
+ GFP_KERNEL);
|
|
|
if (!bufs)
|
|
|
return -ENOMEM;
|
|
|
|
|
@@ -1407,7 +1407,7 @@ out:
|
|
|
for (; page_nr < cs.nr_segs; page_nr++)
|
|
|
put_page(bufs[page_nr].page);
|
|
|
|
|
|
- kfree(bufs);
|
|
|
+ kvfree(bufs);
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
@@ -1957,8 +1957,8 @@ static ssize_t fuse_dev_splice_write(struct pipe_inode_info *pipe,
|
|
|
|
|
|
pipe_lock(pipe);
|
|
|
|
|
|
- bufs = kmalloc_array(pipe->buffers, sizeof(struct pipe_buffer),
|
|
|
- GFP_KERNEL);
|
|
|
+ bufs = kvmalloc_array(pipe->buffers, sizeof(struct pipe_buffer),
|
|
|
+ GFP_KERNEL);
|
|
|
if (!bufs) {
|
|
|
pipe_unlock(pipe);
|
|
|
return -ENOMEM;
|
|
@@ -2017,7 +2017,7 @@ static ssize_t fuse_dev_splice_write(struct pipe_inode_info *pipe,
|
|
|
pipe_buf_release(pipe, &bufs[idx]);
|
|
|
|
|
|
out:
|
|
|
- kfree(bufs);
|
|
|
+ kvfree(bufs);
|
|
|
return ret;
|
|
|
}
|
|
|
|