aboutsummaryrefslogtreecommitdiff
path: root/Makefile
AgeCommit message (Collapse)Author
2016-07-17 Merge tag 'v3.18.37' into linux-linaro-lsk-v3.18lsk-v3.18-16.07Alex Shi
This is the 3.18.37 stable release
2016-07-13Linux 3.18.37Sasha Levin
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2016-06-24 Merge tag 'v3.18.36' into linux-linaro-lsk-v3.18lsk-v3.18-16.06Alex Shi
This is the 3.18.36 stable release
2016-06-23Linux 3.18.36Sasha Levin
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2016-06-14 Merge tag 'v3.18.35' into linux-linaro-lsk-v3.18Alex Shi
This is the 3.18.35 stable release
2016-06-06Linux 3.18.35Sasha Levin
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2016-06-06kbuild: move -Wunused-const-variable to W=1 warning levelArnd Bergmann
[ Upstream commit c9c6837d39311b0cc14cdbe7c18e815ab44aefb1 ] gcc-6 started warning by default about variables that are not used anywhere and that are marked 'const', generating many false positives in an allmodconfig build, e.g.: arch/arm/mach-davinci/board-da830-evm.c:282:20: warning: 'da830_evm_emif25_pins' defined but not used [-Wunused-const-variable=] arch/arm/plat-omap/dmtimer.c:958:34: warning: 'omap_timer_match' defined but not used [-Wunused-const-variable=] drivers/bluetooth/hci_bcm.c:625:39: warning: 'acpi_bcm_default_gpios' defined but not used [-Wunused-const-variable=] drivers/char/hw_random/omap-rng.c:92:18: warning: 'reg_map_omap4' defined but not used [-Wunused-const-variable=] drivers/devfreq/exynos/exynos5_bus.c:381:32: warning: 'exynos5_busfreq_int_pm' defined but not used [-Wunused-const-variable=] drivers/dma/mv_xor.c:1139:34: warning: 'mv_xor_dt_ids' defined but not used [-Wunused-const-variable=] This is similar to the existing -Wunused-but-set-variable warning that was added in an earlier release and that we disable by default now and only enable when W=1 is set, so it makes sense to do the same here. Once we have eliminated the majority of the warnings for both, we can put them back into the default list. We probably want this in backport kernels as well, to allow building them with gcc-6 without introducing extra warnings. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Acked-by: Olof Johansson <olof@lixom.net> Acked-by: Lee Jones <lee.jones@linaro.org> Cc: stable@vger.kernel.org Signed-off-by: Michal Marek <mmarek@suse.com> Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2016-06-06gcov: disable tree-loop-im to reduce stack usageArnd Bergmann
[ Upstream commit c87bf431448b404a6ef5fbabd74c0e3e42157a7f ] Enabling CONFIG_GCOV_PROFILE_ALL produces us a lot of warnings like lib/lz4/lz4hc_compress.c: In function 'lz4_compresshcctx': lib/lz4/lz4hc_compress.c:514:1: warning: the frame size of 1504 bytes is larger than 1024 bytes [-Wframe-larger-than=] After some investigation, I found that this behavior started with gcc-4.9, and opened https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69702. A suggested workaround for it is to use the -fno-tree-loop-im flag that turns off one of the optimization stages in gcc, so the code runs a little slower but does not use excessive amounts of stack. We could make this conditional on the gcc version, but I could not find an easy way to do this in Kbuild and the benefit would be fairly small, given that most of the gcc version in production are affected now. I'm marking this for 'stable' backports because it addresses a bug with code generation in gcc that exists in all kernel versions with the affected gcc releases. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Acked-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com> Cc: stable@vger.kernel.org Signed-off-by: Michal Marek <mmarek@suse.com> Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2016-05-24 Merge tag 'v3.18.34' into linux-linaro-lsk-v3.18lsk-v3.18-16.05Alex Shi
This is the 3.18.34 stable release
2016-05-20Linux 3.18.34Sasha Levin
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2016-05-12 Merge tag 'v3.18.33' into linux-linaro-lsk-v3.18Alex Shi
This is the 3.18.33 stable release
2016-05-11Linux 3.18.33Sasha Levin
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2016-05-05Merge remote-tracking branch 'lts/linux-3.18.y' into linux-linaro-lsk-v3.18Alex Shi
Conflicts: include/linux/compiler-gcc.h
2016-04-27Merge branch 'v3.18/topic/KASAN' into linux-linaro-lsk-v3.18lsk-v3.18-16.04Alex Shi
2016-04-23Linux 3.18.32Sasha Levin
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2016-04-19Linux 3.18.31Sasha Levin
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2016-04-11kasan: add kernel address sanitizer infrastructureAndrey Ryabinin
Kernel Address sanitizer (KASan) is a dynamic memory error detector. It provides fast and comprehensive solution for finding use-after-free and out-of-bounds bugs. KASAN uses compile-time instrumentation for checking every memory access, therefore GCC > v4.9.2 required. v4.9.2 almost works, but has issues with putting symbol aliases into the wrong section, which breaks kasan instrumentation of globals. This patch only adds infrastructure for kernel address sanitizer. It's not available for use yet. The idea and some code was borrowed from [1]. Basic idea: The main idea of KASAN is to use shadow memory to record whether each byte of memory is safe to access or not, and use compiler's instrumentation to check the shadow memory on each memory access. Address sanitizer uses 1/8 of the memory addressable in kernel for shadow memory and uses direct mapping with a scale and offset to translate a memory address to its corresponding shadow address. Here is function to translate address to corresponding shadow address: unsigned long kasan_mem_to_shadow(unsigned long addr) { return (addr >> KASAN_SHADOW_SCALE_SHIFT) + KASAN_SHADOW_OFFSET; } where KASAN_SHADOW_SCALE_SHIFT = 3. So for every 8 bytes there is one corresponding byte of shadow memory. The following encoding used for each shadow byte: 0 means that all 8 bytes of the corresponding memory region are valid for access; k (1 <= k <= 7) means that the first k bytes are valid for access, and other (8 - k) bytes are not; Any negative value indicates that the entire 8-bytes are inaccessible. Different negative values used to distinguish between different kinds of inaccessible memory (redzones, freed memory) (see mm/kasan/kasan.h). To be able to detect accesses to bad memory we need a special compiler. Such compiler inserts a specific function calls (__asan_load*(addr), __asan_store*(addr)) before each memory access of size 1, 2, 4, 8 or 16. These functions check whether memory region is valid to access or not by checking corresponding shadow memory. If access is not valid an error printed. Historical background of the address sanitizer from Dmitry Vyukov: "We've developed the set of tools, AddressSanitizer (Asan), ThreadSanitizer and MemorySanitizer, for user space. We actively use them for testing inside of Google (continuous testing, fuzzing, running prod services). To date the tools have found more than 10'000 scary bugs in Chromium, Google internal codebase and various open-source projects (Firefox, OpenSSL, gcc, clang, ffmpeg, MySQL and lots of others): [2] [3] [4]. The tools are part of both gcc and clang compilers. We have not yet done massive testing under the Kernel AddressSanitizer (it's kind of chicken and egg problem, you need it to be upstream to start applying it extensively). To date it has found about 50 bugs. Bugs that we've found in upstream kernel are listed in [5]. We've also found ~20 bugs in out internal version of the kernel. Also people from Samsung and Oracle have found some. [...] As others noted, the main feature of AddressSanitizer is its performance due to inline compiler instrumentation and simple linear shadow memory. User-space Asan has ~2x slowdown on computational programs and ~2x memory consumption increase. Taking into account that kernel usually consumes only small fraction of CPU and memory when running real user-space programs, I would expect that kernel Asan will have ~10-30% slowdown and similar memory consumption increase (when we finish all tuning). I agree that Asan can well replace kmemcheck. We have plans to start working on Kernel MemorySanitizer that finds uses of unitialized memory. Asan+Msan will provide feature-parity with kmemcheck. As others noted, Asan will unlikely replace debug slab and pagealloc that can be enabled at runtime. Asan uses compiler instrumentation, so even if it is disabled, it still incurs visible overheads. Asan technology is easily portable to other architectures. Compiler instrumentation is fully portable. Runtime has some arch-dependent parts like shadow mapping and atomic operation interception. They are relatively easy to port." Comparison with other debugging features: ======================================== KMEMCHECK: - KASan can do almost everything that kmemcheck can. KASan uses compile-time instrumentation, which makes it significantly faster than kmemcheck. The only advantage of kmemcheck over KASan is detection of uninitialized memory reads. Some brief performance testing showed that kasan could be x500-x600 times faster than kmemcheck: $ netperf -l 30 MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to localhost (127.0.0.1) port 0 AF_INET Recv Send Send Socket Socket Message Elapsed Size Size Size Time Throughput bytes bytes bytes secs. 10^6bits/sec no debug: 87380 16384 16384 30.00 41624.72 kasan inline: 87380 16384 16384 30.00 12870.54 kasan outline: 87380 16384 16384 30.00 10586.39 kmemcheck: 87380 16384 16384 30.03 20.23 - Also kmemcheck couldn't work on several CPUs. It always sets number of CPUs to 1. KASan doesn't have such limitation. DEBUG_PAGEALLOC: - KASan is slower than DEBUG_PAGEALLOC, but KASan works on sub-page granularity level, so it able to find more bugs. SLUB_DEBUG (poisoning, redzones): - SLUB_DEBUG has lower overhead than KASan. - SLUB_DEBUG in most cases are not able to detect bad reads, KASan able to detect both reads and writes. - In some cases (e.g. redzone overwritten) SLUB_DEBUG detect bugs only on allocation/freeing of object. KASan catch bugs right before it will happen, so we always know exact place of first bad read/write. [1] https://code.google.com/p/address-sanitizer/wiki/AddressSanitizerForKernel [2] https://code.google.com/p/address-sanitizer/wiki/FoundBugs [3] https://code.google.com/p/thread-sanitizer/wiki/FoundBugs [4] https://code.google.com/p/memory-sanitizer/wiki/FoundBugs [5] https://code.google.com/p/address-sanitizer/wiki/AddressSanitizerForKernel#Trophies Based on work by Andrey Konovalov. Signed-off-by: Andrey Ryabinin <a.ryabinin@samsung.com> Acked-by: Michal Marek <mmarek@suse.cz> Signed-off-by: Andrey Konovalov <adech.fo@gmail.com> Cc: Dmitry Vyukov <dvyukov@google.com> Cc: Konstantin Serebryany <kcc@google.com> Cc: Dmitry Chernenkov <dmitryc@google.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> Cc: Stephen Rothwell <sfr@canb.auug.org.au> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> (cherry picked from commit 0b24becc810dc3be6e3f94103a866f214c282394) Signed-off-by: Alex Shi <alex.shi@linaro.org>
2016-04-03Linux 3.18.30Sasha Levin
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2016-03-17Linux 3.18.29Sasha Levin
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2016-03-04Linux 3.18.28Sasha Levin
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2016-02-15Linux 3.18.27Sasha Levin
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2016-01-25Linux 3.18.26Sasha Levin
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2015-12-15Linux 3.18.25v3.18.25Sasha Levin
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2015-10-31Linux 3.18.24v3.18.24Sasha Levin
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2015-10-28Linux 3.18.23v3.18.23Sasha Levin
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2015-10-01Linux 3.18.22v3.18.22Sasha Levin
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2015-08-31Linux 3.18.21v3.18.21Sasha Levin
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2015-08-07Linux 3.18.20v3.18.20Sasha Levin
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2015-07-20Linux 3.18.19v3.18.19Sasha Levin
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2015-07-09Linux 3.18.18v3.18.18Sasha Levin
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2015-06-28Linux 3.18.17v3.18.17Sasha Levin
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2015-06-14Linux 3.18.16v3.18.16Sasha Levin
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2015-06-13Linux 3.18.15v3.18.15Sasha Levin
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2015-05-20Linux 3.18.14v3.18.14Sasha Levin
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2015-05-05Linux 3.18.13v3.18.13Sasha Levin
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2015-04-20Linux 3.18.12v3.18.12Sasha Levin
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2015-04-03Linux 3.18.11v3.18.11Sasha Levin
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2015-03-23Linux 3.18.10v3.18.10Sasha Levin
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2015-03-06Linux 3.18.9v3.18.9Greg Kroah-Hartman
2015-02-26Linux 3.18.8v3.18.8Greg Kroah-Hartman
2015-02-11Linux 3.18.7v3.18.7Greg Kroah-Hartman
2015-02-06Linux 3.18.6v3.18.6Greg Kroah-Hartman
2015-01-29Linux 3.18.5v3.18.5Greg Kroah-Hartman
2015-01-27Linux 3.18.4v3.18.4Greg Kroah-Hartman
2015-01-16Linux 3.18.3v3.18.3Greg Kroah-Hartman
2015-01-08Linux 3.18.2v3.18.2Greg Kroah-Hartman
2014-12-16Linux 3.18.1v3.18.1Greg Kroah-Hartman
2014-12-07Linux 3.18v3.18Linus Torvalds
2014-11-30Linux 3.18-rc7v3.18-rc7Linus Torvalds
2014-11-23Linux 3.18-rc6v3.18-rc6Linus Torvalds