Subject: slub: move discard_slab out of node lock
Lockdep reports there is potential deadlock for slub node list_lock.
discard_slab() is called with the lock hold in unfreeze_partials(),
which could trigger a slab allocation, which could hold the lock again.
discard_slab() doesn't need hold the lock actually, if the slab is
already removed from partial list.
Reported-and-tested-by: Yong Zhang <yong.zhang0@xxxxxxxxx>
Reported-and-tested-by: Julie Sullivan <kernelmail.jms@xxxxxxxxx>
Signed-off-by: Shaohua Li <shaohua.li@xxxxxxxxx>
Tested-by: Yong Zhang <yong.zhang0@xxxxxxxxx>