net/9p: switch p9_fd_read to kernel_write
authorChristoph Hellwig <hch@lst.de>
Fri, 1 Sep 2017 15:39:18 +0000 (17:39 +0200)
committerAl Viro <viro@zeniv.linux.org.uk>
Mon, 4 Sep 2017 23:05:16 +0000 (19:05 -0400)
Instead of playing with the addressing limits.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
net/9p/trans_fd.c

index f12815777bebf05f3b9555eeb565c46f1c2c1d90..903a190319b94d2c09cce263684017f61d4e6d22 100644 (file)
@@ -422,8 +422,7 @@ error:
 
 static int p9_fd_write(struct p9_client *client, void *v, int len)
 {
-       int ret;
-       mm_segment_t oldfs;
+       ssize_t ret;
        struct p9_trans_fd *ts = NULL;
 
        if (client && client->status != Disconnected)
@@ -435,12 +434,7 @@ static int p9_fd_write(struct p9_client *client, void *v, int len)
        if (!(ts->wr->f_flags & O_NONBLOCK))
                p9_debug(P9_DEBUG_ERROR, "blocking write ...\n");
 
-       oldfs = get_fs();
-       set_fs(get_ds());
-       /* The cast to a user pointer is valid due to the set_fs() */
-       ret = vfs_write(ts->wr, (__force void __user *)v, len, &ts->wr->f_pos);
-       set_fs(oldfs);
-
+       ret = kernel_write(ts->wr, v, len, &ts->wr->f_pos);
        if (ret <= 0 && ret != -ERESTARTSYS && ret != -EAGAIN)
                client->status = Disconnected;
        return ret;