Add might_sleep() calls to vfree(), kvfree() to catch potential sleep-in-atomic bugs earlier. Signed-off-by: Andrey Ryabinin <aryabinin@xxxxxxxxxxxxx> --- mm/util.c | 2 ++ mm/vmalloc.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/mm/util.c b/mm/util.c index 7f1f165f46af..929ed1795bc1 100644 --- a/mm/util.c +++ b/mm/util.c @@ -446,6 +446,8 @@ EXPORT_SYMBOL(kvmalloc_node); */ void kvfree(const void *addr) { + might_sleep_if(!in_interrupt()); + if (is_vmalloc_addr(addr)) vfree(addr); else diff --git a/mm/vmalloc.c b/mm/vmalloc.c index d00d42d6bf79..97d4b25d0373 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -1587,6 +1587,8 @@ void vfree(const void *addr) kmemleak_free(addr); + might_sleep_if(!in_interrupt()); + if (!addr) return; if (unlikely(in_interrupt())) -- 2.16.4