ANDROID: input: keychord: Fix races in keychord_write.
authorMohan Srinivasan <srmohan@google.com>
Wed, 9 Aug 2017 19:16:56 +0000 (12:16 -0700)
committerAmit Pundir <amit.pundir@linaro.org>
Mon, 18 Dec 2017 15:41:22 +0000 (21:11 +0530)
commit8253552b9900cf4497e1c7d15a83ddc5995abcd8
tree00ccc6ce0674b6e3fec2ff771b14a21e2e07f11c
parent92fc7f9aa0298cc112b2893e4e0bcf522f2659a8
ANDROID: input: keychord: Fix races in keychord_write.

There are multiple bugs caused by threads racing in keychord_write.
1) Threads racing through this function can cause the same element to
be added to a linked list twice (multiple calls to
input_register_handler() for the same input_handler struct). And the
races can also cause an element in a linked list that doesn't exist
attempted to be removed (multiple calls to input_unregister_handler()
with the same input_handler struct).
2) The races can also cause duplicate kfree's of the keychords
struct.

Bug: 64133562
Bug: 63974334
Change-Id: I6329a4d58c665fab5d3e96ef96391e07b4941e80
Signed-off-by: Mohan Srinivasan <srmohan@google.com>
drivers/input/misc/keychord.c