fix old umount_tree() breakage
authorAl Viro <viro@zeniv.linux.org.uk>
Sun, 16 Jan 2011 01:08:44 +0000 (20:08 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Sun, 16 Jan 2011 18:47:01 +0000 (13:47 -0500)
commit7b8a53fd815deb39542085897743fa0063f9fe06
tree1fe7d7f6192b3300a12d2e6af80b9601f23f94f8
parentb650c858c26bd9ba29ebc82d30f09355845a294a
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>
fs/namespace.c