• Erik Schmauss's avatar
    ACPICA: Namespace: remove address node from global list after method termination · c5781ffb
    Erik Schmauss authored
    ACPICA commit b233720031a480abd438f2e9c643080929d144c3
    
    ASL operation_regions declare a range of addresses that it uses. In a
    perfect world, the range of addresses should be used exclusively by
    the AML interpreter. The OS can use this information to decide which
    drivers to load so that the AML interpreter and device drivers use
    different regions of memory.
    
    During table load, the address information is added to a global
    address range list. Each node in this list contains an address range
    as well as a namespace node of the operation_region. This list is
    deleted at ACPI shutdown.
    
    Unfortunately, ASL operation_regions can be declared inside of control
    methods. Although this is not recommended, modern firmware contains
    such code. New module level code changes unintentionally removed the
    functionality of adding and removing nodes to the global address
    range list.
    
    A few months ago, support for adding addresses has been re-
    implemented. However, the removal of the address range list was
    missed and resulted in some systems to crash due to the address list
    containing bogus namespace nodes from operation_regions declared in
    control methods. In order to fix the crash, this change removes
    dynamic operation_regions after control method termination.
    
    Link: https://github.com/acpica/acpica/commit/b2337200
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=202475
    Fixes: 4abb951b ("ACPICA: AML interpreter: add region addresses in global list during initialization")
    Reported-by: default avatarMichael J Gruber <mjg@fedoraproject.org>
    Signed-off-by: default avatarErik Schmauss <erik.schmauss@intel.com>
    Signed-off-by: default avatarBob Moore <robert.moore@intel.com>
    Cc: 4.20+ <stable@vger.kernel.org> # 4.20+
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    c5781ffb
nsobject.c 11.3 KB