2
0
mirror of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git synced 2025-09-04 20:19:47 +08:00
linux/drivers/pci/controller/dwc
Niklas Cassel 3708acbd5f
PCI: dwc: ep: Prevent changing BAR size/flags in pci_epc_set_bar()
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
2024-12-18 21:51:19 +00:00
..
Kconfig PCI: qcom: Add equalization settings for 16.0 GT/s 2024-09-13 14:44:57 +00:00
Makefile PCI: qcom: Add equalization settings for 16.0 GT/s 2024-09-13 14:44:57 +00:00
pci-dra7xx.c PCI: dra7xx: Fix error handling when IRQ request fails in probe 2024-09-13 21:36:11 +00:00
pci-exynos.c PCI: controller: Switch back to struct platform_driver::remove() 2024-10-03 16:44:49 -05:00
pci-imx6.c PCI: imx6: Fix suspend/resume support on i.MX6QDL 2024-11-06 21:54:17 +00:00
pci-keystone.c Merge branch 'pci/controller/keystone' 2024-11-25 13:40:58 -06:00
pci-layerscape-ep.c PCI: layerscape-ep: Use the generic dw_pcie_ep_linkdown() API to handle Link Down event 2024-07-09 18:21:11 -05:00
pci-layerscape.c Merge branch 'pci/controller/layerscape' 2024-01-15 12:10:38 -06:00
pci-meson.c PCI: dwc: Remove unused of_gpio.h inclusion 2024-05-28 11:15:08 -05:00
pcie-al.c PCI: al: Check IORESOURCE_BUS existence during probe 2024-05-28 11:14:24 -05:00
pcie-armada8k.c PCI: dwc: Drop host prefix from struct dw_pcie_host_ops members 2024-01-06 07:51:08 +00:00
pcie-artpec6.c Merge branch 'pci/controller/artpec6' 2024-07-19 10:10:26 -05:00
pcie-bt1.c PCI: controller: Switch back to struct platform_driver::remove() 2024-10-03 16:44:49 -05:00
pcie-designware-ep.c PCI: dwc: ep: Prevent changing BAR size/flags in pci_epc_set_bar() 2024-12-18 21:51:19 +00:00
pcie-designware-host.c PCI: dwc: Use of_property_present() for non-boolean properties 2024-11-16 18:21:06 +00:00
pcie-designware-plat.c PCI: dwc: ep: Remove dw_pcie_ep_init_notify() wrapper 2024-07-09 18:20:21 -05:00
pcie-designware.c PCI: dwc: Always cache the maximum link speed value in dw_pcie::max_link_speed 2024-09-13 14:44:55 +00:00
pcie-designware.h PCI: qcom: Add RX lane margining settings for 16.0 GT/s 2024-09-13 14:44:59 +00:00
pcie-dw-rockchip.c PCI: dw-rockchip: Use pci_epc_init_notify() directly 2024-07-09 18:29:45 -05:00
pcie-fu740.c PCI: dwc: Drop host prefix from struct dw_pcie_host_ops members 2024-01-06 07:51:08 +00:00
pcie-hisi.c PCI: hisi: Avoid invalid address space conversions 2022-01-03 15:05:28 -06:00
pcie-histb.c PCI: controller: Switch back to struct platform_driver::remove() 2024-10-03 16:44:49 -05:00
pcie-intel-gw.c PCI: controller: Switch back to struct platform_driver::remove() 2024-10-03 16:44:49 -05:00
pcie-keembay.c PCI: dwc: ep: Remove dw_pcie_ep_init_notify() wrapper 2024-07-09 18:20:21 -05:00
pcie-kirin.c PCI: controller: Switch back to struct platform_driver::remove() 2024-10-03 16:44:49 -05:00
pcie-qcom-common.c PCI: qcom: Add RX lane margining settings for 16.0 GT/s 2024-09-13 14:44:59 +00:00
pcie-qcom-common.h PCI: qcom: Add RX lane margining settings for 16.0 GT/s 2024-09-13 14:44:59 +00:00
pcie-qcom-ep.c Merge branch 'pci/controller/qcom' 2024-11-25 13:40:59 -06:00
pcie-qcom.c PCI: qcom: Disable ASPM L0s for X1E80100 2024-11-04 14:57:30 +00:00
pcie-rcar-gen4.c PCI: controller: Switch back to struct platform_driver::remove() 2024-10-03 16:44:49 -05:00
pcie-spear13xx.c PCI: dwc: Rename 'dw_pcie::link_gen' to 'dw_pcie::max_link_speed' 2024-09-13 14:44:43 +00:00
pcie-tegra194-acpi.c PCI: dwc: Simplify in/outbound iATU setup methods 2022-08-01 15:15:09 -05:00
pcie-tegra194.c Merge branch 'pci/controller/tegra194' 2024-11-25 13:41:00 -06:00
pcie-uniphier-ep.c PCI: dwc: ep: Remove dw_pcie_ep_init_notify() wrapper 2024-07-09 18:20:21 -05:00
pcie-uniphier.c Merge branch 'pci/irq-clean-up' 2024-01-15 12:10:40 -06:00
pcie-visconti.c PCI: dwc: Drop host prefix from struct dw_pcie_host_ops members 2024-01-06 07:51:08 +00:00