mausezahn-libs = -lcli \
-lnet \
-lpcap \
-lrt \
-lpthread \
-lm
mausezahn-objs = str.o \
die.o \
xmalloc.o \
staging/layer1.o \
staging/layer2.o \
staging/layer3.o \
staging/layer4.o \
staging/hextools.o \
staging/tools.o \
staging/lookupdev.o \
staging/time.o \
staging/modifications.o \
staging/send_eth.o \
staging/send.o \
staging/cdp.o \
staging/rtp.o \
staging/dns.o \
staging/rcv_rtp.o \
staging/syslog.o \
staging/cli.o \
staging/cli_cmds.o \
staging/cli_launch.o \
staging/cli_legacy.o \
staging/cli_packet.o \
staging/cli_interface.o \
staging/cli_set.o \
staging/cli_dns.o \
staging/cli_arp.o \
staging/cli_bpdu.o \
staging/cli_eth.o \
staging/cli_ip.o \
staging/cli_udp.o \
staging/cli_tcp.o \
staging/cli_rtp.o \
staging/cli_tools.o \
staging/cli_igmp.o \
staging/cli_lldp.o \
staging/cli_sequence.o \
staging/mops.o \
staging/mops_update.o \
staging/mops_tools.o \
staging/mops_checksums.o \
staging/mops_threads.o \
staging/mops_dot1Q.o \
staging/mops_mpls.o \
staging/mops_ip.o \
staging/mops_tcp.o \
staging/mops_ext.o \
staging/mops_ext_arp.o \
staging/mops_ext_bpdu.o \
staging/mops_ext_rtp.o \
staging/mopsrx_arp.o \
staging/mops_ext_igmp.o \
staging/mops_ext_lldp.o \
staging/mops_sequence.o \
staging/automops.o \
staging/parse_xml.o \
staging/tx_switch.o \
staging/llist.o \
staging/directmops.o \
staging/mausezahn.o
mausezahn-eflags = -O2 -I. -I.. \
-DVERSION_STRING=\"$(VERSION_STRING)\" \
-DVERSION_LONG=\"$(VERSION_LONG)\"
mausezahn-confs =
9fc6963c16003f50d7e8d74b02d0a143'>refslogtreecommitdiff
PCI/ASPM: Handle PCI-to-PCIe bridges as roots of PCIe hierarchies
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: 51ebfc92b72b ("PCI: Enumerate switches below PCI-to-PCIe bridges")
Link: https://bugzilla.kernel.org/show_bug.cgi?id=193411
Link: https://bugzilla.opensuse.org/show_bug.cgi?id=1022181
Tested-by: lists@ssl-mail.com
Tested-by: Jayachandran C. <jnair@caviumnetworks.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
CC: stable@vger.kernel.org # v4.2+