It looks like both 64a16caf5, and 98abed020 both introduced error paths to 
do_wait
where we miss unlocking the tasklist. 

Spotted with coverity.

Signed-off-by: Dave Jones <[email protected]>

diff --git a/kernel/exit.c b/kernel/exit.c
index a949819..27004a6 100644
--- a/kernel/exit.c
+++ b/kernel/exit.c
@@ -1526,13 +1526,15 @@ repeat:
        tsk = current;
        do {
                retval = do_wait_thread(wo, tsk);
-               if (retval)
+               if (retval) {
+                       read_unlock(&tasklist_lock);
                        goto end;
-
+               }
                retval = ptrace_do_wait(wo, tsk);
-               if (retval)
+               if (retval) {
+                       read_unlock(&tasklist_lock);
                        goto end;
-
+               }
                if (wo->wo_flags & __WNOTHREAD)
                        break;
        } while_each_thread(current, tsk);
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to