-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
tracing/selftests: Add tracefs mount options test
Add a selftest to check that the tracefs gid mount option is applied correctly. ./ftracetest test.d/00basic/mount_options.tc Use the new readme string "[gid=<gid>] as a requirement and also update test_ownership.tc requirements to use this. Cc: Eric Sandeen <sandeen@redhat.com> Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Cc: Shuah Khan <shuah@kernel.org> Cc: Ali Zahraee <ahzahraee@gmail.com> Cc: Christian Brauner <brauner@kernel.org> Cc: David Howells <dhowells@redhat.com> Cc: Masami Hiramatsu <mhiramat@kernel.org> Link: https://lore.kernel.org/20241030171928.4168869-4-kaleshsingh@google.com Signed-off-by: Kalesh Singh <kaleshsingh@google.com> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
- Loading branch information
Kalesh Singh
authored and
Steven Rostedt (Google)
committed
Nov 1, 2024
1 parent
fa17cb4
commit 8b55572
Showing
3 changed files
with
129 additions
and
13 deletions.
There are no files selected for viewing
101 changes: 101 additions & 0 deletions
101
tools/testing/selftests/ftrace/test.d/00basic/mount_options.tc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,101 @@ | ||
#!/bin/sh | ||
# SPDX-License-Identifier: GPL-2.0 | ||
# description: Test tracefs GID mount option | ||
# requires: "[gid=<gid>]":README | ||
|
||
fail() { | ||
local msg="$1" | ||
|
||
echo "FAILED: $msg" | ||
exit_fail | ||
} | ||
|
||
find_alternate_gid() { | ||
local original_gid="$1" | ||
tac /etc/group | grep -v ":$original_gid:" | head -1 | cut -d: -f3 | ||
} | ||
|
||
mount_tracefs_with_options() { | ||
local mount_point="$1" | ||
local options="$2" | ||
|
||
mount -t tracefs -o "$options" nodev "$mount_point" | ||
|
||
setup | ||
} | ||
|
||
unmount_tracefs() { | ||
local mount_point="$1" | ||
|
||
# Need to make sure the mount isn't busy so that we can umount it | ||
(cd $mount_point; finish_ftrace;) | ||
|
||
cleanup | ||
} | ||
|
||
create_instance() { | ||
local mount_point="$1" | ||
local instance="$mount_point/instances/$(mktemp -u test-XXXXXX)" | ||
|
||
mkdir "$instance" | ||
echo "$instance" | ||
} | ||
|
||
remove_instance() { | ||
local instance="$1" | ||
|
||
rmdir "$instance" | ||
} | ||
|
||
check_gid() { | ||
local mount_point="$1" | ||
local expected_gid="$2" | ||
|
||
echo "Checking permission group ..." | ||
|
||
cd "$mount_point" | ||
|
||
for file in "." "events" "events/sched" "events/sched/sched_switch" "events/sched/sched_switch/enable"; do | ||
local gid=`stat -c "%g" $file` | ||
if [ "$gid" -ne "$expected_gid" ]; then | ||
cd - # Return to the previous working directory (tracefs root) | ||
fail "$(realpath $file): Expected group $expected_gid; Got group $gid" | ||
fi | ||
done | ||
|
||
cd - # Return to the previous working directory (tracefs root) | ||
} | ||
|
||
test_gid_mount_option() { | ||
local mount_point=$(get_mount_point) | ||
local mount_options=$(get_mnt_options "$mount_point") | ||
local original_group=$(stat -c "%g" .) | ||
local other_group=$(find_alternate_gid "$original_group") | ||
|
||
# Set up mount options with new GID for testing | ||
local new_options=`echo "$mount_options" | sed -e "s/gid=[0-9]*/gid=$other_group/"` | ||
if [ "$new_options" = "$mount_options" ]; then | ||
new_options="$mount_options,gid=$other_group" | ||
mount_options="$mount_options,gid=$original_group" | ||
fi | ||
|
||
# Unmount existing tracefs instance and mount with new GID | ||
unmount_tracefs "$mount_point" | ||
mount_tracefs_with_options "$mount_point" "$new_options" | ||
|
||
check_gid "$mount_point" "$other_group" | ||
|
||
# Check that files created after the mount inherit the GID | ||
local instance=$(create_instance "$mount_point") | ||
check_gid "$instance" "$other_group" | ||
remove_instance "$instance" | ||
|
||
# Unmount and remount with the original GID | ||
unmount_tracefs "$mount_point" | ||
mount_tracefs_with_options "$mount_point" "$mount_options" | ||
check_gid "$mount_point" "$original_group" | ||
} | ||
|
||
test_gid_mount_option | ||
|
||
exit 0 |
16 changes: 3 additions & 13 deletions
16
tools/testing/selftests/ftrace/test.d/00basic/test_ownership.tc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters