• J
    PCI: vmd: Detach resources after stopping root bus · 99915dc8
    Jon Derrick 提交于
    mainline inclusion
    from mainline-4.20
    commit dc8af3a827df
    category: bugfix
    bugzilla: 6651
    CVE: NA
    
    -------------------------------------------------
    
    The VMD removal path calls pci_stop_root_busi(), which tears down the pcie
    tree, including detaching all of the attached drivers. During driver
    detachment, devices may use pci_release_region() to release resources.
    This path relies on the resource being accessible in resource tree.
    
    By detaching the child domain from the parent resource domain prior to
    stopping the bus, we are preventing the list traversal from finding the
    resource to be freed. If we instead detach the resource after stopping
    the bus, we will have properly freed the resource and detaching is
    simply accounting at that point.
    
    Without this order, the resource is never freed and is orphaned on VMD
    removal, leading to a warning:
    
    [  181.940162] Trying to free nonexistent resource <e5a10000-e5a13fff>
    
    Fixes: 2c2c5c5c ("x86/PCI: VMD: Attach VMD resources to parent domain's resource tree")
    Signed-off-by: NJon Derrick <jonathan.derrick@intel.com>
    [lorenzo.pieralisi@arm.com: updated commit log]
    Signed-off-by: NLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Reviewed-by: NKeith Busch <keith.busch@intel.com>
    Signed-off-by: NHanjun Guo <guohanjun@huawei.com>
    Reviewed-by: NXiongfeng Wang <wangxiongfeng2@huawei.com>
    Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
    99915dc8
vmd.c 22.9 KB