We can't handle vfree itself from atomic context, but callers can explicitly use vfree_atomic instead, which defers the actual vfree to a workqueue. Unfortunately in_atomic does not work on non-preemptible kernels, so we can't just do the right thing by default. Signed-off-by: Christoph Hellwig <hch@xxxxxx> --- mm/vmalloc.c | 1 + 1 file changed, 1 insertion(+) diff --git a/mm/vmalloc.c b/mm/vmalloc.c index 80f3fae..e2030b4 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -1530,6 +1530,7 @@ void vfree_atomic(const void *addr) void vfree(const void *addr) { BUG_ON(in_nmi()); + WARN_ON_ONCE(in_atomic()); kmemleak_free(addr); -- 2.1.4 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>