ata: libata-scsi: Simplify ata_scsi_mode_select_xlat()
authorDamien Le Moal <damien.lemoal@opensource.wdc.com>
Tue, 25 Jan 2022 01:21:25 +0000 (10:21 +0900)
committerDamien Le Moal <damien.lemoal@opensource.wdc.com>
Mon, 31 Jan 2022 00:58:32 +0000 (09:58 +0900)
Use get_unaligned_be16() instead of using hardcoded accesses to
16-bits big endian cdb fields.

Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
Reviewed-by: Hannes Reinecke <hare@suse.de>
drivers/ata/libata-scsi.c

index c73e94c..515c559 100644 (file)
@@ -3672,7 +3672,7 @@ static unsigned int ata_scsi_mode_select_xlat(struct ata_queued_cmd *qc)
                        goto invalid_fld;
                }
 
-               len = (cdb[7] << 8) + cdb[8];
+               len = get_unaligned_be16(&cdb[7]);
                hdr_len = 8;
        }
 
@@ -3698,7 +3698,7 @@ static unsigned int ata_scsi_mode_select_xlat(struct ata_queued_cmd *qc)
        if (six_byte)
                bd_len = p[3];
        else
-               bd_len = (p[6] << 8) + p[7];
+               bd_len = get_unaligned_be16(&p[6]);
 
        len -= hdr_len;
        p += hdr_len;
@@ -3722,7 +3722,7 @@ static unsigned int ata_scsi_mode_select_xlat(struct ata_queued_cmd *qc)
                        goto invalid_param_len;
 
                spg = p[1];
-               pg_len = (p[2] << 8) | p[3];
+               pg_len = get_unaligned_be16(&p[2]);
                p += 4;
                len -= 4;
        } else {