A lot of callers of kvfree only go down the vfree path under very rare circumstances, and so may never end up hitting the might_sleep_if in it. Ensure that when kvfree is called, that it is operating in a context where it is allowed to sleep. Cc: Alexander Viro <viro@xxxxxxxxxxxxxxxxxx> Cc: Luis Henriques <lhenriques@xxxxxxxx> Signed-off-by: Jeff Layton <jlayton@xxxxxxxxxx> --- mm/util.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mm/util.c b/mm/util.c index e6351a80f248..81ec2a003c86 100644 --- a/mm/util.c +++ b/mm/util.c @@ -482,6 +482,8 @@ EXPORT_SYMBOL(kvmalloc_node); */ void kvfree(const void *addr) { + might_sleep_if(!in_interrupt()); + if (is_vmalloc_addr(addr)) vfree(addr); else -- 2.21.0