Commit fd71da46 authored by Tony Battersby's avatar Tony Battersby Committed by Jeff Garzik

[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: default avatarJeff Garzik <jgarzik@pobox.com>
parent df7addbb
...@@ -2044,7 +2044,7 @@ static int atapi_qc_complete(struct ata_queued_cmd *qc, unsigned int err_mask) ...@@ -2044,7 +2044,7 @@ static int atapi_qc_complete(struct ata_queued_cmd *qc, unsigned int err_mask)
else { else {
u8 *scsicmd = cmd->cmnd; u8 *scsicmd = cmd->cmnd;
if (scsicmd[0] == INQUIRY) { if ((scsicmd[0] == INQUIRY) && ((scsicmd[1] & 0x03) == 0)) {
u8 *buf = NULL; u8 *buf = NULL;
unsigned int buflen; unsigned int buflen;
...@@ -2057,9 +2057,6 @@ static int atapi_qc_complete(struct ata_queued_cmd *qc, unsigned int err_mask) ...@@ -2057,9 +2057,6 @@ static int atapi_qc_complete(struct ata_queued_cmd *qc, unsigned int err_mask)
* to indicate to the Linux scsi midlayer this is a modern * to indicate to the Linux scsi midlayer this is a modern
* device. 2) Ensure response data format / ATAPI information * device. 2) Ensure response data format / ATAPI information
* are always correct. * are always correct.
*/
/* FIXME: do we ever override EVPD pages and the like, with
* this code?
*/ */
if (buf[2] == 0) { if (buf[2] == 0) {
buf[2] = 0x5; buf[2] = 0x5;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment