Re: Two identical entries for "rtc" in /proc/devices

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Andrew Morton <akpm@...>
Cc: <cebbert@...>, <linux-kernel@...>
Date: Wednesday, September 19, 2007 - 1:21 am

On Saturday 15 September 2007, Andrew Morton wrote:

Both of those call sites have code to handle procfs rejecting
the file creation; nothing to fix.  And anyway, there's no way
this is a *caller* bug!

The missing step seems to be that proc_register() doesn't bother
to check whether there's already an entry for that file.  Which
is what the appended *UNTESTED* patch does (it compiles though).

- Dave

--- g26.orig/fs/proc/generic.c	2007-09-18 22:08:44.000000000 -0700
+++ g26/fs/proc/generic.c	2007-09-18 22:14:07.000000000 -0700
@@ -521,10 +521,11 @@ static const struct inode_operations pro
 	.setattr	= proc_notify_change,
 };
 
-static int proc_register(struct proc_dir_entry * dir, struct proc_dir_entry * dp)
+static int proc_register(struct proc_dir_entry *dir, struct proc_dir_entry *dp)
 {
 	unsigned int i;
-	
+	struct proc_dir_entry *de;
+
 	i = get_inode_number();
 	if (i == 0)
 		return -EAGAIN;
@@ -547,6 +548,16 @@ static int proc_register(struct proc_dir
 	}
 
 	spin_lock(&proc_subdir_lock);
+
+	for (de = dir->subdir; de ; de = de->next) {
+		if (de->namelen != dp->namelen)
+			continue;
+		if (!memcmp(de->name, dp->name, de->namelen)) {
+			spin_unlock(&proc_subdir_lock);
+			return -EEXIST;
+		}
+	}
+
 	dp->next = dir->subdir;
 	dp->parent = dir;
 	dir->subdir = dp;

-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Two identical entries for "rtc" in /proc/devices, Chuck Ebbert, (Thu Sep 6, 6:23 pm)
Re: Two identical entries for "rtc" in /proc/devices, Andrew Morton, (Sat Sep 15, 3:44 am)
Re: Two identical entries for "rtc" in /proc/devices, David Brownell, (Sat Sep 15, 2:50 pm)
Re: Two identical entries for "rtc" in /proc/devices, Andrew Morton, (Sun Sep 16, 1:10 am)
Re: Two identical entries for "rtc" in /proc/devices, David Brownell, (Wed Sep 19, 1:21 am)