diff options
author | Waldemar Brodkorb <wbrodkorb@conet.de> | 2015-06-24 18:18:49 +0200 |
---|---|---|
committer | Waldemar Brodkorb <wbrodkorb@conet.de> | 2015-06-24 18:18:49 +0200 |
commit | 48e6b5573016036676d9df90f418ec8b083c1cff (patch) | |
tree | 956ae51e7604c9be0f1ee662c61ad70e8da32ba1 /target/linux/patches | |
parent | 3a9264f51d63625284ca707e0cdac8e9a5636727 (diff) |
bump all kernel versions
Diffstat (limited to 'target/linux/patches')
-rw-r--r-- | target/linux/patches/2.6.32.67/cris-header.patch (renamed from target/linux/patches/2.6.32.65/cris-header.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/2.6.32.67/cris-initramfs.patch (renamed from target/linux/patches/2.6.32.65/cris-initramfs.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.10.81/bsd-compatibility.patch (renamed from target/linux/patches/3.10.75/bsd-compatibility.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.10.81/headers-install.patch (renamed from target/linux/patches/3.10.75/headers-install.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.10.81/mkpiggy.patch (renamed from target/linux/patches/3.10.75/mkpiggy.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.10.81/relocs.patch (renamed from target/linux/patches/3.10.75/relocs.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.10.81/sgidefs.patch (renamed from target/linux/patches/3.10.75/sgidefs.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.10.81/sortext.patch (renamed from target/linux/patches/3.10.75/sortext.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.10.81/startup.patch (renamed from target/linux/patches/3.10.75/startup.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.10.81/yaffs2.patch (renamed from target/linux/patches/3.10.75/yaffs2.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.12.40/vga-cons-default-off.patch | 12 | ||||
-rw-r--r-- | target/linux/patches/3.12.44/bsd-compatibility.patch (renamed from target/linux/patches/3.12.40/bsd-compatibility.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.12.44/cleankernel.patch (renamed from target/linux/patches/3.12.40/cleankernel.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.12.44/defaults.patch (renamed from target/linux/patches/3.12.40/defaults.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.12.44/disable-netfilter.patch (renamed from target/linux/patches/3.12.40/disable-netfilter.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.12.44/export-symbol-for-exmap.patch (renamed from target/linux/patches/3.12.40/export-symbol-for-exmap.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.12.44/gemalto.patch (renamed from target/linux/patches/3.12.40/gemalto.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.12.44/lemote-rfkill.patch (renamed from target/linux/patches/3.12.40/lemote-rfkill.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.12.44/microblaze-ethernet.patch (renamed from target/linux/patches/3.12.40/microblaze-ethernet.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.12.44/microblaze-setup.patch (renamed from target/linux/patches/3.12.40/microblaze-setup.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.12.44/mips-lzo-fix.patch (renamed from target/linux/patches/3.12.40/mips-lzo-fix.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.12.44/mkpiggy.patch (renamed from target/linux/patches/3.12.40/mkpiggy.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.12.44/mtd-rootfs.patch (renamed from target/linux/patches/3.12.40/mtd-rootfs.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.12.44/non-static.patch (renamed from target/linux/patches/3.12.40/non-static.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.12.44/ppc64-missing-zlib.patch (renamed from target/linux/patches/3.12.40/ppc64-missing-zlib.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.12.44/regmap-bool.patch (renamed from target/linux/patches/3.12.40/regmap-bool.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.12.44/relocs.patch (renamed from target/linux/patches/3.12.40/relocs.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.12.44/sgidefs.patch (renamed from target/linux/patches/3.12.40/sgidefs.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.12.44/sortext.patch (renamed from target/linux/patches/3.12.40/sortext.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.12.44/startup.patch (renamed from target/linux/patches/3.12.40/startup.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.12.44/usb-defaults-off.patch (renamed from target/linux/patches/3.12.40/usb-defaults-off.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.12.44/wlan-cf.patch (renamed from target/linux/patches/3.12.40/wlan-cf.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.12.44/xargs.patch (renamed from target/linux/patches/3.12.40/xargs.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.12.44/yaffs2.patch (renamed from target/linux/patches/3.12.40/yaffs2.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.12.44/zlib-inflate.patch (renamed from target/linux/patches/3.12.40/zlib-inflate.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.14.45/bsd-compatibility.patch (renamed from target/linux/patches/3.14.43/bsd-compatibility.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.14.45/cleankernel.patch (renamed from target/linux/patches/3.14.43/cleankernel.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.14.45/defaults.patch (renamed from target/linux/patches/3.14.43/defaults.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.14.45/disable-netfilter.patch (renamed from target/linux/patches/3.14.43/disable-netfilter.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.14.45/export-symbol-for-exmap.patch (renamed from target/linux/patches/3.14.43/export-symbol-for-exmap.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.14.45/fblogo.patch (renamed from target/linux/patches/3.14.43/fblogo.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.14.45/gemalto.patch (renamed from target/linux/patches/3.14.43/gemalto.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.14.45/initramfs-nosizelimit.patch (renamed from target/linux/patches/3.14.43/initramfs-nosizelimit.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.14.45/lemote-rfkill.patch (renamed from target/linux/patches/3.14.43/lemote-rfkill.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.14.45/microblaze-axi.patch (renamed from target/linux/patches/3.14.43/microblaze-axi.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.14.45/microblaze-ethernet.patch (renamed from target/linux/patches/3.14.43/microblaze-ethernet.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.14.45/mkpiggy.patch (renamed from target/linux/patches/3.14.43/mkpiggy.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.14.45/mptcp.patch (renamed from target/linux/patches/3.14.43/mptcp.patch) | 970 | ||||
-rw-r--r-- | target/linux/patches/3.14.45/mtd-rootfs.patch (renamed from target/linux/patches/3.14.43/mtd-rootfs.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.14.45/nfsv3-tcp.patch (renamed from target/linux/patches/3.14.43/nfsv3-tcp.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.14.45/non-static.patch (renamed from target/linux/patches/3.14.43/non-static.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.14.45/ppc64-missing-zlib.patch (renamed from target/linux/patches/3.14.43/ppc64-missing-zlib.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.14.45/regmap-boolean.patch (renamed from target/linux/patches/3.14.43/regmap-boolean.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.14.45/relocs.patch (renamed from target/linux/patches/3.14.43/relocs.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.14.45/sgidefs.patch (renamed from target/linux/patches/3.14.43/sgidefs.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.14.45/sortext.patch (renamed from target/linux/patches/3.14.43/sortext.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.14.45/startup.patch (renamed from target/linux/patches/3.14.43/startup.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.14.45/wlan-cf.patch (renamed from target/linux/patches/3.14.43/wlan-cf.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.14.45/xargs.patch (renamed from target/linux/patches/3.14.43/xargs.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.14.45/yaffs2.patch (renamed from target/linux/patches/3.14.43/yaffs2.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.14.45/zlib-inflate.patch (renamed from target/linux/patches/3.14.43/zlib-inflate.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.18.16/bsd-compatibility.patch (renamed from target/linux/patches/3.18.14/bsd-compatibility.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.18.16/cleankernel.patch (renamed from target/linux/patches/3.18.14/cleankernel.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.18.16/cris-header.patch (renamed from target/linux/patches/3.18.14/cris-header.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.18.16/cris-initramfs.patch (renamed from target/linux/patches/3.18.14/cris-initramfs.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.18.16/defaults.patch (renamed from target/linux/patches/3.18.14/defaults.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.18.16/export-symbol-for-exmap.patch (renamed from target/linux/patches/3.18.14/export-symbol-for-exmap.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.18.16/fblogo.patch (renamed from target/linux/patches/3.18.14/fblogo.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.18.16/gemalto.patch (renamed from target/linux/patches/3.18.14/gemalto.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.18.16/initramfs-nosizelimit.patch (renamed from target/linux/patches/3.18.14/initramfs-nosizelimit.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.18.16/lemote-rfkill.patch (renamed from target/linux/patches/3.18.14/lemote-rfkill.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.18.16/microblaze-ethernet.patch (renamed from target/linux/patches/3.18.14/microblaze-ethernet.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.18.16/mkpiggy.patch (renamed from target/linux/patches/3.18.14/mkpiggy.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.18.16/mtd-rootfs.patch (renamed from target/linux/patches/3.18.14/mtd-rootfs.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.18.16/nfsv3-tcp.patch (renamed from target/linux/patches/3.18.14/nfsv3-tcp.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.18.16/non-static.patch (renamed from target/linux/patches/3.18.14/non-static.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.18.16/ppc64-missing-zlib.patch (renamed from target/linux/patches/3.18.14/ppc64-missing-zlib.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.18.16/realtime.patch (renamed from target/linux/patches/3.18.14/realtime.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.18.16/regmap-bool.patch (renamed from target/linux/patches/3.18.14/regmap-bool.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.18.16/relocs.patch (renamed from target/linux/patches/3.18.14/relocs.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.18.16/sgidefs.patch (renamed from target/linux/patches/3.18.14/sgidefs.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.18.16/sortext.patch (renamed from target/linux/patches/3.18.14/sortext.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.18.16/startup.patch (renamed from target/linux/patches/3.18.14/startup.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.18.16/wlan-cf.patch (renamed from target/linux/patches/3.18.14/wlan-cf.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.18.16/xargs.patch (renamed from target/linux/patches/3.18.14/xargs.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.18.16/yaffs2.patch (renamed from target/linux/patches/3.18.14/yaffs2.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.2.69/sparc-aout.patch (renamed from target/linux/patches/3.2.68/sparc-aout.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.4.108/aufs2.patch (renamed from target/linux/patches/3.4.107/aufs2.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.4.108/bsd-compatibility.patch (renamed from target/linux/patches/3.4.107/bsd-compatibility.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.4.108/defaults.patch (renamed from target/linux/patches/3.4.107/defaults.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.4.108/gemalto.patch (renamed from target/linux/patches/3.4.107/gemalto.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.4.108/lemote-rfkill.patch (renamed from target/linux/patches/3.4.107/lemote-rfkill.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.4.108/linux-gcc-check.patch (renamed from target/linux/patches/3.4.107/linux-gcc-check.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.4.108/mips-error.patch (renamed from target/linux/patches/3.4.107/mips-error.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.4.108/mkpiggy.patch (renamed from target/linux/patches/3.4.107/mkpiggy.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.4.108/module-alloc-size-check.patch (renamed from target/linux/patches/3.4.107/module-alloc-size-check.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.4.108/non-static.patch (renamed from target/linux/patches/3.4.107/non-static.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.4.108/relocs.patch (renamed from target/linux/patches/3.4.107/relocs.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.4.108/sparc-aout.patch (renamed from target/linux/patches/3.4.107/sparc-aout.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.4.108/sparc-include.patch (renamed from target/linux/patches/3.4.107/sparc-include.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.4.108/startup.patch (renamed from target/linux/patches/3.4.107/startup.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.4.108/usb-defaults-off.patch (renamed from target/linux/patches/3.4.107/usb-defaults-off.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.4.108/vga-cons-default-off.patch (renamed from target/linux/patches/3.4.107/vga-cons-default-off.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.4.108/wlan-cf.patch (renamed from target/linux/patches/3.4.107/wlan-cf.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.4.108/yaffs2.patch (renamed from target/linux/patches/3.4.107/yaffs2.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/3.4.108/zlib-inflate.patch (renamed from target/linux/patches/3.4.107/zlib-inflate.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/4.0.6/aufs4.patch (renamed from target/linux/patches/4.0.5/aufs4.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/4.0.6/cleankernel.patch (renamed from target/linux/patches/4.0.5/cleankernel.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/4.0.6/cris-header.patch (renamed from target/linux/patches/4.0.5/cris-header.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/4.0.6/initramfs-nosizelimit.patch (renamed from target/linux/patches/4.0.5/initramfs-nosizelimit.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/4.0.6/startup.patch (renamed from target/linux/patches/4.0.5/startup.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/4.1/cris-header.patch (renamed from target/linux/patches/4.1-rc5/cris-header.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/4.1/initramfs-nosizelimit.patch (renamed from target/linux/patches/4.1-rc5/initramfs-nosizelimit.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/4.1/startup.patch (renamed from target/linux/patches/4.1-rc5/startup.patch) | 0 |
114 files changed, 450 insertions, 532 deletions
diff --git a/target/linux/patches/2.6.32.65/cris-header.patch b/target/linux/patches/2.6.32.67/cris-header.patch index 1645d519c..1645d519c 100644 --- a/target/linux/patches/2.6.32.65/cris-header.patch +++ b/target/linux/patches/2.6.32.67/cris-header.patch diff --git a/target/linux/patches/2.6.32.65/cris-initramfs.patch b/target/linux/patches/2.6.32.67/cris-initramfs.patch index b709e705e..b709e705e 100644 --- a/target/linux/patches/2.6.32.65/cris-initramfs.patch +++ b/target/linux/patches/2.6.32.67/cris-initramfs.patch diff --git a/target/linux/patches/3.10.75/bsd-compatibility.patch b/target/linux/patches/3.10.81/bsd-compatibility.patch index b954b658f..b954b658f 100644 --- a/target/linux/patches/3.10.75/bsd-compatibility.patch +++ b/target/linux/patches/3.10.81/bsd-compatibility.patch diff --git a/target/linux/patches/3.10.75/headers-install.patch b/target/linux/patches/3.10.81/headers-install.patch index 46dc9fe13..46dc9fe13 100644 --- a/target/linux/patches/3.10.75/headers-install.patch +++ b/target/linux/patches/3.10.81/headers-install.patch diff --git a/target/linux/patches/3.10.75/mkpiggy.patch b/target/linux/patches/3.10.81/mkpiggy.patch index d4e815cd2..d4e815cd2 100644 --- a/target/linux/patches/3.10.75/mkpiggy.patch +++ b/target/linux/patches/3.10.81/mkpiggy.patch diff --git a/target/linux/patches/3.10.75/relocs.patch b/target/linux/patches/3.10.81/relocs.patch index 649b9e73e..649b9e73e 100644 --- a/target/linux/patches/3.10.75/relocs.patch +++ b/target/linux/patches/3.10.81/relocs.patch diff --git a/target/linux/patches/3.10.75/sgidefs.patch b/target/linux/patches/3.10.81/sgidefs.patch index f00a284d9..f00a284d9 100644 --- a/target/linux/patches/3.10.75/sgidefs.patch +++ b/target/linux/patches/3.10.81/sgidefs.patch diff --git a/target/linux/patches/3.10.75/sortext.patch b/target/linux/patches/3.10.81/sortext.patch index 65bbbb64b..65bbbb64b 100644 --- a/target/linux/patches/3.10.75/sortext.patch +++ b/target/linux/patches/3.10.81/sortext.patch diff --git a/target/linux/patches/3.10.75/startup.patch b/target/linux/patches/3.10.81/startup.patch index 3ebc5db1e..3ebc5db1e 100644 --- a/target/linux/patches/3.10.75/startup.patch +++ b/target/linux/patches/3.10.81/startup.patch diff --git a/target/linux/patches/3.10.75/yaffs2.patch b/target/linux/patches/3.10.81/yaffs2.patch index 172629530..172629530 100644 --- a/target/linux/patches/3.10.75/yaffs2.patch +++ b/target/linux/patches/3.10.81/yaffs2.patch diff --git a/target/linux/patches/3.12.40/vga-cons-default-off.patch b/target/linux/patches/3.12.40/vga-cons-default-off.patch deleted file mode 100644 index 08a57f783..000000000 --- a/target/linux/patches/3.12.40/vga-cons-default-off.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -Nur linux-3.11.5.orig/drivers/video/console/Kconfig linux-3.11.5/drivers/video/console/Kconfig ---- linux-3.11.5.orig/drivers/video/console/Kconfig 2013-10-14 03:14:45.000000000 +0200 -+++ linux-3.11.5/drivers/video/console/Kconfig 2013-10-16 18:04:45.000000000 +0200 -@@ -9,7 +9,7 @@ - depends on !4xx && !8xx && !SPARC && !M68K && !PARISC && !FRV && \ - !SUPERH && !BLACKFIN && !AVR32 && !MN10300 && !CRIS && \ - (!ARM || ARCH_FOOTBRIDGE || ARCH_INTEGRATOR || ARCH_NETWINDER) -- default y -+ default n - help - Saying Y here will allow you to use Linux in text mode through a - display that complies with the generic VGA standard. Virtually diff --git a/target/linux/patches/3.12.40/bsd-compatibility.patch b/target/linux/patches/3.12.44/bsd-compatibility.patch index b954b658f..b954b658f 100644 --- a/target/linux/patches/3.12.40/bsd-compatibility.patch +++ b/target/linux/patches/3.12.44/bsd-compatibility.patch diff --git a/target/linux/patches/3.12.40/cleankernel.patch b/target/linux/patches/3.12.44/cleankernel.patch index d8c055dc3..d8c055dc3 100644 --- a/target/linux/patches/3.12.40/cleankernel.patch +++ b/target/linux/patches/3.12.44/cleankernel.patch diff --git a/target/linux/patches/3.12.40/defaults.patch b/target/linux/patches/3.12.44/defaults.patch index 6cdca084e..6cdca084e 100644 --- a/target/linux/patches/3.12.40/defaults.patch +++ b/target/linux/patches/3.12.44/defaults.patch diff --git a/target/linux/patches/3.12.40/disable-netfilter.patch b/target/linux/patches/3.12.44/disable-netfilter.patch index 7b1ca013a..7b1ca013a 100644 --- a/target/linux/patches/3.12.40/disable-netfilter.patch +++ b/target/linux/patches/3.12.44/disable-netfilter.patch diff --git a/target/linux/patches/3.12.40/export-symbol-for-exmap.patch b/target/linux/patches/3.12.44/export-symbol-for-exmap.patch index 4f0fc8449..4f0fc8449 100644 --- a/target/linux/patches/3.12.40/export-symbol-for-exmap.patch +++ b/target/linux/patches/3.12.44/export-symbol-for-exmap.patch diff --git a/target/linux/patches/3.12.40/gemalto.patch b/target/linux/patches/3.12.44/gemalto.patch index 65f7af1d7..65f7af1d7 100644 --- a/target/linux/patches/3.12.40/gemalto.patch +++ b/target/linux/patches/3.12.44/gemalto.patch diff --git a/target/linux/patches/3.12.40/lemote-rfkill.patch b/target/linux/patches/3.12.44/lemote-rfkill.patch index a61488434..a61488434 100644 --- a/target/linux/patches/3.12.40/lemote-rfkill.patch +++ b/target/linux/patches/3.12.44/lemote-rfkill.patch diff --git a/target/linux/patches/3.12.40/microblaze-ethernet.patch b/target/linux/patches/3.12.44/microblaze-ethernet.patch index 742ab477e..742ab477e 100644 --- a/target/linux/patches/3.12.40/microblaze-ethernet.patch +++ b/target/linux/patches/3.12.44/microblaze-ethernet.patch diff --git a/target/linux/patches/3.12.40/microblaze-setup.patch b/target/linux/patches/3.12.44/microblaze-setup.patch index 43815f274..43815f274 100644 --- a/target/linux/patches/3.12.40/microblaze-setup.patch +++ b/target/linux/patches/3.12.44/microblaze-setup.patch diff --git a/target/linux/patches/3.12.40/mips-lzo-fix.patch b/target/linux/patches/3.12.44/mips-lzo-fix.patch index 0740bdc6a..0740bdc6a 100644 --- a/target/linux/patches/3.12.40/mips-lzo-fix.patch +++ b/target/linux/patches/3.12.44/mips-lzo-fix.patch diff --git a/target/linux/patches/3.12.40/mkpiggy.patch b/target/linux/patches/3.12.44/mkpiggy.patch index d4e815cd2..d4e815cd2 100644 --- a/target/linux/patches/3.12.40/mkpiggy.patch +++ b/target/linux/patches/3.12.44/mkpiggy.patch diff --git a/target/linux/patches/3.12.40/mtd-rootfs.patch b/target/linux/patches/3.12.44/mtd-rootfs.patch index 775d5fc80..775d5fc80 100644 --- a/target/linux/patches/3.12.40/mtd-rootfs.patch +++ b/target/linux/patches/3.12.44/mtd-rootfs.patch diff --git a/target/linux/patches/3.12.40/non-static.patch b/target/linux/patches/3.12.44/non-static.patch index a967703d0..a967703d0 100644 --- a/target/linux/patches/3.12.40/non-static.patch +++ b/target/linux/patches/3.12.44/non-static.patch diff --git a/target/linux/patches/3.12.40/ppc64-missing-zlib.patch b/target/linux/patches/3.12.44/ppc64-missing-zlib.patch index c6e0616be..c6e0616be 100644 --- a/target/linux/patches/3.12.40/ppc64-missing-zlib.patch +++ b/target/linux/patches/3.12.44/ppc64-missing-zlib.patch diff --git a/target/linux/patches/3.12.40/regmap-bool.patch b/target/linux/patches/3.12.44/regmap-bool.patch index c3fd9a318..c3fd9a318 100644 --- a/target/linux/patches/3.12.40/regmap-bool.patch +++ b/target/linux/patches/3.12.44/regmap-bool.patch diff --git a/target/linux/patches/3.12.40/relocs.patch b/target/linux/patches/3.12.44/relocs.patch index 649b9e73e..649b9e73e 100644 --- a/target/linux/patches/3.12.40/relocs.patch +++ b/target/linux/patches/3.12.44/relocs.patch diff --git a/target/linux/patches/3.12.40/sgidefs.patch b/target/linux/patches/3.12.44/sgidefs.patch index f00a284d9..f00a284d9 100644 --- a/target/linux/patches/3.12.40/sgidefs.patch +++ b/target/linux/patches/3.12.44/sgidefs.patch diff --git a/target/linux/patches/3.12.40/sortext.patch b/target/linux/patches/3.12.44/sortext.patch index 8fd4e1d6b..8fd4e1d6b 100644 --- a/target/linux/patches/3.12.40/sortext.patch +++ b/target/linux/patches/3.12.44/sortext.patch diff --git a/target/linux/patches/3.12.40/startup.patch b/target/linux/patches/3.12.44/startup.patch index 4cd477da1..4cd477da1 100644 --- a/target/linux/patches/3.12.40/startup.patch +++ b/target/linux/patches/3.12.44/startup.patch diff --git a/target/linux/patches/3.12.40/usb-defaults-off.patch b/target/linux/patches/3.12.44/usb-defaults-off.patch index 54dff2bd4..54dff2bd4 100644 --- a/target/linux/patches/3.12.40/usb-defaults-off.patch +++ b/target/linux/patches/3.12.44/usb-defaults-off.patch diff --git a/target/linux/patches/3.12.40/wlan-cf.patch b/target/linux/patches/3.12.44/wlan-cf.patch index fc20759e2..fc20759e2 100644 --- a/target/linux/patches/3.12.40/wlan-cf.patch +++ b/target/linux/patches/3.12.44/wlan-cf.patch diff --git a/target/linux/patches/3.12.40/xargs.patch b/target/linux/patches/3.12.44/xargs.patch index 2c7b3df59..2c7b3df59 100644 --- a/target/linux/patches/3.12.40/xargs.patch +++ b/target/linux/patches/3.12.44/xargs.patch diff --git a/target/linux/patches/3.12.40/yaffs2.patch b/target/linux/patches/3.12.44/yaffs2.patch index 306814439..306814439 100644 --- a/target/linux/patches/3.12.40/yaffs2.patch +++ b/target/linux/patches/3.12.44/yaffs2.patch diff --git a/target/linux/patches/3.12.40/zlib-inflate.patch b/target/linux/patches/3.12.44/zlib-inflate.patch index 58e1f6d21..58e1f6d21 100644 --- a/target/linux/patches/3.12.40/zlib-inflate.patch +++ b/target/linux/patches/3.12.44/zlib-inflate.patch diff --git a/target/linux/patches/3.14.43/bsd-compatibility.patch b/target/linux/patches/3.14.45/bsd-compatibility.patch index b954b658f..b954b658f 100644 --- a/target/linux/patches/3.14.43/bsd-compatibility.patch +++ b/target/linux/patches/3.14.45/bsd-compatibility.patch diff --git a/target/linux/patches/3.14.43/cleankernel.patch b/target/linux/patches/3.14.45/cleankernel.patch index d8c055dc3..d8c055dc3 100644 --- a/target/linux/patches/3.14.43/cleankernel.patch +++ b/target/linux/patches/3.14.45/cleankernel.patch diff --git a/target/linux/patches/3.14.43/defaults.patch b/target/linux/patches/3.14.45/defaults.patch index f071fd1dd..f071fd1dd 100644 --- a/target/linux/patches/3.14.43/defaults.patch +++ b/target/linux/patches/3.14.45/defaults.patch diff --git a/target/linux/patches/3.14.43/disable-netfilter.patch b/target/linux/patches/3.14.45/disable-netfilter.patch index 7b1ca013a..7b1ca013a 100644 --- a/target/linux/patches/3.14.43/disable-netfilter.patch +++ b/target/linux/patches/3.14.45/disable-netfilter.patch diff --git a/target/linux/patches/3.14.43/export-symbol-for-exmap.patch b/target/linux/patches/3.14.45/export-symbol-for-exmap.patch index 4f0fc8449..4f0fc8449 100644 --- a/target/linux/patches/3.14.43/export-symbol-for-exmap.patch +++ b/target/linux/patches/3.14.45/export-symbol-for-exmap.patch diff --git a/target/linux/patches/3.14.43/fblogo.patch b/target/linux/patches/3.14.45/fblogo.patch index cbbb4216f..cbbb4216f 100644 --- a/target/linux/patches/3.14.43/fblogo.patch +++ b/target/linux/patches/3.14.45/fblogo.patch diff --git a/target/linux/patches/3.14.43/gemalto.patch b/target/linux/patches/3.14.45/gemalto.patch index 65f7af1d7..65f7af1d7 100644 --- a/target/linux/patches/3.14.43/gemalto.patch +++ b/target/linux/patches/3.14.45/gemalto.patch diff --git a/target/linux/patches/3.14.43/initramfs-nosizelimit.patch b/target/linux/patches/3.14.45/initramfs-nosizelimit.patch index 40d2f6bd8..40d2f6bd8 100644 --- a/target/linux/patches/3.14.43/initramfs-nosizelimit.patch +++ b/target/linux/patches/3.14.45/initramfs-nosizelimit.patch diff --git a/target/linux/patches/3.14.43/lemote-rfkill.patch b/target/linux/patches/3.14.45/lemote-rfkill.patch index a61488434..a61488434 100644 --- a/target/linux/patches/3.14.43/lemote-rfkill.patch +++ b/target/linux/patches/3.14.45/lemote-rfkill.patch diff --git a/target/linux/patches/3.14.43/microblaze-axi.patch b/target/linux/patches/3.14.45/microblaze-axi.patch index 1a4b17d8c..1a4b17d8c 100644 --- a/target/linux/patches/3.14.43/microblaze-axi.patch +++ b/target/linux/patches/3.14.45/microblaze-axi.patch diff --git a/target/linux/patches/3.14.43/microblaze-ethernet.patch b/target/linux/patches/3.14.45/microblaze-ethernet.patch index 742ab477e..742ab477e 100644 --- a/target/linux/patches/3.14.43/microblaze-ethernet.patch +++ b/target/linux/patches/3.14.45/microblaze-ethernet.patch diff --git a/target/linux/patches/3.14.43/mkpiggy.patch b/target/linux/patches/3.14.45/mkpiggy.patch index 751678b74..751678b74 100644 --- a/target/linux/patches/3.14.43/mkpiggy.patch +++ b/target/linux/patches/3.14.45/mkpiggy.patch diff --git a/target/linux/patches/3.14.43/mptcp.patch b/target/linux/patches/3.14.45/mptcp.patch index 9784e0577..af2dc7837 100644 --- a/target/linux/patches/3.14.43/mptcp.patch +++ b/target/linux/patches/3.14.45/mptcp.patch @@ -1,8 +1,7 @@ -diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c -index d286bde..34d56d7 100644 ---- a/drivers/infiniband/hw/cxgb4/cm.c -+++ b/drivers/infiniband/hw/cxgb4/cm.c -@@ -3162,7 +3162,7 @@ static void build_cpl_pass_accept_req(struct sk_buff *skb, int stid , u8 tos) +diff -Nur linux-3.14.45.orig/drivers/infiniband/hw/cxgb4/cm.c linux-3.14.45/drivers/infiniband/hw/cxgb4/cm.c +--- linux-3.14.45.orig/drivers/infiniband/hw/cxgb4/cm.c 2015-06-23 02:01:36.000000000 +0200 ++++ linux-3.14.45/drivers/infiniband/hw/cxgb4/cm.c 2015-06-24 14:15:48.871862463 +0200 +@@ -3162,7 +3162,7 @@ */ memset(&tmp_opt, 0, sizeof(tmp_opt)); tcp_clear_options(&tmp_opt); @@ -11,11 +10,10 @@ index d286bde..34d56d7 100644 req = (struct cpl_pass_accept_req *)__skb_push(skb, sizeof(*req)); memset(req, 0, sizeof(*req)); -diff --git a/include/linux/ipv6.h b/include/linux/ipv6.h -index 2faef33..9c12362 100644 ---- a/include/linux/ipv6.h -+++ b/include/linux/ipv6.h -@@ -309,12 +309,6 @@ static inline struct ipv6_pinfo * inet6_sk(const struct sock *__sk) +diff -Nur linux-3.14.45.orig/include/linux/ipv6.h linux-3.14.45/include/linux/ipv6.h +--- linux-3.14.45.orig/include/linux/ipv6.h 2015-06-23 02:01:36.000000000 +0200 ++++ linux-3.14.45/include/linux/ipv6.h 2015-06-24 14:15:48.871862463 +0200 +@@ -309,12 +309,6 @@ return NULL; } @@ -28,11 +26,10 @@ index 2faef33..9c12362 100644 static inline struct raw6_sock *raw6_sk(const struct sock *sk) { return NULL; -diff --git a/include/linux/tcp.h b/include/linux/tcp.h -index 4ad0706..a230dd0 100644 ---- a/include/linux/tcp.h -+++ b/include/linux/tcp.h -@@ -72,6 +72,53 @@ struct tcp_sack_block { +diff -Nur linux-3.14.45.orig/include/linux/tcp.h linux-3.14.45/include/linux/tcp.h +--- linux-3.14.45.orig/include/linux/tcp.h 2015-06-23 02:01:36.000000000 +0200 ++++ linux-3.14.45/include/linux/tcp.h 2015-06-24 14:15:48.871862463 +0200 +@@ -72,6 +72,53 @@ u32 end_seq; }; @@ -86,7 +83,7 @@ index 4ad0706..a230dd0 100644 /*These are used to set the sack_ok field in struct tcp_options_received */ #define TCP_SACK_SEEN (1 << 0) /*1 = peer is SACK capable, */ #define TCP_FACK_ENABLED (1 << 1) /*1 = FACK is enabled locally*/ -@@ -95,6 +142,9 @@ struct tcp_options_received { +@@ -95,6 +142,9 @@ u16 mss_clamp; /* Maximal mss, negotiated at connection setup */ }; @@ -96,7 +93,7 @@ index 4ad0706..a230dd0 100644 static inline void tcp_clear_options(struct tcp_options_received *rx_opt) { rx_opt->tstamp_ok = rx_opt->sack_ok = 0; -@@ -123,6 +173,7 @@ struct tcp_request_sock { +@@ -123,6 +173,7 @@ * FastOpen it's the seq# * after data-in-SYN. */ @@ -104,7 +101,7 @@ index 4ad0706..a230dd0 100644 }; static inline struct tcp_request_sock *tcp_rsk(const struct request_sock *req) -@@ -130,6 +181,8 @@ static inline struct tcp_request_sock *tcp_rsk(const struct request_sock *req) +@@ -130,6 +181,8 @@ return (struct tcp_request_sock *)req; } @@ -113,7 +110,7 @@ index 4ad0706..a230dd0 100644 struct tcp_sock { /* inet_connection_sock has to be the first member of tcp_sock */ struct inet_connection_sock inet_conn; -@@ -323,6 +376,45 @@ struct tcp_sock { +@@ -323,6 +376,45 @@ * socket. Used to retransmit SYNACKs etc. */ struct request_sock *fastopen_rsk; @@ -159,7 +156,7 @@ index 4ad0706..a230dd0 100644 }; enum tsq_flags { -@@ -334,6 +426,8 @@ enum tsq_flags { +@@ -334,6 +426,8 @@ TCP_MTU_REDUCED_DEFERRED, /* tcp_v{4|6}_err() could not call * tcp_v{4|6}_mtu_reduced() */ @@ -168,7 +165,7 @@ index 4ad0706..a230dd0 100644 }; static inline struct tcp_sock *tcp_sk(const struct sock *sk) -@@ -352,6 +446,7 @@ struct tcp_timewait_sock { +@@ -352,6 +446,7 @@ #ifdef CONFIG_TCP_MD5SIG struct tcp_md5sig_key *tw_md5_key; #endif @@ -176,11 +173,10 @@ index 4ad0706..a230dd0 100644 }; static inline struct tcp_timewait_sock *tcp_twsk(const struct sock *sk) -diff --git a/include/net/inet6_connection_sock.h b/include/net/inet6_connection_sock.h -index f981ba7..0144c65 100644 ---- a/include/net/inet6_connection_sock.h -+++ b/include/net/inet6_connection_sock.h -@@ -27,6 +27,8 @@ int inet6_csk_bind_conflict(const struct sock *sk, +diff -Nur linux-3.14.45.orig/include/net/inet6_connection_sock.h linux-3.14.45/include/net/inet6_connection_sock.h +--- linux-3.14.45.orig/include/net/inet6_connection_sock.h 2015-06-23 02:01:36.000000000 +0200 ++++ linux-3.14.45/include/net/inet6_connection_sock.h 2015-06-24 14:15:48.871862463 +0200 +@@ -27,6 +27,8 @@ struct dst_entry *inet6_csk_route_req(struct sock *sk, struct flowi6 *fl6, const struct request_sock *req); @@ -189,10 +185,9 @@ index f981ba7..0144c65 100644 struct request_sock *inet6_csk_search_req(const struct sock *sk, struct request_sock ***prevp, -diff --git a/include/net/inet_common.h b/include/net/inet_common.h -index fe7994c..780f229 100644 ---- a/include/net/inet_common.h -+++ b/include/net/inet_common.h +diff -Nur linux-3.14.45.orig/include/net/inet_common.h linux-3.14.45/include/net/inet_common.h +--- linux-3.14.45.orig/include/net/inet_common.h 2015-06-23 02:01:36.000000000 +0200 ++++ linux-3.14.45/include/net/inet_common.h 2015-06-24 14:15:48.871862463 +0200 @@ -1,6 +1,8 @@ #ifndef _INET_COMMON_H #define _INET_COMMON_H @@ -202,7 +197,7 @@ index fe7994c..780f229 100644 extern const struct proto_ops inet_stream_ops; extern const struct proto_ops inet_dgram_ops; -@@ -13,6 +15,8 @@ struct sock; +@@ -13,6 +15,8 @@ struct sockaddr; struct socket; @@ -211,11 +206,10 @@ index fe7994c..780f229 100644 int inet_release(struct socket *sock); int inet_stream_connect(struct socket *sock, struct sockaddr *uaddr, int addr_len, int flags); -diff --git a/include/net/inet_connection_sock.h b/include/net/inet_connection_sock.h -index c55aeed..84d1927 100644 ---- a/include/net/inet_connection_sock.h -+++ b/include/net/inet_connection_sock.h -@@ -243,6 +243,9 @@ static inline void inet_csk_reset_xmit_timer(struct sock *sk, const int what, +diff -Nur linux-3.14.45.orig/include/net/inet_connection_sock.h linux-3.14.45/include/net/inet_connection_sock.h +--- linux-3.14.45.orig/include/net/inet_connection_sock.h 2015-06-23 02:01:36.000000000 +0200 ++++ linux-3.14.45/include/net/inet_connection_sock.h 2015-06-24 14:15:48.871862463 +0200 +@@ -244,6 +244,9 @@ struct sock *inet_csk_accept(struct sock *sk, int flags, int *err); @@ -225,11 +219,9 @@ index c55aeed..84d1927 100644 struct request_sock *inet_csk_search_req(const struct sock *sk, struct request_sock ***prevp, const __be16 rport, -diff --git a/include/net/mptcp.h b/include/net/mptcp.h -new file mode 100644 -index 0000000..6454535 ---- /dev/null -+++ b/include/net/mptcp.h +diff -Nur linux-3.14.45.orig/include/net/mptcp.h linux-3.14.45/include/net/mptcp.h +--- linux-3.14.45.orig/include/net/mptcp.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-3.14.45/include/net/mptcp.h 2015-06-24 14:15:48.871862463 +0200 @@ -0,0 +1,1471 @@ +/* + * MPTCP implementation @@ -1702,11 +1694,9 @@ index 0000000..6454535 +#endif /* CONFIG_MPTCP */ + +#endif /* _MPTCP_H */ -diff --git a/include/net/mptcp_v4.h b/include/net/mptcp_v4.h -new file mode 100644 -index 0000000..047884c ---- /dev/null -+++ b/include/net/mptcp_v4.h +diff -Nur linux-3.14.45.orig/include/net/mptcp_v4.h linux-3.14.45/include/net/mptcp_v4.h +--- linux-3.14.45.orig/include/net/mptcp_v4.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-3.14.45/include/net/mptcp_v4.h 2015-06-24 14:15:48.871862463 +0200 @@ -0,0 +1,69 @@ +/* + * MPTCP implementation @@ -1777,11 +1767,9 @@ index 0000000..047884c +#endif /* CONFIG_MPTCP */ + +#endif /* MPTCP_V4_H_ */ -diff --git a/include/net/mptcp_v6.h b/include/net/mptcp_v6.h -new file mode 100644 -index 0000000..c303208 ---- /dev/null -+++ b/include/net/mptcp_v6.h +diff -Nur linux-3.14.45.orig/include/net/mptcp_v6.h linux-3.14.45/include/net/mptcp_v6.h +--- linux-3.14.45.orig/include/net/mptcp_v6.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-3.14.45/include/net/mptcp_v6.h 2015-06-24 14:15:48.871862463 +0200 @@ -0,0 +1,72 @@ +/* + * MPTCP implementation @@ -1855,10 +1843,9 @@ index 0000000..c303208 +#endif /* CONFIG_MPTCP */ + +#endif /* _MPTCP_V6_H */ -diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h -index 991dcd9..6297c97 100644 ---- a/include/net/net_namespace.h -+++ b/include/net/net_namespace.h +diff -Nur linux-3.14.45.orig/include/net/net_namespace.h linux-3.14.45/include/net/net_namespace.h +--- linux-3.14.45.orig/include/net/net_namespace.h 2015-06-23 02:01:36.000000000 +0200 ++++ linux-3.14.45/include/net/net_namespace.h 2015-06-24 14:15:48.871862463 +0200 @@ -15,6 +15,7 @@ #include <net/netns/packet.h> #include <net/netns/ipv4.h> @@ -1867,7 +1854,7 @@ index 991dcd9..6297c97 100644 #include <net/netns/sctp.h> #include <net/netns/dccp.h> #include <net/netns/netfilter.h> -@@ -90,6 +91,9 @@ struct net { +@@ -90,6 +91,9 @@ #if IS_ENABLED(CONFIG_IPV6) struct netns_ipv6 ipv6; #endif @@ -1877,11 +1864,9 @@ index 991dcd9..6297c97 100644 #if defined(CONFIG_IP_SCTP) || defined(CONFIG_IP_SCTP_MODULE) struct netns_sctp sctp; #endif -diff --git a/include/net/netns/mptcp.h b/include/net/netns/mptcp.h -new file mode 100644 -index 0000000..bad418b ---- /dev/null -+++ b/include/net/netns/mptcp.h +diff -Nur linux-3.14.45.orig/include/net/netns/mptcp.h linux-3.14.45/include/net/netns/mptcp.h +--- linux-3.14.45.orig/include/net/netns/mptcp.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-3.14.45/include/net/netns/mptcp.h 2015-06-24 14:15:48.871862463 +0200 @@ -0,0 +1,44 @@ +/* + * MPTCP implementation - MPTCP namespace @@ -1927,11 +1912,10 @@ index 0000000..bad418b +}; + +#endif /* __NETNS_MPTCP_H__ */ -diff --git a/include/net/request_sock.h b/include/net/request_sock.h -index 7f830ff..e79e87a 100644 ---- a/include/net/request_sock.h -+++ b/include/net/request_sock.h -@@ -164,7 +164,7 @@ struct request_sock_queue { +diff -Nur linux-3.14.45.orig/include/net/request_sock.h linux-3.14.45/include/net/request_sock.h +--- linux-3.14.45.orig/include/net/request_sock.h 2015-06-23 02:01:36.000000000 +0200 ++++ linux-3.14.45/include/net/request_sock.h 2015-06-24 14:15:48.871862463 +0200 +@@ -164,7 +164,7 @@ }; int reqsk_queue_alloc(struct request_sock_queue *queue, @@ -1940,11 +1924,10 @@ index 7f830ff..e79e87a 100644 void __reqsk_queue_destroy(struct request_sock_queue *queue); void reqsk_queue_destroy(struct request_sock_queue *queue); -diff --git a/include/net/sock.h b/include/net/sock.h -index b9586a1..09a682e 100644 ---- a/include/net/sock.h -+++ b/include/net/sock.h -@@ -899,6 +899,16 @@ void sk_clear_memalloc(struct sock *sk); +diff -Nur linux-3.14.45.orig/include/net/sock.h linux-3.14.45/include/net/sock.h +--- linux-3.14.45.orig/include/net/sock.h 2015-06-23 02:01:36.000000000 +0200 ++++ linux-3.14.45/include/net/sock.h 2015-06-24 14:15:48.871862463 +0200 +@@ -899,6 +899,16 @@ int sk_wait_data(struct sock *sk, long *timeo); @@ -1961,11 +1944,10 @@ index b9586a1..09a682e 100644 struct request_sock_ops; struct timewait_sock_ops; struct inet_hashinfo; -diff --git a/include/net/tcp.h b/include/net/tcp.h -index 743acce..db0cc04 100644 ---- a/include/net/tcp.h -+++ b/include/net/tcp.h -@@ -176,6 +176,7 @@ void tcp_time_wait(struct sock *sk, int state, int timeo); +diff -Nur linux-3.14.45.orig/include/net/tcp.h linux-3.14.45/include/net/tcp.h +--- linux-3.14.45.orig/include/net/tcp.h 2015-06-23 02:01:36.000000000 +0200 ++++ linux-3.14.45/include/net/tcp.h 2015-06-24 14:15:48.875862469 +0200 +@@ -176,6 +176,7 @@ #define TCPOPT_SACK 5 /* SACK Block */ #define TCPOPT_TIMESTAMP 8 /* Better RTT estimations/PAWS */ #define TCPOPT_MD5SIG 19 /* MD5 Signature (RFC2385) */ @@ -1973,7 +1955,7 @@ index 743acce..db0cc04 100644 #define TCPOPT_EXP 254 /* Experimental */ /* Magic number to be after the option value for sharing TCP * experimental options. See draft-ietf-tcpm-experimental-options-00.txt -@@ -234,6 +235,27 @@ void tcp_time_wait(struct sock *sk, int state, int timeo); +@@ -234,6 +235,27 @@ */ #define TFO_SERVER_ALWAYS 0x1000 @@ -2001,7 +1983,7 @@ index 743acce..db0cc04 100644 extern struct inet_timewait_death_row tcp_death_row; /* sysctl variables for tcp */ -@@ -349,6 +371,112 @@ extern struct proto tcp_prot; +@@ -349,6 +371,112 @@ #define TCP_ADD_STATS_USER(net, field, val) SNMP_ADD_STATS_USER((net)->mib.tcp_statistics, field, val) #define TCP_ADD_STATS(net, field, val) SNMP_ADD_STATS((net)->mib.tcp_statistics, field, val) @@ -2114,7 +2096,7 @@ index 743acce..db0cc04 100644 void tcp_tasklet_init(void); void tcp_v4_err(struct sk_buff *skb, u32); -@@ -445,6 +573,7 @@ int tcp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, +@@ -445,6 +573,7 @@ size_t len, int nonblock, int flags, int *addr_len); void tcp_parse_options(const struct sk_buff *skb, struct tcp_options_received *opt_rx, @@ -2122,7 +2104,7 @@ index 743acce..db0cc04 100644 int estab, struct tcp_fastopen_cookie *foc); const u8 *tcp_parse_md5sig_option(const struct tcphdr *th); -@@ -557,11 +686,15 @@ void tcp_send_delayed_ack(struct sock *sk); +@@ -558,11 +687,15 @@ void tcp_send_loss_probe(struct sock *sk); bool tcp_schedule_loss_probe(struct sock *sk); @@ -2138,7 +2120,7 @@ index 743acce..db0cc04 100644 /* tcp_timer.c */ void tcp_init_xmit_timers(struct sock *); -@@ -705,14 +838,24 @@ void tcp_send_window_probe(struct sock *sk); +@@ -706,14 +839,24 @@ */ struct tcp_skb_cb { union { @@ -2148,12 +2130,12 @@ index 743acce..db0cc04 100644 #if IS_ENABLED(CONFIG_IPV6) - struct inet6_skb_parm h6; + struct inet6_skb_parm h6; - #endif -- } header; /* For incoming frames */ ++#endif + } header; /* For incoming frames */ +#ifdef CONFIG_MPTCP + __u32 path_mask; /* path indices that tried to send this skb */ -+#endif + #endif +- } header; /* For incoming frames */ + }; __u32 seq; /* Starting sequence number */ __u32 end_seq; /* SEQ + FIN + SYN + datalen */ @@ -2166,7 +2148,7 @@ index 743acce..db0cc04 100644 __u8 tcp_flags; /* TCP header flags. (tcp[13]) */ __u8 sacked; /* State flags for SACK/FACK. */ -@@ -1058,7 +1201,8 @@ u32 tcp_default_init_rwnd(u32 mss); +@@ -1061,7 +1204,8 @@ /* Determine a window scaling and initial window to offer. */ void tcp_select_initial_window(int __space, __u32 mss, __u32 *rcv_wnd, __u32 *window_clamp, int wscale_ok, @@ -2176,7 +2158,7 @@ index 743acce..db0cc04 100644 static inline int tcp_win_from_space(int space) { -@@ -1070,12 +1214,18 @@ static inline int tcp_win_from_space(int space) +@@ -1073,12 +1217,18 @@ /* Note: caller must be prepared to deal with negative returns */ static inline int tcp_space(const struct sock *sk) { @@ -2195,7 +2177,7 @@ index 743acce..db0cc04 100644 return tcp_win_from_space(sk->sk_rcvbuf); } -@@ -1090,6 +1240,7 @@ static inline void tcp_openreq_init(struct request_sock *req, +@@ -1093,6 +1243,7 @@ tcp_rsk(req)->rcv_isn = TCP_SKB_CB(skb)->seq; tcp_rsk(req)->rcv_nxt = TCP_SKB_CB(skb)->seq + 1; tcp_rsk(req)->snt_synack = 0; @@ -2203,10 +2185,9 @@ index 743acce..db0cc04 100644 req->mss = rx_opt->mss_clamp; req->ts_recent = rx_opt->saw_tstamp ? rx_opt->rcv_tsval : 0; ireq->tstamp_ok = rx_opt->tstamp_ok; -diff --git a/include/uapi/linux/if.h b/include/uapi/linux/if.h -index d758163..3d81e49 100644 ---- a/include/uapi/linux/if.h -+++ b/include/uapi/linux/if.h +diff -Nur linux-3.14.45.orig/include/uapi/linux/if.h linux-3.14.45/include/uapi/linux/if.h +--- linux-3.14.45.orig/include/uapi/linux/if.h 2015-06-23 02:01:36.000000000 +0200 ++++ linux-3.14.45/include/uapi/linux/if.h 2015-06-24 14:15:48.875862469 +0200 @@ -53,6 +53,9 @@ #define IFF_ECHO 0x40000 /* echo sent packets */ @@ -2217,11 +2198,10 @@ index d758163..3d81e49 100644 #define IFF_VOLATILE (IFF_LOOPBACK|IFF_POINTOPOINT|IFF_BROADCAST|IFF_ECHO|\ IFF_MASTER|IFF_SLAVE|IFF_RUNNING|IFF_LOWER_UP|IFF_DORMANT) -diff --git a/include/uapi/linux/tcp.h b/include/uapi/linux/tcp.h -index 377f1e5..2ffcb03 100644 ---- a/include/uapi/linux/tcp.h -+++ b/include/uapi/linux/tcp.h -@@ -112,6 +112,7 @@ enum { +diff -Nur linux-3.14.45.orig/include/uapi/linux/tcp.h linux-3.14.45/include/uapi/linux/tcp.h +--- linux-3.14.45.orig/include/uapi/linux/tcp.h 2015-06-23 02:01:36.000000000 +0200 ++++ linux-3.14.45/include/uapi/linux/tcp.h 2015-06-24 14:15:48.875862469 +0200 +@@ -112,6 +112,7 @@ #define TCP_FASTOPEN 23 /* Enable FastOpen on listeners */ #define TCP_TIMESTAMP 24 #define TCP_NOTSENT_LOWAT 25 /* limit number of unsent bytes in write queue */ @@ -2229,11 +2209,10 @@ index 377f1e5..2ffcb03 100644 struct tcp_repair_opt { __u32 opt_code; -diff --git a/net/Kconfig b/net/Kconfig -index e411046..3e4b278 100644 ---- a/net/Kconfig -+++ b/net/Kconfig -@@ -79,6 +79,7 @@ if INET +diff -Nur linux-3.14.45.orig/net/Kconfig linux-3.14.45/net/Kconfig +--- linux-3.14.45.orig/net/Kconfig 2015-06-23 02:01:36.000000000 +0200 ++++ linux-3.14.45/net/Kconfig 2015-06-24 14:15:48.875862469 +0200 +@@ -79,6 +79,7 @@ source "net/ipv4/Kconfig" source "net/ipv6/Kconfig" source "net/netlabel/Kconfig" @@ -2241,11 +2220,10 @@ index e411046..3e4b278 100644 endif # if INET -diff --git a/net/Makefile b/net/Makefile -index cbbbe6d..244bac1 100644 ---- a/net/Makefile -+++ b/net/Makefile -@@ -20,6 +20,7 @@ obj-$(CONFIG_INET) += ipv4/ +diff -Nur linux-3.14.45.orig/net/Makefile linux-3.14.45/net/Makefile +--- linux-3.14.45.orig/net/Makefile 2015-06-23 02:01:36.000000000 +0200 ++++ linux-3.14.45/net/Makefile 2015-06-24 14:15:48.875862469 +0200 +@@ -20,6 +20,7 @@ obj-$(CONFIG_XFRM) += xfrm/ obj-$(CONFIG_UNIX) += unix/ obj-$(CONFIG_NET) += ipv6/ @@ -2253,11 +2231,10 @@ index cbbbe6d..244bac1 100644 obj-$(CONFIG_PACKET) += packet/ obj-$(CONFIG_NET_KEY) += key/ obj-$(CONFIG_BRIDGE) += bridge/ -diff --git a/net/core/dev.c b/net/core/dev.c -index 45fa2f1..3cfdbc0 100644 ---- a/net/core/dev.c -+++ b/net/core/dev.c -@@ -5271,7 +5271,7 @@ int __dev_change_flags(struct net_device *dev, unsigned int flags) +diff -Nur linux-3.14.45.orig/net/core/dev.c linux-3.14.45/net/core/dev.c +--- linux-3.14.45.orig/net/core/dev.c 2015-06-23 02:01:36.000000000 +0200 ++++ linux-3.14.45/net/core/dev.c 2015-06-24 14:15:48.875862469 +0200 +@@ -5399,7 +5399,7 @@ dev->flags = (flags & (IFF_DEBUG | IFF_NOTRAILERS | IFF_NOARP | IFF_DYNAMIC | IFF_MULTICAST | IFF_PORTSEL | @@ -2266,11 +2243,10 @@ index 45fa2f1..3cfdbc0 100644 (dev->flags & (IFF_UP | IFF_VOLATILE | IFF_PROMISC | IFF_ALLMULTI)); -diff --git a/net/core/request_sock.c b/net/core/request_sock.c -index 4425148..e128f08 100644 ---- a/net/core/request_sock.c -+++ b/net/core/request_sock.c -@@ -38,7 +38,8 @@ int sysctl_max_syn_backlog = 256; +diff -Nur linux-3.14.45.orig/net/core/request_sock.c linux-3.14.45/net/core/request_sock.c +--- linux-3.14.45.orig/net/core/request_sock.c 2015-06-23 02:01:36.000000000 +0200 ++++ linux-3.14.45/net/core/request_sock.c 2015-06-24 14:15:48.875862469 +0200 +@@ -38,7 +38,8 @@ EXPORT_SYMBOL(sysctl_max_syn_backlog); int reqsk_queue_alloc(struct request_sock_queue *queue, @@ -2280,7 +2256,7 @@ index 4425148..e128f08 100644 { size_t lopt_size = sizeof(struct listen_sock); struct listen_sock *lopt; -@@ -48,9 +49,11 @@ int reqsk_queue_alloc(struct request_sock_queue *queue, +@@ -48,9 +49,11 @@ nr_table_entries = roundup_pow_of_two(nr_table_entries + 1); lopt_size += nr_table_entries * sizeof(struct request_sock *); if (lopt_size > PAGE_SIZE) @@ -2294,11 +2270,10 @@ index 4425148..e128f08 100644 if (lopt == NULL) return -ENOMEM; -diff --git a/net/core/skbuff.c b/net/core/skbuff.c -index 90b96a1..2564d89 100644 ---- a/net/core/skbuff.c -+++ b/net/core/skbuff.c -@@ -472,7 +472,7 @@ static inline void skb_drop_fraglist(struct sk_buff *skb) +diff -Nur linux-3.14.45.orig/net/core/skbuff.c linux-3.14.45/net/core/skbuff.c +--- linux-3.14.45.orig/net/core/skbuff.c 2015-06-23 02:01:36.000000000 +0200 ++++ linux-3.14.45/net/core/skbuff.c 2015-06-24 14:15:48.875862469 +0200 +@@ -491,7 +491,7 @@ skb_drop_list(&skb_shinfo(skb)->frag_list); } @@ -2307,7 +2282,7 @@ index 90b96a1..2564d89 100644 { struct sk_buff *list; -@@ -894,7 +894,7 @@ static void skb_headers_offset_update(struct sk_buff *skb, int off) +@@ -913,7 +913,7 @@ skb->inner_mac_header += off; } @@ -2316,11 +2291,10 @@ index 90b96a1..2564d89 100644 { __copy_skb_header(new, old); -diff --git a/net/core/sock.c b/net/core/sock.c -index c0fc6bd..7314971 100644 ---- a/net/core/sock.c -+++ b/net/core/sock.c -@@ -231,7 +231,7 @@ static const char *const af_family_slock_key_strings[AF_MAX+1] = { +diff -Nur linux-3.14.45.orig/net/core/sock.c linux-3.14.45/net/core/sock.c +--- linux-3.14.45.orig/net/core/sock.c 2015-06-23 02:01:36.000000000 +0200 ++++ linux-3.14.45/net/core/sock.c 2015-06-24 14:15:48.875862469 +0200 +@@ -280,7 +280,7 @@ "slock-AF_IEEE802154", "slock-AF_CAIF" , "slock-AF_ALG" , "slock-AF_NFC" , "slock-AF_VSOCK" ,"slock-AF_MAX" }; @@ -2329,7 +2303,7 @@ index c0fc6bd..7314971 100644 "clock-AF_UNSPEC", "clock-AF_UNIX" , "clock-AF_INET" , "clock-AF_AX25" , "clock-AF_IPX" , "clock-AF_APPLETALK", "clock-AF_NETROM", "clock-AF_BRIDGE" , "clock-AF_ATMPVC" , -@@ -252,7 +252,7 @@ static const char *const af_family_clock_key_strings[AF_MAX+1] = { +@@ -301,7 +301,7 @@ * sk_callback_lock locking rules are per-address-family, * so split the lock classes by using a per-AF key: */ @@ -2338,7 +2312,7 @@ index c0fc6bd..7314971 100644 /* Take into consideration the size of the struct sk_buff overhead in the * determination of these values, since that is non-constant across -@@ -602,7 +602,7 @@ out: +@@ -651,7 +651,7 @@ return ret; } @@ -2347,7 +2321,7 @@ index c0fc6bd..7314971 100644 { if (valbool) sock_set_flag(sk, bit); -@@ -1204,7 +1204,7 @@ lenout: +@@ -1272,7 +1272,7 @@ * * (We also register the sk_lock with the lock validator.) */ @@ -2356,7 +2330,7 @@ index c0fc6bd..7314971 100644 { sock_lock_init_class_and_name(sk, af_family_slock_key_strings[sk->sk_family], -@@ -1252,7 +1252,7 @@ void sk_prot_clear_portaddr_nulls(struct sock *sk, int size) +@@ -1320,7 +1320,7 @@ } EXPORT_SYMBOL(sk_prot_clear_portaddr_nulls); @@ -2365,7 +2339,7 @@ index c0fc6bd..7314971 100644 int family) { struct sock *sk; -@@ -2184,7 +2184,7 @@ static void sock_def_wakeup(struct sock *sk) +@@ -2252,7 +2252,7 @@ rcu_read_unlock(); } @@ -2374,11 +2348,10 @@ index c0fc6bd..7314971 100644 { struct socket_wq *wq; -diff --git a/net/ipv4/Kconfig b/net/ipv4/Kconfig -index 05c57f0..630434d 100644 ---- a/net/ipv4/Kconfig -+++ b/net/ipv4/Kconfig -@@ -556,6 +556,30 @@ config TCP_CONG_ILLINOIS +diff -Nur linux-3.14.45.orig/net/ipv4/Kconfig linux-3.14.45/net/ipv4/Kconfig +--- linux-3.14.45.orig/net/ipv4/Kconfig 2015-06-23 02:01:36.000000000 +0200 ++++ linux-3.14.45/net/ipv4/Kconfig 2015-06-24 14:15:48.875862469 +0200 +@@ -556,6 +556,30 @@ For further details see: http://www.ews.uiuc.edu/~shaoliu/tcpillinois/index.html @@ -2409,7 +2382,7 @@ index 05c57f0..630434d 100644 choice prompt "Default TCP congestion control" default DEFAULT_CUBIC -@@ -584,6 +608,15 @@ choice +@@ -584,6 +608,15 @@ config DEFAULT_WESTWOOD bool "Westwood" if TCP_CONG_WESTWOOD=y @@ -2425,7 +2398,7 @@ index 05c57f0..630434d 100644 config DEFAULT_RENO bool "Reno" -@@ -605,6 +638,8 @@ config DEFAULT_TCP_CONG +@@ -605,6 +638,8 @@ default "vegas" if DEFAULT_VEGAS default "westwood" if DEFAULT_WESTWOOD default "veno" if DEFAULT_VENO @@ -2434,10 +2407,9 @@ index 05c57f0..630434d 100644 default "reno" if DEFAULT_RENO default "cubic" -diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c -index 19ab78a..567918a 100644 ---- a/net/ipv4/af_inet.c -+++ b/net/ipv4/af_inet.c +diff -Nur linux-3.14.45.orig/net/ipv4/af_inet.c linux-3.14.45/net/ipv4/af_inet.c +--- linux-3.14.45.orig/net/ipv4/af_inet.c 2015-06-23 02:01:36.000000000 +0200 ++++ linux-3.14.45/net/ipv4/af_inet.c 2015-06-24 14:15:48.875862469 +0200 @@ -104,6 +104,7 @@ #include <net/ip_fib.h> #include <net/inet_connection_sock.h> @@ -2446,7 +2418,7 @@ index 19ab78a..567918a 100644 #include <net/udp.h> #include <net/udplite.h> #include <net/ping.h> -@@ -246,8 +247,7 @@ EXPORT_SYMBOL(inet_listen); +@@ -246,8 +247,7 @@ * Create an inet socket. */ @@ -2456,7 +2428,7 @@ index 19ab78a..567918a 100644 { struct sock *sk; struct inet_protosw *answer; -@@ -679,6 +679,23 @@ int inet_accept(struct socket *sock, struct socket *newsock, int flags) +@@ -679,6 +679,23 @@ lock_sock(sk2); sock_rps_record_flow(sk2); @@ -2480,7 +2452,7 @@ index 19ab78a..567918a 100644 WARN_ON(!((1 << sk2->sk_state) & (TCPF_ESTABLISHED | TCPF_SYN_RECV | TCPF_CLOSE_WAIT | TCPF_CLOSE))); -@@ -1767,6 +1784,9 @@ static int __init inet_init(void) +@@ -1770,6 +1787,9 @@ ip_init(); @@ -2490,10 +2462,9 @@ index 19ab78a..567918a 100644 tcp_v4_init(); /* Setup TCP slab cache for open requests. */ -diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c -index 0d1e2cb..423dfb6 100644 ---- a/net/ipv4/inet_connection_sock.c -+++ b/net/ipv4/inet_connection_sock.c +diff -Nur linux-3.14.45.orig/net/ipv4/inet_connection_sock.c linux-3.14.45/net/ipv4/inet_connection_sock.c +--- linux-3.14.45.orig/net/ipv4/inet_connection_sock.c 2015-06-23 02:01:36.000000000 +0200 ++++ linux-3.14.45/net/ipv4/inet_connection_sock.c 2015-06-24 14:15:48.875862469 +0200 @@ -23,6 +23,7 @@ #include <net/route.h> #include <net/tcp_states.h> @@ -2502,7 +2473,7 @@ index 0d1e2cb..423dfb6 100644 #ifdef INET_CSK_DEBUG const char inet_csk_timer_bug_msg[] = "inet_csk BUG: unknown timer value\n"; -@@ -468,8 +469,8 @@ no_route: +@@ -468,8 +469,8 @@ } EXPORT_SYMBOL_GPL(inet_csk_route_child_sock); @@ -2513,7 +2484,7 @@ index 0d1e2cb..423dfb6 100644 { return jhash_2words((__force u32)raddr, (__force u32)rport, rnd) & (synq_hsize - 1); } -@@ -667,7 +668,12 @@ struct sock *inet_csk_clone_lock(const struct sock *sk, +@@ -667,7 +668,12 @@ const struct request_sock *req, const gfp_t priority) { @@ -2527,7 +2498,7 @@ index 0d1e2cb..423dfb6 100644 if (newsk != NULL) { struct inet_connection_sock *newicsk = inet_csk(newsk); -@@ -744,7 +750,8 @@ int inet_csk_listen_start(struct sock *sk, const int nr_table_entries) +@@ -744,7 +750,8 @@ { struct inet_sock *inet = inet_sk(sk); struct inet_connection_sock *icsk = inet_csk(sk); @@ -2537,7 +2508,7 @@ index 0d1e2cb..423dfb6 100644 if (rc != 0) return rc; -@@ -802,9 +809,14 @@ void inet_csk_listen_stop(struct sock *sk) +@@ -802,9 +809,14 @@ while ((req = acc_req) != NULL) { struct sock *child = req->sk; @@ -2552,7 +2523,7 @@ index 0d1e2cb..423dfb6 100644 local_bh_disable(); bh_lock_sock(child); WARN_ON(sock_owned_by_user(child)); -@@ -833,6 +845,8 @@ void inet_csk_listen_stop(struct sock *sk) +@@ -833,6 +845,8 @@ bh_unlock_sock(child); local_bh_enable(); @@ -2561,11 +2532,10 @@ index 0d1e2cb..423dfb6 100644 sock_put(child); sk_acceptq_removed(sk); -diff --git a/net/ipv4/syncookies.c b/net/ipv4/syncookies.c -index f2ed13c..f08addc 100644 ---- a/net/ipv4/syncookies.c -+++ b/net/ipv4/syncookies.c -@@ -284,7 +284,7 @@ struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb, +diff -Nur linux-3.14.45.orig/net/ipv4/syncookies.c linux-3.14.45/net/ipv4/syncookies.c +--- linux-3.14.45.orig/net/ipv4/syncookies.c 2015-06-23 02:01:36.000000000 +0200 ++++ linux-3.14.45/net/ipv4/syncookies.c 2015-06-24 14:15:48.875862469 +0200 +@@ -284,7 +284,7 @@ /* check for timestamp cookie support */ memset(&tcp_opt, 0, sizeof(tcp_opt)); @@ -2574,7 +2544,7 @@ index f2ed13c..f08addc 100644 if (!cookie_check_timestamp(&tcp_opt, sock_net(sk), &ecn_ok)) goto out; -@@ -354,10 +354,10 @@ struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb, +@@ -354,10 +354,10 @@ /* Try to redo what tcp_v4_send_synack did. */ req->window_clamp = tp->window_clamp ? :dst_metric(&rt->dst, RTAX_WINDOW); @@ -2587,10 +2557,9 @@ index f2ed13c..f08addc 100644 ireq->rcv_wscale = rcv_wscale; -diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c -index 97c8f56..be72a40 100644 ---- a/net/ipv4/tcp.c -+++ b/net/ipv4/tcp.c +diff -Nur linux-3.14.45.orig/net/ipv4/tcp.c linux-3.14.45/net/ipv4/tcp.c +--- linux-3.14.45.orig/net/ipv4/tcp.c 2015-06-23 02:01:36.000000000 +0200 ++++ linux-3.14.45/net/ipv4/tcp.c 2015-06-24 14:15:48.879862472 +0200 @@ -271,6 +271,7 @@ #include <net/icmp.h> @@ -2599,7 +2568,7 @@ index 97c8f56..be72a40 100644 #include <net/tcp.h> #include <net/xfrm.h> #include <net/ip.h> -@@ -419,6 +420,9 @@ void tcp_init_sock(struct sock *sk) +@@ -419,6 +420,9 @@ sk->sk_sndbuf = sysctl_tcp_wmem[1]; sk->sk_rcvbuf = sysctl_tcp_rmem[1]; @@ -2609,7 +2578,7 @@ index 97c8f56..be72a40 100644 local_bh_disable(); sock_update_memcg(sk); sk_sockets_allocated_inc(sk); -@@ -607,6 +611,8 @@ static inline void skb_entail(struct sock *sk, struct sk_buff *skb) +@@ -607,6 +611,8 @@ tcb->seq = tcb->end_seq = tp->write_seq; tcb->tcp_flags = TCPHDR_ACK; tcb->sacked = 0; @@ -2618,7 +2587,7 @@ index 97c8f56..be72a40 100644 skb_header_release(skb); tcp_add_write_queue_tail(sk, skb); sk->sk_wmem_queued += skb->truesize; -@@ -640,8 +646,8 @@ static bool tcp_should_autocork(struct sock *sk, struct sk_buff *skb, +@@ -640,8 +646,8 @@ atomic_read(&sk->sk_wmem_alloc) > skb->truesize; } @@ -2629,7 +2598,7 @@ index 97c8f56..be72a40 100644 { struct tcp_sock *tp = tcp_sk(sk); struct sk_buff *skb; -@@ -726,6 +732,14 @@ ssize_t tcp_splice_read(struct socket *sock, loff_t *ppos, +@@ -726,6 +732,14 @@ int ret; sock_rps_record_flow(sk); @@ -2644,7 +2613,7 @@ index 97c8f56..be72a40 100644 /* * We can't seek on a socket input */ -@@ -821,8 +835,7 @@ struct sk_buff *sk_stream_alloc_skb(struct sock *sk, int size, gfp_t gfp) +@@ -821,8 +835,7 @@ return NULL; } @@ -2654,7 +2623,7 @@ index 97c8f56..be72a40 100644 { struct tcp_sock *tp = tcp_sk(sk); u32 xmit_size_goal, old_size_goal; -@@ -872,8 +885,13 @@ static int tcp_send_mss(struct sock *sk, int *size_goal, int flags) +@@ -872,8 +885,13 @@ { int mss_now; @@ -2670,7 +2639,7 @@ index 97c8f56..be72a40 100644 return mss_now; } -@@ -897,6 +915,26 @@ static ssize_t do_tcp_sendpages(struct sock *sk, struct page *page, int offset, +@@ -897,6 +915,26 @@ goto out_err; } @@ -2697,7 +2666,7 @@ index 97c8f56..be72a40 100644 clear_bit(SOCK_ASYNC_NOSPACE, &sk->sk_socket->flags); mss_now = tcp_send_mss(sk, &size_goal, flags); -@@ -1001,8 +1039,9 @@ int tcp_sendpage(struct sock *sk, struct page *page, int offset, +@@ -1001,8 +1039,9 @@ { ssize_t res; @@ -2709,7 +2678,7 @@ index 97c8f56..be72a40 100644 return sock_no_sendpage(sk->sk_socket, page, offset, size, flags); -@@ -1018,6 +1057,9 @@ static inline int select_size(const struct sock *sk, bool sg) +@@ -1018,6 +1057,9 @@ const struct tcp_sock *tp = tcp_sk(sk); int tmp = tp->mss_cache; @@ -2719,7 +2688,7 @@ index 97c8f56..be72a40 100644 if (sg) { if (sk_can_gso(sk)) { /* Small frames wont use a full page: -@@ -1105,6 +1147,12 @@ int tcp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, +@@ -1105,6 +1147,12 @@ goto do_error; } @@ -2732,7 +2701,7 @@ index 97c8f56..be72a40 100644 if (unlikely(tp->repair)) { if (tp->repair_queue == TCP_RECV_QUEUE) { copied = tcp_send_rcvq(sk, msg, size); -@@ -1132,7 +1180,10 @@ int tcp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, +@@ -1132,7 +1180,10 @@ if (sk->sk_err || (sk->sk_shutdown & SEND_SHUTDOWN)) goto out_err; @@ -2744,7 +2713,7 @@ index 97c8f56..be72a40 100644 while (--iovlen >= 0) { size_t seglen = iov->iov_len; -@@ -1183,8 +1234,15 @@ new_segment: +@@ -1176,8 +1227,15 @@ /* * Check whether we can use HW checksum. @@ -2761,7 +2730,7 @@ index 97c8f56..be72a40 100644 skb->ip_summed = CHECKSUM_PARTIAL; skb_entail(sk, skb); -@@ -1385,6 +1443,11 @@ void tcp_cleanup_rbuf(struct sock *sk, int copied) +@@ -1386,6 +1444,11 @@ struct sk_buff *skb = skb_peek(&sk->sk_receive_queue); @@ -2773,7 +2742,7 @@ index 97c8f56..be72a40 100644 WARN(skb && !before(tp->copied_seq, TCP_SKB_CB(skb)->end_seq), "cleanup rbuf bug: copied %X seq %X rcvnxt %X\n", tp->copied_seq, TCP_SKB_CB(skb)->end_seq, tp->rcv_nxt); -@@ -1421,7 +1484,7 @@ void tcp_cleanup_rbuf(struct sock *sk, int copied) +@@ -1422,7 +1485,7 @@ /* Optimize, __tcp_select_window() is not cheap. */ if (2*rcv_window_now <= tp->window_clamp) { @@ -2782,7 +2751,7 @@ index 97c8f56..be72a40 100644 /* Send ACK now, if this read freed lots of space * in our buffer. Certainly, new_window is new window. -@@ -1622,6 +1685,14 @@ int tcp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, +@@ -1623,6 +1686,14 @@ lock_sock(sk); @@ -2797,7 +2766,7 @@ index 97c8f56..be72a40 100644 err = -ENOTCONN; if (sk->sk_state == TCP_LISTEN) goto out; -@@ -2069,7 +2140,7 @@ static const unsigned char new_state[16] = { +@@ -2070,7 +2141,7 @@ /* TCP_CLOSING */ TCP_CLOSING, }; @@ -2806,7 +2775,7 @@ index 97c8f56..be72a40 100644 { int next = (int)new_state[sk->sk_state]; int ns = next & TCP_STATE_MASK; -@@ -2098,8 +2169,12 @@ void tcp_shutdown(struct sock *sk, int how) +@@ -2099,8 +2170,12 @@ (TCPF_ESTABLISHED | TCPF_SYN_SENT | TCPF_SYN_RECV | TCPF_CLOSE_WAIT)) { /* Clear out any half completed packets. FIN if needed. */ @@ -2821,7 +2790,7 @@ index 97c8f56..be72a40 100644 } } EXPORT_SYMBOL(tcp_shutdown); -@@ -2124,6 +2199,11 @@ void tcp_close(struct sock *sk, long timeout) +@@ -2125,6 +2200,11 @@ int data_was_unread = 0; int state; @@ -2833,7 +2802,7 @@ index 97c8f56..be72a40 100644 lock_sock(sk); sk->sk_shutdown = SHUTDOWN_MASK; -@@ -2290,15 +2370,6 @@ out: +@@ -2291,15 +2371,6 @@ } EXPORT_SYMBOL(tcp_close); @@ -2849,7 +2818,7 @@ index 97c8f56..be72a40 100644 int tcp_disconnect(struct sock *sk, int flags) { struct inet_sock *inet = inet_sk(sk); -@@ -2339,6 +2410,13 @@ int tcp_disconnect(struct sock *sk, int flags) +@@ -2340,6 +2411,13 @@ if (!(sk->sk_userlocks & SOCK_BINDADDR_LOCK)) inet_reset_saddr(sk); @@ -2863,7 +2832,7 @@ index 97c8f56..be72a40 100644 sk->sk_shutdown = 0; sock_reset_flag(sk, SOCK_DONE); tp->srtt = 0; -@@ -2698,6 +2776,18 @@ static int do_tcp_setsockopt(struct sock *sk, int level, +@@ -2699,6 +2777,18 @@ tp->notsent_lowat = val; sk->sk_write_space(sk); break; @@ -2882,7 +2851,7 @@ index 97c8f56..be72a40 100644 default: err = -ENOPROTOOPT; break; -@@ -2917,6 +3007,11 @@ static int do_tcp_getsockopt(struct sock *sk, int level, +@@ -2918,6 +3008,11 @@ case TCP_NOTSENT_LOWAT: val = tp->notsent_lowat; break; @@ -2894,7 +2863,7 @@ index 97c8f56..be72a40 100644 default: return -ENOPROTOOPT; } -@@ -3106,8 +3201,11 @@ void tcp_done(struct sock *sk) +@@ -3088,8 +3183,11 @@ if (sk->sk_state == TCP_SYN_SENT || sk->sk_state == TCP_SYN_RECV) TCP_INC_STATS_BH(sock_net(sk), TCP_MIB_ATTEMPTFAILS); @@ -2906,10 +2875,9 @@ index 97c8f56..be72a40 100644 if (req != NULL) reqsk_fastopen_remove(sk, req, false); -diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c -index eeaac39..cb06531 100644 ---- a/net/ipv4/tcp_input.c -+++ b/net/ipv4/tcp_input.c +diff -Nur linux-3.14.45.orig/net/ipv4/tcp_input.c linux-3.14.45/net/ipv4/tcp_input.c +--- linux-3.14.45.orig/net/ipv4/tcp_input.c 2015-06-23 02:01:36.000000000 +0200 ++++ linux-3.14.45/net/ipv4/tcp_input.c 2015-06-24 14:15:48.883862476 +0200 @@ -74,6 +74,9 @@ #include <linux/ipsec.h> #include <asm/unaligned.h> @@ -2920,7 +2888,7 @@ index eeaac39..cb06531 100644 int sysctl_tcp_timestamps __read_mostly = 1; int sysctl_tcp_window_scaling __read_mostly = 1; -@@ -99,25 +102,6 @@ int sysctl_tcp_thin_dupack __read_mostly; +@@ -99,25 +102,6 @@ int sysctl_tcp_moderate_rcvbuf __read_mostly = 1; int sysctl_tcp_early_retrans __read_mostly = 3; @@ -2946,7 +2914,7 @@ index eeaac39..cb06531 100644 #define TCP_REMNANT (TCP_FLAG_FIN|TCP_FLAG_URG|TCP_FLAG_SYN|TCP_FLAG_PSH) #define TCP_HP_BITS (~(TCP_RESERVED_BITS|TCP_FLAG_PSH)) -@@ -283,8 +267,12 @@ static void tcp_sndbuf_expand(struct sock *sk) +@@ -283,8 +267,12 @@ per_mss = roundup_pow_of_two(per_mss) + SKB_DATA_ALIGN(sizeof(struct sk_buff)); @@ -2961,7 +2929,7 @@ index eeaac39..cb06531 100644 /* Fast Recovery (RFC 5681 3.2) : * Cubic needs 1.7 factor, rounded to 2 to include -@@ -292,8 +280,16 @@ static void tcp_sndbuf_expand(struct sock *sk) +@@ -292,8 +280,16 @@ */ sndmem = 2 * nr_segs * per_mss; @@ -2979,7 +2947,7 @@ index eeaac39..cb06531 100644 } /* 2. Tuning advertised window (window_clamp, rcv_ssthresh) -@@ -342,10 +338,12 @@ static int __tcp_grow_window(const struct sock *sk, const struct sk_buff *skb) +@@ -342,10 +338,12 @@ static void tcp_grow_window(struct sock *sk, const struct sk_buff *skb) { struct tcp_sock *tp = tcp_sk(sk); @@ -2994,7 +2962,7 @@ index eeaac39..cb06531 100644 !sk_under_memory_pressure(sk)) { int incr; -@@ -353,14 +351,14 @@ static void tcp_grow_window(struct sock *sk, const struct sk_buff *skb) +@@ -353,14 +351,14 @@ * will fit to rcvbuf in future. */ if (tcp_win_from_space(skb->truesize) <= skb->len) @@ -3013,7 +2981,7 @@ index eeaac39..cb06531 100644 inet_csk(sk)->icsk_ack.quick |= 1; } } -@@ -543,7 +541,10 @@ void tcp_rcv_space_adjust(struct sock *sk) +@@ -543,7 +541,10 @@ int copied; time = tcp_time_stamp - tp->rcvq_space.time; @@ -3025,7 +2993,7 @@ index eeaac39..cb06531 100644 return; /* Number of bytes copied to user in last RTT */ -@@ -768,7 +769,7 @@ static void tcp_update_pacing_rate(struct sock *sk) +@@ -768,7 +769,7 @@ /* Calculate rto without backoff. This is the second half of Van Jacobson's * routine referred to above. */ @@ -3034,7 +3002,7 @@ index eeaac39..cb06531 100644 { const struct tcp_sock *tp = tcp_sk(sk); /* Old crap is replaced with new one. 8) -@@ -2914,7 +2915,7 @@ static inline bool tcp_ack_update_rtt(struct sock *sk, const int flag, +@@ -2909,7 +2910,7 @@ return false; tcp_rtt_estimator(sk, seq_rtt); @@ -3043,7 +3011,7 @@ index eeaac39..cb06531 100644 /* RFC6298: only reset backoff on valid RTT measurement. */ inet_csk(sk)->icsk_backoff = 0; -@@ -2998,7 +2999,7 @@ void tcp_resume_early_retransmit(struct sock *sk) +@@ -2993,7 +2994,7 @@ } /* If we get here, the whole TSO packet has not been acked. */ @@ -3052,7 +3020,7 @@ index eeaac39..cb06531 100644 { struct tcp_sock *tp = tcp_sk(sk); u32 packets_acked; -@@ -3092,6 +3093,8 @@ static int tcp_clean_rtx_queue(struct sock *sk, int prior_fackets, +@@ -3088,6 +3089,8 @@ */ if (!(scb->tcp_flags & TCPHDR_SYN)) { flag |= FLAG_DATA_ACKED; @@ -3061,7 +3029,7 @@ index eeaac39..cb06531 100644 } else { flag |= FLAG_SYN_ACKED; tp->retrans_stamp = 0; -@@ -3194,7 +3197,7 @@ static int tcp_clean_rtx_queue(struct sock *sk, int prior_fackets, +@@ -3190,7 +3193,7 @@ return flag; } @@ -3070,7 +3038,7 @@ index eeaac39..cb06531 100644 { const struct tcp_sock *tp = tcp_sk(sk); struct inet_connection_sock *icsk = inet_csk(sk); -@@ -3241,9 +3244,8 @@ static inline bool tcp_may_raise_cwnd(const struct sock *sk, const int flag) +@@ -3237,9 +3240,8 @@ /* Check that window update is acceptable. * The function assumes that snd_una<=ack<=snd_next. */ @@ -3082,7 +3050,7 @@ index eeaac39..cb06531 100644 { return after(ack, tp->snd_una) || after(ack_seq, tp->snd_wl1) || -@@ -3362,7 +3364,7 @@ static void tcp_process_tlp_ack(struct sock *sk, u32 ack, int flag) +@@ -3358,7 +3360,7 @@ } /* This routine deals with incoming acks, but not outgoing ones. */ @@ -3091,7 +3059,7 @@ index eeaac39..cb06531 100644 { struct inet_connection_sock *icsk = inet_csk(sk); struct tcp_sock *tp = tcp_sk(sk); -@@ -3455,6 +3457,16 @@ static int tcp_ack(struct sock *sk, const struct sk_buff *skb, int flag) +@@ -3453,6 +3455,16 @@ flag |= tcp_clean_rtx_queue(sk, prior_fackets, prior_snd_una, sack_rtt); acked -= tp->packets_out; @@ -3108,7 +3076,7 @@ index eeaac39..cb06531 100644 /* Advance cwnd if state allows */ if (tcp_may_raise_cwnd(sk, flag)) tcp_cong_avoid(sk, ack, acked, prior_in_flight); -@@ -3519,8 +3531,9 @@ old_ack: +@@ -3517,8 +3529,9 @@ * the fast version below fails. */ void tcp_parse_options(const struct sk_buff *skb, @@ -3120,7 +3088,7 @@ index eeaac39..cb06531 100644 { const unsigned char *ptr; const struct tcphdr *th = tcp_hdr(skb); -@@ -3603,6 +3616,10 @@ void tcp_parse_options(const struct sk_buff *skb, +@@ -3601,6 +3614,10 @@ */ break; #endif @@ -3131,7 +3099,7 @@ index eeaac39..cb06531 100644 case TCPOPT_EXP: /* Fast Open option shares code 254 using a * 16 bits magic number. It's valid only in -@@ -3664,8 +3681,8 @@ static bool tcp_fast_parse_options(const struct sk_buff *skb, +@@ -3662,8 +3679,8 @@ if (tcp_parse_aligned_timestamp(tp, th)) return true; } @@ -3142,7 +3110,7 @@ index eeaac39..cb06531 100644 if (tp->rx_opt.saw_tstamp && tp->rx_opt.rcv_tsecr) tp->rx_opt.rcv_tsecr -= tp->tsoffset; -@@ -3838,6 +3855,8 @@ static void tcp_fin(struct sock *sk) +@@ -3836,6 +3853,8 @@ dst = __sk_dst_get(sk); if (!dst || !dst_metric(dst, RTAX_QUICKACK)) inet_csk(sk)->icsk_ack.pingpong = 1; @@ -3151,7 +3119,7 @@ index eeaac39..cb06531 100644 break; case TCP_CLOSE_WAIT: -@@ -3859,6 +3878,13 @@ static void tcp_fin(struct sock *sk) +@@ -3857,6 +3876,13 @@ tcp_set_state(sk, TCP_CLOSING); break; case TCP_FIN_WAIT2: @@ -3165,7 +3133,7 @@ index eeaac39..cb06531 100644 /* Received a FIN -- send ACK and enter TIME_WAIT. */ tcp_send_ack(sk); tcp_time_wait(sk, TCP_TIME_WAIT, 0); -@@ -3883,6 +3909,10 @@ static void tcp_fin(struct sock *sk) +@@ -3881,6 +3907,10 @@ if (!sock_flag(sk, SOCK_DEAD)) { sk->sk_state_change(sk); @@ -3176,7 +3144,7 @@ index eeaac39..cb06531 100644 /* Do not send POLL_HUP for half duplex close. */ if (sk->sk_shutdown == SHUTDOWN_MASK || sk->sk_state == TCP_CLOSE) -@@ -4080,7 +4110,11 @@ static void tcp_ofo_queue(struct sock *sk) +@@ -4078,7 +4108,11 @@ tcp_dsack_extend(sk, TCP_SKB_CB(skb)->seq, dsack); } @@ -3189,7 +3157,7 @@ index eeaac39..cb06531 100644 SOCK_DEBUG(sk, "ofo packet was already received\n"); __skb_unlink(skb, &tp->out_of_order_queue); __kfree_skb(skb); -@@ -4104,6 +4138,9 @@ static int tcp_prune_queue(struct sock *sk); +@@ -4102,6 +4136,9 @@ static int tcp_try_rmem_schedule(struct sock *sk, struct sk_buff *skb, unsigned int size) { @@ -3199,7 +3167,7 @@ index eeaac39..cb06531 100644 if (atomic_read(&sk->sk_rmem_alloc) > sk->sk_rcvbuf || !sk_rmem_schedule(sk, skb, size)) { -@@ -4134,15 +4171,16 @@ static int tcp_try_rmem_schedule(struct sock *sk, struct sk_buff *skb, +@@ -4132,15 +4169,16 @@ * Better try to coalesce them right now to avoid future collapses. * Returns true if caller should free @from instead of queueing it */ @@ -3220,7 +3188,7 @@ index eeaac39..cb06531 100644 if (tcp_hdr(from)->fin) return false; -@@ -4232,7 +4270,9 @@ static void tcp_data_queue_ofo(struct sock *sk, struct sk_buff *skb) +@@ -4230,7 +4268,9 @@ /* Do skb overlap to previous one? */ if (skb1 && before(seq, TCP_SKB_CB(skb1)->end_seq)) { @@ -3231,7 +3199,7 @@ index eeaac39..cb06531 100644 /* All the bits are present. Drop. */ NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPOFOMERGE); __kfree_skb(skb); -@@ -4270,6 +4310,9 @@ static void tcp_data_queue_ofo(struct sock *sk, struct sk_buff *skb) +@@ -4268,6 +4308,9 @@ end_seq); break; } @@ -3241,7 +3209,7 @@ index eeaac39..cb06531 100644 __skb_unlink(skb1, &tp->out_of_order_queue); tcp_dsack_extend(sk, TCP_SKB_CB(skb1)->seq, TCP_SKB_CB(skb1)->end_seq); -@@ -4287,8 +4330,8 @@ end: +@@ -4285,8 +4328,8 @@ } } @@ -3252,7 +3220,7 @@ index eeaac39..cb06531 100644 { int eaten; struct sk_buff *tail = skb_peek_tail(&sk->sk_receive_queue); -@@ -4350,7 +4393,10 @@ static void tcp_data_queue(struct sock *sk, struct sk_buff *skb) +@@ -4348,7 +4391,10 @@ int eaten = -1; bool fragstolen = false; @@ -3264,7 +3232,7 @@ index eeaac39..cb06531 100644 goto drop; skb_dst_drop(skb); -@@ -4396,7 +4442,7 @@ queue_and_out: +@@ -4394,7 +4440,7 @@ eaten = tcp_queue_rcv(sk, skb, 0, &fragstolen); } tp->rcv_nxt = TCP_SKB_CB(skb)->end_seq; @@ -3273,7 +3241,7 @@ index eeaac39..cb06531 100644 tcp_event_data_recv(sk, skb); if (th->fin) tcp_fin(sk); -@@ -4418,7 +4464,11 @@ queue_and_out: +@@ -4416,7 +4462,11 @@ if (eaten > 0) kfree_skb_partial(skb, fragstolen); @@ -3286,7 +3254,7 @@ index eeaac39..cb06531 100644 sk->sk_data_ready(sk, 0); return; } -@@ -4470,6 +4520,8 @@ static struct sk_buff *tcp_collapse_one(struct sock *sk, struct sk_buff *skb, +@@ -4468,6 +4518,8 @@ next = skb_queue_next(list, skb); __skb_unlink(skb, list); @@ -3295,7 +3263,7 @@ index eeaac39..cb06531 100644 __kfree_skb(skb); NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPRCVCOLLAPSED); -@@ -4642,6 +4694,18 @@ static bool tcp_prune_ofo_queue(struct sock *sk) +@@ -4640,6 +4692,18 @@ struct tcp_sock *tp = tcp_sk(sk); bool res = false; @@ -3314,7 +3282,7 @@ index eeaac39..cb06531 100644 if (!skb_queue_empty(&tp->out_of_order_queue)) { NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_OFOPRUNED); __skb_queue_purge(&tp->out_of_order_queue); -@@ -4731,7 +4795,7 @@ void tcp_cwnd_application_limited(struct sock *sk) +@@ -4729,7 +4793,7 @@ tp->snd_cwnd_stamp = tcp_time_stamp; } @@ -3323,7 +3291,7 @@ index eeaac39..cb06531 100644 { const struct tcp_sock *tp = tcp_sk(sk); -@@ -4766,7 +4830,7 @@ static void tcp_new_space(struct sock *sk) +@@ -4764,7 +4828,7 @@ { struct tcp_sock *tp = tcp_sk(sk); @@ -3332,7 +3300,7 @@ index eeaac39..cb06531 100644 tcp_sndbuf_expand(sk); tp->snd_cwnd_stamp = tcp_time_stamp; } -@@ -4778,8 +4842,9 @@ static void tcp_check_space(struct sock *sk) +@@ -4776,8 +4840,9 @@ { if (sock_flag(sk, SOCK_QUEUE_SHRUNK)) { sock_reset_flag(sk, SOCK_QUEUE_SHRUNK); @@ -3344,7 +3312,7 @@ index eeaac39..cb06531 100644 tcp_new_space(sk); } } -@@ -4802,7 +4867,7 @@ static void __tcp_ack_snd_check(struct sock *sk, int ofo_possible) +@@ -4800,7 +4865,7 @@ /* ... and right edge of window advances far enough. * (tcp_recvmsg() will send ACK otherwise). Or... */ @@ -3353,7 +3321,7 @@ index eeaac39..cb06531 100644 /* We ACK each frame or... */ tcp_in_quickack_mode(sk) || /* We have out of order data. */ -@@ -4904,6 +4969,10 @@ static void tcp_urg(struct sock *sk, struct sk_buff *skb, const struct tcphdr *t +@@ -4902,6 +4967,10 @@ { struct tcp_sock *tp = tcp_sk(sk); @@ -3364,7 +3332,7 @@ index eeaac39..cb06531 100644 /* Check if we get a new urgent pointer - normally not. */ if (th->urg) tcp_check_urg(sk, th); -@@ -4971,8 +5040,7 @@ static inline bool tcp_checksum_complete_user(struct sock *sk, +@@ -4969,8 +5038,7 @@ } #ifdef CONFIG_NET_DMA @@ -3374,7 +3342,7 @@ index eeaac39..cb06531 100644 { struct tcp_sock *tp = tcp_sk(sk); int chunk = skb->len - hlen; -@@ -5081,9 +5149,15 @@ syn_challenge: +@@ -5079,9 +5147,15 @@ goto discard; } @@ -3390,7 +3358,7 @@ index eeaac39..cb06531 100644 __kfree_skb(skb); return false; } -@@ -5135,6 +5209,10 @@ void tcp_rcv_established(struct sock *sk, struct sk_buff *skb, +@@ -5133,6 +5207,10 @@ tp->rx_opt.saw_tstamp = 0; @@ -3401,7 +3369,7 @@ index eeaac39..cb06531 100644 /* pred_flags is 0xS?10 << 16 + snd_wnd * if header_prediction is to be made * 'S' will always be tp->tcp_header_len >> 2 -@@ -5349,7 +5427,7 @@ void tcp_finish_connect(struct sock *sk, struct sk_buff *skb) +@@ -5347,7 +5425,7 @@ */ tp->lsndtime = tcp_time_stamp; @@ -3410,7 +3378,7 @@ index eeaac39..cb06531 100644 if (sock_flag(sk, SOCK_KEEPOPEN)) inet_csk_reset_keepalive_timer(sk, keepalive_time_when(tp)); -@@ -5379,7 +5457,7 @@ static bool tcp_rcv_fastopen_synack(struct sock *sk, struct sk_buff *synack, +@@ -5377,7 +5455,7 @@ /* Get original SYNACK MSS value if user MSS sets mss_clamp */ tcp_clear_options(&opt); opt.user_mss = opt.mss_clamp = 0; @@ -3419,7 +3387,7 @@ index eeaac39..cb06531 100644 mss = opt.mss_clamp; } -@@ -5414,8 +5492,11 @@ static int tcp_rcv_synsent_state_process(struct sock *sk, struct sk_buff *skb, +@@ -5412,8 +5490,11 @@ struct tcp_sock *tp = tcp_sk(sk); struct tcp_fastopen_cookie foc = { .len = -1 }; int saved_clamp = tp->rx_opt.mss_clamp; @@ -3432,7 +3400,7 @@ index eeaac39..cb06531 100644 if (tp->rx_opt.saw_tstamp && tp->rx_opt.rcv_tsecr) tp->rx_opt.rcv_tsecr -= tp->tsoffset; -@@ -5462,6 +5543,21 @@ static int tcp_rcv_synsent_state_process(struct sock *sk, struct sk_buff *skb, +@@ -5460,6 +5541,21 @@ if (!th->syn) goto discard_and_undo; @@ -3454,7 +3422,7 @@ index eeaac39..cb06531 100644 /* rfc793: * "If the SYN bit is on ... * are acceptable then ... -@@ -5474,6 +5570,15 @@ static int tcp_rcv_synsent_state_process(struct sock *sk, struct sk_buff *skb, +@@ -5472,6 +5568,15 @@ tcp_init_wl(tp, TCP_SKB_CB(skb)->seq); tcp_ack(sk, skb, FLAG_SLOWPATH); @@ -3470,7 +3438,7 @@ index eeaac39..cb06531 100644 /* Ok.. it's good. Set up sequence numbers and * move to established. */ -@@ -5500,6 +5605,11 @@ static int tcp_rcv_synsent_state_process(struct sock *sk, struct sk_buff *skb, +@@ -5498,6 +5603,11 @@ tp->tcp_header_len = sizeof(struct tcphdr); } @@ -3482,7 +3450,7 @@ index eeaac39..cb06531 100644 if (tcp_is_sack(tp) && sysctl_tcp_fack) tcp_enable_fack(tp); -@@ -5520,7 +5630,9 @@ static int tcp_rcv_synsent_state_process(struct sock *sk, struct sk_buff *skb, +@@ -5518,7 +5628,9 @@ tcp_rcv_fastopen_synack(sk, skb, &foc)) return -1; @@ -3493,7 +3461,7 @@ index eeaac39..cb06531 100644 icsk->icsk_accept_queue.rskq_defer_accept || icsk->icsk_ack.pingpong) { /* Save one ACK. Data will be ready after -@@ -5562,6 +5674,7 @@ discard: +@@ -5560,6 +5672,7 @@ tcp_paws_reject(&tp->rx_opt, 0)) goto discard_and_undo; @@ -3501,7 +3469,7 @@ index eeaac39..cb06531 100644 if (th->syn) { /* We see SYN without ACK. It is attempt of * simultaneous connect with crossed SYNs. -@@ -5578,6 +5691,11 @@ discard: +@@ -5576,6 +5689,11 @@ tp->tcp_header_len = sizeof(struct tcphdr); } @@ -3513,7 +3481,7 @@ index eeaac39..cb06531 100644 tp->rcv_nxt = TCP_SKB_CB(skb)->seq + 1; tp->rcv_wup = TCP_SKB_CB(skb)->seq + 1; -@@ -5636,6 +5754,7 @@ reset_and_undo: +@@ -5634,6 +5752,7 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb, const struct tcphdr *th, unsigned int len) @@ -3521,7 +3489,7 @@ index eeaac39..cb06531 100644 { struct tcp_sock *tp = tcp_sk(sk); struct inet_connection_sock *icsk = inet_csk(sk); -@@ -5687,6 +5806,10 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb, +@@ -5685,6 +5804,10 @@ case TCP_SYN_SENT: queued = tcp_rcv_synsent_state_process(sk, skb, th, len); @@ -3532,7 +3500,7 @@ index eeaac39..cb06531 100644 if (queued >= 0) return queued; -@@ -5694,6 +5817,8 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb, +@@ -5692,6 +5815,8 @@ tcp_urg(sk, skb, th); __kfree_skb(skb); tcp_data_snd_check(sk); @@ -3541,7 +3509,7 @@ index eeaac39..cb06531 100644 return 0; } -@@ -5736,7 +5861,7 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb, +@@ -5734,7 +5859,7 @@ tcp_mtup_init(sk); tp->copied_seq = tp->rcv_nxt; @@ -3550,7 +3518,7 @@ index eeaac39..cb06531 100644 } smp_mb(); tcp_set_state(sk, TCP_ESTABLISHED); -@@ -5756,6 +5881,8 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb, +@@ -5754,6 +5879,8 @@ if (tp->rx_opt.tstamp_ok) tp->advmss -= TCPOLEN_TSTAMP_ALIGNED; @@ -3559,7 +3527,7 @@ index eeaac39..cb06531 100644 if (req) { /* Re-arm the timer because data may have been sent out. -@@ -5777,6 +5904,12 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb, +@@ -5775,6 +5902,12 @@ tcp_initialize_rcv_mss(sk); tcp_fast_path_on(tp); @@ -3572,7 +3540,7 @@ index eeaac39..cb06531 100644 break; case TCP_FIN_WAIT1: { -@@ -5828,7 +5961,8 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb, +@@ -5826,7 +5959,8 @@ tmo = tcp_fin_time(sk); if (tmo > TCP_TIMEWAIT_LEN) { inet_csk_reset_keepalive_timer(sk, tmo - TCP_TIMEWAIT_LEN); @@ -3582,7 +3550,7 @@ index eeaac39..cb06531 100644 /* Bad case. We could lose such FIN otherwise. * It is not a big problem, but it looks confusing * and not so rare event. We still can lose it now, -@@ -5857,6 +5991,9 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb, +@@ -5855,6 +5989,9 @@ goto discard; } break; @@ -3592,7 +3560,7 @@ index eeaac39..cb06531 100644 } /* step 6: check the URG bit */ -@@ -5877,7 +6014,11 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb, +@@ -5875,7 +6012,11 @@ */ if (sk->sk_shutdown & RCV_SHUTDOWN) { if (TCP_SKB_CB(skb)->end_seq != TCP_SKB_CB(skb)->seq && @@ -3605,10 +3573,9 @@ index eeaac39..cb06531 100644 NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPABORTONDATA); tcp_reset(sk); return 1; -diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c -index 1e4eac7..5891fa6 100644 ---- a/net/ipv4/tcp_ipv4.c -+++ b/net/ipv4/tcp_ipv4.c +diff -Nur linux-3.14.45.orig/net/ipv4/tcp_ipv4.c linux-3.14.45/net/ipv4/tcp_ipv4.c +--- linux-3.14.45.orig/net/ipv4/tcp_ipv4.c 2015-06-23 02:01:36.000000000 +0200 ++++ linux-3.14.45/net/ipv4/tcp_ipv4.c 2015-06-24 14:15:48.883862476 +0200 @@ -67,6 +67,8 @@ #include <net/icmp.h> #include <net/inet_hashtables.h> @@ -3618,7 +3585,7 @@ index 1e4eac7..5891fa6 100644 #include <net/transp_v6.h> #include <net/ipv6.h> #include <net/inet_common.h> -@@ -99,7 +101,7 @@ static int tcp_v4_md5_hash_hdr(char *md5_hash, const struct tcp_md5sig_key *key, +@@ -99,7 +101,7 @@ struct inet_hashinfo tcp_hashinfo; EXPORT_SYMBOL(tcp_hashinfo); @@ -3627,7 +3594,7 @@ index 1e4eac7..5891fa6 100644 { return secure_tcp_sequence_number(ip_hdr(skb)->daddr, ip_hdr(skb)->saddr, -@@ -334,7 +336,7 @@ void tcp_v4_err(struct sk_buff *icmp_skb, u32 info) +@@ -335,7 +337,7 @@ struct inet_sock *inet; const int type = icmp_hdr(icmp_skb)->type; const int code = icmp_hdr(icmp_skb)->code; @@ -3636,7 +3603,7 @@ index 1e4eac7..5891fa6 100644 struct sk_buff *skb; struct request_sock *req; __u32 seq; -@@ -358,13 +360,19 @@ void tcp_v4_err(struct sk_buff *icmp_skb, u32 info) +@@ -359,13 +361,19 @@ return; } @@ -3658,7 +3625,7 @@ index 1e4eac7..5891fa6 100644 if (!(type == ICMP_DEST_UNREACH && code == ICMP_FRAG_NEEDED)) NET_INC_STATS_BH(net, LINUX_MIB_LOCKDROPPEDICMPS); } -@@ -377,7 +385,6 @@ void tcp_v4_err(struct sk_buff *icmp_skb, u32 info) +@@ -378,7 +386,6 @@ } icsk = inet_csk(sk); @@ -3666,7 +3633,7 @@ index 1e4eac7..5891fa6 100644 req = tp->fastopen_rsk; seq = ntohl(th->seq); if (sk->sk_state != TCP_LISTEN && -@@ -411,11 +418,13 @@ void tcp_v4_err(struct sk_buff *icmp_skb, u32 info) +@@ -412,11 +419,13 @@ goto out; tp->mtu_info = info; @@ -3681,7 +3648,7 @@ index 1e4eac7..5891fa6 100644 } goto out; } -@@ -431,7 +440,7 @@ void tcp_v4_err(struct sk_buff *icmp_skb, u32 info) +@@ -432,7 +441,7 @@ /* XXX (TFO) - revisit the following logic for TFO */ @@ -3690,7 +3657,7 @@ index 1e4eac7..5891fa6 100644 break; icsk->icsk_backoff--; -@@ -473,7 +482,7 @@ void tcp_v4_err(struct sk_buff *icmp_skb, u32 info) +@@ -474,7 +483,7 @@ switch (sk->sk_state) { struct request_sock *req, **prev; case TCP_LISTEN: @@ -3699,7 +3666,7 @@ index 1e4eac7..5891fa6 100644 goto out; req = inet_csk_search_req(sk, &prev, th->dest, -@@ -506,7 +515,7 @@ void tcp_v4_err(struct sk_buff *icmp_skb, u32 info) +@@ -507,7 +516,7 @@ It can f.e. if SYNs crossed, or Fast Open. */ @@ -3708,7 +3675,7 @@ index 1e4eac7..5891fa6 100644 sk->sk_err = err; sk->sk_error_report(sk); -@@ -535,7 +544,7 @@ void tcp_v4_err(struct sk_buff *icmp_skb, u32 info) +@@ -536,7 +545,7 @@ */ inet = inet_sk(sk); @@ -3717,7 +3684,7 @@ index 1e4eac7..5891fa6 100644 sk->sk_err = err; sk->sk_error_report(sk); } else { /* Only an error on timeout */ -@@ -543,7 +552,7 @@ void tcp_v4_err(struct sk_buff *icmp_skb, u32 info) +@@ -544,7 +553,7 @@ } out: @@ -3726,7 +3693,7 @@ index 1e4eac7..5891fa6 100644 sock_put(sk); } -@@ -585,7 +594,7 @@ EXPORT_SYMBOL(tcp_v4_send_check); +@@ -586,7 +595,7 @@ * Exception: precedence violation. We do not implement it in any case. */ @@ -3735,7 +3702,7 @@ index 1e4eac7..5891fa6 100644 { const struct tcphdr *th = tcp_hdr(skb); struct { -@@ -709,10 +718,10 @@ release_sk1: +@@ -711,10 +720,10 @@ outside socket context is ugly, certainly. What can I do? */ @@ -3748,7 +3715,7 @@ index 1e4eac7..5891fa6 100644 { const struct tcphdr *th = tcp_hdr(skb); struct { -@@ -721,6 +730,10 @@ static void tcp_v4_send_ack(struct sk_buff *skb, u32 seq, u32 ack, +@@ -723,6 +732,10 @@ #ifdef CONFIG_TCP_MD5SIG + (TCPOLEN_MD5SIG_ALIGNED >> 2) #endif @@ -3759,7 +3726,7 @@ index 1e4eac7..5891fa6 100644 ]; } rep; struct ip_reply_arg arg; -@@ -765,6 +778,21 @@ static void tcp_v4_send_ack(struct sk_buff *skb, u32 seq, u32 ack, +@@ -767,6 +780,21 @@ ip_hdr(skb)->daddr, &rep.th); } #endif @@ -3781,7 +3748,7 @@ index 1e4eac7..5891fa6 100644 arg.flags = reply_flags; arg.csum = csum_tcpudp_nofold(ip_hdr(skb)->daddr, ip_hdr(skb)->saddr, /* XXX */ -@@ -783,36 +811,44 @@ static void tcp_v4_timewait_ack(struct sock *sk, struct sk_buff *skb) +@@ -786,36 +814,44 @@ { struct inet_timewait_sock *tw = inet_twsk(sk); struct tcp_timewait_sock *tcptw = tcp_twsk(sk); @@ -3831,7 +3798,7 @@ index 1e4eac7..5891fa6 100644 } /* -@@ -820,9 +856,9 @@ static void tcp_v4_reqsk_send_ack(struct sock *sk, struct sk_buff *skb, +@@ -823,9 +859,9 @@ * This still operates on a request_sock only, not on a big * socket. */ @@ -3844,7 +3811,7 @@ index 1e4eac7..5891fa6 100644 { const struct inet_request_sock *ireq = inet_rsk(req); struct flowi4 fl4; -@@ -850,7 +886,7 @@ static int tcp_v4_send_synack(struct sock *sk, struct dst_entry *dst, +@@ -853,7 +889,7 @@ return err; } @@ -3853,7 +3820,7 @@ index 1e4eac7..5891fa6 100644 { int res = tcp_v4_send_synack(sk, NULL, req, 0); -@@ -862,7 +898,7 @@ static int tcp_v4_rtx_synack(struct sock *sk, struct request_sock *req) +@@ -865,7 +901,7 @@ /* * IPv4 request_sock destructor. */ @@ -3862,7 +3829,7 @@ index 1e4eac7..5891fa6 100644 { kfree(inet_rsk(req)->opt); } -@@ -902,7 +938,7 @@ EXPORT_SYMBOL(tcp_syn_flood_action); +@@ -905,7 +941,7 @@ /* * Save and compile IPv4 options into the request_sock if needed. */ @@ -3871,7 +3838,7 @@ index 1e4eac7..5891fa6 100644 { const struct ip_options *opt = &(IPCB(skb)->opt); struct ip_options_rcu *dopt = NULL; -@@ -1254,7 +1290,7 @@ struct request_sock_ops tcp_request_sock_ops __read_mostly = { +@@ -1257,7 +1293,7 @@ }; #ifdef CONFIG_TCP_MD5SIG @@ -3880,7 +3847,7 @@ index 1e4eac7..5891fa6 100644 .md5_lookup = tcp_v4_reqsk_md5_lookup, .calc_md5_hash = tcp_v4_md5_hash_skb, }; -@@ -1412,7 +1448,7 @@ static int tcp_v4_conn_req_fastopen(struct sock *sk, +@@ -1415,7 +1451,7 @@ tcp_init_congestion_control(child); tcp_mtup_init(child); tcp_init_metrics(child); @@ -3889,7 +3856,7 @@ index 1e4eac7..5891fa6 100644 /* Queue the data carried in the SYN packet. We need to first * bump skb's refcnt because the caller will attempt to free it. -@@ -1444,6 +1480,7 @@ static int tcp_v4_conn_req_fastopen(struct sock *sk, +@@ -1447,6 +1483,7 @@ int tcp_v4_conn_request(struct sock *sk, struct sk_buff *skb) { struct tcp_options_received tmp_opt; @@ -3897,7 +3864,7 @@ index 1e4eac7..5891fa6 100644 struct request_sock *req; struct inet_request_sock *ireq; struct tcp_sock *tp = tcp_sk(sk); -@@ -1458,6 +1495,22 @@ int tcp_v4_conn_request(struct sock *sk, struct sk_buff *skb) +@@ -1461,6 +1498,22 @@ struct sk_buff *skb_synack; int do_fastopen; @@ -3920,7 +3887,7 @@ index 1e4eac7..5891fa6 100644 /* Never answer to SYNs send to broadcast or multicast */ if (skb_rtable(skb)->rt_flags & (RTCF_BROADCAST | RTCF_MULTICAST)) goto drop; -@@ -1483,7 +1536,22 @@ int tcp_v4_conn_request(struct sock *sk, struct sk_buff *skb) +@@ -1486,7 +1539,22 @@ goto drop; } @@ -3944,7 +3911,7 @@ index 1e4eac7..5891fa6 100644 if (!req) goto drop; -@@ -1491,17 +1559,15 @@ int tcp_v4_conn_request(struct sock *sk, struct sk_buff *skb) +@@ -1494,17 +1562,15 @@ tcp_rsk(req)->af_specific = &tcp_request_sock_ipv4_ops; #endif @@ -3965,7 +3932,7 @@ index 1e4eac7..5891fa6 100644 ireq = inet_rsk(req); ireq->ir_loc_addr = daddr; ireq->ir_rmt_addr = saddr; -@@ -1713,7 +1779,7 @@ put_and_exit: +@@ -1716,7 +1782,7 @@ } EXPORT_SYMBOL(tcp_v4_syn_recv_sock); @@ -3974,7 +3941,7 @@ index 1e4eac7..5891fa6 100644 { struct tcphdr *th = tcp_hdr(skb); const struct iphdr *iph = ip_hdr(skb); -@@ -1730,8 +1796,15 @@ static struct sock *tcp_v4_hnd_req(struct sock *sk, struct sk_buff *skb) +@@ -1733,8 +1799,15 @@ if (nsk) { if (nsk->sk_state != TCP_TIME_WAIT) { @@ -3990,7 +3957,7 @@ index 1e4eac7..5891fa6 100644 } inet_twsk_put(inet_twsk(nsk)); return NULL; -@@ -1788,6 +1861,9 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb) +@@ -1791,6 +1864,9 @@ goto discard; #endif @@ -4000,7 +3967,7 @@ index 1e4eac7..5891fa6 100644 if (sk->sk_state == TCP_ESTABLISHED) { /* Fast path */ struct dst_entry *dst = sk->sk_rx_dst; -@@ -1919,7 +1995,7 @@ bool tcp_prequeue(struct sock *sk, struct sk_buff *skb) +@@ -1922,7 +1998,7 @@ } else if (skb_queue_len(&tp->ucopy.prequeue) == 1) { wake_up_interruptible_sync_poll(sk_sleep(sk), POLLIN | POLLRDNORM | POLLRDBAND); @@ -4009,7 +3976,7 @@ index 1e4eac7..5891fa6 100644 inet_csk_reset_xmit_timer(sk, ICSK_TIME_DACK, (3 * tcp_rto_min(sk)) / 4, TCP_RTO_MAX); -@@ -1936,7 +2012,7 @@ int tcp_v4_rcv(struct sk_buff *skb) +@@ -1939,7 +2015,7 @@ { const struct iphdr *iph; const struct tcphdr *th; @@ -4018,7 +3985,7 @@ index 1e4eac7..5891fa6 100644 int ret; struct net *net = dev_net(skb->dev); -@@ -1969,18 +2045,42 @@ int tcp_v4_rcv(struct sk_buff *skb) +@@ -1972,18 +2048,42 @@ TCP_SKB_CB(skb)->end_seq = (TCP_SKB_CB(skb)->seq + th->syn + th->fin + skb->len - th->doff * 4); TCP_SKB_CB(skb)->ack_seq = ntohl(th->ack_seq); @@ -4064,7 +4031,7 @@ index 1e4eac7..5891fa6 100644 if (unlikely(iph->ttl < inet_sk(sk)->min_ttl)) { NET_INC_STATS_BH(net, LINUX_MIB_TCPMINTTLDROP); goto discard_and_relse; -@@ -1996,11 +2096,21 @@ process: +@@ -1999,11 +2099,21 @@ sk_mark_napi_id(sk, skb); skb->dev = NULL; @@ -4089,7 +4056,7 @@ index 1e4eac7..5891fa6 100644 if (!tp->ucopy.dma_chan && tp->ucopy.pinned_list) tp->ucopy.dma_chan = net_dma_find_channel(); if (tp->ucopy.dma_chan) -@@ -2008,16 +2118,16 @@ process: +@@ -2011,16 +2121,16 @@ else #endif { @@ -4111,7 +4078,7 @@ index 1e4eac7..5891fa6 100644 sock_put(sk); -@@ -2072,6 +2182,18 @@ do_time_wait: +@@ -2075,6 +2185,18 @@ sk = sk2; goto process; } @@ -4130,7 +4097,7 @@ index 1e4eac7..5891fa6 100644 /* Fall through to ACK */ } case TCP_TW_ACK: -@@ -2154,6 +2276,11 @@ void tcp_v4_destroy_sock(struct sock *sk) +@@ -2158,6 +2280,11 @@ tcp_cleanup_congestion_control(sk); @@ -4142,10 +4109,9 @@ index 1e4eac7..5891fa6 100644 /* Cleanup up the write buffer. */ tcp_write_queue_purge(sk); -diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c -index 7a436c5..72f9b8e 100644 ---- a/net/ipv4/tcp_minisocks.c -+++ b/net/ipv4/tcp_minisocks.c +diff -Nur linux-3.14.45.orig/net/ipv4/tcp_minisocks.c linux-3.14.45/net/ipv4/tcp_minisocks.c +--- linux-3.14.45.orig/net/ipv4/tcp_minisocks.c 2015-06-23 02:01:36.000000000 +0200 ++++ linux-3.14.45/net/ipv4/tcp_minisocks.c 2015-06-24 14:15:48.887862480 +0200 @@ -18,11 +18,13 @@ * Jorge Cwik, <jorge@laser.satlink.net> */ @@ -4160,7 +4126,7 @@ index 7a436c5..72f9b8e 100644 #include <net/tcp.h> #include <net/inet_common.h> #include <net/xfrm.h> -@@ -95,10 +97,13 @@ tcp_timewait_state_process(struct inet_timewait_sock *tw, struct sk_buff *skb, +@@ -95,10 +97,13 @@ struct tcp_options_received tmp_opt; struct tcp_timewait_sock *tcptw = tcp_twsk((struct sock *)tw); bool paws_reject = false; @@ -4175,7 +4141,7 @@ index 7a436c5..72f9b8e 100644 if (tmp_opt.saw_tstamp) { tmp_opt.rcv_tsecr -= tcptw->tw_ts_offset; -@@ -106,6 +111,11 @@ tcp_timewait_state_process(struct inet_timewait_sock *tw, struct sk_buff *skb, +@@ -106,6 +111,11 @@ tmp_opt.ts_recent_stamp = tcptw->tw_ts_recent_stamp; paws_reject = tcp_paws_reject(&tmp_opt, th->rst); } @@ -4187,7 +4153,7 @@ index 7a436c5..72f9b8e 100644 } if (tw->tw_substate == TCP_FIN_WAIT2) { -@@ -128,6 +138,16 @@ tcp_timewait_state_process(struct inet_timewait_sock *tw, struct sk_buff *skb, +@@ -128,6 +138,16 @@ if (!th->ack || !after(TCP_SKB_CB(skb)->end_seq, tcptw->tw_rcv_nxt) || TCP_SKB_CB(skb)->end_seq == TCP_SKB_CB(skb)->seq) { @@ -4204,7 +4170,7 @@ index 7a436c5..72f9b8e 100644 inet_twsk_put(tw); return TCP_TW_SUCCESS; } -@@ -270,6 +290,11 @@ void tcp_time_wait(struct sock *sk, int state, int timeo) +@@ -270,6 +290,11 @@ const struct tcp_sock *tp = tcp_sk(sk); bool recycle_ok = false; @@ -4216,7 +4182,7 @@ index 7a436c5..72f9b8e 100644 if (tcp_death_row.sysctl_tw_recycle && tp->rx_opt.ts_recent_stamp) recycle_ok = tcp_remember_stamp(sk); -@@ -290,6 +315,15 @@ void tcp_time_wait(struct sock *sk, int state, int timeo) +@@ -290,6 +315,15 @@ tcptw->tw_ts_recent_stamp = tp->rx_opt.ts_recent_stamp; tcptw->tw_ts_offset = tp->tsoffset; @@ -4232,7 +4198,7 @@ index 7a436c5..72f9b8e 100644 #if IS_ENABLED(CONFIG_IPV6) if (tw->tw_family == PF_INET6) { struct ipv6_pinfo *np = inet6_sk(sk); -@@ -347,15 +381,19 @@ void tcp_time_wait(struct sock *sk, int state, int timeo) +@@ -347,15 +381,19 @@ NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPTIMEWAITOVERFLOW); } @@ -4253,7 +4219,7 @@ index 7a436c5..72f9b8e 100644 if (twsk->tw_md5_key) kfree_rcu(twsk->tw_md5_key, rcu); #endif -@@ -392,6 +430,9 @@ struct sock *tcp_create_openreq_child(struct sock *sk, struct request_sock *req, +@@ -392,6 +430,9 @@ newtp->snd_sml = newtp->snd_una = newtp->snd_nxt = newtp->snd_up = treq->snt_isn + 1; @@ -4263,7 +4229,7 @@ index 7a436c5..72f9b8e 100644 tcp_prequeue_init(newtp); INIT_LIST_HEAD(&newtp->tsq_node); -@@ -436,7 +477,11 @@ struct sock *tcp_create_openreq_child(struct sock *sk, struct request_sock *req, +@@ -436,7 +477,11 @@ newtp->urg_data = 0; @@ -4276,7 +4242,7 @@ index 7a436c5..72f9b8e 100644 inet_csk_reset_keepalive_timer(newsk, keepalive_time_when(newtp)); -@@ -468,6 +513,8 @@ struct sock *tcp_create_openreq_child(struct sock *sk, struct request_sock *req, +@@ -468,6 +513,8 @@ newtp->rx_opt.ts_recent_stamp = 0; newtp->tcp_header_len = sizeof(struct tcphdr); } @@ -4285,7 +4251,7 @@ index 7a436c5..72f9b8e 100644 newtp->tsoffset = 0; #ifdef CONFIG_TCP_MD5SIG newtp->md5sig_info = NULL; /*XXX*/ -@@ -504,16 +551,20 @@ struct sock *tcp_check_req(struct sock *sk, struct sk_buff *skb, +@@ -504,16 +551,20 @@ bool fastopen) { struct tcp_options_received tmp_opt; @@ -4308,7 +4274,7 @@ index 7a436c5..72f9b8e 100644 if (tmp_opt.saw_tstamp) { tmp_opt.ts_recent = req->ts_recent; -@@ -552,7 +603,14 @@ struct sock *tcp_check_req(struct sock *sk, struct sk_buff *skb, +@@ -552,7 +603,14 @@ * * Reset timer after retransmitting SYNACK, similar to * the idea of fast retransmit in recovery. @@ -4323,7 +4289,7 @@ index 7a436c5..72f9b8e 100644 if (!inet_rtx_syn_ack(sk, req)) req->expires = min(TCP_TIMEOUT_INIT << req->num_timeout, TCP_RTO_MAX) + jiffies; -@@ -674,7 +732,20 @@ struct sock *tcp_check_req(struct sock *sk, struct sk_buff *skb, +@@ -674,7 +732,20 @@ /* While TCP_DEFER_ACCEPT is active, drop bare ACK. */ if (req->num_timeout < inet_csk(sk)->icsk_accept_queue.rskq_defer_accept && @@ -4345,7 +4311,7 @@ index 7a436c5..72f9b8e 100644 inet_rsk(req)->acked = 1; NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPDEFERACCEPTDROP); return NULL; -@@ -686,10 +757,29 @@ struct sock *tcp_check_req(struct sock *sk, struct sk_buff *skb, +@@ -686,10 +757,29 @@ * ESTABLISHED STATE. If it will be dropped after * socket is created, wait for troubles. */ @@ -4376,7 +4342,7 @@ index 7a436c5..72f9b8e 100644 inet_csk_reqsk_queue_unlink(sk, req, prev); inet_csk_reqsk_queue_removed(sk, req); -@@ -739,8 +829,9 @@ int tcp_child_process(struct sock *parent, struct sock *child, +@@ -739,8 +829,9 @@ { int ret = 0; int state = child->sk_state; @@ -4387,7 +4353,7 @@ index 7a436c5..72f9b8e 100644 ret = tcp_rcv_state_process(child, skb, tcp_hdr(skb), skb->len); /* Wakeup parent, send SIGIO */ -@@ -751,10 +842,14 @@ int tcp_child_process(struct sock *parent, struct sock *child, +@@ -751,10 +842,14 @@ * in main socket hash table and lock on listening * socket does not protect us more. */ @@ -4404,10 +4370,9 @@ index 7a436c5..72f9b8e 100644 sock_put(child); return ret; } -diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c -index 17a11e6..6b45057 100644 ---- a/net/ipv4/tcp_output.c -+++ b/net/ipv4/tcp_output.c +diff -Nur linux-3.14.45.orig/net/ipv4/tcp_output.c linux-3.14.45/net/ipv4/tcp_output.c +--- linux-3.14.45.orig/net/ipv4/tcp_output.c 2015-06-23 02:01:36.000000000 +0200 ++++ linux-3.14.45/net/ipv4/tcp_output.c 2015-06-24 14:15:48.887862480 +0200 @@ -36,6 +36,12 @@ #define pr_fmt(fmt) "TCP: " fmt @@ -4421,7 +4386,7 @@ index 17a11e6..6b45057 100644 #include <net/tcp.h> #include <linux/compiler.h> -@@ -72,7 +78,7 @@ static bool tcp_write_xmit(struct sock *sk, unsigned int mss_now, int nonagle, +@@ -72,7 +78,7 @@ int push_one, gfp_t gfp); /* Account for new data that has been sent to the network. */ @@ -4430,7 +4395,7 @@ index 17a11e6..6b45057 100644 { struct inet_connection_sock *icsk = inet_csk(sk); struct tcp_sock *tp = tcp_sk(sk); -@@ -211,7 +217,7 @@ u32 tcp_default_init_rwnd(u32 mss) +@@ -211,7 +217,7 @@ void tcp_select_initial_window(int __space, __u32 mss, __u32 *rcv_wnd, __u32 *window_clamp, int wscale_ok, __u8 *rcv_wscale, @@ -4439,7 +4404,7 @@ index 17a11e6..6b45057 100644 { unsigned int space = (__space < 0 ? 0 : __space); -@@ -266,11 +272,15 @@ EXPORT_SYMBOL(tcp_select_initial_window); +@@ -266,11 +272,15 @@ * value can be stuffed directly into th->window for an outgoing * frame. */ @@ -4458,7 +4423,7 @@ index 17a11e6..6b45057 100644 /* Never shrink the offered window */ if (new_win < cur_win) { -@@ -283,6 +293,7 @@ static u16 tcp_select_window(struct sock *sk) +@@ -283,6 +293,7 @@ */ new_win = ALIGN(cur_win, 1 << tp->rx_opt.rcv_wscale); } @@ -4466,7 +4431,7 @@ index 17a11e6..6b45057 100644 tp->rcv_wnd = new_win; tp->rcv_wup = tp->rcv_nxt; -@@ -361,7 +372,7 @@ static inline void TCP_ECN_send(struct sock *sk, struct sk_buff *skb, +@@ -361,7 +372,7 @@ /* Constructs common control bits of non-data skb. If SYN/FIN is present, * auto increment end seqno. */ @@ -4475,7 +4440,7 @@ index 17a11e6..6b45057 100644 { struct skb_shared_info *shinfo = skb_shinfo(skb); -@@ -381,7 +392,7 @@ static void tcp_init_nondata_skb(struct sk_buff *skb, u32 seq, u8 flags) +@@ -381,7 +392,7 @@ TCP_SKB_CB(skb)->end_seq = seq; } @@ -4484,7 +4449,7 @@ index 17a11e6..6b45057 100644 { return tp->snd_una != tp->snd_up; } -@@ -391,17 +402,7 @@ static inline bool tcp_urg_mode(const struct tcp_sock *tp) +@@ -391,17 +402,7 @@ #define OPTION_MD5 (1 << 2) #define OPTION_WSCALE (1 << 3) #define OPTION_FAST_OPEN_COOKIE (1 << 8) @@ -4503,7 +4468,7 @@ index 17a11e6..6b45057 100644 /* Write previously computed TCP options to the packet. * -@@ -417,7 +418,7 @@ struct tcp_out_options { +@@ -417,7 +418,7 @@ * (but it may well be that other scenarios fail similarly). */ static void tcp_options_write(__be32 *ptr, struct tcp_sock *tp, @@ -4512,7 +4477,7 @@ index 17a11e6..6b45057 100644 { u16 options = opts->options; /* mungable copy */ -@@ -500,6 +501,9 @@ static void tcp_options_write(__be32 *ptr, struct tcp_sock *tp, +@@ -500,6 +501,9 @@ } ptr += (foc->len + 3) >> 2; } @@ -4522,7 +4487,7 @@ index 17a11e6..6b45057 100644 } /* Compute TCP options for SYN packets. This is not the final -@@ -551,6 +555,8 @@ static unsigned int tcp_syn_options(struct sock *sk, struct sk_buff *skb, +@@ -551,6 +555,8 @@ if (unlikely(!(OPTION_TS & opts->options))) remaining -= TCPOLEN_SACKPERM_ALIGNED; } @@ -4531,7 +4496,7 @@ index 17a11e6..6b45057 100644 if (fastopen && fastopen->cookie.len >= 0) { u32 need = TCPOLEN_EXP_FASTOPEN_BASE + fastopen->cookie.len; -@@ -624,6 +630,9 @@ static unsigned int tcp_synack_options(struct sock *sk, +@@ -624,6 +630,9 @@ } } @@ -4541,7 +4506,7 @@ index 17a11e6..6b45057 100644 return MAX_TCP_OPTION_SPACE - remaining; } -@@ -657,16 +666,22 @@ static unsigned int tcp_established_options(struct sock *sk, struct sk_buff *skb +@@ -657,16 +666,22 @@ opts->tsecr = tp->rx_opt.ts_recent; size += TCPOLEN_TSTAMP_ALIGNED; } @@ -4571,7 +4536,7 @@ index 17a11e6..6b45057 100644 } return size; -@@ -714,7 +729,7 @@ static void tcp_tasklet_func(unsigned long data) +@@ -714,7 +729,7 @@ unsigned long flags; struct list_head *q, *n; struct tcp_sock *tp; @@ -4580,7 +4545,7 @@ index 17a11e6..6b45057 100644 local_irq_save(flags); list_splice_init(&tsq->head, &list); -@@ -725,15 +740,27 @@ static void tcp_tasklet_func(unsigned long data) +@@ -725,15 +740,27 @@ list_del(&tp->tsq_node); sk = (struct sock *)tp; @@ -4611,7 +4576,7 @@ index 17a11e6..6b45057 100644 clear_bit(TSQ_QUEUED, &tp->tsq_flags); sk_free(sk); -@@ -743,7 +770,10 @@ static void tcp_tasklet_func(unsigned long data) +@@ -743,7 +770,10 @@ #define TCP_DEFERRED_ALL ((1UL << TCP_TSQ_DEFERRED) | \ (1UL << TCP_WRITE_TIMER_DEFERRED) | \ (1UL << TCP_DELACK_TIMER_DEFERRED) | \ @@ -4623,8 +4588,8 @@ index 17a11e6..6b45057 100644 /** * tcp_release_cb - tcp release_sock() callback * @sk: socket -@@ -790,6 +820,13 @@ void tcp_release_cb(struct sock *sk) - sk->sk_prot->mtu_reduced(sk); +@@ -790,6 +820,13 @@ + inet_csk(sk)->icsk_af_ops->mtu_reduced(sk); __sock_put(sk); } + if (flags & (1UL << MPTCP_PATH_MANAGER)) { @@ -4637,7 +4602,7 @@ index 17a11e6..6b45057 100644 } EXPORT_SYMBOL(tcp_release_cb); -@@ -849,8 +886,8 @@ void tcp_wfree(struct sk_buff *skb) +@@ -849,8 +886,8 @@ * We are working here with either a clone of the original * SKB, or a fresh unique copy made by the retransmit engine. */ @@ -4648,7 +4613,7 @@ index 17a11e6..6b45057 100644 { const struct inet_connection_sock *icsk = inet_csk(sk); struct inet_sock *inet; -@@ -878,10 +915,28 @@ static int tcp_transmit_skb(struct sock *sk, struct sk_buff *skb, int clone_it, +@@ -878,10 +915,28 @@ NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPSPURIOUS_RTX_HOSTQUEUES); @@ -4680,7 +4645,7 @@ index 17a11e6..6b45057 100644 if (unlikely(!skb)) return -ENOBUFS; } -@@ -929,7 +984,7 @@ static int tcp_transmit_skb(struct sock *sk, struct sk_buff *skb, int clone_it, +@@ -929,7 +984,7 @@ */ th->window = htons(min(tp->rcv_wnd, 65535U)); } else { @@ -4689,7 +4654,7 @@ index 17a11e6..6b45057 100644 } th->check = 0; th->urg_ptr = 0; -@@ -945,7 +1000,7 @@ static int tcp_transmit_skb(struct sock *sk, struct sk_buff *skb, int clone_it, +@@ -945,7 +1000,7 @@ } } @@ -4698,7 +4663,7 @@ index 17a11e6..6b45057 100644 if (likely((tcb->tcp_flags & TCPHDR_SYN) == 0)) TCP_ECN_send(sk, skb, tcp_header_size); -@@ -984,7 +1039,7 @@ static int tcp_transmit_skb(struct sock *sk, struct sk_buff *skb, int clone_it, +@@ -984,7 +1039,7 @@ * NOTE: probe0 timer is not checked, do not forget tcp_push_pending_frames, * otherwise socket can stall. */ @@ -4707,7 +4672,7 @@ index 17a11e6..6b45057 100644 { struct tcp_sock *tp = tcp_sk(sk); -@@ -997,15 +1052,16 @@ static void tcp_queue_skb(struct sock *sk, struct sk_buff *skb) +@@ -997,15 +1052,16 @@ } /* Initialize TSO segments for a packet. */ @@ -4727,7 +4692,7 @@ index 17a11e6..6b45057 100644 /* Avoid the costly divide in the normal * non-TSO case. */ -@@ -1037,7 +1093,7 @@ static void tcp_adjust_fackets_out(struct sock *sk, const struct sk_buff *skb, +@@ -1037,7 +1093,7 @@ /* Pcount in the middle of the write queue got changed, we need to do various * tweaks to fix counters */ @@ -4736,7 +4701,7 @@ index 17a11e6..6b45057 100644 { struct tcp_sock *tp = tcp_sk(sk); -@@ -1078,6 +1134,9 @@ int tcp_fragment(struct sock *sk, struct sk_buff *skb, u32 len, +@@ -1078,6 +1134,9 @@ int nlen; u8 flags; @@ -4746,7 +4711,7 @@ index 17a11e6..6b45057 100644 if (WARN_ON(len > skb->len)) return -EINVAL; -@@ -1160,7 +1219,7 @@ int tcp_fragment(struct sock *sk, struct sk_buff *skb, u32 len, +@@ -1160,7 +1219,7 @@ * eventually). The difference is that pulled data not copied, but * immediately discarded. */ @@ -4755,7 +4720,7 @@ index 17a11e6..6b45057 100644 { struct skb_shared_info *shinfo; int i, k, eat; -@@ -1201,6 +1260,9 @@ static void __pskb_trim_head(struct sk_buff *skb, int len) +@@ -1201,6 +1260,9 @@ /* Remove acked data from a packet in the transmit queue. */ int tcp_trim_head(struct sock *sk, struct sk_buff *skb, u32 len) { @@ -4765,7 +4730,7 @@ index 17a11e6..6b45057 100644 if (skb_unclone(skb, GFP_ATOMIC)) return -ENOMEM; -@@ -1218,6 +1280,15 @@ int tcp_trim_head(struct sock *sk, struct sk_buff *skb, u32 len) +@@ -1218,6 +1280,15 @@ if (tcp_skb_pcount(skb) > 1) tcp_set_skb_tso_segs(sk, skb, tcp_skb_mss(skb)); @@ -4781,7 +4746,7 @@ index 17a11e6..6b45057 100644 return 0; } -@@ -1377,7 +1448,7 @@ unsigned int tcp_current_mss(struct sock *sk) +@@ -1377,7 +1448,7 @@ } /* Congestion window validation. (RFC2861) */ @@ -4790,7 +4755,7 @@ index 17a11e6..6b45057 100644 { struct tcp_sock *tp = tcp_sk(sk); -@@ -1411,8 +1482,8 @@ static bool tcp_minshall_check(const struct tcp_sock *tp) +@@ -1411,8 +1482,8 @@ * But we can avoid doing the divide again given we already have * skb_pcount = skb->len / mss_now */ @@ -4801,7 +4766,7 @@ index 17a11e6..6b45057 100644 { if (skb->len < tcp_skb_pcount(skb) * mss_now) tp->snd_sml = TCP_SKB_CB(skb)->end_seq; -@@ -1433,19 +1504,28 @@ static bool tcp_nagle_check(bool partial, const struct tcp_sock *tp, +@@ -1433,19 +1504,28 @@ (!nonagle && tp->packets_out && tcp_minshall_check(tp))); } /* Returns the portion of skb which can be sent right away */ @@ -4837,7 +4802,7 @@ index 17a11e6..6b45057 100644 return max_len; needed = min(skb->len, window); -@@ -1467,13 +1547,14 @@ static unsigned int tcp_mss_split_point(const struct sock *sk, +@@ -1467,13 +1547,14 @@ /* Can at least one segment of SKB be sent right now, according to the * congestion window rules? If so, return how many segments are allowed. */ @@ -4855,7 +4820,7 @@ index 17a11e6..6b45057 100644 tcp_skb_pcount(skb) == 1) return 1; -@@ -1489,8 +1570,8 @@ static inline unsigned int tcp_cwnd_test(const struct tcp_sock *tp, +@@ -1489,8 +1570,8 @@ * This must be invoked the first time we consider transmitting * SKB onto the wire. */ @@ -4866,7 +4831,7 @@ index 17a11e6..6b45057 100644 { int tso_segs = tcp_skb_pcount(skb); -@@ -1505,8 +1586,8 @@ static int tcp_init_tso_segs(const struct sock *sk, struct sk_buff *skb, +@@ -1505,8 +1586,8 @@ /* Return true if the Nagle test allows this packet to be * sent now. */ @@ -4877,7 +4842,7 @@ index 17a11e6..6b45057 100644 { /* Nagle rule does not apply to frames, which sit in the middle of the * write_queue (they have no chances to get new data). -@@ -1518,7 +1599,8 @@ static inline bool tcp_nagle_test(const struct tcp_sock *tp, const struct sk_buf +@@ -1518,7 +1599,8 @@ return true; /* Don't use the nagle rule for urgent data (or for the final FIN). */ @@ -4887,7 +4852,7 @@ index 17a11e6..6b45057 100644 return true; if (!tcp_nagle_check(skb->len < cur_mss, tp, cur_mss, nonagle)) -@@ -1528,9 +1610,8 @@ static inline bool tcp_nagle_test(const struct tcp_sock *tp, const struct sk_buf +@@ -1528,9 +1610,8 @@ } /* Does at least the first segment of SKB fit into the send window? */ @@ -4899,7 +4864,7 @@ index 17a11e6..6b45057 100644 { u32 end_seq = TCP_SKB_CB(skb)->end_seq; -@@ -1549,14 +1630,16 @@ static unsigned int tcp_snd_test(const struct sock *sk, struct sk_buff *skb, +@@ -1549,14 +1630,16 @@ { const struct tcp_sock *tp = tcp_sk(sk); unsigned int cwnd_quota; @@ -4919,7 +4884,7 @@ index 17a11e6..6b45057 100644 cwnd_quota = 0; return cwnd_quota; -@@ -1566,12 +1649,16 @@ static unsigned int tcp_snd_test(const struct sock *sk, struct sk_buff *skb, +@@ -1566,12 +1649,16 @@ bool tcp_may_send_now(struct sock *sk) { const struct tcp_sock *tp = tcp_sk(sk); @@ -4939,7 +4904,7 @@ index 17a11e6..6b45057 100644 } /* Trim TSO SKB to LEN bytes, put the remaining data into a new packet -@@ -1588,6 +1675,9 @@ static int tso_fragment(struct sock *sk, struct sk_buff *skb, unsigned int len, +@@ -1588,6 +1675,9 @@ int nlen = skb->len - len; u8 flags; @@ -4949,7 +4914,7 @@ index 17a11e6..6b45057 100644 /* All of a TSO frame must be composed of paged data. */ if (skb->len != skb->data_len) return tcp_fragment(sk, skb, len, mss_now); -@@ -1633,29 +1723,39 @@ static int tso_fragment(struct sock *sk, struct sk_buff *skb, unsigned int len, +@@ -1633,29 +1723,39 @@ * * This algorithm is from John Heffner. */ @@ -4994,7 +4959,7 @@ index 17a11e6..6b45057 100644 /* From in_flight test above, we know that cwnd > in_flight. */ cong_win = (tp->snd_cwnd - in_flight) * tp->mss_cache; -@@ -1668,7 +1768,7 @@ static bool tcp_tso_should_defer(struct sock *sk, struct sk_buff *skb) +@@ -1668,7 +1768,7 @@ goto send_now; /* Middle in queue won't get any more data, full sendable already? */ @@ -5003,7 +4968,7 @@ index 17a11e6..6b45057 100644 goto send_now; win_divisor = ACCESS_ONCE(sysctl_tcp_tso_win_divisor); -@@ -1694,13 +1794,13 @@ static bool tcp_tso_should_defer(struct sock *sk, struct sk_buff *skb) +@@ -1694,13 +1794,13 @@ /* Ok, it looks like it is advisable to defer. * Do not rearm the timer if already set to not break TCP ACK clocking. */ @@ -5020,7 +4985,7 @@ index 17a11e6..6b45057 100644 return false; } -@@ -1713,7 +1813,7 @@ send_now: +@@ -1713,7 +1813,7 @@ * 1 if a probe was sent, * -1 otherwise */ @@ -5029,7 +4994,7 @@ index 17a11e6..6b45057 100644 { struct tcp_sock *tp = tcp_sk(sk); struct inet_connection_sock *icsk = inet_csk(sk); -@@ -1858,6 +1958,9 @@ static bool tcp_write_xmit(struct sock *sk, unsigned int mss_now, int nonagle, +@@ -1858,6 +1958,9 @@ int cwnd_quota; int result; @@ -5039,7 +5004,7 @@ index 17a11e6..6b45057 100644 sent_pkts = 0; if (!push_one) { -@@ -2313,6 +2416,10 @@ static void tcp_retrans_try_collapse(struct sock *sk, struct sk_buff *to, +@@ -2314,6 +2417,10 @@ if (TCP_SKB_CB(skb)->tcp_flags & TCPHDR_SYN) return; @@ -5050,7 +5015,7 @@ index 17a11e6..6b45057 100644 tcp_for_write_queue_from_safe(skb, tmp, sk) { if (!tcp_can_collapse(sk, skb)) break; -@@ -2410,10 +2517,26 @@ int __tcp_retransmit_skb(struct sock *sk, struct sk_buff *skb) +@@ -2411,10 +2518,26 @@ */ if (unlikely((NET_IP_ALIGN && ((unsigned long)skb->data & 3)) || skb_headroom(skb) >= 0xFFFF)) { @@ -5080,7 +5045,7 @@ index 17a11e6..6b45057 100644 } else { err = tcp_transmit_skb(sk, skb, 1, GFP_ATOMIC); } -@@ -2640,6 +2763,11 @@ void tcp_send_active_reset(struct sock *sk, gfp_t priority) +@@ -2665,6 +2788,11 @@ { struct sk_buff *skb; @@ -5092,7 +5057,7 @@ index 17a11e6..6b45057 100644 /* NOTE: No TCP options attached and we never retransmit this. */ skb = alloc_skb(MAX_TCP_HEADER, priority); if (!skb) { -@@ -2742,14 +2870,14 @@ struct sk_buff *tcp_make_synack(struct sock *sk, struct dst_entry *dst, +@@ -2767,14 +2895,14 @@ (req->window_clamp > tcp_full_space(sk) || req->window_clamp == 0)) req->window_clamp = tcp_full_space(sk); @@ -5111,7 +5076,7 @@ index 17a11e6..6b45057 100644 ireq->rcv_wscale = rcv_wscale; } -@@ -2785,7 +2913,7 @@ struct sk_buff *tcp_make_synack(struct sock *sk, struct dst_entry *dst, +@@ -2810,7 +2938,7 @@ /* RFC1323: The window in SYN & SYN/ACK segments is never scaled. */ th->window = htons(min(req->rcv_wnd, 65535U)); @@ -5120,7 +5085,7 @@ index 17a11e6..6b45057 100644 th->doff = (tcp_header_size >> 2); TCP_ADD_STATS(sock_net(sk), TCP_MIB_OUTSEGS, tcp_skb_pcount(skb)); -@@ -2839,13 +2967,13 @@ static void tcp_connect_init(struct sock *sk) +@@ -2866,13 +2994,13 @@ (tp->window_clamp > tcp_full_space(sk) || tp->window_clamp == 0)) tp->window_clamp = tcp_full_space(sk); @@ -5136,7 +5101,7 @@ index 17a11e6..6b45057 100644 tp->rx_opt.rcv_wscale = rcv_wscale; tp->rcv_ssthresh = tp->rcv_wnd; -@@ -2869,6 +2997,38 @@ static void tcp_connect_init(struct sock *sk) +@@ -2896,6 +3024,38 @@ inet_csk(sk)->icsk_rto = TCP_TIMEOUT_INIT; inet_csk(sk)->icsk_retransmits = 0; tcp_clear_retrans(tp); @@ -5175,7 +5140,7 @@ index 17a11e6..6b45057 100644 } static void tcp_connect_queue_skb(struct sock *sk, struct sk_buff *skb) -@@ -3111,6 +3271,7 @@ void tcp_send_ack(struct sock *sk) +@@ -3131,6 +3291,7 @@ TCP_SKB_CB(buff)->when = tcp_time_stamp; tcp_transmit_skb(sk, buff, 0, sk_gfp_atomic(sk, GFP_ATOMIC)); } @@ -5183,7 +5148,7 @@ index 17a11e6..6b45057 100644 /* This routine sends a packet with an out of date sequence * number. It assumes the other end will try to ack it. -@@ -3123,7 +3284,7 @@ void tcp_send_ack(struct sock *sk) +@@ -3143,7 +3304,7 @@ * one is with SEG.SEQ=SND.UNA to deliver urgent pointer, another is * out-of-date with SND.UNA-1 to probe window. */ @@ -5192,7 +5157,7 @@ index 17a11e6..6b45057 100644 { struct tcp_sock *tp = tcp_sk(sk); struct sk_buff *skb; -@@ -3161,6 +3322,9 @@ int tcp_write_wakeup(struct sock *sk) +@@ -3181,6 +3342,9 @@ if (sk->sk_state == TCP_CLOSE) return -1; @@ -5202,10 +5167,9 @@ index 17a11e6..6b45057 100644 if ((skb = tcp_send_head(sk)) != NULL && before(TCP_SKB_CB(skb)->seq, tcp_wnd_end(tp))) { int err; -diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c -index 64f0354..7b55b9a 100644 ---- a/net/ipv4/tcp_timer.c -+++ b/net/ipv4/tcp_timer.c +diff -Nur linux-3.14.45.orig/net/ipv4/tcp_timer.c linux-3.14.45/net/ipv4/tcp_timer.c +--- linux-3.14.45.orig/net/ipv4/tcp_timer.c 2015-06-23 02:01:36.000000000 +0200 ++++ linux-3.14.45/net/ipv4/tcp_timer.c 2015-06-24 14:15:48.891862483 +0200 @@ -20,6 +20,7 @@ #include <linux/module.h> @@ -5214,7 +5178,7 @@ index 64f0354..7b55b9a 100644 #include <net/tcp.h> int sysctl_tcp_syn_retries __read_mostly = TCP_SYN_RETRIES; -@@ -32,7 +33,7 @@ int sysctl_tcp_retries2 __read_mostly = TCP_RETR2; +@@ -32,7 +33,7 @@ int sysctl_tcp_orphan_retries __read_mostly; int sysctl_tcp_thin_linear_timeouts __read_mostly; @@ -5223,7 +5187,7 @@ index 64f0354..7b55b9a 100644 { sk->sk_err = sk->sk_err_soft ? : ETIMEDOUT; sk->sk_error_report(sk); -@@ -124,10 +125,8 @@ static void tcp_mtu_probing(struct inet_connection_sock *icsk, struct sock *sk) +@@ -124,10 +125,8 @@ * retransmissions with an initial RTO of TCP_RTO_MIN or TCP_TIMEOUT_INIT if * syn_set flag is set. */ @@ -5236,7 +5200,7 @@ index 64f0354..7b55b9a 100644 { unsigned int linear_backoff_thresh, start_ts; unsigned int rto_base = syn_set ? TCP_TIMEOUT_INIT : TCP_RTO_MIN; -@@ -153,7 +152,7 @@ static bool retransmits_timed_out(struct sock *sk, +@@ -153,7 +152,7 @@ } /* A write timeout has occurred. Process the after effects. */ @@ -5245,7 +5209,7 @@ index 64f0354..7b55b9a 100644 { struct inet_connection_sock *icsk = inet_csk(sk); struct tcp_sock *tp = tcp_sk(sk); -@@ -168,6 +167,10 @@ static int tcp_write_timeout(struct sock *sk) +@@ -168,6 +167,10 @@ } retry_until = icsk->icsk_syn_retries ? : sysctl_tcp_syn_retries; syn_set = true; @@ -5256,7 +5220,7 @@ index 64f0354..7b55b9a 100644 } else { if (retransmits_timed_out(sk, sysctl_tcp_retries1, 0, 0)) { /* Black hole detection */ -@@ -248,18 +251,22 @@ out: +@@ -248,18 +251,22 @@ static void tcp_delack_timer(unsigned long data) { struct sock *sk = (struct sock *)data; @@ -5283,7 +5247,7 @@ index 64f0354..7b55b9a 100644 sock_put(sk); } -@@ -421,6 +428,9 @@ void tcp_retransmit_timer(struct sock *sk) +@@ -421,6 +428,9 @@ tcp_enter_loss(sk, 0); @@ -5293,7 +5257,7 @@ index 64f0354..7b55b9a 100644 if (tcp_retransmit_skb(sk, tcp_write_queue_head(sk)) > 0) { /* Retransmission failed because of local congestion, * do not backoff. -@@ -471,6 +481,8 @@ out_reset_timer: +@@ -471,6 +481,8 @@ /* Use normal (exponential) backoff */ icsk->icsk_rto = min(icsk->icsk_rto << 1, TCP_RTO_MAX); } @@ -5302,7 +5266,7 @@ index 64f0354..7b55b9a 100644 inet_csk_reset_xmit_timer(sk, ICSK_TIME_RETRANS, icsk->icsk_rto, TCP_RTO_MAX); if (retransmits_timed_out(sk, sysctl_tcp_retries1 + 1, 0, 0)) __sk_dst_reset(sk); -@@ -502,7 +514,10 @@ void tcp_write_timer_handler(struct sock *sk) +@@ -502,7 +514,10 @@ break; case ICSK_TIME_RETRANS: icsk->icsk_pending = 0; @@ -5314,7 +5278,7 @@ index 64f0354..7b55b9a 100644 break; case ICSK_TIME_PROBE0: icsk->icsk_pending = 0; -@@ -517,16 +532,19 @@ out: +@@ -517,16 +532,19 @@ static void tcp_write_timer(unsigned long data) { struct sock *sk = (struct sock *)data; @@ -5337,7 +5301,7 @@ index 64f0354..7b55b9a 100644 sock_put(sk); } -@@ -563,11 +581,12 @@ static void tcp_keepalive_timer (unsigned long data) +@@ -563,11 +581,12 @@ struct sock *sk = (struct sock *) data; struct inet_connection_sock *icsk = inet_csk(sk); struct tcp_sock *tp = tcp_sk(sk); @@ -5352,7 +5316,7 @@ index 64f0354..7b55b9a 100644 /* Try again later. */ inet_csk_reset_keepalive_timer (sk, HZ/20); goto out; -@@ -578,6 +597,29 @@ static void tcp_keepalive_timer (unsigned long data) +@@ -578,6 +597,29 @@ goto out; } @@ -5382,7 +5346,7 @@ index 64f0354..7b55b9a 100644 if (sk->sk_state == TCP_FIN_WAIT2 && sock_flag(sk, SOCK_DEAD)) { if (tp->linger2 >= 0) { const int tmo = tcp_fin_time(sk) - TCP_TIMEWAIT_LEN; -@@ -639,7 +681,7 @@ death: +@@ -639,7 +681,7 @@ tcp_done(sk); out: @@ -5391,11 +5355,10 @@ index 64f0354..7b55b9a 100644 sock_put(sk); } -diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c -index 6c7fa08..733d602 100644 ---- a/net/ipv6/addrconf.c -+++ b/net/ipv6/addrconf.c -@@ -765,6 +765,7 @@ void inet6_ifa_finish_destroy(struct inet6_ifaddr *ifp) +diff -Nur linux-3.14.45.orig/net/ipv6/addrconf.c linux-3.14.45/net/ipv6/addrconf.c +--- linux-3.14.45.orig/net/ipv6/addrconf.c 2015-06-23 02:01:36.000000000 +0200 ++++ linux-3.14.45/net/ipv6/addrconf.c 2015-06-24 14:15:48.891862483 +0200 +@@ -765,6 +765,7 @@ kfree_rcu(ifp, rcu); } @@ -5403,11 +5366,10 @@ index 6c7fa08..733d602 100644 static void ipv6_link_dev_addr(struct inet6_dev *idev, struct inet6_ifaddr *ifp) -diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c -index d935889..9f0fd80 100644 ---- a/net/ipv6/af_inet6.c -+++ b/net/ipv6/af_inet6.c -@@ -97,8 +97,7 @@ static __inline__ struct ipv6_pinfo *inet6_sk_generic(struct sock *sk) +diff -Nur linux-3.14.45.orig/net/ipv6/af_inet6.c linux-3.14.45/net/ipv6/af_inet6.c +--- linux-3.14.45.orig/net/ipv6/af_inet6.c 2015-06-23 02:01:36.000000000 +0200 ++++ linux-3.14.45/net/ipv6/af_inet6.c 2015-06-24 14:15:48.891862483 +0200 +@@ -97,8 +97,7 @@ return (struct ipv6_pinfo *)(((u8 *)sk) + offset); } @@ -5417,11 +5379,10 @@ index d935889..9f0fd80 100644 { struct inet_sock *inet; struct ipv6_pinfo *np; -diff --git a/net/ipv6/inet6_connection_sock.c b/net/ipv6/inet6_connection_sock.c -index c913818..2f5b4c5 100644 ---- a/net/ipv6/inet6_connection_sock.c -+++ b/net/ipv6/inet6_connection_sock.c -@@ -96,8 +96,8 @@ struct dst_entry *inet6_csk_route_req(struct sock *sk, +diff -Nur linux-3.14.45.orig/net/ipv6/inet6_connection_sock.c linux-3.14.45/net/ipv6/inet6_connection_sock.c +--- linux-3.14.45.orig/net/ipv6/inet6_connection_sock.c 2015-06-23 02:01:36.000000000 +0200 ++++ linux-3.14.45/net/ipv6/inet6_connection_sock.c 2015-06-24 14:15:48.891862483 +0200 +@@ -96,8 +96,8 @@ /* * request_sock (formerly open request) hash tables. */ @@ -5432,11 +5393,10 @@ index c913818..2f5b4c5 100644 { u32 c; -diff --git a/net/ipv6/syncookies.c b/net/ipv6/syncookies.c -index bb53a5e7..0d29995 100644 ---- a/net/ipv6/syncookies.c -+++ b/net/ipv6/syncookies.c -@@ -181,7 +181,7 @@ struct sock *cookie_v6_check(struct sock *sk, struct sk_buff *skb) +diff -Nur linux-3.14.45.orig/net/ipv6/syncookies.c linux-3.14.45/net/ipv6/syncookies.c +--- linux-3.14.45.orig/net/ipv6/syncookies.c 2015-06-23 02:01:36.000000000 +0200 ++++ linux-3.14.45/net/ipv6/syncookies.c 2015-06-24 14:15:48.891862483 +0200 +@@ -181,7 +181,7 @@ /* check for timestamp cookie support */ memset(&tcp_opt, 0, sizeof(tcp_opt)); @@ -5445,7 +5405,7 @@ index bb53a5e7..0d29995 100644 if (!cookie_check_timestamp(&tcp_opt, sock_net(sk), &ecn_ok)) goto out; -@@ -253,10 +253,10 @@ struct sock *cookie_v6_check(struct sock *sk, struct sk_buff *skb) +@@ -253,10 +253,10 @@ } req->window_clamp = tp->window_clamp ? :dst_metric(dst, RTAX_WINDOW); @@ -5458,10 +5418,9 @@ index bb53a5e7..0d29995 100644 ireq->rcv_wscale = rcv_wscale; -diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c -index 889079b..d7f8b5f 100644 ---- a/net/ipv6/tcp_ipv6.c -+++ b/net/ipv6/tcp_ipv6.c +diff -Nur linux-3.14.45.orig/net/ipv6/tcp_ipv6.c linux-3.14.45/net/ipv6/tcp_ipv6.c +--- linux-3.14.45.orig/net/ipv6/tcp_ipv6.c 2015-06-23 02:01:36.000000000 +0200 ++++ linux-3.14.45/net/ipv6/tcp_ipv6.c 2015-06-24 14:44:57.517799806 +0200 @@ -63,6 +63,8 @@ #include <net/inet_common.h> #include <net/secure_seq.h> @@ -5486,7 +5445,7 @@ index 889079b..d7f8b5f 100644 #ifdef CONFIG_TCP_MD5SIG static const struct tcp_sock_af_ops tcp_sock_ipv6_specific; static const struct tcp_sock_af_ops tcp_sock_ipv6_mapped_specific; -@@ -92,7 +86,7 @@ static struct tcp_md5sig_key *tcp_v6_md5_do_lookup(struct sock *sk, +@@ -92,7 +86,7 @@ } #endif @@ -5495,7 +5454,7 @@ index 889079b..d7f8b5f 100644 { struct dst_entry *dst = skb_dst(skb); const struct rt6_info *rt = (const struct rt6_info *)dst; -@@ -104,7 +98,7 @@ static void inet6_sk_rx_dst_set(struct sock *sk, const struct sk_buff *skb) +@@ -104,7 +98,7 @@ inet6_sk(sk)->rx_dst_cookie = rt->rt6i_node->fn_sernum; } @@ -5504,7 +5463,7 @@ index 889079b..d7f8b5f 100644 { if (sk->sk_state != TCP_CLOSE) { if (inet_csk(sk)->icsk_af_ops == &ipv6_mapped) { -@@ -117,7 +111,7 @@ static void tcp_v6_hash(struct sock *sk) +@@ -117,7 +111,7 @@ } } @@ -5513,7 +5472,7 @@ index 889079b..d7f8b5f 100644 { return secure_tcpv6_sequence_number(ipv6_hdr(skb)->daddr.s6_addr32, ipv6_hdr(skb)->saddr.s6_addr32, -@@ -125,7 +119,7 @@ static __u32 tcp_v6_init_sequence(const struct sk_buff *skb) +@@ -125,7 +119,7 @@ tcp_hdr(skb)->source); } @@ -5522,7 +5481,7 @@ index 889079b..d7f8b5f 100644 int addr_len) { struct sockaddr_in6 *usin = (struct sockaddr_in6 *) uaddr; -@@ -339,7 +333,7 @@ static void tcp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt, +@@ -339,7 +333,7 @@ const struct ipv6hdr *hdr = (const struct ipv6hdr *)skb->data; const struct tcphdr *th = (struct tcphdr *)(skb->data+offset); struct ipv6_pinfo *np; @@ -5531,7 +5490,7 @@ index 889079b..d7f8b5f 100644 int err; struct tcp_sock *tp; __u32 seq; -@@ -359,8 +353,14 @@ static void tcp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt, +@@ -359,8 +353,14 @@ return; } @@ -5548,7 +5507,7 @@ index 889079b..d7f8b5f 100644 NET_INC_STATS_BH(net, LINUX_MIB_LOCKDROPPEDICMPS); if (sk->sk_state == TCP_CLOSE) -@@ -371,7 +371,6 @@ static void tcp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt, +@@ -371,7 +371,6 @@ goto out; } @@ -5556,7 +5515,7 @@ index 889079b..d7f8b5f 100644 seq = ntohl(th->seq); if (sk->sk_state != TCP_LISTEN && !between(seq, tp->snd_una, tp->snd_nxt)) { -@@ -401,11 +400,15 @@ static void tcp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt, +@@ -401,11 +400,15 @@ goto out; tp->mtu_info = ntohl(info); @@ -5575,7 +5534,7 @@ index 889079b..d7f8b5f 100644 goto out; } -@@ -415,7 +418,7 @@ static void tcp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt, +@@ -415,7 +418,7 @@ switch (sk->sk_state) { struct request_sock *req, **prev; case TCP_LISTEN: @@ -5584,7 +5543,7 @@ index 889079b..d7f8b5f 100644 goto out; req = inet6_csk_search_req(sk, &prev, th->dest, &hdr->daddr, -@@ -440,7 +443,7 @@ static void tcp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt, +@@ -440,7 +443,7 @@ case TCP_SYN_SENT: case TCP_SYN_RECV: /* Cannot happen. It can, it SYNs are crossed. --ANK */ @@ -5593,7 +5552,7 @@ index 889079b..d7f8b5f 100644 sk->sk_err = err; sk->sk_error_report(sk); /* Wake people up to see the error (see connect in sock.c) */ -@@ -450,22 +453,22 @@ static void tcp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt, +@@ -450,22 +453,22 @@ goto out; } @@ -5622,7 +5581,7 @@ index 889079b..d7f8b5f 100644 { struct inet_request_sock *ireq = inet_rsk(req); struct ipv6_pinfo *np = inet6_sk(sk); -@@ -495,7 +498,7 @@ done: +@@ -495,7 +498,7 @@ return err; } @@ -5631,7 +5590,7 @@ index 889079b..d7f8b5f 100644 { struct flowi6 fl6; int res; -@@ -506,7 +509,7 @@ static int tcp_v6_rtx_synack(struct sock *sk, struct request_sock *req) +@@ -506,7 +509,7 @@ return res; } @@ -5640,7 +5599,7 @@ index 889079b..d7f8b5f 100644 { kfree_skb(inet_rsk(req)->pktopts); } -@@ -719,16 +722,16 @@ struct request_sock_ops tcp6_request_sock_ops __read_mostly = { +@@ -719,16 +722,16 @@ }; #ifdef CONFIG_TCP_MD5SIG @@ -5661,7 +5620,7 @@ index 889079b..d7f8b5f 100644 { const struct tcphdr *th = tcp_hdr(skb); struct tcphdr *t1; -@@ -746,7 +749,10 @@ static void tcp_v6_send_response(struct sk_buff *skb, u32 seq, u32 ack, u32 win, +@@ -746,7 +749,10 @@ if (key) tot_len += TCPOLEN_MD5SIG_ALIGNED; #endif @@ -5673,7 +5632,7 @@ index 889079b..d7f8b5f 100644 buff = alloc_skb(MAX_HEADER + sizeof(struct ipv6hdr) + tot_len, GFP_ATOMIC); if (buff == NULL) -@@ -784,6 +790,17 @@ static void tcp_v6_send_response(struct sk_buff *skb, u32 seq, u32 ack, u32 win, +@@ -784,6 +790,17 @@ tcp_v6_md5_hash_hdr((__u8 *)topt, key, &ipv6_hdr(skb)->saddr, &ipv6_hdr(skb)->daddr, t1); @@ -5691,7 +5650,7 @@ index 889079b..d7f8b5f 100644 } #endif -@@ -821,7 +838,7 @@ static void tcp_v6_send_response(struct sk_buff *skb, u32 seq, u32 ack, u32 win, +@@ -821,7 +838,7 @@ kfree_skb(buff); } @@ -5700,7 +5659,7 @@ index 889079b..d7f8b5f 100644 { const struct tcphdr *th = tcp_hdr(skb); u32 seq = 0, ack_seq = 0; -@@ -876,7 +893,7 @@ static void tcp_v6_send_reset(struct sock *sk, struct sk_buff *skb) +@@ -876,7 +893,7 @@ ack_seq = ntohl(th->seq) + th->syn + th->fin + skb->len - (th->doff << 2); @@ -5709,7 +5668,7 @@ index 889079b..d7f8b5f 100644 #ifdef CONFIG_TCP_MD5SIG release_sk1: -@@ -887,40 +904,47 @@ release_sk1: +@@ -887,40 +904,48 @@ #endif } @@ -5721,10 +5680,9 @@ index 889079b..d7f8b5f 100644 + struct tcp_md5sig_key *key, u8 tclass, u32 label, + int mptcp) { -- tcp_v6_send_response(skb, seq, ack, win, tsval, tsecr, key, 0, tclass, + tcp_v6_send_response(skb, seq, ack, win, tsval, tsecr, key, 0, tclass, - label); -+ tcp_v6_send_response(skb, seq, ack, data_ack, win, tsval, tsecr, key, 0, -+ tclass, label, mptcp); ++ label, mptcp); } static void tcp_v6_timewait_ack(struct sock *sk, struct sk_buff *skb) @@ -5733,26 +5691,26 @@ index 889079b..d7f8b5f 100644 struct tcp_timewait_sock *tcptw = tcp_twsk(sk); + u32 data_ack = 0; + int mptcp = 0; - ++ + if (tcptw->mptcp_tw && tcptw->mptcp_tw->meta_tw) { + data_ack = (u32)tcptw->mptcp_tw->rcv_nxt; + mptcp = 1; + } + tcp_v6_send_ack(skb, tcptw->tw_snd_nxt, tcptw->tw_rcv_nxt, + data_ack, tcptw->tw_rcv_wnd >> tw->tw_rcv_wscale, tcp_time_stamp + tcptw->tw_ts_offset, tcptw->tw_ts_recent, tcp_twsk_md5_key(tcptw), -- tw->tw_tclass, (tw->tw_flowlabel << 12)); -+ tw->tw_tclass, (tw->tw_flowlabel << 12), mptcp); +- tw->tw_tclass, cpu_to_be32(tw->tw_flowlabel)); ++ tw->tw_tclass, cpu_to_be32(tw->tw_flowlabel), mptcp); inet_twsk_put(tw); } -static void tcp_v6_reqsk_send_ack(struct sock *sk, struct sk_buff *skb, -- struct request_sock *req) +void tcp_v6_reqsk_send_ack(struct sock *sk, struct sk_buff *skb, -+ struct request_sock *req) + struct request_sock *req) { tcp_v6_send_ack(skb, tcp_rsk(req)->snt_isn + 1, tcp_rsk(req)->rcv_isn + 1, - req->rcv_wnd, tcp_time_stamp, req->ts_recent, @@ -5768,7 +5726,7 @@ index 889079b..d7f8b5f 100644 { struct request_sock *req, **prev; const struct tcphdr *th = tcp_hdr(skb); -@@ -939,7 +963,13 @@ static struct sock *tcp_v6_hnd_req(struct sock *sk, struct sk_buff *skb) +@@ -939,7 +964,13 @@ if (nsk) { if (nsk->sk_state != TCP_TIME_WAIT) { @@ -5782,7 +5740,7 @@ index 889079b..d7f8b5f 100644 return nsk; } inet_twsk_put(inet_twsk(nsk)); -@@ -959,6 +989,7 @@ static struct sock *tcp_v6_hnd_req(struct sock *sk, struct sk_buff *skb) +@@ -959,6 +990,7 @@ static int tcp_v6_conn_request(struct sock *sk, struct sk_buff *skb) { struct tcp_options_received tmp_opt; @@ -5790,7 +5748,7 @@ index 889079b..d7f8b5f 100644 struct request_sock *req; struct inet_request_sock *ireq; struct ipv6_pinfo *np = inet6_sk(sk); -@@ -971,6 +1002,23 @@ static int tcp_v6_conn_request(struct sock *sk, struct sk_buff *skb) +@@ -971,6 +1003,23 @@ if (skb->protocol == htons(ETH_P_IP)) return tcp_v4_conn_request(sk, skb); @@ -5814,7 +5772,7 @@ index 889079b..d7f8b5f 100644 if (!ipv6_unicast_destination(skb)) goto drop; -@@ -986,7 +1034,22 @@ static int tcp_v6_conn_request(struct sock *sk, struct sk_buff *skb) +@@ -986,7 +1035,22 @@ goto drop; } @@ -5838,7 +5796,7 @@ index 889079b..d7f8b5f 100644 if (req == NULL) goto drop; -@@ -994,17 +1057,15 @@ static int tcp_v6_conn_request(struct sock *sk, struct sk_buff *skb) +@@ -994,17 +1058,15 @@ tcp_rsk(req)->af_specific = &tcp_request_sock_ipv6_ops; #endif @@ -5859,7 +5817,7 @@ index 889079b..d7f8b5f 100644 ireq = inet_rsk(req); ireq->ir_v6_rmt_addr = ipv6_hdr(skb)->saddr; ireq->ir_v6_loc_addr = ipv6_hdr(skb)->daddr; -@@ -1094,9 +1155,9 @@ drop: +@@ -1094,9 +1156,9 @@ return 0; /* don't send reset */ } @@ -5872,7 +5830,7 @@ index 889079b..d7f8b5f 100644 { struct inet_request_sock *ireq; struct ipv6_pinfo *newnp, *np = inet6_sk(sk); -@@ -1317,7 +1378,7 @@ static __sum16 tcp_v6_checksum_init(struct sk_buff *skb) +@@ -1317,7 +1379,7 @@ * This is because we cannot sleep with the original spinlock * held. */ @@ -5881,7 +5839,7 @@ index 889079b..d7f8b5f 100644 { struct ipv6_pinfo *np = inet6_sk(sk); struct tcp_sock *tp; -@@ -1339,6 +1400,9 @@ static int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb) +@@ -1339,6 +1401,9 @@ goto discard; #endif @@ -5891,7 +5849,7 @@ index 889079b..d7f8b5f 100644 if (sk_filter(sk, skb)) goto discard; -@@ -1460,7 +1524,7 @@ static int tcp_v6_rcv(struct sk_buff *skb) +@@ -1460,7 +1525,7 @@ { const struct tcphdr *th; const struct ipv6hdr *hdr; @@ -5900,7 +5858,7 @@ index 889079b..d7f8b5f 100644 int ret; struct net *net = dev_net(skb->dev); -@@ -1491,18 +1555,43 @@ static int tcp_v6_rcv(struct sk_buff *skb) +@@ -1491,18 +1556,43 @@ TCP_SKB_CB(skb)->end_seq = (TCP_SKB_CB(skb)->seq + th->syn + th->fin + skb->len - th->doff*4); TCP_SKB_CB(skb)->ack_seq = ntohl(th->ack_seq); @@ -5947,7 +5905,7 @@ index 889079b..d7f8b5f 100644 if (hdr->hop_limit < inet6_sk(sk)->min_hopcount) { NET_INC_STATS_BH(net, LINUX_MIB_TCPMINTTLDROP); goto discard_and_relse; -@@ -1517,11 +1606,21 @@ process: +@@ -1517,11 +1607,21 @@ sk_mark_napi_id(sk, skb); skb->dev = NULL; @@ -5972,7 +5930,7 @@ index 889079b..d7f8b5f 100644 if (!tp->ucopy.dma_chan && tp->ucopy.pinned_list) tp->ucopy.dma_chan = net_dma_find_channel(); if (tp->ucopy.dma_chan) -@@ -1529,16 +1628,17 @@ process: +@@ -1529,16 +1629,17 @@ else #endif { @@ -5995,7 +5953,7 @@ index 889079b..d7f8b5f 100644 sock_put(sk); return ret ? -1 : 0; -@@ -1595,6 +1695,18 @@ do_time_wait: +@@ -1595,6 +1696,18 @@ sk = sk2; goto process; } @@ -6014,7 +5972,7 @@ index 889079b..d7f8b5f 100644 /* Fall through to ACK */ } case TCP_TW_ACK: -@@ -1644,13 +1756,13 @@ static void tcp_v6_early_demux(struct sk_buff *skb) +@@ -1644,13 +1757,13 @@ } } @@ -6030,7 +5988,7 @@ index 889079b..d7f8b5f 100644 .queue_xmit = inet6_csk_xmit, .send_check = tcp_v6_send_check, .rebuild_header = inet6_sk_rebuild_header, -@@ -1682,7 +1794,7 @@ static const struct tcp_sock_af_ops tcp_sock_ipv6_specific = { +@@ -1683,7 +1796,7 @@ * TCP over IPv4 via INET6 API */ @@ -6039,7 +5997,7 @@ index 889079b..d7f8b5f 100644 .queue_xmit = ip_queue_xmit, .send_check = tcp_v4_send_check, .rebuild_header = inet_sk_rebuild_header, -@@ -1727,7 +1839,7 @@ static int tcp_v6_init_sock(struct sock *sk) +@@ -1729,7 +1842,7 @@ return 0; } @@ -6048,11 +6006,9 @@ index 889079b..d7f8b5f 100644 { tcp_v4_destroy_sock(sk); inet6_destroy_sock(sk); -diff --git a/net/mptcp/Kconfig b/net/mptcp/Kconfig -new file mode 100644 -index 0000000..88a05b1 ---- /dev/null -+++ b/net/mptcp/Kconfig +diff -Nur linux-3.14.45.orig/net/mptcp/Kconfig linux-3.14.45/net/mptcp/Kconfig +--- linux-3.14.45.orig/net/mptcp/Kconfig 1970-01-01 01:00:00.000000000 +0100 ++++ linux-3.14.45/net/mptcp/Kconfig 2015-06-24 14:15:48.891862483 +0200 @@ -0,0 +1,58 @@ +# +# MPTCP configuration @@ -6112,11 +6068,9 @@ index 0000000..88a05b1 + default "fullmesh" if DEFAULT_FULLMESH + default "ndiffports" if DEFAULT_NDIFFPORTS + default "default" -diff --git a/net/mptcp/Makefile b/net/mptcp/Makefile -new file mode 100644 -index 0000000..e7238f5 ---- /dev/null -+++ b/net/mptcp/Makefile +diff -Nur linux-3.14.45.orig/net/mptcp/Makefile linux-3.14.45/net/mptcp/Makefile +--- linux-3.14.45.orig/net/mptcp/Makefile 1970-01-01 01:00:00.000000000 +0100 ++++ linux-3.14.45/net/mptcp/Makefile 2015-06-24 14:15:48.891862483 +0200 @@ -0,0 +1,18 @@ +# +## Makefile for MultiPath TCP support code. @@ -6136,11 +6090,9 @@ index 0000000..e7238f5 + +mptcp-$(subst m,y,$(CONFIG_IPV6)) += mptcp_ipv6.o + -diff --git a/net/mptcp/mptcp_coupled.c b/net/mptcp/mptcp_coupled.c -new file mode 100644 -index 0000000..d71f96e ---- /dev/null -+++ b/net/mptcp/mptcp_coupled.c +diff -Nur linux-3.14.45.orig/net/mptcp/mptcp_coupled.c linux-3.14.45/net/mptcp/mptcp_coupled.c +--- linux-3.14.45.orig/net/mptcp/mptcp_coupled.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-3.14.45/net/mptcp/mptcp_coupled.c 2015-06-24 14:15:48.891862483 +0200 @@ -0,0 +1,273 @@ +/* + * MPTCP implementation - Coupled Congestion Control @@ -6415,11 +6367,9 @@ index 0000000..d71f96e +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("MPTCP COUPLED CONGESTION CONTROL"); +MODULE_VERSION("0.1"); -diff --git a/net/mptcp/mptcp_ctrl.c b/net/mptcp/mptcp_ctrl.c -new file mode 100644 -index 0000000..6a7654d ---- /dev/null -+++ b/net/mptcp/mptcp_ctrl.c +diff -Nur linux-3.14.45.orig/net/mptcp/mptcp_ctrl.c linux-3.14.45/net/mptcp/mptcp_ctrl.c +--- linux-3.14.45.orig/net/mptcp/mptcp_ctrl.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-3.14.45/net/mptcp/mptcp_ctrl.c 2015-06-24 14:15:48.891862483 +0200 @@ -0,0 +1,2270 @@ +/* + * MPTCP implementation - MPTCP-control @@ -8691,11 +8641,9 @@ index 0000000..6a7654d +mptcp_sock_cache_failed: + mptcp_init_failed = true; +} -diff --git a/net/mptcp/mptcp_fullmesh.c b/net/mptcp/mptcp_fullmesh.c -new file mode 100644 -index 0000000..49bddf3 ---- /dev/null -+++ b/net/mptcp/mptcp_fullmesh.c +diff -Nur linux-3.14.45.orig/net/mptcp/mptcp_fullmesh.c linux-3.14.45/net/mptcp/mptcp_fullmesh.c +--- linux-3.14.45.orig/net/mptcp/mptcp_fullmesh.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-3.14.45/net/mptcp/mptcp_fullmesh.c 2015-06-24 14:15:48.891862483 +0200 @@ -0,0 +1,1313 @@ +#include <linux/module.h> + @@ -10010,11 +9958,9 @@ index 0000000..49bddf3 +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("Full-Mesh MPTCP"); +MODULE_VERSION("0.88"); -diff --git a/net/mptcp/mptcp_input.c b/net/mptcp/mptcp_input.c -new file mode 100644 -index 0000000..f3c9057 ---- /dev/null -+++ b/net/mptcp/mptcp_input.c +diff -Nur linux-3.14.45.orig/net/mptcp/mptcp_input.c linux-3.14.45/net/mptcp/mptcp_input.c +--- linux-3.14.45.orig/net/mptcp/mptcp_input.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-3.14.45/net/mptcp/mptcp_input.c 2015-06-24 14:15:48.895862487 +0200 @@ -0,0 +1,2254 @@ +/* + * MPTCP implementation - Sending side @@ -12270,11 +12216,9 @@ index 0000000..f3c9057 + tcp_set_rto(sk); + mptcp_set_rto(sk); +} -diff --git a/net/mptcp/mptcp_ipv4.c b/net/mptcp/mptcp_ipv4.c -new file mode 100644 -index 0000000..b6053f1 ---- /dev/null -+++ b/net/mptcp/mptcp_ipv4.c +diff -Nur linux-3.14.45.orig/net/mptcp/mptcp_ipv4.c linux-3.14.45/net/mptcp/mptcp_ipv4.c +--- linux-3.14.45.orig/net/mptcp/mptcp_ipv4.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-3.14.45/net/mptcp/mptcp_ipv4.c 2015-06-24 14:15:48.895862487 +0200 @@ -0,0 +1,603 @@ +/* + * MPTCP implementation - IPv4-specific functions @@ -12879,11 +12823,9 @@ index 0000000..b6053f1 +} + + -diff --git a/net/mptcp/mptcp_ipv6.c b/net/mptcp/mptcp_ipv6.c -new file mode 100644 -index 0000000..b6b444d ---- /dev/null -+++ b/net/mptcp/mptcp_ipv6.c +diff -Nur linux-3.14.45.orig/net/mptcp/mptcp_ipv6.c linux-3.14.45/net/mptcp/mptcp_ipv6.c +--- linux-3.14.45.orig/net/mptcp/mptcp_ipv6.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-3.14.45/net/mptcp/mptcp_ipv6.c 2015-06-24 14:15:48.931862523 +0200 @@ -0,0 +1,822 @@ +/* + * MPTCP implementation - IPv6-specific functions @@ -13707,11 +13649,9 @@ index 0000000..b6b444d + kmem_cache_destroy(mptcp6_request_sock_ops.slab); + kfree(mptcp6_request_sock_ops.slab_name); +} -diff --git a/net/mptcp/mptcp_ndiffports.c b/net/mptcp/mptcp_ndiffports.c -new file mode 100644 -index 0000000..a126325 ---- /dev/null -+++ b/net/mptcp/mptcp_ndiffports.c +diff -Nur linux-3.14.45.orig/net/mptcp/mptcp_ndiffports.c linux-3.14.45/net/mptcp/mptcp_ndiffports.c +--- linux-3.14.45.orig/net/mptcp/mptcp_ndiffports.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-3.14.45/net/mptcp/mptcp_ndiffports.c 2015-06-24 14:15:48.931862523 +0200 @@ -0,0 +1,171 @@ +#include <linux/module.h> + @@ -13884,11 +13824,9 @@ index 0000000..a126325 +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("NDIFF-PORTS MPTCP"); +MODULE_VERSION("0.88"); -diff --git a/net/mptcp/mptcp_ofo_queue.c b/net/mptcp/mptcp_ofo_queue.c -new file mode 100644 -index 0000000..e182855 ---- /dev/null -+++ b/net/mptcp/mptcp_ofo_queue.c +diff -Nur linux-3.14.45.orig/net/mptcp/mptcp_ofo_queue.c linux-3.14.45/net/mptcp/mptcp_ofo_queue.c +--- linux-3.14.45.orig/net/mptcp/mptcp_ofo_queue.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-3.14.45/net/mptcp/mptcp_ofo_queue.c 2015-06-24 14:15:48.931862523 +0200 @@ -0,0 +1,278 @@ +/* + * MPTCP implementation - Fast algorithm for MPTCP meta-reordering @@ -14168,11 +14106,9 @@ index 0000000..e182855 + kfree_skb(skb); + } +} -diff --git a/net/mptcp/mptcp_olia.c b/net/mptcp/mptcp_olia.c -new file mode 100644 -index 0000000..43d821e ---- /dev/null -+++ b/net/mptcp/mptcp_olia.c +diff -Nur linux-3.14.45.orig/net/mptcp/mptcp_olia.c linux-3.14.45/net/mptcp/mptcp_olia.c +--- linux-3.14.45.orig/net/mptcp/mptcp_olia.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-3.14.45/net/mptcp/mptcp_olia.c 2015-06-24 14:15:48.931862523 +0200 @@ -0,0 +1,314 @@ +/* + * MPTCP implementation - OPPORTUNISTIC LINKED INCREASES CONGESTION CONTROL: @@ -14488,11 +14424,9 @@ index 0000000..43d821e +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("MPTCP COUPLED CONGESTION CONTROL"); +MODULE_VERSION("0.1"); -diff --git a/net/mptcp/mptcp_output.c b/net/mptcp/mptcp_output.c -new file mode 100644 -index 0000000..807b79e ---- /dev/null -+++ b/net/mptcp/mptcp_output.c +diff -Nur linux-3.14.45.orig/net/mptcp/mptcp_output.c linux-3.14.45/net/mptcp/mptcp_output.c +--- linux-3.14.45.orig/net/mptcp/mptcp_output.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-3.14.45/net/mptcp/mptcp_output.c 2015-06-24 14:15:48.931862523 +0200 @@ -0,0 +1,2255 @@ +/* + * MPTCP implementation - Sending side @@ -16749,11 +16683,9 @@ index 0000000..807b79e + + return 0; +} -diff --git a/net/mptcp/mptcp_pm.c b/net/mptcp/mptcp_pm.c -new file mode 100644 -index 0000000..1f78ae1 ---- /dev/null -+++ b/net/mptcp/mptcp_pm.c +diff -Nur linux-3.14.45.orig/net/mptcp/mptcp_pm.c linux-3.14.45/net/mptcp/mptcp_pm.c +--- linux-3.14.45.orig/net/mptcp/mptcp_pm.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-3.14.45/net/mptcp/mptcp_pm.c 2015-06-24 14:15:48.931862523 +0200 @@ -0,0 +1,170 @@ +/* + * MPTCP implementation - MPTCP-subflow-management @@ -16925,11 +16857,9 @@ index 0000000..1f78ae1 + return mptcp_set_default_path_manager(CONFIG_DEFAULT_MPTCP_PM); +} +late_initcall(mptcp_path_manager_default); -diff --git a/net/mptcp/mptcp_wvegas.c b/net/mptcp/mptcp_wvegas.c -new file mode 100644 -index 0000000..8e1fd50 ---- /dev/null -+++ b/net/mptcp/mptcp_wvegas.c +diff -Nur linux-3.14.45.orig/net/mptcp/mptcp_wvegas.c linux-3.14.45/net/mptcp/mptcp_wvegas.c +--- linux-3.14.45.orig/net/mptcp/mptcp_wvegas.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-3.14.45/net/mptcp/mptcp_wvegas.c 2015-06-24 14:15:48.931862523 +0200 @@ -0,0 +1,270 @@ +/* + * MPTCP implementation - WEIGHTED VEGAS diff --git a/target/linux/patches/3.14.43/mtd-rootfs.patch b/target/linux/patches/3.14.45/mtd-rootfs.patch index 775d5fc80..775d5fc80 100644 --- a/target/linux/patches/3.14.43/mtd-rootfs.patch +++ b/target/linux/patches/3.14.45/mtd-rootfs.patch diff --git a/target/linux/patches/3.14.43/nfsv3-tcp.patch b/target/linux/patches/3.14.45/nfsv3-tcp.patch index 68ed95b08..68ed95b08 100644 --- a/target/linux/patches/3.14.43/nfsv3-tcp.patch +++ b/target/linux/patches/3.14.45/nfsv3-tcp.patch diff --git a/target/linux/patches/3.14.43/non-static.patch b/target/linux/patches/3.14.45/non-static.patch index a967703d0..a967703d0 100644 --- a/target/linux/patches/3.14.43/non-static.patch +++ b/target/linux/patches/3.14.45/non-static.patch diff --git a/target/linux/patches/3.14.43/ppc64-missing-zlib.patch b/target/linux/patches/3.14.45/ppc64-missing-zlib.patch index c6e0616be..c6e0616be 100644 --- a/target/linux/patches/3.14.43/ppc64-missing-zlib.patch +++ b/target/linux/patches/3.14.45/ppc64-missing-zlib.patch diff --git a/target/linux/patches/3.14.43/regmap-boolean.patch b/target/linux/patches/3.14.45/regmap-boolean.patch index d73620e4d..d73620e4d 100644 --- a/target/linux/patches/3.14.43/regmap-boolean.patch +++ b/target/linux/patches/3.14.45/regmap-boolean.patch diff --git a/target/linux/patches/3.14.43/relocs.patch b/target/linux/patches/3.14.45/relocs.patch index 69a7c88a9..69a7c88a9 100644 --- a/target/linux/patches/3.14.43/relocs.patch +++ b/target/linux/patches/3.14.45/relocs.patch diff --git a/target/linux/patches/3.14.43/sgidefs.patch b/target/linux/patches/3.14.45/sgidefs.patch index f00a284d9..f00a284d9 100644 --- a/target/linux/patches/3.14.43/sgidefs.patch +++ b/target/linux/patches/3.14.45/sgidefs.patch diff --git a/target/linux/patches/3.14.43/sortext.patch b/target/linux/patches/3.14.45/sortext.patch index 8fd4e1d6b..8fd4e1d6b 100644 --- a/target/linux/patches/3.14.43/sortext.patch +++ b/target/linux/patches/3.14.45/sortext.patch diff --git a/target/linux/patches/3.14.43/startup.patch b/target/linux/patches/3.14.45/startup.patch index d396b75e4..d396b75e4 100644 --- a/target/linux/patches/3.14.43/startup.patch +++ b/target/linux/patches/3.14.45/startup.patch diff --git a/target/linux/patches/3.14.43/wlan-cf.patch b/target/linux/patches/3.14.45/wlan-cf.patch index fc20759e2..fc20759e2 100644 --- a/target/linux/patches/3.14.43/wlan-cf.patch +++ b/target/linux/patches/3.14.45/wlan-cf.patch diff --git a/target/linux/patches/3.14.43/xargs.patch b/target/linux/patches/3.14.45/xargs.patch index 2c7b3df59..2c7b3df59 100644 --- a/target/linux/patches/3.14.43/xargs.patch +++ b/target/linux/patches/3.14.45/xargs.patch diff --git a/target/linux/patches/3.14.43/yaffs2.patch b/target/linux/patches/3.14.45/yaffs2.patch index 30e4a790e..30e4a790e 100644 --- a/target/linux/patches/3.14.43/yaffs2.patch +++ b/target/linux/patches/3.14.45/yaffs2.patch diff --git a/target/linux/patches/3.14.43/zlib-inflate.patch b/target/linux/patches/3.14.45/zlib-inflate.patch index 58e1f6d21..58e1f6d21 100644 --- a/target/linux/patches/3.14.43/zlib-inflate.patch +++ b/target/linux/patches/3.14.45/zlib-inflate.patch diff --git a/target/linux/patches/3.18.14/bsd-compatibility.patch b/target/linux/patches/3.18.16/bsd-compatibility.patch index b954b658f..b954b658f 100644 --- a/target/linux/patches/3.18.14/bsd-compatibility.patch +++ b/target/linux/patches/3.18.16/bsd-compatibility.patch diff --git a/target/linux/patches/3.18.14/cleankernel.patch b/target/linux/patches/3.18.16/cleankernel.patch index d8c055dc3..d8c055dc3 100644 --- a/target/linux/patches/3.18.14/cleankernel.patch +++ b/target/linux/patches/3.18.16/cleankernel.patch diff --git a/target/linux/patches/3.18.14/cris-header.patch b/target/linux/patches/3.18.16/cris-header.patch index 3db07e530..3db07e530 100644 --- a/target/linux/patches/3.18.14/cris-header.patch +++ b/target/linux/patches/3.18.16/cris-header.patch diff --git a/target/linux/patches/3.18.14/cris-initramfs.patch b/target/linux/patches/3.18.16/cris-initramfs.patch index b709e705e..b709e705e 100644 --- a/target/linux/patches/3.18.14/cris-initramfs.patch +++ b/target/linux/patches/3.18.16/cris-initramfs.patch diff --git a/target/linux/patches/3.18.14/defaults.patch b/target/linux/patches/3.18.16/defaults.patch index 6cdca084e..6cdca084e 100644 --- a/target/linux/patches/3.18.14/defaults.patch +++ b/target/linux/patches/3.18.16/defaults.patch diff --git a/target/linux/patches/3.18.14/export-symbol-for-exmap.patch b/target/linux/patches/3.18.16/export-symbol-for-exmap.patch index 4f0fc8449..4f0fc8449 100644 --- a/target/linux/patches/3.18.14/export-symbol-for-exmap.patch +++ b/target/linux/patches/3.18.16/export-symbol-for-exmap.patch diff --git a/target/linux/patches/3.18.14/fblogo.patch b/target/linux/patches/3.18.16/fblogo.patch index 5b9070242..5b9070242 100644 --- a/target/linux/patches/3.18.14/fblogo.patch +++ b/target/linux/patches/3.18.16/fblogo.patch diff --git a/target/linux/patches/3.18.14/gemalto.patch b/target/linux/patches/3.18.16/gemalto.patch index 65f7af1d7..65f7af1d7 100644 --- a/target/linux/patches/3.18.14/gemalto.patch +++ b/target/linux/patches/3.18.16/gemalto.patch diff --git a/target/linux/patches/3.18.14/initramfs-nosizelimit.patch b/target/linux/patches/3.18.16/initramfs-nosizelimit.patch index 40d2f6bd8..40d2f6bd8 100644 --- a/target/linux/patches/3.18.14/initramfs-nosizelimit.patch +++ b/target/linux/patches/3.18.16/initramfs-nosizelimit.patch diff --git a/target/linux/patches/3.18.14/lemote-rfkill.patch b/target/linux/patches/3.18.16/lemote-rfkill.patch index a61488434..a61488434 100644 --- a/target/linux/patches/3.18.14/lemote-rfkill.patch +++ b/target/linux/patches/3.18.16/lemote-rfkill.patch diff --git a/target/linux/patches/3.18.14/microblaze-ethernet.patch b/target/linux/patches/3.18.16/microblaze-ethernet.patch index 742ab477e..742ab477e 100644 --- a/target/linux/patches/3.18.14/microblaze-ethernet.patch +++ b/target/linux/patches/3.18.16/microblaze-ethernet.patch diff --git a/target/linux/patches/3.18.14/mkpiggy.patch b/target/linux/patches/3.18.16/mkpiggy.patch index 751678b74..751678b74 100644 --- a/target/linux/patches/3.18.14/mkpiggy.patch +++ b/target/linux/patches/3.18.16/mkpiggy.patch diff --git a/target/linux/patches/3.18.14/mtd-rootfs.patch b/target/linux/patches/3.18.16/mtd-rootfs.patch index 775d5fc80..775d5fc80 100644 --- a/target/linux/patches/3.18.14/mtd-rootfs.patch +++ b/target/linux/patches/3.18.16/mtd-rootfs.patch diff --git a/target/linux/patches/3.18.14/nfsv3-tcp.patch b/target/linux/patches/3.18.16/nfsv3-tcp.patch index d5e07e1c2..d5e07e1c2 100644 --- a/target/linux/patches/3.18.14/nfsv3-tcp.patch +++ b/target/linux/patches/3.18.16/nfsv3-tcp.patch diff --git a/target/linux/patches/3.18.14/non-static.patch b/target/linux/patches/3.18.16/non-static.patch index a967703d0..a967703d0 100644 --- a/target/linux/patches/3.18.14/non-static.patch +++ b/target/linux/patches/3.18.16/non-static.patch diff --git a/target/linux/patches/3.18.14/ppc64-missing-zlib.patch b/target/linux/patches/3.18.16/ppc64-missing-zlib.patch index c6e0616be..c6e0616be 100644 --- a/target/linux/patches/3.18.14/ppc64-missing-zlib.patch +++ b/target/linux/patches/3.18.16/ppc64-missing-zlib.patch diff --git a/target/linux/patches/3.18.14/realtime.patch b/target/linux/patches/3.18.16/realtime.patch index 28b9b271c..28b9b271c 100644 --- a/target/linux/patches/3.18.14/realtime.patch +++ b/target/linux/patches/3.18.16/realtime.patch diff --git a/target/linux/patches/3.18.14/regmap-bool.patch b/target/linux/patches/3.18.16/regmap-bool.patch index 5c0ff5e2c..5c0ff5e2c 100644 --- a/target/linux/patches/3.18.14/regmap-bool.patch +++ b/target/linux/patches/3.18.16/regmap-bool.patch diff --git a/target/linux/patches/3.18.14/relocs.patch b/target/linux/patches/3.18.16/relocs.patch index 69a7c88a9..69a7c88a9 100644 --- a/target/linux/patches/3.18.14/relocs.patch +++ b/target/linux/patches/3.18.16/relocs.patch diff --git a/target/linux/patches/3.18.14/sgidefs.patch b/target/linux/patches/3.18.16/sgidefs.patch index f00a284d9..f00a284d9 100644 --- a/target/linux/patches/3.18.14/sgidefs.patch +++ b/target/linux/patches/3.18.16/sgidefs.patch diff --git a/target/linux/patches/3.18.14/sortext.patch b/target/linux/patches/3.18.16/sortext.patch index 8fd4e1d6b..8fd4e1d6b 100644 --- a/target/linux/patches/3.18.14/sortext.patch +++ b/target/linux/patches/3.18.16/sortext.patch diff --git a/target/linux/patches/3.18.14/startup.patch b/target/linux/patches/3.18.16/startup.patch index d396b75e4..d396b75e4 100644 --- a/target/linux/patches/3.18.14/startup.patch +++ b/target/linux/patches/3.18.16/startup.patch diff --git a/target/linux/patches/3.18.14/wlan-cf.patch b/target/linux/patches/3.18.16/wlan-cf.patch index fc20759e2..fc20759e2 100644 --- a/target/linux/patches/3.18.14/wlan-cf.patch +++ b/target/linux/patches/3.18.16/wlan-cf.patch diff --git a/target/linux/patches/3.18.14/xargs.patch b/target/linux/patches/3.18.16/xargs.patch index 2c7b3df59..2c7b3df59 100644 --- a/target/linux/patches/3.18.14/xargs.patch +++ b/target/linux/patches/3.18.16/xargs.patch diff --git a/target/linux/patches/3.18.14/yaffs2.patch b/target/linux/patches/3.18.16/yaffs2.patch index 2ade5bf7e..2ade5bf7e 100644 --- a/target/linux/patches/3.18.14/yaffs2.patch +++ b/target/linux/patches/3.18.16/yaffs2.patch diff --git a/target/linux/patches/3.2.68/sparc-aout.patch b/target/linux/patches/3.2.69/sparc-aout.patch index 6ad252479..6ad252479 100644 --- a/target/linux/patches/3.2.68/sparc-aout.patch +++ b/target/linux/patches/3.2.69/sparc-aout.patch diff --git a/target/linux/patches/3.4.107/aufs2.patch b/target/linux/patches/3.4.108/aufs2.patch index d40c9a3fe..d40c9a3fe 100644 --- a/target/linux/patches/3.4.107/aufs2.patch +++ b/target/linux/patches/3.4.108/aufs2.patch diff --git a/target/linux/patches/3.4.107/bsd-compatibility.patch b/target/linux/patches/3.4.108/bsd-compatibility.patch index 9e91a62de..9e91a62de 100644 --- a/target/linux/patches/3.4.107/bsd-compatibility.patch +++ b/target/linux/patches/3.4.108/bsd-compatibility.patch diff --git a/target/linux/patches/3.4.107/defaults.patch b/target/linux/patches/3.4.108/defaults.patch index 58aae610b..58aae610b 100644 --- a/target/linux/patches/3.4.107/defaults.patch +++ b/target/linux/patches/3.4.108/defaults.patch diff --git a/target/linux/patches/3.4.107/gemalto.patch b/target/linux/patches/3.4.108/gemalto.patch index 65f7af1d7..65f7af1d7 100644 --- a/target/linux/patches/3.4.107/gemalto.patch +++ b/target/linux/patches/3.4.108/gemalto.patch diff --git a/target/linux/patches/3.4.107/lemote-rfkill.patch b/target/linux/patches/3.4.108/lemote-rfkill.patch index a61488434..a61488434 100644 --- a/target/linux/patches/3.4.107/lemote-rfkill.patch +++ b/target/linux/patches/3.4.108/lemote-rfkill.patch diff --git a/target/linux/patches/3.4.107/linux-gcc-check.patch b/target/linux/patches/3.4.108/linux-gcc-check.patch index 7cc381845..7cc381845 100644 --- a/target/linux/patches/3.4.107/linux-gcc-check.patch +++ b/target/linux/patches/3.4.108/linux-gcc-check.patch diff --git a/target/linux/patches/3.4.107/mips-error.patch b/target/linux/patches/3.4.108/mips-error.patch index 800abc80d..800abc80d 100644 --- a/target/linux/patches/3.4.107/mips-error.patch +++ b/target/linux/patches/3.4.108/mips-error.patch diff --git a/target/linux/patches/3.4.107/mkpiggy.patch b/target/linux/patches/3.4.108/mkpiggy.patch index d4e815cd2..d4e815cd2 100644 --- a/target/linux/patches/3.4.107/mkpiggy.patch +++ b/target/linux/patches/3.4.108/mkpiggy.patch diff --git a/target/linux/patches/3.4.107/module-alloc-size-check.patch b/target/linux/patches/3.4.108/module-alloc-size-check.patch index a792ac60a..a792ac60a 100644 --- a/target/linux/patches/3.4.107/module-alloc-size-check.patch +++ b/target/linux/patches/3.4.108/module-alloc-size-check.patch diff --git a/target/linux/patches/3.4.107/non-static.patch b/target/linux/patches/3.4.108/non-static.patch index a967703d0..a967703d0 100644 --- a/target/linux/patches/3.4.107/non-static.patch +++ b/target/linux/patches/3.4.108/non-static.patch diff --git a/target/linux/patches/3.4.107/relocs.patch b/target/linux/patches/3.4.108/relocs.patch index 43c5bb580..43c5bb580 100644 --- a/target/linux/patches/3.4.107/relocs.patch +++ b/target/linux/patches/3.4.108/relocs.patch diff --git a/target/linux/patches/3.4.107/sparc-aout.patch b/target/linux/patches/3.4.108/sparc-aout.patch index 5cd74c2e7..5cd74c2e7 100644 --- a/target/linux/patches/3.4.107/sparc-aout.patch +++ b/target/linux/patches/3.4.108/sparc-aout.patch diff --git a/target/linux/patches/3.4.107/sparc-include.patch b/target/linux/patches/3.4.108/sparc-include.patch index 2f8ffd061..2f8ffd061 100644 --- a/target/linux/patches/3.4.107/sparc-include.patch +++ b/target/linux/patches/3.4.108/sparc-include.patch diff --git a/target/linux/patches/3.4.107/startup.patch b/target/linux/patches/3.4.108/startup.patch index c26430bcb..c26430bcb 100644 --- a/target/linux/patches/3.4.107/startup.patch +++ b/target/linux/patches/3.4.108/startup.patch diff --git a/target/linux/patches/3.4.107/usb-defaults-off.patch b/target/linux/patches/3.4.108/usb-defaults-off.patch index 31367108a..31367108a 100644 --- a/target/linux/patches/3.4.107/usb-defaults-off.patch +++ b/target/linux/patches/3.4.108/usb-defaults-off.patch diff --git a/target/linux/patches/3.4.107/vga-cons-default-off.patch b/target/linux/patches/3.4.108/vga-cons-default-off.patch index 178aeeeb9..178aeeeb9 100644 --- a/target/linux/patches/3.4.107/vga-cons-default-off.patch +++ b/target/linux/patches/3.4.108/vga-cons-default-off.patch diff --git a/target/linux/patches/3.4.107/wlan-cf.patch b/target/linux/patches/3.4.108/wlan-cf.patch index fc20759e2..fc20759e2 100644 --- a/target/linux/patches/3.4.107/wlan-cf.patch +++ b/target/linux/patches/3.4.108/wlan-cf.patch diff --git a/target/linux/patches/3.4.107/yaffs2.patch b/target/linux/patches/3.4.108/yaffs2.patch index 44c95915f..44c95915f 100644 --- a/target/linux/patches/3.4.107/yaffs2.patch +++ b/target/linux/patches/3.4.108/yaffs2.patch diff --git a/target/linux/patches/3.4.107/zlib-inflate.patch b/target/linux/patches/3.4.108/zlib-inflate.patch index 58e1f6d21..58e1f6d21 100644 --- a/target/linux/patches/3.4.107/zlib-inflate.patch +++ b/target/linux/patches/3.4.108/zlib-inflate.patch diff --git a/target/linux/patches/4.0.5/aufs4.patch b/target/linux/patches/4.0.6/aufs4.patch index 73b035010..73b035010 100644 --- a/target/linux/patches/4.0.5/aufs4.patch +++ b/target/linux/patches/4.0.6/aufs4.patch diff --git a/target/linux/patches/4.0.5/cleankernel.patch b/target/linux/patches/4.0.6/cleankernel.patch index d8c055dc3..d8c055dc3 100644 --- a/target/linux/patches/4.0.5/cleankernel.patch +++ b/target/linux/patches/4.0.6/cleankernel.patch diff --git a/target/linux/patches/4.0.5/cris-header.patch b/target/linux/patches/4.0.6/cris-header.patch index 2b5a88461..2b5a88461 100644 --- a/target/linux/patches/4.0.5/cris-header.patch +++ b/target/linux/patches/4.0.6/cris-header.patch diff --git a/target/linux/patches/4.0.5/initramfs-nosizelimit.patch b/target/linux/patches/4.0.6/initramfs-nosizelimit.patch index 40d2f6bd8..40d2f6bd8 100644 --- a/target/linux/patches/4.0.5/initramfs-nosizelimit.patch +++ b/target/linux/patches/4.0.6/initramfs-nosizelimit.patch diff --git a/target/linux/patches/4.0.5/startup.patch b/target/linux/patches/4.0.6/startup.patch index d396b75e4..d396b75e4 100644 --- a/target/linux/patches/4.0.5/startup.patch +++ b/target/linux/patches/4.0.6/startup.patch diff --git a/target/linux/patches/4.1-rc5/cris-header.patch b/target/linux/patches/4.1/cris-header.patch index 2b5a88461..2b5a88461 100644 --- a/target/linux/patches/4.1-rc5/cris-header.patch +++ b/target/linux/patches/4.1/cris-header.patch diff --git a/target/linux/patches/4.1-rc5/initramfs-nosizelimit.patch b/target/linux/patches/4.1/initramfs-nosizelimit.patch index 40d2f6bd8..40d2f6bd8 100644 --- a/target/linux/patches/4.1-rc5/initramfs-nosizelimit.patch +++ b/target/linux/patches/4.1/initramfs-nosizelimit.patch diff --git a/target/linux/patches/4.1-rc5/startup.patch b/target/linux/patches/4.1/startup.patch index d396b75e4..d396b75e4 100644 --- a/target/linux/patches/4.1-rc5/startup.patch +++ b/target/linux/patches/4.1/startup.patch |