···422422423423static int p9_fd_write(struct p9_client *client, void *v, int len)424424{425425- int ret;426426- mm_segment_t oldfs;425425+ ssize_t ret;427426 struct p9_trans_fd *ts = NULL;428427429428 if (client && client->status != Disconnected)···434435 if (!(ts->wr->f_flags & O_NONBLOCK))435436 p9_debug(P9_DEBUG_ERROR, "blocking write ...\n");436437437437- oldfs = get_fs();438438- set_fs(get_ds());439439- /* The cast to a user pointer is valid due to the set_fs() */440440- ret = vfs_write(ts->wr, (__force void __user *)v, len, &ts->wr->f_pos);441441- set_fs(oldfs);442442-438438+ ret = kernel_write(ts->wr, v, len, &ts->wr->f_pos);443439 if (ret <= 0 && ret != -ERESTARTSYS && ret != -EAGAIN)444440 client->status = Disconnected;445441 return ret;