Re: FAILED: patch "[PATCH] vm_is_stack: use for_each_thread() rather then buggy" failed to apply to 3.10-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 09/03, gregkh@xxxxxxxxxxxxxxxxxxx wrote:
>
> The patch below does not apply to the 3.10-stable tree.
> If someone wants it applied there, or to any other stable or longterm
> tree, then please email the backport, including the original git commit
> id to <stable@xxxxxxxxxxxxxxx>.

Greg! Sorry for inconvenience.

Yes, as David has already explained, I forgot to mention that this is only
for those trees which which have already backported 0c740d0afc3b "introduce
for_each_thread() to replace the buggy while_each_thread()".

I promise, I'll read Documentation/stable_kernel_rules.txt again.

> ------------------ original commit in Linus's tree ------------------
> 
> From 4449a51a7c281602d3a385044ab928322a122a02 Mon Sep 17 00:00:00 2001
> From: Oleg Nesterov <oleg@xxxxxxxxxx>
> Date: Fri, 8 Aug 2014 14:19:17 -0700
> Subject: [PATCH] vm_is_stack: use for_each_thread() rather then buggy
>  while_each_thread()
> 
> Aleksei hit the soft lockup during reading /proc/PID/smaps.  David
> investigated the problem and suggested the right fix.
> 
> while_each_thread() is racy and should die, this patch updates
> vm_is_stack().
> 
> Signed-off-by: Oleg Nesterov <oleg@xxxxxxxxxx>
> Reported-by: Aleksei Besogonov <alex.besogonov@xxxxxxxxx>
> Tested-by: Aleksei Besogonov <alex.besogonov@xxxxxxxxx>
> Suggested-by: David Rientjes <rientjes@xxxxxxxxxx>
> Cc: <stable@xxxxxxxxxxxxxxx>
> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
> Signed-off-by: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
> 
> diff --git a/mm/util.c b/mm/util.c
> index 7b6608df2ee8..093c973f1697 100644
> --- a/mm/util.c
> +++ b/mm/util.c
> @@ -183,17 +183,14 @@ pid_t vm_is_stack(struct task_struct *task,
>  
>  	if (in_group) {
>  		struct task_struct *t;
> -		rcu_read_lock();
> -		if (!pid_alive(task))
> -			goto done;
>  
> -		t = task;
> -		do {
> +		rcu_read_lock();
> +		for_each_thread(task, t) {
>  			if (vm_is_stack_for_task(t, vma)) {
>  				ret = t->pid;
>  				goto done;
>  			}
> -		} while_each_thread(task, t);
> +		}
>  done:
>  		rcu_read_unlock();
>  	}
> 

--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]