1558 Commits

Author SHA1 Message Date
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
Greg Kroah-Hartman
ee52d08d2e Linux 4.9.70 2017-12-16 16:26:04 +01:00
Masahiro Yamada
97c6687021 kbuild: do not call cc-option before KBUILD_CFLAGS initialization
[ Upstream commit 433dc2ebe7d17dd21cba7ad5c362d37323592236 ]

Some $(call cc-option,...) are invoked very early, even before
KBUILD_CFLAGS, etc. are initialized.

The returned string from $(call cc-option,...) depends on
KBUILD_CPPFLAGS, KBUILD_CFLAGS, and GCC_PLUGINS_CFLAGS.

Since they are exported, they are not empty when the top Makefile
is recursively invoked.

The recursion occurs in several places.  For example, the top
Makefile invokes itself for silentoldconfig.  "make tinyconfig",
"make rpm-pkg" are the cases, too.

In those cases, the second call of cc-option from the same line
runs a different shell command due to non-pristine KBUILD_CFLAGS.

To get the same result all the time, KBUILD_* and GCC_PLUGINS_CFLAGS
must be initialized before any call of cc-option.  This avoids
garbage data in the .cache.mk file.

Move all calls of cc-option below the config targets because target
compiler flags are unnecessary for Kconfig.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-12-16 16:25:47 +01:00
Greg Kroah-Hartman
c91efc7862 Linux 4.9.69 2017-12-14 09:28:24 +01:00
Greg Kroah-Hartman
3781db07c7 Linux 4.9.68 2017-12-09 22:01:57 +01:00
Greg Kroah-Hartman
284bbc7824 Linux 4.9.67 2017-12-05 11:24:35 +01:00
Greg Kroah-Hartman
8743ce3d7c Linux 4.9.66 2017-11-30 08:39:15 +00:00
Greg Kroah-Hartman
133e6ccf46 Linux 4.9.65 2017-11-24 08:33:43 +01:00
Greg Kroah-Hartman
563c24f65f Linux 4.9.64 2017-11-21 09:23:30 +01:00