- Handled debugfs_create_dir failure in nsim_init() - Fixed return value of nsim_module_init() when debugfs_create_dir fails
Signed-off-by: Prashant Bhole <bhole_prashant...@lab.ntt.co.jp> --- drivers/net/netdevsim/netdev.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/drivers/net/netdevsim/netdev.c b/drivers/net/netdevsim/netdev.c index eb8c679fca9f..6c4e08f46bcb 100644 --- a/drivers/net/netdevsim/netdev.c +++ b/drivers/net/netdevsim/netdev.c @@ -147,10 +147,15 @@ struct device_type nsim_dev_type = { static int nsim_init(struct net_device *dev) { struct netdevsim *ns = netdev_priv(dev); - int err; + int err = -ENOMEM; ns->netdev = dev; ns->ddir = debugfs_create_dir(netdev_name(dev), nsim_ddir); + if (IS_ERR_OR_NULL(ns->ddir)) { + if (ns->ddir) + err = PTR_ERR(ns->ddir); + goto err; + } err = nsim_bpf_init(ns); if (err) @@ -171,6 +176,7 @@ static int nsim_init(struct net_device *dev) nsim_bpf_uninit(ns); err_debugfs_destroy: debugfs_remove_recursive(ns->ddir); +err: return err; } @@ -466,11 +472,14 @@ struct dentry *nsim_ddir; static int __init nsim_module_init(void) { - int err; + int err = -ENOMEM; nsim_ddir = debugfs_create_dir(DRV_NAME, NULL); - if (IS_ERR(nsim_ddir)) - return PTR_ERR(nsim_ddir); + if (IS_ERR_OR_NULL(nsim_ddir)) { + if (nsim_ddir) + err = PTR_ERR(nsim_ddir); + goto err; + } err = bus_register(&nsim_bus); if (err) @@ -486,6 +495,7 @@ static int __init nsim_module_init(void) bus_unregister(&nsim_bus); err_debugfs_destroy: debugfs_remove_recursive(nsim_ddir); +err: return err; } -- 2.13.6