]> www.infradead.org Git - users/jedix/linux-maple.git/commit
PCI: Pass domain number to pci_bus_release_domain_nr() explicitly
authorManivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Thu, 12 Sep 2024 05:30:25 +0000 (11:00 +0530)
committerKrzysztof Wilczyński <kwilczynski@kernel.org>
Fri, 13 Sep 2024 22:12:29 +0000 (22:12 +0000)
commit0cca961a026177af69044f10d6ae76d8ce043764
tree536bc881d606c4d33ed2389d25874295a09d7897
parentd14bc28af34fb8b599c1cc4ce24a2833e60ade8f
PCI: Pass domain number to pci_bus_release_domain_nr() explicitly

The pci_bus_release_domain_nr() API is supposed to free the domain
number allocated by pci_bus_find_domain_nr(). Most of the callers of
pci_bus_find_domain_nr(), store the domain number in pci_bus::domain_nr.

As such, the pci_bus_release_domain_nr() implicitly frees the domain
number by dereferencing 'struct pci_bus'. However, one of the callers
of this API, the PCI endpoint subsystem, doesn't have 'struct pci_bus',
so it only passes NULL. Due to this, the API will end up dereferencing
the NULL pointer.

To fix this issue, pass the domain number to this API explicitly. Since
'struct pci_bus' is not used for anything else other than extracting the
domain number, it makes sense to pass the domain number directly.

Fixes: 0328947c5032 ("PCI: endpoint: Assign PCI domain number for endpoint controllers")
Closes: https://lore.kernel.org/linux-pci/c0c40ddb-bf64-4b22-9dd1-8dbb18aa2813@stanley.mountain
Link: https://lore.kernel.org/linux-pci/20240912053025.25314-1-manivannan.sadhasivam@linaro.org
Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
[kwilczynski: commit log]
Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>
drivers/pci/endpoint/pci-epc-core.c
drivers/pci/pci.c
drivers/pci/probe.c
drivers/pci/remove.c
include/linux/pci.h