Input: serio HIL MLC - don't deref null, don't leak and return proper error
authorJesper Juhl <jj@chaosbits.net>
Sat, 20 Nov 2010 21:36:49 +0000 (13:36 -0800)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Sat, 20 Nov 2010 21:38:18 +0000 (13:38 -0800)
commit39de52104dd92bc0548a20201350111dc9317df9
tree610c60dac072dc641be26dc912926b8877363846
parentbc95df78c4566327086d44f1bfab984a70dc4d6b
Input: serio HIL MLC - don't deref null, don't leak and return proper error

While reviewing various users of kernel memory allocation functions I came
across drivers/input/serio/hil_mlc.c::hil_mlc_register() and noticed that:

 - it calls kzalloc() but fails to check for a NULL return before use.
 - it makes several allocations and if one fails it doesn't free the
   previous ones.
 - It doesn't return -ENOMEM in the failed memory allocation case (it just
   crashes).

This patch corrects all of the above and also reworks the only caller of
this function that I could find
(drivers/input/serio/hp_sdc_mlc.c::hp_sdc_mlc_out()) so that it now checks
the return value of hil_mlc_register() and properly propagates it on
failure and I also restructured the code to remove some labels and goto's
to make it, IMHO nicer to read.

Signed-off-by: Jesper Juhl <jj@chaosbits.net>
Tested-by: Helge Deller <deller@gmx.de>
Acked-by: Helge Deller <deller@gmx.de>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
drivers/input/serio/hil_mlc.c
drivers/input/serio/hp_sdc_mlc.c