aboutsummaryrefslogtreecommitdiffstats
path: root/fs/inode.c
diff options
context:
space:
mode:
authorMateusz Guzik <mjguzik@gmail.com>2025-09-09 09:54:58 +0200
committerChristian Brauner <brauner@kernel.org>2025-09-15 14:28:37 +0200
commitaf67f4c1cd0730810521ef4bc194c21ac3683d97 (patch)
treeec4de056a7459f064d08614843f6cb3dad1e18a6 /fs/inode.c
parent796667c9dc94ef9431d4ac620021527b273080e1 (diff)
downloadrandom-af67f4c1cd0730810521ef4bc194c21ac3683d97.tar.gz
fs: use the switch statement in init_special_inode()
Similar to may_open(). No functional changes. Signed-off-by: Mateusz Guzik <mjguzik@gmail.com> Reviewed-by: Jan Kara <jack@suse.cz> Signed-off-by: Christian Brauner <brauner@kernel.org>
Diffstat (limited to 'fs/inode.c')
-rw-r--r--fs/inode.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/fs/inode.c b/fs/inode.c
index cc0f717a140d3e..7b81d4a101b8c7 100644
--- a/fs/inode.c
+++ b/fs/inode.c
@@ -2518,21 +2518,28 @@ void __init inode_init(void)
void init_special_inode(struct inode *inode, umode_t mode, dev_t rdev)
{
inode->i_mode = mode;
- if (S_ISCHR(mode)) {
+ switch (inode->i_mode & S_IFMT) {
+ case S_IFCHR:
inode->i_fop = &def_chr_fops;
inode->i_rdev = rdev;
- } else if (S_ISBLK(mode)) {
+ break;
+ case S_IFBLK:
if (IS_ENABLED(CONFIG_BLOCK))
inode->i_fop = &def_blk_fops;
inode->i_rdev = rdev;
- } else if (S_ISFIFO(mode))
+ break;
+ case S_IFIFO:
inode->i_fop = &pipefifo_fops;
- else if (S_ISSOCK(mode))
- ; /* leave it no_open_fops */
- else
+ break;
+ case S_IFSOCK:
+ /* leave it no_open_fops */
+ break;
+ default:
printk(KERN_DEBUG "init_special_inode: bogus i_mode (%o) for"
" inode %s:%lu\n", mode, inode->i_sb->s_id,
inode->i_ino);
+ break;
+ }
}
EXPORT_SYMBOL(init_special_inode);