svcrpc: make xpo_recvfrom return only >=0
authorJ. Bruce Fields <bfields@redhat.com>
Sat, 18 Aug 2012 01:35:24 +0000 (21:35 -0400)
committerJ. Bruce Fields <bfields@redhat.com>
Tue, 21 Aug 2012 21:41:07 +0000 (17:41 -0400)
The only errors returned from xpo_recvfrom have been -EAGAIN and
-EAFNOSUPPORT.  The latter was removed by a previous patch.  That leaves
only -EAGAIN, which is treated just like 0 by the caller (svc_recv).

So, just ditch -EAGAIN and return 0 instead.

Signed-off-by: J. Bruce Fields <bfields@redhat.com>
net/sunrpc/svc_xprt.c
net/sunrpc/svcsock.c

index ee15663..3e31730 100644 (file)
@@ -743,7 +743,7 @@ int svc_recv(struct svc_rqst *rqstp, long timeout)
        svc_xprt_received(xprt);
 
        /* No data, incomplete (TCP) read, or accept() */
-       if (len == 0 || len == -EAGAIN)
+       if (len <= 0)
                goto out;
 
        clear_bit(XPT_OLD, &xprt->xpt_flags);
index 406688b..7aee54c 100644 (file)
@@ -598,7 +598,7 @@ static int svc_udp_recvfrom(struct svc_rqst *rqstp)
                        dprintk("svc: recvfrom returned error %d\n", -err);
                        set_bit(XPT_DATA, &svsk->sk_xprt.xpt_flags);
                }
-               return -EAGAIN;
+               return 0;
        }
        len = svc_addr_len(svc_addr(rqstp));
        rqstp->rq_addrlen = len;
@@ -1174,13 +1174,13 @@ error:
        if (len != -EAGAIN)
                goto err_other;
        dprintk("RPC: TCP recvfrom got EAGAIN\n");
-       return -EAGAIN;
+       return 0;
 err_other:
        printk(KERN_NOTICE "%s: recvfrom returned errno %d\n",
               svsk->sk_xprt.xpt_server->sv_name, -len);
        set_bit(XPT_CLOSE, &svsk->sk_xprt.xpt_flags);
 err_noclose:
-       return -EAGAIN; /* record not complete */
+       return 0;       /* record not complete */
 }
 
 /*