Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d7f48d1a9398a3bd7bb6f4774640b24a0294cda3
Commit:     d7f48d1a9398a3bd7bb6f4774640b24a0294cda3
Parent:     6e66aa15d8873ae7418d5afc6476daec466ff93b
Author:     Samuel Ortiz <[EMAIL PROTECTED]>
AuthorDate: Fri Apr 20 22:09:33 2007 -0700
Committer:  David S. Miller <[EMAIL PROTECTED]>
CommitDate: Wed Apr 25 22:29:29 2007 -0700

    [IrDA] af_irda: irda_accept cleanup
    
    This patch removes a cut'n'paste copy of wait_event_interruptible
    from irda_accept.
    
    Signed-off-by: Samuel Ortiz <[EMAIL PROTECTED]>
    Acked-by: Olaf Kirch <[EMAIL PROTECTED]>
    Signed-off-by: David S. Miller <[EMAIL PROTECTED]>
---
 net/irda/af_irda.c |   34 ++++++++--------------------------
 1 files changed, 8 insertions(+), 26 deletions(-)

diff --git a/net/irda/af_irda.c b/net/irda/af_irda.c
index e9aa162..4eda10d 100644
--- a/net/irda/af_irda.c
+++ b/net/irda/af_irda.c
@@ -872,37 +872,19 @@ static int irda_accept(struct socket *sock, struct socket 
*newsock, int flags)
         * calling us, the data is waiting for us ;-)
         * Jean II
         */
-       skb = skb_dequeue(&sk->sk_receive_queue);
-       if (skb == NULL) {
-               int ret = 0;
-               DECLARE_WAITQUEUE(waitq, current);
+       while (1) {
+               skb = skb_dequeue(&sk->sk_receive_queue);
+               if (skb)
+                       break;
 
                /* Non blocking operation */
                if (flags & O_NONBLOCK)
                        return -EWOULDBLOCK;
 
-               /* The following code is a cut'n'paste of the
-                * wait_event_interruptible() macro.
-                * We don't us the macro because the condition has
-                * side effects : we want to make sure that only one
-                * skb get dequeued - Jean II */
-               add_wait_queue(sk->sk_sleep, &waitq);
-               for (;;) {
-                       set_current_state(TASK_INTERRUPTIBLE);
-                       skb = skb_dequeue(&sk->sk_receive_queue);
-                       if (skb != NULL)
-                               break;
-                       if (!signal_pending(current)) {
-                               schedule();
-                               continue;
-                       }
-                       ret = -ERESTARTSYS;
-                       break;
-               }
-               current->state = TASK_RUNNING;
-               remove_wait_queue(sk->sk_sleep, &waitq);
-               if(ret)
-                       return -ERESTARTSYS;
+               err = wait_event_interruptible(*(sk->sk_sleep),
+                                       skb_peek(&sk->sk_receive_queue));
+               if (err)
+                       return err;
        }
 
        newsk = newsock->sk;
-
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