dm clone: Fix UAF in clone_dtr()
authorLuo Meng <luomeng12@huawei.com>
Tue, 29 Nov 2022 02:48:48 +0000 (10:48 +0800)
committerMike Snitzer <snitzer@kernel.org>
Wed, 30 Nov 2022 18:29:34 +0000 (13:29 -0500)
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>
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);