diff --git a/xen/arch/arm/cpuerrata.c b/xen/arch/arm/cpuerrata.c index ae649d16ef..5952111b72 100644 --- a/xen/arch/arm/cpuerrata.c +++ b/xen/arch/arm/cpuerrata.c @@ -724,7 +724,7 @@ static int cpu_errata_callback(struct notifier_block *nfb, break; } - return !rc ? NOTIFY_DONE : notifier_from_errno(rc); + return notifier_from_errno(rc); } static struct notifier_block cpu_errata_nfb = { diff --git a/xen/arch/arm/gic-v3-lpi.c b/xen/arch/arm/gic-v3-lpi.c index 61d90eb386..f0b7ef17da 100644 --- a/xen/arch/arm/gic-v3-lpi.c +++ b/xen/arch/arm/gic-v3-lpi.c @@ -402,7 +402,7 @@ static int cpu_callback(struct notifier_block *nfb, unsigned long action, break; } - return !rc ? NOTIFY_DONE : notifier_from_errno(rc); + return notifier_from_errno(rc); } static struct notifier_block cpu_nfb = { diff --git a/xen/arch/arm/irq.c b/xen/arch/arm/irq.c index fd0c15fffd..00fadbc354 100644 --- a/xen/arch/arm/irq.c +++ b/xen/arch/arm/irq.c @@ -148,7 +148,7 @@ static int cpu_callback(struct notifier_block *nfb, unsigned long action, break; } - return !rc ? NOTIFY_DONE : notifier_from_errno(rc); + return notifier_from_errno(rc); } static struct notifier_block cpu_nfb = { diff --git a/xen/arch/arm/percpu.c b/xen/arch/arm/percpu.c index 25442c48fe..67eb821ff6 100644 --- a/xen/arch/arm/percpu.c +++ b/xen/arch/arm/percpu.c @@ -68,7 +68,7 @@ static int cpu_percpu_callback( break; } - return !rc ? NOTIFY_DONE : notifier_from_errno(rc); + return notifier_from_errno(rc); } static struct notifier_block cpu_percpu_nfb = { diff --git a/xen/arch/arm/smpboot.c b/xen/arch/arm/smpboot.c index f7bda3a18b..bfa988c162 100644 --- a/xen/arch/arm/smpboot.c +++ b/xen/arch/arm/smpboot.c @@ -562,7 +562,7 @@ static int cpu_smpboot_callback(struct notifier_block *nfb, break; } - return !rc ? NOTIFY_DONE : notifier_from_errno(rc); + return notifier_from_errno(rc); } static struct notifier_block cpu_smpboot_nfb = { diff --git a/xen/arch/x86/acpi/cpu_idle.c b/xen/arch/x86/acpi/cpu_idle.c index 557bc6ef86..427c8c89c5 100644 --- a/xen/arch/x86/acpi/cpu_idle.c +++ b/xen/arch/x86/acpi/cpu_idle.c @@ -1663,7 +1663,7 @@ static int cf_check cpu_callback( break; } - return !rc ? NOTIFY_DONE : notifier_from_errno(rc); + return notifier_from_errno(rc); } static struct notifier_block cpu_nfb = { diff --git a/xen/arch/x86/cpu/mcheck/mce.c b/xen/arch/x86/cpu/mcheck/mce.c index f68e31b643..3e93bdd8da 100644 --- a/xen/arch/x86/cpu/mcheck/mce.c +++ b/xen/arch/x86/cpu/mcheck/mce.c @@ -757,7 +757,7 @@ static int cf_check cpu_callback( break; } - return !rc ? NOTIFY_DONE : notifier_from_errno(rc); + return notifier_from_errno(rc); } static struct notifier_block cpu_nfb = { diff --git a/xen/arch/x86/cpu/mcheck/mce_intel.c b/xen/arch/x86/cpu/mcheck/mce_intel.c index 28a605a5cb..301533722d 100644 --- a/xen/arch/x86/cpu/mcheck/mce_intel.c +++ b/xen/arch/x86/cpu/mcheck/mce_intel.c @@ -951,7 +951,7 @@ static int cf_check cpu_callback( break; } - return !rc ? NOTIFY_DONE : notifier_from_errno(rc); + return notifier_from_errno(rc); } static struct notifier_block cpu_nfb = { diff --git a/xen/arch/x86/cpu/mwait-idle.c b/xen/arch/x86/cpu/mwait-idle.c index ffdc6fb2fc..9e981e7e26 100644 --- a/xen/arch/x86/cpu/mwait-idle.c +++ b/xen/arch/x86/cpu/mwait-idle.c @@ -1537,7 +1537,7 @@ static int cf_check mwait_idle_cpu_init( dev = processor_powers[cpu]; if (!rc && cpuidle_current_governor->enable) rc = cpuidle_current_governor->enable(dev); - return !rc ? NOTIFY_DONE : notifier_from_errno(rc); + return notifier_from_errno(rc); case CPU_ONLINE: if (!dev) diff --git a/xen/arch/x86/genapic/x2apic.c b/xen/arch/x86/genapic/x2apic.c index 7dfc793514..f73390cdb0 100644 --- a/xen/arch/x86/genapic/x2apic.c +++ b/xen/arch/x86/genapic/x2apic.c @@ -221,7 +221,7 @@ static int cf_check update_clusterinfo( break; } - return !err ? NOTIFY_DONE : notifier_from_errno(err); + return notifier_from_errno(err); } static struct notifier_block x2apic_cpu_nfb = { diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index ae4368ec4b..02f5f3b359 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -139,7 +139,7 @@ static int cf_check cpu_callback( break; } - return !rc ? NOTIFY_DONE : notifier_from_errno(rc); + return notifier_from_errno(rc); } static struct notifier_block cpu_nfb = { diff --git a/xen/arch/x86/percpu.c b/xen/arch/x86/percpu.c index 46460689b7..288050cdba 100644 --- a/xen/arch/x86/percpu.c +++ b/xen/arch/x86/percpu.c @@ -86,7 +86,7 @@ static int cf_check cpu_percpu_callback( break; } - return !rc ? NOTIFY_DONE : notifier_from_errno(rc); + return notifier_from_errno(rc); } static struct notifier_block cpu_percpu_nfb = { diff --git a/xen/arch/x86/psr.c b/xen/arch/x86/psr.c index ccb761998f..a1e0af27c5 100644 --- a/xen/arch/x86/psr.c +++ b/xen/arch/x86/psr.c @@ -1663,7 +1663,7 @@ static int cf_check cpu_callback( break; } - return !rc ? NOTIFY_DONE : notifier_from_errno(rc); + return notifier_from_errno(rc); } static struct notifier_block cpu_nfb = { diff --git a/xen/arch/x86/smpboot.c b/xen/arch/x86/smpboot.c index b46fd9ab18..a238aa1f14 100644 --- a/xen/arch/x86/smpboot.c +++ b/xen/arch/x86/smpboot.c @@ -1144,7 +1144,7 @@ static int cf_check cpu_smpboot_callback( break; } - return !rc ? NOTIFY_DONE : notifier_from_errno(rc); + return notifier_from_errno(rc); } static struct notifier_block cpu_smpboot_nfb = { diff --git a/xen/common/cpu.c b/xen/common/cpu.c index 778b6820b7..8709db4d29 100644 --- a/xen/common/cpu.c +++ b/xen/common/cpu.c @@ -82,7 +82,7 @@ static int cpu_notifier_call_chain(unsigned int cpu, unsigned long action, { void *hcpu = (void *)(long)cpu; int notifier_rc = notifier_call_chain(&cpu_chain, action, hcpu, nb); - int ret = (notifier_rc == NOTIFY_DONE) ? 0 : notifier_to_errno(notifier_rc); + int ret = notifier_to_errno(notifier_rc); BUG_ON(ret && nofail); diff --git a/xen/common/sched/core.c b/xen/common/sched/core.c index 43132ff6e0..022f548652 100644 --- a/xen/common/sched/core.c +++ b/xen/common/sched/core.c @@ -2903,7 +2903,7 @@ static int cf_check cpu_schedule_callback( rcu_read_unlock(&sched_res_rculock); - return !rc ? NOTIFY_DONE : notifier_from_errno(rc); + return notifier_from_errno(rc); } static struct notifier_block cpu_schedule_nfb = { diff --git a/xen/common/sched/cpupool.c b/xen/common/sched/cpupool.c index bdf6030ab0..2e094b0cfa 100644 --- a/xen/common/sched/cpupool.c +++ b/xen/common/sched/cpupool.c @@ -1074,7 +1074,7 @@ static int cf_check cpu_callback( break; } - return !rc ? NOTIFY_DONE : notifier_from_errno(rc); + return notifier_from_errno(rc); } static struct notifier_block cpu_nfb = { diff --git a/xen/include/xen/notifier.h b/xen/include/xen/notifier.h index 0921213298..3d6017d4f7 100644 --- a/xen/include/xen/notifier.h +++ b/xen/include/xen/notifier.h @@ -58,13 +58,13 @@ int notifier_call_chain( /* Encapsulate (negative) errno value. */ static inline int notifier_from_errno(int err) { - return NOTIFY_STOP_MASK | -err; + return err ? (NOTIFY_STOP_MASK | -err) : NOTIFY_DONE; } /* Restore (negative) errno value from notify return value. */ static inline int notifier_to_errno(int ret) { - return -(ret & ~NOTIFY_STOP_MASK); + return (ret == NOTIFY_DONE) ? 0 : -(ret & ~NOTIFY_STOP_MASK); } #endif /* __XEN_NOTIFIER_H__ */