crypto: atmel - Fix sparse endianness warnings
authorHerbert Xu <herbert@gondor.apana.org.au>
Fri, 31 May 2019 06:39:51 +0000 (14:39 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Thu, 6 Jun 2019 06:38:57 +0000 (14:38 +0800)
The param2 member in atmel_i2c_cmd is supposed to be little-endian
but was marked as u16.  This patch changes it to a __le16 which
reveals a missing endian swap in atmel_i2c_init_read_cmd.

Another missing little-endian marking is also added in
atmel_i2c_checksum.

Fixes: 11105693fa05 ("crypto: atmel-ecc - introduce Microchip...")
Reported-by: kbuild test robot <lkp@intel.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/atmel-i2c.c
drivers/crypto/atmel-i2c.h

index be49ab7f43380e408856779f5aa08b6808ea53da..dc876fab2882f3f88f858b5c56c419df5c23b42c 100644 (file)
@@ -34,7 +34,7 @@ static void atmel_i2c_checksum(struct atmel_i2c_cmd *cmd)
 {
        u8 *data = &cmd->count;
        size_t len = cmd->count - CRC_SIZE;
-       u16 *__crc16 = (u16 *)(data + len);
+       __le16 *__crc16 = (__le16 *)(data + len);
 
        *__crc16 = cpu_to_le16(bitrev16(crc16(0, data, len)));
 }
@@ -48,7 +48,7 @@ void atmel_i2c_init_read_cmd(struct atmel_i2c_cmd *cmd)
         * (UserExtra, Selector, LockValue, LockConfig).
         */
        cmd->param1 = CONFIG_ZONE;
-       cmd->param2 = DEVICE_LOCK_ADDR;
+       cmd->param2 = cpu_to_le16(DEVICE_LOCK_ADDR);
        cmd->count = READ_COUNT;
 
        atmel_i2c_checksum(cmd);
index c6bd43b78f33c135a26b71b39e0193fd5f93bf99..21860b99c3e35b8ce4985162714bf995e9af5ff8 100644 (file)
@@ -8,6 +8,7 @@
 #define __ATMEL_I2C_H__
 
 #include <linux/hw_random.h>
+#include <linux/types.h>
 
 #define ATMEL_ECC_PRIORITY             300
 
@@ -50,7 +51,7 @@ struct atmel_i2c_cmd {
        u8 count;
        u8 opcode;
        u8 param1;
-       u16 param2;
+       __le16 param2;
        u8 data[MAX_RSP_SIZE];
        u8 msecs;
        u16 rxsize;