Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a7b1a483 authored by Trond Myklebust's avatar Trond Myklebust
Browse files

SUNRPC: Ignore queue transmission errors on successful transmission



If a request transmission fails due to write space or slot unavailability
errors, but the queued task then gets transmitted before it has time to
process the error in call_transmit_status() or call_bc_transmit_status(),
we need to suppress the transmission error code to prevent it from leaking
out of the RPC layer.

Reported-by: default avatarChuck Lever <chuck.lever@oracle.com>
Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
Tested-by: default avatarChuck Lever <chuck.lever@oracle.com>
parent dc4060a5
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -2081,7 +2081,7 @@ call_transmit_status(struct rpc_task *task)
	 * test first.
	 */
	if (rpc_task_transmitted(task)) {
		if (task->tk_status == 0)
		task->tk_status = 0;
		xprt_request_wait_receive(task);
		return;
	}
@@ -2167,6 +2167,9 @@ call_bc_transmit_status(struct rpc_task *task)
{
	struct rpc_rqst *req = task->tk_rqstp;

	if (rpc_task_transmitted(task))
		task->tk_status = 0;

	dprint_status(task);

	switch (task->tk_status) {