On Mon, 12 Sep 2016 09:40:17 +0800 Ian Kent <ra...@themaw.net> wrote:
> Somewhere along the way the autofs expire operation has changed to > hold a spin lock over expired dentry selection. The autofs indirect > mount expired dentry selection is complicated and quite lengthy so > it isn't appropriate to hold a spin lock over the operation. > > Commit 47be6184 added a might_sleep() to dput() causing a BUG() > about this usage to be issued. It's a WARN_ONCE(), not a BUG()? > But the spin lock doesn't need to be held over this check, the > autofs dentry info. flags are enough to block walks into dentrys > during the expire. > > I've left the direct mount expire as it is (for now) becuase it > is much simpler and quicker than the indirect mount expire and > adding spin lock release and re-aquires would do nothing more > than add overhead. > > Fixes: 47be61845c77 ("fs/dcache.c: avoid soft-lockup in dput()") > Signed-off-by: Ian Kent <ra...@themaw.net> > Cc: Takashi Iwai <ti...@suse.de> > Cc: Andrew Morton <a...@linux-foundation.org> > Cc: NeilBrown <ne...@suse.com> 47be61845c77 is cc:stable, so this should be likewise. I've made those two changes to my copy of this changelog.