* SeongJae Park <s...@kernel.org> [240903 20:45]:
> damon_test_three_regions_in_vmas() initializes a maple tree with
> MM_MT_FLAGS.  The flags contains MT_FLAGS_LOCK_EXTERN, which means
> mt_lock of the maple tree will not be used.  And therefore the maple
> tree initialization code skips initialization of the mt_lock.  However,
> __link_vmas(), which adds vmas for test to the maple tree, uses the
> mt_lock.  In other words, the uninitialized spinlock is used.  The
> problem becomes celar when spinlock debugging is turned on, since it
> reports spinlock bad magic bug.  Fix the issue by not using the mt_lock
> as promised.

You can't do this, lockdep will tell you this is wrong.  We need a lock
and to use the lock for writes.

I'd suggest using different flags so the spinlock is used.

> 
> Reported-by: Guenter Roeck <li...@roeck-us.net>
> Closes: 
> https://lore.kernel.org/1453b2b2-6119-4082-ad9e-f3c5239bf...@roeck-us.net
> Fixes: d0cf3dd47f0d ("damon: convert __damon_va_three_regions to use the VMA 
> iterator")
> Signed-off-by: SeongJae Park <s...@kernel.org>
> ---
>  mm/damon/tests/vaddr-kunit.h | 10 +++-------
>  1 file changed, 3 insertions(+), 7 deletions(-)
> 
> diff --git a/mm/damon/tests/vaddr-kunit.h b/mm/damon/tests/vaddr-kunit.h
> index 83626483f82b..c6c7e0e0ab07 100644
> --- a/mm/damon/tests/vaddr-kunit.h
> +++ b/mm/damon/tests/vaddr-kunit.h
> @@ -17,23 +17,19 @@
>  static int __link_vmas(struct maple_tree *mt, struct vm_area_struct *vmas,
>                       ssize_t nr_vmas)
>  {
> -     int i, ret = -ENOMEM;
> +     int i;
>       MA_STATE(mas, mt, 0, 0);
>  
>       if (!nr_vmas)
>               return 0;
>  
> -     mas_lock(&mas);
>       for (i = 0; i < nr_vmas; i++) {
>               mas_set_range(&mas, vmas[i].vm_start, vmas[i].vm_end - 1);
>               if (mas_store_gfp(&mas, &vmas[i], GFP_KERNEL))
> -                     goto failed;
> +                     return -ENOMEM;
>       }
>  
> -     ret = 0;
> -failed:
> -     mas_unlock(&mas);
> -     return ret;
> +     return 0;
>  }
>  
>  /*
> -- 
> 2.39.2
> 

Reply via email to