• Mark Walton's avatar
    gpio: pca953x: Fix dereference of irq data in shutdown · c378b3aa
    Mark Walton authored
    If a PCA953x gpio was used as an interrupt and then released,
    the shutdown function was trying to extract the pca953x_chip
    pointer directly from the irq_data, but in reality was getting
    the gpio_chip structure.
    
    The net effect was that the subsequent writes to the data
    structure corrupted data in the gpio_chip structure, which wasn't
    immediately obvious until attempting to use the GPIO again in the
    future, at which point the kernel panics.
    
    This fix correctly extracts the pca953x_chip structure via the
    gpio_chip structure, as is correctly done in the other irq
    functions.
    
    Fixes: 0a70fe00 ("gpio: pca953x: Clear irq trigger type on irq shutdown")
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarMark Walton <mark.walton@serialtek.com>
    Reviewed-by: default avatarBartosz Golaszewski <bgolaszewski@baylibre.com>
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    c378b3aa
gpio-pca953x.c 31.9 KB