]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
IB/core: Verify that QP handler is valid before dispatching events
authorShlomo Pongratz <shlomop@mellanox.com>
Wed, 10 Apr 2013 14:26:46 +0000 (14:26 +0000)
committerRoland Dreier <roland@purestorage.com>
Wed, 17 Apr 2013 05:42:54 +0000 (22:42 -0700)
For QPs of type IB_QPT_XRC_TGT the IB core assigns a common event
handler __ib_shared_qp_event_handler(), and the optionally supplied
event handler is stored. When the common handler is called it iterates
on all opened QPs and calles the original handlers without checking if
they are NULL.  Fix that.

Signed-off-by: Shlomo Pongratz <shlomop@mellanox.com>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
drivers/infiniband/core/verbs.c

index a8fdd3381405dc62aa92118954b83e7ec0fdb8db..22192deb88282b51f195521e6468840655bb219e 100644 (file)
@@ -348,7 +348,8 @@ static void __ib_shared_qp_event_handler(struct ib_event *event, void *context)
        struct ib_qp *qp = context;
 
        list_for_each_entry(event->element.qp, &qp->open_list, open_list)
-               event->element.qp->event_handler(event, event->element.qp->qp_context);
+               if (event->element.qp->event_handler)
+                       event->element.qp->event_handler(event, event->element.qp->qp_context);
 }
 
 static void __ib_insert_xrcd_qp(struct ib_xrcd *xrcd, struct ib_qp *qp)