[SCSI] Fix printing of variable length commands
authorMartin K. Petersen <martin.petersen@ORACLE.COM>
Wed, 20 Jan 2010 07:17:40 +0000 (02:17 -0500)
committerJames Bottomley <James.Bottomley@suse.de>
Fri, 19 Feb 2010 17:14:11 +0000 (11:14 -0600)
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>
drivers/scsi/constants.c

index 9129bcf..7092ff6 100644 (file)
@@ -219,18 +219,15 @@ static void print_opcode_name(unsigned char * cdbp, int cdb_len)
                        break;
                }
                sa = (cdbp[8] << 8) + cdbp[9];
-               name = get_sa_name(maint_in_arr, MAINT_IN_SZ, sa);
-               if (name) {
+               name = get_sa_name(variable_length_arr, VARIABLE_LENGTH_SZ, sa);
+               if (name)
                        printk("%s", name);
-                       if ((cdb_len > 0) && (len != cdb_len))
-                               printk(", in_cdb_len=%d, ext_len=%d",
-                                      len, cdb_len);
-               } else {
+               else
                        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",
-                                      len, cdb_len);
-               }
+
+               if ((cdb_len > 0) && (len != cdb_len))
+                       printk(", in_cdb_len=%d, ext_len=%d", len, cdb_len);
+
                break;
        case MAINTENANCE_IN:
                sa = cdbp[1] & 0x1f;