linux/drivers/pci/controller
Niklas Cassel b5cacfd067 PCI: dwc: ep: Prevent changing BAR size/flags in pci_epc_set_bar()
commit 3708acbd5f upstream.

In commit 4284c88fff ("PCI: designware-ep: Allow pci_epc_set_bar() update
inbound map address") set_bar() was modified to support dynamically
changing the backing physical address of a BAR that was already configured.

This means that set_bar() can be called twice, without ever calling
clear_bar() (as calling clear_bar() would clear the BAR's PCI address
assigned by the host).

This can only be done if the new BAR size/flags does not differ from the
existing BAR configuration. Add these missing checks.

If we allow set_bar() to set e.g. a new BAR size that differs from the
existing BAR size, the new address translation range will be smaller than
the BAR size already determined by the host, which would mean that a read
past the new BAR size would pass the iATU untranslated, which could allow
the host to read memory not belonging to the new struct pci_epf_bar.

While at it, add comments which clarifies the support for dynamically
changing the physical address of a BAR. (Which was also missing.)

Fixes: 4284c88fff ("PCI: designware-ep: Allow pci_epc_set_bar() update inbound map address")
Link: https://lore.kernel.org/r/20241213143301.4158431-10-cassel@kernel.org
Signed-off-by: Niklas Cassel <cassel@kernel.org>
Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2025-02-17 10:05:21 +01:00
..
cadence PCI: j721e: Deassert PERST# after a delay of PCIE_T_PVPERL_MS milliseconds 2024-12-05 14:02:23 +01:00
dwc PCI: dwc: ep: Prevent changing BAR size/flags in pci_epc_set_bar() 2025-02-17 10:05:21 +01:00
mobiveil PCI: mobiveil: Silence 'set affinity failed' warning 2024-07-29 12:46:35 -05:00
plda PCI: microchip: Set inbound address translation for coherent or non-coherent mode 2025-02-08 09:57:56 +01:00
Kconfig PCI: mediatek-gen3: Add Airoha EN7581 support 2024-09-03 13:37:41 +00:00
Makefile PCI: microchip: Move pcie-microchip-host.c to PLDA directory 2024-05-28 11:15:28 -05:00
pci-aardvark.c Merge branch 'pci/controller/affinity' 2024-09-19 14:25:28 -05:00
pci-ftpci100.c PCI: Explicitly include correct DT includes 2023-07-18 14:33:17 -05:00
pci-host-common.c Merge branch 'pci/misc' 2024-07-19 10:10:33 -05:00
pci-host-generic.c PCI: controller: Add missing MODULE_DESCRIPTION() macros 2024-07-08 08:36:14 +00:00
pci-hyperv-intf.c PCI: hv: Add a Hyper-V PCI interface driver for software backchannel interface 2019-08-22 00:25:12 -07:00
pci-hyperv.c PCI: hv: Return zero, not garbage, when reading PCI_INTERRUPT_PIN 2024-07-03 21:11:14 +00:00
pci-ixp4xx.c PCI: Explicitly include correct DT includes 2023-07-18 14:33:17 -05:00
pci-loongson.c PCI: loongson: Enable MSI in LS7A Root Complex 2024-07-19 10:07:01 -05:00
pci-mvebu.c PCI: mvebu: Use FIELD_PREP() with Link Width 2023-10-10 15:00:52 -05:00
pci-rcar-gen2.c PCI: rcar-gen2: Use devm_platform_get_and_ioremap_resource() 2023-07-13 18:12:35 +00:00
pci-tegra.c PCI: tegra: Silence 'set affinity failed' warning 2024-07-29 12:46:35 -05:00
pci-thunder-ecam.c PCI: thunder: Drop error data fabrication when config read fails 2021-11-18 13:39:32 -06:00
pci-thunder-pem.c PCI: thunder: Drop error data fabrication when config read fails 2021-11-18 13:39:32 -06:00
pci-v3-semi.c Merge branch 'pci/misc' 2023-08-29 11:03:57 -05:00
pci-versatile.c PCI: Remove MODULE_LICENSE so boolean drivers don't look like modules 2023-02-17 08:47:58 -06:00
pci-xgene-msi.c PCI: xgene-msi: Use devm_platform_get_and_ioremap_resource() 2023-07-13 18:12:36 +00:00
pci-xgene.c PCI: Rename CRS Completion Status to RRS 2024-09-10 19:52:30 -05:00
pcie-altera-msi.c PCI: altera-msi: Silence 'set affinity failed' warning 2024-07-29 12:46:35 -05:00
pcie-altera.c PCI: altera: Replace TLP_REQ_ID() with macro PCI_DEVID() 2024-09-06 06:32:23 +00:00
pcie-apple.c PCI: controller: Add missing MODULE_DESCRIPTION() macros 2024-07-08 08:36:14 +00:00
pcie-brcmstb.c Merge branch 'pci/controller/brcmstb' 2024-09-19 14:25:29 -05:00
pcie-hisi-error.c PCI: hisi-error: Convert to platform remove callback returning void 2023-06-24 14:12:13 +00:00
pcie-iproc-bcma.c PCI: Add defines for normal and subtractive PCI bridges 2022-02-17 15:29:35 -06:00
pcie-iproc-msi.c PCI: iproc: Use of_property_read_bool() for boolean properties 2023-07-13 18:09:24 +00:00
pcie-iproc-platform.c PCI: iproc: Fix -Wvoid-pointer-to-enum-cast warning 2024-01-06 08:06:50 +00:00
pcie-iproc.c PCI: Rename CRS Completion Status to RRS 2024-09-10 19:52:30 -05:00
pcie-iproc.h PCI: iproc: Convert to platform remove callback returning void 2023-06-24 14:12:36 +00:00
pcie-mediatek-gen3.c Merge branch 'pci/controller/mediatek-gen3' 2024-09-19 14:25:32 -05:00
pcie-mediatek.c Merge branch 'pci/controller/mediatek' 2024-09-19 14:25:31 -05:00
pcie-mt7621.c PCI: controller: Add missing MODULE_DESCRIPTION() macros 2024-07-08 08:36:14 +00:00
pcie-rcar-ep.c PCI: rcar-ep: Fix incorrect variable used when calling devm_request_mem_region() 2025-02-08 09:57:55 +01:00
pcie-rcar-host.c PCI: rcar-host: Silence 'set affinity failed' warning 2024-07-29 12:46:35 -05:00
pcie-rcar.c PCI: rcar: Fix calculating mask for PCIEPAMR register 2020-05-11 11:29:48 +01:00
pcie-rcar.h PCI: rcar: Avoid defines prefixed with CONFIG 2023-03-10 13:34:27 +01:00
pcie-rockchip-ep.c PCI: rockchip-ep: Fix address translation unit programming 2024-12-09 10:41:09 +01:00
pcie-rockchip-host.c PCI: rockchip-host: Wait 100ms after reset before starting configuration 2024-07-09 18:28:31 -05:00
pcie-rockchip.c PCI: rockchip: Use GPIOD_OUT_LOW flag while requesting ep_gpio 2024-07-09 18:28:33 -05:00
pcie-rockchip.h PCI: rockchip-ep: Fix address translation unit programming 2024-12-09 10:41:09 +01:00
pcie-xilinx-common.h PCI: xilinx-xdma: Add Xilinx XDMA Root Port driver 2023-10-26 15:02:02 +00:00
pcie-xilinx-cpm.c PCI: xilinx-cpm: Move IRQ definitions to a common header 2023-10-26 14:10:42 +00:00
pcie-xilinx-dma-pl.c Merge branch 'pci/controller/xilinx' 2024-09-19 14:25:33 -05:00
pcie-xilinx-nwl.c Merge branch 'pci/controller/xilinx' 2024-09-19 14:25:33 -05:00
pcie-xilinx.c PCI: xilinx: Silence 'set affinity failed' warning 2024-08-06 12:52:17 -05:00
vmd.c PCI: vmd: Set devices to D0 before enabling PM L1 Substates 2024-12-14 20:04:04 +01:00