From: Alexey Dobriyan Before proc_register() all PDEs are created by proc_create() which doesn't set ->proc_iops and ->proc_fops -- they're NULL. So those branches in proc_register() are always taken. Signed-off-by: Alexey Dobriyan Signed-off-by: Andrew Morton --- fs/proc/generic.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff -puN fs/proc/generic.c~proc-remove-useless-checks-in-proc_register fs/proc/generic.c --- a/fs/proc/generic.c~proc-remove-useless-checks-in-proc_register +++ a/fs/proc/generic.c @@ -535,19 +535,14 @@ static int proc_register(struct proc_dir dp->low_ino = i; if (S_ISDIR(dp->mode)) { - if (dp->proc_iops == NULL) { - dp->proc_fops = &proc_dir_operations; - dp->proc_iops = &proc_dir_inode_operations; - } + dp->proc_fops = &proc_dir_operations; + dp->proc_iops = &proc_dir_inode_operations; dir->nlink++; } else if (S_ISLNK(dp->mode)) { - if (dp->proc_iops == NULL) - dp->proc_iops = &proc_link_inode_operations; + dp->proc_iops = &proc_link_inode_operations; } else if (S_ISREG(dp->mode)) { - if (dp->proc_fops == NULL) - dp->proc_fops = &proc_file_operations; - if (dp->proc_iops == NULL) - dp->proc_iops = &proc_file_inode_operations; + dp->proc_fops = &proc_file_operations; + dp->proc_iops = &proc_file_inode_operations; } spin_lock(&proc_subdir_lock); _