• Nikolay Borisov's avatar
    dm thin: fix race condition when destroying thin pool workqueue · 18d03e8c
    Nikolay Borisov authored
    When a thin pool is being destroyed delayed work items are
    cancelled using cancel_delayed_work(), which doesn't guarantee that on
    return the delayed item isn't running.  This can cause the work item to
    requeue itself on an already destroyed workqueue.  Fix this by using
    cancel_delayed_work_sync() which guarantees that on return the work item
    is not running anymore.
    Fixes: 905e51b3 ("dm thin: commit outstanding data every second")
    Fixes: 85ad643b
     ("dm thin: add timeout to stop out-of-data-space mode holding IO forever")
    Signed-off-by: default avatarNikolay Borisov <kernel@kyup.com>
    Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
    Cc: stable@vger.kernel.org
dm-thin.c 107 KB