scsi: lpfc: Fix debugfs root inode "lpfc" not getting deleted on driver unload.
authorJames Smart <jsmart2021@gmail.com>
Mon, 15 May 2017 22:20:48 +0000 (15:20 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 17 May 2017 01:23:13 +0000 (21:23 -0400)
commit667a7662529bf0afb1d84a32ceb0da0a875a3b6c
treef097be6baccc37a91aa9cbd26a7f8f1ca0cf5284
parent82820f0cf19aa62e2608c2909bd44e7a68268ff5
scsi: lpfc: Fix debugfs root inode "lpfc" not getting deleted on driver unload.

When unloading and reloading the driver, the driver fails to recreate
the lpfc root inode in the debugfs tree.

The driver is incorrectly removing the lpfc root inode in
lpfc_debugfs_terminate in the first driver instance that unloads and
then sets the lpfc_debugfs_root global parameter to NULL.  When the
final driver instance unloads, the debugfs calls quietly ignore the
remove on a NULL pointer.  The bug is that the debugfs_remove call
returns void so the driver doesn't know to correctly set the global
parameter to NULL.

Base the debugfs_remove of the lpfc_debugfs_root parameter on
lpfc_debugfs_hba_count because this parameter tracks the fnX instance
tracked per driver instance.

Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: James Smart <james.smart@broadcom.com>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/lpfc/lpfc_debugfs.c