Re: [EDT][PATCH] kernel/exit.c : Fix missing read_unlock

Ingo Molnar
2015-05-21T06:03:56Z

* Maninder Singh <maninder1.s@samsung.com> wrote:

> EP-F6AA0618C49C4AEDA73BFF1B39950BAB
> Hi,
>
> From: Maninder Singh <maninder1.s@samsung.com>
>
> Subject: [PATCH 1/1] kernel/exit.c : Fix missing task_unlock
>
> This patch adds missing read_unlock if do_wait_thread or ptrace_do_wait
> returns non zero.
>
> Signed-off-by: Maninder Singh <maninder1.s@samsung.com>
> Signed-off-by: Vaneet Narang <v.narang@samsung.com>
> Reviewd-by: Akhilesh Kumar <akhilesh.k@samsung.com>
> ---
> kernel/exit.c | 8 ++++++--
> 1 files changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/kernel/exit.c b/kernel/exit.c
> index 22fcc05..31a061f 100644
> --- a/kernel/exit.c
> +++ b/kernel/exit.c
> @@ -1486,12 +1486,16 @@ 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;

That's surprising and the changelog is lacking.

So the last time that code was touched upstream was 7 years ago:

commit 64a16caf5e3417ee32f670debcb5857b02a9e08e
Author: Oleg Nesterov <oleg@redhat.com>
Date: Wed Jun 17 16:27:40 2009 -0700

do_wait: simplify retval/tsk_result/notask_error mess

please explain whether what you fix is:

1) an ancient bug that somehow nobody ever triggered (plus analysis
of why it wasn't triggered)

2) a new bug introduced by commit XYZ (plus analysis)

3) something else

Thanks,

Ingo