Thread (29 messages) 29 messages, 5 authors, 2012-03-06

Re: [PATCH v8 01/13] libsas: close scsi_remove_target() vs libata-eh race

From: Dan Williams <hidden>
Date: 2012-02-10 19:09:17
Also in: linux-scsi

On Fri, Feb 10, 2012 at 12:44 AM, Dan Williams [off-list ref] wrote:
quoted hunk ↗ jump to hunk
diff --git a/drivers/scsi/libsas/sas_ata.c b/drivers/scsi/libsas/sas_ata.c
index 37a9e73..852b1b1 100644
--- a/drivers/scsi/libsas/sas_ata.c
+++ b/drivers/scsi/libsas/sas_ata.c
@@ -661,6 +661,10 @@ static void async_sas_ata_eh(void *data, async_cookie_t cookie)
       struct ata_port *ap = dev->sata_dev.ap;
       struct sas_ha_struct *ha = dev->port->ha;

+       /* hold a reference over eh since we may be racing with final
+        * remove once all commands are completed
+        */
+       kref_get(&dev->kref);
       ata_port_printk(ap, KERN_DEBUG, "sas eh calling libata port error handler");
       ata_scsi_port_error_handler(ha->core.shost, ap);
The last rebase ate the matching call to "sas_put_device()" that needs
to be here.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help