Re: [RFC PATCH v2 01/10] CPU hotplug: Provide APIs for "light" atomic readers to prevent CPU offline
From: Steven Rostedt <rostedt@goodmis.org>
Date: 2012-12-10 19:07:37
Also in:
lkml
From: Steven Rostedt <rostedt@goodmis.org>
Date: 2012-12-10 19:07:37
Also in:
lkml
On Mon, 2012-12-10 at 19:21 +0100, Oleg Nesterov wrote:
On 12/07, Oleg Nesterov wrote:quoted
On 12/06, Steven Rostedt wrote:quoted
You know reader locks can deadlock with each other, right? And this isn't caught be lockdep yet. This is because rwlocks have been made to be fair with writers. Before writers could be starved if a CPU always let a reader in. Now if a writer is waiting, a reader will block behind the writer. But this has introduced new issues with the kernel as follows: CPU0 CPU1 CPU2 CPU3 ---- ---- ---- ---- read_lock(A); read_lock(B) write_lock(A) <- block write_lock(B) <- block read_lock(B) <-block read_lock(A) <- block DEADLOCK!Really??? Oh I didn't know... Yes this was always true for rwsem, but rwlock_t?Sorry, please ignore my email. I misread your email.
No prob, looking at what I wrote, I should have explicitly stated two different rwlocks. The only hint that I gave about two locks was (A) and (B). Even what I started with: "reader locks can deadlock with each other" is a bit ambiguous. So I can easily see the confusion. -- Steve