Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=05ed690efbb28b54af79f97af8c9705e82a6fbd7
Commit:     05ed690efbb28b54af79f97af8c9705e82a6fbd7
Parent:     c5e434c98b49f4877ea1614a629499e082b1a818
Author:     NeilBrown <[EMAIL PROTECTED]>
AuthorDate: Wed May 9 02:34:55 2007 -0700
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Wed May 9 12:30:54 2007 -0700

    knfsd: simplify a 'while' condition in svcsock.c
    
    This while loop has an overly complex condition, which performs a couple of
    assignments.  This hurts readability.
    
    We don't really need a loop at all.  We can just return -EAGAIN and 
(providing
    we set SK_DATA), the function will be called again.
    
    So discard the loop, make the complex conditional become a few clear 
function
    calls, and hopefully improve readability.
    
    Signed-off-by: Neil Brown <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
---
 net/sunrpc/svcsock.c |   21 +++++++++++++--------
 1 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c
index fdb1386..5baf48d 100644
--- a/net/sunrpc/svcsock.c
+++ b/net/sunrpc/svcsock.c
@@ -788,15 +788,20 @@ svc_udp_recvfrom(struct svc_rqst *rqstp)
        }
 
        clear_bit(SK_DATA, &svsk->sk_flags);
-       while ((err = kernel_recvmsg(svsk->sk_sock, &msg, NULL,
-                                    0, 0, MSG_PEEK | MSG_DONTWAIT)) < 0 ||
-              (skb = skb_recv_datagram(svsk->sk_sk, 0, 1, &err)) == NULL) {
-               if (err == -EAGAIN) {
-                       svc_sock_received(svsk);
-                       return err;
+       skb = NULL;
+       err = kernel_recvmsg(svsk->sk_sock, &msg, NULL,
+                            0, 0, MSG_PEEK | MSG_DONTWAIT);
+       if (err >= 0)
+               skb = skb_recv_datagram(svsk->sk_sk, 0, 1, &err);
+
+       if (skb == NULL) {
+               if (err != -EAGAIN) {
+                       /* possibly an icmp error */
+                       dprintk("svc: recvfrom returned error %d\n", -err);
+                       set_bit(SK_DATA, &svsk->sk_flags);
                }
-               /* possibly an icmp error */
-               dprintk("svc: recvfrom returned error %d\n", -err);
+               svc_sock_received(svsk);
+               return -EAGAIN;
        }
        rqstp->rq_addrlen = sizeof(rqstp->rq_addr);
        if (skb->tstamp.tv64 == 0) {
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to