From e885480d3ace953cde244da84477cc07f8b07c0c Mon Sep 17 00:00:00 2001 From: Heiko Carstens Date: Wed, 22 Oct 2008 10:00:26 -0500 Subject: [PATCH] --- yaml --- r: 117086 b: refs/heads/master c: 8163bcac779f62c6bf847caed9bce905db0693fb h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/kernel/stop_machine.c | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 05d7a962e4d7..eadce21c8c3c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c9583e55fa2b08a230c549bd1e3c0bde6c50d9cc +refs/heads/master: 8163bcac779f62c6bf847caed9bce905db0693fb diff --git a/trunk/kernel/stop_machine.c b/trunk/kernel/stop_machine.c index 0e688c6a1a63..8aff79d90ddc 100644 --- a/trunk/kernel/stop_machine.c +++ b/trunk/kernel/stop_machine.c @@ -66,6 +66,7 @@ static void stop_cpu(struct work_struct *unused) enum stopmachine_state curstate = STOPMACHINE_NONE; struct stop_machine_data *smdata = &idle; int cpu = smp_processor_id(); + int err; if (!active_cpus) { if (cpu == first_cpu(cpu_online_map)) @@ -86,9 +87,11 @@ static void stop_cpu(struct work_struct *unused) hard_irq_disable(); break; case STOPMACHINE_RUN: - /* |= allows error detection if functions on - * multiple CPUs. */ - smdata->fnret |= smdata->fn(smdata->data); + /* On multiple CPUs only a single error code + * is needed to tell that something failed. */ + err = smdata->fn(smdata->data); + if (err) + smdata->fnret = err; break; default: break;