summaryrefslogtreecommitdiffstats
path: root/init
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2017-02-12 05:33:02 +0900
committerTejun Heo <tj@kernel.org>2017-02-21 15:49:25 -0500
commitf83f3c515654474e19c7fc86e3b06564bb5cb4d4 (patch)
tree17389a81a3e78f0051e4fb5d948f3d440f539cce /init
parent63f1ca59453aadae81f702840c7ac6ea8b9f9262 (diff)
downloadlinux-f83f3c515654474e19c7fc86e3b06564bb5cb4d4.tar.gz
linux-f83f3c515654474e19c7fc86e3b06564bb5cb4d4.tar.xz
kernfs: fix locking around kernfs_ops->release() callback
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@kernel.org> Reported-and-tested-by: Tony Lindgren <tony@atomide.com> Fixes: 0e67db2f9fe9 ("kernfs: add kernfs_ops->open/release() callbacks") Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'init')
0 files changed, 0 insertions, 0 deletions