[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