The following commit has been merged into the sched/core branch of tip: Commit-ID: fc1055d5334f1808e3e445592a83f31624b953f1 Gitweb: https://git.kernel.org/tip/fc1055d5334f1808e3e445592a83f31624b953f1 Author: K Prateek Nayak <kprateek.nayak@xxxxxxx> AuthorDate: Mon, 23 Dec 2024 04:34:01 Committer: Peter Zijlstra <peterz@xxxxxxxxxxxxx> CommitterDate: Mon, 13 Jan 2025 14:10:23 +01:00 x86/itmt: Use guard() for itmt_update_mutex Use guard() for itmt_update_mutex which avoids the extra mutex_unlock() in the bailout and return paths. Signed-off-by: K Prateek Nayak <kprateek.nayak@xxxxxxx> Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx> Reviewed-by: Tim Chen <tim.c.chen@xxxxxxxxxxxxxxx> Link: https://lore.kernel.org/r/20241223043407.1611-3-kprateek.nayak@xxxxxxx --- arch/x86/kernel/itmt.c | 29 ++++++++--------------------- 1 file changed, 8 insertions(+), 21 deletions(-) diff --git a/arch/x86/kernel/itmt.c b/arch/x86/kernel/itmt.c index 28f4491..ee43d1b 100644 --- a/arch/x86/kernel/itmt.c +++ b/arch/x86/kernel/itmt.c @@ -44,12 +44,10 @@ static int sched_itmt_update_handler(const struct ctl_table *table, int write, unsigned int old_sysctl; int ret; - mutex_lock(&itmt_update_mutex); + guard(mutex)(&itmt_update_mutex); - if (!sched_itmt_capable) { - mutex_unlock(&itmt_update_mutex); + if (!sched_itmt_capable) return -EINVAL; - } old_sysctl = sysctl_sched_itmt_enabled; ret = proc_dointvec_minmax(table, write, buffer, lenp, ppos); @@ -59,8 +57,6 @@ static int sched_itmt_update_handler(const struct ctl_table *table, int write, rebuild_sched_domains(); } - mutex_unlock(&itmt_update_mutex); - return ret; } @@ -97,18 +93,14 @@ static struct ctl_table_header *itmt_sysctl_header; */ int sched_set_itmt_support(void) { - mutex_lock(&itmt_update_mutex); + guard(mutex)(&itmt_update_mutex); - if (sched_itmt_capable) { - mutex_unlock(&itmt_update_mutex); + if (sched_itmt_capable) return 0; - } itmt_sysctl_header = register_sysctl("kernel", itmt_kern_table); - if (!itmt_sysctl_header) { - mutex_unlock(&itmt_update_mutex); + if (!itmt_sysctl_header) return -ENOMEM; - } sched_itmt_capable = true; @@ -117,8 +109,6 @@ int sched_set_itmt_support(void) x86_topology_update = true; rebuild_sched_domains(); - mutex_unlock(&itmt_update_mutex); - return 0; } @@ -134,12 +124,11 @@ int sched_set_itmt_support(void) */ void sched_clear_itmt_support(void) { - mutex_lock(&itmt_update_mutex); + guard(mutex)(&itmt_update_mutex); - if (!sched_itmt_capable) { - mutex_unlock(&itmt_update_mutex); + if (!sched_itmt_capable) return; - } + sched_itmt_capable = false; if (itmt_sysctl_header) { @@ -153,8 +142,6 @@ void sched_clear_itmt_support(void) x86_topology_update = true; rebuild_sched_domains(); } - - mutex_unlock(&itmt_update_mutex); } int arch_asym_cpu_priority(int cpu)