]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ata: ahci_ceva: Fix id array access in ceva_ahci_read_id()
authorDamien Le Moal <damien.lemoal@opensource.wdc.com>
Thu, 2 Dec 2021 06:27:08 +0000 (15:27 +0900)
committerDamien Le Moal <damien.lemoal@opensource.wdc.com>
Mon, 6 Dec 2021 01:07:47 +0000 (10:07 +0900)
ATA IDENTIFY command returns an array of le16 words. Accessing it as a
u16 array triggers the following sparse warning:

drivers/ata/ahci_ceva.c:107:33: warning: invalid assignment: &=
drivers/ata/ahci_ceva.c:107:33:    left side has type unsigned short
drivers/ata/ahci_ceva.c:107:33:    right side has type restricted __le16

Use a local variable to explicitly cast the id array to __le16 to avoid
this warning.

Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
drivers/ata/ahci_ceva.c

index 50b56cd0039d287267269250a04b184328e2159b..e9c7c07fd84c8f063d317aadd54e321afac327d3 100644 (file)
@@ -94,6 +94,7 @@ struct ceva_ahci_priv {
 static unsigned int ceva_ahci_read_id(struct ata_device *dev,
                                        struct ata_taskfile *tf, u16 *id)
 {
+       __le16 *__id = (__le16 *)id;
        u32 err_mask;
 
        err_mask = ata_do_dev_read_id(dev, tf, id);
@@ -103,7 +104,7 @@ static unsigned int ceva_ahci_read_id(struct ata_device *dev,
         * Since CEVA controller does not support device sleep feature, we
         * need to clear DEVSLP (bit 8) in word78 of the IDENTIFY DEVICE data.
         */
-       id[ATA_ID_FEATURE_SUPP] &= cpu_to_le16(~(1 << 8));
+       __id[ATA_ID_FEATURE_SUPP] &= cpu_to_le16(~(1 << 8));
 
        return 0;
 }