2002-08-30 18:13:54

by Chuck Lever

[permalink] [raw]
Subject: [PATCH] prevent oops in xprt_lock_write, against 2.5.32

hi linus-

when several RPC requests want to reconnect a TCP transport socket at
once, xprt_lock_write serializes the tasks to prevent multiple socket
connects. however, TCP connects are always done by a RPC child task that
has no request slot. xprt_lock_write can oops if there is no request slot
allocated to the invoking RPC task. reviewed and accepted by Trond.

the xprt_lock_write changes are not yet in 2.4, so this patch does not
apply to 2.4.

diff -drN -U2 00-stock/net/sunrpc/xprt.c 01-lock_write/net/sunrpc/xprt.c
--- 00-stock/net/sunrpc/xprt.c Tue Aug 27 15:26:35 2002
+++ 01-lock_write/net/sunrpc/xprt.c Thu Aug 29 10:10:00 2002
@@ -148,5 +148,5 @@
task->tk_timeout = 0;
task->tk_status = -EAGAIN;
- if (task->tk_rqstp->rq_nresend)
+ if (task->tk_rqstp && task->tk_rqstp->rq_nresend)
rpc_sleep_on(&xprt->resend, task, NULL, NULL);
else

--

corporate: <cel at netapp dot com>
personal: <chucklever at bigfoot dot com>



-------------------------------------------------------
This sf.net email is sponsored by: OSDN - Tired of that same old
cell phone? Get a new here for FREE!
https://www.inphonic.com/r.asp?r=sourceforge1&refcode1=vs3390
_______________________________________________
NFS maillist - [email protected]
https://lists.sourceforge.net/lists/listinfo/nfs