Commit 8980f190 authored by Jason A. Donenfeld's avatar Jason A. Donenfeld Committed by Dmitry Torokhov

Input: focaltech - use explicitly signed char type

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 explicitly
signed, to take into account negative offsets.

Fixes: 3bc753c0 ("kbuild: treat char as always unsigned")
Signed-off-by: default avatarJason A. Donenfeld <Jason@zx2c4.com>
Reviewed-by: default avatarHans de Goede <hdegoede@redhat.com>
Cc: stable@vger.kernel.org
Link: https://bugzilla.kernel.org/show_bug.cgi?id=217211
Link: https://lore.kernel.org/r/20230318133010.1285202-1-Jason@zx2c4.comSigned-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
parent ffa6206e
...@@ -202,8 +202,8 @@ static void focaltech_process_rel_packet(struct psmouse *psmouse, ...@@ -202,8 +202,8 @@ static void focaltech_process_rel_packet(struct psmouse *psmouse,
state->pressed = packet[0] >> 7; state->pressed = packet[0] >> 7;
finger1 = ((packet[0] >> 4) & 0x7) - 1; finger1 = ((packet[0] >> 4) & 0x7) - 1;
if (finger1 < FOC_MAX_FINGERS) { if (finger1 < FOC_MAX_FINGERS) {
state->fingers[finger1].x += (char)packet[1]; state->fingers[finger1].x += (s8)packet[1];
state->fingers[finger1].y += (char)packet[2]; state->fingers[finger1].y += (s8)packet[2];
} else { } else {
psmouse_err(psmouse, "First finger in rel packet invalid: %d\n", psmouse_err(psmouse, "First finger in rel packet invalid: %d\n",
finger1); finger1);
...@@ -218,8 +218,8 @@ static void focaltech_process_rel_packet(struct psmouse *psmouse, ...@@ -218,8 +218,8 @@ static void focaltech_process_rel_packet(struct psmouse *psmouse,
*/ */
finger2 = ((packet[3] >> 4) & 0x7) - 1; finger2 = ((packet[3] >> 4) & 0x7) - 1;
if (finger2 < FOC_MAX_FINGERS) { if (finger2 < FOC_MAX_FINGERS) {
state->fingers[finger2].x += (char)packet[4]; state->fingers[finger2].x += (s8)packet[4];
state->fingers[finger2].y += (char)packet[5]; state->fingers[finger2].y += (s8)packet[5];
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment