Skip to contentSkip to conversation

ipcns: use after free in free_ipc_ns()

PATCH In review Dan Carpenter 2 participants 2 messages Mar 28, 2011 Kernel janitors

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ipcns: use after free in free_ipc_ns()

We dereference "ns" after it has been freed. This was introduced in b515498f5bb5 "userns: add a user namespace owner of ipc ns".

ipc/namespace.c +1 -1
index 3c3e522..8054c8e 100644
@@ -104,7 +104,6 @@ static void free_ipc_ns(struct ipc_namespace *ns)
 	sem_exit_ns(ns);
 	msg_exit_ns(ns);
 	shm_exit_ns(ns);
-	kfree(ns);
 	atomic_dec(&nr_ipc_ns);
 
 	/*
@@ -113,6 +112,7 @@ static void free_ipc_ns(struct ipc_namespace *ns)
 	 */
 	ipcns_notify(IPCNS_REMOVED);
 	put_user_ns(ns->user_ns);
+	kfree(ns);
 }
 
 /*
#1 lore raw
Quoted 2 lines · Dan Carpenter

We dereference "ns" after it has been freed. This was introduced in b515498f5bb5 "userns: add a user namespace owner of ipc ns".

I think Andrew has already merged this fix.

Quoted 23 lines
ipc/namespace.c +1 -1
index 3c3e522..8054c8e 100644
@@ -104,7 +104,6 @@ static void free_ipc_ns(struct ipc_namespace *ns)
 	sem_exit_ns(ns);
 	msg_exit_ns(ns);
 	shm_exit_ns(ns);
-	kfree(ns);
 	atomic_dec(&nr_ipc_ns);
 
 	/*
@@ -113,6 +112,7 @@ static void free_ipc_ns(struct ipc_namespace *ns)
 	 */
 	ipcns_notify(IPCNS_REMOVED);
 	put_user_ns(ns->user_ns);
+	kfree(ns);
 }
 
 /*