Re: [PATCH] kernfs: fix locking around kernfs_ops->release() callback
From: Greg Kroah-Hartman
Date: Mon Feb 13 2017 - 13:22:26 EST
On Mon, Feb 13, 2017 at 09:57:25AM -0800, Tony Lindgren wrote:
> * Tejun Heo <tj@xxxxxxxxxx> [170211 12:34]:
> > The release callback may be called from two places - file release
> > operation and kernfs open file draining. kernfs_open_file->mutex is
> > used to synchronize the two callsites. This unfortunately leads to
> > possible circular locking because of->mutex is used to protect the
> > usual kernfs operations which may use locking constructs which are
> > held while removing and thus draining kernfs files.
> >
> > @of->mutex is for synchronizing concurrent kernfs access operations
> > and all we need here is synchronization between the releaes and drain
> > paths. As the drain path has to grab kernfs_open_file_mutex anyway,
> > let's use the mutex to synchronize the release operation instead.
> >
> > Signed-off-by: Tejun Heo <tj@xxxxxxxxxx>
> > Reported-by: Tony Lindgren <tony@xxxxxxxxxxx>
> > Fixes: 0e67db2f9fe9 ("kernfs: add kernfs_ops->open/release() callbacks")
> > ---
> > Hello,
> >
> > Tony, can you please verify that this resolves the lockdep warnings
> > that you've been seeing on linux-next?
>
> Yes thanks this fixes the issue I was seeing:
>
> Tested-by: Tony Lindgren <tony@xxxxxxxxxxx>
>
> > Greg, this is a fix for the kernfs patches which are being routed
> > through the cgroup tree. Once Tony confirms, I'll apply this patch on
> > top.
Great, no objection from me:
Acked-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>