aboutsummaryrefslogtreecommitdiffstats
path: root/fs/proc/generic.c
diff options
context:
space:
mode:
authorAlexey Dobriyan <adobriyan@gmail.com>2008-04-29 04:01:41 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2008-04-29 11:06:18 -0400
commit5e971dce0b2f6896e02372512df0d1fb0bfe2d55 (patch)
treebce0356470331c49c92b87042103034e55beaa8e /fs/proc/generic.c
parent7cee4e00e0f8aa7290266382ea903a5a1b92c9a1 (diff)
proc: drop several "PDE valid/invalid" checks
proc-misc code is noticeably full of "if (de)" checks when PDE passed is always valid. Remove them. Addition of such check in proc_lookup_de() is for failed lookup case. Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/proc/generic.c')
-rw-r--r--fs/proc/generic.c33
1 files changed, 14 insertions, 19 deletions
diff --git a/fs/proc/generic.c b/fs/proc/generic.c
index 3c6f5669523a..8b406e21a258 100644
--- a/fs/proc/generic.c
+++ b/fs/proc/generic.c
@@ -388,20 +388,18 @@ struct dentry *proc_lookup_de(struct proc_dir_entry *de, struct inode *dir,
388 388
389 lock_kernel(); 389 lock_kernel();
390 spin_lock(&proc_subdir_lock); 390 spin_lock(&proc_subdir_lock);
391 if (de) { 391 for (de = de->subdir; de ; de = de->next) {
392 for (de = de->subdir; de ; de = de->next) { 392 if (de->namelen != dentry->d_name.len)
393 if (de->namelen != dentry->d_name.len) 393 continue;
394 continue; 394 if (!memcmp(dentry->d_name.name, de->name, de->namelen)) {
395 if (!memcmp(dentry->d_name.name, de->name, de->namelen)) { 395 unsigned int ino;
396 unsigned int ino; 396
397 397 ino = de->low_ino;
398 ino = de->low_ino; 398 de_get(de);
399 de_get(de); 399 spin_unlock(&proc_subdir_lock);
400 spin_unlock(&proc_subdir_lock); 400 error = -EINVAL;
401 error = -EINVAL; 401 inode = proc_get_inode(dir->i_sb, ino, de);
402 inode = proc_get_inode(dir->i_sb, ino, de); 402 goto out_unlock;
403 goto out_unlock;
404 }
405 } 403 }
406 } 404 }
407 spin_unlock(&proc_subdir_lock); 405 spin_unlock(&proc_subdir_lock);
@@ -413,7 +411,8 @@ out_unlock:
413 d_add(dentry, inode); 411 d_add(dentry, inode);
414 return NULL; 412 return NULL;
415 } 413 }
416 de_put(de); 414 if (de)
415 de_put(de);
417 return ERR_PTR(error); 416 return ERR_PTR(error);
418} 417}
419 418
@@ -443,10 +442,6 @@ int proc_readdir_de(struct proc_dir_entry *de, struct file *filp, void *dirent,
443 lock_kernel(); 442 lock_kernel();
444 443
445 ino = inode->i_ino; 444 ino = inode->i_ino;
446 if (!de) {
447 ret = -EINVAL;
448 goto out;
449 }
450 i = filp->f_pos; 445 i = filp->f_pos;
451 switch (i) { 446 switch (i) {
452 case 0: 447 case 0: