Received: by 2002:a05:7412:b995:b0:f9:9502:5bb8 with SMTP id it21csp536781rdb; Thu, 21 Dec 2023 18:11:36 -0800 (PST) X-Google-Smtp-Source: AGHT+IGbpaoiSUrooQcvN3sTYdnaNkqs361HRtxa6+2uUbU4tshDjG792uYYuPGOuwMxCJN/9cGJ X-Received: by 2002:a05:622a:182:b0:425:4043:29e9 with SMTP id s2-20020a05622a018200b00425404329e9mr763178qtw.100.1703211096562; Thu, 21 Dec 2023 18:11:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1703211096; cv=none; d=google.com; s=arc-20160816; b=EwOXofgIpYGEDtJZ6Qomc53pyVbXcciBad++FBRjubgHwvPj0J240wuw8O4feUW9Em SSoBzkmQ3/BGY44IIboEkIhMkTplgFYaCwMfOh5xA2X2r1aZeL8la3rGky+1MYtZ+BhA lmJzF1OCq0Ka0BRZMAD5w7+93vloAYOvuVWJ9cY4BIa+4zT3yqypAIL58+QaUv7Soen/ j70HBXfnOxlGn8+9K7wY3ZtJzsqOo2ZUSGfRqCLytrIaAVd5+a9oEJTIMNfvOujCMLoF c0cDkFARseZXm1vfyTUtyWBtOoGtC0u2DuamL7/O9bH2NxVN1LwjiM/V5JWrJEf8VvFd Wn9g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:message-id:subject:cc:to:from :date; bh=/tt1MXRlbasWxLNmU8S+WcIqqlv/irLcEqce9Xu4D/E=; fh=4w10a8dtnIVhRfwd9tHZc70r6q8+yvfWIjXgJjERji8=; b=gJI8fbTeAWabrNCMj7vSkTNMDEgsYBG60QFKd2VNVztID7BRA/g8HisXKbAMrtpiYy UdX/7UAb21Dso5SK4YcQQS3Q8BnjXK2ylvTSUnvwGn1/1n8wFMBfbtgHLJaz6UCsUqcu Ik4cmM2KsEopLEvTzyQ+jTpJhfhsG3dqW7IV2so82Gmi4pQoTgkIn5R3Zfqnji9sDynK pTjnODq4tOLjfk0TIZcS0KpgfZLQJqPqA6I0/U8HpfKpzRZe/VP/JPG997ICVyU3g2YN 4LPOXeF0xSsc8kdkxLyP4wyxy5aOsBkSif5bcrjgjwZxleWlIQLqbxVdn7P953Qk4LqB sObQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-9260-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-9260-linux.lists.archive=gmail.com@vger.kernel.org" Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [147.75.199.223]) by mx.google.com with ESMTPS id v39-20020a05622a18a700b00423c13d9825si3476054qtc.376.2023.12.21.18.11.36 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Dec 2023 18:11:36 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-9260-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) client-ip=147.75.199.223; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-9260-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-9260-linux.lists.archive=gmail.com@vger.kernel.org" Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 323081C234E4 for ; Fri, 22 Dec 2023 02:11:36 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C2BE210E2; Fri, 22 Dec 2023 02:11:27 +0000 (UTC) X-Original-To: linux-kernel@vger.kernel.org Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 507D915A4; Fri, 22 Dec 2023 02:11:26 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id BD7DCC433C7; Fri, 22 Dec 2023 02:11:25 +0000 (UTC) Date: Thu, 21 Dec 2023 21:12:29 -0500 From: Steven Rostedt To: LKML , Linux Trace Kernel Cc: Masami Hiramatsu , Mark Rutland , Mathieu Desnoyers , Linus Torvalds , Shuah Khan , Linux selftests Subject: [PATCH v3] tracing/selftests: Add ownership modification tests for eventfs Message-ID: <20231221211229.13398ef3@gandalf.local.home> X-Mailer: Claws Mail 3.19.1 (GTK+ 2.24.33; x86_64-pc-linux-gnu) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit From: "Steven Rostedt (Google)" As there were bugs found with the ownership of eventfs dynamic file creation. Add a test to test it. It will remount tracefs with a different gid and check the ownership of the eventfs directory, as well as the system and event directories. It will also check the event file directories. It then does a chgrp on each of these as well to see if they all get updated as expected. Then it remounts the tracefs file system back to the original group and makes sure that all the updated files and directories were reset back to the original ownership. It does the same for instances that change the ownership of he instance directory. Note, because the uid is not reset by a remount, it is tested for every file by switching it to a new owner and then back again. Signed-off-by: Steven Rostedt (Google) --- Changes since v2: https://lore.kernel.org/linux-trace-kernel/20231221194516.53e1ee43@gandalf.local.home - Changed the instance test name from "foo-$(mktemp -u XXXXX)" to "$(mktemp -u test-XXXXXX)" as Masami reported that busybox mktemp only works with 6 Xs and not 5. Also changed "foo" to "test" and placed it into the mktemp format. .../ftrace/test.d/00basic/test_ownership.tc | 113 ++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100755 tools/testing/selftests/ftrace/test.d/00basic/test_ownership.tc diff --git a/tools/testing/selftests/ftrace/test.d/00basic/test_ownership.tc b/tools/testing/selftests/ftrace/test.d/00basic/test_ownership.tc new file mode 100755 index 000000000000..4c20be3a714a --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/00basic/test_ownership.tc @@ -0,0 +1,113 @@ +#!/bin/sh +# description: Test file and directory owership changes for eventfs + +original_group=`stat -c "%g" .` +original_owner=`stat -c "%u" .` + +mount_point=`stat -c '%m' .` +mount_options=`mount | grep "$mount_point" | sed -e 's/.*(\(.*\)).*/\1/'` + +# find another owner and group that is not the original +other_group=`tac /etc/group | grep -v ":$original_group:" | head -1 | cut -d: -f3` +other_owner=`tac /etc/passwd | grep -v ":$original_owner:" | head -1 | cut -d: -f3` + +# Remove any group ownership already +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 + +canary="events/timer events/timer/timer_cancel events/timer/timer_cancel/format" + +test() { + file=$1 + test_group=$2 + + owner=`stat -c "%u" $file` + group=`stat -c "%g" $file` + + echo "testing $file $owner=$original_owner and $group=$test_group" + if [ $owner -ne $original_owner ]; then + exit_fail + fi + if [ $group -ne $test_group ]; then + exit_fail + fi + + # Note, the remount does not update ownership so test going to and from owner + echo "test owner $file to $other_owner" + chown $other_owner $file + owner=`stat -c "%u" $file` + if [ $owner -ne $other_owner ]; then + exit_fail + fi + + chown $original_owner $file + owner=`stat -c "%u" $file` + if [ $owner -ne $original_owner ]; then + exit_fail + fi + +} + +run_tests() { + for d in "." "events" "events/sched" "events/sched/sched_switch" "events/sched/sched_switch/enable" $canary; do + test "$d" $other_group + done + + chgrp $original_group events + test "events" $original_group + for d in "." "events/sched" "events/sched/sched_switch" "events/sched/sched_switch/enable" $canary; do + test "$d" $other_group + done + + chgrp $original_group events/sched + test "events/sched" $original_group + for d in "." "events/sched/sched_switch" "events/sched/sched_switch/enable" $canary; do + test "$d" $other_group + done + + chgrp $original_group events/sched/sched_switch + test "events/sched/sched_switch" $original_group + for d in "." "events/sched/sched_switch/enable" $canary; do + test "$d" $other_group + done + + chgrp $original_group events/sched/sched_switch/enable + test "events/sched/sched_switch/enable" $original_group + for d in "." $canary; do + test "$d" $other_group + done +} + +mount -o remount,"$new_options" . + +run_tests + +mount -o remount,"$mount_options" . + +for d in "." "events" "events/sched" "events/sched/sched_switch" "events/sched/sched_switch/enable" $canary; do + test "$d" $original_group +done + +# check instances as well + +chgrp $other_group instances + +instance="$(mktemp -u test-XXXXXX)" + +mkdir instances/$instance + +cd instances/$instance + +run_tests + +cd ../.. + +rmdir instances/$instance + +chgrp $original_group instances + +exit 0 -- 2.42.0