[SCSI] Fix printing of variable length commands
We dereferenced the MAINTENANCE IN array when decoding variable length commands. Use the right array. Also consolidate identical if statements below. Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
This commit is contained in:
committed by
James Bottomley
parent
78d85019ba
commit
8475f688d7
@@ -219,18 +219,15 @@ static void print_opcode_name(unsigned char * cdbp, int cdb_len)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
sa = (cdbp[8] << 8) + cdbp[9];
|
sa = (cdbp[8] << 8) + cdbp[9];
|
||||||
name = get_sa_name(maint_in_arr, MAINT_IN_SZ, sa);
|
name = get_sa_name(variable_length_arr, VARIABLE_LENGTH_SZ, sa);
|
||||||
if (name) {
|
if (name)
|
||||||
printk("%s", name);
|
printk("%s", name);
|
||||||
if ((cdb_len > 0) && (len != cdb_len))
|
else
|
||||||
printk(", in_cdb_len=%d, ext_len=%d",
|
|
||||||
len, cdb_len);
|
|
||||||
} else {
|
|
||||||
printk("cdb[0]=0x%x, sa=0x%x", cdb0, sa);
|
printk("cdb[0]=0x%x, sa=0x%x", cdb0, sa);
|
||||||
if ((cdb_len > 0) && (len != cdb_len))
|
|
||||||
printk(", in_cdb_len=%d, ext_len=%d",
|
if ((cdb_len > 0) && (len != cdb_len))
|
||||||
len, cdb_len);
|
printk(", in_cdb_len=%d, ext_len=%d", len, cdb_len);
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case MAINTENANCE_IN:
|
case MAINTENANCE_IN:
|
||||||
sa = cdbp[1] & 0x1f;
|
sa = cdbp[1] & 0x1f;
|
||||||
|
Reference in New Issue
Block a user