Messages in this thread | | | Date | Mon, 23 Dec 2013 10:12:57 -0800 | Subject | Re: spinlock_irqsave() && flags (Was: pm80xx: Spinlock fix) | From | Linus Torvalds <> |
| |
On Mon, Dec 23, 2013 at 9:27 AM, Oleg Nesterov <oleg@redhat.com> wrote: > > In short, is this code > > spinlock_t LOCK; > unsigned long FLAGS; > > void my_lock(void) > { > spin_lock_irqsave(&LOCK, FLAGS); > } > > void my_unlock(void) > { > spin_unlock_irqrestore(&LOCK, FLAGS); > } > > correct or not?
Hell no. "flags" needs to be a thread-private variable, or at least protected some way (ie the above could work if everything is inside a bigger lock, to serialize access to FLAGS).
Linus
| |