]> git.ipfire.org Git - thirdparty/util-linux.git/commit
fix #648 by ignoring EINVAL on-remount of proc
authorbenaryorg <binary@benary.org>
Fri, 4 Jun 2021 12:34:52 +0000 (12:34 +0000)
committerbenaryorg <binary@benary.org>
Fri, 2 Jul 2021 10:51:51 +0000 (10:51 +0000)
commitef7eccad5b4e25237baeb2a50ce184f6cc0fc8ea
treeba2257176fa9dca8a1cd157044a906ba7156b160
parent867808590094b03fc9cc45e95798d174231dbedf
fix #648 by ignoring EINVAL on-remount of proc

When using --mount-proc=/some/path then unshare fails if the path provided is not already mounted due to the mount(2) call to change the propagation of the mount.
In such a case mount(2) returns EINVAL, which however is used for a variety of other errors.
If this error is ignored mistakenly the effects however should be negligible since:

1. the mount of proc afterwards happens regardless, errors of which are not ignored
2. the propagation change of root uses MS_REC, which should already change the propagation of all mounts recursively

Furthermore /proc is not touched if --mount-proc specifies a different mount point.
This should not cause too much unexpected behaviour due to point 2 from above in any case.
Specifying --mount-proc with a different path also means that unshare(3) is not instructed to touch /proc, thus /proc not being touched should not be unexpected.
As a side note, if unshare is called with /proc as an (implicit) parameter to --mount-proc then /proc is a stacked mount, meaning if /proc is unmounted within the namespace the host /proc will be visible again, thus not touching /proc with a different parameter does not constitute more information leakage than the alternative, quite contrary it may even be the desired behaviour.

Signed-off-by: benaryorg <binary@benary.org>
sys-utils/unshare.c