Re: [PATCH 2/5] pci: Skip configuring invalid P2P bridge devices

2021-10-15 Thread Tom Rini
On Thu, Oct 07, 2021 at 02:50:58PM +0200, Pali Rohár wrote:

> Function dm_pci_hose_probe_bus() expects that bus is valid PCI device with
> Bridge header type (0x01). So add check before touching PCI config space to
> prevent misconfiguring some non-standard device.
> 
> Signed-off-by: Pali Rohár 
> Reviewed-by: Stefan Roese 

Applied to u-boot/master, thanks!

-- 
Tom


signature.asc
Description: PGP signature


Re: [PATCH 2/5] pci: Skip configuring invalid P2P bridge devices

2021-10-07 Thread Stefan Roese

On 07.10.21 14:50, Pali Rohár wrote:

Function dm_pci_hose_probe_bus() expects that bus is valid PCI device with
Bridge header type (0x01). So add check before touching PCI config space to
prevent misconfiguring some non-standard device.

Signed-off-by: Pali Rohár 


Reviewed-by: Stefan Roese 

Thanks,
Stefan


---
  drivers/pci/pci-uclass.c | 9 +
  1 file changed, 9 insertions(+)

diff --git a/drivers/pci/pci-uclass.c b/drivers/pci/pci-uclass.c
index 044babee164f..5da3515f5f25 100644
--- a/drivers/pci/pci-uclass.c
+++ b/drivers/pci/pci-uclass.c
@@ -627,6 +627,7 @@ int pci_generic_mmap_read_config(
  
  int dm_pci_hose_probe_bus(struct udevice *bus)

  {
+   u8 header_type;
int sub_bus;
int ret;
int ea_pos;
@@ -634,6 +635,14 @@ int dm_pci_hose_probe_bus(struct udevice *bus)
  
  	debug("%s\n", __func__);
  
+	dm_pci_read_config8(bus, PCI_HEADER_TYPE, _type);

+   header_type &= 0x7f;
+   if (header_type != PCI_HEADER_TYPE_BRIDGE) {
+   debug("%s: Skipping PCI device %d with Non-Bridge Header Type 
0x%x\n",
+ __func__, PCI_DEV(dm_pci_get_bdf(bus)), header_type);
+   return log_msg_ret("probe", -EINVAL);
+   }
+
ea_pos = dm_pci_find_capability(bus, PCI_CAP_ID_EA);
if (ea_pos) {
dm_pci_read_config8(bus, ea_pos + sizeof(u32) + sizeof(u8),




Viele Grüße,
Stefan

--
DENX Software Engineering GmbH,  Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: s...@denx.de