OK, I'm not absolutely sure this fixes the cause of the oops you saw,
but I am pretty sure it is a necessary fix. You can apply the patch
below or just pull the latest subversion. Remember that the latest
subversion kernel code requires up-to-date libibverbs code as well.
My current theory is that you had two MPI processes exiting
simultaneously, and ib_dealloc_ucontext() ended up accessing the same
struct idr for both processes, which is a no-no.
- R.
--- infiniband/core/uverbs_main.c (revision 2193)
+++ infiniband/core/uverbs_main.c (working copy)
@@ -99,6 +99,8 @@ static int ib_dealloc_ucontext(struct ib
if (!context)
return 0;
+ down(&ib_uverbs_idr_mutex);
+
/* XXX Free AHs */
list_for_each_entry_safe(uobj, tmp, &context->qp_list, list) {
@@ -141,6 +143,8 @@ static int ib_dealloc_ucontext(struct ib
kfree(uobj);
}
+ up(&ib_uverbs_idr_mutex);
+
return context->device->dealloc_ucontext(context);
}
_______________________________________________
openib-general mailing list
[email protected]
http://openib.org/mailman/listinfo/openib-general
To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general