Commit Graph

397 Commits

Author SHA1 Message Date
Rolf Neugebauer
f1046b9a29 kernel: Adjust 4.4.x kernel config
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-04-27 18:52:12 +01:00
Rolf Neugebauer
54ed15ccce kernel: Update to 4.16.5/4.14.37/4.9.96/4.4.129
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-27 16:45:36 +01:00
Rolf Neugebauer
865c6691b1 kernel: Update to 4.16.4/4.14.36
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-27 15:01:42 +01:00
Rolf Neugebauer
c255821674 kernel: EOL 4.15.x
See http://lkml.iu.edu/hypermail/linux/kernel/1804.2/03399.html

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-27 14:58:23 +01:00
Rolf Neugebauer
d56d66a7aa kernel: Update to 4.9.95
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-23 11:52:12 +01:00
Rolf Neugebauer
c08fe57306
Merge pull request #3010 from TiejunChina/master-dev
update -rt to 4.14.34-rt27
2018-04-22 21:38:13 +01:00
Jason A. Donenfeld
bfad9ad0e9 wireguard: upgrade to 0.0.20180420
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-04-20 20:39:14 +02:00
Tiejun Chen
ff23b35c5f update -rt to 4.14.34-rt27
Signed-off-by: Tiejun Chen <tiejun.china@gmail.com>
2018-04-20 22:30:03 +08:00
Rolf Neugebauer
deaa4b855c kernel: Fix perf compile
This was broken with commit ae6a739ac0 ("kernel: Skip
compiling perf for 4.9.x") [by me]

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-19 15:41:43 +01:00
Rolf Neugebauer
e09023d723 kernel: Update build to latest linuxkit/alpine
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-19 13:52:26 +01:00
Rolf Neugebauer
24050c5817 kernel: Drop 4.15.x for s390x
The s390x build VM we have access to is quite slow. Dropping
the 4.15.x kernel, which soon will be EOLed anyway, to
save some time.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-19 13:48:30 +01:00
Rolf Neugebauer
2a9d21bee7 kernel: Update to 4.16.3/4.15.18/4.14.35
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-19 13:46:35 +01:00
Justin Cormack
ccd9d711c0
Some kernel builds need openssl binary for key generation
For example kernel module signatures if you do not provide a key. So add
to the dependencies for kernel builds.

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2018-04-17 14:16:13 +01:00
Jason A. Donenfeld
60fd3c062e wireguard: upgrade to 0.0.20180413
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-04-17 00:18:42 +02:00
Rolf Neugebauer
ae6a739ac0 kernel: Skip compiling perf for 4.9.x
4.9.93 broke the compile:

  tests/code-reading.c: In function 'read_object_code':
  tests/code-reading.c:228:19: error: 'KMOD_DECOMP_LEN' undeclared (first use in this function)
    char decomp_name[KMOD_DECOMP_LEN];
                     ^~~~~~~~~~~~~~~
  tests/code-reading.c:228:19: note: each undeclared identifier is reported only once for each function it appears in
  tests/code-reading.c:291:7: error: implicit declaration of function 'dso__decompress_kmodule_path' [-Werror=implicit-function-declaration]
    if (dso__decompress_kmodule_path(al.map->dso, objdump_name,
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
  tests/code-reading.c:291:3: error: nested extern declaration of 'dso__decompress_kmodule_path' [-Werror=nested-externs]
    if (dso__decompress_kmodule_path(al.map->dso, objdump_name,
    ^~
  tests/code-reading.c:228:7: error: unused variable 'decomp_name' [-Werror=unused-variable]
    char decomp_name[KMOD_DECOMP_LEN];
         ^~~~~~~~~~~
  cc1: all warnings being treated as errors
  mv: can't rename '/build/perf/tests/.code-reading.o.tmp': No such file or directory
  make[3]: *** [/linux/tools/build/Makefile.build:101: /build/perf/tests/code-reading.o] Error 1
  make[3]: *** Waiting for unfinished jobs....
  make[2]: *** [/linux/tools/build/Makefile.build:144: tests] Error 2
  make[2]: *** Waiting for unfinished jobs....
  make[2]: *** [/linux/tools/build/Makefile.build:144: util] Error 2
  make[1]: *** [Makefile.perf:559: /build/perf/libperf-in.o] Error 2
  make[1]: *** Waiting for unfinished jobs....
  make[1]: *** [Makefile.perf:396: /build/perf/perf-in.o] Error 2
  make: *** [Makefile:69: all] Error 2
  make: Leaving directory '/linux/tools/perf'

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-04-14 12:21:53 +01:00
Rolf Neugebauer
054b9bb924 kernel: Update to 4.9.94/4.4.128
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-04-14 11:18:33 +01:00
Rolf Neugebauer
4454c7b854 kernel: Enable MPLS_ROUTING and MPLS_IPTUNNEL as modules
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-13 15:21:57 +01:00
Rolf Neugebauer
d1b73f7cf3 kernel: Update to 4.16.2/4.15.17/4.14.34
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-13 14:53:19 +01:00
Rolf Neugebauer
a5c039f7ad kernel: Add bison/flex to kconfig Dockerfile
These are required for the 4.16.x kernel configuration.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-09 11:21:13 +01:00
Rolf Neugebauer
b69fc45955 kernel: Add the 4.16.1 kernel
The kernel config is based on the 4.15.x kernel config
run through 'make defconfig && make oldconfig' and then
tweaked a little by hand.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-09 11:20:19 +01:00
Rolf Neugebauer
fa9452af09 kernel: Update to 4.15.16/4.14.33/4.9.93/4.4.127
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-09 10:35:34 +01:00
Rolf Neugebauer
a8cc4f4f42 kernel: Don't compile -rt kernels on s390x
Looks like commit 9a88a5e986 ("Upgrade -rt patches to
v4.14.29-rt25") accidentally added compiling -rt kernels
for s390x. Remove it.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-04-04 22:51:07 +01:00
Rolf Neugebauer
a5a685750d kernel: Update to 4.15.15/4.14.32/4.9.92/4.4.126
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-04-01 17:52:14 +01:00
Tiejun Chen
9a88a5e986 Upgrade -rt patches to v4.14.29-rt25
Signed-off-by: Tiejun Chen <tiejun.china@gmail.com>
2018-03-30 21:10:01 -07:00
Rolf Neugebauer
462961d5c9 kernel: Update to 4.15.14/4.14.31/4.9.91/4.4.125
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-03-30 13:29:03 +01:00
Rolf Neugebauer
7f12cb577a kernel: Update to 4.15.13/4.14.30/4.9.90/4.4.124
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-03-30 12:19:02 +01:00
Rolf Neugebauer
9cb6f2d802 kernel: Enable CONFIG_FB_EFI for x86_64 and arm64
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-03-30 12:18:31 +01:00
Rolf Neugebauer
913f31e150 kernel: Drop 4.9.x for arm64
There are too many kernels to compile and arm64 takes a bit
too long to compile even on a beefy arm64 server.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-03-30 12:18:05 +01:00
Rolf Neugebauer
80f5f228e0 kernel: Cherry-pick two Hyper-V SCSI driver patche
These fix some issues around hot-unplugging devices which may be the cause
of some LCOW issues we are seeing.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-03-22 20:00:20 +00:00
Rolf Neugebauer
208811355a kernel: Update to 4.15.12/4.14.29/4.9.89/4.4.123
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-03-22 19:55:57 +00:00
Rolf Neugebauer
45b613e668 kernel: Update to 4.15.11/4.14.28/4.9.88/4.4.122
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-03-20 12:05:27 +00:00
Rolf Neugebauer
513e368880 kernel: Enable CEPH, DRBD, and RBD
All enabled as modules

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-03-15 13:50:18 +00:00
Rolf Neugebauer
1ff6f2eea5 kernel: Update Intel CPU firmware to 20180312
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-03-15 13:50:18 +00:00
Rolf Neugebauer
627e982b79 kernel: Update rt kernel to 4.14.24
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-03-15 11:22:11 +00:00
Rolf Neugebauer
28f1ae2e77 kernel: Update to 4.15.10/4.14.27
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-03-15 11:22:11 +00:00
Rolf Neugebauer
9a5727f5e4 kernel: Update to latest alpine base image
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-03-15 11:22:11 +00:00
Rolf Neugebauer
659f877da6 kernel: Update to 4.15.9/4.14.26/4.9.87/4.4.121
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-03-12 17:00:06 +00:00
Rolf Neugebauer
c573eee0ff kernel: Update kernels to 4.14.25/4.15.26
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-03-12 15:30:51 +00:00
Rolf Neugebauer
48251e8bcf kernel: Enable IMA for 4.14.x and 4.15.x
Enable the Integrity Measurement Architecture (IMA) for 4.14.x
and 4.15.x kernels. This pretty much uses the defaults except we
also enable INTEGRITY_ASYMMETRIC_KEYS and IMA_READ_POLICY. The
latter may be useful for debugging.

For s390x we also needed to enable TPM support.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-03-12 15:26:23 +00:00
Justin Ko
2eefd62710 Non-existent target check is marked phony
The non-existent target "check" is marked phony.

Signed-off-by: Justin Ko <oknitsuj@gmail.com>
2018-03-09 09:13:59 -08:00
Rolf Neugebauer
ae30674227 kernel: Update to 4.14.24/4.9.86/4.4.120
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-03-09 12:39:11 +00:00
Rolf Neugebauer
eee71f46e0 kernel: Adjust s390x kernel config
- Disable all network device driver apart from Mellanox, which
  is the only support NIC on s390x
- Disable Fusion MPT
- Disable DAX/NVMEM/NVME
- Disable USB

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-03-09 12:39:11 +00:00
Rolf Neugebauer
35c6e782e3 kernel: Make it clearer which kernels are compiled per arch
While this now has some duplication, it is clearer as to which
kernels are compiled for each architecture.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-03-09 11:35:58 +00:00
Jason A. Donenfeld
dc92ae7e39 wireguard: update to 0.0.20180304
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-03-05 13:47:34 +01:00
Alice Frosi
db0045b0c9 Add s390 support for linuxkit kernel
Update building process to add s390 support.

The patch serial-forbid-8250-on-s390.patch has been added to disable
8250 serial for s390.

The patch is available upstream https://patchwork.kernel.org/patch/10106437/
but it is not backported.

Signed-off-by: Alice Frosi <alice@linux.vnet.ibm.com>
2018-03-01 12:18:16 +00:00
Rolf Neugebauer
c08a2f19a8 kernel: Update alpine base to latest
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-02-28 16:35:23 +00:00
Rolf Neugebauer
fcba3e2350 kernel: Update to 4.15.7/4.4.23/4.9.85/4.4.119
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-02-28 11:02:15 +00:00
Rolf Neugebauer
afd255d6c9 kernel: Adjust 4.4.x config file
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-02-26 14:37:44 +00:00
Rolf Neugebauer
75ac2563f5 kernel: Update to 4.15.6/4.14.22/4.9.84/4.4.118
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-02-26 12:16:51 +00:00
Rolf Neugebauer
89c5941b88 kernel: Adjust kernel config files for 4.14
- KMEMCHECK has been removed
- PROFILE_ALL_BRANCHES was added (but is disabled)

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-02-23 18:33:21 +00:00
Rolf Neugebauer
5c68ca489d kernel: Update to 4.15.5/4.14.21/4.9.83/4.4.117
Also remove the 4.4 patch which should have been removed by
231cead2cc ("kernel: Update to 4.15.4/4.14.20/4.9.82/4.4.116")

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-02-23 18:06:18 +00:00
Rolf Neugebauer
cfc9c49269 kernel: Handle non-existing config file for 'make kconfig'
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-02-21 13:24:29 +00:00
Rolf Neugebauer
dbb14dfb69 kernel: Introduce per arch kernels and drop 4.4.x for arm64
We may soon get another arch, so wanted to set the template
for having per arch list of kernels to compile.

While at it also drop the 4.4.x kernel for arm64. We never really
tested it and folks should be on 4.9 or 4.14 anyway. I'll leave
4.4.x for x86 for now as it might be useful to test for regressions.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-02-21 13:24:28 +00:00
Rolf Neugebauer
bcc72c3502 kernel: Remove the 4.9.x and 4.14.x-rt debug kernels from build
In order to cut the number of kernels we build, remove the debug
kernel for the now non-default 4.9.x series.

Also remove the -rt debug kernel. Users who need it can build
it themselves with 'make EXTRA=-rt DEBUG=-dbg build_4.14.x'

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-02-21 10:44:22 +00:00
Rolf Neugebauer
1e9b769d65 kernel: Enable KAISER and Hardened Branch predictor for arm64
These are part of the Meltdown/Spectre mitigations for arm64
now available for 4.14 and 4.15

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-02-19 14:23:31 +00:00
Rolf Neugebauer
231cead2cc kernel: Update to 4.15.4/4.14.20/4.9.82/4.4.116
The 4.14.20 update has Meltdown/Spectre fixes for arm64

The 4.4.116 update incorporates the proper fix for the
div by zero crash in the firmware loader, so the patch
with the hackish workaround was dropped.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-02-19 14:06:11 +00:00
Rolf Neugebauer
1baf815c9a
Merge pull request #2897 from TiejunChina/master-dev
Support Preempt-RT Linux kernel
2018-02-19 14:00:54 +00:00
Jason A. Donenfeld
82ec5cd4e7 wireguard: update to 0.0.20180218
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-02-18 21:46:59 +01:00
Tiejun Chen
0e5d447f07 Support Preempt-RT Linux kernel
In order to get such a preempt-rt Linux kerne, we grab -rt patch via
https://www.kernel.org/pub/linux/kernel/projects/rt/. So far we just enable it
over 4.14.x.

Signed-off-by: Tiejun Chen <tiejun.china@gmail.com>
2018-02-16 05:47:22 -08:00
Rolf Neugebauer
bf18c1366b kernel: Add Hyper-V socket trace points to 4.14 kernel
This should make debugging a lot easier. Note, 991f8f1c6eb6
("hyper-v: trace channel events"), patch 18, required some
minor modifications from upstream as another patch was not easy
to cherry-pick.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-02-13 18:00:39 +00:00
Rolf Neugebauer
43ba6de147 kernel: Update to 4.15.3/4.14.19/4.9.81
Drop the hack for the microcode division by 0 on GCP as
a proper fix is in upstream as:
2760f452a718 ("x86/microcode: Do the family check first")

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-02-13 17:22:23 +00:00
Rolf Neugebauer
acfca26038 kernel: Update to 4.15.2/4.14.18
These kernels have significant changes/addition for Spectre
mitigation as well as the usual other set of fixes.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-02-08 11:50:17 +00:00
Rolf Neugebauer
d0d7738efa kernel: Tighten patching of the kernel
- Disable any fuzzing. Patches should apply cleanly
- Assume unified diffs

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-02-08 11:50:17 +00:00
Rolf Neugebauer
334334cea9 kernel: Adjust 4.4 kernel config
The CONFIG_BPF_JIT_ALWAYS_ON option has now been back-ported
to 4.4.115 as well. Enable it.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-02-06 18:43:34 +00:00
Rolf Neugebauer
ee0f182014 kernel: Update to 4.15.1/4.14.17/4.9.80/4.4.115
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-02-06 18:06:25 +00:00
Rolf Neugebauer
9ccfe3cef7 kernel: Add the 4.15.x kernel series
The kernel config was derived from the 4.14.x config being run
through make oldconfig

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-02-06 13:23:40 +00:00
Rolf Neugebauer
e4c4737548 kernel: Add patch to prevent division by zero panic
This adds a patch to avoid a division by zero panic for 4.4.x
and 4.9.x kernels on single vCPU machine types on Google Cloud.

4.14.x and 4.15.x kernels seem to work fine.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-02-06 13:23:40 +00:00
Rolf Neugebauer
82f3f9ae9a kernel: Enable new BPF_JIT_ALWAYS_ON
This option is not enabled by default, but disables the
BPF interpreter which can be used to inject speculative
execution into the kernel. Enabled it as it seems
like a good security measure.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-02-06 13:23:40 +00:00
Rolf Neugebauer
a6a5f69c8d kernel: Update to 4.14.16/4.9.79/4.4.114
The 4.14 and 4.9 kernels have a significant number of
fixes to eBPF and also a fix for kernel level sockets
and namespace removals, ie fixes some aspects of
https://github.com/moby/moby/issues/5618
"unregister_netdevice: waiting for lo to become free"

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-02-06 13:23:40 +00:00
Jason A. Donenfeld
fa77458231 wireguard: update to 0.0.20180202
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-02-02 19:12:19 +01:00
Emily Casey
e0374afb54 Use microcode-20171117 in kernel build as microcode-20180108 is no longer available
Signed-off-by: Emily Casey <ecasey@pivotal.io>
Signed-off-by: Steve Hiehn <shiehn@pivotal.io>
2018-01-30 17:51:40 -05:00
Rolf Neugebauer
183fcf0970 kernel: Add new retpoline option to the x86 4.4.x kernel
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-01-24 12:32:15 +00:00
Rolf Neugebauer
5de66f4fd9 kernel: Update to 4.14.15/4.9.78/4.4.113
While at it, also update to latest alpine base

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-01-24 11:56:34 +00:00
Jason A. Donenfeld
290d014959 wireguard: update to 0.0.20180118
* receive: treat packet checking as irrelevant for timers

Small simplification to the state machine, as discussed with Mathias
Hall-Andersen.

* socket: check for null socket before fishing out sport
* wg-quick: ifnames have max len of 15
* tools: plug memleak in config error path

Important bug fixes.

* external-tests: add python implementation

Piotr Lizonczyk has contributed a test vector written in Python.

* poly1305: remove indirect calls

From Samuel Neves, we now are in a better position to mitigate speculative
execution attacks.

* curve25519: modularize implementation
* curve25519: import 32-bit fiat-crypto implementation
* curve25519: import 64-bit hacl-star implementation
* curve25519: resolve symbol clash between fe types
* curve25519: wire up new impls and remove donna
* tools: import new curve25519 implementations
* contrib: keygen-html: update curve25519 implementation

Two of our Curve25519 implementations now use formally verified C. Read this
mailing list post for more information:
https://lists.zx2c4.com/pipermail/wireguard/2018-January/002304.html

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-01-19 11:53:18 +01:00
Rolf Neugebauer
130c6222bb kernel: Adjust kernel config with new options
- Enable RETPOLINE by default. Note, however, this will
  only be used if the compiler supports it.
- Enable sysfs interface for vulnerabilities

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-01-17 14:36:30 +00:00
Rolf Neugebauer
bfceb1dfbb kernel: Update to 4.14.14/4.9.77/4.4.112
The 4.4.14 has a number of important fixes/additions:
- New support for retpolines (enabled but requires newer gcc
  to take advantage of). This provides mitigation for Spectre
  style attacks.
- Various KPTI fixes including fixes for EFI booting
- More eBPF fixes around out-of-bounds and overflow of
  maps. These were used for variant 1 of CVE-2017-5753.
- Several KVM related to CVE-2017-5753, CVE-2017-5715,
  CVE-2017-17741.
- New sysfs interface listing vulnerabilities:
  /sys/devices/system/cpu/vulnerabilities

The 4.9.77 kernel also has seems to have most/all of the above
back-ported.

See https://lwn.net/SubscriberLink/744287/1fc3c18173f732e7/
for more details on the Spectre mitigation.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-01-17 14:31:54 +00:00
Rolf Neugebauer
2ed5334823 kernel: Fix up README.md
The content about debug was no longer valid.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-01-14 13:07:27 +00:00
Rolf Neugebauer
430bea64c3 kernel: Build the Intel ucode cpio archive and add to the kernel package
DOwnload and verify the Intel microcode package and convert it
to a cpio archive which can be prepended to the initrd.

It also adds the license file to the kernel package.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-01-14 13:07:27 +00:00
Rolf Neugebauer
9a101d1136 kernel: Update to 4.14.13/4.9.76/4.4.111
This looks like there are a couple of minor fixes to the
recent KPTI changes but nothing major...

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-01-10 11:12:27 +00:00
Rolf Neugebauer
682f6d8819 kernel: Enable KPTI on 4.9.x and 4.4.x kernels
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-01-06 11:24:43 +00:00
Rolf Neugebauer
d86d43fe40 kernel: Update to 4.14.12/4.9.75/4.4.110
4.9.75 and 4.4.10 now have KPTI backported as well

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-01-06 10:00:13 +00:00
Rolf Neugebauer
821cb0b829 kernel: Enable KPTI for 4.14 on x86_64
This is the new Lernel Page Table Isolation (KPTI,
formerly KAISER) introduced with 4.14.11 (and in
4.15.rcX).

KPTI runs the kernel and userspace off separate
pagetables (and uses PCID on more recent processors
to minimise the TLB flush penalty). It comes with
a performance hit but is enabled by default as a
workaround around some serious, not yet disclosed,
bug in Intel processors.

When enabled in the kernel config, KPTI will be
be dynamically enabled at boot time deping on the
CPU it is executing (currently all Intel x86 CPUs).

Depending on the environment, you may choose to
disable it using 'pti=off' on the kernel commandline.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-01-03 11:21:04 +00:00
Rolf Neugebauer
7abc1df0ad kernel: Update to 4.14.11/4.9.74/4.4.109
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-01-03 11:03:52 +00:00
Rolf Neugebauer
37291f5967 kernel: Update to 4.14.10/4.9.73
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2017-12-30 16:11:10 +00:00
Rolf Neugebauer
57c8383ce0 kernel: Update WireGuard to 0.0.20171221
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2017-12-30 16:08:43 +00:00
Rolf Neugebauer
8419b030c0 kernel: Adjust 4.14.x config for x86_64
The UNWINDER config options where renamed in:
8af220c9e240 ("x86/unwind: Rename unwinder config options to 'CONFIG_UNWINDER_*'")

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2017-12-28 17:57:43 +00:00
Rolf Neugebauer
dfb1982c65 kernel: Update to 4.14.9/4.9.72/4.4.108
This contains the fixes to the eBPF verifier which allowed
privilege escalation in 4.9 and 4.14 kernels.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2017-12-28 16:43:14 +00:00
Rolf Neugebauer
e140ab4acc kernel: Update to 4.14.8/4.9.71/4.4.107
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2017-12-28 14:48:20 +00:00
Rolf Neugebauer
467c1af0e2 kernel: Update to 4.14.7/4.9.70/4.4.106
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2017-12-18 16:59:21 +00:00
Rolf Neugebauer
36e46a55c8 kernel: Add forcepush/forcebuild targets for kernel and perf packages
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2017-12-18 16:59:21 +00:00
Rolf Neugebauer
1cf58d95b1 kernel: Update to 4.14.6/4.9.69
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2017-12-14 11:21:07 +00:00
Rolf Neugebauer
4df1c0ea56 kernel: Fix 4.14.x kernel config
Commit 340d45d70850 ("locking/refcounts, x86/asm: Enable
CONFIG_ARCH_HAS_REFCOUNT") re-enabled the ARCH_HAS_REFCOUNT
again as default. Pick it up in our kernel config.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2017-12-11 11:41:29 +00:00
Rolf Neugebauer
6a15459665 kernel: Update to 4.14.5/4.9.68/4.4.105
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2017-12-11 11:24:38 +00:00
Jason A. Donenfeld
584e3ac7b3 wireguard: update to 0.0.20171211
* curve25519: explictly depend on AS_AVX
* curve25519: modularize dispatch

It's now much cleaner to see which implementation we're calling, and it will
be simpler to add more implementations in the future.

* compat: support RAP in assembly

This should fix PaX/Grsecurity support.

* device: do not clear keys during sleep on Android

While we want to clear keys when going to sleep on ordinary Linux, this
doesn't make sense in the Android world, where phones often sleep but are
woken up every few milliseconds by the radios to process packets.

* compat: fix 3.10 backport

Important compat fixes for non-x86.

* device: clear last handshake timer on ifdown

When bringing up an interface, we don't want the rate limiting to handshakes
to apply.

* netlink: rename symbol to avoid clashes

Allows coexistance with horrible Android drivers.

* kernel-tree: jury rig is the more common spelling
* tools: no need to put this on the stack
* blake2s-x86_64: fix spacing

Small fixes.

* contrib: keygen-html for generating keys in the browser

This was covered here:
https://lists.zx2c4.com/pipermail/wireguard/2017-December/002127.html

* tools: remove undocumented unused syntax

Not only did nobody know about this or use it, but the implementation actually
exposed compiler bugs in Qualcomm's "Snapdragon Clang".

* poly1305: update x86-64 kernel to AVX512F only

From Samuel Neves, this pulls in Andy Polyakov's changes to only require F and
not VL for the Poly implementation.

* chacha20-arm: fix with clang -fno-integrated-as.

This pulls in David Benjamin's clang fix.

* global: add SPDX tags to all files

From Greg KH, we now have SPDX annotations on all files, matching upstream
kernel's new approach to file licenses.

* chacha20poly1305: cleaner generic code

This entirely removes the last remains of Martin Willi's ChaCha
implementation, and now the generic C implementation is extremely small and
clearly written, while delivering a small performance boost too.

* poly1305: fix avx512f alignment bug

Unlucky people may have had their linkers misalign a constant. This fixes that
potential.

* chacha20: avx512vl implementation

From Samuel Neves, this imports Andy Polyakov's AVX512VL implementation of
ChaCha which should have a ~50% performance improvement over AVX2, though it
is still much slower than our AVX512F implementation.

* chacha20poly1305: wire up avx512vl for skylake-x

Some Skylake machines do not have two FMA units (though others do), so we
prefer the AVX512VL implementation over the should-be-faster AVX512F
implementation on those machines. What's needed now is to read the PIROM in
order to determine at runtime whether the particular Skylake-X machine
actually has the second FMA unit or not, but until that happens, we just fall
back to the VL implementation for all Skylake-X.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2017-12-11 05:11:56 +01:00
Rolf Neugebauer
4254c91c9f kernel: Update build to use the alpine:3.7 base image
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2017-12-08 16:25:13 +00:00
Rolf Neugebauer
53127d7209 kernel: Update to 4.14.4/4.9.67/4.4.104
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2017-12-06 10:11:50 +00:00
Rolf Neugebauer
5eee692887 kernel: Add NVDIMM size patch to 4.14.x
This change hasn't made it upstream but seems to be required
for LCOW to work.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2017-12-05 10:32:33 +00:00
Rolf Neugebauer
3ed38c59f4 kernel: Update to 4.14.3/4.9.66/4.4.103
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2017-12-01 15:28:09 +00:00
Rolf Neugebauer
e7960ee0df kernel: Remove the 4.13.x kernel
4.13 has been EOLed with 4.13.16 being the last one.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2017-12-01 15:28:09 +00:00
Jason A. Donenfeld
62b5917526 wireguard: update to 0.0.20171122 to 0.0.20171127
This is a double bump.

Changes 0.0.20171122:

  * chacha20poly1305: fast primitives from Andy Polyakov

  Samuel Neves and I have spent considerable time and headaches porting,
  reworking, and partially rewriting Andy's optimized implementations of
  ChaCha20 and Poly1305. We now support the following:

  On x86_64:
    - Poly1305: integer unit
    - ChaCha20: SSSE3
    - HChaCha20: SSSE3
    - Poly1305: AVX
    - ChaCha20: AVX2
    - Poly1305: AVX2
    - ChaCha20: AVX512
    - Poly1305: AVX512

  On ARM:
    - Poly1305: integer unit
    - ChaCha20: NEON
    - Poly1305: NEON

  On ARM64:
    - Poly1305: integer unit
    - ChaCha20: NEON
    - Poly1305: NEON

  On MIPS64:
    - Poly1305: integer unit

  All others:
    - ChaCha20: generic C
    - Poly1305: generic C

  This is a pretty substantial amount of new handrolled assembly. It will
  perhaps MURDER KITTENS, so please tread lightly with this snapshot and adjust
  expectations accordingly. I'm looking forward to quickly fixing any issues
  folks find while testing.

  Performance-wise, this should see increases all around. The biggest speedups
  will be on ARM and ARM64, but x86_64 and MIPS64 should also see modest speed
  improvements too, especially on Skylake systems supporting AVX512.

  * chacha20poly1305: add more test vectors, some of which are weird

  Test vectors are pretty important, so we added more to catch odd edge cases
  using the following butcher's code:

    from cryptography.hazmat.primitives.ciphers.aead import ChaCha20Poly1305
    import os

    def encode_blob(blob):
        a = ""
        for i in blob:
            a += "\\x" + hex(i)[2:]
        return a

    enc = [ ]
    dec = [ ]

    def make_vector(plen, adlen):
        key = os.urandom(32)
        nonce = os.urandom(8)
        p = os.urandom(plen)
        ad = os.urandom(adlen)
        c = ChaCha20Poly1305(key).encrypt(nonce=bytes(4) + nonce, data=p, associated_data=ad)

        out = "{\n"
        out += "\t.key\t= \"" + encode_blob(key) + "\",\n"
        out += "\t.nonce\t= \"" + encode_blob(nonce) + "\",\n"
        out += "\t.assoc\t= \"" + encode_blob(ad) + "\",\n"
        out += "\t.alen\t= " + str(len(ad)) + ",\n"
        out += "\t.input\t= \"" + encode_blob(p) + "\",\n"
        out += "\t.ilen\t= " + str(len(p)) + ",\n"
        out += "\t.result\t= \"" + encode_blob(c) + "\"\n"
        out += "}"
        enc.append(out)

        out = "{\n"
        out += "\t.key\t= \"" + encode_blob(key) + "\",\n"
        out += "\t.nonce\t= \"" + encode_blob(nonce) + "\",\n"
        out += "\t.assoc\t= \"" + encode_blob(ad) + "\",\n"
        out += "\t.alen\t= " + str(len(ad)) + ",\n"
        out += "\t.input\t= \"" + encode_blob(c) + "\",\n"
        out += "\t.ilen\t= " + str(len(c)) + ",\n"
        out += "\t.result\t= \"" + encode_blob(p) + "\"\n"
        out += "}"
        dec.append(out)

    make_vector(0, 0)
    make_vector(0, 8)
    make_vector(1, 8)
    make_vector(1, 0)
    make_vector(129, 7)
    make_vector(256, 0)
    make_vector(512, 0)
    make_vector(513, 9)
    make_vector(1024, 16)
    make_vector(1933, 7)
    make_vector(2011, 63)

    print("======== encryption vectors ========")
    print(", ".join(enc))

    print("\n\n\n======== decryption vectors ========")
    print(", ".join(dec))

  * wg-quick: document localhost exception and v6 rule

  Probably a "kill switch" wants this too:
     -m addrtype ! --dst-type LOCAL
  so that basic local services can continue to work.

  * selftest: allowedips: randomized test mutex update
  * allowedips: do not write out of bounds
  * device: uninitialize socket first in destruction
  * tools: tighten up strtoul parsing

  Small fixups.

  * qemu: update kernel
  * qemu: use unprefixed strip when not cross-compiling

  Fedora/Redhat doesn't ship with a prefixed strip, and we don't need
  to use it anyway when we're not cross compiling, so don't.

  * compat: 3.16.50 got proper rt6_get_cookie
  * compat: stable finally backported fix
  * compat: new kernels have netlink fixes
  * compat: fix compilation with PaX

  Usual set of compatibility updates.

  * curve25519-neon: compile in thumb mode

  In thumb mode, it's not possible to use sp as an operand of and, so
  we have to muck around with r3 as a scratch register.

  * socket: only free socket after successful creation of new

  When an interface is down, the socket port can change freely. A socket
  will be allocated when the interface comes up, and if a socket can't be
  allocated, the interface doesn't come up.

  However, a socket port can change while the interface is up. In this
  case, if a new socket with a new port cannot be allocated, it's
  important to keep the interface in a consistent state. The choices are
  either to bring down the interface or to preserve the old socket. This
  patch implements the latter.

  * global: switch from timeval to timespec

  This gets us nanoseconds instead of microseconds, which is better, and
  we can do this pretty much without freaking out existing userspace,
  which doesn't actually make use of the nano/microseconds field. The below
  test program shows that this won't break existing sizes:

    zx2c4@thinkpad ~ $ cat a.c
    void main()
    {
        puts(sizeof(struct timeval) == sizeof(struct timespec) ?
          "success" : "failure");
    }
    zx2c4@thinkpad ~ $ gcc a.c -m64 && ./a.out
    success
    zx2c4@thinkpad ~ $ gcc a.c -m32 && ./a.out
    success

Changes 0.0.20171127:

  * compat: support timespec64 on old kernels
  * compat: support AVX512BW+VL by lying
  * compat: fix typo and ranges
  * compat: support 4.15's netlink and barrier changes
  * poly1305-avx512: requires AVX512F+VL+BW

  Numerous compat fixes which should keep us supporting 3.10-4.15-rc1.

  * blake2s: AVX512F+VL implementation
  * blake2s: tweak avx512 code
  * blake2s: hmac space optimization

  Another terrific submission from Samuel Neves: we now have an implementation
  of Blake2s using AVX512, which is extremely fast.

  * allowedips: optimize
  * allowedips: simplify
  * chacha20: directly assign constant and initial state

  Small performance tweaks.

  * tools: fix removing preshared keys
  * qemu: use netfilter.org https site
  * qemu: take shared lock for untarring

  Small bug fixes.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2017-11-27 20:55:31 +01:00