CVE-2024-42319

mailbox: mtk-cmdq: Move devm_mbox_controller_register() after devm_pm_runtime_enable()

published August 17, 2024

CVSS
—
EPSS
0%
Percentile
10.4
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

mailbox: mtk-cmdq: Move devm_mbox_controller_register() after devm_pm_runtime_enable()

When mtk-cmdq unbinds, a WARN_ON message with condition

pm_runtime_get_sync() < 0 occurs.

According to the call tracei below:

cmdq_mbox_shutdown

mbox_free_channel

mbox_controller_unregister

__devm_mbox_controller_unregister

...

The root cause can be deduced to be calling pm_runtime_get_sync() after

calling pm_runtime_disable() as observed below:

1. CMDQ driver uses devm_mbox_controller_register() in cmdq_probe()

to bind the cmdq device to the mbox_controller, so

devm_mbox_controller_unregister() will automatically unregister

the device bound to the mailbox controller when the device-managed

resource is removed. That means devm_mbox_controller_unregister()

and cmdq_mbox_shoutdown() will be called after cmdq_remove().

2. CMDQ driver also uses devm_pm_runtime_enable() in cmdq_probe() after

devm_mbox_controller_register(), so that devm_pm_runtime_disable()

will be called after cmdq_remove(), but before

devm_mbox_controller_unregister().

To fix this problem, cmdq_probe() needs to move

devm_mbox_controller_register() after devm_pm_runtime_enable() to make

devm_pm_runtime_disable() be called after

devm_mbox_controller_unregister().

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00209 · 10.4th percentile
Published
2024-08-17T09:09Z
EPSS history
Timeline
  • 17 AUG 09:09Z
    mailbox: mtk-cmdq: Move devm_mbox_controller_register() after devm_pm_runtime_enable()
    cvelistv5