net/9p: switch p9_fd_read to kernel_write
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>
This commit is contained in:
parent
b4bf802a5a
commit
670986ec01
|
@ -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)
|
static int p9_fd_write(struct p9_client *client, void *v, int len)
|
||||||
{
|
{
|
||||||
int ret;
|
ssize_t ret;
|
||||||
mm_segment_t oldfs;
|
|
||||||
struct p9_trans_fd *ts = NULL;
|
struct p9_trans_fd *ts = NULL;
|
||||||
|
|
||||||
if (client && client->status != Disconnected)
|
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))
|
if (!(ts->wr->f_flags & O_NONBLOCK))
|
||||||
p9_debug(P9_DEBUG_ERROR, "blocking write ...\n");
|
p9_debug(P9_DEBUG_ERROR, "blocking write ...\n");
|
||||||
|
|
||||||
oldfs = get_fs();
|
ret = kernel_write(ts->wr, v, len, &ts->wr->f_pos);
|
||||||
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);
|
|
||||||
|
|
||||||
if (ret <= 0 && ret != -ERESTARTSYS && ret != -EAGAIN)
|
if (ret <= 0 && ret != -ERESTARTSYS && ret != -EAGAIN)
|
||||||
client->status = Disconnected;
|
client->status = Disconnected;
|
||||||
return ret;
|
return ret;
|
||||||
|
|
Loading…
Reference in New Issue