[openib-general] Kernel oops: NULL ptr dereference in ib_umem_get
Roland Dreier
roland at topspin.com
Wed Apr 20 11:09:16 PDT 2005
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);
}
More information about the general
mailing list