1
0
Fork 0
mirror of synced 2025-03-06 20:59:54 +01:00
linux/drivers/firmware/arm_scmi
Cristian Marussi d1ff11d7ad firmware: arm_scmi: Fix chan_free cleanup on SMC
SCMI transport based on SMC can optionally use an additional IRQ to
signal message completion. The associated interrupt handler is currently
allocated using devres but on shutdown the core SCMI stack will call
.chan_free() well before any managed cleanup is invoked by devres.
As a consequence, the arrival of a late reply to an in-flight pending
transaction could still trigger the interrupt handler well after the
SCMI core has cleaned up the channels, with unpleasant results.

Inhibit further message processing on the IRQ path by explicitly freeing
the IRQ inside .chan_free() callback itself.

Fixes: dd820ee21d ("firmware: arm_scmi: Augment SMC/HVC to allow optional interrupt")
Reported-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
Link: https://lore.kernel.org/r/20230719173533.2739319-1-cristian.marussi@arm.com
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
2023-07-20 13:31:58 +01:00
..
base.c firmware: arm_scmi: Avoid using extended string-buffers sizes if not necessary 2022-06-10 17:55:29 +01:00
bus.c firmware: arm_scmi: Remove duplicate include header inclusion 2023-03-06 08:42:33 +00:00
clock.c firmware: arm_scmi: Improve checks in the info_get operations 2022-08-22 18:01:45 +01:00
common.h firmware: arm_scmi: Add per-channel raw injection support 2023-01-20 11:41:37 +00:00
driver.c firmware: arm_scmi: Augment SMC/HVC to allow optional parameters 2023-05-09 17:01:40 +01:00
Kconfig firmware: arm_scmi: Add the raw mode co-existence support 2023-01-20 11:41:31 +00:00
mailbox.c firmware: arm_scmi: Drop OF node reference in the transport channel setup 2023-07-19 18:25:21 +01:00
Makefile firmware: arm_scmi: Add core raw transmission support 2023-01-20 11:41:15 +00:00
msg.c firmware: arm_scmi: Add message passing abstractions for transports 2021-08-05 10:23:23 +01:00
notify.c firmware: arm_scmi: Fix kernel doc warnings about return values 2021-07-13 11:39:54 +01:00
notify.h firmware: arm_scmi: Remove duplicate declaration of struct scmi_protocol_handle 2021-04-27 11:57:26 +01:00
optee.c firmware: Use of_property_present() for testing DT property presence 2023-04-04 21:51:23 +02:00
perf.c Power management updates for 5.20-rc1 2022-08-02 11:17:00 -07:00
power.c firmware: arm_scmi: Avoid using extended string-buffers sizes if not necessary 2022-06-10 17:55:29 +01:00
powercap.c firmware: arm_scmi: Add Powercap protocol enable support 2023-06-06 14:04:01 +01:00
protocols.h firmware: arm_scmi: Add per-channel raw injection support 2023-01-20 11:41:37 +00:00
raw_mode.c firmware: arm_scmi: Fix signed error return values handling 2023-07-18 10:50:57 +01:00
raw_mode.h firmware: arm_scmi: Add per-channel raw injection support 2023-01-20 11:41:37 +00:00
reset.c firmware: arm_scmi: Fix the asynchronous reset requests 2022-08-23 12:21:37 +01:00
scmi_pm_domain.c MMC core: 2022-09-28 11:36:31 -07:00
scmi_power_control.c firmware: arm_scmi: Add SCMI System Power Control driver 2022-07-04 14:28:42 +01:00
sensors.c firmware: arm_scmi: Harden accesses to the sensor domains 2022-08-22 18:02:59 +01:00
shmem.c firmware: arm_scmi: Harden shared memory access in fetch_notification 2023-01-03 16:50:30 +00:00
smc.c firmware: arm_scmi: Fix chan_free cleanup on SMC 2023-07-20 13:31:58 +01:00
system.c firmware: arm_scmi: Add SCMI v3.1 System Power extensions 2022-07-04 14:28:42 +01:00
virtio.c firmware: arm_scmi: Use dedicated devices to initialize channels 2023-01-19 09:43:48 +00:00
voltage.c firmware: arm_scmi: Fix incorrect error propagation in scmi_voltage_descriptors_get 2022-06-12 19:59:55 +01:00