The error handling path in the P2P DMA resource setup function contains a bug in its `pgmap_free` label. Memory is allocated for the `p2p_pgmap` struct, and the pointer is stored in the `p2p_pgmap` variable. However, the error path attempts to call devm_kfree() using the `pgmap` variable, which is a pointer to a member field within the `p2p_pgmap` struct, not the base pointer of the allocation. This patch corrects the bug by passing the correct base pointer, `p2p_pgmap`, to the devm_kfree() function. Signed-off-by: Sungho Kim <sungho.kim@xxxxxxxxxx> --- drivers/pci/p2pdma.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/pci/p2pdma.c b/drivers/pci/p2pdma.c index da5657a02..1cb5e423e 100644 --- a/drivers/pci/p2pdma.c +++ b/drivers/pci/p2pdma.c @@ -360,7 +360,7 @@ int pci_p2pdma_add_resource(struct pci_dev *pdev, int bar, size_t size, pages_free: devm_memunmap_pages(&pdev->dev, pgmap); pgmap_free: - devm_kfree(&pdev->dev, pgmap); + devm_kfree(&pdev->dev, p2p_pgmap); return error; } EXPORT_SYMBOL_GPL(pci_p2pdma_add_resource); -- 2.48.1