Commit 6c7b7d2b authored by Jeff Garzik's avatar Jeff Garzik

[libata] Fix decoding of 6-byte commands

The code for parsing 6-byte SCSI command LBAs
missed the top 5 bits (the MSB).
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent ddfc87a0
...@@ -1050,14 +1050,15 @@ static unsigned int ata_scsi_flush_xlat(struct ata_queued_cmd *qc) ...@@ -1050,14 +1050,15 @@ static unsigned int ata_scsi_flush_xlat(struct ata_queued_cmd *qc)
static void scsi_6_lba_len(const u8 *cdb, u64 *plba, u32 *plen) static void scsi_6_lba_len(const u8 *cdb, u64 *plba, u32 *plen)
{ {
u64 lba = 0; u64 lba = 0;
u32 len = 0; u32 len;
VPRINTK("six-byte command\n"); VPRINTK("six-byte command\n");
lba |= ((u64)(cdb[1] & 0x1f)) << 16;
lba |= ((u64)cdb[2]) << 8; lba |= ((u64)cdb[2]) << 8;
lba |= ((u64)cdb[3]); lba |= ((u64)cdb[3]);
len |= ((u32)cdb[4]); len = cdb[4];
*plba = lba; *plba = lba;
*plen = len; *plen = len;
......
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