• Hans de Goede's avatar
    ASoC: rt5651: Fix workqueue cancel vs irq free race on remove · 8d2d7bcd
    Hans de Goede authored
    On removal we must free the IRQ *before* cancelling the jack-detect work,
    so that the jack-detect work cannot be rescheduled by the IRQ.
    
    Before this commit we were cancelling the jack-detect work from the
    driver remove callback, while relying on devm to free the IRQ, which
    happens after the remove callback.
    
    This is the wrong order. This commit uses a devm-action to register
    a devm callback which cancels the work, before requesting the IRQ
    (devm tears things down in reverse order). This also allows us to
    remove the now empty remove driver callback.
    
    Cc: Carlo Caione <carlo@endlessm.com>
    Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    8d2d7bcd
rt5651.c 62.5 KB