2024-01-18 20:21:28

by Levi Yun

[permalink] [raw]
Subject: [PATCH v3] firmware/arm_sdei: Fix invalid argument to unregister private events.

To unregister private events in device freeze, it should call
cpuhp_remove_state with sdei_hp_state not sdei_entry_point.
otherwise, it seems to fail on cpuhp_cb_check.

Signed-off-by: Levi Yun <[email protected]>
Fixes: d2c48b2387eb ("firmware: arm_sdei: Fix sleep from invalid context BUG")
Reviewed-by: James Morse <[email protected]>
---
Changes:
v1->v2: add fixes tag and resetting sdei_hp_state
v2->v3: add missing resetting sdei_hp_state.

drivers/firmware/arm_sdei.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/firmware/arm_sdei.c b/drivers/firmware/arm_sdei.c
index 285fe7ad490d..973972d50287 100644
--- a/drivers/firmware/arm_sdei.c
+++ b/drivers/firmware/arm_sdei.c
@@ -763,7 +763,9 @@ static int sdei_device_freeze(struct device *dev)
int err;

/* unregister private events */
- cpuhp_remove_state(sdei_entry_point);
+ cpuhp_remove_state(sdei_hp_state);
+
+ sdei_hp_state = 0;

err = sdei_unregister_shared();
if (err)
--
2.41.0