From: Benjamin Bara <benjamin.bara@xxxxxxxxxxx> A failed sys_off_handler should not be able to skip other registered handlers. Therefore, report the error but always return NOTIFY_DONE, to indicate that atomic_notifier_call_chain() should continue. Signed-off-by: Benjamin Bara <benjamin.bara@xxxxxxxxxxx> --- kernel/reboot.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/kernel/reboot.c b/kernel/reboot.c index 395a0ea3c7a8..689a147bc1dc 100644 --- a/kernel/reboot.c +++ b/kernel/reboot.c @@ -320,6 +320,7 @@ static int sys_off_notify(struct notifier_block *nb, { struct sys_off_handler *handler; struct sys_off_data data = {}; + int ret; handler = container_of(nb, struct sys_off_handler, nb); data.cb_data = handler->cb_data; @@ -327,7 +328,11 @@ static int sys_off_notify(struct notifier_block *nb, data.cmd = cmd; data.dev = handler->dev; - return handler->sys_off_cb(&data); + ret = handler->sys_off_cb(&data); + if (ret != NOTIFY_DONE) + dev_err(handler->dev, "sys_off_handler failed: %d\n", notifier_to_errno(ret)); + + return NOTIFY_DONE; } static struct sys_off_handler platform_sys_off_handler; -- 2.34.1