diff options
Diffstat (limited to 'kernels')
3 files changed, 53 insertions, 73 deletions
diff --git a/kernels/linux-libre-knock/0001-dccp-fix-freeing-skb-too-early-for-IPV6_RECVPKTINFO.patch b/kernels/linux-libre-knock/0001-dccp-fix-freeing-skb-too-early-for-IPV6_RECVPKTINFO.patch new file mode 100644 index 000000000..9adaf0b30 --- /dev/null +++ b/kernels/linux-libre-knock/0001-dccp-fix-freeing-skb-too-early-for-IPV6_RECVPKTINFO.patch @@ -0,0 +1,47 @@ +From 5edabca9d4cff7f1f2b68f0bac55ef99d9798ba4 Mon Sep 17 00:00:00 2001 +From: Andrey Konovalov <andreyknvl@google.com> +Date: Thu, 16 Feb 2017 17:22:46 +0100 +Subject: [PATCH] dccp: fix freeing skb too early for IPV6_RECVPKTINFO + +In the current DCCP implementation an skb for a DCCP_PKT_REQUEST packet +is forcibly freed via __kfree_skb in dccp_rcv_state_process if +dccp_v6_conn_request successfully returns. + +However, if IPV6_RECVPKTINFO is set on a socket, the address of the skb +is saved to ireq->pktopts and the ref count for skb is incremented in +dccp_v6_conn_request, so skb is still in use. Nevertheless, it gets freed +in dccp_rcv_state_process. + +Fix by calling consume_skb instead of doing goto discard and therefore +calling __kfree_skb. + +Similar fixes for TCP: + +fb7e2399ec17f1004c0e0ccfd17439f8759ede01 [TCP]: skb is unexpectedly freed. +0aea76d35c9651d55bbaf746e7914e5f9ae5a25d tcp: SYN packets are now +simply consumed + +Signed-off-by: Andrey Konovalov <andreyknvl@google.com> +Acked-by: Eric Dumazet <edumazet@google.com> +Signed-off-by: David S. Miller <davem@davemloft.net> +--- + net/dccp/input.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/net/dccp/input.c b/net/dccp/input.c +index ba347184bda9b3fe..8fedc2d497709b3d 100644 +--- a/net/dccp/input.c ++++ b/net/dccp/input.c +@@ -606,7 +606,8 @@ int dccp_rcv_state_process(struct sock *sk, struct sk_buff *skb, + if (inet_csk(sk)->icsk_af_ops->conn_request(sk, + skb) < 0) + return 1; +- goto discard; ++ consume_skb(skb); ++ return 0; + } + if (dh->dccph_type == DCCP_PKT_RESET) + goto discard; +-- +2.11.1 + diff --git a/kernels/linux-libre-knock/0001-x86-fpu-Fix-invalid-FPU-ptrace-state-after-execve.patch b/kernels/linux-libre-knock/0001-x86-fpu-Fix-invalid-FPU-ptrace-state-after-execve.patch deleted file mode 100644 index 8cef84635..000000000 --- a/kernels/linux-libre-knock/0001-x86-fpu-Fix-invalid-FPU-ptrace-state-after-execve.patch +++ /dev/null @@ -1,65 +0,0 @@ -From 885bad1e5f32bbf30787ead9578f8174047e6904 Mon Sep 17 00:00:00 2001 -From: Yu-cheng Yu <yu-cheng.yu@intel.com> -Date: Thu, 17 Nov 2016 09:11:35 -0800 -Subject: [PATCH] x86/fpu: Fix invalid FPU ptrace state after execve() - -commit b22cbe404a9cc3c7949e380fa1861e31934c8978 upstream. - -Robert O'Callahan reported that after an execve PTRACE_GETREGSET -NT_X86_XSTATE continues to return the pre-exec register values -until the exec'ed task modifies FPU state. - -The test code is at: - - https://bugzilla.redhat.com/attachment.cgi?id=1164286. - -What is happening is fpu__clear() does not properly clear fpstate. -Fix it by doing just that. - -Reported-by: Robert O'Callahan <robert@ocallahan.org> -Signed-off-by: Yu-cheng Yu <yu-cheng.yu@intel.com> -Cc: Andy Lutomirski <luto@kernel.org> -Cc: Borislav Petkov <bp@suse.de> -Cc: David Hansen <dave.hansen@linux.intel.com> -Cc: Fenghua Yu <fenghua.yu@intel.com> -Cc: Linus Torvalds <torvalds@linux-foundation.org> -Cc: Peter Zijlstra <peterz@infradead.org> -Cc: Ravi V. Shankar <ravi.v.shankar@intel.com> -Cc: Thomas Gleixner <tglx@linutronix.de> -Link: http://lkml.kernel.org/r/1479402695-6553-1-git-send-email-yu-cheng.yu@intel.com -Signed-off-by: Ingo Molnar <mingo@kernel.org> -Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> ---- - arch/x86/kernel/fpu/core.c | 16 ++++++++-------- - 1 file changed, 8 insertions(+), 8 deletions(-) - -diff --git a/arch/x86/kernel/fpu/core.c b/arch/x86/kernel/fpu/core.c -index 3fc03a09a93b1710..c289e2f4a6e5b464 100644 ---- a/arch/x86/kernel/fpu/core.c -+++ b/arch/x86/kernel/fpu/core.c -@@ -517,14 +517,14 @@ void fpu__clear(struct fpu *fpu) - { - WARN_ON_FPU(fpu != ¤t->thread.fpu); /* Almost certainly an anomaly */ - -- if (!use_eager_fpu() || !static_cpu_has(X86_FEATURE_FPU)) { -- /* FPU state will be reallocated lazily at the first use. */ -- fpu__drop(fpu); -- } else { -- if (!fpu->fpstate_active) { -- fpu__activate_curr(fpu); -- user_fpu_begin(); -- } -+ fpu__drop(fpu); -+ -+ /* -+ * Make sure fpstate is cleared and initialized. -+ */ -+ if (static_cpu_has(X86_FEATURE_FPU)) { -+ fpu__activate_curr(fpu); -+ user_fpu_begin(); - copy_init_fpstate_to_fpregs(); - } - } --- -2.10.2 - diff --git a/kernels/linux-libre-knock/PKGBUILD b/kernels/linux-libre-knock/PKGBUILD index 4d37cbf22..62d942b50 100644 --- a/kernels/linux-libre-knock/PKGBUILD +++ b/kernels/linux-libre-knock/PKGBUILD @@ -10,7 +10,7 @@ pkgbase=linux-libre-knock _pkgbasever=4.9-gnu -_pkgver=4.9.10-gnu +_pkgver=4.9.11-gnu _knockpatchver=4.9_1 _replacesarchkernel=('linux%') # '%' gets replaced with _kernelname @@ -49,7 +49,7 @@ source=("https://linux-libre.fsfla.org/pub/linux-libre/releases/${_pkgbasever}/l # standard config files for mkinitcpio ramdisk 'linux.preset' 'change-default-console-loglevel.patch' - '0001-x86-fpu-Fix-invalid-FPU-ptrace-state-after-execve.patch' + '0001-dccp-fix-freeing-skb-too-early-for-IPV6_RECVPKTINFO.patch' '0001-usb-serial-gadget-no-TTY-hangup-on-USB-disconnect-WI.patch' '0002-fix-Atmel-maXTouch-touchscreen-support.patch' # armv7h patches @@ -65,7 +65,7 @@ source=("https://linux-libre.fsfla.org/pub/linux-libre/releases/${_pkgbasever}/l '0008-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch') sha512sums=('885eb0a7fab45dc749acb4329b4330a43b704df2d5f2f5aac1811503c132ca53ca49452f9b1cc80b0826c7a4962dbe4937aecb697aa823b2543ba2cabc704816' 'SKIP' - '6f01e1564a3070ec6725efbc54bdb9b0e3ae2f26418cb170cd948862cbb8ad6c1eac5ff50d980c39773cfce62ba4ef8c9d3c90a53c3f4c232f69521366b7e0fd' + 'b2fe1d938a1d1e80bba980d5aec3b38e7d508851d4abcc7b33716bbf9c41acb9bb572e4456dcd88257cf9b616db0b9ddaaeb571a14a9863555ff575f21d2a24a' 'SKIP' 'a00e9fc0b930021242b231dfdd15160eaefbfad4aaa0ba0426bb9a25dd14acc1825cbb1bc9c680a6d43baca797591dc219e232862f566457752ff378e03600a3' 'SKIP' @@ -81,7 +81,7 @@ sha512sums=('885eb0a7fab45dc749acb4329b4330a43b704df2d5f2f5aac1811503c132ca53ca4 'd6faa67f3ef40052152254ae43fee031365d0b1524aa0718b659eb75afc21a3f79ea8d62d66ea311a800109bed545bc8f79e8752319cd378eef2cbd3a09aba22' '2dc6b0ba8f7dbf19d2446c5c5f1823587de89f4e28e9595937dd51a87755099656f2acec50e3e2546ea633ad1bfd1c722e0c2b91eef1d609103d8abdc0a7cbaf' 'd9d28e02e964704ea96645a5107f8b65cae5f4fb4f537e224e5e3d087fd296cb770c29ac76e0ce95d173bc420ea87fb8f187d616672a60a0cae618b0ef15b8c8' - '002d5e0ccfa5824c1750912a6400ff722672d6587b74ba66b1127cf1228048f604bba107617cf4f4477884039af4d4d196cf1b74cefe43b0bddc82270f11940d' + 'cddd1349c0a7f7ffcd7615f31c8107144eb086326c09121cc9071e95d04d2a30ee8d7a3f5d1fe76e6377803dbf2fcb1791e482e0974b8474155419ad94c0fd2b' '02af4dd2a007e41db0c63822c8ab3b80b5d25646af1906dc85d0ad9bb8bbf5236f8e381d7f91cf99ed4b0978c50aee37cb9567cdeef65b7ec3d91b882852b1af' 'b8fe56e14006ab866970ddbd501c054ae37186ddc065bb869cf7d18db8c0d455118d5bda3255fb66a0dde38b544655cfe9040ffe46e41d19830b47959b2fb168' '10e5ee3c0fa7fe248aaf56dc5b5c31316cbd427638408415fbbbb2ec3f0de034e9f4ae87c77ab63027b2c272ace96030d713244cf5ae63fd0c8b637b4b21b55f' @@ -144,10 +144,8 @@ prepare() { install -m644 -t drivers/video/logo \ "${srcdir}/logo_linux_"{clut224.ppm,vga16.ppm,mono.pbm} - # Revert a commit that causes memory corruption in i686 chroots - # ("valgrind bash" immediately crashes) - # https://bugzilla.kernel.org/show_bug.cgi?id=190061 - patch -Rp1 -i "${srcdir}/0001-x86-fpu-Fix-invalid-FPU-ptrace-state-after-execve.patch" + # https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-6074 + patch -p1 -i "${srcdir}/0001-dccp-fix-freeing-skb-too-early-for-IPV6_RECVPKTINFO.patch" # add latest fixes from stable queue, if needed # http://git.kernel.org/?p=linux/kernel/git/stable/stable-queue.git |