mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] HID: uclogic: Fix frame templates for big endian architectures
@ 2022-11-10 17:49 José Expósito
  2022-11-14 14:03 ` Jiri Kosina
  0 siblings, 1 reply; 2+ messages in thread
From: José Expósito @ 2022-11-10 17:49 UTC (permalink / raw)
  To: jikos
  Cc: benjamin.tissoires, linux-input, linux-kernel, José Expósito

When parsing a frame template with a placeholder indicating the number
of buttons present on the frame its value was incorrectly set on big
endian architectures due to double little endian conversion.

In order to reproduce the issue and verify the fix, run the HID KUnit
tests on the PowerPC architecture:

  $ ./tools/testing/kunit/kunit.py run --kunitconfig=drivers/hid \
    --arch=powerpc --cross_compile=powerpc64-linux-gnu-

Fixes: 867c89254425 ("HID: uclogic: Allow to generate frame templates")
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
---
 drivers/hid/hid-uclogic-rdesc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/hid/hid-uclogic-rdesc.c b/drivers/hid/hid-uclogic-rdesc.c
index 4bd54c4fb5b0..6b73eb0df6bd 100644
--- a/drivers/hid/hid-uclogic-rdesc.c
+++ b/drivers/hid/hid-uclogic-rdesc.c
@@ -1193,7 +1193,7 @@ __u8 *uclogic_rdesc_template_apply(const __u8 *template_ptr,
 			   p[sizeof(btn_head)] < param_num) {
 			v = param_list[p[sizeof(btn_head)]];
 			put_unaligned((__u8)0x2A, p); /* Usage Maximum */
-			put_unaligned_le16((__force u16)cpu_to_le16(v), p + 1);
+			put_unaligned((__force u16)cpu_to_le16(v), (s16 *)(p + 1));
 			p += sizeof(btn_head) + 1;
 		} else {
 			p++;
-- 
2.25.1


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] HID: uclogic: Fix frame templates for big endian architectures
  2022-11-10 17:49 [PATCH] HID: uclogic: Fix frame templates for big endian architectures José Expósito
@ 2022-11-14 14:03 ` Jiri Kosina
  0 siblings, 0 replies; 2+ messages in thread
From: Jiri Kosina @ 2022-11-14 14:03 UTC (permalink / raw)
  To: José Expósito; +Cc: benjamin.tissoires, linux-input, linux-kernel

On Thu, 10 Nov 2022, José Expósito wrote:

> When parsing a frame template with a placeholder indicating the number
> of buttons present on the frame its value was incorrectly set on big
> endian architectures due to double little endian conversion.
> 
> In order to reproduce the issue and verify the fix, run the HID KUnit
> tests on the PowerPC architecture:
> 
>   $ ./tools/testing/kunit/kunit.py run --kunitconfig=drivers/hid \
>     --arch=powerpc --cross_compile=powerpc64-linux-gnu-
> 
> Fixes: 867c89254425 ("HID: uclogic: Allow to generate frame templates")
> Signed-off-by: José Expósito <jose.exposito89@gmail.com>
> ---
>  drivers/hid/hid-uclogic-rdesc.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/hid/hid-uclogic-rdesc.c b/drivers/hid/hid-uclogic-rdesc.c
> index 4bd54c4fb5b0..6b73eb0df6bd 100644
> --- a/drivers/hid/hid-uclogic-rdesc.c
> +++ b/drivers/hid/hid-uclogic-rdesc.c
> @@ -1193,7 +1193,7 @@ __u8 *uclogic_rdesc_template_apply(const __u8 *template_ptr,
>  			   p[sizeof(btn_head)] < param_num) {
>  			v = param_list[p[sizeof(btn_head)]];
>  			put_unaligned((__u8)0x2A, p); /* Usage Maximum */
> -			put_unaligned_le16((__force u16)cpu_to_le16(v), p + 1);
> +			put_unaligned((__force u16)cpu_to_le16(v), (s16 *)(p + 1));
>  			p += sizeof(btn_head) + 1;
>  		} else {

Applied to hid.git#for-6.1/upstream-fixes, thanks José.

-- 
Jiri Kosina
SUSE Labs


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-11-14 14:04 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-10 17:49 [PATCH] HID: uclogic: Fix frame templates for big endian architectures José Expósito
2022-11-14 14:03 ` Jiri Kosina

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®