It was reported via email that the cu_sent field used by the

krpc client side UDP was observed as way out of range and
caused the rpc.lockd daemon to hang trying to do an RPC.
Inspection of the code found two places where the RPC request
is re-queued, but the value of cu_sent was not incremented.
Since cu_sent is always decremented when the RPC request is
dequeued, I think this could have caused cu_sent to go out of
range. This patch adds lines to increment cu_sent for these
two cases.

Reported by:	dwhite@ixsystems.com
Discussed with:	dwhite@ixsystems.com
MFC after:	2 weeks
This commit is contained in:
Rick Macklem 2013-09-06 02:34:34 +00:00
parent 653a5825b8
commit 318677ad92
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=255284

View File

@ -682,6 +682,7 @@ clnt_dg_call(
next_sendtime += retransmit_time;
goto send_again;
}
cu->cu_sent += CWNDSCALE;
TAILQ_INSERT_TAIL(&cs->cs_pending, cr, cr_link);
}
@ -733,6 +734,7 @@ clnt_dg_call(
*/
XDR_DESTROY(&xdrs);
mtx_lock(&cs->cs_lock);
cu->cu_sent += CWNDSCALE;
TAILQ_INSERT_TAIL(&cs->cs_pending,
cr, cr_link);
cr->cr_mrep = NULL;