1566 Commits

Author SHA1 Message Date
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
Greg Kroah-Hartman
7f3bd8db99 Linux 4.9.81 2018-02-13 12:36:03 +01:00
Greg Kroah-Hartman
331b057d4f Linux 4.9.80 2018-02-03 17:05:43 +01:00
Greg Kroah-Hartman
6c6f924f9c Linux 4.9.79 2018-01-31 12:55:57 +01:00
Greg Kroah-Hartman
79584a4221 Linux 4.9.78 2018-01-23 19:57:10 +01:00
Greg Kroah-Hartman
b8cf9ff79d Linux 4.9.77 2018-01-17 09:39:00 +01:00
Greg Kroah-Hartman
7bbc6ca488 Linux 4.9.76 2018-01-10 09:29:55 +01:00
Greg Kroah-Hartman
9f74755895 Linux 4.9.75 2018-01-05 15:46:36 +01:00
Greg Kroah-Hartman
07bcb2489b Linux 4.9.74 2018-01-02 20:35:18 +01:00
Linus Torvalds
b929ccccbc kbuild: add '-fno-stack-check' to kernel build options
commit 3ce120b16cc548472f80cf8644f90eda958cf1b6 upstream.

It appears that hardened gentoo enables "-fstack-check" by default for
gcc.

That doesn't work _at_all_ for the kernel, because the kernel stack
doesn't act like a user stack at all: it's much smaller, and it doesn't
auto-expand on use.  So the extra "probe one page below the stack" code
generated by -fstack-check just breaks the kernel in horrible ways,
causing infinite double faults etc.

[ I have to say, that the particular code gcc generates looks very
  stupid even for user space where it works, but that's a separate
  issue.  ]

Reported-and-tested-by: Alexander Tsoy <alexander@tsoy.me>
Reported-and-tested-by: Toralf Förster <toralf.foerster@gmx.de>
Cc: Dave Hansen <dave.hansen@intel.com>
Cc: Jiri Kosina <jikos@kernel.org>
Cc: Andy Lutomirski <luto@amacapital.net>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-01-02 20:35:10 +01:00
Greg Kroah-Hartman
b3e88217e2 Linux 4.9.73 2017-12-29 17:43:00 +01:00
Greg Kroah-Hartman
2df3979310 Linux 4.9.72 2017-12-25 14:23:47 +01:00
Greg Kroah-Hartman
b632d71014 Linux 4.9.71 2017-12-20 10:07:34 +01:00