Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d92f76448c1a3e40ff3df96a653ecd83aeac6ee7
Commit:     d92f76448c1a3e40ff3df96a653ecd83aeac6ee7
Parent:     30c00986f3a610cdcee2602b8254c3ffa6cddc04
Author:     Sean Hefty <[EMAIL PROTECTED]>
AuthorDate: Thu Apr 5 10:49:51 2007 -0700
Committer:  Roland Dreier <[EMAIL PROTECTED]>
CommitDate: Tue Apr 24 16:31:11 2007 -0700

    RDMA/ucma: Simplify ucma_get_event()
    
    Use wait_event_interruptible() instead of a more complicated
    open-coded equivalent.
    
    Signed-off-by: Sean Hefty <[EMAIL PROTECTED]>
---
 drivers/infiniband/core/ucma.c |   22 +++++++---------------
 1 files changed, 7 insertions(+), 15 deletions(-)

diff --git a/drivers/infiniband/core/ucma.c b/drivers/infiniband/core/ucma.c
index c859134..53b4c94 100644
--- a/drivers/infiniband/core/ucma.c
+++ b/drivers/infiniband/core/ucma.c
@@ -306,26 +306,18 @@ static ssize_t ucma_get_event(struct ucma_file *file, 
const char __user *inbuf,
 
        mutex_lock(&file->mut);
        while (list_empty(&file->event_list)) {
-               if (file->filp->f_flags & O_NONBLOCK) {
-                       ret = -EAGAIN;
-                       break;
-               }
+               mutex_unlock(&file->mut);
 
-               if (signal_pending(current)) {
-                       ret = -ERESTARTSYS;
-                       break;
-               }
+               if (file->filp->f_flags & O_NONBLOCK)
+                       return -EAGAIN;
+
+               if (wait_event_interruptible(file->poll_wait,
+                                            !list_empty(&file->event_list)))
+                       return -ERESTARTSYS;
 
-               prepare_to_wait(&file->poll_wait, &wait, TASK_INTERRUPTIBLE);
-               mutex_unlock(&file->mut);
-               schedule();
                mutex_lock(&file->mut);
-               finish_wait(&file->poll_wait, &wait);
        }
 
-       if (ret)
-               goto done;
-
        uevent = list_entry(file->event_list.next, struct ucma_event, list);
 
        if (uevent->resp.event == RDMA_CM_EVENT_CONNECT_REQUEST) {
-
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