Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

[PATCH] libata: fix ata_scsi_pass_thru error handling

This patch makes ata_scsi_pass_thru() properly set result code and
sense data on translation failures.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>

authored by

Tejun Heo and committed by
Jeff Garzik
9a405257 3b6efee9

+7 -2
+7 -2
drivers/scsi/libata-scsi.c
··· 2239 2239 struct scsi_cmnd *cmd = qc->scsicmd; 2240 2240 2241 2241 if ((tf->protocol = ata_scsi_map_proto(scsicmd[1])) == ATA_PROT_UNKNOWN) 2242 - return 1; 2242 + goto invalid_fld; 2243 2243 2244 2244 /* 2245 2245 * 12 and 16 byte CDBs use different offsets to ··· 2301 2301 */ 2302 2302 if ((tf->command == ATA_CMD_SET_FEATURES) 2303 2303 && (tf->feature == SETFEATURES_XFER)) 2304 - return 1; 2304 + goto invalid_fld; 2305 2305 2306 2306 /* 2307 2307 * Set flags so that all registers will be written, ··· 2322 2322 qc->nsect = cmd->bufflen / ATA_SECT_SIZE; 2323 2323 2324 2324 return 0; 2325 + 2326 + invalid_fld: 2327 + ata_scsi_set_sense(qc->scsicmd, ILLEGAL_REQUEST, 0x24, 0x00); 2328 + /* "Invalid field in cdb" */ 2329 + return 1; 2325 2330 } 2326 2331 2327 2332 /**