• Christian Hoff's avatar
    Input: matrix_keypad - check for errors from of_get_named_gpio() · 58a3a4e8
    Christian Hoff authored
    commit d55bda1b upstream.
    
    "of_get_named_gpio()" returns a negative error value if it fails
    and drivers should check for this. This missing check was now
    added to the matrix_keypad driver.
    
    In my case "of_get_named_gpio()" returned -EPROBE_DEFER because
    the referenced GPIOs belong to an I/O expander, which was not yet
    probed at the point in time when the matrix_keypad driver was
    loading. Because the driver did not check for errors from the
    "of_get_named_gpio()" routine, it was assuming that "-EPROBE_DEFER"
    is actually a GPIO number and continued as usual, which led to further
    errors like this later on:
    
    WARNING: CPU: 3 PID: 167 at drivers/gpio/gpiolib.c:114
    gpio_to_desc+0xc8/0xd0
    invalid GPIO -517
    
    Note that the "GPIO number" -517 in the error message above is
    actually "-EPROBE_DEFER".
    
    As part of the patch a misleading error message "no platform data defined"
    was also removed. This does not lead to information loss because the other
    error paths in matrix_keypad_parse_dt() already print an error.
    Signed-off-by: default avatarChristian Hoff <christian_hoff@gmx.net>
    Suggested-by: default avatarSebastian Reichel <sre@kernel.org>
    Reviewed-by: default avatarSebastian Reichel <sre@kernel.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    58a3a4e8
matrix_keypad.c 14.5 KB