Re: [PATCH] PCIe: AER: during disable, check subordinate before walking

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 2009-03-05 at 19:28 -0700, Alex Chiang wrote: 
> Commit 47a8b0cc (Enable PCIe AER only after checking firmware
> support) wants to walk the PCI bus in the remove path to disable
> AER, and calls pci_walk_bus for downstream bridges.
> 
> Unfortunately, in the remove path, we remove devices and bridges
> in a depth-first manner, starting with the furthest downstream
> bridge and working our way backwards.
> 
> The furthest downstream bridges will not have a dev->subordinate,
> and we hit a NULL deref in pci_walk_bus.
> 
> Check for dev->subordinate first before attempting to walk the
> PCI hierarchy below us.
> 

Looks good.

Acked-by: Andrew Patterson <andrew.patterson@xxxxxx>

> Cc: Andrew Patterson <andrew.patterson@xxxxxx>
> Signed-off-by: Alex Chiang <achiang@xxxxxx>
> ---
> Willy, this is .29 material, please push to Linus, thanks.
> 
> ---
> diff --git a/drivers/pci/pcie/aer/aerdrv_core.c b/drivers/pci/pcie/aer/aerdrv_core.c
> index aebb5f6..677d680 100644
> --- a/drivers/pci/pcie/aer/aerdrv_core.c
> +++ b/drivers/pci/pcie/aer/aerdrv_core.c
> @@ -133,6 +133,9 @@ static void set_downstream_devices_error_reporting(struct pci_dev *dev,
>  						   bool enable)
>  {
>  	set_device_error_reporting(dev, &enable);
> +
> +	if (!dev->subordinate)
> +		return;
>  	pci_walk_bus(dev->subordinate, set_device_error_reporting, &enable);
>  }
>  

-- 
Andrew Patterson
Hewlett-Packard Company

--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux