]> git.baikalelectronics.ru Git - kernel.git/commitdiff
staging: vme_user: Fix possible UAF in tsi148_dma_list_add
authorGaosheng Cui <cuigaosheng1@huawei.com>
Thu, 17 Nov 2022 03:59:14 +0000 (11:59 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 18 Jan 2023 10:41:22 +0000 (11:41 +0100)
[ Upstream commit 357057ee55d3c99a5de5abe8150f7bca04f8e53b ]

Smatch report warning as follows:

drivers/staging/vme_user/vme_tsi148.c:1757 tsi148_dma_list_add() warn:
  '&entry->list' not removed from list

In tsi148_dma_list_add(), the error path "goto err_dma" will not
remove entry->list from list->entries, but entry will be freed,
then list traversal may cause UAF.

Fix by removeing it from list->entries before free().

Fixes: 7f9f0297f9b4 ("vme: tsi148: fix first DMA item mapping")
Signed-off-by: Gaosheng Cui <cuigaosheng1@huawei.com>
Link: https://lore.kernel.org/r/20221117035914.2954454-1-cuigaosheng1@huawei.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/vme/bridges/vme_tsi148.c

index 7e079d39bd76f4f2a7180dbffc4765eb12372e2b..f2da16bf14396a2e4c59919fdc8ea205368da68b 100644 (file)
@@ -1771,6 +1771,7 @@ static int tsi148_dma_list_add(struct vme_dma_list *list,
        return 0;
 
 err_dma:
+       list_del(&entry->list);
 err_dest:
 err_source:
 err_align: