+++ /dev/null
-From d53891d348ac3eceaf48f4732a1f4f5c0e0a55ce Mon Sep 17 00:00:00 2001
-From: "Steven Rostedt (Google)" <rostedt@goodmis.org>
-Date: Thu, 2 May 2024 16:08:25 -0400
-Subject: eventfs: Do not differentiate the toplevel events directory
-
-From: Steven Rostedt (Google) <rostedt@goodmis.org>
-
-commit d53891d348ac3eceaf48f4732a1f4f5c0e0a55ce upstream.
-
-The toplevel events directory is really no different than the events
-directory of instances. Having the two be different caused
-inconsistencies and made it harder to fix the permissions bugs.
-
-Make all events directories act the same.
-
-Link: https://lore.kernel.org/linux-trace-kernel/20240502200905.846448710@goodmis.org
-
-Cc: stable@vger.kernel.org
-Cc: Masami Hiramatsu <mhiramat@kernel.org>
-Cc: Mark Rutland <mark.rutland@arm.com>
-Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
-Cc: Andrew Morton <akpm@linux-foundation.org>
-Fixes: 8186fff7ab649 ("tracefs/eventfs: Use root and instance inodes as default ownership")
-Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- fs/tracefs/event_inode.c | 29 ++++++++---------------------
- fs/tracefs/internal.h | 7 +++----
- 2 files changed, 11 insertions(+), 25 deletions(-)
-
---- a/fs/tracefs/event_inode.c
-+++ b/fs/tracefs/event_inode.c
-@@ -57,7 +57,6 @@ enum {
- EVENTFS_SAVE_MODE = BIT(16),
- EVENTFS_SAVE_UID = BIT(17),
- EVENTFS_SAVE_GID = BIT(18),
-- EVENTFS_TOPLEVEL = BIT(19),
- };
-
- #define EVENTFS_MODE_MASK (EVENTFS_SAVE_MODE - 1)
-@@ -196,14 +195,10 @@ static int eventfs_set_attr(struct mnt_i
- return ret;
- }
-
--static void update_top_events_attr(struct eventfs_inode *ei, struct super_block *sb)
-+static void update_events_attr(struct eventfs_inode *ei, struct super_block *sb)
- {
- struct inode *root;
-
-- /* Only update if the "events" was on the top level */
-- if (!ei || !(ei->attr.mode & EVENTFS_TOPLEVEL))
-- return;
--
- /* Get the tracefs root inode. */
- root = d_inode(sb->s_root);
- ei->attr.uid = root->i_uid;
-@@ -216,10 +211,10 @@ static void set_top_events_ownership(str
- struct eventfs_inode *ei = ti->private;
-
- /* The top events directory doesn't get automatically updated */
-- if (!ei || !ei->is_events || !(ei->attr.mode & EVENTFS_TOPLEVEL))
-+ if (!ei || !ei->is_events)
- return;
-
-- update_top_events_attr(ei, inode->i_sb);
-+ update_events_attr(ei, inode->i_sb);
-
- if (!(ei->attr.mode & EVENTFS_SAVE_UID))
- inode->i_uid = ei->attr.uid;
-@@ -248,7 +243,7 @@ static int eventfs_permission(struct mnt
- return generic_permission(idmap, inode, mask);
- }
-
--static const struct inode_operations eventfs_root_dir_inode_operations = {
-+static const struct inode_operations eventfs_dir_inode_operations = {
- .lookup = eventfs_root_lookup,
- .setattr = eventfs_set_attr,
- .getattr = eventfs_get_attr,
-@@ -316,7 +311,7 @@ static struct eventfs_inode *eventfs_fin
- // Walk upwards until you find the events inode
- } while (!ei->is_events);
-
-- update_top_events_attr(ei, dentry->d_sb);
-+ update_events_attr(ei, dentry->d_sb);
-
- return ei;
- }
-@@ -420,7 +415,7 @@ static struct dentry *lookup_dir_entry(s
- update_inode_attr(dentry, inode, &ei->attr,
- S_IFDIR | S_IRWXU | S_IRUGO | S_IXUGO);
-
-- inode->i_op = &eventfs_root_dir_inode_operations;
-+ inode->i_op = &eventfs_dir_inode_operations;
- inode->i_fop = &eventfs_file_operations;
-
- /* All directories will have the same inode number */
-@@ -769,14 +764,6 @@ struct eventfs_inode *eventfs_create_eve
- uid = d_inode(dentry->d_parent)->i_uid;
- gid = d_inode(dentry->d_parent)->i_gid;
-
-- /*
-- * If the events directory is of the top instance, then parent
-- * is NULL. Set the attr.mode to reflect this and its permissions will
-- * default to the tracefs root dentry.
-- */
-- if (!parent)
-- ei->attr.mode = EVENTFS_TOPLEVEL;
--
- /* This is used as the default ownership of the files and directories */
- ei->attr.uid = uid;
- ei->attr.gid = gid;
-@@ -785,13 +772,13 @@ struct eventfs_inode *eventfs_create_eve
- INIT_LIST_HEAD(&ei->list);
-
- ti = get_tracefs(inode);
-- ti->flags |= TRACEFS_EVENT_INODE | TRACEFS_EVENT_TOP_INODE;
-+ ti->flags |= TRACEFS_EVENT_INODE;
- ti->private = ei;
-
- inode->i_mode = S_IFDIR | S_IRWXU | S_IRUGO | S_IXUGO;
- inode->i_uid = uid;
- inode->i_gid = gid;
-- inode->i_op = &eventfs_root_dir_inode_operations;
-+ inode->i_op = &eventfs_dir_inode_operations;
- inode->i_fop = &eventfs_file_operations;
-
- dentry->d_fsdata = get_ei(ei);
---- a/fs/tracefs/internal.h
-+++ b/fs/tracefs/internal.h
-@@ -4,10 +4,9 @@
-
- enum {
- TRACEFS_EVENT_INODE = BIT(1),
-- TRACEFS_EVENT_TOP_INODE = BIT(2),
-- TRACEFS_GID_PERM_SET = BIT(3),
-- TRACEFS_UID_PERM_SET = BIT(4),
-- TRACEFS_INSTANCE_INODE = BIT(5),
-+ TRACEFS_GID_PERM_SET = BIT(2),
-+ TRACEFS_UID_PERM_SET = BIT(3),
-+ TRACEFS_INSTANCE_INODE = BIT(4),
- };
-
- struct tracefs_inode {
--- a/fs/tracefs/event_inode.c
+++ b/fs/tracefs/event_inode.c
-@@ -163,21 +163,7 @@ static int eventfs_set_attr(struct mnt_i
+@@ -164,21 +164,7 @@ static int eventfs_set_attr(struct mnt_i
* determined by the parent directory.
*/
if (dentry->d_inode->i_mode & S_IFDIR) {
ksmbd-do-not-grant-v2-lease-if-parent-lease-key-and-epoch-are-not-set.patch
tracefs-reset-permissions-on-remount-if-permissions-are-options.patch
tracefs-still-use-mount-point-as-default-permissions-for-instances.patch
-eventfs-do-not-differentiate-the-toplevel-events-directory.patch
eventfs-do-not-treat-events-directory-different-than-other-directories.patch
bluetooth-qca-fix-invalid-device-address-check.patch
bluetooth-qca-fix-wcn3991-device-address-check.patch
+++ /dev/null
-From d53891d348ac3eceaf48f4732a1f4f5c0e0a55ce Mon Sep 17 00:00:00 2001
-From: "Steven Rostedt (Google)" <rostedt@goodmis.org>
-Date: Thu, 2 May 2024 16:08:25 -0400
-Subject: eventfs: Do not differentiate the toplevel events directory
-
-From: Steven Rostedt (Google) <rostedt@goodmis.org>
-
-commit d53891d348ac3eceaf48f4732a1f4f5c0e0a55ce upstream.
-
-The toplevel events directory is really no different than the events
-directory of instances. Having the two be different caused
-inconsistencies and made it harder to fix the permissions bugs.
-
-Make all events directories act the same.
-
-Link: https://lore.kernel.org/linux-trace-kernel/20240502200905.846448710@goodmis.org
-
-Cc: stable@vger.kernel.org
-Cc: Masami Hiramatsu <mhiramat@kernel.org>
-Cc: Mark Rutland <mark.rutland@arm.com>
-Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
-Cc: Andrew Morton <akpm@linux-foundation.org>
-Fixes: 8186fff7ab649 ("tracefs/eventfs: Use root and instance inodes as default ownership")
-Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- fs/tracefs/event_inode.c | 29 ++++++++---------------------
- fs/tracefs/internal.h | 7 +++----
- 2 files changed, 11 insertions(+), 25 deletions(-)
-
---- a/fs/tracefs/event_inode.c
-+++ b/fs/tracefs/event_inode.c
-@@ -57,7 +57,6 @@ enum {
- EVENTFS_SAVE_MODE = BIT(16),
- EVENTFS_SAVE_UID = BIT(17),
- EVENTFS_SAVE_GID = BIT(18),
-- EVENTFS_TOPLEVEL = BIT(19),
- };
-
- #define EVENTFS_MODE_MASK (EVENTFS_SAVE_MODE - 1)
-@@ -196,14 +195,10 @@ static int eventfs_set_attr(struct mnt_i
- return ret;
- }
-
--static void update_top_events_attr(struct eventfs_inode *ei, struct super_block *sb)
-+static void update_events_attr(struct eventfs_inode *ei, struct super_block *sb)
- {
- struct inode *root;
-
-- /* Only update if the "events" was on the top level */
-- if (!ei || !(ei->attr.mode & EVENTFS_TOPLEVEL))
-- return;
--
- /* Get the tracefs root inode. */
- root = d_inode(sb->s_root);
- ei->attr.uid = root->i_uid;
-@@ -216,10 +211,10 @@ static void set_top_events_ownership(str
- struct eventfs_inode *ei = ti->private;
-
- /* The top events directory doesn't get automatically updated */
-- if (!ei || !ei->is_events || !(ei->attr.mode & EVENTFS_TOPLEVEL))
-+ if (!ei || !ei->is_events)
- return;
-
-- update_top_events_attr(ei, inode->i_sb);
-+ update_events_attr(ei, inode->i_sb);
-
- if (!(ei->attr.mode & EVENTFS_SAVE_UID))
- inode->i_uid = ei->attr.uid;
-@@ -248,7 +243,7 @@ static int eventfs_permission(struct mnt
- return generic_permission(idmap, inode, mask);
- }
-
--static const struct inode_operations eventfs_root_dir_inode_operations = {
-+static const struct inode_operations eventfs_dir_inode_operations = {
- .lookup = eventfs_root_lookup,
- .setattr = eventfs_set_attr,
- .getattr = eventfs_get_attr,
-@@ -316,7 +311,7 @@ static struct eventfs_inode *eventfs_fin
- // Walk upwards until you find the events inode
- } while (!ei->is_events);
-
-- update_top_events_attr(ei, dentry->d_sb);
-+ update_events_attr(ei, dentry->d_sb);
-
- return ei;
- }
-@@ -420,7 +415,7 @@ static struct dentry *lookup_dir_entry(s
- update_inode_attr(dentry, inode, &ei->attr,
- S_IFDIR | S_IRWXU | S_IRUGO | S_IXUGO);
-
-- inode->i_op = &eventfs_root_dir_inode_operations;
-+ inode->i_op = &eventfs_dir_inode_operations;
- inode->i_fop = &eventfs_file_operations;
-
- /* All directories will have the same inode number */
-@@ -769,14 +764,6 @@ struct eventfs_inode *eventfs_create_eve
- uid = d_inode(dentry->d_parent)->i_uid;
- gid = d_inode(dentry->d_parent)->i_gid;
-
-- /*
-- * If the events directory is of the top instance, then parent
-- * is NULL. Set the attr.mode to reflect this and its permissions will
-- * default to the tracefs root dentry.
-- */
-- if (!parent)
-- ei->attr.mode = EVENTFS_TOPLEVEL;
--
- /* This is used as the default ownership of the files and directories */
- ei->attr.uid = uid;
- ei->attr.gid = gid;
-@@ -785,13 +772,13 @@ struct eventfs_inode *eventfs_create_eve
- INIT_LIST_HEAD(&ei->list);
-
- ti = get_tracefs(inode);
-- ti->flags |= TRACEFS_EVENT_INODE | TRACEFS_EVENT_TOP_INODE;
-+ ti->flags |= TRACEFS_EVENT_INODE;
- ti->private = ei;
-
- inode->i_mode = S_IFDIR | S_IRWXU | S_IRUGO | S_IXUGO;
- inode->i_uid = uid;
- inode->i_gid = gid;
-- inode->i_op = &eventfs_root_dir_inode_operations;
-+ inode->i_op = &eventfs_dir_inode_operations;
- inode->i_fop = &eventfs_file_operations;
-
- dentry->d_fsdata = get_ei(ei);
---- a/fs/tracefs/internal.h
-+++ b/fs/tracefs/internal.h
-@@ -4,10 +4,9 @@
-
- enum {
- TRACEFS_EVENT_INODE = BIT(1),
-- TRACEFS_EVENT_TOP_INODE = BIT(2),
-- TRACEFS_GID_PERM_SET = BIT(3),
-- TRACEFS_UID_PERM_SET = BIT(4),
-- TRACEFS_INSTANCE_INODE = BIT(5),
-+ TRACEFS_GID_PERM_SET = BIT(2),
-+ TRACEFS_UID_PERM_SET = BIT(3),
-+ TRACEFS_INSTANCE_INODE = BIT(4),
- };
-
- struct tracefs_inode {
--- a/fs/tracefs/event_inode.c
+++ b/fs/tracefs/event_inode.c
-@@ -163,21 +163,7 @@ static int eventfs_set_attr(struct mnt_i
+@@ -164,21 +164,7 @@ static int eventfs_set_attr(struct mnt_i
* determined by the parent directory.
*/
if (dentry->d_inode->i_mode & S_IFDIR) {
ksmbd-do-not-grant-v2-lease-if-parent-lease-key-and-epoch-are-not-set.patch
tracefs-reset-permissions-on-remount-if-permissions-are-options.patch
tracefs-still-use-mount-point-as-default-permissions-for-instances.patch
-eventfs-do-not-differentiate-the-toplevel-events-directory.patch
eventfs-do-not-treat-events-directory-different-than-other-directories.patch
bluetooth-qca-fix-invalid-device-address-check.patch
bluetooth-qca-fix-wcn3991-device-address-check.patch