[SCSI] fcoe: fix fcoe module ref counting
authorVasu Dev <vasu.dev@intel.com>
Fri, 7 May 2010 22:19:03 +0000 (15:19 -0700)
committerJames Bottomley <James.Bottomley@suse.de>
Mon, 17 May 2010 02:22:40 +0000 (22:22 -0400)
Currently fcoe module ref count is used for tracking
active fcoe instances, it means each fcoe instance create
increments the count while destroy dec the count.

The dec is done only if fcoe instance is destroyed from
/sysfs but not if destroyed due to NETDEV_UNREGISTER event.
So this patch moves only module_put doing dec to common
fcoe_if_destroy function, so that dec would occur on ever
fcoe instance destroy.

Signed-off-by: Vasu Dev <vasu.dev@intel.com>
Signed-off-by: Robert Love <robert.w.love@intel.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
drivers/scsi/fcoe/fcoe.c

index 0c825c0944f70a4dcf8d30411785c9ad60f0c3a0..ba75a98c960c6f3957df4123b519e0395e3c30da 100644 (file)
@@ -851,6 +851,7 @@ static void fcoe_if_destroy(struct fc_lport *lport)
 
        /* Release the Scsi_Host */
        scsi_host_put(lport->host);
+       module_put(THIS_MODULE);
 }
 
 /**
@@ -2034,7 +2035,6 @@ static int fcoe_destroy(const char *buffer, struct kernel_param *kp)
        fcoe_interface_cleanup(fcoe);
        /* RTNL mutex is dropped by fcoe_if_destroy */
        fcoe_if_destroy(fcoe->ctlr.lp);
-       module_put(THIS_MODULE);
 
 out_putdev:
        dev_put(netdev);