The kernel may sleep with holding a spinlock. The function call path (from bottom to top) in Linux-4.16.7 is: [FUNC] schedule lib/percpu-refcount.c, 222: schedule in __percpu_ref_switch_mode lib/percpu-refcount.c, 339: __percpu_ref_switch_mode in percpu_ref_kill_and_confirm ./include/linux/percpu-refcount.h, 127: percpu_ref_kill_and_confirm in percpu_ref_kill mm/backing-dev.c, 545: percpu_ref_kill in cgwb_kill mm/backing-dev.c, 576: cgwb_kill in cgwb_create mm/backing-dev.c, 573: _raw_spin_lock_irqsave in cgwb_create This bug is found by my static analysis tool (DSAC-2) and checked by my code review. I do not know how to correctly fix this bug, so I just report them. Maybe cgwb_kill() should not be called with holding a spinlock. Best wishes, Jia-Ju Bai