]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
RCU pathwalk breakage when running into a symlink overmounting something
authorAl Viro <viro@zeniv.linux.org.uk>
Fri, 24 Apr 2015 19:47:07 +0000 (15:47 -0400)
committerJiri Slaby <jslaby@suse.cz>
Fri, 15 May 2015 07:10:36 +0000 (09:10 +0200)
commit6e310c82af1ba014a4bb312551d1a74d1c71761a
tree8be3234c63acfa9cdb49e85610086db96eb0a336
parent378e22f618cf6c4274fd7b928fd7b10ec380c6f6
RCU pathwalk breakage when running into a symlink overmounting something

commit 3cab989afd8d8d1bc3d99fef0e7ed87c31e7b647 upstream.

Calling unlazy_walk() in walk_component() and do_last() when we find
a symlink that needs to be followed doesn't acquire a reference to vfsmount.
That's fine when the symlink is on the same vfsmount as the parent directory
(which is almost always the case), but it's not always true - one _can_
manage to bind a symlink on top of something.  And in such cases we end up
with excessive mntput().

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
fs/namei.c