[PATCH v5 4/6] kernel/reboot: sys_off_notify: always return NOTIFY_DONE

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [ARM Kernel]     [Linux ARM]     [Linux ARM MSM]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux