kernel/fork: use vfree_atomic() to free thread stack
authorAndrey Ryabinin <aryabinin@virtuozzo.com>
Tue, 13 Dec 2016 00:44:14 +0000 (16:44 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 13 Dec 2016 02:55:08 +0000 (18:55 -0800)
vfree() is going to use sleeping lock.  Thread stack freed in atomic
context, therefore we must use vfree_atomic() here.

Link: http://lkml.kernel.org/r/1479474236-4139-6-git-send-email-hch@lst.de
Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Cc: Joel Fernandes <joelaf@google.com>
Cc: Jisheng Zhang <jszhang@marvell.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: John Dias <joaodias@google.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
kernel/fork.c

index 7ffa16033ded3549172aec2afd16c12184783c6b..00492b22adfe73070cf70e3ecbfc41692df603d5 100644 (file)
@@ -229,7 +229,7 @@ static inline void free_thread_stack(struct task_struct *tsk)
                }
                local_irq_restore(flags);
 
-               vfree(tsk->stack);
+               vfree_atomic(tsk->stack);
                return;
        }
 #endif