visorchipset_file_cleanup() is called from visorchipset_exit() which is the module_exit function and this function is executing means module_init succeeded, so registered will always be true at this time. and majordev has also been initialized in the init function. hence these comparisons will always be true. Signed-off-by: Sudip Mukherjee <sudip@xxxxxxxxxxxxxxx> --- v4: messed up the subject in v3 v3: broke the previous patch in this series drivers/staging/unisys/visorchipset/file.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/drivers/staging/unisys/visorchipset/file.c b/drivers/staging/unisys/visorchipset/file.c index 9ca7f1e..cbed1ba2 100644 --- a/drivers/staging/unisys/visorchipset/file.c +++ b/drivers/staging/unisys/visorchipset/file.c @@ -81,13 +81,9 @@ visorchipset_file_cleanup(void) if (file_cdev.ops != NULL) cdev_del(&file_cdev); file_cdev.ops = NULL; - if (registered) { - if (MAJOR(majordev) >= 0) { - unregister_chrdev_region(majordev, 1); - majordev = MKDEV(0, 0); - } - registered = FALSE; - } + unregister_chrdev_region(majordev, 1); + majordev = MKDEV(0, 0); + registered = FALSE; } static int -- 1.8.1.2 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel