All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3] mm/khugepaged: replace mutex_lock/mutex_unlock usage with guard macro
@ 2026-07-30 20:47 Jakov Novak
  2026-07-31  9:20 ` David Hildenbrand (Arm)
  2026-07-31 10:33 ` Pedro Falcato
  0 siblings, 2 replies; 5+ messages in thread
From: Jakov Novak @ 2026-07-30 20:47 UTC (permalink / raw)
  To: linux-mm, linux-kernel, linux-kernel-mentees, Andrew Morton,
	David Hildenbrand, Lorenzo Stoakes
  Cc: Zi Yan, Baolin Wang, \  Liam R . Howlett \ , Nico Pache,
	Ryan Roberts, Dev Jain, Barry Song, Lance Yang, Usama Arif,
	Shuah Khan, Jakov Novak

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.

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>
---
v2:
  - Added #include <linux/cleanup.h> to the includes at the top of the file
  - Moved err declaration to the scope where it's used in
    start_stop_khugepaged
  - Made default case return 0 instead of err in start_stop_khugepaged
v3:
  - Moved new thread creation logic inside if (!khugepaged_thread) block
    in start_stop_khugepaged
  - Removed suboptimal err variable

 mm/khugepaged.c | 31 +++++++++++++++----------------
 1 file changed, 15 insertions(+), 16 deletions(-)

diff --git a/mm/khugepaged.c b/mm/khugepaged.c
index 617bca76db49..97f61a050f7c 100644
--- a/mm/khugepaged.c
+++ b/mm/khugepaged.c
@@ -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"
@@ -3111,18 +3112,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))
@@ -3132,17 +3134,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)
-- 
2.55.0



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v3] mm/khugepaged: replace mutex_lock/mutex_unlock usage with guard macro
  2026-07-30 20:47 [PATCH v3] mm/khugepaged: replace mutex_lock/mutex_unlock usage with guard macro Jakov Novak
@ 2026-07-31  9:20 ` David Hildenbrand (Arm)
  2026-07-31 10:33 ` Pedro Falcato
  1 sibling, 0 replies; 5+ messages in thread
From: David Hildenbrand (Arm) @ 2026-07-31  9:20 UTC (permalink / raw)
  To: Jakov Novak, linux-mm, linux-kernel, linux-kernel-mentees,
	Andrew Morton, Lorenzo Stoakes
  Cc: Zi Yan, Baolin Wang, \ Liam R . Howlett \, Nico Pache,
	Ryan Roberts, Dev Jain, Barry Song, Lance Yang, Usama Arif,
	Shuah Khan

On 7/30/26 22:47, Jakov Novak wrote:
> 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.
> 
> 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>
> ---
> v2:
>   - Added #include <linux/cleanup.h> to the includes at the top of the file
>   - Moved err declaration to the scope where it's used in
>     start_stop_khugepaged
>   - Made default case return 0 instead of err in start_stop_khugepaged
> v3:
>   - Moved new thread creation logic inside if (!khugepaged_thread) block
>     in start_stop_khugepaged
>   - Removed suboptimal err variable
> 
>  mm/khugepaged.c | 31 +++++++++++++++----------------
>  1 file changed, 15 insertions(+), 16 deletions(-)
> 
> diff --git a/mm/khugepaged.c b/mm/khugepaged.c
> index 617bca76db49..97f61a050f7c 100644
> --- a/mm/khugepaged.c
> +++ b/mm/khugepaged.c
> @@ -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"
> @@ -3111,18 +3112,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");


Nit: we can exceed 80c to increase readability.

Acked-by: David Hildenbrand (Arm) <david@kernel.org>

-- 
Cheers,

David


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v3] mm/khugepaged: replace mutex_lock/mutex_unlock usage with guard macro
  2026-07-30 20:47 [PATCH v3] mm/khugepaged: replace mutex_lock/mutex_unlock usage with guard macro Jakov Novak
  2026-07-31  9:20 ` David Hildenbrand (Arm)
@ 2026-07-31 10:33 ` Pedro Falcato
  2026-07-31 18:25   ` Andrew Morton
  1 sibling, 1 reply; 5+ messages in thread
From: Pedro Falcato @ 2026-07-31 10:33 UTC (permalink / raw)
  To: Jakov Novak, Andrew Morton
  Cc: linux-mm, linux-kernel, linux-kernel-mentees, David Hildenbrand,
	Lorenzo Stoakes, Zi Yan, Baolin Wang, \  Liam R . Howlett \ ,
	Nico Pache, Ryan Roberts, Dev Jain, Barry Song, Lance Yang,
	Usama Arif, Shuah Khan

On Thu, Jul 30, 2026 at 10:47:24PM +0200, Jakov Novak wrote:
> 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.
> 
> 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>

Hmm, did Andrew actually give this R-b tag out? I can't find it on-list. 

-- 
Pedro


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v3] mm/khugepaged: replace mutex_lock/mutex_unlock usage with guard macro
  2026-07-31 10:33 ` Pedro Falcato
@ 2026-07-31 18:25   ` Andrew Morton
  2026-07-31 18:38     ` Jakov Novak
  0 siblings, 1 reply; 5+ messages in thread
From: Andrew Morton @ 2026-07-31 18:25 UTC (permalink / raw)
  To: Pedro Falcato
  Cc: Jakov Novak, linux-mm, linux-kernel, linux-kernel-mentees,
	David Hildenbrand, Lorenzo Stoakes, Zi Yan, Baolin Wang,
	\  Liam R . Howlett \ , Nico Pache, Ryan Roberts, Dev Jain,
	Barry Song, Lance Yang, Usama Arif, Shuah Khan

On Fri, 31 Jul 2026 11:33:47 +0100 Pedro Falcato <pfalcato@suse.de> wrote:

> On Thu, Jul 30, 2026 at 10:47:24PM +0200, Jakov Novak wrote:
> > 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.
> > 
> > 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>
> 
> Hmm, did Andrew actually give this R-b tag out? I can't find it on-list. 

I don't think so.  Hallucination ;)

I do sometimes sneak in an offlist R-b when I'm looking at things but
I'm pretty inconsistent and lazy about it.

<looks at it again>

Reviewed-by: Andrew Morton <akpm@linux-foundation.org>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v3] mm/khugepaged: replace mutex_lock/mutex_unlock usage with guard macro
  2026-07-31 18:25   ` Andrew Morton
@ 2026-07-31 18:38     ` Jakov Novak
  0 siblings, 0 replies; 5+ messages in thread
From: Jakov Novak @ 2026-07-31 18:38 UTC (permalink / raw)
  To: Andrew Morton, Pedro Falcato
  Cc: linux-mm, linux-kernel, linux-kernel-mentees, David Hildenbrand,
	Lorenzo Stoakes, Zi Yan, Baolin Wang, \  Liam R . Howlett \ ,
	Nico Pache, Ryan Roberts, Dev Jain, Barry Song, Lance Yang,
	Usama Arif, Shuah Khan




>> > Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
>> 
>> Hmm, did Andrew actually give this R-b tag out? I can't find it on-list. 
>
>I don't think so.  Hallucination ;)
>
>I do sometimes sneak in an offlist R-b when I'm looking at things but
>I'm pretty inconsistent and lazy about it.

I saw the tag on the mm-new git [1] and I wasn't completely sure if it should be included in the next patch. Sorry about that.

As a general rule, offlist tags should never be copied?

[1] https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/mm-khugepaged-replace-mutex_lock-mutex_unlock-usage-with-guard-macro.patch


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2026-07-31 18:38 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-30 20:47 [PATCH v3] mm/khugepaged: replace mutex_lock/mutex_unlock usage with guard macro Jakov Novak
2026-07-31  9:20 ` David Hildenbrand (Arm)
2026-07-31 10:33 ` Pedro Falcato
2026-07-31 18:25   ` Andrew Morton
2026-07-31 18:38     ` Jakov Novak

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.