Just so we don't forget, we need to add something like this to the
uverbs code on your branch.

(I didn't even compile test but you get the idea...)

--- src/linux-kernel/infiniband/core/uverbs_main.c      (revision 3620)
+++ src/linux-kernel/infiniband/core/uverbs_main.c      (working copy)
@@ -119,7 +119,13 @@ static int ib_dealloc_ucontext(struct ib
 
        down(&ib_uverbs_idr_mutex);
 
-       /* XXX Free AHs */
+       list_for_each_entry_safe(uobj, tmp, &context->ah_list, list) {
+               struct ib_ah *ah = idr_find(&ib_uverbs_ah_idr, uobj->id);
+               idr_remove(&ib_uverbs_ah_idr, uobj->id);
+               ib_destroy_ah(ah);
+               list_del(&uobj->list);
+               kfree(uobj);
+       }
 
        list_for_each_entry_safe(uobj, tmp, &context->qp_list, list) {
                struct ib_qp *qp = idr_find(&ib_uverbs_qp_idr, uobj->id);
_______________________________________________
openib-general mailing list
[email protected]
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to