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@xxxxxxxxx> > --- > 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