diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2017-09-14 21:13:32 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2017-09-14 21:13:32 -0400 |
commit | 581bfce969cbfc7ce43ee92273be9cb7c3fdfa61 (patch) | |
tree | 0a693778ce39c49b9b7d93d0d6795c576896f5cf /fs/btrfs | |
parent | cc73fee0bae2d66594d1fa2df92bbd783aa98e04 (diff) | |
parent | 9725d4cef62229b4ec4c912e0db0761e7d400650 (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.c | 18 |
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) | |||
539 | static int write_buf(struct file *filp, const void *buf, u32 len, loff_t *off) | 539 | static 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 | |||
566 | out: | ||
567 | set_fs(old_fs); | ||
568 | return ret; | ||
569 | } | 559 | } |
570 | 560 | ||
571 | static int tlv_put(struct send_ctx *sctx, u16 attr, const void *data, int len) | 561 | static int tlv_put(struct send_ctx *sctx, u16 attr, const void *data, int len) |