commit:     60293a910e90a700cbdec50edb4b2fcb6dc7c13a
Author:     Arisu Tachibana <alicef <AT> gentoo <DOT> org>
AuthorDate: Wed Sep 10 06:58:53 2025 +0000
Commit:     Arisu Tachibana <alicef <AT> gentoo <DOT> org>
CommitDate: Wed Sep 10 06:58:53 2025 +0000
URL:        https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=60293a91

Add 1801_proc_fix_type_confusion_in_pde_set_flags.patch

Signed-off-by: Arisu Tachibana <alicef <AT> gentoo.org>

 0000_README                                        |  4 +++
 ..._proc_fix_type_confusion_in_pde_set_flags.patch | 40 ++++++++++++++++++++++
 2 files changed, 44 insertions(+)

diff --git a/0000_README b/0000_README
index db45e6ad..6f7be368 100644
--- a/0000_README
+++ b/0000_README
@@ -475,6 +475,10 @@ Patch:  1730_parisc-Disable-prctl.patch
 From:    
https://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux.git
 Desc:    prctl: Temporarily disable prctl(PR_SET_MDWE) on parisc
 
+Patch:  1801_proc_fix_type_confusion_in_pde_set_flags.patch
+From:   
https://lore.kernel.org/linux-fsdevel/[email protected]/
+Desc:   proc: fix type confusion in pde_set_flags()
+
 Patch:  1900_btrfs-dev-mapper-name-soft-link-fix.patch
 From:    
https://lore.kernel.org/linux-btrfs/30aefd8b4e8c1f0c5051630b106a1ff3570d28ed.1735537399.git....@suse.com/T/#u
 Desc:    btrfs: prefer to use "/dev/mapper/name" soft link instead of 
"/dev/dm-*"

diff --git a/1801_proc_fix_type_confusion_in_pde_set_flags.patch 
b/1801_proc_fix_type_confusion_in_pde_set_flags.patch
new file mode 100644
index 00000000..4777dbdc
--- /dev/null
+++ b/1801_proc_fix_type_confusion_in_pde_set_flags.patch
@@ -0,0 +1,40 @@
+Subject: [PATCH] proc: fix type confusion in pde_set_flags()
+
+Commit 2ce3d282bd50 ("proc: fix missing pde_set_flags() for net proc files")
+missed a key part in the definition of proc_dir_entry:
+
+union {
+       const struct proc_ops *proc_ops;
+       const struct file_operations *proc_dir_ops;
+};
+
+So dereference of ->proc_ops assumes it is a proc_ops structure results in
+type confusion and make NULL check for 'proc_ops' not work for proc dir.
+
+Add !S_ISDIR(dp->mode) test before calling pde_set_flags() to fix it.
+
+Fixes: 2ce3d282bd50 ("proc: fix missing pde_set_flags() for net proc files")
+Reported-by: Brad Spengler <[email protected]>
+Signed-off-by: wangzijie <[email protected]>
+---
+ fs/proc/generic.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/fs/proc/generic.c b/fs/proc/generic.c
+index bd0c099cf..176281112 100644
+--- a/fs/proc/generic.c
++++ b/fs/proc/generic.c
+@@ -393,7 +393,8 @@ struct proc_dir_entry *proc_register(struct proc_dir_entry 
*dir,
+       if (proc_alloc_inum(&dp->low_ino))
+               goto out_free_entry;
+ 
+-      pde_set_flags(dp);
++      if (!S_ISDIR(dp->mode))
++              pde_set_flags(dp);
+ 
+       write_lock(&proc_subdir_lock);
+       dp->parent = dir;
+-- 
+2.25.1
+
+

Reply via email to