[PW_SID:975840] PCI: host-generic: Fix driver_data overwriting bugs#575
[PW_SID:975840] PCI: host-generic: Fix driver_data overwriting bugs#575linux-riscv-bot wants to merge 4 commits into
Conversation
On MicroChip MPFS Icicle:
microchip-pcie 2000000000.pcie: host bridge /soc/pcie@2000000000 ranges:
microchip-pcie 2000000000.pcie: Parsing ranges property...
microchip-pcie 2000000000.pcie: MEM 0x2008000000..0x2087ffffff -> 0x0008000000
Unable to handle kernel NULL pointer dereference at virtual address 0000000000000368
Current swapper/0 pgtable: 4K pagesize, 39-bit VAs, pgdp=0x00000000814f1000
[0000000000000368] pgd=0000000000000000, p4d=0000000000000000, pud=0000000000000000
Oops [#1]
Modules linked in:
CPU: 0 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.15.0-rc1-icicle-00003-gafc0a570bb61 #232 NONE
Hardware name: Microchip PolarFire-SoC Icicle Kit (DT)
[...]
[<ffffffff803fb8a4>] plda_pcie_setup_iomems+0xe/0x78
[<ffffffff803fc246>] mc_platform_init+0x80/0x1d2
[<ffffffff803f9c88>] pci_ecam_create+0x104/0x1e2
[<ffffffff8000adbe>] pci_host_common_init+0x120/0x228
[<ffffffff8000af42>] pci_host_common_probe+0x7c/0x8a
The initialization of driver_data was moved after the call to
gen_pci_init(), while the pci_ecam_ops.init() callback
mc_platform_init() expects it has already been initialized.
Fix this by moving the initialization of driver_data up.
Fixes: afc0a57 ("PCI: host-generic: Extract an ECAM bridge creation helper from pci_host_common_probe()")
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/r/774290708a6f0f683711914fda110742c18a7fb2.1750787223.git.geert+renesas@glider.be
Signed-off-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Linux RISC-V bot <linux.riscv.bot@gmail.com>
The apple driver relies on being able to directly find the matching root port structure from the platform device that represents this port. A previous hack stashed a pointer to the root port structure in the config window private pointer, but that ended up relying on assumptions that break other drivers. Instead, bite the bullet and track the association as part of the driver itself as a list of probed root ports. Signed-off-by: Marc Zyngier <maz@kernel.org> Signed-off-by: Linux RISC-V bot <linux.riscv.bot@gmail.com>
…port device" This reverts commit 4900454. Now that nobody relies of cfg->priv containing anything useful before the .init() callback is used, restore the previous behaviour. Signed-off-by: Marc Zyngier <maz@kernel.org> Signed-off-by: Linux RISC-V bot <linux.riscv.bot@gmail.com>
|
Patch 1: "[1/3] PCI: host-generic: Set driver_data before calling gen_pci_init()" |
|
Patch 1: "[1/3] PCI: host-generic: Set driver_data before calling gen_pci_init()" |
|
Patch 1: "[1/3] PCI: host-generic: Set driver_data before calling gen_pci_init()" |
|
Patch 1: "[1/3] PCI: host-generic: Set driver_data before calling gen_pci_init()" |
|
Patch 1: "[1/3] PCI: host-generic: Set driver_data before calling gen_pci_init()" |
|
Patch 1: "[1/3] PCI: host-generic: Set driver_data before calling gen_pci_init()" |
|
Patch 1: "[1/3] PCI: host-generic: Set driver_data before calling gen_pci_init()" |
|
Patch 1: "[1/3] PCI: host-generic: Set driver_data before calling gen_pci_init()" |
|
Patch 1: "[1/3] PCI: host-generic: Set driver_data before calling gen_pci_init()" |
|
Patch 1: "[1/3] PCI: host-generic: Set driver_data before calling gen_pci_init()" |
|
Patch 1: "[1/3] PCI: host-generic: Set driver_data before calling gen_pci_init()" |
|
Patch 1: "[1/3] PCI: host-generic: Set driver_data before calling gen_pci_init()" |
|
Patch 2: "[2/3] PCI: apple: Add tracking of probed root ports" |
|
Patch 2: "[2/3] PCI: apple: Add tracking of probed root ports" |
|
Patch 2: "[2/3] PCI: apple: Add tracking of probed root ports" |
|
Patch 2: "[2/3] PCI: apple: Add tracking of probed root ports" |
|
Patch 2: "[2/3] PCI: apple: Add tracking of probed root ports" |
|
Patch 2: "[2/3] PCI: apple: Add tracking of probed root ports" |
|
Patch 2: "[2/3] PCI: apple: Add tracking of probed root ports" |
|
Patch 2: "[2/3] PCI: apple: Add tracking of probed root ports" |
|
Patch 2: "[2/3] PCI: apple: Add tracking of probed root ports" |
|
Patch 2: "[2/3] PCI: apple: Add tracking of probed root ports" |
|
Patch 2: "[2/3] PCI: apple: Add tracking of probed root ports" |
|
Patch 2: "[2/3] PCI: apple: Add tracking of probed root ports" |
|
Patch 3: "[3/3] Revert "PCI: ecam: Allow cfg->priv to be pre-populated from the root port device"" |
|
Patch 3: "[3/3] Revert "PCI: ecam: Allow cfg->priv to be pre-populated from the root port device"" |
|
Patch 3: "[3/3] Revert "PCI: ecam: Allow cfg->priv to be pre-populated from the root port device"" |
|
Patch 3: "[3/3] Revert "PCI: ecam: Allow cfg->priv to be pre-populated from the root port device"" |
|
Patch 3: "[3/3] Revert "PCI: ecam: Allow cfg->priv to be pre-populated from the root port device"" |
|
Patch 3: "[3/3] Revert "PCI: ecam: Allow cfg->priv to be pre-populated from the root port device"" |
|
Patch 3: "[3/3] Revert "PCI: ecam: Allow cfg->priv to be pre-populated from the root port device"" |
|
Patch 3: "[3/3] Revert "PCI: ecam: Allow cfg->priv to be pre-populated from the root port device"" |
|
Patch 3: "[3/3] Revert "PCI: ecam: Allow cfg->priv to be pre-populated from the root port device"" |
|
Patch 3: "[3/3] Revert "PCI: ecam: Allow cfg->priv to be pre-populated from the root port device"" |
|
Patch 3: "[3/3] Revert "PCI: ecam: Allow cfg->priv to be pre-populated from the root port device"" |
|
Patch 3: "[3/3] Revert "PCI: ecam: Allow cfg->priv to be pre-populated from the root port device"" |
a7cb30d to
d776861
Compare
PR for series 975840 applied to workflow__riscv__fixes
Name: PCI: host-generic: Fix driver_data overwriting bugs
URL: https://patchwork.kernel.org/project/linux-riscv/list/?series=975840
Version: 1