diff options
-rw-r--r-- | fs/proc/generic.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/fs/proc/generic.c b/fs/proc/generic.c index 45d0076bc08e..3c6f5669523a 100644 --- a/fs/proc/generic.c +++ b/fs/proc/generic.c | |||
@@ -277,8 +277,11 @@ static int xlate_proc_name(const char *name, | |||
277 | int len; | 277 | int len; |
278 | int rtn = 0; | 278 | int rtn = 0; |
279 | 279 | ||
280 | de = *ret; | ||
281 | if (!de) | ||
282 | de = &proc_root; | ||
283 | |||
280 | spin_lock(&proc_subdir_lock); | 284 | spin_lock(&proc_subdir_lock); |
281 | de = &proc_root; | ||
282 | while (1) { | 285 | while (1) { |
283 | next = strchr(cp, '/'); | 286 | next = strchr(cp, '/'); |
284 | if (!next) | 287 | if (!next) |
@@ -582,7 +585,7 @@ static struct proc_dir_entry *__proc_create(struct proc_dir_entry **parent, | |||
582 | /* make sure name is valid */ | 585 | /* make sure name is valid */ |
583 | if (!name || !strlen(name)) goto out; | 586 | if (!name || !strlen(name)) goto out; |
584 | 587 | ||
585 | if (!(*parent) && xlate_proc_name(name, parent, &fn) != 0) | 588 | if (xlate_proc_name(name, parent, &fn) != 0) |
586 | goto out; | 589 | goto out; |
587 | 590 | ||
588 | /* At this point there must not be any '/' characters beyond *fn */ | 591 | /* At this point there must not be any '/' characters beyond *fn */ |
@@ -738,7 +741,7 @@ void remove_proc_entry(const char *name, struct proc_dir_entry *parent) | |||
738 | const char *fn = name; | 741 | const char *fn = name; |
739 | int len; | 742 | int len; |
740 | 743 | ||
741 | if (!parent && xlate_proc_name(name, &parent, &fn) != 0) | 744 | if (xlate_proc_name(name, &parent, &fn) != 0) |
742 | return; | 745 | return; |
743 | len = strlen(fn); | 746 | len = strlen(fn); |
744 | 747 | ||