Re: [PATCH] Input: focaltech - use explicitly signed char type

From: Hans de Goede
Date: Sat Mar 18 2023 - 12:44:02 EST


Hi,

On 3/18/23 14:30, Jason A. Donenfeld wrote:
> The recent change of -funsigned-char causes additions of negative
> numbers to become additions of large positive numbers, leading to wrong
> calculations of mouse movement. Change these casts to be explictly
> signed, to take into account negative offsets.
>
> Fixes: 3bc753c06dd0 ("kbuild: treat char as always unsigned")
> Cc: stable@xxxxxxxxxxxxxxx
> Cc: regressions@xxxxxxxxxxxxx
> Cc: barry@xxxxxxxxxxxxxxxx
> Signed-off-by: Jason A. Donenfeld <Jason@xxxxxxxxx>
> ---
> Wrote this patch from my phone, untested, so it would be nice if
> somebody with hardware could confirm it works.

Thanks, patch looks good to me:

Reviewed-by: Hans de Goede <hdegoede@xxxxxxxxxx>

Regards,

Hans


>
> drivers/input/mouse/focaltech.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/input/mouse/focaltech.c b/drivers/input/mouse/focaltech.c
> index 6fd5fff0cbff..3dbad0d8e8c9 100644
> --- a/drivers/input/mouse/focaltech.c
> +++ b/drivers/input/mouse/focaltech.c
> @@ -202,8 +202,8 @@ static void focaltech_process_rel_packet(struct psmouse *psmouse,
> state->pressed = packet[0] >> 7;
> finger1 = ((packet[0] >> 4) & 0x7) - 1;
> if (finger1 < FOC_MAX_FINGERS) {
> - state->fingers[finger1].x += (char)packet[1];
> - state->fingers[finger1].y += (char)packet[2];
> + state->fingers[finger1].x += (signed char)packet[1];
> + state->fingers[finger1].y += (signed char)packet[2];
> } else {
> psmouse_err(psmouse, "First finger in rel packet invalid: %d\n",
> finger1);
> @@ -218,8 +218,8 @@ static void focaltech_process_rel_packet(struct psmouse *psmouse,
> */
> finger2 = ((packet[3] >> 4) & 0x7) - 1;
> if (finger2 < FOC_MAX_FINGERS) {
> - state->fingers[finger2].x += (char)packet[4];
> - state->fingers[finger2].y += (char)packet[5];
> + state->fingers[finger2].x += (signed char)packet[4];
> + state->fingers[finger2].y += (signed char)packet[5];
> }
> }
>