diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2013-03-26 22:25:57 (GMT) |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-04-05 16:26:00 (GMT) |
commit | 31d34ef4e00e43651a9102a4215233f17c5607fb (patch) | |
tree | f85a3b6b48f8efc56ed140a72d28a542d67103af /usr | |
parent | 3cdc03d8c552990fa4fbd5acfdfa44fe6d3a32a9 (diff) | |
download | linux-fsl-qoriq-31d34ef4e00e43651a9102a4215233f17c5607fb.tar.xz |
Nest rename_lock inside vfsmount_lock
commit 7ea600b5314529f9d1b9d6d3c41cb26fce6a7a4a upstream.
... lest we get livelocks between path_is_under() and d_path() and friends.
The thing is, wrt fairness lglocks are more similar to rwsems than to rwlocks;
it is possible to have thread B spin on attempt to take lock shared while thread
A is already holding it shared, if B is on lower-numbered CPU than A and there's
a thread C spinning on attempt to take the same lock exclusive.
As the result, we need consistent ordering between vfsmount_lock (lglock) and
rename_lock (seq_lock), even though everything that takes both is going to take
vfsmount_lock only shared.
Spotted-by: Brad Spengler <spender@grsecurity.net>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'usr')
0 files changed, 0 insertions, 0 deletions