• Andrew Morton's avatar
    [PATCH] Fix __release_region() race · 43630c2c
    Andrew Morton authored
    From: MAEDA Naoaki <maeda.naoaki@jp.fujitsu.com>
    
    I am testing PCI hot-plug in 2.6.2 kernel, but sometimes a struct resource
    tree in kernel/resource.c was broken if multiple hot-plug requests are
    issued at the same time.
    
    The reason is lots of drivers call release_region() on hot removal, and
    __release_region(), which is invoked by release_region() macro, changes the
    tree without holding a writer lock for resource_lock.
    
    I think __release_region() must hold a writer lock as well as
    __request_region() does.
    
    A following patch fixes the issue in my environment.
    43630c2c
resource.c 11.3 KB