mirror of
https://github.com/torvalds/linux.git
synced 2026-09-24 06:24:02 +02:00
firmware: arm_scmi: Unregister device notifier before IDR teardown
The requested-devices notifier looks up protocol fwnodes from the
active_protocols IDR. During remove, unregister the notifier before
releasing and destroying active_protocols so no notifier callback can race
with the IDR teardown.
Keep the bus notifier registered until after the protocol state is torn
down, matching the existing remove ordering for SCMI bus users.
Fixes: 53b8c25df7 ("firmware: arm_scmi: Add common notifier helpers")
Reported-by: Sashiko <sashiko-bot@kernel.org>
Link: https://patch.msgid.link/20260714-scmi_core_fixes-v6-2-3afe499d46e3@kernel.org
Signed-off-by: Sudeep Holla <sudeep.holla@kernel.org>
This commit is contained in:
parent
0314900dcd
commit
66a0bbf30c
|
|
@ -3401,6 +3401,9 @@ static void scmi_remove(struct platform_device *pdev)
|
|||
list_del(&info->node);
|
||||
mutex_unlock(&scmi_list_mutex);
|
||||
|
||||
blocking_notifier_chain_unregister(&scmi_requested_devices_nh,
|
||||
&info->dev_req_nb);
|
||||
|
||||
scmi_notification_exit(&info->handle);
|
||||
|
||||
mutex_lock(&info->protocols_mtx);
|
||||
|
|
@ -3411,8 +3414,6 @@ static void scmi_remove(struct platform_device *pdev)
|
|||
of_node_put(child);
|
||||
idr_destroy(&info->active_protocols);
|
||||
|
||||
blocking_notifier_chain_unregister(&scmi_requested_devices_nh,
|
||||
&info->dev_req_nb);
|
||||
bus_unregister_notifier(&scmi_bus_type, &info->bus_nb);
|
||||
|
||||
/* Safe to free channels since no more users */
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user