• P
    ASoC: tlv320aic3x: fix reset gpio reference counting · 82ad7591
    Philipp Puschmann 提交于
    This patch fixes a bug that prevents freeing the reset gpio on unloading
    the module.
    
    aic3x_i2c_probe is called when loading the module and it calls list_add
    with a probably uninitialized list entry aic3x->list (next = prev = NULL)).
    So even if list_del is called it does nothing and in the end the gpio_reset
    is not freed. Then a repeated module probing fails silently because
    gpio_request fails.
    
    When moving INIT_LIST_HEAD to aic3x_i2c_probe we also have to move
    list_del to aic3x_i2c_remove because aic3x_remove may be called
    multiple times without aic3x_i2c_remove being called which leads to
    a NULL pointer dereference.
    Signed-off-by: NPhilipp Puschmann <philipp.puschmann@emlix.com>
    Signed-off-by: NMark Brown <broonie@kernel.org>
    82ad7591
tlv320aic3x.c 63.8 KB