1528 Commits

Author SHA1 Message Date
Greg Kroah-Hartman
927556eb3a Linux 4.9.127 2018-09-15 09:43:07 +02:00
Greg Kroah-Hartman
66f5a871e5 Linux 4.9.126 2018-09-09 20:01:26 +02:00
Greg Kroah-Hartman
9eabacaf4c Linux 4.9.125 2018-09-05 09:20:11 +02:00
Greg Kroah-Hartman
e8d49e4292 Linux 4.9.124 2018-08-24 13:12:43 +02:00
Greg Kroah-Hartman
676054232e Linux 4.9.123 2018-08-22 07:47:16 +02:00
Greg Kroah-Hartman
ea101a7026 Linux 4.9.122 2018-08-18 10:47:20 +02:00
Greg Kroah-Hartman
d0e3227f31 Linux 4.9.121 2018-08-17 20:59:30 +02:00
Andrey Konovalov
76b6f30f94 kasan: don't emit builtin calls when sanitization is off
commit 0e410e158e5baa1300bdf678cea4f4e0cf9d8b94 upstream.

With KASAN enabled the kernel has two different memset() functions, one
with KASAN checks (memset) and one without (__memset).  KASAN uses some
macro tricks to use the proper version where required.  For example
memset() calls in mm/slub.c are without KASAN checks, since they operate
on poisoned slab object metadata.

The issue is that clang emits memset() calls even when there is no
memset() in the source code.  They get linked with improper memset()
implementation and the kernel fails to boot due to a huge amount of KASAN
reports during early boot stages.

The solution is to add -fno-builtin flag for files with KASAN_SANITIZE :=
n marker.

Link: http://lkml.kernel.org/r/8ffecfffe04088c52c42b92739c2bd8a0bcb3f5e.1516384594.git.andreyknvl@google.com
Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
Acked-by: Nick Desaulniers <ndesaulniers@google.com>
Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
Cc: Michal Marek <michal.lkml@markovi.net>
Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
Cc: Alexander Potapenko <glider@google.com>
Cc: Dmitry Vyukov <dvyukov@google.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
[ Sami: Backported to 4.9 avoiding c5caf21ab0cf8 and e7c52b84fb ]
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-08-17 20:59:29 +02:00
Greg Kroah-Hartman
93e02ae420 Linux 4.9.120 2018-08-15 18:14:55 +02:00
Greg Kroah-Hartman
8f21ecb424 Linux 4.9.119 2018-08-09 12:18:00 +02:00
Greg Kroah-Hartman
e01202b36f Linux 4.9.118 2018-08-06 16:23:04 +02:00
Greg Kroah-Hartman
ddd28fff50 Linux 4.9.117 2018-08-03 07:55:27 +02:00
Greg Kroah-Hartman
94c67449c7 Linux 4.9.116 2018-07-28 07:49:14 +02:00
Arnd Bergmann
b1a1d9bdb1 turn off -Wattribute-alias
Starting with gcc-8.1, we get a warning about all system call definitions,
which use an alias between functions with incompatible prototypes, e.g.:

In file included from ../mm/process_vm_access.c:19:
../include/linux/syscalls.h:211:18: warning: 'sys_process_vm_readv' alias between functions of incompatible types 'long int(pid_t,  const struct iovec *, long unsigned int,  const struct iovec *, long unsigned int,  long unsigned int)' {aka 'long int(int,  const struct iovec *, long unsigned int,  const struct iovec *, long unsigned int,  long unsigned int)'} and 'long int(long int,  long int,  long int,  long int,  long int,  long int)' [-Wattribute-alias]
  asmlinkage long sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) \
                  ^~~
../include/linux/syscalls.h:207:2: note: in expansion of macro '__SYSCALL_DEFINEx'
  __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
  ^~~~~~~~~~~~~~~~~
../include/linux/syscalls.h:201:36: note: in expansion of macro 'SYSCALL_DEFINEx'
 #define SYSCALL_DEFINE6(name, ...) SYSCALL_DEFINEx(6, _##name, __VA_ARGS__)
                                    ^~~~~~~~~~~~~~~
../mm/process_vm_access.c:300:1: note: in expansion of macro 'SYSCALL_DEFINE6'
 SYSCALL_DEFINE6(process_vm_readv, pid_t, pid, const struct iovec __user *, lvec,
 ^~~~~~~~~~~~~~~
../include/linux/syscalls.h:215:18: note: aliased declaration here
  asmlinkage long SyS##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \
                  ^~~
../include/linux/syscalls.h:207:2: note: in expansion of macro '__SYSCALL_DEFINEx'
  __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
  ^~~~~~~~~~~~~~~~~
../include/linux/syscalls.h:201:36: note: in expansion of macro 'SYSCALL_DEFINEx'
 #define SYSCALL_DEFINE6(name, ...) SYSCALL_DEFINEx(6, _##name, __VA_ARGS__)
                                    ^~~~~~~~~~~~~~~
../mm/process_vm_access.c:300:1: note: in expansion of macro 'SYSCALL_DEFINE6'
 SYSCALL_DEFINE6(process_vm_readv, pid_t, pid, const struct iovec __user *, lvec,

This is really noisy and does not indicate a real problem. In the latest
mainline kernel, this was addressed by commit bee20031772a ("disable
-Wattribute-alias warning for SYSCALL_DEFINEx()"), which seems too invasive
to backport.

This takes a much simpler approach and just disables the warning across the
kernel.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-07-28 07:49:13 +02:00
Greg Kroah-Hartman
dbcdf42bab Linux 4.9.115 2018-07-25 11:24:03 +02:00
Greg Kroah-Hartman
19e5f4da12 Linux 4.9.114 2018-07-22 14:27:43 +02:00
Greg Kroah-Hartman
f77982e691 Linux 4.9.113 2018-07-17 11:37:54 +02:00
Greg Kroah-Hartman
060744011e Linux 4.9.112 2018-07-11 16:26:46 +02:00
Greg Kroah-Hartman
e692f66fab Linux 4.9.111 2018-07-03 11:23:18 +02:00
Greg Kroah-Hartman
c806e08569 Linux 4.9.110 2018-06-26 08:08:09 +08:00
Greg Kroah-Hartman
8e52b94e19 Linux 4.9.109 2018-06-16 09:52:35 +02:00
Greg Kroah-Hartman
4f42dc62be Linux 4.9.108 2018-06-13 16:16:44 +02:00
Greg Kroah-Hartman
3c3d05fc6e Linux 4.9.107 2018-06-06 16:44:39 +02:00
Greg Kroah-Hartman
2460c23c35 Linux 4.9.106 2018-06-05 10:28:58 +02:00
Greg Kroah-Hartman
3762b3e2aa Linux 4.9.105 2018-05-30 22:25:17 +02:00
Greg Kroah-Hartman
5b90d559d4 Linux 4.9.104 2018-05-30 07:50:52 +02:00
Greg Kroah-Hartman
aa4b4ace9c Linux 4.9.103 2018-05-25 16:13:16 +02:00
Greg Kroah-Hartman
2272cdd5d5 Linux 4.9.102 2018-05-22 16:58:04 +02:00
Greg Kroah-Hartman
6ba89b52ba Linux 4.9.101 2018-05-19 10:27:01 +02:00
Greg Kroah-Hartman
872e1aead3 Linux 4.9.100 2018-05-16 10:08:45 +02:00
Greg Kroah-Hartman
04cd74a759 Linux 4.9.99 2018-05-09 09:50:24 +02:00
Greg Kroah-Hartman
eff40cb190 Linux 4.9.98 2018-05-01 15:13:10 -07:00
Greg Kroah-Hartman
ba3cd57962 Linux 4.9.97 2018-04-29 11:32:03 +02:00
Greg Kroah-Hartman
5cd35f3eb5 Linux 4.9.96 2018-04-24 09:34:18 +02:00
Greg Kroah-Hartman
eedaf21fb3 Linux 4.9.95 2018-04-20 08:21:08 +02:00
Greg Kroah-Hartman
cc0eb4dd50 Linux 4.9.94 2018-04-13 19:48:37 +02:00
Greg Kroah-Hartman
d32da5bd9f Linux 4.9.93 2018-04-08 12:13:01 +02:00
Greg Kroah-Hartman
f080bba272 Linux 4.9.92 2018-03-31 18:11:36 +02:00
Greg Kroah-Hartman
c44cfe06df Linux 4.9.91 2018-03-28 18:39:26 +02:00
Daniel Borkmann
733a4e1af8 kbuild: disable clang's default use of -fmerge-all-constants
commit 87e0d4f0f37fb0c8c4aeeac46fff5e957738df79 upstream.

Prasad reported that he has seen crashes in BPF subsystem with netd
on Android with arm64 in the form of (note, the taint is unrelated):

  [ 4134.721483] Unable to handle kernel paging request at virtual address 800000001
  [ 4134.820925] Mem abort info:
  [ 4134.901283]   Exception class = DABT (current EL), IL = 32 bits
  [ 4135.016736]   SET = 0, FnV = 0
  [ 4135.119820]   EA = 0, S1PTW = 0
  [ 4135.201431] Data abort info:
  [ 4135.301388]   ISV = 0, ISS = 0x00000021
  [ 4135.359599]   CM = 0, WnR = 0
  [ 4135.470873] user pgtable: 4k pages, 39-bit VAs, pgd = ffffffe39b946000
  [ 4135.499757] [0000000800000001] *pgd=0000000000000000, *pud=0000000000000000
  [ 4135.660725] Internal error: Oops: 96000021 [#1] PREEMPT SMP
  [ 4135.674610] Modules linked in:
  [ 4135.682883] CPU: 5 PID: 1260 Comm: netd Tainted: G S      W       4.14.19+ #1
  [ 4135.716188] task: ffffffe39f4aa380 task.stack: ffffff801d4e0000
  [ 4135.731599] PC is at bpf_prog_add+0x20/0x68
  [ 4135.741746] LR is at bpf_prog_inc+0x20/0x2c
  [ 4135.751788] pc : [<ffffff94ab7ad584>] lr : [<ffffff94ab7ad638>] pstate: 60400145
  [ 4135.769062] sp : ffffff801d4e3ce0
  [...]
  [ 4136.258315] Process netd (pid: 1260, stack limit = 0xffffff801d4e0000)
  [ 4136.273746] Call trace:
  [...]
  [ 4136.442494] 3ca0: ffffff94ab7ad584 0000000060400145 ffffffe3a01bf8f8 0000000000000006
  [ 4136.460936] 3cc0: 0000008000000000 ffffff94ab844204 ffffff801d4e3cf0 ffffff94ab7ad584
  [ 4136.479241] [<ffffff94ab7ad584>] bpf_prog_add+0x20/0x68
  [ 4136.491767] [<ffffff94ab7ad638>] bpf_prog_inc+0x20/0x2c
  [ 4136.504536] [<ffffff94ab7b5d08>] bpf_obj_get_user+0x204/0x22c
  [ 4136.518746] [<ffffff94ab7ade68>] SyS_bpf+0x5a8/0x1a88

Android's netd was basically pinning the uid cookie BPF map in BPF
fs (/sys/fs/bpf/traffic_cookie_uid_map) and later on retrieving it
again resulting in above panic. Issue is that the map was wrongly
identified as a prog! Above kernel was compiled with clang 4.0,
and it turns out that clang decided to merge the bpf_prog_iops and
bpf_map_iops into a single memory location, such that the two i_ops
could then not be distinguished anymore.

Reason for this miscompilation is that clang has the more aggressive
-fmerge-all-constants enabled by default. In fact, clang source code
has a comment about it in lib/AST/ExprConstant.cpp on why it is okay
to do so:

  Pointers with different bases cannot represent the same object.
  (Note that clang defaults to -fmerge-all-constants, which can
  lead to inconsistent results for comparisons involving the address
  of a constant; this generally doesn't matter in practice.)

The issue never appeared with gcc however, since gcc does not enable
-fmerge-all-constants by default and even *explicitly* states in
it's option description that using this flag results in non-conforming
behavior, quote from man gcc:

  Languages like C or C++ require each variable, including multiple
  instances of the same variable in recursive calls, to have distinct
  locations, so using this option results in non-conforming behavior.

There are also various clang bug reports open on that matter [1],
where clang developers acknowledge the non-conforming behavior,
and refer to disabling it with -fno-merge-all-constants. But even
if this gets fixed in clang today, there are already users out there
that triggered this. Thus, fix this issue by explicitly adding
-fno-merge-all-constants to the kernel's Makefile to generically
disable this optimization, since potentially other places in the
kernel could subtly break as well.

Note, there is also a flag called -fmerge-constants (not supported
by clang), which is more conservative and only applies to strings
and it's enabled in gcc's -O/-O2/-O3/-Os optimization levels. In
gcc's code, the two flags -fmerge-{all-,}constants share the same
variable internally, so when disabling it via -fno-merge-all-constants,
then we really don't merge any const data (e.g. strings), and text
size increases with gcc (14,927,214 -> 14,942,646 for vmlinux.o).

  $ gcc -fverbose-asm -O2 foo.c -S -o foo.S
    -> foo.S lists -fmerge-constants under options enabled
  $ gcc -fverbose-asm -O2 -fno-merge-all-constants foo.c -S -o foo.S
    -> foo.S doesn't list -fmerge-constants under options enabled
  $ gcc -fverbose-asm -O2 -fno-merge-all-constants -fmerge-constants foo.c -S -o foo.S
    -> foo.S lists -fmerge-constants under options enabled

Thus, as a workaround we need to set both -fno-merge-all-constants
*and* -fmerge-constants in the Makefile in order for text size to
stay as is.

  [1] https://bugs.llvm.org/show_bug.cgi?id=18538

Reported-by: Prasad Sodagudi <psodagud@codeaurora.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Chenbo Feng <fengc@google.com>
Cc: Richard Smith <richard-llvm@metafoo.co.uk>
Cc: Chandler Carruth <chandlerc@gmail.com>
Cc: linux-kernel@vger.kernel.org
Tested-by: Prasad Sodagudi <psodagud@codeaurora.org>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-03-28 18:39:26 +02:00
Greg Kroah-Hartman
24f70aa804 Linux 4.9.90 2018-03-24 11:00:27 +01:00
Greg Kroah-Hartman
a779add58a Linux 4.9.89 2018-03-22 09:18:01 +01:00
Greg Kroah-Hartman
46e076f0da Linux 4.9.88 2018-03-18 11:18:56 +01:00
Greg Kroah-Hartman
b67416226a Linux 4.9.87 2018-03-11 16:21:35 +01:00
Greg Kroah-Hartman
6a83eb2354 Linux 4.9.86 2018-03-03 10:23:29 +01:00
Greg Kroah-Hartman
c426a717c3 Linux 4.9.85 2018-02-28 10:18:34 +01:00
Greg Kroah-Hartman
19c04ca5b2 Linux 4.9.84 2018-02-25 11:05:56 +01:00
Josh Poimboeuf
afdfe5f58f tools build: Add tools tree support for 'make -s'
commit e572d0887137acfc53f18175522964ec19d88175 upstream.

When doing a kernel build with 'make -s', everything is silenced except
the objtool build.  That's because the tools tree support for silent
builds is some combination of missing and broken.

Three changes are needed to fix it:

- Makefile: propagate '-s' to the sub-make's MAKEFLAGS variable so the
  tools Makefiles can see it.

- tools/scripts/Makefile.include: fix the tools Makefiles' ability to
  recognize '-s'.  The MAKE_VERSION and MAKEFLAGS checks are copied from
  the top-level Makefile.  This silences the "DESCEND objtool" message.

- tools/build/Makefile.build: add support to the tools Build files for
  recognizing '-s'.  Again the MAKE_VERSION and MAKEFLAGS checks are
  copied from the top-level Makefile.  This silences all the object
  compile/link messages.

Reported-and-Tested-by: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Michal Marek <mmarek@suse.com>
Link: http://lkml.kernel.org/r/e8967562ef640c3ae9a76da4ae0f4e47df737c34.1484799200.git.jpoimboe@redhat.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-02-25 11:05:52 +01:00
Greg Kroah-Hartman
80c1c8322c Linux 4.9.83 2018-02-22 15:43:56 +01:00
Greg Kroah-Hartman
3e598a7089 Linux 4.9.82 2018-02-17 13:21:21 +01:00