diff options
Diffstat (limited to 'fs/proc/generic.c')
-rw-r--r-- | fs/proc/generic.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/fs/proc/generic.c b/fs/proc/generic.c index e37ea3e53de8..b9dd3628d43a 100644 --- a/fs/proc/generic.c +++ b/fs/proc/generic.c | |||
@@ -521,6 +521,7 @@ static const struct inode_operations proc_dir_inode_operations = { | |||
521 | static int proc_register(struct proc_dir_entry * dir, struct proc_dir_entry * dp) | 521 | static int proc_register(struct proc_dir_entry * dir, struct proc_dir_entry * dp) |
522 | { | 522 | { |
523 | unsigned int i; | 523 | unsigned int i; |
524 | struct proc_dir_entry *tmp; | ||
524 | 525 | ||
525 | i = get_inode_number(); | 526 | i = get_inode_number(); |
526 | if (i == 0) | 527 | if (i == 0) |
@@ -544,6 +545,15 @@ static int proc_register(struct proc_dir_entry * dir, struct proc_dir_entry * dp | |||
544 | } | 545 | } |
545 | 546 | ||
546 | spin_lock(&proc_subdir_lock); | 547 | spin_lock(&proc_subdir_lock); |
548 | |||
549 | for (tmp = dir->subdir; tmp; tmp = tmp->next) | ||
550 | if (strcmp(tmp->name, dp->name) == 0) { | ||
551 | printk(KERN_WARNING "proc_dir_entry '%s' already " | ||
552 | "registered\n", dp->name); | ||
553 | dump_stack(); | ||
554 | break; | ||
555 | } | ||
556 | |||
547 | dp->next = dir->subdir; | 557 | dp->next = dir->subdir; |
548 | dp->parent = dir; | 558 | dp->parent = dir; |
549 | dir->subdir = dp; | 559 | dir->subdir = dp; |