From 409c82ef25583f35ec53d0f574484d3c3c4fb5f1 Mon Sep 17 00:00:00 2001 From: Jemmy Wong Date: Sat, 14 Jun 2025 15:27:13 +0800 Subject: [PATCH v0 04/13] sched/cpuacct: Scope-based Resource Management Support This change replaces manual lock acquisition and release with lock guards to improve code robustness and reduce the risk of lock mismanagement. Signed-off-by: Jemmy Wong --- kernel/sched/cpuacct.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/kernel/sched/cpuacct.c b/kernel/sched/cpuacct.c index 0de9dda09949..c6ba078ae4f6 100644 --- a/kernel/sched/cpuacct.c +++ b/kernel/sched/cpuacct.c @@ -109,7 +109,7 @@ static u64 cpuacct_cpuusage_read(struct cpuacct *ca, int cpu, /* * Take rq->lock to make 64-bit read safe on 32-bit platforms. */ - raw_spin_rq_lock_irq(cpu_rq(cpu)); + guard(raw_spin_rq_lock_irq)(cpu_rq(cpu)); #endif switch (index) { @@ -125,10 +125,6 @@ static u64 cpuacct_cpuusage_read(struct cpuacct *ca, int cpu, break; } -#ifndef CONFIG_64BIT - raw_spin_rq_unlock_irq(cpu_rq(cpu)); -#endif - return data; } @@ -145,16 +141,12 @@ static void cpuacct_cpuusage_write(struct cpuacct *ca, int cpu) /* * Take rq->lock to make 64-bit write safe on 32-bit platforms. */ - raw_spin_rq_lock_irq(cpu_rq(cpu)); + guard(raw_spin_rq_lock_irq)(cpu_rq(cpu)); #endif *cpuusage = 0; cpustat[CPUTIME_USER] = cpustat[CPUTIME_NICE] = 0; cpustat[CPUTIME_SYSTEM] = cpustat[CPUTIME_IRQ] = 0; cpustat[CPUTIME_SOFTIRQ] = 0; - -#ifndef CONFIG_64BIT - raw_spin_rq_unlock_irq(cpu_rq(cpu)); -#endif } /* Return total CPU usage (in nanoseconds) of a group */ -- 2.43.0