pi433_init had "unregister_chrdev" called twice. Remove it using goto statements. Signed-off-by: Shahar Avidar <ikobh7@xxxxxxxxx> --- v2->v1: Followed by Dan Carpenter's <dan.carpenter@xxxxxxxxxx> comments: - Remove empty "fail" goto tag. - Reorder pi433 init & exit calls so they have reverse order. - Add "unreg_spi_drv" goto tag. - Check "debugfs_create_dir" return value. - Update "if" statments for consistency. drivers/staging/pi433/pi433_if.c | 33 +++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/drivers/staging/pi433/pi433_if.c b/drivers/staging/pi433/pi433_if.c index 62ce75b07bf0..47e0c51ffe2e 100644 --- a/drivers/staging/pi433/pi433_if.c +++ b/drivers/staging/pi433/pi433_if.c @@ -1399,25 +1399,32 @@ static int __init pi433_init(void) * Last, register the driver which manages those device numbers. */ status = alloc_chrdev_region(&pi433_devt, 0, N_PI433_MINORS, "pi433"); - if (status < 0) + if (status) return status; status = class_register(&pi433_class); - if (status) { - unregister_chrdev(MAJOR(pi433_devt), - pi433_spi_driver.driver.name); - return status; - } - - root_dir = debugfs_create_dir(KBUILD_MODNAME, NULL); + if (status) + goto unreg_chrdev; status = spi_register_driver(&pi433_spi_driver); - if (status < 0) { - class_unregister(&pi433_class); - unregister_chrdev(MAJOR(pi433_devt), - pi433_spi_driver.driver.name); + if (status) + goto unreg_class; + + root_dir = debugfs_create_dir(KBUILD_MODNAME, NULL); + if (IS_ERR(root_dir)) { + status = PTR_ERR(root_dir); + goto unreg_spi_drv; } + return 0; + +unreg_spi_drv: + spi_unregister_driver(&pi433_spi_driver); +unreg_class: + class_unregister(&pi433_class); +unreg_chrdev: + unregister_chrdev(MAJOR(pi433_devt), pi433_spi_driver.driver.name); + return status; } @@ -1425,10 +1432,10 @@ module_init(pi433_init); static void __exit pi433_exit(void) { + debugfs_remove(root_dir); spi_unregister_driver(&pi433_spi_driver); class_unregister(&pi433_class); unregister_chrdev(MAJOR(pi433_devt), pi433_spi_driver.driver.name); - debugfs_remove(root_dir); } module_exit(pi433_exit); -- 2.34.1