Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

[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
Loading
Loading
Loading
Loading
+1 −4
Original line number Original line Diff line number Diff line
@@ -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)
	 * 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;