diff options
-rw-r--r-- | drivers/infiniband/core/uverbs.h | 1 | ||||
-rw-r--r-- | drivers/infiniband/core/uverbs_cmd.c | 1 | ||||
-rw-r--r-- | drivers/infiniband/core/uverbs_main.c | 9 |
3 files changed, 5 insertions, 6 deletions
diff --git a/drivers/infiniband/core/uverbs.h b/drivers/infiniband/core/uverbs.h index 031cdf3c066d..ecb830127865 100644 --- a/drivers/infiniband/core/uverbs.h +++ b/drivers/infiniband/core/uverbs.h | |||
@@ -113,6 +113,7 @@ struct ib_uevent_object { | |||
113 | 113 | ||
114 | struct ib_ucq_object { | 114 | struct ib_ucq_object { |
115 | struct ib_uobject uobject; | 115 | struct ib_uobject uobject; |
116 | struct ib_uverbs_file *uverbs_file; | ||
116 | struct list_head comp_list; | 117 | struct list_head comp_list; |
117 | struct list_head async_list; | 118 | struct list_head async_list; |
118 | u32 comp_events_reported; | 119 | u32 comp_events_reported; |
diff --git a/drivers/infiniband/core/uverbs_cmd.c b/drivers/infiniband/core/uverbs_cmd.c index 8c89abc8c764..63a74151c60b 100644 --- a/drivers/infiniband/core/uverbs_cmd.c +++ b/drivers/infiniband/core/uverbs_cmd.c | |||
@@ -602,6 +602,7 @@ ssize_t ib_uverbs_create_cq(struct ib_uverbs_file *file, | |||
602 | 602 | ||
603 | uobj->uobject.user_handle = cmd.user_handle; | 603 | uobj->uobject.user_handle = cmd.user_handle; |
604 | uobj->uobject.context = file->ucontext; | 604 | uobj->uobject.context = file->ucontext; |
605 | uobj->uverbs_file = file; | ||
605 | uobj->comp_events_reported = 0; | 606 | uobj->comp_events_reported = 0; |
606 | uobj->async_events_reported = 0; | 607 | uobj->async_events_reported = 0; |
607 | INIT_LIST_HEAD(&uobj->comp_list); | 608 | INIT_LIST_HEAD(&uobj->comp_list); |
diff --git a/drivers/infiniband/core/uverbs_main.c b/drivers/infiniband/core/uverbs_main.c index 0eb38f479b39..e58a7b278a00 100644 --- a/drivers/infiniband/core/uverbs_main.c +++ b/drivers/infiniband/core/uverbs_main.c | |||
@@ -442,13 +442,10 @@ static void ib_uverbs_async_handler(struct ib_uverbs_file *file, | |||
442 | 442 | ||
443 | void ib_uverbs_cq_event_handler(struct ib_event *event, void *context_ptr) | 443 | void ib_uverbs_cq_event_handler(struct ib_event *event, void *context_ptr) |
444 | { | 444 | { |
445 | struct ib_uverbs_event_file *ev_file = context_ptr; | 445 | struct ib_ucq_object *uobj = container_of(event->element.cq->uobject, |
446 | struct ib_ucq_object *uobj; | 446 | struct ib_ucq_object, uobject); |
447 | 447 | ||
448 | uobj = container_of(event->element.cq->uobject, | 448 | ib_uverbs_async_handler(uobj->uverbs_file, uobj->uobject.user_handle, |
449 | struct ib_ucq_object, uobject); | ||
450 | |||
451 | ib_uverbs_async_handler(ev_file->uverbs_file, uobj->uobject.user_handle, | ||
452 | event->event, &uobj->async_list, | 449 | event->event, &uobj->async_list, |
453 | &uobj->async_events_reported); | 450 | &uobj->async_events_reported); |
454 | 451 | ||