From: Dennis Zhou <dennis@kernel.org>
To: Tom Rix <trix@redhat.com>
Cc: tj@kernel.org, cl@linux.com, akpm@linux-foundation.org,
linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] percpu: initialize best_upa variable
Date: Thu, 27 May 2021 20:24:56 +0000 [thread overview]
Message-ID: <YLAAGCeCyVKGxO+V@google.com> (raw)
In-Reply-To: <YKKAGbOyRSX5jmxY@google.com>
Hello,
On Mon, May 17, 2021 at 02:39:21PM +0000, Dennis Zhou wrote:
> On Mon, May 17, 2021 at 06:17:47AM -0700, Tom Rix wrote:
> >
> > On 5/16/21 7:05 PM, Dennis Zhou wrote:
> > > Hello,
> > >
> > > On Sat, May 15, 2021 at 11:08:17AM -0700, trix@redhat.com wrote:
> > > > From: Tom Rix <trix@redhat.com>
> > > >
> > > > Static analysis reports this problem
> > > > percpu.c:2945:6: warning: Assigned value is garbage or undefined
> > > > upa = best_upa;
> > > > ^ ~~~~~~~~
> > > > best_upa may not be set, so initialize it.
> > > >
> > > > Signed-off-by: Tom Rix <trix@redhat.com>
> > > > ---
> > > > mm/percpu.c | 1 +
> > > > 1 file changed, 1 insertion(+)
> > > >
> > > > diff --git a/mm/percpu.c b/mm/percpu.c
> > > > index a257c3efdf18b..6578b706fae81 100644
> > > > --- a/mm/percpu.c
> > > > +++ b/mm/percpu.c
> > > > @@ -2916,6 +2916,7 @@ static struct pcpu_alloc_info * __init __flatten pcpu_build_alloc_info(
> > > > * Related to atom_size, which could be much larger than the unit_size.
> > > > */
> > > > last_allocs = INT_MAX;
> > > > + best_upa = max_upa;
> > > > for (upa = max_upa; upa; upa--) {
> > > > int allocs = 0, wasted = 0;
> > > > --
> > > > 2.26.3
> > > >
> > > I think the proper fix would be:
> > >
> > > best_upa = 0;
> >
> > I was looking for initializing with something that would work.
> >
>
> I think I prefer setting it to 0 because it forces the loop to have
> succeeded vs being able to bypass it if the for loop logic was changed.
>
> > > for (...) { }
> > > BUG_ON(!best_upa);
> > WARN_ON instead?
>
> This is initialization code. So if upa == 0, it really is a problem.
> Having 0 units per allocation is bogus.
>
> > > upa = best_upa;
> > >
> > > If you're fine with this I'll make the changes and apply it to
> > > for-5.13-fixes.
> > >
> > > Can you also tell me what static analysis tool produced this? I'm just a
> > > little curious because this code hasn't changed in several years so I'd
> > > have expected some static analyzer to have caught this by now.
> >
> > Clang 10
> >
> > Tom
> >
>
> Thanks,
> Dennis
Following up here. Are you find with me making the changes and
attributing it to you? Otherwise I can just spin another patch real
quick.
At this point I've already sent my PR for-5.13-fixes. So I'll queue some
fix for-5.14.
Thanks,
Dennis
next prev parent reply other threads:[~2021-05-27 20:25 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-15 18:08 [PATCH] percpu: initialize best_upa variable trix
2021-05-16 23:45 ` Wonhyuk Yang
2021-05-17 2:05 ` Dennis Zhou
2021-05-17 11:06 ` Wonhyuk Yang
2021-05-17 13:17 ` Tom Rix
2021-05-17 14:39 ` Dennis Zhou
2021-05-27 20:24 ` Dennis Zhou [this message]
2021-05-27 21:09 ` Tom Rix
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=YLAAGCeCyVKGxO+V@google.com \
--to=dennis@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=cl@linux.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=tj@kernel.org \
--cc=trix@redhat.com \
/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.