of: overlay: do not break notify on NOTIFY_{OK|STOP}
authorNuno Sá <nuno.sa@analog.com>
Wed, 20 Apr 2022 13:02:05 +0000 (15:02 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 9 Jun 2022 08:22:50 +0000 (10:22 +0200)
[ Upstream commit 5f756a2eaa4436d7d3dc1e040147f5e992ae34b5 ]

We should not break overlay notifications on NOTIFY_{OK|STOP}
otherwise we might break on the first fragment. We should only stop
notifications if a *real* errno is returned by one of the listeners.

Fixes: a1d19bd4cf1fe ("of: overlay: pr_err from return NOTIFY_OK to overlay apply/remove")
Signed-off-by: Nuno Sá <nuno.sa@analog.com>
Signed-off-by: Rob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20220420130205.89435-1-nuno.sa@analog.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/of/overlay.c

index d80160cf34bb7e7f27839d26405565ca8af828b3..d1187123c4fc482816d5f6a5e2093ed22dc8cca8 100644 (file)
@@ -170,9 +170,7 @@ static int overlay_notify(struct overlay_changeset *ovcs,
 
                ret = blocking_notifier_call_chain(&overlay_notify_chain,
                                                   action, &nd);
-               if (ret == NOTIFY_OK || ret == NOTIFY_STOP)
-                       return 0;
-               if (ret) {
+               if (notifier_to_errno(ret)) {
                        ret = notifier_to_errno(ret);
                        pr_err("overlay changeset %s notifier error %d, target: %pOF\n",
                               of_overlay_action_name[action], ret, nd.target);