proc: remove a level of indentation in proc_get_inode
Just return early on inode allocation failure. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
Родитель
9123e3a74e
Коммит
f6ef7b7bb2
|
@ -619,42 +619,44 @@ struct inode *proc_get_inode(struct super_block *sb, struct proc_dir_entry *de)
|
|||
{
|
||||
struct inode *inode = new_inode(sb);
|
||||
|
||||
if (inode) {
|
||||
inode->i_ino = de->low_ino;
|
||||
inode->i_mtime = inode->i_atime = inode->i_ctime = current_time(inode);
|
||||
PROC_I(inode)->pde = de;
|
||||
if (!inode) {
|
||||
pde_put(de);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (is_empty_pde(de)) {
|
||||
make_empty_dir_inode(inode);
|
||||
return inode;
|
||||
}
|
||||
if (de->mode) {
|
||||
inode->i_mode = de->mode;
|
||||
inode->i_uid = de->uid;
|
||||
inode->i_gid = de->gid;
|
||||
}
|
||||
if (de->size)
|
||||
inode->i_size = de->size;
|
||||
if (de->nlink)
|
||||
set_nlink(inode, de->nlink);
|
||||
inode->i_ino = de->low_ino;
|
||||
inode->i_mtime = inode->i_atime = inode->i_ctime = current_time(inode);
|
||||
PROC_I(inode)->pde = de;
|
||||
if (is_empty_pde(de)) {
|
||||
make_empty_dir_inode(inode);
|
||||
return inode;
|
||||
}
|
||||
|
||||
if (S_ISREG(inode->i_mode)) {
|
||||
inode->i_op = de->proc_iops;
|
||||
inode->i_fop = &proc_reg_file_ops;
|
||||
if (de->mode) {
|
||||
inode->i_mode = de->mode;
|
||||
inode->i_uid = de->uid;
|
||||
inode->i_gid = de->gid;
|
||||
}
|
||||
if (de->size)
|
||||
inode->i_size = de->size;
|
||||
if (de->nlink)
|
||||
set_nlink(inode, de->nlink);
|
||||
|
||||
if (S_ISREG(inode->i_mode)) {
|
||||
inode->i_op = de->proc_iops;
|
||||
inode->i_fop = &proc_reg_file_ops;
|
||||
#ifdef CONFIG_COMPAT
|
||||
if (!de->proc_ops->proc_compat_ioctl) {
|
||||
inode->i_fop = &proc_reg_file_ops_no_compat;
|
||||
}
|
||||
if (!de->proc_ops->proc_compat_ioctl)
|
||||
inode->i_fop = &proc_reg_file_ops_no_compat;
|
||||
#endif
|
||||
} else if (S_ISDIR(inode->i_mode)) {
|
||||
inode->i_op = de->proc_iops;
|
||||
inode->i_fop = de->proc_dir_ops;
|
||||
} else if (S_ISLNK(inode->i_mode)) {
|
||||
inode->i_op = de->proc_iops;
|
||||
inode->i_fop = NULL;
|
||||
} else
|
||||
BUG();
|
||||
} else
|
||||
pde_put(de);
|
||||
} else if (S_ISDIR(inode->i_mode)) {
|
||||
inode->i_op = de->proc_iops;
|
||||
inode->i_fop = de->proc_dir_ops;
|
||||
} else if (S_ISLNK(inode->i_mode)) {
|
||||
inode->i_op = de->proc_iops;
|
||||
inode->i_fop = NULL;
|
||||
} else {
|
||||
BUG();
|
||||
}
|
||||
return inode;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче