[BUG] fs/super: a possible sleep-in-atomic bug in put_super

From: Jia-Ju Bai
Date: Fri Oct 06 2017 - 04:59:45 EST


According to fs/super.c, the kernel may sleep under a spinlock.
The function call path is:
put_super (acquire the spinlock)
__put_super
destroy_super
list_lru_destroy
list_lru_unregister
mutex_lock --> may sleep
memcg_get_cache_ids
down_read --> may sleep

This bug is found by my static analysis tool and my code review.

Thanks,
Jia-Ju Bai