@@ -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);
}
}
@@ -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);
}
}
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@suse.de> --- drivers/scsi/pm8001/pm8001_hwi.c | 14 +------------- drivers/scsi/pm8001/pm80xx_hwi.c | 15 +-------------- 2 files changed, 2 insertions(+), 27 deletions(-)