On 07/22/2014 10:51 PM, Mike Qiu wrote:
In ata_sas_port_alloc(), it haven't initialized scsi_host field in ata_port, although scsi_host is in parameters list and unused in this function. With commit 1871ee134b73 ("libata: support the ata host which implements a queue depth less than 32") ata_qc_new() try to use scsi_host, while it is a NULL pointer for ipr IOA and error message shows below:
...
While scsi_host is unused in ata_sas_port_alloc(), better to set it in ata_sas_port_alloc() instead of in driver. Signed-off-by: Mike Qiu <qiudayu@xxxxxxxxxxxxxxxxxx> --- drivers/ata/libata-scsi.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c index 0586f66..a472b6f 100644 --- a/drivers/ata/libata-scsi.c +++ b/drivers/ata/libata-scsi.c @@ -4070,6 +4070,7 @@ struct ata_port *ata_sas_port_alloc(struct ata_host *host, ap->flags |= port_info->flags; ap->ops = port_info->port_ops; ap->cbl = ATA_CBL_SATA; + ap->scsi_host = shost;
What about my patch itself, ata_sas_port_alloc() has "shot" in parameters list, but unused.
Maybe better to set ap->scsi_host here, it is very convenient, and drivers, like ipr, may forget to set this field, otherwise "shot" need to be removed from parameters list I think.
Thanks, Mike
return ap; }
-- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html