Message ID | 20210412115302.95686-1-bence98@sch.bme.hu |
---|---|
State | New |
Headers | show |
Series | Fix 'assignment to __be16' warning | expand |
Hi Bence, On Mon, Apr 12, 2021 at 11:53:02AM +0000, Bence Csókás wrote: > While the preamble field _is_ technically big-endian, its value is always 0x2A2A, > which is the same in either endianness, therefore it should be u16 instead. Why should it be u16? I don't see it. I thought the fix would be to add the suffix 'U' to 0x2A2A when it is assigned to preamble? Also, please use "i2c: cp2615: <patch header>" in the $subject Happy hacking, Wolfram
On Mon, Apr 12, 2021 at 11:53:02AM +0000, Bence Csókás wrote: > While the preamble field _is_ technically big-endian, its value is always 0x2A2A, > which is the same in either endianness, therefore it should be u16 instead. Just replace the assignment with htons(0x2A2A) and be done with that - it's a constant expression and compiler will yield the same assembler.
diff --git a/drivers/i2c/busses/i2c-cp2615.c b/drivers/i2c/busses/i2c-cp2615.c index 78cfecd1ea76..2824f4ba7131 100644 --- a/drivers/i2c/busses/i2c-cp2615.c +++ b/drivers/i2c/busses/i2c-cp2615.c @@ -38,7 +38,9 @@ enum cp2615_iop_msg_type { }; struct __packed cp2615_iop_msg { - __be16 preamble, length, msg; + /* always 0x2A2A, which is the same in either endianness */ + u16 preamble; + __be16 length, msg; u8 data[MAX_IOP_PAYLOAD_SIZE]; };
While the preamble field _is_ technically big-endian, its value is always 0x2A2A, which is the same in either endianness, therefore it should be u16 instead. Signed-off-by: Bence Csókás <bence98@sch.bme.hu> --- drivers/i2c/busses/i2c-cp2615.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)