mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-27 00:00:08 +01:00
platform/test: drop the /sys/devices dance
The bridge test (and no other either) no longer sets sysfs properties, so this whole madness is no longer needed. That is good, because Linux got somewhat stricter (at least in 4.15) about mounting sysfs and the whole thing wouldn't work with containers where /sys is red-only from the start.
This commit is contained in:
parent
d7c70dd9ec
commit
6788ced98d
1 changed files with 1 additions and 36 deletions
|
|
@ -1937,47 +1937,12 @@ main (int argc, char **argv)
|
|||
g_error ("unshare(CLONE_NEWNET|CLONE_NEWNS) failed with %s (%d)", strerror (errsv), errsv);
|
||||
}
|
||||
|
||||
/* Below we need a read-only /sys (to signal that we're in an environment
|
||||
* we don't have udev and writable /sys/devices so that we still are able
|
||||
* to test device classes that modify the device attributes (such as bridges).
|
||||
*
|
||||
* We use two sysfs instances to achieve this, binding the /device subtree
|
||||
* of the writeable one to the read-only one.
|
||||
*
|
||||
* We abuse a /sys/kernel/debug for our temporary writable sysfs mount,
|
||||
* just because it's guarranteed to exist and mounts are allowed there even
|
||||
* after the sysfs mount point hardening [linux 0cbee99269]. It's just in
|
||||
* our mount namespace, we release it quickly and don't need debugfs anyway...
|
||||
* An alrernative would be to create a temporary directory, but that seems
|
||||
* like an overkill. */
|
||||
|
||||
/* Make the mounts below /sys private to our namespace. Other mounts
|
||||
* wouldn't be permitted for good reasons. */
|
||||
/* We need a read-only /sys so that the platform knows there's no udev. */
|
||||
mount (NULL, "/sys", "sysfs", MS_SLAVE, NULL);
|
||||
|
||||
/* Mount the read-only sysfs. */
|
||||
if (mount ("sys", "/sys", "sysfs", MS_RDONLY, NULL) != 0) {
|
||||
errsv = errno;
|
||||
g_error ("mount(\"/sys\") failed with %s (%d)", strerror (errsv), errsv);
|
||||
}
|
||||
|
||||
/* Create the writable /sys/devices tree. */
|
||||
if (mount ("sys", "/sys/kernel/debug", "sysfs", 0, NULL) != 0) {
|
||||
errsv = errno;
|
||||
g_error ("mount(\"/sys/kernel/debug\") failed with %s (%d)", strerror (errsv), errsv);
|
||||
}
|
||||
|
||||
/* Bind mound the writable device tree to the read-only sysfs. */
|
||||
if (mount ("/sys/kernel/debug/devices", "/sys/devices", "sysfs", MS_BIND, NULL) != 0) {
|
||||
errsv = errno;
|
||||
g_error ("mount(\"/sys\") failed with %s (%d)", strerror (errsv), errsv);
|
||||
}
|
||||
|
||||
/* Release the temporary mount now that we bound the /devices subtree. */
|
||||
if (umount ("/sys/kernel/debug") != 0) {
|
||||
errsv = errno;
|
||||
g_error ("umount(\"/sys/kernel/debug\") failed with %s (%d)", strerror (errsv), errsv);
|
||||
}
|
||||
}
|
||||
|
||||
nmtstp_setup_platform ();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue