From nobody Mon Nov 25 02:46:45 2024 Received: from mail-yw1-f202.google.com (mail-yw1-f202.google.com [209.85.128.202]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3C245217643 for ; Wed, 30 Oct 2024 17:20:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730308839; cv=none; b=GRmPXohMLsRVscRCLgqn4lqh6KjIewoadp6n7uv4loLw+S630gNz9/cizfxIfhE9+3ztobDoi7rhOVHHcp+/infpXycNxEPhUMkGlfxCwIibYeDPhDw02YJMzPKQDZf3L7Re43TZz3GtT8olS9x+QIYl9R9YEK91eJ8/eIvOijs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730308839; c=relaxed/simple; bh=QTzPrNt1y6T97+ODSV9OoOTpzB2mHMaSvyY3ZTsxpps=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=QxfYgcsivePj78kNJWhBGb9HaqwVTFPEJAMqv4l7aBlTXv6lEuWPhEqhT9CJVKc2HdNBfBXicjoLBKJ08N6IpLtjHDT4d6wrpfFBzDQv1taQBsWSrpZh3hRs0wnsF/pJ2Wmrd77Mxm1pfd/bXbpW1HZfA57XnmtQmdSXPQedz2w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--kaleshsingh.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=tmjxXRTL; arc=none smtp.client-ip=209.85.128.202 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--kaleshsingh.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="tmjxXRTL" Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-6e9e8978516so312267b3.0 for ; Wed, 30 Oct 2024 10:20:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1730308836; x=1730913636; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=IZAFMBfP9RmqFDPwMaII3ttBs8mLcPx4x5R9BgFxh0w=; b=tmjxXRTLP2Vl2GPReGLFYiYtkodsu5kN9JfQInojCvqUVi7UXx+5QIaNbhT8Fr0dYX AI4vsXULuyM/69dMA/ziJsweWOUv5Azuan8kvpJeW1g4pvSifZuhp3f7MbVeHsUQZ4oV yoTgnORtjaOm7bfPLd/x/XAXDM6j0xI3vukrCbcC2Axj+FyuOnZij7WOKOsQcAUQNddh fLsWfOkJ9x36nW80wLNRA/xov4o93KLCeFJzyFwI6dwjvNCVRAoVesMCTZFs0RY3xkFX B5rP5ooVTGla2ERouu/5Y0aViTja84tXqq4C/hmzE4d49+xjP7e4n9kCjt4IQKNGZtFD M4Ig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1730308836; x=1730913636; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=IZAFMBfP9RmqFDPwMaII3ttBs8mLcPx4x5R9BgFxh0w=; b=baUkWlT0SL6YV2cBP8/HsH+9X6aAAXyD6+1BLzFD/U5tGJ7SBL1FlskLJ2KYT6aO0+ Upf981Sw24ZKFxvNgp6kHBmv4volqiLgT76wbZJDdLzTCfiZH/ky+efg2Ah3qhH2NNDw peI66YEgFAR3EzDOofsHU15PeWip/m7X8xwRQzxUHLWblysQL0pkeFDJbtk8Nosjwy3/ fjdpK7F/MuMP9U+onpDi/D42zk7YXgDNaEO4DzWHUDnokBQfTVzQeRL3pYgpVHEdzz7L 23/LZxblP20aylJs+Lbi38bUNul1tiAFz+AayShFr6Bd+ZESj9VDwC5oVCKiwUGqCwOz g9Iw== X-Forwarded-Encrypted: i=1; AJvYcCU3rEJ7tCMCb20ShtvQXWsF2olyKtXzXinN+xkyxrxtQ7ShvE1stGDP6lgHZk7W38IhwLwTE63EaVpePgA=@vger.kernel.org X-Gm-Message-State: AOJu0YzmyYHtPg43bld2B77qjwAVnO47PAC6bJjTWD6Ayp21nGBAZmwY EZAhZgDUM700Al3absqQyHWpd+JJCqD8zT7K0RcfxV6RwD/0y1ITyuwbbQFp+USpehTvOm2lZDs ePUOQlbKAdKh9Ur5StSIkjg== X-Google-Smtp-Source: AGHT+IEYSmUkID7i8uqW1VtyqeMAIz2uHzC1/pRBGdIO+y1PZ8usLvkHF+cASenUwYotfQQpqQ8YfyDG9pTXBDFoCQ== X-Received: from kalesh.mtv.corp.google.com ([2a00:79e0:2e3f:8:ad9b:6cde:2e57:6aff]) (user=kaleshsingh job=sendgmr) by 2002:a05:690c:6383:b0:6e2:ad08:4924 with SMTP id 00721157ae682-6e9d8aacb2dmr10879167b3.4.1730308835646; Wed, 30 Oct 2024 10:20:35 -0700 (PDT) Date: Wed, 30 Oct 2024 10:17:48 -0700 In-Reply-To: <20241030171928.4168869-1-kaleshsingh@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20241030171928.4168869-1-kaleshsingh@google.com> X-Mailer: git-send-email 2.47.0.163.g1226f6d8fa-goog Message-ID: <20241030171928.4168869-2-kaleshsingh@google.com> Subject: [PATCH v2 1/3] tracing: Fix tracefs mount options From: Kalesh Singh To: dhowells@redhat.com, rostedt@goodmis.org, mhiramat@kernel.org, sandeen@redhat.com Cc: surenb@google.com, jyescas@google.com, kernel-team@android.com, android-mm@google.com, Kalesh Singh , Mathieu Desnoyers , Shuah Khan , Ali Zahraee , Christian Brauner , linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Commit 78ff64081949 ("vfs: Convert tracefs to use the new mount API") converted tracefs to use the new mount APIs caused mount options (e.g. gid=3D) to not take effect. The tracefs superblock can be updated from multiple paths: - on fs_initcall() to init_trace_printk_function_export() - form a work queue to initialize eventfs tracer_init_tracefs_work_func() - fsconfig() syscall to mount or remount of tracefs The tracefs super block root inode gets created early on in init_trace_printk_function_export(). With the new mount API tracefs effectively uses get_tree_single() instead of the old API mount_single(). Previously, mount_single() ensured that the options are always applied to the superblock root inode: (1) If the root inode didn't exist, called fill_super() to create it and apply the options. (2) If the root inode exists, called reconfigure_single() which effectively called tracefs_apply_options() to parse and apply options to the subperblock's fs_info and inode and remount eventfs (if necessary) On the other hand, get_tree_single() effectively calls vfs_get_super() which: (3) If the root inode doesn't exists calls fill_super() to create it and apply the options. (4) If the root inode already exists, updates the fs_context root with the superblock's root inode. (4) above is always the case for tracefs mounts, since the super block's root inode will already be created by init_trace_printk_function_export(). This means that the mount option get ignored: - Since it isn't applied to the super block's root inode, it doesn't get inherited by the children. - Since eventfs is initialized from a separate work queue and before call to mount with the options, and it doesn't get remounted for mount. Ensure that the mount options are applied to the super block and eventfs is remounted to respect the mount options. [1] https://lore.kernel.org/r/536e99d3-345c-448b-adee-a21389d7ab4b@redhat.c= om/ Fixes: 78ff64081949 ("vfs: Convert tracefs to use the new mount API") Cc: Eric Sandeen Cc: David Howells Cc: Steven Rostedt Cc: Masami Hiramatsu Signed-off-by: Kalesh Singh --- Changes in v2: - Update the commit title to reflect that all mount options are affected not only gid, per Eric fs/tracefs/inode.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/fs/tracefs/inode.c b/fs/tracefs/inode.c index 1748dff58c3b..cfc614c638da 100644 --- a/fs/tracefs/inode.c +++ b/fs/tracefs/inode.c @@ -392,6 +392,9 @@ static int tracefs_reconfigure(struct fs_context *fc) struct tracefs_fs_info *sb_opts =3D sb->s_fs_info; struct tracefs_fs_info *new_opts =3D fc->s_fs_info; =20 + if (!new_opts) + return 0; + sync_filesystem(sb); /* structure copy of new mount options to sb */ *sb_opts =3D *new_opts; @@ -478,14 +481,17 @@ static int tracefs_fill_super(struct super_block *sb,= struct fs_context *fc) sb->s_op =3D &tracefs_super_operations; sb->s_d_op =3D &tracefs_dentry_operations; =20 - tracefs_apply_options(sb, false); - return 0; } =20 static int tracefs_get_tree(struct fs_context *fc) { - return get_tree_single(fc, tracefs_fill_super); + int err =3D get_tree_single(fc, tracefs_fill_super); + + if (err) + return err; + + return tracefs_reconfigure(fc); } =20 static void tracefs_free_fc(struct fs_context *fc) --=20 2.47.0.163.g1226f6d8fa-goog From nobody Mon Nov 25 02:46:45 2024 Received: from mail-yb1-f202.google.com (mail-yb1-f202.google.com [209.85.219.202]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AC7B221502C for ; Wed, 30 Oct 2024 17:20:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730308860; cv=none; b=PmjZp3hCvEBwzLw0EravG0eMADBpGenlcv4g0hHL3FmDOGJbH8LxlZ+g/5Z8rcnBV+wJWmOjfzmQ1hjOmzsXOaK3jSx7mUhBirHOynzTR88vWthfKuEBJcfCakKz3VFz28s3bp3ITzNYtnkOY71ZJ5T+7GDgTUjoeZiyViIEeYw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730308860; c=relaxed/simple; bh=rDPKRF5nbM8EQhE80nGXFbHhdN7TfLAQ/0VKEszrmh0=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=BYzDRnNNFT12E2ZgPdk3Ipfb5h+8YM1+JGnPfqgPJLF35p5W1lOpyUrGLNVGa2xN29S1BMwfWIH2DGH5SBjXeXLHJoxVV2BBQ4x8taw7WXfuymyXcjnuo3MNMdtiuBMzCR5QxBmEpp3p68T7RtjugTzms1edmYrv2ooJfjEKn78= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--kaleshsingh.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=S8NzOemP; arc=none smtp.client-ip=209.85.219.202 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--kaleshsingh.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="S8NzOemP" Received: by mail-yb1-f202.google.com with SMTP id 3f1490d57ef6-e30c7a38bd7so117020276.0 for ; Wed, 30 Oct 2024 10:20:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1730308858; x=1730913658; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=XQp9Xa4889yKfv5Xap+j/sksIJtCR3GgXWQrx5hFIpw=; b=S8NzOemPfn4rEDI0nLWGoTTtAHvuwN4ComisPg4fLysh0Sbh3ayOcWXwpmwZBg/Q0D eZmfa6eTu+pUtDXDLjWkMU9m5qDjZ94q6dFMjpL6fqlXWQ4+uwaK9dtk3VS5IVZrueDh fvBlEiXebtPtw5dh9WA2jv2wgd2vrtSkuA1dfS2DrzWY476gY8rQflI7ETD4Gqc8M30S hMikTso6579EY7/Q86lVhCgGUyso2U4+LBk3ZDor9sWAF9K6CWZkmaalmkffRj/CGPYN 52iBHveR+X9qhfiejFQmwAnTYgbwED6Gr0FiPbnOruEtEu60Ga+chVSyGYpCnlrtXnTX N4JA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1730308858; x=1730913658; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=XQp9Xa4889yKfv5Xap+j/sksIJtCR3GgXWQrx5hFIpw=; b=i+SfABT+vkIlrReWV+RlzWtWVUqHh8mZvF86chZlc3WANfR9/9scezX7zXWz+opi/k mHWucfOzfH3cNJ0tFudkVMpGM79XVjBq+27IDcTAnIKXAjlKrjcGbv5O49CAjEfeDpZ9 R7z5W582l6sZw5hswsh0a1o30LxC0Ts8wOboTr+rJ0/b/IF1zHQnRMUJ4egEA5R4xbCo 3kA7ivhydzioDHHuo0vymp/iFhb7WQjDOhhXcPVuPouwdkBWhoKRVYxIWg/SxXsSAvI/ U8sTycQwfPNjUWfON6sA1NS/CDPHPcpwwGG1/uByWJvPprfGld+QugxA6ZFDAk4Quxsd ffnQ== X-Forwarded-Encrypted: i=1; AJvYcCXYdmPVLm1VTVfzOSELHDW6mB0uQ3eyT4zA07dHExSzXBPlJ2l0WVbDy4Y7WGK+/VV9jGgksZBQb9U3pxc=@vger.kernel.org X-Gm-Message-State: AOJu0YyWF+smwvtQKgqKZwj4Aaz0+XJdXXKAN8hwScngl0SsxT3k67Dm +EEGZbmWfizkt7HYu9SbAuZHAlq0bfPTLzUBRmCnwBTE6Or+6G/n/SbabW0RIZgQft42uuRycE2 yWCnNErA7j4L2klQ0vgU9wQ== X-Google-Smtp-Source: AGHT+IFmFQ2+ilc/frkLStjSQyf19IpIYrW2nD/6coGLs4CVgqbF3qEYdPRbZm6F8+l8PBqgjQXpJziq3HiTUEpEQg== X-Received: from kalesh.mtv.corp.google.com ([2a00:79e0:2e3f:8:ad9b:6cde:2e57:6aff]) (user=kaleshsingh job=sendgmr) by 2002:a5b:d4c:0:b0:e30:bdc8:567f with SMTP id 3f1490d57ef6-e30c190221cmr60305276.4.1730308857554; Wed, 30 Oct 2024 10:20:57 -0700 (PDT) Date: Wed, 30 Oct 2024 10:17:49 -0700 In-Reply-To: <20241030171928.4168869-1-kaleshsingh@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20241030171928.4168869-1-kaleshsingh@google.com> X-Mailer: git-send-email 2.47.0.163.g1226f6d8fa-goog Message-ID: <20241030171928.4168869-3-kaleshsingh@google.com> Subject: [PATCH v2 2/3] tracing: Document tracefs gid mount option From: Kalesh Singh To: dhowells@redhat.com, rostedt@goodmis.org, mhiramat@kernel.org, sandeen@redhat.com Cc: surenb@google.com, jyescas@google.com, kernel-team@android.com, android-mm@google.com, Kalesh Singh , Mathieu Desnoyers , Shuah Khan , Ali Zahraee , Christian Brauner , linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Commit ee7f3666995d ("tracefs: Have new files inherit the ownership of their parent") and commit 48b27b6b5191 ("tracefs: Set all files to the same group ownership as the mount option") introduced a new gid mount option that allows specifying a group to apply to all entries in tracefs. Document this in the tracing readme. Cc: Eric Sandeen Cc: David Howells Cc: Steven Rostedt Cc: Masami Hiramatsu Signed-off-by: Kalesh Singh --- Changes in v2: - Reference commits instead of lore links, per Steve kernel/trace/trace.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index a8f52b6527ca..2b64b3ec67d9 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -5501,6 +5501,10 @@ static const struct file_operations tracing_iter_fop= s =3D { static const char readme_msg[] =3D "tracing mini-HOWTO:\n\n" + "By default tracefs removes all OTH file permission bits.\n" + "When mounting tracefs an optional group id can be specified\n" + "which adds the group to every directory and file in tracefs:\n\n" + "\t e.g. mount -t tracefs [-o [gid=3D]] nodev /sys/kernel/tracing\n\= n" "# echo 0 > tracing_on : quick way to disable tracing\n" "# echo 1 > tracing_on : quick way to re-enable tracing\n\n" " Important files:\n" -- 2.47.0.163.g1226f6d8fa-goog From nobody Mon Nov 25 02:46:45 2024 Received: from mail-yb1-f201.google.com (mail-yb1-f201.google.com [209.85.219.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 52E34216E18 for ; Wed, 30 Oct 2024 17:21:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730308883; cv=none; b=Os1JqWwe+QwJDzMijWymYRHuj58fN41AjZQZERL0DyzZZffrzmZAVLd/3CQQh2lLSgvx9WlDNpyEUfd2cilBKioBZMpSTtXaYkB8OgIH71vuEYO90zl/lPBxDXW2ADCuIo1Rq6MisAQdfrBJgCUPcYA6k+nAeZCVph0T8LPh3gY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730308883; c=relaxed/simple; bh=jy7fX6fXtTicagX/1fKgETRpjghchdVKkUSUUenccKQ=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=s78ogP6D35W00HER/sX7Y+lpi5Mi++pIS5KkUqjF+wJh1G1DIckD4mSDcQrwhlFIgt33u9Ueuhr3wLWYbH+jG2i56nxxTUOpVwWKhSfQ0kozdG7Sh7sljkyZtsl+ENSSzeRO2mhD9JDMB0dKfxk162s/Dl02GejYLn+RisrDTLU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--kaleshsingh.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=1EB4WMza; arc=none smtp.client-ip=209.85.219.201 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--kaleshsingh.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="1EB4WMza" Received: by mail-yb1-f201.google.com with SMTP id 3f1490d57ef6-e28fc60660dso56574276.0 for ; Wed, 30 Oct 2024 10:21:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1730308879; x=1730913679; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=PnPITcasFwhqHG4kzONwlC03HHUaTOQQrrmOaxaFJyo=; b=1EB4WMzaWZqPwmr/eE98GtortPVopebwt/7H0NjnmdAmPHxc7l+00fpE9M1cG9+Ppt TIJGWX0odlTT+y1tQ3eoLTdWW4GdO/9io9vi51tVxifKygYBlP7vIeU5UofikdcxrpKg FPcPWDgdJRI8WY2ev0K4z2R7muXsK7AlrOFnCexbfUQN2y4eqj3QXU5/qI8+PirEKZOh CIz3mkCvQRIWDDiKxcN+lbf5tCFcZ2sctxLai78NTbtonxeTwzu+yAqhx0Ccs7wTbfxs 8wh3dtXqEag2mK8ja/RaaXES8GfigyhgrCo3cc5+bhzG6uqCMUlPu0NjeRCI8h8yGWys uwKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1730308879; x=1730913679; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=PnPITcasFwhqHG4kzONwlC03HHUaTOQQrrmOaxaFJyo=; b=thj3QGdAEO23bLslN2bPA9qDSpW7wViY+zGWEwRRuyige+vUQrRVuuOQoL00TXaEoc VCuYTp2OtyMSN4aTHQcQcgF3orH6yBbkY7RBAgcXlkzcLsZCowC758otYcfpq0HooHzK GiuU6+v96N2SkNVUCP94M2DHjVw5T5nNZ0ZMRf6W4vSbitJI1/oRbOYw4qUtPCkDi6Tq DD5hGFimerY5lNGrojU/p4888wbirFU8DL0QEVYtfMsx4TM1lKSQqceUTl9Qz8Cq7vYN lCmRrA7Rd9Y7AC55EhZntgPwDyICBp957YxYBi5ohnc5X1uf62lcO8fyZlGz6/iEPufy V+2w== X-Forwarded-Encrypted: i=1; AJvYcCWkGOccmKjlBVC3zPmfV1b6iIWhJUY3b9vnBgmnLK1H0f675TYovSRxASGtg5EuD8nuSdqFFIudBQJhrRU=@vger.kernel.org X-Gm-Message-State: AOJu0Yz7GNga1FNgl4MQJsEpZS3lzscbnGetj4h03U36+bJsmZjLqoMN IrPeYUiQY9TT37KBLn0u5u+JXRaiMnq8aFRYiOIt6q1431uBCMoH6tlhVnvui1oEqpq5mVhgZXa UDlSTqO5uzzhm0EF98ynFTQ== X-Google-Smtp-Source: AGHT+IEU6ajAu+W43CFSJeGRF7aKFVpYs7iw/D3cnnCbf9TsQuTQ7xbXdt4NGUXEiXKpoIpfSqS3LSUlm/2uyT5r9g== X-Received: from kalesh.mtv.corp.google.com ([2a00:79e0:2e3f:8:ad9b:6cde:2e57:6aff]) (user=kaleshsingh job=sendgmr) by 2002:a25:8382:0:b0:e2b:ce2f:787a with SMTP id 3f1490d57ef6-e3087a603e2mr59008276.3.1730308879011; Wed, 30 Oct 2024 10:21:19 -0700 (PDT) Date: Wed, 30 Oct 2024 10:17:50 -0700 In-Reply-To: <20241030171928.4168869-1-kaleshsingh@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20241030171928.4168869-1-kaleshsingh@google.com> X-Mailer: git-send-email 2.47.0.163.g1226f6d8fa-goog Message-ID: <20241030171928.4168869-4-kaleshsingh@google.com> Subject: [PATCH v2 3/3] tracing/selftests: Add tracefs mount options test From: Kalesh Singh To: dhowells@redhat.com, rostedt@goodmis.org, mhiramat@kernel.org, sandeen@redhat.com Cc: surenb@google.com, jyescas@google.com, kernel-team@android.com, android-mm@google.com, Kalesh Singh , Mathieu Desnoyers , Shuah Khan , Ali Zahraee , Christian Brauner , linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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=3D] as a requirement and also update test_ownership.tc requirements to use this. Cc: Eric Sandeen Cc: David Howells Cc: Steven Rostedt Cc: Masami Hiramatsu Signed-off-by: Kalesh Singh --- .../ftrace/test.d/00basic/mount_options.tc | 101 ++++++++++++++++++ .../ftrace/test.d/00basic/test_ownership.tc | 16 +-- .../testing/selftests/ftrace/test.d/functions | 25 +++++ 3 files changed, 129 insertions(+), 13 deletions(-) create mode 100644 tools/testing/selftests/ftrace/test.d/00basic/mount_opt= ions.tc diff --git a/tools/testing/selftests/ftrace/test.d/00basic/mount_options.tc= b/tools/testing/selftests/ftrace/test.d/00basic/mount_options.tc new file mode 100644 index 000000000000..35e8d47d6072 --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/00basic/mount_options.tc @@ -0,0 +1,101 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# description: Test tracefs GID mount option +# requires: "[gid=3D]":README + +fail() { + local msg=3D"$1" + + echo "FAILED: $msg" + exit_fail +} + +find_alternate_gid() { + local original_gid=3D"$1" + tac /etc/group | grep -v ":$original_gid:" | head -1 | cut -d: -f3 +} + +mount_tracefs_with_options() { + local mount_point=3D"$1" + local options=3D"$2" + + mount -t tracefs -o "$options" nodev "$mount_point" + + setup +} + +unmount_tracefs() { + local mount_point=3D"$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=3D"$1" + local instance=3D"$mount_point/instances/$(mktemp -u test-XXXXXX)" + + mkdir "$instance" + echo "$instance" +} + +remove_instance() { + local instance=3D"$1" + + rmdir "$instance" +} + +check_gid() { + local mount_point=3D"$1" + local expected_gid=3D"$2" + + echo "Checking permission group ..." + + cd "$mount_point" + + for file in "." "events" "events/sched" "events/sched/sched_switch" "even= ts/sched/sched_switch/enable"; do + local gid=3D`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=3D$(get_mount_point) + local mount_options=3D$(get_mnt_options "$mount_point") + local original_group=3D$(stat -c "%g" .) + local other_group=3D$(find_alternate_gid "$original_group") + + # Set up mount options with new GID for testing + local new_options=3D`echo "$mount_options" | sed -e "s/gid=3D[0-9]*/gid= =3D$other_group/"` + if [ "$new_options" =3D "$mount_options" ]; then + new_options=3D"$mount_options,gid=3D$other_group" + mount_options=3D"$mount_options,gid=3D$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=3D$(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 diff --git a/tools/testing/selftests/ftrace/test.d/00basic/test_ownership.t= c b/tools/testing/selftests/ftrace/test.d/00basic/test_ownership.tc index 094419e190c2..e71cc3ad0bdf 100644 --- a/tools/testing/selftests/ftrace/test.d/00basic/test_ownership.tc +++ b/tools/testing/selftests/ftrace/test.d/00basic/test_ownership.tc @@ -1,24 +1,14 @@ #!/bin/sh # SPDX-License-Identifier: GPL-2.0 # description: Test file and directory ownership changes for eventfs +# requires: "[gid=3D]":README =20 original_group=3D`stat -c "%g" .` original_owner=3D`stat -c "%u" .` =20 -mount_point=3D`stat -c '%m' .` +local mount_point=3D$(get_mount_point) =20 -# If stat -c '%m' does not work (e.g. busybox) or failed, try to use the -# current working directory (which should be a tracefs) as the mount point. -if [ ! -d "$mount_point" ]; then - if mount | grep -qw $PWD ; then - mount_point=3D$PWD - else - # If PWD doesn't work, that is an environmental problem. - exit_unresolved - fi -fi - -mount_options=3D`mount | grep "$mount_point" | sed -e 's/.*(\(.*\)).*/\1/'` +mount_options=3D$(get_mnt_options "$mount_point") =20 # find another owner and group that is not the original other_group=3D`tac /etc/group | grep -v ":$original_group:" | head -1 | cu= t -d: -f3` diff --git a/tools/testing/selftests/ftrace/test.d/functions b/tools/testin= g/selftests/ftrace/test.d/functions index 779f3e62ec90..84d6a9c7ad67 100644 --- a/tools/testing/selftests/ftrace/test.d/functions +++ b/tools/testing/selftests/ftrace/test.d/functions @@ -193,3 +193,28 @@ ftrace_errlog_check() { # err-prefix command-with-erro= r-pos-by-^ command-file # " Command: " and "^\n" =3D> 13 test $(expr 13 + $pos) -eq $N } + +# Helper to get the tracefs mount point +get_mount_point() { + local mount_point=3D`stat -c '%m' .` + + # If stat -c '%m' does not work (e.g. busybox) or failed, try to use the + # current working directory (which should be a tracefs) as the mount poin= t. + if [ ! -d "$mount_point" ]; then + if mount | grep -qw "$PWD"; then + mount_point=3D$PWD + else + # If PWD doesn't work, that is an environmental problem. + exit_unresolved + fi + fi + echo "$mount_point" +} + +# Helper function to retrieve mount options for a given mount point +get_mnt_options() { + local mnt_point=3D"$1" + local opts=3D$(mount | grep -m1 "$mnt_point" | sed -e 's/.*(\(.*\)).*/\1/= ') + + echo "$opts" +} \ No newline at end of file --=20 2.47.0.163.g1226f6d8fa-goog