dm clone: Fix UAF in clone_dtr()
authorLuo Meng <luomeng12@huawei.com>
Tue, 29 Nov 2022 02:48:48 +0000 (10:48 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 7 Jan 2023 10:11:45 +0000 (11:11 +0100)
commit e4b5957c6f749a501c464f92792f1c8e26b61a94 upstream.

Dm_clone also has the same UAF problem when dm_resume()
and dm_destroy() are concurrent.

Therefore, cancelling timer again in clone_dtr().

Cc: stable@vger.kernel.org
Fixes: 7431b7835f554 ("dm: add clone target")
Signed-off-by: Luo Meng <luomeng12@huawei.com>
Signed-off-by: Mike Snitzer <snitzer@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/md/dm-clone-target.c

index 2f1cc66..29e0b85 100644 (file)
@@ -1958,6 +1958,7 @@ static void clone_dtr(struct dm_target *ti)
 
        mempool_exit(&clone->hydration_pool);
        dm_kcopyd_client_destroy(clone->kcopyd_client);
+       cancel_delayed_work_sync(&clone->waker);
        destroy_workqueue(clone->wq);
        hash_table_exit(clone);
        dm_clone_metadata_close(clone->cmd);