On 22 Aug, Nick Piggin wrote:You are right, I replied to fast. debug_unlock() retrieves the processor itself, but not debug_lock(). OK; the .count seems alright due to restrictions of the calling contexts. About .flags: Jeff, can the following happen? - Context A on CPU A has interrupts enabled. Enters debug_lock(), thus disables its interrupts. (Saves its flags in rlock->flags with the plan to enable interrupts later when leaving debug_unlock() provided it does so as last holder.) - Context B on CPU B happens to have interrupts disabled. Enters debug_lock(), overwrites rlock->flags with its different value. (Spins on the rlock which is held by CPU A.) - Context A on CPU A leaves debug_unlock. Doesn't re-enable its interrupts as planned, since rlock->flags is the one from CPU B. -- Stefan Richter -=====-==--- =--- =-==- http://arcgraph.de/sr/ --
| Linus Torvalds | Linux 2.6.27-rc5 |
| Greg Kroah-Hartman | [PATCH 007/196] Chinese: add translation of stable_kernel_rules.txt |
| Kamalesh Babulal | [Build Failure] 2.6.25-rc5-mm1 Build fails with allmodconfig probe_4drives undefined |
| Gabriel C | Re: Linus 2.6.23-rc1 |
| David Woodhouse | Re: [bug?] tg3: Failed to load firmware "tigon/tg3_tso.bin" |
| David Miller | Re: [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| David Miller | [GIT]: Networking |
| Gerrit Renker | [PATCH 0/37] dccp: Feature negotiation - last call for comments |
git: | |
