On Thu, 2020-03-05 at 06:54 +0100, Dmitry Vyukov wrote: > On Thu, Mar 5, 2020 at 6:37 AM Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> wrote: > > > > Hi all, > > > > After merging the akpm-current tree, today's linux-next build (x86_64 > > allmodconfig) produced this warning: > > > > mm/kasan/common.o: warning: objtool: kasan_report()+0x17: call to report_enabled() with UACCESS enabled > > In file included from include/linux/bitmap.h:9, > > from include/linux/cpumask.h:12, > > from arch/x86/include/asm/paravirt.h:17, > > from arch/x86/include/asm/irqflags.h:72, > > from include/linux/irqflags.h:16, > > from include/linux/rcupdate.h:26, > > from include/linux/rculist.h:11, > > from include/linux/pid.h:5, > > from include/linux/sched.h:14, > > from include/linux/uaccess.h:6, > > from arch/x86/include/asm/fpu/xstate.h:5, > > from arch/x86/include/asm/pgtable.h:26, > > from include/linux/kasan.h:15, > > from lib/test_kasan.c:12: > > In function 'memmove', > > inlined from 'kmalloc_memmove_invalid_size' at lib/test_kasan.c:301:2: > > include/linux/string.h:441:9: warning: '__builtin_memmove' specified bound 18446744073709551614 exceeds maximum object size 9223372036854775807 [-Wstringop-overflow=] > > +kasan-dev > > We probably need to make this 18446744073709551614 constant "dynamic" > so that compiler does not see it. > > Walter, will you take a look? Thanks Hi Dmitry, Yes, I have fixed it. This warning need newer gcc enough to reproduce. Maybe I should replace original gcc-7.4.0. Thanks. --- a/lib/test_kasan.c +++ b/lib/test_kasan.c @@ -286,17 +286,19 @@ static noinline void __init kmalloc_oob_in_memset(void) static noinline void __init kmalloc_memmove_invalid_size(void) { char *ptr; - size_t size = 64; + size_t size1 = 64; + volatile size_t size2 = -2; pr_info("invalid size in memmove\n"); - ptr = kmalloc(size, GFP_KERNEL); + ptr = kmalloc(size1, GFP_KERNEL); if (!ptr) { pr_err("Allocation failed\n"); return; } - memset((char *)ptr, 0, 64); - memmove((char *)ptr, (char *)ptr + 4, -2); + memset((char *)ptr, 0, size1); + /* the size of memmove() is negative number */ + memmove((char *)ptr, (char *)ptr + 4, size2); kfree(ptr); } > > > 441 | return __builtin_memmove(p, q, size); > > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > > > Introduced by commit > > > > 519e500fac64 ("kasan: add test for invalid size in memmove") > > > > That's a bit annoying during a normal x86_64 allmodconfig build ... > > > > -- > > Cheers, > > Stephen Rothwell