Input: ads7846 - return error on regulator_get() failure
authorKevin Hilman <khilman@deeprootsystems.com>
Thu, 27 May 2010 06:30:55 +0000 (23:30 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Thu, 27 May 2010 06:34:56 +0000 (23:34 -0700)
commit067fb2f648543894ce775082c5636f4c32b99e4f
treed2725b8748afa732dc017b6c142c830c7802981a
parentf2126a99675a930b3ab5258698d82b2a3c69af3f
Input: ads7846 - return error on regulator_get() failure

In probe(), if regulator_get() failed, an error code was not being
returned causing the driver to be successfully bound, even though
probe failed.  This in turn caused the suspend, resume and remove
methods to be registered and accessed via the SPI core.  Since these
functions all access private driver data using pointers that had been
freed during the failed probe, this would lead to unpredictable
behavior.

This patch ensures that probe() returns an error code in this failure
case so the driver is not bound.

Found using lockdep and noticing the lock used in the suspend/resum
path pointed to a bogus lock due to the freed memory.

Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
Acked-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
drivers/input/touchscreen/ads7846.c