Messages in this thread | | | Date | Tue, 28 Nov 2023 17:22:38 -0800 | From | Andrew Morton <> | Subject | Re: [PATCH] fix comparison of unsigned expression < 0 |
| |
On Tue, 28 Nov 2023 15:55:32 +0800 Haibo Li <haibo.li@mediatek.com> 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.
But really, some hardwired comparison with an absolute address seems lazy. If KASAN_SHADOW_OFFSET is variable on a per-architecture basis then the expression which checks the validity of an arbitrary address should also be per-architecture.
| |