mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-27 12:57:53 +00:00
asm-generic: make sparse happy with odd-sized put_unaligned_*()
[ Upstream commit 1ab33c0314
]
__put_unaligned_be24() and friends use implicit casts to convert
larger-sized data to bytes, which trips sparse truncation warnings when
the argument is a constant:
CC [M] drivers/input/touchscreen/hynitron_cstxxx.o
CHECK drivers/input/touchscreen/hynitron_cstxxx.c
drivers/input/touchscreen/hynitron_cstxxx.c: note: in included file (through arch/x86/include/generated/asm/unaligned.h):
include/asm-generic/unaligned.h:119:16: warning: cast truncates bits from constant value (aa01a0 becomes a0)
include/asm-generic/unaligned.h:120:20: warning: cast truncates bits from constant value (aa01 becomes 1)
include/asm-generic/unaligned.h:119:16: warning: cast truncates bits from constant value (ab00d0 becomes d0)
include/asm-generic/unaligned.h:120:20: warning: cast truncates bits from constant value (ab00 becomes 0)
To avoid this let's mask off upper bits explicitly, the resulting code
should be exactly the same, but it will keep sparse happy.
Reported-by: kernel test robot <lkp@intel.com>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Closes: https://lore.kernel.org/oe-kbuild-all/202401070147.gqwVulOn-lkp@intel.com/
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
e5c3b988b8
commit
9e5c37e0fa
1 changed files with 12 additions and 12 deletions
|
@ -104,9 +104,9 @@ static inline u32 get_unaligned_le24(const void *p)
|
|||
|
||||
static inline void __put_unaligned_be24(const u32 val, u8 *p)
|
||||
{
|
||||
*p++ = val >> 16;
|
||||
*p++ = val >> 8;
|
||||
*p++ = val;
|
||||
*p++ = (val >> 16) & 0xff;
|
||||
*p++ = (val >> 8) & 0xff;
|
||||
*p++ = val & 0xff;
|
||||
}
|
||||
|
||||
static inline void put_unaligned_be24(const u32 val, void *p)
|
||||
|
@ -116,9 +116,9 @@ static inline void put_unaligned_be24(const u32 val, void *p)
|
|||
|
||||
static inline void __put_unaligned_le24(const u32 val, u8 *p)
|
||||
{
|
||||
*p++ = val;
|
||||
*p++ = val >> 8;
|
||||
*p++ = val >> 16;
|
||||
*p++ = val & 0xff;
|
||||
*p++ = (val >> 8) & 0xff;
|
||||
*p++ = (val >> 16) & 0xff;
|
||||
}
|
||||
|
||||
static inline void put_unaligned_le24(const u32 val, void *p)
|
||||
|
@ -128,12 +128,12 @@ static inline void put_unaligned_le24(const u32 val, void *p)
|
|||
|
||||
static inline void __put_unaligned_be48(const u64 val, u8 *p)
|
||||
{
|
||||
*p++ = val >> 40;
|
||||
*p++ = val >> 32;
|
||||
*p++ = val >> 24;
|
||||
*p++ = val >> 16;
|
||||
*p++ = val >> 8;
|
||||
*p++ = val;
|
||||
*p++ = (val >> 40) & 0xff;
|
||||
*p++ = (val >> 32) & 0xff;
|
||||
*p++ = (val >> 24) & 0xff;
|
||||
*p++ = (val >> 16) & 0xff;
|
||||
*p++ = (val >> 8) & 0xff;
|
||||
*p++ = val & 0xff;
|
||||
}
|
||||
|
||||
static inline void put_unaligned_be48(const u64 val, void *p)
|
||||
|
|
Loading…
Reference in a new issue