linux/scripts
Andrey Ryabinin bebf56a1b1 kasan: enable instrumentation of global variables
This feature let us to detect accesses out of bounds of global variables.
This will work as for globals in kernel image, so for globals in modules.
Currently this won't work for symbols in user-specified sections (e.g.
__init, __read_mostly, ...)

The idea of this is simple.  Compiler increases each global variable by
redzone size and add constructors invoking __asan_register_globals()
function.  Information about global variable (address, size, size with
redzone ...) passed to __asan_register_globals() so we could poison
variable's redzone.

This patch also forces module_alloc() to return 8*PAGE_SIZE aligned
address making shadow memory handling (
kasan_module_alloc()/kasan_module_free() ) more simple.  Such alignment
guarantees that each shadow page backing modules address space correspond
to only one module_alloc() allocation.

Signed-off-by: Andrey Ryabinin <a.ryabinin@samsung.com>
Cc: Dmitry Vyukov <dvyukov@google.com>
Cc: Konstantin Serebryany <kcc@google.com>
Cc: Dmitry Chernenkov <dmitryc@google.com>
Signed-off-by: Andrey Konovalov <adech.fo@gmail.com>
Cc: Yuri Gribov <tetra2005@gmail.com>
Cc: Konstantin Khlebnikov <koct9i@gmail.com>
Cc: Sasha Levin <sasha.levin@oracle.com>
Cc: Christoph Lameter <cl@linux.com>
Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Cc: Dave Hansen <dave.hansen@intel.com>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Christoph Lameter <cl@linux.com>
Cc: Pekka Enberg <penberg@kernel.org>
Cc: David Rientjes <rientjes@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2015-02-13 21:21:42 -08:00
..
basic kernel: build bin2c based on config option CONFIG_BUILD_BIN2C 2014-08-08 15:57:32 -07:00
coccinelle Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild 2014-12-20 13:33:03 -08:00
dtc kbuild: trivial - remove trailing empty lines 2014-06-10 00:04:06 +02:00
genksyms genksyms: fix typeof() handling 2014-04-03 16:20:52 -07:00
kconfig Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild 2014-12-20 13:31:14 -08:00
ksymoops
mod arm64 updates for 3.18: 2014-10-08 05:34:24 -04:00
package scripts/package: binrpm-pkg do not create source and devel package 2014-12-08 13:11:22 +01:00
rt-tester kbuild: Make scripts executable 2014-08-20 16:03:45 +02:00
selinux kbuild: Make scripts executable 2014-08-20 16:03:45 +02:00
tracing kbuild: Make scripts executable 2014-08-20 16:03:45 +02:00
.gitignore bin2c: move bin2c in scripts/basic 2014-08-08 15:57:32 -07:00
Kbuild.include Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild 2014-12-20 13:31:14 -08:00
Lindent
Makefile bin2c: move bin2c in scripts/basic 2014-08-08 15:57:32 -07:00
Makefile.asm-generic kbuild: trivial - remove trailing empty lines 2014-06-10 00:04:06 +02:00
Makefile.build ftrace: allow architectures to specify ftrace compile options 2015-01-29 09:19:19 +01:00
Makefile.clean kbuild: Fix removal of the debian/ directory 2015-01-02 14:51:27 +01:00
Makefile.dtbinst dts, kbuild: Implement support for dtb vendor subdirs 2014-10-21 18:06:59 +02:00
Makefile.extrawarn kbuild, LLVMLinux: Supress warnings unless W=1-3 2014-08-05 15:40:01 +02:00
Makefile.fwinst kbuild: remove obj-n and lib-n handling 2014-10-02 13:55:02 +02:00
Makefile.headersinst kbuild: collect shorthands into scripts/Kbuild.include 2014-11-26 14:36:52 +01:00
Makefile.help
Makefile.host kbuild: handle the dependency of multi-objs hostprogs appropriately 2014-08-19 10:26:20 +02:00
Makefile.kasan kasan: enable instrumentation of global variables 2015-02-13 21:21:42 -08:00
Makefile.lib kasan: add kernel address sanitizer infrastructure 2015-02-13 21:21:40 -08:00
Makefile.modbuiltin
Makefile.modinst kbuild: handle module compression while running 'make modules_install'. 2014-08-27 21:54:12 +09:30
Makefile.modpost modpost: Optionally ignore secondary errors seen if a single module build fails 2013-09-23 15:45:03 +09:30
Makefile.modsign modsign: lookup lines ending in .ko in .mod files 2014-08-27 21:54:11 +09:30
analyze_suspend.py PM / tools: analyze_suspend.py: update to v3.0 2014-08-09 02:47:58 +02:00
asn1_compiler.c X.509: silence asn1 compiler debug output 2015-01-23 12:10:39 +00:00
bloat-o-meter bloat-o-meter: Ignore syscall aliases SyS_ and compat_SyS_ 2014-08-23 13:08:48 -07:00
bootgraph.pl kbuild: Make scripts executable 2014-08-20 16:03:45 +02:00
checkincludes.pl
checkkconfigsymbols.py checkkconfigsymbols.py: improve detection of defects 2014-11-08 20:50:43 -08:00
checkpatch.pl checkpatch: add of_device_id to structs that should be const 2015-02-13 21:21:40 -08:00
checkstack.pl Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2014-10-07 21:16:26 -04:00
checksyscalls.sh scripts/checksyscalls.sh: Make renameat optional 2014-05-20 10:59:38 +02:00
checkversion.pl
cleanfile
cleanpatch
coccicheck Coccinelle: Update information about the minimal version required 2013-07-03 22:58:20 +02:00
config kbuild: trivial - remove trailing empty lines 2014-06-10 00:04:06 +02:00
conmakehash.c kbuild: trivial - remove trailing spaces 2014-04-30 17:34:32 +02:00
decode_stacktrace.sh decode_stacktrace: make stack dump output useful again 2014-06-10 15:29:43 -07:00
decodecode scripts/decodecode: make faulting insn ptr more robust 2013-04-29 15:54:27 -07:00
depmod.sh depmod: pass -P $CONFIG_SYMBOL_PREFIX 2013-02-22 11:52:31 +01:00
diffconfig diffconfig: Update script to support python versions 2.5 through 3.3 2013-09-01 21:24:51 +02:00
docproc.c kbuild: trivial - use tabs for code indent where possible 2014-06-10 14:00:53 +02:00
export_report.pl kbuild: Make scripts executable 2014-08-20 16:03:45 +02:00
extract-ikconfig
extract-vmlinux scripts: add extract-vmlinux 2011-08-31 16:12:17 +02:00
gcc-goto.sh kbuild: Make scripts executable 2014-08-20 16:03:45 +02:00
gcc-ld kbuild: Make scripts executable 2014-08-20 16:03:45 +02:00
gcc-version.sh kbuild: Make scripts executable 2014-08-20 16:03:45 +02:00
gcc-x86_32-has-stack-protector.sh kbuild: Make scripts executable 2014-08-20 16:03:45 +02:00
gcc-x86_64-has-stack-protector.sh kbuild: Make scripts executable 2014-08-20 16:03:45 +02:00
gen_initramfs_list.sh kbuild: Make scripts executable 2014-08-20 16:03:45 +02:00
get_maintainer.pl scripts: Teach get_maintainer.pl about the new "R:" tag 2014-07-08 14:47:17 -07:00
gfp-translate chmod +x scripts/gfp-translate 2012-06-27 12:44:29 -07:00
headerdep.pl
headers.sh CRIS: Fix headers_install 2014-12-20 00:01:12 +01:00
headers_check.pl kbuild: Make scripts executable 2014-08-20 16:03:45 +02:00
headers_install.sh Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild 2014-10-14 09:22:26 +02:00
kallsyms.c aarch64: filter $x from kallsyms 2014-10-02 17:01:51 +01:00
kernel-doc scripts/kernel-doc: don't eat struct members with __aligned 2014-12-10 17:41:02 -08:00
ld-version.sh Kbuild, lto: add ld-version and ld-ifversion macros 2014-02-13 20:25:00 -08:00
link-vmlinux.sh kbuild: Make scripts executable 2014-08-20 16:03:45 +02:00
makelst
markup_oops.pl kbuild: Make scripts executable 2014-08-20 16:03:45 +02:00
mkcompile_h kbuild: trivial - remove trailing spaces 2014-04-30 17:34:32 +02:00
mkmakefile kbuild: Make scripts executable 2014-08-20 16:03:45 +02:00
mksysmap kbuild: Make scripts executable 2014-08-20 16:03:45 +02:00
mkuboot.sh
mkversion
module-common.lds kernel: add support for .init_array.* constructors 2015-02-13 21:21:42 -08:00
namespace.pl
objdiff scripts: objdiff: support directories for the augument of record command 2014-06-10 14:59:33 +02:00
patch-kernel kbuild: trivial - remove trailing spaces 2014-04-30 17:34:32 +02:00
pnmtologo.c kbuild: trivial - remove trailing empty lines 2014-06-10 00:04:06 +02:00
profile2linkerlist.pl kbuild: Make scripts executable 2014-08-20 16:03:45 +02:00
recordmcount.c s390/ftrace,kprobes: allow to patch first instruction 2014-10-27 13:27:27 +01:00
recordmcount.h recordmcount/MIPS: Fix possible incorrect mcount_loc table entries in modules 2014-06-26 10:48:19 +01:00
recordmcount.pl Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2015-02-11 17:42:32 -08:00
setlocalversion Fix detectition of kernel git repository in setlocalversion script [take #2] 2014-01-03 14:48:42 +01:00
show_delta kbuild: trivial - remove trailing empty lines 2014-06-10 00:04:06 +02:00
sign-file treewide: fix errors in printk 2014-09-01 11:18:25 +02:00
sortextable.c xtensa: enable sorting extable at build time 2014-04-02 01:35:50 +04:00
sortextable.h scripts/sortextable: suppress warning: `relocs_size' may be used uninitialized 2014-10-14 02:18:23 +02:00
spelling.txt checkpatch: look for common misspellings 2014-10-14 02:18:15 +02:00
tags.sh Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild 2014-10-14 09:27:48 +02:00
unifdef.c
ver_linux
xz_wrap.sh kbuild: Make scripts executable 2014-08-20 16:03:45 +02:00