Patch "PCI: Hold rescan lock while adding devices during host probe" has been added to the 6.11-stable tree

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

 



This is a note to let you know that I've just added the patch titled

    PCI: Hold rescan lock while adding devices during host probe

to the 6.11-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     pci-hold-rescan-lock-while-adding-devices-during-hos.patch
and it can be found in the queue-6.11 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 56e414e04e6ae2d05577c1490e062aa00726fe70
Author: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx>
Date:   Thu Oct 3 10:43:41 2024 +0200

    PCI: Hold rescan lock while adding devices during host probe
    
    [ Upstream commit 1d59d474e1cb7d4fdf87dfaf96f44647f13ea590 ]
    
    Since adding the PCI power control code, we may end up with a race between
    the pwrctl platform device rescanning the bus and host controller probe
    functions. The latter need to take the rescan lock when adding devices or
    we may end up in an undefined state having two incompletely added devices
    and hit the following crash when trying to remove the device over sysfs:
    
      Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000
      Internal error: Oops: 0000000096000004 [#1] SMP
      Call trace:
        __pi_strlen+0x14/0x150
        kernfs_find_ns+0x80/0x13c
        kernfs_remove_by_name_ns+0x54/0xf0
        sysfs_remove_bin_file+0x24/0x34
        pci_remove_resource_files+0x3c/0x84
        pci_remove_sysfs_dev_files+0x28/0x38
        pci_stop_bus_device+0x8c/0xd8
        pci_stop_bus_device+0x40/0xd8
        pci_stop_and_remove_bus_device_locked+0x28/0x48
        remove_store+0x70/0xb0
        dev_attr_store+0x20/0x38
        sysfs_kf_write+0x58/0x78
        kernfs_fop_write_iter+0xe8/0x184
        vfs_write+0x2dc/0x308
        ksys_write+0x7c/0xec
    
    Fixes: 4565d2652a37 ("PCI/pwrctl: Add PCI power control core code")
    Link: https://lore.kernel.org/r/20241003084342.27501-1-brgl@xxxxxxxx
    Reported-by: Konrad Dybcio <konradybcio@xxxxxxxxxx>
    Tested-by: Konrad Dybcio <konradybcio@xxxxxxxxxx>
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx>
    Signed-off-by: Bjorn Helgaas <bhelgaas@xxxxxxxxxx>
    Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index e9e56bbb3b59d..d203e23b75620 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -3106,7 +3106,9 @@ int pci_host_probe(struct pci_host_bridge *bridge)
 	list_for_each_entry(child, &bus->children, node)
 		pcie_bus_configure_settings(child);
 
+	pci_lock_rescan_remove();
 	pci_bus_add_devices(bus);
+	pci_unlock_rescan_remove();
 	return 0;
 }
 EXPORT_SYMBOL_GPL(pci_host_probe);




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux