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] [day] [month] [year] [list]
Date:	Fri, 1 Dec 2006 09:55:02 +0100
From:	Ingo Molnar <mingo@...e.hu>
To:	Gautham R Shenoy <ego@...ibm.com>
Cc:	Andrew Morton <akpm@...l.org>, linux-kernel@...r.kernel.org,
	torvalds@...l.org, davej@...hat.com, dipankar@...ibm.com,
	vatsa@...ibm.com
Subject: Re: CPUFREQ-CPUHOTPLUG: Possible circular locking dependency


* Gautham R Shenoy <ego@...ibm.com> wrote:

> Consider a case where we have three locks A, B and C.
> We have very clear locking rule inside the kernel that lock A *should*
> be acquired before acquiring either lock B or lock C.
> 
> At runtime lockdep detects the two dependency chains,
> A --> B --> C
> 
> and
> 
> A --> C --> B.
> 
> Does lockdep issue a circular dependency warning for this ? 
> It's quite clear from the locking rule that we cannot have a
> circular deadlock, since A acts as a mutex for B->C / C->B callpath.
> 
> Just curious :-) [ Well, I might encounter such a scenario in an attempt
> 		   to make cpufreq cpu-hotplug safe! ]

yes, lockdep will warn about this. Will you /ever/ have a B->C or C->B 
dependency without A being taken first?

if not then my suggestion would be to just lump 'B' and 'C' into a 
single lock - or to get rid of them altogether. There's little reason to 
keep them separate. /If/ you want to keep them separate (because they 
protect different data structures) then it's the cleanest design to have 
an ordering between them. The taking of 'A' might go away anytime - such 
a construct is really, really fragile and is only asking for trouble.

	Ingo
-
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