On Mon, 2022-02-28 at 11:06 +0800, Meng Tang wrote: > Return the result from file->f_op->open() directly instead of > taking this in another redundant variable. [] > diff --git a/sound/sound_core.c b/sound/sound_core.c [] > @@ -582,13 +582,12 @@ static int soundcore_open(struct inode *inode, struct file *file) > * We rely upon the fact that we can't be unloaded while the > * subdriver is there. > */ > - int err = 0; > replace_fops(file, new_fops); > > if (file->f_op->open) > - err = file->f_op->open(inode,file); > + return file->f_op->open(inode, file); > > - return err; > + return 0; > } > return -ENODEV; > } Perhaps clearer would be to make the typical return the last statement, return early and reduce the indentation too. i.e.: --- sound/sound_core.c | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/sound/sound_core.c b/sound/sound_core.c index 90d118cd91641..9f2cd6d91a034 100644 --- a/sound/sound_core.c +++ b/sound/sound_core.c @@ -581,22 +581,20 @@ static int soundcore_open(struct inode *inode, struct file *file) new_fops = fops_get(s->unit_fops); } spin_unlock(&sound_loader_lock); - if (new_fops) { - /* - * We rely upon the fact that we can't be unloaded while the - * subdriver is there. - */ - int err = 0; - replace_fops(file, new_fops); + if (!new_fops) + return -ENODEV; - if (file->f_op->open) - err = file->f_op->open(inode,file); + /* + * We rely upon the fact that we can't be unloaded while the + * subdriver is there. + */ + replace_fops(file, new_fops); - return err; - } - return -ENODEV; -} + if (!file->f_op->open) + return -ENODEV; + return file->f_op->open(inode,file); +} MODULE_ALIAS_CHARDEV_MAJOR(SOUND_MAJOR); static void cleanup_oss_soundcore(void)