• Ricardo Ribalda Delgado's avatar
    gpiolib: Fix unaligned used of reference counters · f4833b8c
    Ricardo Ribalda Delgado authored
    gpiolib relies on the reference counters to clean up the gpio_device
    structure.
    
    Although the number of get/put is properly aligned on gpiolib.c
    itself, it does not take into consideration how the referece counters
    are affected by other external functions such as cdev_add and device_add.
    
    Because of this, after the last call to put_device, the reference counter
    has a value of +3, therefore never calling gpiodevice_release.
    
    Due to the fact that some of the device  has already been cleaned on
    gpiochip_remove, the library will end up OOPsing the kernel (e.g. a call
    to of_gpiochip_find_and_xlate).
    
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarRicardo Ribalda Delgado <ricardo.ribalda@gmail.com>
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    f4833b8c
gpiolib.c 82.9 KB