lkml.org 
[lkml]   [2012]   [Mar]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 2/5] Correctly clean up pci root buses in function pci_remove_bus()
    Date
    The function pci_create_root_bus() allocates the pci bus structure,
    registers the bus device and creates the legacy files for a pci root
    bus, but returns without setting the is_added flag. The is_added flag
    for a pci root bus will be set by function pci_scan_child_bus().
    If a pci root bus is destroyed before calling pci_scan_child_bus(),
    the is_added flag will not be set. So teach function pci_remove_bus()
    to detect such a case and correctly clean up pci root buses.

    Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
    ---
    drivers/pci/remove.c | 9 ++++-----
    1 files changed, 4 insertions(+), 5 deletions(-)

    diff --git a/drivers/pci/remove.c b/drivers/pci/remove.c
    index 9ffc071..75b0092 100644
    --- a/drivers/pci/remove.c
    +++ b/drivers/pci/remove.c
    @@ -70,11 +70,10 @@ void pci_remove_bus(struct pci_bus *pci_bus)
    list_del(&pci_bus->node);
    pci_bus_release_busn_res(pci_bus);
    up_write(&pci_bus_sem);
    - if (!pci_bus->is_added)
    - return;
    -
    - pci_remove_legacy_files(pci_bus);
    - device_unregister(&pci_bus->dev);
    + if (pci_bus->is_added || pci_is_root_bus(pci_bus)) {
    + pci_remove_legacy_files(pci_bus);
    + device_unregister(&pci_bus->dev);
    + }
    }
    EXPORT_SYMBOL(pci_remove_bus);

    --
    1.7.5.4


    \
     
     \ /
      Last update: 2012-03-11 18:57    [W:5.170 / U:0.184 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site