The pm8001 driver assumes that libsas does not provide any domain devices for SATA, which is actually not true. So use the libsas-provided domain devices for SATA and don't allocate private ones. Signed-off-by: Hannes Reinecke <hare@xxxxxxx> --- drivers/scsi/pm8001/pm8001_hwi.c | 14 +------------- drivers/scsi/pm8001/pm80xx_hwi.c | 15 +-------------- 2 files changed, 2 insertions(+), 27 deletions(-) diff --git a/drivers/scsi/pm8001/pm8001_hwi.c b/drivers/scsi/pm8001/pm8001_hwi.c index 49bf2f70a470..3998fcd69acb 100644 --- a/drivers/scsi/pm8001/pm8001_hwi.c +++ b/drivers/scsi/pm8001/pm8001_hwi.c @@ -1749,7 +1749,7 @@ static void pm8001_send_read_log(struct pm8001_hba_info *pm8001_ha, struct pm8001_ccb_info *ccb; struct sas_task *task = NULL; struct host_to_dev_fis fis; - struct domain_device *dev; + struct domain_device *dev = pm8001_ha_dev->sas_device; struct inbound_queue_table *circularQ; u32 opc = OPC_INB_SATA_HOST_OPSTART; @@ -1768,17 +1768,6 @@ static void pm8001_send_read_log(struct pm8001_hba_info *pm8001_ha, return; } - /* allocate domain device by ourselves as libsas - * is not going to provide any - */ - dev = kzalloc(sizeof(struct domain_device), GFP_ATOMIC); - if (!dev) { - sas_free_task(task); - pm8001_tag_free(pm8001_ha, ccb_tag); - pm8001_dbg(pm8001_ha, FAIL, - "Domain device cannot be allocated\n"); - return; - } task->dev = dev; task->dev->lldd_dev = pm8001_ha_dev; @@ -1810,7 +1799,6 @@ static void pm8001_send_read_log(struct pm8001_hba_info *pm8001_ha, if (res) { sas_free_task(task); pm8001_tag_free(pm8001_ha, ccb_tag); - kfree(dev); } } diff --git a/drivers/scsi/pm8001/pm80xx_hwi.c b/drivers/scsi/pm8001/pm80xx_hwi.c index 84315560e8e1..bc1929b230c4 100644 --- a/drivers/scsi/pm8001/pm80xx_hwi.c +++ b/drivers/scsi/pm8001/pm80xx_hwi.c @@ -1824,7 +1824,7 @@ static void pm80xx_send_read_log(struct pm8001_hba_info *pm8001_ha, struct pm8001_ccb_info *ccb; struct sas_task *task = NULL; struct host_to_dev_fis fis; - struct domain_device *dev; + struct domain_device *dev = pm8001_ha_dev->sas_device; struct inbound_queue_table *circularQ; u32 opc = OPC_INB_SATA_HOST_OPSTART; @@ -1843,18 +1843,6 @@ static void pm80xx_send_read_log(struct pm8001_hba_info *pm8001_ha, return; } - /* allocate domain device by ourselves as libsas - * is not going to provide any - */ - dev = kzalloc(sizeof(struct domain_device), GFP_ATOMIC); - if (!dev) { - sas_free_task(task); - pm8001_tag_free(pm8001_ha, ccb_tag); - pm8001_dbg(pm8001_ha, FAIL, - "Domain device cannot be allocated\n"); - return; - } - task->dev = dev; task->dev->lldd_dev = pm8001_ha_dev; @@ -1888,7 +1876,6 @@ static void pm80xx_send_read_log(struct pm8001_hba_info *pm8001_ha, if (res) { sas_free_task(task); pm8001_tag_free(pm8001_ha, ccb_tag); - kfree(dev); } } -- 2.29.2