mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
userns: use irqsave variant of refcount_dec_and_lock()
The irqsave variant of refcount_dec_and_lock handles irqsave/restore when taking/releasing the spin lock. With this variant the call of local_irq_save/restore is no longer required. [bigeasy@linutronix.de: s@atomic_dec_and_lock@refcount_dec_and_lock@g] Link: http://lkml.kernel.org/r/20180703200141.28415-7-bigeasy@linutronix.de Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org> Cc: "Eric W. Biederman" <ebiederm@xmission.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
fc37191272
commit
ce0a568d32
1 changed files with 1 additions and 4 deletions
|
@ -169,11 +169,8 @@ void free_uid(struct user_struct *up)
|
|||
if (!up)
|
||||
return;
|
||||
|
||||
local_irq_save(flags);
|
||||
if (refcount_dec_and_lock(&up->__count, &uidhash_lock))
|
||||
if (refcount_dec_and_lock_irqsave(&up->__count, &uidhash_lock, &flags))
|
||||
free_user(up, flags);
|
||||
else
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
|
||||
struct user_struct *alloc_uid(kuid_t uid)
|
||||
|
|
Loading…
Reference in a new issue