linux/lib
Arnd Bergmann 6baec880d7 kasan: turn off asan-stack for clang-8 and earlier
Building an arm64 allmodconfig kernel with clang results in over 140
warnings about overly large stack frames, the worst ones being:

  drivers/gpu/drm/panel/panel-sitronix-st7789v.c:196:12: error: stack frame size of 20224 bytes in function 'st7789v_prepare'
  drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td028ttec1.c:196:12: error: stack frame size of 13120 bytes in function 'td028ttec1_panel_enable'
  drivers/usb/host/max3421-hcd.c:1395:1: error: stack frame size of 10048 bytes in function 'max3421_spi_thread'
  drivers/net/wan/slic_ds26522.c:209:12: error: stack frame size of 9664 bytes in function 'slic_ds26522_probe'
  drivers/crypto/ccp/ccp-ops.c:2434:5: error: stack frame size of 8832 bytes in function 'ccp_run_cmd'
  drivers/media/dvb-frontends/stv0367.c:1005:12: error: stack frame size of 7840 bytes in function 'stv0367ter_algo'

None of these happen with gcc today, and almost all of these are the
result of a single known issue in llvm.  Hopefully it will eventually
get fixed with the clang-9 release.

In the meantime, the best idea I have is to turn off asan-stack for
clang-8 and earlier, so we can produce a kernel that is safe to run.

I have posted three patches that address the frame overflow warnings
that are not addressed by turning off asan-stack, so in combination with
this change, we get much closer to a clean allmodconfig build, which in
turn is necessary to do meaningful build regression testing.

It is still possible to turn on the CONFIG_ASAN_STACK option on all
versions of clang, and it's always enabled for gcc, but when
CONFIG_COMPILE_TEST is set, the option remains invisible, so
allmodconfig and randconfig builds (which are normally done with a
forced CONFIG_COMPILE_TEST) will still result in a mostly clean build.

Link: http://lkml.kernel.org/r/20190222222950.3997333-1-arnd@arndb.de
Link: https://bugs.llvm.org/show_bug.cgi?id=38809
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Qian Cai <cai@lca.pw>
Reviewed-by: Mark Brown <broonie@kernel.org>
Acked-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
Cc: Dmitry Vyukov <dvyukov@google.com>
Cc: Nick Desaulniers <ndesaulniers@google.com>
Cc: Kostya Serebryany <kcc@google.com>
Cc: Andrey Konovalov <andreyknvl@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2019-03-01 09:02:33 -08:00
..
842
fonts Fonts: New Terminus large console font 2018-12-19 10:42:08 +01:00
lz4 lib/lz4: update LZ4 decompressor module 2018-10-31 08:54:14 -07:00
lzo
mpi lib/mpi: remove redundant variable esign 2018-08-07 17:51:39 +08:00
raid6 Kbuild late updates for v4.21 2019-01-06 16:33:10 -08:00
reed_solomon reed_solomon: Fix kernel-doc 2018-07-10 15:00:52 -06:00
xz lib/xz: Put CRC32_POLY_LE in xz_private.h 2018-10-02 08:44:59 +10:00
zlib_deflate
zlib_inflate lib/zlib_inflate/inflate.c: remove fall through warnings 2018-10-31 08:54:13 -07:00
zstd
.gitignore lib: add crc64 calculation routines 2018-08-22 10:52:48 -07:00
argv_split.c treewide: kmalloc() -> kmalloc_array() 2018-06-12 16:19:22 -07:00
ashldi3.c
ashrdi3.c
asn1_decoder.c
assoc_array.c assoc_array: Fix shortcut creation 2019-02-15 14:12:08 -08:00
atomic64_test.c
atomic64.c atomics/generic: Define atomic64_fetch_add_unless() 2018-06-21 14:25:21 +02:00
audit.c
bcd.c
bch.c lib/bch: fix possible stack overrun 2018-10-12 09:17:46 +02:00
bitmap.c Remove 'type' argument from access_ok() function 2019-01-03 18:57:57 -08:00
bitrev.c
bsearch.c
btree.c
bucket_locks.c ila: make lockdep happy again 2018-08-16 12:14:42 -07:00
bug.c
build_OID_registry
bust_spinlocks.c s390: use common bust_spinlocks() 2018-11-30 07:22:05 +01:00
chacha.c crypto: chacha - add XChaCha12 support 2018-11-20 14:26:55 +08:00
check_signature.c
checksum.c
clz_ctz.c
clz_tab.c
cmdline.c
cmpdi2.c
compat_audit.c
cordic.c lib: cordic: Move cordic macros and defines to header file 2018-11-29 17:30:48 +02:00
cpu_rmap.c
cpumask.c memblock: stop using implicit alignment to SMP_CACHE_BYTES 2018-10-31 08:54:16 -07:00
crc4.c
crc7.c
crc8.c
crc16.c
crc32.c lib/crc32.c: mark crc32_le_base/__crc32c_le_base aliases as __pure 2019-02-15 19:50:07 +01:00
crc32defs.h lib/crc: Move polynomial definition to separate header 2018-07-27 19:04:33 +08:00
crc32test.c
crc64.c lib: add crc64 calculation routines 2018-08-22 10:52:48 -07:00
crc-ccitt.c
crc-itu-t.c
crc-t10dif.c crc-t10dif: crc_t10dif_mutex can be static 2018-09-14 14:08:52 +08:00
ctype.c
debug_info.c
debug_locks.c locking/lockdep: Make global debug_locks* variables read-mostly 2018-10-19 07:53:18 +02:00
debugobjects.c debugobjects: call debug_objects_mem_init eariler 2018-12-28 12:11:45 -08:00
dec_and_lock.c atomic: Add irqsave variant of atomic_dec_and_lock() 2018-06-12 23:33:24 +02:00
decompress_bunzip2.c lib: Use existing define with polynomial 2018-07-27 19:16:38 +08:00
decompress_inflate.c
decompress_unlz4.c
decompress_unlzma.c
decompress_unlzo.c
decompress_unxz.c
decompress.c
devres.c devres: Add devm_of_iomap() 2018-07-23 15:22:39 +10:00
digsig.c
div64.c
dump_stack.c
dynamic_debug.c jump_label: move 'asm goto' support test to Kconfig 2019-01-06 09:46:51 +09:00
dynamic_queue_limits.c
earlycpio.c
error-inject.c
errseq.c
extable.c
fault-inject.c
fdt_empty_tree.c
fdt_ro.c
fdt_rw.c
fdt_strerror.c
fdt_sw.c
fdt_wip.c
fdt.c
find_bit_benchmark.c lib/find_bit_benchmark.c: align test_find_next_and_bit with others 2019-01-04 13:13:46 -08:00
find_bit.c
flex_array.c
flex_proportions.c
gcd.c lib/gcd: Remove use of CPU_NO_EFFICIENT_FFS macro 2018-11-12 14:26:21 -08:00
gen_crc32table.c lib/crc: Use consistent naming for CRC-32 polynomials 2018-07-27 19:04:33 +08:00
gen_crc64table.c lib: don't depend on linux headers being installed. 2018-12-29 11:36:44 -08:00
genalloc.c lib/genalloc.c: include vmalloc.h 2019-01-05 13:54:53 -08:00
glob.c
globtest.c
hexdump.c
hweight.c
idr.c radix tree: Remove radix_tree_update_node_t 2018-10-21 10:46:44 -04:00
inflate.c
int_sqrt.c fix int_sqrt64() for very large numbers 2019-01-21 07:20:18 +13:00
interval_tree_test.c treewide: kmalloc() -> kmalloc_array() 2018-06-12 16:19:22 -07:00
interval_tree.c
iomap_copy.c
iomap.c
iommu-helper.c iommu-helper: mark iommu_is_span_boundary as inline 2018-05-09 06:55:44 +02:00
ioremap.c lib/ioremap: ensure break-before-make is used for huge p4d mappings 2018-12-28 12:11:50 -08:00
iov_iter.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2019-01-05 13:18:59 -08:00
irq_poll.c
irq_regs.c
is_single_threaded.c
jedec_ddr_data.c
kasprintf.c
Kconfig Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/shli/md into for-linus 2019-01-03 08:21:02 -07:00
Kconfig.debug Kconfig updates for v4.21 2018-12-29 13:03:29 -08:00
Kconfig.kasan kasan: turn off asan-stack for clang-8 and earlier 2019-03-01 09:02:33 -08:00
Kconfig.kgdb
Kconfig.ubsan lib/ubsan: remove null-pointer checks 2018-08-10 20:19:58 -07:00
kfifo.c treewide: kmalloc() -> kmalloc_array() 2018-06-12 16:19:22 -07:00
klist.c scsi: klist: Make it safe to use klists in atomic context 2018-07-02 16:20:23 -04:00
kobject_uevent.c kobject: Fix warnings in lib/kobject_uevent.c 2018-11-11 11:27:43 -08:00
kobject.c kref/kobject: Improve documentation 2018-12-06 13:57:03 +01:00
kstrtox.c lib/kstrtox.c: delete unnecessary casts 2018-10-31 08:54:13 -07:00
kstrtox.h
lcm.c
libcrc32c.c
list_debug.c
list_sort.c
llist.c
locking-selftest-hardirq.h
locking-selftest-mutex.h
locking-selftest-rlock-hardirq.h
locking-selftest-rlock-softirq.h
locking-selftest-rlock.h
locking-selftest-rsem.h
locking-selftest-rtmutex.h
locking-selftest-softirq.h
locking-selftest-spin-hardirq.h
locking-selftest-spin-softirq.h
locking-selftest-spin.h
locking-selftest-wlock-hardirq.h
locking-selftest-wlock-softirq.h
locking-selftest-wlock.h
locking-selftest-wsem.h
locking-selftest.c locking: Implement an algorithm choice for Wound-Wait mutexes 2018-07-03 09:44:36 +02:00
lockref.c
logic_pio.c
lru_cache.c treewide: kzalloc() -> kcalloc() 2018-06-12 16:19:22 -07:00
lshrdi3.c
Makefile Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2018-12-27 13:53:32 -08:00
memcat_p.c lib: Fix ia64 bootloader linkage 2018-10-16 13:45:44 +02:00
memory-notifier-error-inject.c
memweight.c
muldi3.c
net_utils.c
netdev-notifier-error-inject.c
nlattr.c netlink: Add strict version of nlmsg_parse and nla_parse 2018-10-08 10:39:04 -07:00
nmi_backtrace.c printk/nmi: Prevent deadlock when accessing the main log buffer in NMI 2018-07-09 14:10:40 +02:00
nodemask.c
notifier-error-inject.c
notifier-error-inject.h
objagg.c lib: introduce initial implementation of object aggregation manager 2018-11-15 14:43:43 -08:00
of-reconfig-notifier-error-inject.c
oid_registry.c
once.c
parman.c
parser.c lib/parser.c: switch match_number() over to use match_strdup() 2018-10-31 08:54:12 -07:00
pci_iomap.c
percpu_counter.c notifier: Remove notifier header file wherever not used 2018-08-30 12:56:40 +02:00
percpu_test.c
percpu-refcount.c percpu-refcount: Replace call_rcu_sched() with call_rcu() 2018-11-27 09:21:45 -08:00
plist.c
pm-notifier-error-inject.c
prime_numbers.c
radix-tree.c radix tree: Don't return retry entries from lookup 2018-12-06 08:26:16 -05:00
random32.c
ratelimit.c
rational.c
rbtree_test.c treewide: kmalloc() -> kmalloc_array() 2018-06-12 16:19:22 -07:00
rbtree.c
reciprocal_div.c lib: reciprocal_div: implement the improved algorithm on the paper mentioned 2018-07-07 01:45:31 +02:00
refcount.c Linux 4.18-rc5 2018-07-17 09:27:43 +02:00
rhashtable.c rhashtable: detect when object movement between tables might have invalidated a lookup 2018-12-03 15:31:55 -08:00
sbitmap.c sbitmap: Protect swap_lock from hardirq 2019-01-15 16:29:57 +12:00
scatterlist.c arch: switch the default on ARCH_HAS_SG_CHAIN 2018-12-06 07:04:56 -08:00
seq_buf.c seq_buf: Use size_t for len in seq_buf_puts() 2018-12-22 08:21:03 -05:00
sg_pool.c lib/sg_pool.c: remove unnecessary null check when freeing object 2018-10-31 08:54:13 -07:00
sg_split.c
sha1.c
sha256.c
show_mem.c lib/show_mem.c: drop pgdat_resize_lock in show_mem() 2018-12-28 12:11:49 -08:00
siphash.c
smp_processor_id.c
sort.c
stackdepot.c
stmp_device.c
string_helpers.c
string.c lib: Fix ia64 bootloader linkage 2018-10-16 13:45:44 +02:00
strncpy_from_user.c make 'user_access_begin()' do 'access_ok()' 2019-01-04 12:56:09 -08:00
strnlen_user.c make 'user_access_begin()' do 'access_ok()' 2019-01-04 12:56:09 -08:00
syscall.c
test_bitfield.c bitfield: add tests 2018-06-27 18:58:49 +03:00
test_bitmap.c lib/test_bitmap.c: fix bitmap optimisation tests to report errors correctly 2018-05-18 17:17:12 -07:00
test_bpf.c net: remove VLAN_TAG_PRESENT 2018-11-16 19:25:29 -08:00
test_debug_virtual.c lib: fix build failure in CONFIG_DEBUG_VIRTUAL test 2018-12-17 22:12:30 +11:00
test_firmware.c test_firmware: fix error return getting clobbered 2018-11-11 09:18:04 -08:00
test_hash.c
test_hexdump.c test_hexdump: use memcpy instead of strncpy 2018-11-30 12:13:15 -08:00
test_ida.c test_ida: Fix lockdep warning 2018-10-15 16:31:29 -04:00
test_kasan.c lib/test_kasan.c: add tests for several string/memory API functions 2018-10-26 16:25:18 -07:00
test_kmod.c lib/test_kmod.c: potential double free in error handling 2019-02-01 15:46:23 -08:00
test_list_sort.c
test_memcat_p.c lib: Fix ia64 bootloader linkage 2018-10-16 13:45:44 +02:00
test_module.c
test_objagg.c test_objagg: Fix warning. 2018-11-15 14:57:09 -08:00
test_overflow.c test_overflow: Add shift overflow tests 2018-08-08 09:47:26 -06:00
test_parman.c
test_printf.c lib/vsprintf: Print time and date in human readable format via %pt 2018-12-10 22:39:34 +01:00
test_rhashtable.c lib/test_rhashtable: Make test_insert_dup() allocate its hash table dynamically 2019-01-31 09:36:52 -08:00
test_siphash.c
test_sort.c
test_static_key_base.c
test_static_keys.c
test_string.c
test_sysctl.c
test_ubsan.c
test_user_copy.c
test_uuid.c
test_xarray.c XArray tests: Check mark 2 gets squashed 2019-01-14 14:50:34 -05:00
test-kstrtox.c
test-string_helpers.c
textsearch.c
timerqueue.c
ts_bm.c
ts_fsm.c
ts_kmp.c
ubsan.c lib/ubsan.c: don't mark __ubsan_handle_builtin_unreachable as noreturn 2018-11-18 10:15:10 -08:00
ubsan.h
ucmpdi2.c
ucs2_string.c lib/ucs2_string.c: add MODULE_LICENSE() 2018-06-07 17:34:39 -07:00
usercopy.c Remove 'type' argument from access_ok() function 2019-01-03 18:57:57 -08:00
uuid.c
vsprintf.c lib/vsprintf: Print time and date in human readable format via %pt 2018-12-10 22:39:34 +01:00
win_minmax.c
xarray.c XArray: Honour reserved entries in xa_insert 2019-01-06 22:12:58 -05:00
xxhash.c