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

Commit 8475f688 authored by Martin K. Petersen's avatar Martin K. Petersen Committed by James Bottomley
Browse files

[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: default avatarMartin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
parent 78d85019
Loading
Loading
Loading
Loading
+7 −10
Original line number Original line Diff line number Diff line
@@ -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))
		if ((cdb_len > 0) && (len != cdb_len))
				printk(", in_cdb_len=%d, ext_len=%d",
			printk(", in_cdb_len=%d, ext_len=%d", len, cdb_len);
				       len, cdb_len);

		}
		break;
		break;
	case MAINTENANCE_IN:
	case MAINTENANCE_IN:
		sa = cdbp[1] & 0x1f;
		sa = cdbp[1] & 0x1f;