diff options
author | Tony Battersby <tonyb@cybernetics.com> | 2005-12-21 16:35:44 -0500 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-12-24 10:02:24 -0500 |
commit | fd71da468dd8897fe3f565dfd3743a87d8678e3a (patch) | |
tree | 77be514289e8d2cd897ff35ce02f5ee59e646bc7 | |
parent | df7addbb45874f0f992266003155de5a22e1872f (diff) | |
download | op-kernel-dev-fd71da468dd8897fe3f565dfd3743a87d8678e3a.zip op-kernel-dev-fd71da468dd8897fe3f565dfd3743a87d8678e3a.tar.gz |
[PATCH] fix libata inquiry VPD for ATAPI devices
The following patch prevents libata from incorrectly modifying inquiry
VPD pages and command support data from ATAPI devices. I have tested
the patch with a SATA ATAPI tape drive on an AHCI controller.
Patch is against kernel 2.4.32 with 2.4.32-libata1.patch applied.
Anthony J. Battersby
Cybernetics
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
-rw-r--r-- | drivers/scsi/libata-scsi.c | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/drivers/scsi/libata-scsi.c b/drivers/scsi/libata-scsi.c index 72ddba9..2282c04 100644 --- a/drivers/scsi/libata-scsi.c +++ b/drivers/scsi/libata-scsi.c @@ -2044,7 +2044,7 @@ static int atapi_qc_complete(struct ata_queued_cmd *qc, unsigned int err_mask) else { u8 *scsicmd = cmd->cmnd; - if (scsicmd[0] == INQUIRY) { + if ((scsicmd[0] == INQUIRY) && ((scsicmd[1] & 0x03) == 0)) { u8 *buf = NULL; unsigned int buflen; @@ -2058,9 +2058,6 @@ static int atapi_qc_complete(struct ata_queued_cmd *qc, unsigned int err_mask) * device. 2) Ensure response data format / ATAPI information * are always correct. */ - /* FIXME: do we ever override EVPD pages and the like, with - * this code? - */ if (buf[2] == 0) { buf[2] = 0x5; buf[3] = 0x32; |