start massaging the checks in sget_...(): move to sget_userns()
authorAl Viro <viro@zeniv.linux.org.uk>
Sun, 12 May 2019 17:18:42 +0000 (13:18 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Sat, 25 May 2019 21:59:55 +0000 (17:59 -0400)
commitfeb8ae43a7b33148028829b1b1691b28c874c952
tree1670945a5204dba39d205c1c4c420025f159a035
parentf7a9945184100b531f0de3b12c617a349236dd8a
start massaging the checks in sget_...(): move to sget_userns()

there are 3 remaining callers of sget_userns() - sget(), mount_ns()
and mount_pseudo_xattr().  Extra check in sget() is conditional
upon mount being neither KERNMOUNT nor SUBMOUNT, the identical one
in mount_ns() - upon being not KERNMOUNT; mount_pseudo_xattr()
has no such checks at all.

However, mount_ns() is never used with SUBMOUNT and mount_pseudo_xattr()
is used only for KERNMOUNT, so both would be fine with the same logics
as currently done in sget(), allowing to consolidate the entire thing
in sget_userns() itself.

That's not where these checks will end up in the long run, though -
the whole reason why they'd been done so deep in the bowels of
mount(2) was that there had been no way for a filesystem to specify
which userns to look at until it has entered ->mount().

Now there is a place where filesystem could override the defaults -
->init_fs_context().  Which allows to pull the checks out into
the callers of vfs_get_tree().  That'll take quite a bit of
massage, but that mess is possible to tease apart.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/super.c