Instead of playing with the addressing limits.

Signed-off-by: Christoph Hellwig <[email protected]>
---
 net/9p/trans_fd.c | 10 ++--------
 1 file changed, 2 insertions(+), 8 deletions(-)

diff --git a/net/9p/trans_fd.c b/net/9p/trans_fd.c
index f12815777beb..903a190319b9 100644
--- a/net/9p/trans_fd.c
+++ b/net/9p/trans_fd.c
@@ -422,8 +422,7 @@ static void p9_read_work(struct work_struct *work)
 
 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;
-- 
2.11.0

Reply via email to