···422423static int p9_fd_write(struct p9_client *client, void *v, int len)424{425- int ret;426- mm_segment_t oldfs;427 struct p9_trans_fd *ts = NULL;428429 if (client && client->status != Disconnected)···434 if (!(ts->wr->f_flags & O_NONBLOCK))435 p9_debug(P9_DEBUG_ERROR, "blocking write ...\n");436437- oldfs = get_fs();438- set_fs(get_ds());439- /* The cast to a user pointer is valid due to the set_fs() */440- ret = vfs_write(ts->wr, (__force void __user *)v, len, &ts->wr->f_pos);441- set_fs(oldfs);442-443 if (ret <= 0 && ret != -ERESTARTSYS && ret != -EAGAIN)444 client->status = Disconnected;445 return ret;
···422423static int p9_fd_write(struct p9_client *client, void *v, int len)424{425+ ssize_t ret;0426 struct p9_trans_fd *ts = NULL;427428 if (client && client->status != Disconnected)···435 if (!(ts->wr->f_flags & O_NONBLOCK))436 p9_debug(P9_DEBUG_ERROR, "blocking write ...\n");437438+ ret = kernel_write(ts->wr, v, len, &ts->wr->f_pos);00000439 if (ret <= 0 && ret != -ERESTARTSYS && ret != -EAGAIN)440 client->status = Disconnected;441 return ret;