deadlock in synchronize_srcu() in debugfs?

From: Johannes Berg
Date: Thu Mar 23 2017 - 10:54:57 EST


Hi,

Before I go hunting - has anyone seen a deadlock in synchronize_srcu()
in debugfs_remove() before? We're observing that with our (backported,
but very recent) driver against 4.9 (and 4.10, I think), but there are
no backports of any debugfs things so the backport itself doesn't seem
like a likely problem.

sysrq-w shows a lot of tasks blocked on various locks (e.g. RTNL), but
the ultimate problem is the wireless stack getting blocked on
debugfs_remove_recursive(), in __synchronize_srcu(), in
wait_for_completion() (while holding lots of locks, hence the other
tasks getting stuck).

Thanks,
johannes