From: SeongJae Park <sj@kernel.org>
To: "Liam R. Howlett" <Liam.Howlett@oracle.com>
Cc: SeongJae Park <sj@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
"Matthew Wilcox (Oracle)" <willy@infradead.org>,
David Hildenbrand <david@redhat.com>,
Brendan Higgins <brendanhiggins@google.com>,
David Gow <davidgow@google.com>,
damon@lists.linux.dev, linux-mm@kvack.org,
kunit-dev@googlegroups.com, linux-kselftest@vger.kernel.org,
linux-kernel@vger.kernel.org, Guenter Roeck <linux@roeck-us.net>
Subject: Re: [PATCH] mm/damon/tests/vaddr-kunit: don't use mas_lock for MM_MT_FLAGS-initialized maple tree
Date: Tue, 3 Sep 2024 17:58:15 -0700 [thread overview]
Message-ID: <20240904005815.1388-1-sj@kernel.org> (raw)
In-Reply-To: <jy6263g6em4jsdhp6tknmh2cljpuvq652kvcet4ko3z2xt7pym@ltc5h5twsszu>
On Tue, 3 Sep 2024 20:48:53 -0400 "Liam R. Howlett" <Liam.Howlett@oracle.com> wrote:
> * SeongJae Park <sj@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.
Hmm, but lockdep was silence on my setup?
> We need a lock and to use the lock for writes.
This code is executed by a single-thread test code. Do we still need the lock?
>
> I'd suggest using different flags so the spinlock is used.
The reporter mentioned simply dropping MT_FLAGS_LOCK_EXTERN from the flags
causes suspicious RCU usage message. May I ask if you have a suggestion of
better flags?
Thanks,
SJ
>
> >
> > Reported-by: Guenter Roeck <linux@roeck-us.net>
> > Closes: https://lore.kernel.org/1453b2b2-6119-4082-ad9e-f3c5239bf87e@roeck-us.net
> > Fixes: d0cf3dd47f0d ("damon: convert __damon_va_three_regions to use the VMA iterator")
> > Signed-off-by: SeongJae Park <sj@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
> >
next prev parent reply other threads:[~2024-09-04 0:58 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-04 0:45 [PATCH] mm/damon/tests/vaddr-kunit: don't use mas_lock for MM_MT_FLAGS-initialized maple tree SeongJae Park
2024-09-04 0:48 ` Liam R. Howlett
2024-09-04 0:58 ` SeongJae Park [this message]
2024-09-04 1:18 ` SeongJae Park
2024-09-04 1:54 ` Guenter Roeck
2024-09-04 2:43 ` Liam R. Howlett
2024-09-04 17:36 ` SeongJae Park
2024-09-04 2:31 ` Liam R. Howlett
2024-09-04 2:38 ` Guenter Roeck
2024-09-04 2:46 ` Liam R. Howlett
2024-09-04 3:36 ` Liam R. Howlett
2024-09-04 4:27 ` Guenter Roeck
2024-09-04 19:26 ` Liam R. Howlett
2024-09-04 19:56 ` Guenter Roeck
2024-09-05 0:19 ` SeongJae Park
2024-09-04 16:58 ` Guenter Roeck
2024-09-04 1:28 ` Guenter Roeck
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240904005815.1388-1-sj@kernel.org \
--to=sj@kernel.org \
--cc=Liam.Howlett@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=brendanhiggins@google.com \
--cc=damon@lists.linux.dev \
--cc=david@redhat.com \
--cc=davidgow@google.com \
--cc=kunit-dev@googlegroups.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux@roeck-us.net \
--cc=willy@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.