summaryrefslogtreecommitdiffstats
path: root/drivers/ata/libata-scsi.c
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2010-11-19 17:04:25 +0900
committerPaul Mundt <lethal@linux-sh.org>2010-11-19 17:04:25 +0900
commitfe040be2fdc49a4132c5f64359c629aeeb8e4947 (patch)
tree40323a8f05d3754372f561bb8f4698ef1a4e9c8f /drivers/ata/libata-scsi.c
parent2006920a18cc9f499e5cccf9e6f1aa9f6120705e (diff)
parent6722a4016d7f5f107a82ad71a3ee1ccec105532f (diff)
downloadtalos-obmc-linux-fe040be2fdc49a4132c5f64359c629aeeb8e4947.tar.gz
talos-obmc-linux-fe040be2fdc49a4132c5f64359c629aeeb8e4947.zip
Merge branch 'common/fbdev-mipi' of master.kernel.org:/pub/scm/linux/kernel/git/lethal/sh-2.6
Diffstat (limited to 'drivers/ata/libata-scsi.c')
-rw-r--r--drivers/ata/libata-scsi.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c
index d050e073e570..19835d39289d 100644
--- a/drivers/ata/libata-scsi.c
+++ b/drivers/ata/libata-scsi.c
@@ -2552,8 +2552,11 @@ static void atapi_qc_complete(struct ata_queued_cmd *qc)
*
* If door lock fails, always clear sdev->locked to
* avoid this infinite loop.
+ *
+ * This may happen before SCSI scan is complete. Make
+ * sure qc->dev->sdev isn't NULL before dereferencing.
*/
- if (qc->cdb[0] == ALLOW_MEDIUM_REMOVAL)
+ if (qc->cdb[0] == ALLOW_MEDIUM_REMOVAL && qc->dev->sdev)
qc->dev->sdev->locked = 0;
qc->scsicmd->result = SAM_STAT_CHECK_CONDITION;
@@ -3180,7 +3183,7 @@ static inline int __ata_scsi_queuecmd(struct scsi_cmnd *scmd,
* Return value from __ata_scsi_queuecmd() if @cmd can be queued,
* 0 otherwise.
*/
-int ata_scsi_queuecmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *))
+static int ata_scsi_queuecmd_lck(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *))
{
struct ata_port *ap;
struct ata_device *dev;
@@ -3208,6 +3211,8 @@ int ata_scsi_queuecmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *))
return rc;
}
+DEF_SCSI_QCMD(ata_scsi_queuecmd)
+
/**
* ata_scsi_simulate - simulate SCSI command on ATA device
* @dev: the target device
OpenPOWER on IntegriCloud