staging: dgap: new arguments to dgap_stop
authorSudip Mukherjee <sudipm.mukherjee@gmail.com>
Thu, 16 Jul 2015 12:58:19 +0000 (18:28 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 16 Jul 2015 17:19:55 +0000 (10:19 -0700)
In a later patch we will remove the duplicate codes. But the code also
needs to execute dgap_remove_driver_sysfiles() if it is being called
from dgap_remove_one() but if being called fron the error path of the
dgap_init_module() then the sysfiles should not be removed.

Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/dgap/dgap.c

index 8956228..4f07a0c 100644 (file)
@@ -7004,7 +7004,7 @@ static void dgap_cleanup_board(struct board_t *brd)
        kfree(brd);
 }
 
-static void dgap_stop(void)
+static void dgap_stop(bool removesys, struct pci_driver *drv)
 {
        unsigned long lock_flags;
 
@@ -7013,6 +7013,8 @@ static void dgap_stop(void)
        spin_unlock_irqrestore(&dgap_poll_lock, lock_flags);
 
        del_timer_sync(&dgap_poll_timer);
+       if (removesys)
+               dgap_remove_driver_sysfiles(drv);
 
        device_destroy(dgap_class, MKDEV(DIGI_DGAP_MAJOR, 0));
        class_destroy(dgap_class);
@@ -7134,7 +7136,7 @@ static int dgap_init_module(void)
 
        rc = pci_register_driver(&dgap_driver);
        if (rc) {
-               dgap_stop();
+               dgap_stop(false, NULL);
                return rc;
        }