2020-09-14 07:06:23

by Stephen Rothwell

[permalink] [raw]
Subject: linux-next: build warning after merge of the akpm-current tree

Hi all,

After merging the akpm-current tree, today's linux-next build (x86_64
allmodconfig) produced this warning:

In file included from lib/test_kasan_module.c:16:
lib/../mm/kasan/kasan.h:232:6: warning: conflicting types for built-in function '__asan_register_globals'; expected 'void(void *, long int)' [-Wbuiltin-declaration-mismatch]
232 | void __asan_register_globals(struct kasan_global *globals, size_t size);
| ^~~~~~~~~~~~~~~~~~~~~~~
lib/../mm/kasan/kasan.h:233:6: warning: conflicting types for built-in function '__asan_unregister_globals'; expected 'void(void *, long int)' [-Wbuiltin-declaration-mismatch]
233 | void __asan_unregister_globals(struct kasan_global *globals, size_t size);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
lib/../mm/kasan/kasan.h:235:6: warning: conflicting types for built-in function '__asan_alloca_poison'; expected 'void(void *, long int)' [-Wbuiltin-declaration-mismatch]
235 | void __asan_alloca_poison(unsigned long addr, size_t size);
| ^~~~~~~~~~~~~~~~~~~~
lib/../mm/kasan/kasan.h:236:6: warning: conflicting types for built-in function '__asan_allocas_unpoison'; expected 'void(void *, long int)' [-Wbuiltin-declaration-mismatch]
236 | void __asan_allocas_unpoison(const void *stack_top, const void *stack_bottom);
| ^~~~~~~~~~~~~~~~~~~~~~~
lib/../mm/kasan/kasan.h:238:6: warning: conflicting types for built-in function '__asan_load1'; expected 'void(void *)' [-Wbuiltin-declaration-mismatch]
238 | void __asan_load1(unsigned long addr);
| ^~~~~~~~~~~~
lib/../mm/kasan/kasan.h:239:6: warning: conflicting types for built-in function '__asan_store1'; expected 'void(void *)' [-Wbuiltin-declaration-mismatch]
239 | void __asan_store1(unsigned long addr);
| ^~~~~~~~~~~~~
lib/../mm/kasan/kasan.h:240:6: warning: conflicting types for built-in function '__asan_load2'; expected 'void(void *)' [-Wbuiltin-declaration-mismatch]
240 | void __asan_load2(unsigned long addr);
| ^~~~~~~~~~~~
lib/../mm/kasan/kasan.h:241:6: warning: conflicting types for built-in function '__asan_store2'; expected 'void(void *)' [-Wbuiltin-declaration-mismatch]
241 | void __asan_store2(unsigned long addr);
| ^~~~~~~~~~~~~
lib/../mm/kasan/kasan.h:242:6: warning: conflicting types for built-in function '__asan_load4'; expected 'void(void *)' [-Wbuiltin-declaration-mismatch]
242 | void __asan_load4(unsigned long addr);
| ^~~~~~~~~~~~
lib/../mm/kasan/kasan.h:243:6: warning: conflicting types for built-in function '__asan_store4'; expected 'void(void *)' [-Wbuiltin-declaration-mismatch]
243 | void __asan_store4(unsigned long addr);
| ^~~~~~~~~~~~~
lib/../mm/kasan/kasan.h:244:6: warning: conflicting types for built-in function '__asan_load8'; expected 'void(void *)' [-Wbuiltin-declaration-mismatch]
244 | void __asan_load8(unsigned long addr);
| ^~~~~~~~~~~~
lib/../mm/kasan/kasan.h:245:6: warning: conflicting types for built-in function '__asan_store8'; expected 'void(void *)' [-Wbuiltin-declaration-mismatch]
245 | void __asan_store8(unsigned long addr);
| ^~~~~~~~~~~~~
lib/../mm/kasan/kasan.h:246:6: warning: conflicting types for built-in function '__asan_load16'; expected 'void(void *)' [-Wbuiltin-declaration-mismatch]
246 | void __asan_load16(unsigned long addr);
| ^~~~~~~~~~~~~
lib/../mm/kasan/kasan.h:247:6: warning: conflicting types for built-in function '__asan_store16'; expected 'void(void *)' [-Wbuiltin-declaration-mismatch]
247 | void __asan_store16(unsigned long addr);
| ^~~~~~~~~~~~~~
lib/../mm/kasan/kasan.h:248:6: warning: conflicting types for built-in function '__asan_loadN'; expected 'void(void *, long int)' [-Wbuiltin-declaration-mismatch]
248 | void __asan_loadN(unsigned long addr, size_t size);
| ^~~~~~~~~~~~
lib/../mm/kasan/kasan.h:249:6: warning: conflicting types for built-in function '__asan_storeN'; expected 'void(void *, long int)' [-Wbuiltin-declaration-mismatch]
249 | void __asan_storeN(unsigned long addr, size_t size);
| ^~~~~~~~~~~~~
lib/../mm/kasan/kasan.h:251:6: warning: conflicting types for built-in function '__asan_load1_noabort'; expected 'void(void *)' [-Wbuiltin-declaration-mismatch]
251 | void __asan_load1_noabort(unsigned long addr);
| ^~~~~~~~~~~~~~~~~~~~
lib/../mm/kasan/kasan.h:252:6: warning: conflicting types for built-in function '__asan_store1_noabort'; expected 'void(void *)' [-Wbuiltin-declaration-mismatch]
252 | void __asan_store1_noabort(unsigned long addr);
| ^~~~~~~~~~~~~~~~~~~~~
lib/../mm/kasan/kasan.h:253:6: warning: conflicting types for built-in function '__asan_load2_noabort'; expected 'void(void *)' [-Wbuiltin-declaration-mismatch]
253 | void __asan_load2_noabort(unsigned long addr);
| ^~~~~~~~~~~~~~~~~~~~
lib/../mm/kasan/kasan.h:254:6: warning: conflicting types for built-in function '__asan_store2_noabort'; expected 'void(void *)' [-Wbuiltin-declaration-mismatch]
254 | void __asan_store2_noabort(unsigned long addr);
| ^~~~~~~~~~~~~~~~~~~~~
lib/../mm/kasan/kasan.h:255:6: warning: conflicting types for built-in function '__asan_load4_noabort'; expected 'void(void *)' [-Wbuiltin-declaration-mismatch]
255 | void __asan_load4_noabort(unsigned long addr);
| ^~~~~~~~~~~~~~~~~~~~
lib/../mm/kasan/kasan.h:256:6: warning: conflicting types for built-in function '__asan_store4_noabort'; expected 'void(void *)' [-Wbuiltin-declaration-mismatch]
256 | void __asan_store4_noabort(unsigned long addr);
| ^~~~~~~~~~~~~~~~~~~~~
lib/../mm/kasan/kasan.h:257:6: warning: conflicting types for built-in function '__asan_load8_noabort'; expected 'void(void *)' [-Wbuiltin-declaration-mismatch]
257 | void __asan_load8_noabort(unsigned long addr);
| ^~~~~~~~~~~~~~~~~~~~
lib/../mm/kasan/kasan.h:258:6: warning: conflicting types for built-in function '__asan_store8_noabort'; expected 'void(void *)' [-Wbuiltin-declaration-mismatch]
258 | void __asan_store8_noabort(unsigned long addr);
| ^~~~~~~~~~~~~~~~~~~~~
lib/../mm/kasan/kasan.h:259:6: warning: conflicting types for built-in function '__asan_load16_noabort'; expected 'void(void *)' [-Wbuiltin-declaration-mismatch]
259 | void __asan_load16_noabort(unsigned long addr);
| ^~~~~~~~~~~~~~~~~~~~~
lib/../mm/kasan/kasan.h:260:6: warning: conflicting types for built-in function '__asan_store16_noabort'; expected 'void(void *)' [-Wbuiltin-declaration-mismatch]
260 | void __asan_store16_noabort(unsigned long addr);
| ^~~~~~~~~~~~~~~~~~~~~~
lib/../mm/kasan/kasan.h:261:6: warning: conflicting types for built-in function '__asan_loadN_noabort'; expected 'void(void *, long int)' [-Wbuiltin-declaration-mismatch]
261 | void __asan_loadN_noabort(unsigned long addr, size_t size);
| ^~~~~~~~~~~~~~~~~~~~
lib/../mm/kasan/kasan.h:262:6: warning: conflicting types for built-in function '__asan_storeN_noabort'; expected 'void(void *, long int)' [-Wbuiltin-declaration-mismatch]
262 | void __asan_storeN_noabort(unsigned long addr, size_t size);
| ^~~~~~~~~~~~~~~~~~~~~
lib/../mm/kasan/kasan.h:264:6: warning: conflicting types for built-in function '__asan_report_load1_noabort'; expected 'void(void *)' [-Wbuiltin-declaration-mismatch]
264 | void __asan_report_load1_noabort(unsigned long addr);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/../mm/kasan/kasan.h:265:6: warning: conflicting types for built-in function '__asan_report_store1_noabort'; expected 'void(void *)' [-Wbuiltin-declaration-mismatch]
265 | void __asan_report_store1_noabort(unsigned long addr);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/../mm/kasan/kasan.h:266:6: warning: conflicting types for built-in function '__asan_report_load2_noabort'; expected 'void(void *)' [-Wbuiltin-declaration-mismatch]
266 | void __asan_report_load2_noabort(unsigned long addr);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/../mm/kasan/kasan.h:267:6: warning: conflicting types for built-in function '__asan_report_store2_noabort'; expected 'void(void *)' [-Wbuiltin-declaration-mismatch]
267 | void __asan_report_store2_noabort(unsigned long addr);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/../mm/kasan/kasan.h:268:6: warning: conflicting types for built-in function '__asan_report_load4_noabort'; expected 'void(void *)' [-Wbuiltin-declaration-mismatch]
268 | void __asan_report_load4_noabort(unsigned long addr);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/../mm/kasan/kasan.h:269:6: warning: conflicting types for built-in function '__asan_report_store4_noabort'; expected 'void(void *)' [-Wbuiltin-declaration-mismatch]
269 | void __asan_report_store4_noabort(unsigned long addr);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/../mm/kasan/kasan.h:270:6: warning: conflicting types for built-in function '__asan_report_load8_noabort'; expected 'void(void *)' [-Wbuiltin-declaration-mismatch]
270 | void __asan_report_load8_noabort(unsigned long addr);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/../mm/kasan/kasan.h:271:6: warning: conflicting types for built-in function '__asan_report_store8_noabort'; expected 'void(void *)' [-Wbuiltin-declaration-mismatch]
271 | void __asan_report_store8_noabort(unsigned long addr);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/../mm/kasan/kasan.h:272:6: warning: conflicting types for built-in function '__asan_report_load16_noabort'; expected 'void(void *)' [-Wbuiltin-declaration-mismatch]
272 | void __asan_report_load16_noabort(unsigned long addr);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/../mm/kasan/kasan.h:273:6: warning: conflicting types for built-in function '__asan_report_store16_noabort'; expected 'void(void *)' [-Wbuiltin-declaration-mismatch]
273 | void __asan_report_store16_noabort(unsigned long addr);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/../mm/kasan/kasan.h:274:6: warning: conflicting types for built-in function '__asan_report_load_n_noabort'; expected 'void(void *, long int)' [-Wbuiltin-declaration-mismatch]
274 | void __asan_report_load_n_noabort(unsigned long addr, size_t size);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/../mm/kasan/kasan.h:275:6: warning: conflicting types for built-in function '__asan_report_store_n_noabort'; expected 'void(void *, long int)' [-Wbuiltin-declaration-mismatch]
275 | void __asan_report_store_n_noabort(unsigned long addr, size_t size);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c: In function 'common_nfc_set_geometry':
drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c:514:3: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
514 | nanddev_get_ecc_requirements(&chip->base);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~

Introduced by commit

77e7d1c8c356 ("KASAN: Port KASAN Tests to KUnit")

--
Cheers,
Stephen Rothwell


Attachments:
(No filename) (499.00 B)
OpenPGP digital signature

2020-09-15 04:04:27

by David Gow

[permalink] [raw]
Subject: Re: linux-next: build warning after merge of the akpm-current tree

[+kasan-dev, +kunit-dev]

On Mon, Sep 14, 2020 at 3:01 PM Stephen Rothwell <[email protected]> wrote:
>
> Hi all,
>
> After merging the akpm-current tree, today's linux-next build (x86_64
> allmodconfig) produced this warning:
>
> In file included from lib/test_kasan_module.c:16:
> lib/../mm/kasan/kasan.h:232:6: warning: conflicting types for built-in function '__asan_register_globals'; expected 'void(void *, long int)' [-Wbuiltin-declaration-mismatch]
> 232 | void __asan_register_globals(struct kasan_global *globals, size_t size);
> | ^~~~~~~~~~~~~~~~~~~~~~~
> lib/../mm/kasan/kasan.h:233:6: warning: conflicting types for built-in function '__asan_unregister_globals'; expected 'void(void *, long int)' [-Wbuiltin-declaration-mismatch]
> 233 | void __asan_unregister_globals(struct kasan_global *globals, size_t size);
> | ^~~~~~~~~~~~~~~~~~~~~~~~~
> lib/../mm/kasan/kasan.h:235:6: warning: conflicting types for built-in function '__asan_alloca_poison'; expected 'void(void *, long int)' [-Wbuiltin-declaration-mismatch]
> 235 | void __asan_alloca_poison(unsigned long addr, size_t size);
> | ^~~~~~~~~~~~~~~~~~~~
> lib/../mm/kasan/kasan.h:236:6: warning: conflicting types for built-in function '__asan_allocas_unpoison'; expected 'void(void *, long int)' [-Wbuiltin-declaration-mismatch]
> 236 | void __asan_allocas_unpoison(const void *stack_top, const void *stack_bottom);
> | ^~~~~~~~~~~~~~~~~~~~~~~
> lib/../mm/kasan/kasan.h:238:6: warning: conflicting types for built-in function '__asan_load1'; expected 'void(void *)' [-Wbuiltin-declaration-mismatch]
> 238 | void __asan_load1(unsigned long addr);
> | ^~~~~~~~~~~~
[...some more similar warnings truncated...]

Whoops -- these are an issue with the patch: the test_kasan_module.c
file should be built with -fno-builtin. I've out a new version of the
series which fixes this:
https://lore.kernel.org/linux-mm/[email protected]/T/#t

Basically, the fix is just:

diff --git a/lib/Makefile b/lib/Makefile
index 8c94cad26db7..d4af75136c54 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -69,6 +69,7 @@ obj-$(CONFIG_KASAN_KUNIT_TEST) += test_kasan.o
CFLAGS_test_kasan.o += -fno-builtin
CFLAGS_test_kasan.o += $(call cc-disable-warning, vla)
obj-$(CONFIG_TEST_KASAN_MODULE) += test_kasan_module.o
+CFLAGS_test_kasan_module.o += -fno-builtin
obj-$(CONFIG_TEST_UBSAN) += test_ubsan.o
CFLAGS_test_ubsan.o += $(call cc-disable-warning, vla)
UBSAN_SANITIZE_test_ubsan.o := y
--
2.28.0.618.gf4bc123cb7-goog


> drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c: In function 'common_nfc_set_geometry':
> drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c:514:3: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
> 514 | nanddev_get_ecc_requirements(&chip->base);
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>

I was unable to reproduce this warning: it looks unrelated, so I'm
assuming it was attributed.

> Introduced by commit
>
> 77e7d1c8c356 ("KASAN: Port KASAN Tests to KUnit")
>
> --
> Cheers,
> Stephen Rothwell

Sorry for the mess,
-- David

2020-09-15 04:20:27

by Stephen Rothwell

[permalink] [raw]
Subject: Re: linux-next: build warning after merge of the akpm-current tree

Hi David,

On Tue, 15 Sep 2020 12:03:08 +0800 David Gow <[email protected]> wrote:
>
> > drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c: In function 'common_nfc_set_geometry':
> > drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c:514:3: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
> > 514 | nanddev_get_ecc_requirements(&chip->base);
> > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >
>
> I was unable to reproduce this warning: it looks unrelated, so I'm
> assuming it was attributed.

Yeah, sorry, that was included by accident.

--
Cheers,
Stephen Rothwell


Attachments:
(No filename) (499.00 B)
OpenPGP digital signature

2020-09-15 09:59:19

by Marco Elver

[permalink] [raw]
Subject: Re: linux-next: build warning after merge of the akpm-current tree

On Tue, 15 Sep 2020 at 06:03, 'David Gow' via kasan-dev
<[email protected]> wrote:
>
> [+kasan-dev, +kunit-dev]
>
> On Mon, Sep 14, 2020 at 3:01 PM Stephen Rothwell <[email protected]> wrote:
> >
> > Hi all,
> >
> > After merging the akpm-current tree, today's linux-next build (x86_64
> > allmodconfig) produced this warning:
> >
> > In file included from lib/test_kasan_module.c:16:
> > lib/../mm/kasan/kasan.h:232:6: warning: conflicting types for built-in function '__asan_register_globals'; expected 'void(void *, long int)' [-Wbuiltin-declaration-mismatch]
> > 232 | void __asan_register_globals(struct kasan_global *globals, size_t size);
> > | ^~~~~~~~~~~~~~~~~~~~~~~
> > lib/../mm/kasan/kasan.h:233:6: warning: conflicting types for built-in function '__asan_unregister_globals'; expected 'void(void *, long int)' [-Wbuiltin-declaration-mismatch]
> > 233 | void __asan_unregister_globals(struct kasan_global *globals, size_t size);
> > | ^~~~~~~~~~~~~~~~~~~~~~~~~
> > lib/../mm/kasan/kasan.h:235:6: warning: conflicting types for built-in function '__asan_alloca_poison'; expected 'void(void *, long int)' [-Wbuiltin-declaration-mismatch]
> > 235 | void __asan_alloca_poison(unsigned long addr, size_t size);
> > | ^~~~~~~~~~~~~~~~~~~~
> > lib/../mm/kasan/kasan.h:236:6: warning: conflicting types for built-in function '__asan_allocas_unpoison'; expected 'void(void *, long int)' [-Wbuiltin-declaration-mismatch]
> > 236 | void __asan_allocas_unpoison(const void *stack_top, const void *stack_bottom);
> > | ^~~~~~~~~~~~~~~~~~~~~~~
> > lib/../mm/kasan/kasan.h:238:6: warning: conflicting types for built-in function '__asan_load1'; expected 'void(void *)' [-Wbuiltin-declaration-mismatch]
> > 238 | void __asan_load1(unsigned long addr);
> > | ^~~~~~~~~~~~
> [...some more similar warnings truncated...]
>
> Whoops -- these are an issue with the patch: the test_kasan_module.c
> file should be built with -fno-builtin. I've out a new version of the
> series which fixes this:
> https://lore.kernel.org/linux-mm/[email protected]/T/#t
>
> Basically, the fix is just:
>
> diff --git a/lib/Makefile b/lib/Makefile
> index 8c94cad26db7..d4af75136c54 100644
> --- a/lib/Makefile
> +++ b/lib/Makefile
> @@ -69,6 +69,7 @@ obj-$(CONFIG_KASAN_KUNIT_TEST) += test_kasan.o
> CFLAGS_test_kasan.o += -fno-builtin
> CFLAGS_test_kasan.o += $(call cc-disable-warning, vla)
> obj-$(CONFIG_TEST_KASAN_MODULE) += test_kasan_module.o
> +CFLAGS_test_kasan_module.o += -fno-builtin
> obj-$(CONFIG_TEST_UBSAN) += test_ubsan.o
> CFLAGS_test_ubsan.o += $(call cc-disable-warning, vla)
> UBSAN_SANITIZE_test_ubsan.o := y

That's reasonable, given it's already done for test_kasan.o.

Although the warnings only occur because it's including
"../mm/kasan/kasan.h", which include declarations for the
instrumentation functions. AFAIK, those declarations only exist to
avoid missing-declaration warnings; in which case all of them could
just be moved above their definitions in generic.c (which would also
avoid some repetition for the ones defined with macros). But given the
various other KASAN patches in-flight, to avoid conflicts let's leave
this as-is, but it's something to improve in case we wanted to get rid
of the fno-builtin.

Thanks,
-- Marco