Message ID | 20190122151422.14204-3-gregkh@linuxfoundation.org (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Herbert Xu |
Headers | show |
Series | crypto: cleanup debugfs usage | expand |
Hi, On Tue, Jan 22, 2019 at 5:14 PM Greg Kroah-Hartman <gregkh@linuxfoundation.org> 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. I get the part about not failing loading the driver just because some debugs entry isn't available, but wont it be weird if debugfs_create_dir() fails but debugfs_create_regset32() succeeds and we suddenly have weird files in the debugfs root dir? Not the end of the world of course but maybe it's better to avoid trying to create the files if the directory is not available? Thanks, Gilad > > Cc: Yael Chemla <yael.chemla@foss.arm.com> > Cc: Gilad Ben-Yossef <gilad@benyossef.com> > Cc: Herbert Xu <herbert@gondor.apana.org.au> > Cc: "David S. Miller" <davem@davemloft.net> > Cc: linux-crypto@vger.kernel.org > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > --- > drivers/crypto/ccree/cc_debugfs.c | 22 +++------------------- > drivers/crypto/ccree/cc_debugfs.h | 8 ++------ > drivers/crypto/ccree/cc_driver.c | 7 +------ > 3 files changed, 6 insertions(+), 31 deletions(-) > > diff --git a/drivers/crypto/ccree/cc_debugfs.c b/drivers/crypto/ccree/cc_debugfs.c > index 5ca184e42483..5fa05a7bcf36 100644 > --- a/drivers/crypto/ccree/cc_debugfs.c > +++ b/drivers/crypto/ccree/cc_debugfs.c > @@ -39,11 +39,9 @@ static struct debugfs_reg32 debug_regs[] = { > CC_DEBUG_REG(AXIM_MON_COMP), > }; > > -int __init cc_debugfs_global_init(void) > +void __init cc_debugfs_global_init(void) > { > cc_debugfs_dir = debugfs_create_dir("ccree", NULL); > - > - return !cc_debugfs_dir; > } > > void __exit cc_debugfs_global_fini(void) > @@ -56,7 +54,6 @@ int cc_debugfs_init(struct cc_drvdata *drvdata) > struct device *dev = drvdata_to_dev(drvdata); > struct cc_debugfs_ctx *ctx; > struct debugfs_regset32 *regset; > - struct dentry *file; > > debug_regs[0].offset = drvdata->sig_offset; > debug_regs[1].offset = drvdata->ver_offset; > @@ -74,22 +71,9 @@ int cc_debugfs_init(struct cc_drvdata *drvdata) > regset->base = drvdata->cc_base; > > ctx->dir = debugfs_create_dir(drvdata->plat_dev->name, cc_debugfs_dir); > - if (!ctx->dir) > - return -ENFILE; > - > - file = debugfs_create_regset32("regs", 0400, ctx->dir, regset); > - if (!file) { > - debugfs_remove(ctx->dir); > - return -ENFILE; > - } > > - file = debugfs_create_bool("coherent", 0400, ctx->dir, > - &drvdata->coherent); > - > - if (!file) { > - debugfs_remove_recursive(ctx->dir); > - return -ENFILE; > - } > + debugfs_create_regset32("regs", 0400, ctx->dir, regset); > + debugfs_create_bool("coherent", 0400, ctx->dir, &drvdata->coherent); > > drvdata->debugfs = ctx; > > diff --git a/drivers/crypto/ccree/cc_debugfs.h b/drivers/crypto/ccree/cc_debugfs.h > index 5b5320eca7d2..01cbd9a95659 100644 > --- a/drivers/crypto/ccree/cc_debugfs.h > +++ b/drivers/crypto/ccree/cc_debugfs.h > @@ -5,7 +5,7 @@ > #define __CC_DEBUGFS_H__ > > #ifdef CONFIG_DEBUG_FS > -int cc_debugfs_global_init(void); > +void cc_debugfs_global_init(void); > void cc_debugfs_global_fini(void); > > int cc_debugfs_init(struct cc_drvdata *drvdata); > @@ -13,11 +13,7 @@ void cc_debugfs_fini(struct cc_drvdata *drvdata); > > #else > > -static inline int cc_debugfs_global_init(void) > -{ > - return 0; > -} > - > +static inline void cc_debugfs_global_init(void) {} > static inline void cc_debugfs_global_fini(void) {} > > static inline int cc_debugfs_init(struct cc_drvdata *drvdata) > diff --git a/drivers/crypto/ccree/cc_driver.c b/drivers/crypto/ccree/cc_driver.c > index 8ada308d72ee..662738e53ced 100644 > --- a/drivers/crypto/ccree/cc_driver.c > +++ b/drivers/crypto/ccree/cc_driver.c > @@ -538,13 +538,8 @@ static struct platform_driver ccree_driver = { > > static int __init ccree_init(void) > { > - int ret; > - > cc_hash_global_init(); > - > - ret = cc_debugfs_global_init(); > - if (ret) > - return ret; > + cc_debugfs_global_init(); > > return platform_driver_register(&ccree_driver); > } > -- > 2.20.1 >
On Wed, Jan 23, 2019 at 02:58:22PM +0200, Gilad Ben-Yossef wrote: > Hi, > > On Tue, Jan 22, 2019 at 5:14 PM Greg Kroah-Hartman > <gregkh@linuxfoundation.org> 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. > > > > I get the part about not failing loading the driver just because some > debugs entry isn't available, but wont it be weird if > debugfs_create_dir() fails but debugfs_create_regset32() succeeds and > we suddenly have weird files in the debugfs root dir? > Not the end of the world of course but maybe it's better to avoid > trying to create the files if the directory is not available? See this patch to handle that theoretical issue: https://lore.kernel.org/lkml/20190123130917.GZ4087@dhcp22.suse.cz/T/#me91cc3d16185be13d64f85c8477c543cbda9baf6 thanks, greg k-h
On Wed, Jan 23, 2019 at 3:37 PM Greg Kroah-Hartman <gregkh@linuxfoundation.org> wrote: > > On Wed, Jan 23, 2019 at 02:58:22PM +0200, Gilad Ben-Yossef wrote: > > Hi, > > > > On Tue, Jan 22, 2019 at 5:14 PM Greg Kroah-Hartman > > <gregkh@linuxfoundation.org> 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. > > > > > > > > I get the part about not failing loading the driver just because some > > debugs entry isn't available, but wont it be weird if > > debugfs_create_dir() fails but debugfs_create_regset32() succeeds and > > we suddenly have weird files in the debugfs root dir? > > Not the end of the world of course but maybe it's better to avoid > > trying to create the files if the directory is not available? > > See this patch to handle that theoretical issue: > > https://lore.kernel.org/lkml/20190123130917.GZ4087@dhcp22.suse.cz/T/#me91cc3d16185be13d64f85c8477c543cbda9baf6 > Ah, sorry. I've missed that. Acked-By: Gilad Ben-Yossef <gilad@benyossef.com> Thanks! Gilad
diff --git a/drivers/crypto/ccree/cc_debugfs.c b/drivers/crypto/ccree/cc_debugfs.c index 5ca184e42483..5fa05a7bcf36 100644 --- a/drivers/crypto/ccree/cc_debugfs.c +++ b/drivers/crypto/ccree/cc_debugfs.c @@ -39,11 +39,9 @@ static struct debugfs_reg32 debug_regs[] = { CC_DEBUG_REG(AXIM_MON_COMP), }; -int __init cc_debugfs_global_init(void) +void __init cc_debugfs_global_init(void) { cc_debugfs_dir = debugfs_create_dir("ccree", NULL); - - return !cc_debugfs_dir; } void __exit cc_debugfs_global_fini(void) @@ -56,7 +54,6 @@ int cc_debugfs_init(struct cc_drvdata *drvdata) struct device *dev = drvdata_to_dev(drvdata); struct cc_debugfs_ctx *ctx; struct debugfs_regset32 *regset; - struct dentry *file; debug_regs[0].offset = drvdata->sig_offset; debug_regs[1].offset = drvdata->ver_offset; @@ -74,22 +71,9 @@ int cc_debugfs_init(struct cc_drvdata *drvdata) regset->base = drvdata->cc_base; ctx->dir = debugfs_create_dir(drvdata->plat_dev->name, cc_debugfs_dir); - if (!ctx->dir) - return -ENFILE; - - file = debugfs_create_regset32("regs", 0400, ctx->dir, regset); - if (!file) { - debugfs_remove(ctx->dir); - return -ENFILE; - } - file = debugfs_create_bool("coherent", 0400, ctx->dir, - &drvdata->coherent); - - if (!file) { - debugfs_remove_recursive(ctx->dir); - return -ENFILE; - } + debugfs_create_regset32("regs", 0400, ctx->dir, regset); + debugfs_create_bool("coherent", 0400, ctx->dir, &drvdata->coherent); drvdata->debugfs = ctx; diff --git a/drivers/crypto/ccree/cc_debugfs.h b/drivers/crypto/ccree/cc_debugfs.h index 5b5320eca7d2..01cbd9a95659 100644 --- a/drivers/crypto/ccree/cc_debugfs.h +++ b/drivers/crypto/ccree/cc_debugfs.h @@ -5,7 +5,7 @@ #define __CC_DEBUGFS_H__ #ifdef CONFIG_DEBUG_FS -int cc_debugfs_global_init(void); +void cc_debugfs_global_init(void); void cc_debugfs_global_fini(void); int cc_debugfs_init(struct cc_drvdata *drvdata); @@ -13,11 +13,7 @@ void cc_debugfs_fini(struct cc_drvdata *drvdata); #else -static inline int cc_debugfs_global_init(void) -{ - return 0; -} - +static inline void cc_debugfs_global_init(void) {} static inline void cc_debugfs_global_fini(void) {} static inline int cc_debugfs_init(struct cc_drvdata *drvdata) diff --git a/drivers/crypto/ccree/cc_driver.c b/drivers/crypto/ccree/cc_driver.c index 8ada308d72ee..662738e53ced 100644 --- a/drivers/crypto/ccree/cc_driver.c +++ b/drivers/crypto/ccree/cc_driver.c @@ -538,13 +538,8 @@ static struct platform_driver ccree_driver = { static int __init ccree_init(void) { - int ret; - cc_hash_global_init(); - - ret = cc_debugfs_global_init(); - if (ret) - return ret; + cc_debugfs_global_init(); return platform_driver_register(&ccree_driver); }
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: Yael Chemla <yael.chemla@foss.arm.com> Cc: Gilad Ben-Yossef <gilad@benyossef.com> Cc: Herbert Xu <herbert@gondor.apana.org.au> Cc: "David S. Miller" <davem@davemloft.net> Cc: linux-crypto@vger.kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> --- drivers/crypto/ccree/cc_debugfs.c | 22 +++------------------- drivers/crypto/ccree/cc_debugfs.h | 8 ++------ drivers/crypto/ccree/cc_driver.c | 7 +------ 3 files changed, 6 insertions(+), 31 deletions(-)