sched: check for SD_SERIALIZE atomically in rebalance_domains()
PATCH 1/1 sched: check for SD_SERIALIZE atomically in rebalance_domains()
Nothing really serious here, mainly just a matter of nit-picking :-/
From: Dmitry Adamushko <[email protected]>
Subject: sched: check for SD_SERIALIZE atomically in rebalance_domains()
For CONFIG_SCHED_DEBUG && CONFIG_SYSCT configs, sd->flags can be altered while being manipulated in rebalance_domains(). Let's do an atomic check. We rely here on the atomicity of read/write accesses for aligned words.
---
kernel/sched.c +4 -2
@@ -4153,6 +4153,7 @@ static void rebalance_domains(int cpu, enum cpu_idle_type idle)/* Earliest time when we have to do rebalance again */ unsigned long next_balance = jiffies +60 *HZ ;int update_next_balance =0 ; +int need_serialize;cpumask_t tmp;for_each_domain (cpu, sd) {
@@ -4170,8 +4171,9 @@ static void rebalance_domains(int cpu, enum cpu_idle_type idle)if (interval >HZ *NR_CPUS /10 ) interval =HZ *NR_CPUS /10 ; + need_serialize = sd->flags &SD_SERIALIZE ; -if (sd->flags &SD_SERIALIZE ) { +if (need_serialize) {if (!spin_trylock (&balancing)) goto out; }
@@ -4187,7 +4189,7 @@ static void rebalance_domains(int cpu, enum cpu_idle_type idle) } sd->last_balance = jiffies; } -if (sd->flags &SD_SERIALIZE ) +if (need_serialize)spin_unlock (&balancing); out:if (time_after (next_balance, sd->last_balance + interval)) {
Ingo Molnar
AppliedQuoted 11 lines · Dmitry Adamushko
Nothing really serious here, mainly just a matter of nit-picking :-/
From: Dmitry Adamushko <[email protected]>
Subject: sched: check forSD_SERIALIZEatomically inrebalance_domains()For
CONFIG_SCHED_DEBUG&&CONFIG_SYSCTconfigs,sd->flagscan be altered while being manipulated inrebalance_domains(). Let's do an atomic check. We rely here on the atomicity of read/write accesses for aligned words.
applied, thanks Dmitry.
Ingo