lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20160615221514.GB30921@twins.programming.kicks-ass.net>
Date:	Thu, 16 Jun 2016 00:15:14 +0200
From:	Peter Zijlstra <peterz@...radead.org>
To:	"Paul E. McKenney" <paulmck@...ux.vnet.ibm.com>
Cc:	linux-kernel@...r.kernel.org, mingo@...nel.org,
	jiangshanlai@...il.com, dipankar@...ibm.com,
	akpm@...ux-foundation.org, mathieu.desnoyers@...icios.com,
	josh@...htriplett.org, tglx@...utronix.de, rostedt@...dmis.org,
	dhowells@...hat.com, edumazet@...gle.com, dvhart@...ux.intel.com,
	fweisbec@...il.com, oleg@...hat.com, bobby.prani@...il.com
Subject: Re: [PATCH tip/core/rcu 09/12] rcu: Make call_rcu_tasks() tolerate
 first call with irqs disabled

On Wed, Jun 15, 2016 at 02:46:10PM -0700, Paul E. McKenney wrote:
> Currently, if the very first call to call_rcu_tasks() has irqs disabled,
> it will create the rcu_tasks_kthread with irqs disabled, which will
> result in a splat in the memory allocator, which kthread_run() invokes
> with the expectation that irqs are enabled.
> 
> This commit fixes this problem by deferring kthread creation if called
> with irqs disabled.  The first call to call_rcu_tasks() that has irqs
> enabled will create the kthread.
> 
> This bug was detected by rcutorture changes that were motivated by
> Iftekhar Ahmed's mutation-testing efforts.
> 
> Signed-off-by: Paul E. McKenney <paulmck@...ux.vnet.ibm.com>

> diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
> index 218f8e83db73..4a3b279beb42 100644
> --- a/kernel/sched/fair.c
> +++ b/kernel/sched/fair.c
> @@ -2175,7 +2175,7 @@ void task_numa_free(struct task_struct *p)
>  
>  		grp->nr_tasks--;
>  		spin_unlock_irqrestore(&grp->lock, flags);
> -		RCU_INIT_POINTER(p->numa_group, NULL);
> +		rcu_assign_pointer(p->numa_group, NULL);
>  		put_numa_group(grp);
>  	}

This seems entirely unrelated; albeit desired given that other patch.

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ