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
| ||
|
Message-ID: <1354831350.17101.31.camel@gandalf.local.home> Date: Thu, 06 Dec 2012 17:02:30 -0500 From: Steven Rostedt <rostedt@...dmis.org> To: "Srivatsa S. Bhat" <srivatsa.bhat@...ux.vnet.ibm.com> Cc: Oleg Nesterov <oleg@...hat.com>, tj@...nel.org, tglx@...utronix.de, peterz@...radead.org, paulmck@...ux.vnet.ibm.com, rusty@...tcorp.com.au, mingo@...nel.org, akpm@...ux-foundation.org, namhyung@...nel.org, vincent.guittot@...aro.org, sbw@....edu, amit.kucheria@...aro.org, rjw@...k.pl, wangyun@...ux.vnet.ibm.com, xiaoguangrong@...ux.vnet.ibm.com, nikunj@...ux.vnet.ibm.com, linux-pm@...r.kernel.org, linux-kernel@...r.kernel.org Subject: Re: [RFC PATCH v2 01/10] CPU hotplug: Provide APIs for "light" atomic readers to prevent CPU offline On Fri, 2012-12-07 at 01:06 +0530, Srivatsa S. Bhat wrote: > On 12/07/2012 12:58 AM, Steven Rostedt wrote: > > On Fri, 2012-12-07 at 00:18 +0530, Srivatsa S. Bhat wrote: > >> On 12/06/2012 09:48 PM, Oleg Nesterov wrote: > >>> On 12/06, Srivatsa S. Bhat wrote: > >>>> > >>>> +void get_online_cpus_atomic(void) > >>>> +{ > >>>> + int c, old; > >>>> + > >>>> + preempt_disable(); > >>>> + read_lock(&hotplug_rwlock); > >>> > >>> Confused... Why it also takes hotplug_rwlock? > >> > >> To avoid ABBA deadlocks. > >> > >> hotplug_rwlock was meant for the "light" readers. > >> The atomic counters were meant for the "heavy/full" readers. > >> I wanted them to be able to nest in any manner they wanted, > >> such as: > >> > >> Full inside light: > >> > >> get_online_cpus_atomic_light() > >> ... > >> get_online_cpus_atomic_full() > >> ... > >> put_online_cpus_atomic_full() > >> ... > >> put_online_cpus_atomic_light() > >> > >> Or, light inside full: > >> > >> get_online_cpus_atomic_full() > >> ... > >> get_online_cpus_atomic_light() > >> ... > >> put_online_cpus_atomic_light() > >> ... > >> put_online_cpus_atomic_full() > >> > >> > The root-cause of this deadlock is again lock-ordering mismatch right? > CPU0 takes locks in order A, B > CPU1 takes locks in order B, A > > And the writer facilitates in actually getting deadlocked. > > I avoid this in this patchset by always taking the locks in the same > order. So we won't be deadlocking like this. OK, I haven't looked closely at the patch yet. I'm currently hacking on my own problems. But just from the description above, it looked like you were using rw_locks() to be able to inverse the order of the locks. -- Steve -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists