mirror of
https://github.com/torvalds/linux.git
synced 2026-09-23 21:38:24 +02:00
mm/khugepaged: replace mutex_lock/mutex_unlock usage with guard macro
Currently, khugepaged locks the khugepaged_mutex in two functions: start_stop_khugepaged and khugepaged_min_free_kbytes_update. Remove mutex_lock/mutex_unlock usage in these functions and replace it with the guard macro. This makes the code more readable (removing a goto statement) and makes it harder to introduce bugs in the future. No functional changes introduced. Link: https://lore.kernel.org/20260730204724.16912-1-jakovnovak30@gmail.com Signed-off-by: Jakov Novak <jakovnovak30@gmail.com> Reviewed-by: Dev Jain <dev.jain@arm.com> Reviewed-by: Lorenzo Stoakes (ARM) <ljs@kernel.org> Reviewed-by: Andrew Morton <akpm@linux-foundation.org> Reviewed-by: Zi Yan <ziy@nvidia.com> Acked-by: David Hildenbrand (Arm) <david@kernel.org> Cc: Baolin Wang <baolin.wang@linux.alibaba.com> Cc: Barry Song <baohua@kernel.org> Cc: Lance Yang <lance.yang@linux.dev> Cc: Liam R. Howlett <liam@infradead.org> Cc: Nico Pache <npache@redhat.com> Cc: Ryan Roberts <ryan.roberts@arm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
f276408a81
commit
0ec282155c
|
|
@ -23,6 +23,7 @@
|
|||
#include <linux/ksm.h>
|
||||
#include <linux/pgalloc.h>
|
||||
#include <linux/backing-dev.h>
|
||||
#include <linux/cleanup.h>
|
||||
|
||||
#include <asm/tlb.h>
|
||||
#include "internal.h"
|
||||
|
|
@ -3115,18 +3116,19 @@ void set_recommended_min_free_kbytes(void)
|
|||
|
||||
int start_stop_khugepaged(void)
|
||||
{
|
||||
int err = 0;
|
||||
|
||||
mutex_lock(&khugepaged_mutex);
|
||||
guard(mutex)(&khugepaged_mutex);
|
||||
if (hugepage_enabled()) {
|
||||
if (!khugepaged_thread)
|
||||
khugepaged_thread = kthread_run(khugepaged, NULL,
|
||||
"khugepaged");
|
||||
if (IS_ERR(khugepaged_thread)) {
|
||||
pr_err("khugepaged: kthread_run(khugepaged) failed\n");
|
||||
err = PTR_ERR(khugepaged_thread);
|
||||
khugepaged_thread = NULL;
|
||||
goto fail;
|
||||
if (!khugepaged_thread) {
|
||||
struct task_struct *new_thread = kthread_run(khugepaged,
|
||||
NULL,
|
||||
"khugepaged");
|
||||
|
||||
if (IS_ERR(new_thread)) {
|
||||
pr_err("khugepaged: kthread_run(khugepaged) failed\n");
|
||||
return PTR_ERR(new_thread);
|
||||
}
|
||||
|
||||
khugepaged_thread = new_thread;
|
||||
}
|
||||
|
||||
if (!list_empty(&khugepaged_scan.mm_head))
|
||||
|
|
@ -3136,17 +3138,14 @@ int start_stop_khugepaged(void)
|
|||
khugepaged_thread = NULL;
|
||||
}
|
||||
set_recommended_min_free_kbytes();
|
||||
fail:
|
||||
mutex_unlock(&khugepaged_mutex);
|
||||
return err;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void khugepaged_min_free_kbytes_update(void)
|
||||
{
|
||||
mutex_lock(&khugepaged_mutex);
|
||||
guard(mutex)(&khugepaged_mutex);
|
||||
if (hugepage_enabled() && khugepaged_thread)
|
||||
set_recommended_min_free_kbytes();
|
||||
mutex_unlock(&khugepaged_mutex);
|
||||
}
|
||||
|
||||
bool current_is_khugepaged(void)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user