diff mbox series

mm/mlock: Fix WARN_ON_ONCE condition.

Message ID 20250207060448.146606-1-liuye@kylinos.cn (mailing list archive)
State New
Headers show
Series mm/mlock: Fix WARN_ON_ONCE condition. | expand

Commit Message

liuye Feb. 7, 2025, 6:04 a.m. UTC
The condition in WARN_ON_ONCE(cpu_online(cpu)) should be !cpu_online(cpu)
to ensure the warning is triggered when the CPU is offline.

Signed-off-by: Liu Ye <liuye@kylinos.cn>
---
 mm/mlock.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Dev Jain Feb. 7, 2025, 7:09 a.m. UTC | #1
On 07/02/25 11:34 am, Liu Ye wrote:
> The condition in WARN_ON_ONCE(cpu_online(cpu)) should be !cpu_online(cpu)
> to ensure the warning is triggered when the CPU is offline.
> 
> Signed-off-by: Liu Ye <liuye@kylinos.cn>
> ---
>   mm/mlock.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/mm/mlock.c b/mm/mlock.c
> index cde076fa7d5e..40acf7897917 100644
> --- a/mm/mlock.c
> +++ b/mm/mlock.c
> @@ -224,7 +224,7 @@ void mlock_drain_remote(int cpu)
>   {
>   	struct folio_batch *fbatch;
>   
> -	WARN_ON_ONCE(cpu_online(cpu));
> +	WARN_ON_ONCE(!cpu_online(cpu));
>   	fbatch = &per_cpu(mlock_fbatch.fbatch, cpu);
>   	if (folio_batch_count(fbatch))
>   		mlock_folio_batch(fbatch);


No idea about this code path but mlock_drain_remote() is called by 
page_alloc_cpu_dead() which expects an offlined CPU according to the 
comments.
Lorenzo Stoakes Feb. 7, 2025, 9:28 a.m. UTC | #2
On Fri, Feb 07, 2025 at 02:04:48PM +0800, Liu Ye wrote:
> The condition in WARN_ON_ONCE(cpu_online(cpu)) should be !cpu_online(cpu)
> to ensure the warning is triggered when the CPU is offline.
>
> Signed-off-by: Liu Ye <liuye@kylinos.cn>

NACK.

This is a really odd patch to send, if you were right we'd be seeing
constant warnings on this no? And as per Dev, this seems completely wrong?

You also MUST provide more justification if you're going to do something as
crazy as this. An 'it's wrong because I say it is' isn't acceptable on any
level whatsoever.

> ---
>  mm/mlock.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/mm/mlock.c b/mm/mlock.c
> index cde076fa7d5e..40acf7897917 100644
> --- a/mm/mlock.c
> +++ b/mm/mlock.c
> @@ -224,7 +224,7 @@ void mlock_drain_remote(int cpu)
>  {
>  	struct folio_batch *fbatch;
>
> -	WARN_ON_ONCE(cpu_online(cpu));
> +	WARN_ON_ONCE(!cpu_online(cpu));
>  	fbatch = &per_cpu(mlock_fbatch.fbatch, cpu);
>  	if (folio_batch_count(fbatch))
>  		mlock_folio_batch(fbatch);
> --
> 2.25.1
>
diff mbox series

Patch

diff --git a/mm/mlock.c b/mm/mlock.c
index cde076fa7d5e..40acf7897917 100644
--- a/mm/mlock.c
+++ b/mm/mlock.c
@@ -224,7 +224,7 @@  void mlock_drain_remote(int cpu)
 {
 	struct folio_batch *fbatch;
 
-	WARN_ON_ONCE(cpu_online(cpu));
+	WARN_ON_ONCE(!cpu_online(cpu));
 	fbatch = &per_cpu(mlock_fbatch.fbatch, cpu);
 	if (folio_batch_count(fbatch))
 		mlock_folio_batch(fbatch);