linux-stable/arch
Arnd Bergmann bb6e04a173 kasan: use internal prototypes matching gcc-13 builtins
gcc-13 warns about function definitions for builtin interfaces that have a
different prototype, e.g.:

In file included from kasan_test.c:31:
kasan.h:574:6: error: conflicting types for built-in function '__asan_register_globals'; expected 'void(void *, long int)' [-Werror=builtin-declaration-mismatch]
  574 | void __asan_register_globals(struct kasan_global *globals, size_t size);
kasan.h:577:6: error: conflicting types for built-in function '__asan_alloca_poison'; expected 'void(void *, long int)' [-Werror=builtin-declaration-mismatch]
  577 | void __asan_alloca_poison(unsigned long addr, size_t size);
kasan.h:580:6: error: conflicting types for built-in function '__asan_load1'; expected 'void(void *)' [-Werror=builtin-declaration-mismatch]
  580 | void __asan_load1(unsigned long addr);
kasan.h:581:6: error: conflicting types for built-in function '__asan_store1'; expected 'void(void *)' [-Werror=builtin-declaration-mismatch]
  581 | void __asan_store1(unsigned long addr);
kasan.h:643:6: error: conflicting types for built-in function '__hwasan_tag_memory'; expected 'void(void *, unsigned char,  long int)' [-Werror=builtin-declaration-mismatch]
  643 | void __hwasan_tag_memory(unsigned long addr, u8 tag, unsigned long size);

The two problems are:

 - Addresses are passes as 'unsigned long' in the kernel, but gcc-13
   expects a 'void *'.

 - sizes meant to use a signed ssize_t rather than size_t.

Change all the prototypes to match these.  Using 'void *' consistently for
addresses gets rid of a couple of type casts, so push that down to the
leaf functions where possible.

This now passes all randconfig builds on arm, arm64 and x86, but I have
not tested it on the other architectures that support kasan, since they
tend to fail randconfig builds in other ways.  This might fail if any of
the 32-bit architectures expect a 'long' instead of 'int' for the size
argument.

The __asan_allocas_unpoison() function prototype is somewhat weird, since
it uses a pointer for 'stack_top' and an size_t for 'stack_bottom'.  This
looks like it is meant to be 'addr' and 'size' like the others, but the
implementation clearly treats them as 'top' and 'bottom'.

Link: https://lkml.kernel.org/r/20230509145735.9263-2-arnd@kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Cc: Alexander Potapenko <glider@google.com>
Cc: Andrey Konovalov <andreyknvl@gmail.com>
Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com>
Cc: Dmitry Vyukov <dvyukov@google.com>
Cc: Marco Elver <elver@google.com>
Cc: Vincenzo Frascino <vincenzo.frascino@arm.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
2023-06-09 16:25:19 -07:00
..
alpha cachestat: wire up cachestat for other architectures 2023-06-09 16:25:16 -07:00
arc Locking changes in v6.4: 2023-05-05 12:56:55 -07:00
arm cachestat: wire up cachestat for other architectures 2023-06-09 16:25:16 -07:00
arm64 kasan: use internal prototypes matching gcc-13 builtins 2023-06-09 16:25:19 -07:00
csky arch/csky patches for 6.4 2023-05-04 12:25:05 -07:00
hexagon Locking changes in v6.4: 2023-05-05 12:56:55 -07:00
ia64 cachestat: wire up cachestat for other architectures 2023-06-09 16:25:16 -07:00
loongarch Locking changes in v6.4: 2023-05-05 12:56:55 -07:00
m68k cachestat: wire up cachestat for other architectures 2023-06-09 16:25:16 -07:00
microblaze cachestat: wire up cachestat for other architectures 2023-06-09 16:25:16 -07:00
mips cachestat: wire up cachestat for other architectures 2023-06-09 16:25:16 -07:00
nios2 - Nick Piggin's "shoot lazy tlbs" series, to improve the peformance of 2023-04-27 19:42:02 -07:00
openrisc Locking changes in v6.4: 2023-05-05 12:56:55 -07:00
parisc cachestat: wire up cachestat for other architectures 2023-06-09 16:25:16 -07:00
powerpc cachestat: wire up cachestat for other architectures 2023-06-09 16:25:16 -07:00
riscv Probes fixes for 6.4-rc1: 2023-05-18 09:04:45 -07:00
s390 cachestat: wire up cachestat for other architectures 2023-06-09 16:25:16 -07:00
sh cachestat: wire up cachestat for other architectures 2023-06-09 16:25:16 -07:00
sparc cachestat: wire up cachestat for other architectures 2023-06-09 16:25:16 -07:00
um um: harddog: fix modular build 2023-05-10 00:21:30 +02:00
x86 cachestat: implement cachestat syscall 2023-06-09 16:25:16 -07:00
xtensa cachestat: wire up cachestat for other architectures 2023-06-09 16:25:16 -07:00
.gitignore
Kconfig lazy tlb: shoot lazies, non-refcounting lazy tlb mm reference handling scheme 2023-03-28 16:20:08 -07:00