diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2011-01-15 20:08:44 -0500 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2011-01-16 13:47:01 -0500 |
commit | 7b8a53fd815deb39542085897743fa0063f9fe06 (patch) | |
tree | 1fe7d7f6192b3300a12d2e6af80b9601f23f94f8 /fs/internal.h | |
parent | b650c858c26bd9ba29ebc82d30f09355845a294a (diff) | |
download | linux-7b8a53fd815deb39542085897743fa0063f9fe06.tar.gz linux-7b8a53fd815deb39542085897743fa0063f9fe06.tar.bz2 linux-7b8a53fd815deb39542085897743fa0063f9fe06.zip |
fix old umount_tree() breakage
Expiry-related code calls umount_tree() several times with
the same list to collect vfsmounts to. Which is fine, except
that umount_tree() implicitly assumed that the list would
be empty on each call - it moves the victims over there and
then iterates through the list kicking them out. It's *almost*
idempotent, so everything nearly worked. However, mnt->ghosts
handling (and thus expirability checks) had been broken - that
part was not idempotent...
The fix is trivial - use local temporary list, splice it to
the the collector list when we are through.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/internal.h')
0 files changed, 0 insertions, 0 deletions