Re: [PATCH] fix comparison of unsigned expression < 0

From: Haibo Li
Date: Tue Nov 28 2023 - 22:43:12 EST


> On Wed, Nov 29, 2023 at 2:22 AM Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> wrote:
> >
> > On Tue, 28 Nov 2023 15:55:32 +0800 Haibo Li <haibo.li@xxxxxxxxxxxx> wrote:
> >
> > > Kernel test robot reported:
> > >
> > > '''
> > > mm/kasan/report.c:637 kasan_non_canonical_hook() warn:
> > > unsigned 'addr' is never less than zero.
> > > '''
> > > The KASAN_SHADOW_OFFSET is 0 on loongarch64.
> > >
> > > To fix it,check the KASAN_SHADOW_OFFSET before do comparison.
> > >
> > > --- a/mm/kasan/report.c
> > > +++ b/mm/kasan/report.c
> > > @@ -634,10 +634,10 @@ void kasan_non_canonical_hook(unsigned long addr)
> > > {
> > > unsigned long orig_addr;
> > > const char *bug_type;
> > > -
> > > +#if KASAN_SHADOW_OFFSET > 0
> > > if (addr < KASAN_SHADOW_OFFSET)
> > > return;
> > > -
> > > +#endif
> >
> > We'd rather not add ugly ifdefs for a simple test like this. If we
> > replace "<" with "<=", does it fix? I suspect that's wrong.
>
> Changing the comparison into "<=" would be wrong.
>
> But I actually don't think we need to fix anything here.
>
> This issue looks quite close to a similar comparison with 0 issue
> Linus shared his opinion on here:
>
> https://lore.kernel.org/all/Pine.LNX.4.58.0411230958260.20993@xxxxxxxxxxxxxxx/
>
> I don't know if the common consensus with the regard to issues like
> that changed since then. But if not, perhaps we can treat this kernel
> test robot report as a false positive.
>
> Thanks!

Thanks for the information.Let's keep it as unchanged.