]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
PCI/P2PDMA: Fix incorrect pointer usage in devm_kfree() call
authorSungho Kim <sungho.kim@furiosa.ai>
Wed, 20 Aug 2025 10:57:14 +0000 (19:57 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 13 Nov 2025 20:34:14 +0000 (15:34 -0500)
[ Upstream commit 6238784e502b6a9fbeb3a6b77284b29baa4135cc ]

The error handling path in pci_p2pdma_add_resource() contains a bug in its
`pgmap_free` label.

Memory is allocated for the `p2p_pgmap` struct, and the pointer is stored
in `p2p_pgmap`. However, the error path calls devm_kfree() with `pgmap`,
which is a pointer to a member field within the `p2p_pgmap` struct, not the
base pointer of the allocation.

Correct the bug by passing the correct base pointer, `p2p_pgmap`, to
devm_kfree().

Signed-off-by: Sungho Kim <sungho.kim@furiosa.ai>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Logan Gunthorpe <logang@deltatee.com>
Link: https://patch.msgid.link/20250820105714.2939896-1-sungho.kim@furiosa.ai
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/pci/p2pdma.c

index 4f47a13cb500ff5339cde426b6ccb020fcd74ae7..52e1564eadd0bad77b83f06382b67d5b59d59d64 100644 (file)
@@ -351,7 +351,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);