Skip to content

Commit

Permalink
SUNRPC: Ensure the bvecs are reset when we re-encode the RPC request
Browse files Browse the repository at this point in the history
The bvec tracks the list of pages, so if the number of pages changes
due to a re-encode, we need to reset the bvec as well.

Fixes: 277e4ab ("SUNRPC: Simplify TCP receive code by switching...")
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Cc: stable@vger.kernel.org # v4.20+
  • Loading branch information
Trond Myklebust committed Jul 18, 2019
1 parent 8e04fdf commit 7536908
Show file tree
Hide file tree
Showing 3 changed files with 4 additions and 2 deletions.
3 changes: 1 addition & 2 deletions net/sunrpc/clnt.c
Original file line number Diff line number Diff line change
Expand Up @@ -1865,6 +1865,7 @@ rpc_xdr_encode(struct rpc_task *task)
req->rq_snd_buf.head[0].iov_len = 0;
xdr_init_encode(&xdr, &req->rq_snd_buf,
req->rq_snd_buf.head[0].iov_base, req);
xdr_free_bvec(&req->rq_snd_buf);
if (rpc_encode_header(task, &xdr))
return;

Expand Down Expand Up @@ -1904,8 +1905,6 @@ call_encode(struct rpc_task *task)
rpc_call_rpcerror(task, task->tk_status);
}
return;
} else {
xprt_request_prepare(task->tk_rqstp);
}

/* Add task to reply queue before transmission to avoid races */
Expand Down
2 changes: 2 additions & 0 deletions net/sunrpc/xprt.c
Original file line number Diff line number Diff line change
Expand Up @@ -1041,6 +1041,8 @@ xprt_request_enqueue_receive(struct rpc_task *task)

if (!xprt_request_need_enqueue_receive(task, req))
return;

xprt_request_prepare(task->tk_rqstp);
spin_lock(&xprt->queue_lock);

/* Update the softirq receive buffer */
Expand Down
1 change: 1 addition & 0 deletions net/sunrpc/xprtsock.c
Original file line number Diff line number Diff line change
Expand Up @@ -909,6 +909,7 @@ static int xs_nospace(struct rpc_rqst *req)
static void
xs_stream_prepare_request(struct rpc_rqst *req)
{
xdr_free_bvec(&req->rq_rcv_buf);
req->rq_task->tk_status = xdr_alloc_bvec(&req->rq_rcv_buf, GFP_KERNEL);
}

Expand Down

0 comments on commit 7536908

Please sign in to comment.