On Tue, Jan 22, 2019 at 03:35:37PM +0100, Greg Kroah-Hartman wrote: > When calling debugfs functions, there is no need to ever check the > return value. The function can work or not, but the code logic should > never do something different based on this. > > Cc: Thomas Gleixner <t...@linutronix.de> > Cc: Ingo Molnar <mi...@redhat.com> > Cc: Borislav Petkov <b...@alien8.de> > Cc: "H. Peter Anvin" <h...@zytor.com> > Cc: <x...@kernel.org> > Cc: Tony Luck <tony.l...@intel.com> > Cc: Vishal Verma <vishal.l.ve...@intel.com> > Cc: Pu Wen <pu...@hygon.cn> > Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org> > --- > arch/x86/kernel/cpu/mce/core.c | 15 ++++--------- > arch/x86/kernel/cpu/mce/inject.c | 34 +++++------------------------- > arch/x86/kernel/cpu/mce/severity.c | 14 +++--------- > 3 files changed, 12 insertions(+), 51 deletions(-) > > diff --git a/arch/x86/kernel/cpu/mce/core.c b/arch/x86/kernel/cpu/mce/core.c > index 672c7225cb1b..1f13f9032a8a 100644 > --- a/arch/x86/kernel/cpu/mce/core.c > +++ b/arch/x86/kernel/cpu/mce/core.c > @@ -2457,22 +2457,15 @@ static int fake_panic_set(void *data, u64 val) > DEFINE_SIMPLE_ATTRIBUTE(fake_panic_fops, fake_panic_get, > fake_panic_set, "%llu\n"); > > -static int __init mcheck_debugfs_init(void) > +static void __init mcheck_debugfs_init(void) > { > - struct dentry *dmce, *ffake_panic; > + struct dentry *dmce; > > dmce = mce_get_debugfs_dir(); > - if (!dmce) > - return -ENOMEM; > - ffake_panic = debugfs_create_file("fake_panic", 0444, dmce, NULL, > - &fake_panic_fops); > - if (!ffake_panic) > - return -ENOMEM; > - > - return 0; > + debugfs_create_file("fake_panic", 0444, dmce, NULL, &fake_panic_fops);
Right, for that I don't care if it fails or not... > #else > -static int __init mcheck_debugfs_init(void) { return -EINVAL; } > +static void __init mcheck_debugfs_init(void) { } > #endif > > DEFINE_STATIC_KEY_FALSE(mcsafe_key); > diff --git a/arch/x86/kernel/cpu/mce/inject.c > b/arch/x86/kernel/cpu/mce/inject.c > index 8492ef7d9015..0f5b6c57ffde 100644 > --- a/arch/x86/kernel/cpu/mce/inject.c > +++ b/arch/x86/kernel/cpu/mce/inject.c > @@ -648,7 +648,6 @@ static const struct file_operations readme_fops = { > > static struct dfs_node { > char *name; > - struct dentry *d; > const struct file_operations *fops; > umode_t perm; > } dfs_fls[] = { > @@ -662,7 +661,7 @@ static struct dfs_node { > { .name = "README", .fops = &readme_fops, .perm = S_IRUSR | S_IRGRP > | S_IROTH }, > }; > > -static int __init debugfs_init(void) > +static void __init debugfs_init(void) > { > unsigned int i; > u64 cap; > @@ -671,30 +670,11 @@ static int __init debugfs_init(void) > n_banks = cap & MCG_BANKCNT_MASK; > > dfs_inj = debugfs_create_dir("mce-inject", NULL); > - if (!dfs_inj) > - return -EINVAL; > - > - for (i = 0; i < ARRAY_SIZE(dfs_fls); i++) { > - dfs_fls[i].d = debugfs_create_file(dfs_fls[i].name, > - dfs_fls[i].perm, > - dfs_inj, > - &i_mce, > - dfs_fls[i].fops); > - > - if (!dfs_fls[i].d) > - goto err_dfs_add; > - } > - > - return 0; > > -err_dfs_add: > - while (i-- > 0) > - debugfs_remove(dfs_fls[i].d); > + for (i = 0; i < ARRAY_SIZE(dfs_fls); i++) > + debugfs_create_file(dfs_fls[i].name, dfs_fls[i].perm, dfs_inj, > + &i_mce, dfs_fls[i].fops); ... but that matters: if any of those debugfs files cannot be created for whatever reason, that injector module is useless because I can't inject MCEs properly. I mean, I like the simplification but ... -- Regards/Gruss, Boris. Good mailing practices for 400: avoid top-posting and trim the reply.