Keep nfsd from exiting when seeing recv() errors
Subsystems (3)
PATCH 1/1 Keep nfsd from exiting when seeing recv() errors
I think I submitted this one previously - svc_tcp_recvfrom currently returns any errors to the caller, including ECONNRESET and the like.
This is something svc_recv isn't able to deal with:
len = svsk->sk_recvfrom(rqstp);
[...]
if (len == 0 || len == -EAGAIN) {
[...]
return -EAGAIN;
}
[...]
return len;The nfsd main loop will exit when it sees an error code other than EAGAIN.
The attached patch fixes this problem.
Olaf
Signature · 2 lines
Olaf Kirch | --- o --- Nous sommes du soleil we love when we play [email protected] | / | \ sol.dhoop.naytheet.ah kin.ir.samse.qurax
Subject: Keep nfsd from exiting when seeing recv() errors
From: Olaf Kirch <[email protected]>
svc_recv is not equipped to deal with error codes other than EAGAIN, and will propagate anything else (such as ECONNRESET) up to nfsd, causing it to exit.
Signed-off-by Olaf Kirch <[email protected]>
net/sunrpc/svcsock.c +1 -1
@@ -894,7 +894,7 @@ svc_tcp_recvfrom(struct svc_rqst *rqstp) }else {printk (KERN_NOTICE "%s: recvfrom returned errno %d\n" , svsk->sk_server->sv_name, -len); -svc_sock_received (svsk); + goto err_delete; }return len;