pid: tighten pidmap spinlock critical section by removing kfree()
Avoid calling kfree() under pidmap spinlock, calling it afterwards. Normally kfree() is fast, but sometimes it can be slow, so avoid calling it under the spinlock if we can do it. Signed-off-by: André Goddard Rosa <andre.goddard@gmail.com> Cc: Pekka Enberg <penberg@cs.helsinki.fi> Cc: Oleg Nesterov <oleg@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Родитель
698ba7b5a3
Коммит
7be6d991bc
|
@ -141,11 +141,12 @@ static int alloc_pidmap(struct pid_namespace *pid_ns)
|
|||
* installing it:
|
||||
*/
|
||||
spin_lock_irq(&pidmap_lock);
|
||||
if (map->page)
|
||||
kfree(page);
|
||||
else
|
||||
if (!map->page) {
|
||||
map->page = page;
|
||||
page = NULL;
|
||||
}
|
||||
spin_unlock_irq(&pidmap_lock);
|
||||
kfree(page);
|
||||
if (unlikely(!map->page))
|
||||
break;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче