Andrew, please drop procfs-detect-duplicate-names.patch and apply this
instead.
------------
[PATCH] proc: detect duplicate names on registration
From: Zhang Rui <[email protected]>
Print a warning if PDE is registered with a name which already exists in
target directory.
Bug report and a simple fix can be found here:
http://bugzilla.kernel.org/show_bug.cgi?id=8798
[\n fixlet and no undescriptive variable usage --adobriyan]
Signed-off-by: Zhang Rui <[email protected]>
Signed-off-by: Alexey Dobriyan <[email protected]>
---
fs/proc/generic.c | 10 ++++++++++
1 file changed, 10 insertions(+)
--- a/fs/proc/generic.c
+++ b/fs/proc/generic.c
@@ -518,6 +518,7 @@ static const struct inode_operations proc_dir_inode_operations = {
static int proc_register(struct proc_dir_entry * dir, struct proc_dir_entry * dp)
{
unsigned int i;
+ struct proc_dir_entry *tmp;
i = get_inode_number();
if (i == 0)
@@ -536,6 +537,15 @@ static int proc_register(struct proc_dir_entry * dir, struct proc_dir_entry * dp
}
spin_lock(&proc_subdir_lock);
+
+ for (tmp = dir->subdir; tmp; tmp = tmp->next)
+ if (strcmp(tmp->name, dp->name) == 0) {
+ printk(KERN_WARNING "PDE '%s' already registered\n",
+ dp->name);
+ dump_stack();
+ break;
+ }
+
dp->next = dir->subdir;
dp->parent = dir;
dir->subdir = dp;
On Fri, 16 Nov 2007 18:08:40 +0300 Alexey Dobriyan wrote:
> Andrew, please drop procfs-detect-duplicate-names.patch and apply this
> instead.
> ------------
> [PATCH] proc: detect duplicate names on registration
>
> From: Zhang Rui <[email protected]>
>
> Print a warning if PDE is registered with a name which already exists in
> target directory.
>
> Bug report and a simple fix can be found here:
> http://bugzilla.kernel.org/show_bug.cgi?id=8798
>
> [\n fixlet and no undescriptive variable usage --adobriyan]
> Signed-off-by: Zhang Rui <[email protected]>
> Signed-off-by: Alexey Dobriyan <[email protected]>
> ---
>
> fs/proc/generic.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> --- a/fs/proc/generic.c
> +++ b/fs/proc/generic.c
> @@ -536,6 +537,15 @@ static int proc_register(struct proc_dir_entry * dir, struct proc_dir_entry * dp
> }
>
> spin_lock(&proc_subdir_lock);
> +
> + for (tmp = dir->subdir; tmp; tmp = tmp->next)
> + if (strcmp(tmp->name, dp->name) == 0) {
> + printk(KERN_WARNING "PDE '%s' already registered\n",
> + dp->name);
> + dump_stack();
> + break;
> + }
> +
Please just s/PDE/proc_dir_entry/.
---
~Randy