Fix bug in sunrpc/server code.
Subsystems (3)
PATCH 1/1 Fix bug in sunrpc/server code.
### Comments for ChangeSet
When a socket has a request ready it notifies a server thread. When the thread has 'received' the request it calls svc_sock_received to confirm the fact.
In some cases, svc_sock_received would be called an extra time and this could lead to linked-list corruption and bad problems. Fixed now.
----------- Diffstat output ------------
./net/sunrpc/svcsock.c | 14 +++++++++----- 1 files changed, 9 insertions(+), 5 deletions(-)
net/sunrpc/svcsock.c renamed from net/sunrpc/svcsock.c~current~ +9 -5
@@ -567,14 +567,17 @@ svc_udp_recvfrom(struct svc_rqst *rqstp) (serv->sv_nrthreads+3 ) * serv->sv_bufsz, (serv->sv_nrthreads+3) * serv->sv_bufsz); -if ((rqstp->rq_deferred =svc_deferred_dequeue (svsk))) +if ((rqstp->rq_deferred =svc_deferred_dequeue (svsk))) { +svc_sock_received (svsk);return svc_deferred_recv (rqstp); + }clear_bit (SK_DATA , &svsk->sk_flags);while ((skb =skb_recv_datagram (svsk->sk_sk,0 ,1 , &err)) ==NULL ) { -svc_sock_received (svsk); -if (err == -EAGAIN ) +if (err == -EAGAIN ) { +svc_sock_received (svsk);return err; + }/* possibly an icmp error */ dprintk ("svc: recvfrom returned error %d\n" , -err); }
@@ -869,8 +872,10 @@ svc_tcp_recvfrom(struct svc_rqst *rqstp)test_bit (SK_CONN , &svsk->sk_flags), test_bit(SK_CLOSE, &svsk->sk_flags)); -if ((rqstp->rq_deferred =svc_deferred_dequeue (svsk))) +if ((rqstp->rq_deferred =svc_deferred_dequeue (svsk))) { +svc_sock_received (svsk);return svc_deferred_recv (rqstp); + }if (test_bit (SK_CLOSE , &svsk->sk_flags)) {svc_delete_socket (svsk);
@@ -1545,6 +1550,5 @@ static struct svc_deferred_req *svc_defeset_bit (SK_DEFERRED , &svsk->sk_flags); }spin_unlock (&serv->sv_lock); -svc_sock_received (svsk);return dr; }
-------------------------------------------------------
This SF.Net email sponsored by: Free pre-built ASP.NET sites including Data Reports, E-commerce, Portals, and Forums are available now. Download today and enter to win an XBOX or Visual Studio .NET.
http://aspnet.click-url.com/go/psa00100003ave/direct;at.aspnet_072303_01/01
_______________________________________________
NFS maillist - [email protected]
https://lists.sourceforge.net/lists/listinfo/nfs