mirror of https://gitee.com/openkylin/linux.git
030305d69f
In a struct pcie_link_state, link->root points to the pcie_link_state of
the root of the PCIe hierarchy. For the topmost link, this points to
itself (link->root = link). For others, we copy the pointer from the
parent (link->root = link->parent->root).
Previously we recognized that Root Ports originated PCIe hierarchies, but
we treated PCI/PCI-X to PCIe Bridges as being in the middle of the
hierarchy, and when we tried to copy the pointer from link->parent->root,
there was no parent, and we dereferenced a NULL pointer:
BUG: unable to handle kernel NULL pointer dereference at 0000000000000090
IP: [<ffffffff9e424350>] pcie_aspm_init_link_state+0x170/0x820
Recognize that PCI/PCI-X to PCIe Bridges originate PCIe hierarchies just
like Root Ports do, so link->root for these devices should also point to
itself.
Fixes:
|
||
---|---|---|
.. | ||
aer | ||
Kconfig | ||
Makefile | ||
aspm.c | ||
pcie-dpc.c | ||
pme.c | ||
portdrv.h | ||
portdrv_acpi.c | ||
portdrv_bus.c | ||
portdrv_core.c | ||
portdrv_pci.c | ||
ptm.c |