diff mbox

[2/3] aic94xx: remove SCSI host before detaching from SAS transport

Message ID CAMGffEnkHVrUwFoHsttTc86HHJQtQukQd0mYjUuL3iuBXpU73w@mail.gmail.com (mailing list archive)
State Accepted, archived
Headers show

Commit Message

Jinpu Wang Nov. 4, 2015, 4:51 p.m. UTC
From 3aae177e7aa833339fa84ae5c60ed5f10056610d Mon Sep 17 00:00:00 2001
From: Jack Wang <jinpu.wang@profitbricks.com>
Date: Wed, 4 Nov 2015 10:01:41 +0100
Subject: [PATCH 2/3] aic94xx: remove SCSI host before detaching from SAS
 transport

commit cff549e4860f ("scsi: proper state checking and module refcount
handling in scsi_device_get")
the reference count of scsi device was changed, which could lead to
when rmmod with at least on drive attached, SCSI error handle will
run into infinite loop, and lockup the system.

Fix it by remove scsi host first, this way scsi core will not send
commands down after detaching SAS transport.

This is a follow up fix for Benjamin's fix for pm80xx.

See also:
http://www.spinics.net/lists/linux-scsi/msg90088.html

Signed-off-by: Jack Wang <jinpu.wang@profitbricks.com>
---
 drivers/scsi/aic94xx/aic94xx_init.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

  kfree(asd_ha->sas_ha.sas_phy);
diff mbox

Patch

diff --git a/drivers/scsi/aic94xx/aic94xx_init.c
b/drivers/scsi/aic94xx/aic94xx_init.c
index f6c336b..4b56976 100644
--- a/drivers/scsi/aic94xx/aic94xx_init.c
+++ b/drivers/scsi/aic94xx/aic94xx_init.c
@@ -704,10 +704,10 @@  static int asd_unregister_sas_ha(struct
asd_ha_struct *asd_ha)
 {
  int err;

+ scsi_remove_host(asd_ha->sas_ha.core.shost);
  err = sas_unregister_ha(&asd_ha->sas_ha);

  sas_remove_host(asd_ha->sas_ha.core.shost);
- scsi_remove_host(asd_ha->sas_ha.core.shost);
  scsi_host_put(asd_ha->sas_ha.core.shost);