[LTP] [PATCH v1] mount08.c: Restrict overmounting of ephemeral entities on /proc/<pid>/fd/<nr>
Wei Gao
wegao@suse.com
Wed Dec 25 12:42:15 CET 2024
Signed-off-by: Wei Gao <wegao@suse.com>
---
runtest/syscalls | 1 +
testcases/kernel/syscalls/mount/.gitignore | 1 +
testcases/kernel/syscalls/mount/mount08.c | 56 ++++++++++++++++++++++
3 files changed, 58 insertions(+)
create mode 100644 testcases/kernel/syscalls/mount/mount08.c
diff --git a/runtest/syscalls b/runtest/syscalls
index ded035ee8..d3abc8b85 100644
--- a/runtest/syscalls
+++ b/runtest/syscalls
@@ -852,6 +852,7 @@ mount04 mount04
mount05 mount05
mount06 mount06
mount07 mount07
+mount08 mount08
mount_setattr01 mount_setattr01
diff --git a/testcases/kernel/syscalls/mount/.gitignore b/testcases/kernel/syscalls/mount/.gitignore
index 80885dbf0..3eee5863a 100644
--- a/testcases/kernel/syscalls/mount/.gitignore
+++ b/testcases/kernel/syscalls/mount/.gitignore
@@ -6,3 +6,4 @@
/mount05
/mount06
/mount07
+/mount08
diff --git a/testcases/kernel/syscalls/mount/mount08.c b/testcases/kernel/syscalls/mount/mount08.c
new file mode 100644
index 000000000..9b54ea835
--- /dev/null
+++ b/testcases/kernel/syscalls/mount/mount08.c
@@ -0,0 +1,56 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (C) 2024 Wei Gao <wegao@suse.com>
+ */
+
+/*\
+ * [Description]
+ *
+ * This test check restrict overmounting on /proc/<pid>/fd/<nr>.
+ * It is based on the following kernel commit:
+ * https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d80b065bb172
+ */
+
+#include "tst_test.h"
+#include <sys/mount.h>
+#include "tst_safe_file_at.h"
+
+#define MNTPOINT "mntpoint"
+#define FOO MNTPOINT "/foo"
+#define BAR MNTPOINT "/bar"
+
+static void run(void)
+{
+ char path[PATH_MAX];
+ int foo_fd, newfd, proc_fd;
+
+ foo_fd = SAFE_OPEN(FOO, O_RDONLY | O_NONBLOCK, 0640);
+ newfd = SAFE_DUP(foo_fd);
+ SAFE_CLOSE(foo_fd);
+
+ sprintf(path, "/proc/%d/fd/%d", getpid(), newfd);
+
+ proc_fd = SAFE_OPENAT(AT_FDCWD, path, O_PATH | O_NOFOLLOW);
+
+ sprintf(path, "/proc/%d/fd/%d", getpid(), proc_fd);
+
+ TST_EXP_FAIL(
+ mount(BAR, path, "", MS_BIND, 0),
+ ENOENT,
+ "mount() on proc failed expectedly"
+ );
+}
+
+static void setup(void)
+{
+ SAFE_CREAT(FOO, 0777);
+ SAFE_CREAT(BAR, 0777);
+}
+
+static struct tst_test test = {
+ .setup = setup,
+ .test_all = run,
+ .needs_root = 1,
+ .mntpoint = MNTPOINT,
+ .min_kver = "6.12",
+};
--
2.35.3
More information about the ltp
mailing list