aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2017-09-14 21:13:32 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2017-09-14 21:13:32 -0400
commit581bfce969cbfc7ce43ee92273be9cb7c3fdfa61 (patch)
tree0a693778ce39c49b9b7d93d0d6795c576896f5cf /fs/btrfs
parentcc73fee0bae2d66594d1fa2df92bbd783aa98e04 (diff)
parent9725d4cef62229b4ec4c912e0db0761e7d400650 (diff)
Merge branch 'work.set_fs' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull more set_fs removal from Al Viro: "Christoph's 'use kernel_read and friends rather than open-coding set_fs()' series" * 'work.set_fs' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: fs: unexport vfs_readv and vfs_writev fs: unexport vfs_read and vfs_write fs: unexport __vfs_read/__vfs_write lustre: switch to kernel_write gadget/f_mass_storage: stop messing with the address limit mconsole: switch to kernel_read btrfs: switch write_buf to kernel_write net/9p: switch p9_fd_read to kernel_write mm/nommu: switch do_mmap_private to kernel_read serial2002: switch serial2002_tty_write to kernel_{read/write} fs: make the buf argument to __kernel_write a void pointer fs: fix kernel_write prototype fs: fix kernel_read prototype fs: move kernel_read to fs/read_write.c fs: move kernel_write to fs/read_write.c autofs4: switch autofs4_write to __kernel_write ashmem: switch to ->read_iter
Diffstat (limited to 'fs/btrfs')
-rw-r--r--fs/btrfs/send.c18
1 files changed, 4 insertions, 14 deletions
diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c
index 8f1d3d6e7087..32b043ef8ac9 100644
--- a/fs/btrfs/send.c
+++ b/fs/btrfs/send.c
@@ -539,33 +539,23 @@ static struct btrfs_path *alloc_path_for_send(void)
539static int write_buf(struct file *filp, const void *buf, u32 len, loff_t *off) 539static int write_buf(struct file *filp, const void *buf, u32 len, loff_t *off)
540{ 540{
541 int ret; 541 int ret;
542 mm_segment_t old_fs;
543 u32 pos = 0; 542 u32 pos = 0;
544 543
545 old_fs = get_fs();
546 set_fs(KERNEL_DS);
547
548 while (pos < len) { 544 while (pos < len) {
549 ret = vfs_write(filp, (__force const char __user *)buf + pos, 545 ret = kernel_write(filp, buf + pos, len - pos, off);
550 len - pos, off);
551 /* TODO handle that correctly */ 546 /* TODO handle that correctly */
552 /*if (ret == -ERESTARTSYS) { 547 /*if (ret == -ERESTARTSYS) {
553 continue; 548 continue;
554 }*/ 549 }*/
555 if (ret < 0) 550 if (ret < 0)
556 goto out; 551 return ret;
557 if (ret == 0) { 552 if (ret == 0) {
558 ret = -EIO; 553 return -EIO;
559 goto out;
560 } 554 }
561 pos += ret; 555 pos += ret;
562 } 556 }
563 557
564 ret = 0; 558 return 0;
565
566out:
567 set_fs(old_fs);
568 return ret;
569} 559}
570 560
571static int tlv_put(struct send_ctx *sctx, u16 attr, const void *data, int len) 561static int tlv_put(struct send_ctx *sctx, u16 attr, const void *data, int len)