• Kevin Hilman's avatar
    Input: ads7846 - return error on regulator_get() failure · 067fb2f6
    Kevin Hilman authored
    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: default avatarKevin Hilman <khilman@deeprootsystems.com>
    Acked-by: default avatarMike Frysinger <vapier@gentoo.org>
    Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
    067fb2f6
ads7846.c 31.3 KB