mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
ACPI: PCC: Free channel on OpRegion deactivation
ACPICA calls the address space setup callback with
ACPI_REGION_DEACTIVATE when a PCC OperationRegion is torn down.
The PCC setup callback currently allocates a fresh pcc_data and requests
the mailbox channel before looking at the function argument. If ACPICA
deactivates a region, this can leave the existing region context and
mailbox channel unreleased, and may also request a channel during
teardown.
Handle ACPI_REGION_DEACTIVATE before allocation. Free the PCC mailbox
channel, release the region context and clear the context pointer.
Fixes: 77e2a04745 ("ACPI: PCC: Implement OperationRegion handler for the PCC Type 3 subtype")
Reviewed-by: Huisong Li <lihuisong@huawei.com>
Signed-off-by: Sudeep Holla <sudeep.holla@kernel.org>
Link: https://patch.msgid.link/20260922144302.3847593-4-sudeep.holla@kernel.org
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
46c263c213
commit
fa9c7ee692
|
|
@ -55,6 +55,19 @@ acpi_pcc_address_space_setup(acpi_handle region_handle, u32 function,
|
|||
struct pcc_mbox_chan *pcc_chan;
|
||||
acpi_status ret;
|
||||
|
||||
if (function == ACPI_REGION_DEACTIVATE) {
|
||||
data = *region_context;
|
||||
if (data) {
|
||||
pcc_mbox_free_channel(data->pcc_chan);
|
||||
kfree(data);
|
||||
*region_context = NULL;
|
||||
}
|
||||
return AE_OK;
|
||||
}
|
||||
|
||||
if (function != ACPI_REGION_ACTIVATE)
|
||||
return AE_BAD_PARAMETER;
|
||||
|
||||
data = kzalloc_obj(*data);
|
||||
if (!data)
|
||||
return AE_NO_MEMORY;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user