diff options
author | Leonardo Arena <rnalrd@alpinelinux.org> | 2014-11-25 16:02:52 +0000 |
---|---|---|
committer | Leonardo Arena <rnalrd@alpinelinux.org> | 2014-11-25 16:02:52 +0000 |
commit | 669d567174224c31a0d2bb2092e6999f39b7fd91 (patch) | |
tree | 75193aa1b8c97fd5189ef4f7c0387ba313d908de | |
parent | e7824a9a885ea50d16556cc268f930f0ee7a8834 (diff) | |
download | alpine_aports-669d567174224c31a0d2bb2092e6999f39b7fd91.tar.bz2 alpine_aports-669d567174224c31a0d2bb2092e6999f39b7fd91.tar.xz alpine_aports-669d567174224c31a0d2bb2092e6999f39b7fd91.zip |
main/linux-virt-grsec: upgrade to 3.14.25
-rw-r--r-- | main/linux-virt-grsec/APKBUILD | 16 | ||||
-rw-r--r-- | main/linux-virt-grsec/grsecurity-3.0-3.14.25-201411231452.patch (renamed from main/linux-virt-grsec/grsecurity-3.0-3.14.24-201411150026.patch) | 1182 |
2 files changed, 245 insertions, 953 deletions
diff --git a/main/linux-virt-grsec/APKBUILD b/main/linux-virt-grsec/APKBUILD index 688807f746..5648ddb78f 100644 --- a/main/linux-virt-grsec/APKBUILD +++ b/main/linux-virt-grsec/APKBUILD | |||
@@ -3,7 +3,7 @@ | |||
3 | 3 | ||
4 | _flavor=virt-grsec | 4 | _flavor=virt-grsec |
5 | pkgname=linux-${_flavor} | 5 | pkgname=linux-${_flavor} |
6 | pkgver=3.14.24 | 6 | pkgver=3.14.25 |
7 | case $pkgver in | 7 | case $pkgver in |
8 | *.*.*) _kernver=${pkgver%.*};; | 8 | *.*.*) _kernver=${pkgver%.*};; |
9 | *.*) _kernver=${pkgver};; | 9 | *.*) _kernver=${pkgver};; |
@@ -18,7 +18,7 @@ _config=${config:-kernelconfig.${CARCH}} | |||
18 | install= | 18 | install= |
19 | source="http://ftp.kernel.org/pub/linux/kernel/v3.x/linux-$_kernver.tar.xz | 19 | source="http://ftp.kernel.org/pub/linux/kernel/v3.x/linux-$_kernver.tar.xz |
20 | http://ftp.kernel.org/pub/linux/kernel/v3.x/patch-$pkgver.xz | 20 | http://ftp.kernel.org/pub/linux/kernel/v3.x/patch-$pkgver.xz |
21 | grsecurity-3.0-$pkgver-201411150026.patch | 21 | grsecurity-3.0-$pkgver-201411231452.patch |
22 | fix-memory-map-for-PIE-applications.patch | 22 | fix-memory-map-for-PIE-applications.patch |
23 | imx6q-no-unclocked-sleep.patch | 23 | imx6q-no-unclocked-sleep.patch |
24 | 24 | ||
@@ -146,22 +146,22 @@ dev() { | |||
146 | } | 146 | } |
147 | 147 | ||
148 | md5sums="b621207b3f6ecbb67db18b13258f8ea8 linux-3.14.tar.xz | 148 | md5sums="b621207b3f6ecbb67db18b13258f8ea8 linux-3.14.tar.xz |
149 | 651a92fc1d45c02fa02358bb07e80697 patch-3.14.24.xz | 149 | fffe78a513fa84a15c15a243cac35ca3 patch-3.14.25.xz |
150 | 384982d028a3d484345ef780c11a464f grsecurity-3.0-3.14.24-201411150026.patch | 150 | 81df75eb4303065d37894fb034f9e19a grsecurity-3.0-3.14.25-201411231452.patch |
151 | c6a4ae7e8ca6159e1631545515805216 fix-memory-map-for-PIE-applications.patch | 151 | c6a4ae7e8ca6159e1631545515805216 fix-memory-map-for-PIE-applications.patch |
152 | 1a307fc1d63231bf01d22493a4f14378 imx6q-no-unclocked-sleep.patch | 152 | 1a307fc1d63231bf01d22493a4f14378 imx6q-no-unclocked-sleep.patch |
153 | 6b30dd8284f37ecc244d556bebf32046 kernelconfig.x86 | 153 | 6b30dd8284f37ecc244d556bebf32046 kernelconfig.x86 |
154 | 8df8378d305bdd302b01293ff44e982d kernelconfig.x86_64" | 154 | 8df8378d305bdd302b01293ff44e982d kernelconfig.x86_64" |
155 | sha256sums="61558aa490855f42b6340d1a1596be47454909629327c49a5e4e10268065dffa linux-3.14.tar.xz | 155 | sha256sums="61558aa490855f42b6340d1a1596be47454909629327c49a5e4e10268065dffa linux-3.14.tar.xz |
156 | 80013321b6891216fcff6d0746cb977bd7e8438b02ca13ff261659f3dfa76d51 patch-3.14.24.xz | 156 | c1a13dbaaabc0fe1330c7e0f0f6e10fbf7d384ccf7f1d15061fec4602233b142 patch-3.14.25.xz |
157 | 36f3dfd5237966661fef9bf18bc3779c3f5e852df48889902e6be94d708b3aef grsecurity-3.0-3.14.24-201411150026.patch | 157 | ff89a9d2887f3d5a50e458b5ab3a3a1726b8c69af175714e1be662c01e3d710c grsecurity-3.0-3.14.25-201411231452.patch |
158 | 500f3577310be52e87b9fecdc2e9c4ca43210fd97d69089f9005d484563f74c7 fix-memory-map-for-PIE-applications.patch | 158 | 500f3577310be52e87b9fecdc2e9c4ca43210fd97d69089f9005d484563f74c7 fix-memory-map-for-PIE-applications.patch |
159 | 21179fbb22a5b74af0a609350ae1a170e232908572b201d02e791d2ce0a685d3 imx6q-no-unclocked-sleep.patch | 159 | 21179fbb22a5b74af0a609350ae1a170e232908572b201d02e791d2ce0a685d3 imx6q-no-unclocked-sleep.patch |
160 | 5e06e22ca723e50ae9f4bfabdda2e738f7b28cbbfe77b6be295285d6cd75c916 kernelconfig.x86 | 160 | 5e06e22ca723e50ae9f4bfabdda2e738f7b28cbbfe77b6be295285d6cd75c916 kernelconfig.x86 |
161 | 0ec1e1eb4445bd9751cb98a55afd4a430bed08e8d8c3c0a107d2f14ec5746dd2 kernelconfig.x86_64" | 161 | 0ec1e1eb4445bd9751cb98a55afd4a430bed08e8d8c3c0a107d2f14ec5746dd2 kernelconfig.x86_64" |
162 | sha512sums="5730d83a7a81134c1e77c0bf89e42dee4f8251ad56c1ac2be20c59e26fdfaa7bea55f277e7af156b637f22e1584914a46089af85039177cb43485089c74ac26e linux-3.14.tar.xz | 162 | sha512sums="5730d83a7a81134c1e77c0bf89e42dee4f8251ad56c1ac2be20c59e26fdfaa7bea55f277e7af156b637f22e1584914a46089af85039177cb43485089c74ac26e linux-3.14.tar.xz |
163 | 7f45dfd7340a41c360c7521b573adbb8569825aa078f7ef067a27f19be5c749e42965badde7cdf9c413374953e776e4cce43cd1856f9e08870793a50ba6ad0fb patch-3.14.24.xz | 163 | 0ba7ac8b4bc56115d2d88258573f334cb6d1dd7d302f24ae12c1ed693fc3a568801ffa75719ac7622dedf6673e6db6827bf31066b8afde97bc36d8c897e8cfa8 patch-3.14.25.xz |
164 | 35f27312fc83d0c4380742bca33ad2c9d8313d87c9e2299d58f422b15af993f2221e3d2332ad13d3a3151fafb055e738cec23c9de5d0d84d218cdcad70379030 grsecurity-3.0-3.14.24-201411150026.patch | 164 | baaf39b0d2c07a7b3a9829ec944349a4e687dfa78fd52fbdbfda8fed60755de959f133bb2fcc9c61cdd75c20b42160300b043082616b98612631030569d9ceb6 grsecurity-3.0-3.14.25-201411231452.patch |
165 | 4665c56ae1bbac311f9205d64918e84ee8b01d47d6e2396ff6b8adfb10aada7f7254531ce62e31edbb65c2a54a830f09ad05d314dfcd75d6272f4068945ad7c7 fix-memory-map-for-PIE-applications.patch | 165 | 4665c56ae1bbac311f9205d64918e84ee8b01d47d6e2396ff6b8adfb10aada7f7254531ce62e31edbb65c2a54a830f09ad05d314dfcd75d6272f4068945ad7c7 fix-memory-map-for-PIE-applications.patch |
166 | 87d1ad59732f265a5b0db54490dc1762c14ea4b868e7eb1aedc3ce57b48046de7bbc08cf5cfcf6f1380fa84063b0edb16ba3d5e3c5670be9bbb229275c88b221 imx6q-no-unclocked-sleep.patch | 166 | 87d1ad59732f265a5b0db54490dc1762c14ea4b868e7eb1aedc3ce57b48046de7bbc08cf5cfcf6f1380fa84063b0edb16ba3d5e3c5670be9bbb229275c88b221 imx6q-no-unclocked-sleep.patch |
167 | 29dc4bbde6052bb16200d87b7137717a053ad3c716a305a51d2b523531f35c1a7e144099f7a251c85849c9117a65ed961262dd314e0832f58750f489aeb1440e kernelconfig.x86 | 167 | 29dc4bbde6052bb16200d87b7137717a053ad3c716a305a51d2b523531f35c1a7e144099f7a251c85849c9117a65ed961262dd314e0832f58750f489aeb1440e kernelconfig.x86 |
diff --git a/main/linux-virt-grsec/grsecurity-3.0-3.14.24-201411150026.patch b/main/linux-virt-grsec/grsecurity-3.0-3.14.25-201411231452.patch index b8fbeb3c9e..ddf2dae84b 100644 --- a/main/linux-virt-grsec/grsecurity-3.0-3.14.24-201411150026.patch +++ b/main/linux-virt-grsec/grsecurity-3.0-3.14.25-201411231452.patch | |||
@@ -292,7 +292,7 @@ index 7116fda..2f71588 100644 | |||
292 | 292 | ||
293 | pcd. [PARIDE] | 293 | pcd. [PARIDE] |
294 | diff --git a/Makefile b/Makefile | 294 | diff --git a/Makefile b/Makefile |
295 | index 8fd0610..914c673 100644 | 295 | index eb96e40..b2742ca 100644 |
296 | --- a/Makefile | 296 | --- a/Makefile |
297 | +++ b/Makefile | 297 | +++ b/Makefile |
298 | @@ -244,8 +244,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ | 298 | @@ -244,8 +244,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ |
@@ -3780,7 +3780,7 @@ index 2dea8b5..6499da2 100644 | |||
3780 | extern void ux500_cpu_die(unsigned int cpu); | 3780 | extern void ux500_cpu_die(unsigned int cpu); |
3781 | 3781 | ||
3782 | diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig | 3782 | diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig |
3783 | index ca8ecde..58ba893 100644 | 3783 | index e9c290c..d0e3d41 100644 |
3784 | --- a/arch/arm/mm/Kconfig | 3784 | --- a/arch/arm/mm/Kconfig |
3785 | +++ b/arch/arm/mm/Kconfig | 3785 | +++ b/arch/arm/mm/Kconfig |
3786 | @@ -446,6 +446,7 @@ config CPU_32v5 | 3786 | @@ -446,6 +446,7 @@ config CPU_32v5 |
@@ -3799,15 +3799,16 @@ index ca8ecde..58ba893 100644 | |||
3799 | help | 3799 | help |
3800 | This option enables or disables the use of domain switching | 3800 | This option enables or disables the use of domain switching |
3801 | via the set_fs() function. | 3801 | via the set_fs() function. |
3802 | @@ -799,6 +801,7 @@ config NEED_KUSER_HELPERS | 3802 | @@ -798,7 +800,7 @@ config NEED_KUSER_HELPERS |
3803 | |||
3803 | config KUSER_HELPERS | 3804 | config KUSER_HELPERS |
3804 | bool "Enable kuser helpers in vector page" if !NEED_KUSER_HELPERS | 3805 | bool "Enable kuser helpers in vector page" if !NEED_KUSER_HELPERS |
3806 | - depends on MMU | ||
3807 | + depends on MMU && (!(CPU_V6 || CPU_V6K || CPU_V7) || GRKERNSEC_OLD_ARM_USERLAND) | ||
3805 | default y | 3808 | default y |
3806 | + depends on !(CPU_V6 || CPU_V6K || CPU_V7) || GRKERNSEC_OLD_ARM_USERLAND | ||
3807 | help | 3809 | help |
3808 | Warning: disabling this option may break user programs. | 3810 | Warning: disabling this option may break user programs. |
3809 | 3811 | @@ -812,7 +814,7 @@ config KUSER_HELPERS | |
3810 | @@ -811,7 +814,7 @@ config KUSER_HELPERS | ||
3811 | See Documentation/arm/kernel_user_helpers.txt for details. | 3812 | See Documentation/arm/kernel_user_helpers.txt for details. |
3812 | 3813 | ||
3813 | However, the fixed address nature of these helpers can be used | 3814 | However, the fixed address nature of these helpers can be used |
@@ -4827,19 +4828,6 @@ index 6c0f684..5faea9d 100644 | |||
4827 | #define access_ok(type, addr, size) __range_ok(addr, size) | 4828 | #define access_ok(type, addr, size) __range_ok(addr, size) |
4828 | #define user_addr_max get_fs | 4829 | #define user_addr_max get_fs |
4829 | 4830 | ||
4830 | diff --git a/arch/arm64/lib/clear_user.S b/arch/arm64/lib/clear_user.S | ||
4831 | index 6e0ed93..c17967f 100644 | ||
4832 | --- a/arch/arm64/lib/clear_user.S | ||
4833 | +++ b/arch/arm64/lib/clear_user.S | ||
4834 | @@ -46,7 +46,7 @@ USER(9f, strh wzr, [x0], #2 ) | ||
4835 | sub x1, x1, #2 | ||
4836 | 4: adds x1, x1, #1 | ||
4837 | b.mi 5f | ||
4838 | - strb wzr, [x0] | ||
4839 | +USER(9f, strb wzr, [x0] ) | ||
4840 | 5: mov x0, #0 | ||
4841 | ret | ||
4842 | ENDPROC(__clear_user) | ||
4843 | diff --git a/arch/avr32/include/asm/cache.h b/arch/avr32/include/asm/cache.h | 4831 | diff --git a/arch/avr32/include/asm/cache.h b/arch/avr32/include/asm/cache.h |
4844 | index c3a58a1..78fbf54 100644 | 4832 | index c3a58a1..78fbf54 100644 |
4845 | --- a/arch/avr32/include/asm/cache.h | 4833 | --- a/arch/avr32/include/asm/cache.h |
@@ -5013,7 +5001,7 @@ index b86329d..6709906 100644 | |||
5013 | { | 5001 | { |
5014 | int c, old; | 5002 | int c, old; |
5015 | diff --git a/arch/frv/include/asm/cache.h b/arch/frv/include/asm/cache.h | 5003 | diff --git a/arch/frv/include/asm/cache.h b/arch/frv/include/asm/cache.h |
5016 | index 2797163..c2a401d 100644 | 5004 | index 2797163..c2a401df9 100644 |
5017 | --- a/arch/frv/include/asm/cache.h | 5005 | --- a/arch/frv/include/asm/cache.h |
5018 | +++ b/arch/frv/include/asm/cache.h | 5006 | +++ b/arch/frv/include/asm/cache.h |
5019 | @@ -12,10 +12,11 @@ | 5007 | @@ -12,10 +12,11 @@ |
@@ -10393,10 +10381,10 @@ index c13c9f2..d572c34 100644 | |||
10393 | 10381 | ||
10394 | if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT))) | 10382 | if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT))) |
10395 | diff --git a/arch/sparc/kernel/smp_64.c b/arch/sparc/kernel/smp_64.c | 10383 | diff --git a/arch/sparc/kernel/smp_64.c b/arch/sparc/kernel/smp_64.c |
10396 | index 50c3dd03..adff164 100644 | 10384 | index 9af0a5d..06e12f4 100644 |
10397 | --- a/arch/sparc/kernel/smp_64.c | 10385 | --- a/arch/sparc/kernel/smp_64.c |
10398 | +++ b/arch/sparc/kernel/smp_64.c | 10386 | +++ b/arch/sparc/kernel/smp_64.c |
10399 | @@ -870,8 +870,8 @@ extern unsigned long xcall_flush_dcache_page_cheetah; | 10387 | @@ -874,8 +874,8 @@ extern unsigned long xcall_flush_dcache_page_cheetah; |
10400 | extern unsigned long xcall_flush_dcache_page_spitfire; | 10388 | extern unsigned long xcall_flush_dcache_page_spitfire; |
10401 | 10389 | ||
10402 | #ifdef CONFIG_DEBUG_DCFLUSH | 10390 | #ifdef CONFIG_DEBUG_DCFLUSH |
@@ -10407,7 +10395,7 @@ index 50c3dd03..adff164 100644 | |||
10407 | #endif | 10395 | #endif |
10408 | 10396 | ||
10409 | static inline void __local_flush_dcache_page(struct page *page) | 10397 | static inline void __local_flush_dcache_page(struct page *page) |
10410 | @@ -895,7 +895,7 @@ void smp_flush_dcache_page_impl(struct page *page, int cpu) | 10398 | @@ -899,7 +899,7 @@ void smp_flush_dcache_page_impl(struct page *page, int cpu) |
10411 | return; | 10399 | return; |
10412 | 10400 | ||
10413 | #ifdef CONFIG_DEBUG_DCFLUSH | 10401 | #ifdef CONFIG_DEBUG_DCFLUSH |
@@ -10416,7 +10404,7 @@ index 50c3dd03..adff164 100644 | |||
10416 | #endif | 10404 | #endif |
10417 | 10405 | ||
10418 | this_cpu = get_cpu(); | 10406 | this_cpu = get_cpu(); |
10419 | @@ -919,7 +919,7 @@ void smp_flush_dcache_page_impl(struct page *page, int cpu) | 10407 | @@ -923,7 +923,7 @@ void smp_flush_dcache_page_impl(struct page *page, int cpu) |
10420 | xcall_deliver(data0, __pa(pg_addr), | 10408 | xcall_deliver(data0, __pa(pg_addr), |
10421 | (u64) pg_addr, cpumask_of(cpu)); | 10409 | (u64) pg_addr, cpumask_of(cpu)); |
10422 | #ifdef CONFIG_DEBUG_DCFLUSH | 10410 | #ifdef CONFIG_DEBUG_DCFLUSH |
@@ -10425,7 +10413,7 @@ index 50c3dd03..adff164 100644 | |||
10425 | #endif | 10413 | #endif |
10426 | } | 10414 | } |
10427 | } | 10415 | } |
10428 | @@ -938,7 +938,7 @@ void flush_dcache_page_all(struct mm_struct *mm, struct page *page) | 10416 | @@ -942,7 +942,7 @@ void flush_dcache_page_all(struct mm_struct *mm, struct page *page) |
10429 | preempt_disable(); | 10417 | preempt_disable(); |
10430 | 10418 | ||
10431 | #ifdef CONFIG_DEBUG_DCFLUSH | 10419 | #ifdef CONFIG_DEBUG_DCFLUSH |
@@ -10434,7 +10422,7 @@ index 50c3dd03..adff164 100644 | |||
10434 | #endif | 10422 | #endif |
10435 | data0 = 0; | 10423 | data0 = 0; |
10436 | pg_addr = page_address(page); | 10424 | pg_addr = page_address(page); |
10437 | @@ -955,7 +955,7 @@ void flush_dcache_page_all(struct mm_struct *mm, struct page *page) | 10425 | @@ -959,7 +959,7 @@ void flush_dcache_page_all(struct mm_struct *mm, struct page *page) |
10438 | xcall_deliver(data0, __pa(pg_addr), | 10426 | xcall_deliver(data0, __pa(pg_addr), |
10439 | (u64) pg_addr, cpu_online_mask); | 10427 | (u64) pg_addr, cpu_online_mask); |
10440 | #ifdef CONFIG_DEBUG_DCFLUSH | 10428 | #ifdef CONFIG_DEBUG_DCFLUSH |
@@ -12598,7 +12586,7 @@ index 50f8c5e..4f84fff 100644 | |||
12598 | return diff; | 12586 | return diff; |
12599 | } | 12587 | } |
12600 | diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile | 12588 | diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile |
12601 | index 0fcd913..3bb5c42 100644 | 12589 | index 14fe7cb..829b962 100644 |
12602 | --- a/arch/x86/boot/compressed/Makefile | 12590 | --- a/arch/x86/boot/compressed/Makefile |
12603 | +++ b/arch/x86/boot/compressed/Makefile | 12591 | +++ b/arch/x86/boot/compressed/Makefile |
12604 | @@ -16,6 +16,9 @@ KBUILD_CFLAGS += $(cflags-y) | 12592 | @@ -16,6 +16,9 @@ KBUILD_CFLAGS += $(cflags-y) |
@@ -12654,7 +12642,7 @@ index a53440e..c3dbf1e 100644 | |||
12654 | .previous | 12642 | .previous |
12655 | 12643 | ||
12656 | diff --git a/arch/x86/boot/compressed/head_32.S b/arch/x86/boot/compressed/head_32.S | 12644 | diff --git a/arch/x86/boot/compressed/head_32.S b/arch/x86/boot/compressed/head_32.S |
12657 | index f45ab7a..ebc015f 100644 | 12645 | index c5b56ed..9f79ed3 100644 |
12658 | --- a/arch/x86/boot/compressed/head_32.S | 12646 | --- a/arch/x86/boot/compressed/head_32.S |
12659 | +++ b/arch/x86/boot/compressed/head_32.S | 12647 | +++ b/arch/x86/boot/compressed/head_32.S |
12660 | @@ -119,10 +119,10 @@ preferred_addr: | 12648 | @@ -119,10 +119,10 @@ preferred_addr: |
@@ -12671,7 +12659,7 @@ index f45ab7a..ebc015f 100644 | |||
12671 | 12659 | ||
12672 | /* Target address to relocate to for decompression */ | 12660 | /* Target address to relocate to for decompression */ |
12673 | diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S | 12661 | diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S |
12674 | index b10fa66..5ee0472 100644 | 12662 | index 34bbc09..c126b87 100644 |
12675 | --- a/arch/x86/boot/compressed/head_64.S | 12663 | --- a/arch/x86/boot/compressed/head_64.S |
12676 | +++ b/arch/x86/boot/compressed/head_64.S | 12664 | +++ b/arch/x86/boot/compressed/head_64.S |
12677 | @@ -94,10 +94,10 @@ ENTRY(startup_32) | 12665 | @@ -94,10 +94,10 @@ ENTRY(startup_32) |
@@ -12700,7 +12688,7 @@ index b10fa66..5ee0472 100644 | |||
12700 | 1: | 12688 | 1: |
12701 | 12689 | ||
12702 | /* Target address to relocate to for decompression */ | 12690 | /* Target address to relocate to for decompression */ |
12703 | @@ -363,8 +363,8 @@ gdt: | 12691 | @@ -366,8 +366,8 @@ gdt: |
12704 | .long gdt | 12692 | .long gdt |
12705 | .word 0 | 12693 | .word 0 |
12706 | .quad 0x0000000000000000 /* NULL descriptor */ | 12694 | .quad 0x0000000000000000 /* NULL descriptor */ |
@@ -12712,7 +12700,7 @@ index b10fa66..5ee0472 100644 | |||
12712 | .quad 0x0000000000000000 /* TS continued */ | 12700 | .quad 0x0000000000000000 /* TS continued */ |
12713 | gdt_end: | 12701 | gdt_end: |
12714 | diff --git a/arch/x86/boot/compressed/misc.c b/arch/x86/boot/compressed/misc.c | 12702 | diff --git a/arch/x86/boot/compressed/misc.c b/arch/x86/boot/compressed/misc.c |
12715 | index 196eaf3..c96716d 100644 | 12703 | index eb25ca1..3de0f7c 100644 |
12716 | --- a/arch/x86/boot/compressed/misc.c | 12704 | --- a/arch/x86/boot/compressed/misc.c |
12717 | +++ b/arch/x86/boot/compressed/misc.c | 12705 | +++ b/arch/x86/boot/compressed/misc.c |
12718 | @@ -218,7 +218,7 @@ void __putstr(const char *s) | 12706 | @@ -218,7 +218,7 @@ void __putstr(const char *s) |
@@ -12760,7 +12748,7 @@ index 196eaf3..c96716d 100644 | |||
12760 | break; | 12748 | break; |
12761 | default: /* Ignore other PT_* */ break; | 12749 | default: /* Ignore other PT_* */ break; |
12762 | } | 12750 | } |
12763 | @@ -430,7 +433,7 @@ asmlinkage void *decompress_kernel(void *rmode, memptr heap, | 12751 | @@ -437,7 +440,7 @@ asmlinkage void *decompress_kernel(void *rmode, memptr heap, |
12764 | error("Destination address too large"); | 12752 | error("Destination address too large"); |
12765 | #endif | 12753 | #endif |
12766 | #ifndef CONFIG_RELOCATABLE | 12754 | #ifndef CONFIG_RELOCATABLE |
@@ -21710,7 +21698,7 @@ index 639d128..e92d7e5 100644 | |||
21710 | 21698 | ||
21711 | while (amd_iommu_v2_event_descs[i].attr.attr.name) | 21699 | while (amd_iommu_v2_event_descs[i].attr.attr.name) |
21712 | diff --git a/arch/x86/kernel/cpu/perf_event_intel.c b/arch/x86/kernel/cpu/perf_event_intel.c | 21700 | diff --git a/arch/x86/kernel/cpu/perf_event_intel.c b/arch/x86/kernel/cpu/perf_event_intel.c |
21713 | index 1340ebf..fc6d5c9 100644 | 21701 | index 5ee8064..4d32df9 100644 |
21714 | --- a/arch/x86/kernel/cpu/perf_event_intel.c | 21702 | --- a/arch/x86/kernel/cpu/perf_event_intel.c |
21715 | +++ b/arch/x86/kernel/cpu/perf_event_intel.c | 21703 | +++ b/arch/x86/kernel/cpu/perf_event_intel.c |
21716 | @@ -2318,10 +2318,10 @@ __init int intel_pmu_init(void) | 21704 | @@ -2318,10 +2318,10 @@ __init int intel_pmu_init(void) |
@@ -26667,7 +26655,7 @@ index 9c0280f..5bbb1c0 100644 | |||
26667 | ip = *(u64 *)(fp+8); | 26655 | ip = *(u64 *)(fp+8); |
26668 | if (!in_sched_functions(ip)) | 26656 | if (!in_sched_functions(ip)) |
26669 | diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c | 26657 | diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c |
26670 | index 7461f50..01d0b9c 100644 | 26658 | index 0686fe3..836eed3 100644 |
26671 | --- a/arch/x86/kernel/ptrace.c | 26659 | --- a/arch/x86/kernel/ptrace.c |
26672 | +++ b/arch/x86/kernel/ptrace.c | 26660 | +++ b/arch/x86/kernel/ptrace.c |
26673 | @@ -184,14 +184,13 @@ unsigned long kernel_stack_pointer(struct pt_regs *regs) | 26661 | @@ -184,14 +184,13 @@ unsigned long kernel_stack_pointer(struct pt_regs *regs) |
@@ -26781,9 +26769,9 @@ index 7461f50..01d0b9c 100644 | |||
26781 | } | 26769 | } |
26782 | 26770 | ||
26783 | void user_single_step_siginfo(struct task_struct *tsk, | 26771 | void user_single_step_siginfo(struct task_struct *tsk, |
26784 | @@ -1450,6 +1463,10 @@ void send_sigtrap(struct task_struct *tsk, struct pt_regs *regs, | 26772 | @@ -1441,6 +1454,10 @@ void send_sigtrap(struct task_struct *tsk, struct pt_regs *regs, |
26785 | # define IS_IA32 0 | 26773 | force_sig_info(SIGTRAP, &info, tsk); |
26786 | #endif | 26774 | } |
26787 | 26775 | ||
26788 | +#ifdef CONFIG_GRKERNSEC_SETXID | 26776 | +#ifdef CONFIG_GRKERNSEC_SETXID |
26789 | +extern void gr_delayed_cred_worker(void); | 26777 | +extern void gr_delayed_cred_worker(void); |
@@ -26792,7 +26780,7 @@ index 7461f50..01d0b9c 100644 | |||
26792 | /* | 26780 | /* |
26793 | * We must return the syscall number to actually look up in the table. | 26781 | * We must return the syscall number to actually look up in the table. |
26794 | * This can be -1L to skip running any syscall at all. | 26782 | * This can be -1L to skip running any syscall at all. |
26795 | @@ -1460,6 +1477,11 @@ long syscall_trace_enter(struct pt_regs *regs) | 26783 | @@ -1451,6 +1468,11 @@ long syscall_trace_enter(struct pt_regs *regs) |
26796 | 26784 | ||
26797 | user_exit(); | 26785 | user_exit(); |
26798 | 26786 | ||
@@ -26804,7 +26792,7 @@ index 7461f50..01d0b9c 100644 | |||
26804 | /* | 26792 | /* |
26805 | * If we stepped into a sysenter/syscall insn, it trapped in | 26793 | * If we stepped into a sysenter/syscall insn, it trapped in |
26806 | * kernel mode; do_debug() cleared TF and set TIF_SINGLESTEP. | 26794 | * kernel mode; do_debug() cleared TF and set TIF_SINGLESTEP. |
26807 | @@ -1515,6 +1537,11 @@ void syscall_trace_leave(struct pt_regs *regs) | 26795 | @@ -1506,6 +1528,11 @@ void syscall_trace_leave(struct pt_regs *regs) |
26808 | */ | 26796 | */ |
26809 | user_exit(); | 26797 | user_exit(); |
26810 | 26798 | ||
@@ -28796,7 +28784,7 @@ index 0c90f4b..9fca4d7 100644 | |||
28796 | 28784 | ||
28797 | vcpu->arch.regs_avail = ~((1 << VCPU_REGS_RIP) | (1 << VCPU_REGS_RSP) | 28785 | vcpu->arch.regs_avail = ~((1 << VCPU_REGS_RIP) | (1 << VCPU_REGS_RSP) |
28798 | diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c | 28786 | diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c |
28799 | index 51c2851..394306f 100644 | 28787 | index fab97ad..394306f 100644 |
28800 | --- a/arch/x86/kvm/x86.c | 28788 | --- a/arch/x86/kvm/x86.c |
28801 | +++ b/arch/x86/kvm/x86.c | 28789 | +++ b/arch/x86/kvm/x86.c |
28802 | @@ -1806,8 +1806,8 @@ static int xen_hvm_config(struct kvm_vcpu *vcpu, u64 data) | 28790 | @@ -1806,8 +1806,8 @@ static int xen_hvm_config(struct kvm_vcpu *vcpu, u64 data) |
@@ -28819,15 +28807,6 @@ index 51c2851..394306f 100644 | |||
28819 | if (copy_to_user(user_msr_list->indices, &msrs_to_save, | 28807 | if (copy_to_user(user_msr_list->indices, &msrs_to_save, |
28820 | num_msrs_to_save * sizeof(u32))) | 28808 | num_msrs_to_save * sizeof(u32))) |
28821 | goto out; | 28809 | goto out; |
28822 | @@ -4911,7 +4913,7 @@ static int handle_emulation_failure(struct kvm_vcpu *vcpu) | ||
28823 | |||
28824 | ++vcpu->stat.insn_emulation_fail; | ||
28825 | trace_kvm_emulate_insn_failed(vcpu); | ||
28826 | - if (!is_guest_mode(vcpu)) { | ||
28827 | + if (!is_guest_mode(vcpu) && kvm_x86_ops->get_cpl(vcpu) == 0) { | ||
28828 | vcpu->run->exit_reason = KVM_EXIT_INTERNAL_ERROR; | ||
28829 | vcpu->run->internal.suberror = KVM_INTERNAL_ERROR_EMULATION; | ||
28830 | vcpu->run->internal.ndata = 0; | ||
28831 | @@ -5532,7 +5534,7 @@ static struct notifier_block pvclock_gtod_notifier = { | 28810 | @@ -5532,7 +5534,7 @@ static struct notifier_block pvclock_gtod_notifier = { |
28832 | }; | 28811 | }; |
28833 | #endif | 28812 | #endif |
@@ -33634,7 +33613,7 @@ index 9f0614d..92ae64a 100644 | |||
33634 | p += get_opcode(p, &opcode); | 33613 | p += get_opcode(p, &opcode); |
33635 | for (i = 0; i < ARRAY_SIZE(imm_wop); i++) | 33614 | for (i = 0; i < ARRAY_SIZE(imm_wop); i++) |
33636 | diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c | 33615 | diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c |
33637 | index c96314a..433b127 100644 | 33616 | index 0004ac7..2ab49d0 100644 |
33638 | --- a/arch/x86/mm/pgtable.c | 33617 | --- a/arch/x86/mm/pgtable.c |
33639 | +++ b/arch/x86/mm/pgtable.c | 33618 | +++ b/arch/x86/mm/pgtable.c |
33640 | @@ -97,10 +97,71 @@ static inline void pgd_list_del(pgd_t *pgd) | 33619 | @@ -97,10 +97,71 @@ static inline void pgd_list_del(pgd_t *pgd) |
@@ -40402,20 +40381,6 @@ index 57ea7f4..af06b76 100644 | |||
40402 | 40381 | ||
40403 | card->driver->update_phy_reg(card, 4, | 40382 | card->driver->update_phy_reg(card, 4, |
40404 | PHY_LINK_ACTIVE | PHY_CONTENDER, 0); | 40383 | PHY_LINK_ACTIVE | PHY_CONTENDER, 0); |
40405 | diff --git a/drivers/firewire/core-cdev.c b/drivers/firewire/core-cdev.c | ||
40406 | index d7d5c8a..6d44568 100644 | ||
40407 | --- a/drivers/firewire/core-cdev.c | ||
40408 | +++ b/drivers/firewire/core-cdev.c | ||
40409 | @@ -1637,8 +1637,7 @@ static int dispatch_ioctl(struct client *client, | ||
40410 | _IOC_SIZE(cmd) > sizeof(buffer)) | ||
40411 | return -ENOTTY; | ||
40412 | |||
40413 | - if (_IOC_DIR(cmd) == _IOC_READ) | ||
40414 | - memset(&buffer, 0, _IOC_SIZE(cmd)); | ||
40415 | + memset(&buffer, 0, sizeof(buffer)); | ||
40416 | |||
40417 | if (_IOC_DIR(cmd) & _IOC_WRITE) | ||
40418 | if (copy_from_user(&buffer, arg, _IOC_SIZE(cmd))) | ||
40419 | diff --git a/drivers/firewire/core-device.c b/drivers/firewire/core-device.c | 40384 | diff --git a/drivers/firewire/core-device.c b/drivers/firewire/core-device.c |
40420 | index 2c6d5e1..a2cca6b 100644 | 40385 | index 2c6d5e1..a2cca6b 100644 |
40421 | --- a/drivers/firewire/core-device.c | 40386 | --- a/drivers/firewire/core-device.c |
@@ -44779,7 +44744,7 @@ index 65ee3a0..1852af9 100644 | |||
44779 | 44744 | ||
44780 | void dm_uevent_add(struct mapped_device *md, struct list_head *elist) | 44745 | void dm_uevent_add(struct mapped_device *md, struct list_head *elist) |
44781 | diff --git a/drivers/md/md.c b/drivers/md/md.c | 44746 | diff --git a/drivers/md/md.c b/drivers/md/md.c |
44782 | index 73aedcb..424968a 100644 | 44747 | index 40959ee..ba57756 100644 |
44783 | --- a/drivers/md/md.c | 44748 | --- a/drivers/md/md.c |
44784 | +++ b/drivers/md/md.c | 44749 | +++ b/drivers/md/md.c |
44785 | @@ -194,10 +194,10 @@ EXPORT_SYMBOL_GPL(bio_clone_mddev); | 44750 | @@ -194,10 +194,10 @@ EXPORT_SYMBOL_GPL(bio_clone_mddev); |
@@ -44851,7 +44816,7 @@ index 73aedcb..424968a 100644 | |||
44851 | 44816 | ||
44852 | INIT_LIST_HEAD(&rdev->same_set); | 44817 | INIT_LIST_HEAD(&rdev->same_set); |
44853 | init_waitqueue_head(&rdev->blocked_wait); | 44818 | init_waitqueue_head(&rdev->blocked_wait); |
44854 | @@ -7075,7 +7075,7 @@ static int md_seq_show(struct seq_file *seq, void *v) | 44819 | @@ -7079,7 +7079,7 @@ static int md_seq_show(struct seq_file *seq, void *v) |
44855 | 44820 | ||
44856 | spin_unlock(&pers_lock); | 44821 | spin_unlock(&pers_lock); |
44857 | seq_printf(seq, "\n"); | 44822 | seq_printf(seq, "\n"); |
@@ -44860,7 +44825,7 @@ index 73aedcb..424968a 100644 | |||
44860 | return 0; | 44825 | return 0; |
44861 | } | 44826 | } |
44862 | if (v == (void*)2) { | 44827 | if (v == (void*)2) { |
44863 | @@ -7178,7 +7178,7 @@ static int md_seq_open(struct inode *inode, struct file *file) | 44828 | @@ -7182,7 +7182,7 @@ static int md_seq_open(struct inode *inode, struct file *file) |
44864 | return error; | 44829 | return error; |
44865 | 44830 | ||
44866 | seq = file->private_data; | 44831 | seq = file->private_data; |
@@ -44869,7 +44834,7 @@ index 73aedcb..424968a 100644 | |||
44869 | return error; | 44834 | return error; |
44870 | } | 44835 | } |
44871 | 44836 | ||
44872 | @@ -7192,7 +7192,7 @@ static unsigned int mdstat_poll(struct file *filp, poll_table *wait) | 44837 | @@ -7196,7 +7196,7 @@ static unsigned int mdstat_poll(struct file *filp, poll_table *wait) |
44873 | /* always allow read */ | 44838 | /* always allow read */ |
44874 | mask = POLLIN | POLLRDNORM; | 44839 | mask = POLLIN | POLLRDNORM; |
44875 | 44840 | ||
@@ -44878,7 +44843,7 @@ index 73aedcb..424968a 100644 | |||
44878 | mask |= POLLERR | POLLPRI; | 44843 | mask |= POLLERR | POLLPRI; |
44879 | return mask; | 44844 | return mask; |
44880 | } | 44845 | } |
44881 | @@ -7236,7 +7236,7 @@ static int is_mddev_idle(struct mddev *mddev, int init) | 44846 | @@ -7240,7 +7240,7 @@ static int is_mddev_idle(struct mddev *mddev, int init) |
44882 | struct gendisk *disk = rdev->bdev->bd_contains->bd_disk; | 44847 | struct gendisk *disk = rdev->bdev->bd_contains->bd_disk; |
44883 | curr_events = (int)part_stat_read(&disk->part0, sectors[0]) + | 44848 | curr_events = (int)part_stat_read(&disk->part0, sectors[0]) + |
44884 | (int)part_stat_read(&disk->part0, sectors[1]) - | 44849 | (int)part_stat_read(&disk->part0, sectors[1]) - |
@@ -46162,20 +46127,6 @@ index 98d24ae..bc22415 100644 | |||
46162 | return 1; | 46127 | return 1; |
46163 | } | 46128 | } |
46164 | 46129 | ||
46165 | diff --git a/drivers/media/usb/ttusb-dec/ttusbdecfe.c b/drivers/media/usb/ttusb-dec/ttusbdecfe.c | ||
46166 | index 5c45c9d..9c29552 100644 | ||
46167 | --- a/drivers/media/usb/ttusb-dec/ttusbdecfe.c | ||
46168 | +++ b/drivers/media/usb/ttusb-dec/ttusbdecfe.c | ||
46169 | @@ -156,6 +156,9 @@ static int ttusbdecfe_dvbs_diseqc_send_master_cmd(struct dvb_frontend* fe, struc | ||
46170 | 0x00, 0x00, 0x00, 0x00, | ||
46171 | 0x00, 0x00 }; | ||
46172 | |||
46173 | + if (cmd->msg_len > sizeof(b) - 4) | ||
46174 | + return -EINVAL; | ||
46175 | + | ||
46176 | memcpy(&b[4], cmd->msg, cmd->msg_len); | ||
46177 | |||
46178 | state->config->send_command(fe, 0x72, | ||
46179 | diff --git a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c b/drivers/media/v4l2-core/v4l2-compat-ioctl32.c | 46130 | diff --git a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c b/drivers/media/v4l2-core/v4l2-compat-ioctl32.c |
46180 | index fca336b..fb70ab7 100644 | 46131 | index fca336b..fb70ab7 100644 |
46181 | --- a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c | 46132 | --- a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c |
@@ -47773,7 +47724,7 @@ index fbf7dcd..ad71499 100644 | |||
47773 | }; | 47724 | }; |
47774 | 47725 | ||
47775 | diff --git a/drivers/net/macvtap.c b/drivers/net/macvtap.c | 47726 | diff --git a/drivers/net/macvtap.c b/drivers/net/macvtap.c |
47776 | index f30ceb1..81c589c 100644 | 47727 | index 07c942b..bce8b8a 100644 |
47777 | --- a/drivers/net/macvtap.c | 47728 | --- a/drivers/net/macvtap.c |
47778 | +++ b/drivers/net/macvtap.c | 47729 | +++ b/drivers/net/macvtap.c |
47779 | @@ -422,7 +422,7 @@ static void macvtap_setup(struct net_device *dev) | 47730 | @@ -422,7 +422,7 @@ static void macvtap_setup(struct net_device *dev) |
@@ -47785,7 +47736,7 @@ index f30ceb1..81c589c 100644 | |||
47785 | .kind = "macvtap", | 47736 | .kind = "macvtap", |
47786 | .setup = macvtap_setup, | 47737 | .setup = macvtap_setup, |
47787 | .newlink = macvtap_newlink, | 47738 | .newlink = macvtap_newlink, |
47788 | @@ -1018,7 +1018,7 @@ static long macvtap_ioctl(struct file *file, unsigned int cmd, | 47739 | @@ -1023,7 +1023,7 @@ static long macvtap_ioctl(struct file *file, unsigned int cmd, |
47789 | } | 47740 | } |
47790 | 47741 | ||
47791 | ret = 0; | 47742 | ret = 0; |
@@ -47794,7 +47745,7 @@ index f30ceb1..81c589c 100644 | |||
47794 | put_user(q->flags, &ifr->ifr_flags)) | 47745 | put_user(q->flags, &ifr->ifr_flags)) |
47795 | ret = -EFAULT; | 47746 | ret = -EFAULT; |
47796 | macvtap_put_vlan(vlan); | 47747 | macvtap_put_vlan(vlan); |
47797 | @@ -1188,7 +1188,7 @@ static int macvtap_device_event(struct notifier_block *unused, | 47748 | @@ -1193,7 +1193,7 @@ static int macvtap_device_event(struct notifier_block *unused, |
47798 | return NOTIFY_DONE; | 47749 | return NOTIFY_DONE; |
47799 | } | 47750 | } |
47800 | 47751 | ||
@@ -47825,6 +47776,21 @@ index 5a1897d..e860630 100644 | |||
47825 | break; | 47776 | break; |
47826 | err = 0; | 47777 | err = 0; |
47827 | break; | 47778 | break; |
47779 | diff --git a/drivers/net/ppp/pptp.c b/drivers/net/ppp/pptp.c | ||
47780 | index 1aff970..cc2ee29 100644 | ||
47781 | --- a/drivers/net/ppp/pptp.c | ||
47782 | +++ b/drivers/net/ppp/pptp.c | ||
47783 | @@ -506,7 +506,9 @@ static int pptp_getname(struct socket *sock, struct sockaddr *uaddr, | ||
47784 | int len = sizeof(struct sockaddr_pppox); | ||
47785 | struct sockaddr_pppox sp; | ||
47786 | |||
47787 | - sp.sa_family = AF_PPPOX; | ||
47788 | + memset(&sp.sa_addr, 0, sizeof(sp.sa_addr)); | ||
47789 | + | ||
47790 | + sp.sa_family = AF_PPPOX; | ||
47791 | sp.sa_protocol = PX_PROTO_PPTP; | ||
47792 | sp.sa_addr.pptp = pppox_sk(sock->sk)->proto.pptp.src_addr; | ||
47793 | |||
47828 | diff --git a/drivers/net/slip/slhc.c b/drivers/net/slip/slhc.c | 47794 | diff --git a/drivers/net/slip/slhc.c b/drivers/net/slip/slhc.c |
47829 | index 1252d9c..80e660b 100644 | 47795 | index 1252d9c..80e660b 100644 |
47830 | --- a/drivers/net/slip/slhc.c | 47796 | --- a/drivers/net/slip/slhc.c |
@@ -47852,10 +47818,10 @@ index 979fe43..1f1230c 100644 | |||
47852 | }; | 47818 | }; |
47853 | 47819 | ||
47854 | diff --git a/drivers/net/tun.c b/drivers/net/tun.c | 47820 | diff --git a/drivers/net/tun.c b/drivers/net/tun.c |
47855 | index 2c8b1c2..9942a89 100644 | 47821 | index ec63314..17810e8 100644 |
47856 | --- a/drivers/net/tun.c | 47822 | --- a/drivers/net/tun.c |
47857 | +++ b/drivers/net/tun.c | 47823 | +++ b/drivers/net/tun.c |
47858 | @@ -1883,7 +1883,7 @@ unlock: | 47824 | @@ -1882,7 +1882,7 @@ unlock: |
47859 | } | 47825 | } |
47860 | 47826 | ||
47861 | static long __tun_chr_ioctl(struct file *file, unsigned int cmd, | 47827 | static long __tun_chr_ioctl(struct file *file, unsigned int cmd, |
@@ -47864,7 +47830,7 @@ index 2c8b1c2..9942a89 100644 | |||
47864 | { | 47830 | { |
47865 | struct tun_file *tfile = file->private_data; | 47831 | struct tun_file *tfile = file->private_data; |
47866 | struct tun_struct *tun; | 47832 | struct tun_struct *tun; |
47867 | @@ -1896,6 +1896,9 @@ static long __tun_chr_ioctl(struct file *file, unsigned int cmd, | 47833 | @@ -1895,6 +1895,9 @@ static long __tun_chr_ioctl(struct file *file, unsigned int cmd, |
47868 | unsigned int ifindex; | 47834 | unsigned int ifindex; |
47869 | int ret; | 47835 | int ret; |
47870 | 47836 | ||
@@ -48001,7 +47967,7 @@ index a2515887..6d13233 100644 | |||
48001 | 47967 | ||
48002 | /* we will have to manufacture ethernet headers, prepare template */ | 47968 | /* we will have to manufacture ethernet headers, prepare template */ |
48003 | diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c | 47969 | diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c |
48004 | index 07a3255..4c59b30 100644 | 47970 | index 841b608..198a8b7 100644 |
48005 | --- a/drivers/net/virtio_net.c | 47971 | --- a/drivers/net/virtio_net.c |
48006 | +++ b/drivers/net/virtio_net.c | 47972 | +++ b/drivers/net/virtio_net.c |
48007 | @@ -47,7 +47,7 @@ module_param(gso, bool, 0444); | 47973 | @@ -47,7 +47,7 @@ module_param(gso, bool, 0444); |
@@ -48014,10 +47980,10 @@ index 07a3255..4c59b30 100644 | |||
48014 | #define VIRTNET_DRIVER_VERSION "1.0.0" | 47980 | #define VIRTNET_DRIVER_VERSION "1.0.0" |
48015 | 47981 | ||
48016 | diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c | 47982 | diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c |
48017 | index 0704a04..4208d2d 100644 | 47983 | index 5441b49..d8030d2 100644 |
48018 | --- a/drivers/net/vxlan.c | 47984 | --- a/drivers/net/vxlan.c |
48019 | +++ b/drivers/net/vxlan.c | 47985 | +++ b/drivers/net/vxlan.c |
48020 | @@ -2847,7 +2847,7 @@ nla_put_failure: | 47986 | @@ -2855,7 +2855,7 @@ nla_put_failure: |
48021 | return -EMSGSIZE; | 47987 | return -EMSGSIZE; |
48022 | } | 47988 | } |
48023 | 47989 | ||
@@ -48026,7 +47992,7 @@ index 0704a04..4208d2d 100644 | |||
48026 | .kind = "vxlan", | 47992 | .kind = "vxlan", |
48027 | .maxtype = IFLA_VXLAN_MAX, | 47993 | .maxtype = IFLA_VXLAN_MAX, |
48028 | .policy = vxlan_policy, | 47994 | .policy = vxlan_policy, |
48029 | @@ -2894,7 +2894,7 @@ static int vxlan_lowerdev_event(struct notifier_block *unused, | 47995 | @@ -2902,7 +2902,7 @@ static int vxlan_lowerdev_event(struct notifier_block *unused, |
48030 | return NOTIFY_DONE; | 47996 | return NOTIFY_DONE; |
48031 | } | 47997 | } |
48032 | 47998 | ||
@@ -48718,10 +48684,10 @@ index ea7e70c..bc0c45f 100644 | |||
48718 | data->sku_cap_band_24GHz_enable ? "" : "NOT", "enabled", | 48684 | data->sku_cap_band_24GHz_enable ? "" : "NOT", "enabled", |
48719 | data->sku_cap_band_52GHz_enable ? "" : "NOT", "enabled", | 48685 | data->sku_cap_band_52GHz_enable ? "" : "NOT", "enabled", |
48720 | diff --git a/drivers/net/wireless/iwlwifi/pcie/trans.c b/drivers/net/wireless/iwlwifi/pcie/trans.c | 48686 | diff --git a/drivers/net/wireless/iwlwifi/pcie/trans.c b/drivers/net/wireless/iwlwifi/pcie/trans.c |
48721 | index 16be0c0..eb0bc12 100644 | 48687 | index fb62927..2748d8c 100644 |
48722 | --- a/drivers/net/wireless/iwlwifi/pcie/trans.c | 48688 | --- a/drivers/net/wireless/iwlwifi/pcie/trans.c |
48723 | +++ b/drivers/net/wireless/iwlwifi/pcie/trans.c | 48689 | +++ b/drivers/net/wireless/iwlwifi/pcie/trans.c |
48724 | @@ -1371,7 +1371,7 @@ static ssize_t iwl_dbgfs_interrupt_write(struct file *file, | 48690 | @@ -1373,7 +1373,7 @@ static ssize_t iwl_dbgfs_interrupt_write(struct file *file, |
48725 | struct isr_statistics *isr_stats = &trans_pcie->isr_stats; | 48691 | struct isr_statistics *isr_stats = &trans_pcie->isr_stats; |
48726 | 48692 | ||
48727 | char buf[8]; | 48693 | char buf[8]; |
@@ -48730,7 +48696,7 @@ index 16be0c0..eb0bc12 100644 | |||
48730 | u32 reset_flag; | 48696 | u32 reset_flag; |
48731 | 48697 | ||
48732 | memset(buf, 0, sizeof(buf)); | 48698 | memset(buf, 0, sizeof(buf)); |
48733 | @@ -1392,7 +1392,7 @@ static ssize_t iwl_dbgfs_csr_write(struct file *file, | 48699 | @@ -1394,7 +1394,7 @@ static ssize_t iwl_dbgfs_csr_write(struct file *file, |
48734 | { | 48700 | { |
48735 | struct iwl_trans *trans = file->private_data; | 48701 | struct iwl_trans *trans = file->private_data; |
48736 | char buf[8]; | 48702 | char buf[8]; |
@@ -48740,10 +48706,10 @@ index 16be0c0..eb0bc12 100644 | |||
48740 | 48706 | ||
48741 | memset(buf, 0, sizeof(buf)); | 48707 | memset(buf, 0, sizeof(buf)); |
48742 | diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c | 48708 | diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c |
48743 | index 69d4c31..bd0b316 100644 | 48709 | index 505ff60..6a1c9aa 100644 |
48744 | --- a/drivers/net/wireless/mac80211_hwsim.c | 48710 | --- a/drivers/net/wireless/mac80211_hwsim.c |
48745 | +++ b/drivers/net/wireless/mac80211_hwsim.c | 48711 | +++ b/drivers/net/wireless/mac80211_hwsim.c |
48746 | @@ -2541,20 +2541,20 @@ static int __init init_mac80211_hwsim(void) | 48712 | @@ -2543,20 +2543,20 @@ static int __init init_mac80211_hwsim(void) |
48747 | if (channels < 1) | 48713 | if (channels < 1) |
48748 | return -EINVAL; | 48714 | return -EINVAL; |
48749 | 48715 | ||
@@ -64028,7 +63994,7 @@ index f4ccfe6..a5cf064 100644 | |||
64028 | static struct callback_op callback_ops[]; | 63994 | static struct callback_op callback_ops[]; |
64029 | 63995 | ||
64030 | diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c | 63996 | diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c |
64031 | index 15f9d98..082c625 100644 | 63997 | index 6659ce5..1e6de9b 100644 |
64032 | --- a/fs/nfs/inode.c | 63998 | --- a/fs/nfs/inode.c |
64033 | +++ b/fs/nfs/inode.c | 63999 | +++ b/fs/nfs/inode.c |
64034 | @@ -1189,16 +1189,16 @@ static int nfs_size_need_update(const struct inode *inode, const struct nfs_fatt | 64000 | @@ -1189,16 +1189,16 @@ static int nfs_size_need_update(const struct inode *inode, const struct nfs_fatt |
@@ -79642,19 +79608,6 @@ index 939533d..cf0a57c 100644 | |||
79642 | 79608 | ||
79643 | /** | 79609 | /** |
79644 | * struct clk_init_data - holds init data that's common to all clocks and is | 79610 | * struct clk_init_data - holds init data that's common to all clocks and is |
79645 | diff --git a/include/linux/clocksource.h b/include/linux/clocksource.h | ||
79646 | index 67301a4..879065d 100644 | ||
79647 | --- a/include/linux/clocksource.h | ||
79648 | +++ b/include/linux/clocksource.h | ||
79649 | @@ -289,7 +289,7 @@ extern struct clocksource* clocksource_get_next(void); | ||
79650 | extern void clocksource_change_rating(struct clocksource *cs, int rating); | ||
79651 | extern void clocksource_suspend(void); | ||
79652 | extern void clocksource_resume(void); | ||
79653 | -extern struct clocksource * __init __weak clocksource_default_clock(void); | ||
79654 | +extern struct clocksource * __init clocksource_default_clock(void); | ||
79655 | extern void clocksource_mark_unstable(struct clocksource *cs); | ||
79656 | |||
79657 | extern u64 | ||
79658 | diff --git a/include/linux/compat.h b/include/linux/compat.h | 79611 | diff --git a/include/linux/compat.h b/include/linux/compat.h |
79659 | index 3f448c6..df3ce1d 100644 | 79612 | index 3f448c6..df3ce1d 100644 |
79660 | --- a/include/linux/compat.h | 79613 | --- a/include/linux/compat.h |
@@ -79989,32 +79942,6 @@ index d08e4d2..95fad61 100644 | |||
79989 | int cpumask_any_but(const struct cpumask *mask, unsigned int cpu); | 79942 | int cpumask_any_but(const struct cpumask *mask, unsigned int cpu); |
79990 | 79943 | ||
79991 | /** | 79944 | /** |
79992 | diff --git a/include/linux/crash_dump.h b/include/linux/crash_dump.h | ||
79993 | index 7032518..60023e5 100644 | ||
79994 | --- a/include/linux/crash_dump.h | ||
79995 | +++ b/include/linux/crash_dump.h | ||
79996 | @@ -14,14 +14,13 @@ | ||
79997 | extern unsigned long long elfcorehdr_addr; | ||
79998 | extern unsigned long long elfcorehdr_size; | ||
79999 | |||
80000 | -extern int __weak elfcorehdr_alloc(unsigned long long *addr, | ||
80001 | - unsigned long long *size); | ||
80002 | -extern void __weak elfcorehdr_free(unsigned long long addr); | ||
80003 | -extern ssize_t __weak elfcorehdr_read(char *buf, size_t count, u64 *ppos); | ||
80004 | -extern ssize_t __weak elfcorehdr_read_notes(char *buf, size_t count, u64 *ppos); | ||
80005 | -extern int __weak remap_oldmem_pfn_range(struct vm_area_struct *vma, | ||
80006 | - unsigned long from, unsigned long pfn, | ||
80007 | - unsigned long size, pgprot_t prot); | ||
80008 | +extern int elfcorehdr_alloc(unsigned long long *addr, unsigned long long *size); | ||
80009 | +extern void elfcorehdr_free(unsigned long long addr); | ||
80010 | +extern ssize_t elfcorehdr_read(char *buf, size_t count, u64 *ppos); | ||
80011 | +extern ssize_t elfcorehdr_read_notes(char *buf, size_t count, u64 *ppos); | ||
80012 | +extern int remap_oldmem_pfn_range(struct vm_area_struct *vma, | ||
80013 | + unsigned long from, unsigned long pfn, | ||
80014 | + unsigned long size, pgprot_t prot); | ||
80015 | |||
80016 | extern ssize_t copy_oldmem_page(unsigned long, char *, size_t, | ||
80017 | unsigned long, int); | ||
80018 | diff --git a/include/linux/cred.h b/include/linux/cred.h | 79945 | diff --git a/include/linux/cred.h b/include/linux/cred.h |
80019 | index 04421e8..a85afd4 100644 | 79946 | index 04421e8..a85afd4 100644 |
80020 | --- a/include/linux/cred.h | 79947 | --- a/include/linux/cred.h |
@@ -82215,7 +82142,7 @@ index a74c3a8..28d3f21 100644 | |||
82215 | extern struct key_type key_type_keyring; | 82142 | extern struct key_type key_type_keyring; |
82216 | 82143 | ||
82217 | diff --git a/include/linux/kgdb.h b/include/linux/kgdb.h | 82144 | diff --git a/include/linux/kgdb.h b/include/linux/kgdb.h |
82218 | index 6b06d37..19f605f 100644 | 82145 | index e465bb1..19f605f 100644 |
82219 | --- a/include/linux/kgdb.h | 82146 | --- a/include/linux/kgdb.h |
82220 | +++ b/include/linux/kgdb.h | 82147 | +++ b/include/linux/kgdb.h |
82221 | @@ -52,7 +52,7 @@ extern int kgdb_connected; | 82148 | @@ -52,7 +52,7 @@ extern int kgdb_connected; |
@@ -82236,7 +82163,7 @@ index 6b06d37..19f605f 100644 | |||
82236 | 82163 | ||
82237 | /** | 82164 | /** |
82238 | * struct kgdb_io - Describe the interface for an I/O driver to talk with KGDB. | 82165 | * struct kgdb_io - Describe the interface for an I/O driver to talk with KGDB. |
82239 | @@ -279,11 +279,11 @@ struct kgdb_io { | 82166 | @@ -279,7 +279,7 @@ struct kgdb_io { |
82240 | void (*pre_exception) (void); | 82167 | void (*pre_exception) (void); |
82241 | void (*post_exception) (void); | 82168 | void (*post_exception) (void); |
82242 | int is_console; | 82169 | int is_console; |
@@ -82245,11 +82172,6 @@ index 6b06d37..19f605f 100644 | |||
82245 | 82172 | ||
82246 | extern struct kgdb_arch arch_kgdb_ops; | 82173 | extern struct kgdb_arch arch_kgdb_ops; |
82247 | 82174 | ||
82248 | -extern unsigned long __weak kgdb_arch_pc(int exception, struct pt_regs *regs); | ||
82249 | +extern unsigned long kgdb_arch_pc(int exception, struct pt_regs *regs); | ||
82250 | |||
82251 | #ifdef CONFIG_SERIAL_KGDB_NMI | ||
82252 | extern int kgdb_register_nmi_console(void); | ||
82253 | diff --git a/include/linux/kmod.h b/include/linux/kmod.h | 82175 | diff --git a/include/linux/kmod.h b/include/linux/kmod.h |
82254 | index 0555cc6..40116ce 100644 | 82176 | index 0555cc6..40116ce 100644 |
82255 | --- a/include/linux/kmod.h | 82177 | --- a/include/linux/kmod.h |
@@ -82499,19 +82421,6 @@ index c45c089..298841c 100644 | |||
82499 | { | 82421 | { |
82500 | u32 remainder; | 82422 | u32 remainder; |
82501 | return div_u64_rem(dividend, divisor, &remainder); | 82423 | return div_u64_rem(dividend, divisor, &remainder); |
82502 | diff --git a/include/linux/memory.h b/include/linux/memory.h | ||
82503 | index bb7384e..8b8d8d1 100644 | ||
82504 | --- a/include/linux/memory.h | ||
82505 | +++ b/include/linux/memory.h | ||
82506 | @@ -35,7 +35,7 @@ struct memory_block { | ||
82507 | }; | ||
82508 | |||
82509 | int arch_get_memory_phys_device(unsigned long start_pfn); | ||
82510 | -unsigned long __weak memory_block_size_bytes(void); | ||
82511 | +unsigned long memory_block_size_bytes(void); | ||
82512 | |||
82513 | /* These states are exposed to userspace as text strings in sysfs */ | ||
82514 | #define MEM_ONLINE (1<<0) /* exposed to userspace */ | ||
82515 | diff --git a/include/linux/mempolicy.h b/include/linux/mempolicy.h | 82424 | diff --git a/include/linux/mempolicy.h b/include/linux/mempolicy.h |
82516 | index 5bba088..7ad4ae7 100644 | 82425 | index 5bba088..7ad4ae7 100644 |
82517 | --- a/include/linux/mempolicy.h | 82426 | --- a/include/linux/mempolicy.h |
@@ -82538,7 +82447,7 @@ index 5bba088..7ad4ae7 100644 | |||
82538 | static inline int | 82447 | static inline int |
82539 | vma_dup_policy(struct vm_area_struct *src, struct vm_area_struct *dst) | 82448 | vma_dup_policy(struct vm_area_struct *src, struct vm_area_struct *dst) |
82540 | diff --git a/include/linux/mm.h b/include/linux/mm.h | 82449 | diff --git a/include/linux/mm.h b/include/linux/mm.h |
82541 | index 0a0b024..ebee54f 100644 | 82450 | index d5039da..71096b6 100644 |
82542 | --- a/include/linux/mm.h | 82451 | --- a/include/linux/mm.h |
82543 | +++ b/include/linux/mm.h | 82452 | +++ b/include/linux/mm.h |
82544 | @@ -127,6 +127,11 @@ extern unsigned int kobjsize(const void *objp); | 82453 | @@ -127,6 +127,11 @@ extern unsigned int kobjsize(const void *objp); |
@@ -82572,7 +82481,7 @@ index 0a0b024..ebee54f 100644 | |||
82572 | 82481 | ||
82573 | struct mmu_gather; | 82482 | struct mmu_gather; |
82574 | struct inode; | 82483 | struct inode; |
82575 | @@ -1112,8 +1118,8 @@ int follow_pfn(struct vm_area_struct *vma, unsigned long address, | 82484 | @@ -1120,8 +1126,8 @@ int follow_pfn(struct vm_area_struct *vma, unsigned long address, |
82576 | unsigned long *pfn); | 82485 | unsigned long *pfn); |
82577 | int follow_phys(struct vm_area_struct *vma, unsigned long address, | 82486 | int follow_phys(struct vm_area_struct *vma, unsigned long address, |
82578 | unsigned int flags, unsigned long *prot, resource_size_t *phys); | 82487 | unsigned int flags, unsigned long *prot, resource_size_t *phys); |
@@ -82583,7 +82492,7 @@ index 0a0b024..ebee54f 100644 | |||
82583 | 82492 | ||
82584 | static inline void unmap_shared_mapping_range(struct address_space *mapping, | 82493 | static inline void unmap_shared_mapping_range(struct address_space *mapping, |
82585 | loff_t const holebegin, loff_t const holelen) | 82494 | loff_t const holebegin, loff_t const holelen) |
82586 | @@ -1153,9 +1159,9 @@ static inline int fixup_user_fault(struct task_struct *tsk, | 82495 | @@ -1161,9 +1167,9 @@ static inline int fixup_user_fault(struct task_struct *tsk, |
82587 | } | 82496 | } |
82588 | #endif | 82497 | #endif |
82589 | 82498 | ||
@@ -82596,7 +82505,7 @@ index 0a0b024..ebee54f 100644 | |||
82596 | 82505 | ||
82597 | long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm, | 82506 | long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm, |
82598 | unsigned long start, unsigned long nr_pages, | 82507 | unsigned long start, unsigned long nr_pages, |
82599 | @@ -1187,34 +1193,6 @@ int set_page_dirty(struct page *page); | 82508 | @@ -1195,34 +1201,6 @@ int set_page_dirty(struct page *page); |
82600 | int set_page_dirty_lock(struct page *page); | 82509 | int set_page_dirty_lock(struct page *page); |
82601 | int clear_page_dirty_for_io(struct page *page); | 82510 | int clear_page_dirty_for_io(struct page *page); |
82602 | 82511 | ||
@@ -82631,7 +82540,7 @@ index 0a0b024..ebee54f 100644 | |||
82631 | extern pid_t | 82540 | extern pid_t |
82632 | vm_is_stack(struct task_struct *task, struct vm_area_struct *vma, int in_group); | 82541 | vm_is_stack(struct task_struct *task, struct vm_area_struct *vma, int in_group); |
82633 | 82542 | ||
82634 | @@ -1314,6 +1292,15 @@ static inline void sync_mm_rss(struct mm_struct *mm) | 82543 | @@ -1322,6 +1300,15 @@ static inline void sync_mm_rss(struct mm_struct *mm) |
82635 | } | 82544 | } |
82636 | #endif | 82545 | #endif |
82637 | 82546 | ||
@@ -82647,7 +82556,7 @@ index 0a0b024..ebee54f 100644 | |||
82647 | int vma_wants_writenotify(struct vm_area_struct *vma); | 82556 | int vma_wants_writenotify(struct vm_area_struct *vma); |
82648 | 82557 | ||
82649 | extern pte_t *__get_locked_pte(struct mm_struct *mm, unsigned long addr, | 82558 | extern pte_t *__get_locked_pte(struct mm_struct *mm, unsigned long addr, |
82650 | @@ -1332,8 +1319,15 @@ static inline int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, | 82559 | @@ -1340,8 +1327,15 @@ static inline int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, |
82651 | { | 82560 | { |
82652 | return 0; | 82561 | return 0; |
82653 | } | 82562 | } |
@@ -82663,7 +82572,7 @@ index 0a0b024..ebee54f 100644 | |||
82663 | #endif | 82572 | #endif |
82664 | 82573 | ||
82665 | #ifdef __PAGETABLE_PMD_FOLDED | 82574 | #ifdef __PAGETABLE_PMD_FOLDED |
82666 | @@ -1342,8 +1336,15 @@ static inline int __pmd_alloc(struct mm_struct *mm, pud_t *pud, | 82575 | @@ -1350,8 +1344,15 @@ static inline int __pmd_alloc(struct mm_struct *mm, pud_t *pud, |
82667 | { | 82576 | { |
82668 | return 0; | 82577 | return 0; |
82669 | } | 82578 | } |
@@ -82679,7 +82588,7 @@ index 0a0b024..ebee54f 100644 | |||
82679 | #endif | 82588 | #endif |
82680 | 82589 | ||
82681 | int __pte_alloc(struct mm_struct *mm, struct vm_area_struct *vma, | 82590 | int __pte_alloc(struct mm_struct *mm, struct vm_area_struct *vma, |
82682 | @@ -1361,11 +1362,23 @@ static inline pud_t *pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long a | 82591 | @@ -1369,11 +1370,23 @@ static inline pud_t *pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long a |
82683 | NULL: pud_offset(pgd, address); | 82592 | NULL: pud_offset(pgd, address); |
82684 | } | 82593 | } |
82685 | 82594 | ||
@@ -82703,7 +82612,7 @@ index 0a0b024..ebee54f 100644 | |||
82703 | #endif /* CONFIG_MMU && !__ARCH_HAS_4LEVEL_HACK */ | 82612 | #endif /* CONFIG_MMU && !__ARCH_HAS_4LEVEL_HACK */ |
82704 | 82613 | ||
82705 | #if USE_SPLIT_PTE_PTLOCKS | 82614 | #if USE_SPLIT_PTE_PTLOCKS |
82706 | @@ -1755,7 +1768,7 @@ extern int install_special_mapping(struct mm_struct *mm, | 82615 | @@ -1763,7 +1776,7 @@ extern int install_special_mapping(struct mm_struct *mm, |
82707 | unsigned long addr, unsigned long len, | 82616 | unsigned long addr, unsigned long len, |
82708 | unsigned long flags, struct page **pages); | 82617 | unsigned long flags, struct page **pages); |
82709 | 82618 | ||
@@ -82712,7 +82621,7 @@ index 0a0b024..ebee54f 100644 | |||
82712 | 82621 | ||
82713 | extern unsigned long mmap_region(struct file *file, unsigned long addr, | 82622 | extern unsigned long mmap_region(struct file *file, unsigned long addr, |
82714 | unsigned long len, vm_flags_t vm_flags, unsigned long pgoff); | 82623 | unsigned long len, vm_flags_t vm_flags, unsigned long pgoff); |
82715 | @@ -1763,6 +1776,7 @@ extern unsigned long do_mmap_pgoff(struct file *file, unsigned long addr, | 82624 | @@ -1771,6 +1784,7 @@ extern unsigned long do_mmap_pgoff(struct file *file, unsigned long addr, |
82716 | unsigned long len, unsigned long prot, unsigned long flags, | 82625 | unsigned long len, unsigned long prot, unsigned long flags, |
82717 | unsigned long pgoff, unsigned long *populate); | 82626 | unsigned long pgoff, unsigned long *populate); |
82718 | extern int do_munmap(struct mm_struct *, unsigned long, size_t); | 82627 | extern int do_munmap(struct mm_struct *, unsigned long, size_t); |
@@ -82720,7 +82629,7 @@ index 0a0b024..ebee54f 100644 | |||
82720 | 82629 | ||
82721 | #ifdef CONFIG_MMU | 82630 | #ifdef CONFIG_MMU |
82722 | extern int __mm_populate(unsigned long addr, unsigned long len, | 82631 | extern int __mm_populate(unsigned long addr, unsigned long len, |
82723 | @@ -1791,10 +1805,11 @@ struct vm_unmapped_area_info { | 82632 | @@ -1799,10 +1813,11 @@ struct vm_unmapped_area_info { |
82724 | unsigned long high_limit; | 82633 | unsigned long high_limit; |
82725 | unsigned long align_mask; | 82634 | unsigned long align_mask; |
82726 | unsigned long align_offset; | 82635 | unsigned long align_offset; |
@@ -82734,7 +82643,7 @@ index 0a0b024..ebee54f 100644 | |||
82734 | 82643 | ||
82735 | /* | 82644 | /* |
82736 | * Search for an unmapped address range. | 82645 | * Search for an unmapped address range. |
82737 | @@ -1806,7 +1821,7 @@ extern unsigned long unmapped_area_topdown(struct vm_unmapped_area_info *info); | 82646 | @@ -1814,7 +1829,7 @@ extern unsigned long unmapped_area_topdown(struct vm_unmapped_area_info *info); |
82738 | * - satisfies (begin_addr & align_mask) == (align_offset & align_mask) | 82647 | * - satisfies (begin_addr & align_mask) == (align_offset & align_mask) |
82739 | */ | 82648 | */ |
82740 | static inline unsigned long | 82649 | static inline unsigned long |
@@ -82743,7 +82652,7 @@ index 0a0b024..ebee54f 100644 | |||
82743 | { | 82652 | { |
82744 | if (!(info->flags & VM_UNMAPPED_AREA_TOPDOWN)) | 82653 | if (!(info->flags & VM_UNMAPPED_AREA_TOPDOWN)) |
82745 | return unmapped_area(info); | 82654 | return unmapped_area(info); |
82746 | @@ -1869,6 +1884,10 @@ extern struct vm_area_struct * find_vma(struct mm_struct * mm, unsigned long add | 82655 | @@ -1874,6 +1889,10 @@ extern struct vm_area_struct * find_vma(struct mm_struct * mm, unsigned long add |
82747 | extern struct vm_area_struct * find_vma_prev(struct mm_struct * mm, unsigned long addr, | 82656 | extern struct vm_area_struct * find_vma_prev(struct mm_struct * mm, unsigned long addr, |
82748 | struct vm_area_struct **pprev); | 82657 | struct vm_area_struct **pprev); |
82749 | 82658 | ||
@@ -82754,7 +82663,7 @@ index 0a0b024..ebee54f 100644 | |||
82754 | /* Look up the first VMA which intersects the interval start_addr..end_addr-1, | 82663 | /* Look up the first VMA which intersects the interval start_addr..end_addr-1, |
82755 | NULL if none. Assume start_addr < end_addr. */ | 82664 | NULL if none. Assume start_addr < end_addr. */ |
82756 | static inline struct vm_area_struct * find_vma_intersection(struct mm_struct * mm, unsigned long start_addr, unsigned long end_addr) | 82665 | static inline struct vm_area_struct * find_vma_intersection(struct mm_struct * mm, unsigned long start_addr, unsigned long end_addr) |
82757 | @@ -1897,15 +1916,6 @@ static inline struct vm_area_struct *find_exact_vma(struct mm_struct *mm, | 82666 | @@ -1902,15 +1921,6 @@ static inline struct vm_area_struct *find_exact_vma(struct mm_struct *mm, |
82758 | return vma; | 82667 | return vma; |
82759 | } | 82668 | } |
82760 | 82669 | ||
@@ -82770,7 +82679,7 @@ index 0a0b024..ebee54f 100644 | |||
82770 | #ifdef CONFIG_NUMA_BALANCING | 82679 | #ifdef CONFIG_NUMA_BALANCING |
82771 | unsigned long change_prot_numa(struct vm_area_struct *vma, | 82680 | unsigned long change_prot_numa(struct vm_area_struct *vma, |
82772 | unsigned long start, unsigned long end); | 82681 | unsigned long start, unsigned long end); |
82773 | @@ -1957,6 +1967,11 @@ void vm_stat_account(struct mm_struct *, unsigned long, struct file *, long); | 82682 | @@ -1962,6 +1972,11 @@ void vm_stat_account(struct mm_struct *, unsigned long, struct file *, long); |
82774 | static inline void vm_stat_account(struct mm_struct *mm, | 82683 | static inline void vm_stat_account(struct mm_struct *mm, |
82775 | unsigned long flags, struct file *file, long pages) | 82684 | unsigned long flags, struct file *file, long pages) |
82776 | { | 82685 | { |
@@ -82782,7 +82691,7 @@ index 0a0b024..ebee54f 100644 | |||
82782 | mm->total_vm += pages; | 82691 | mm->total_vm += pages; |
82783 | } | 82692 | } |
82784 | #endif /* CONFIG_PROC_FS */ | 82693 | #endif /* CONFIG_PROC_FS */ |
82785 | @@ -2038,7 +2053,7 @@ extern int unpoison_memory(unsigned long pfn); | 82694 | @@ -2043,7 +2058,7 @@ extern int unpoison_memory(unsigned long pfn); |
82786 | extern int sysctl_memory_failure_early_kill; | 82695 | extern int sysctl_memory_failure_early_kill; |
82787 | extern int sysctl_memory_failure_recovery; | 82696 | extern int sysctl_memory_failure_recovery; |
82788 | extern void shake_page(struct page *p, int access); | 82697 | extern void shake_page(struct page *p, int access); |
@@ -82791,7 +82700,7 @@ index 0a0b024..ebee54f 100644 | |||
82791 | extern int soft_offline_page(struct page *page, int flags); | 82700 | extern int soft_offline_page(struct page *page, int flags); |
82792 | 82701 | ||
82793 | #if defined(CONFIG_TRANSPARENT_HUGEPAGE) || defined(CONFIG_HUGETLBFS) | 82702 | #if defined(CONFIG_TRANSPARENT_HUGEPAGE) || defined(CONFIG_HUGETLBFS) |
82794 | @@ -2073,5 +2088,11 @@ void __init setup_nr_node_ids(void); | 82703 | @@ -2078,5 +2093,11 @@ void __init setup_nr_node_ids(void); |
82795 | static inline void setup_nr_node_ids(void) {} | 82704 | static inline void setup_nr_node_ids(void) {} |
82796 | #endif | 82705 | #endif |
82797 | 82706 | ||
@@ -82868,10 +82777,10 @@ index c5d5278..f0b68c8 100644 | |||
82868 | } | 82777 | } |
82869 | 82778 | ||
82870 | diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h | 82779 | diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h |
82871 | index e6800f0..d59674e 100644 | 82780 | index 1884353..626ca6b 100644 |
82872 | --- a/include/linux/mmzone.h | 82781 | --- a/include/linux/mmzone.h |
82873 | +++ b/include/linux/mmzone.h | 82782 | +++ b/include/linux/mmzone.h |
82874 | @@ -400,7 +400,7 @@ struct zone { | 82783 | @@ -401,7 +401,7 @@ struct zone { |
82875 | unsigned long flags; /* zone flags, see below */ | 82784 | unsigned long flags; /* zone flags, see below */ |
82876 | 82785 | ||
82877 | /* Zone statistics */ | 82786 | /* Zone statistics */ |
@@ -85957,24 +85866,8 @@ index 4a5b9a3..ca27d73 100644 | |||
85957 | .update = sctp_csum_update, | 85866 | .update = sctp_csum_update, |
85958 | .combine = sctp_csum_combine, | 85867 | .combine = sctp_csum_combine, |
85959 | }; | 85868 | }; |
85960 | diff --git a/include/net/sctp/sctp.h b/include/net/sctp/sctp.h | ||
85961 | index a3353f4..ba41e01 100644 | ||
85962 | --- a/include/net/sctp/sctp.h | ||
85963 | +++ b/include/net/sctp/sctp.h | ||
85964 | @@ -433,6 +433,11 @@ static inline void sctp_assoc_pending_pmtu(struct sock *sk, struct sctp_associat | ||
85965 | asoc->pmtu_pending = 0; | ||
85966 | } | ||
85967 | |||
85968 | +static inline bool sctp_chunk_pending(const struct sctp_chunk *chunk) | ||
85969 | +{ | ||
85970 | + return !list_empty(&chunk->list); | ||
85971 | +} | ||
85972 | + | ||
85973 | /* Walk through a list of TLV parameters. Don't trust the | ||
85974 | * individual parameter lengths and instead depend on | ||
85975 | * the chunk length to indicate when to stop. Make sure | ||
85976 | diff --git a/include/net/sctp/sm.h b/include/net/sctp/sm.h | 85869 | diff --git a/include/net/sctp/sm.h b/include/net/sctp/sm.h |
85977 | index 7f4eeb3..aaa63d9 100644 | 85870 | index 72a31db..aaa63d9 100644 |
85978 | --- a/include/net/sctp/sm.h | 85871 | --- a/include/net/sctp/sm.h |
85979 | +++ b/include/net/sctp/sm.h | 85872 | +++ b/include/net/sctp/sm.h |
85980 | @@ -80,7 +80,7 @@ typedef void (sctp_timer_event_t) (unsigned long); | 85873 | @@ -80,7 +80,7 @@ typedef void (sctp_timer_event_t) (unsigned long); |
@@ -85986,19 +85879,6 @@ index 7f4eeb3..aaa63d9 100644 | |||
85986 | 85879 | ||
85987 | /* A naming convention of "sctp_sf_xxx" applies to all the state functions | 85880 | /* A naming convention of "sctp_sf_xxx" applies to all the state functions |
85988 | * currently in use. | 85881 | * currently in use. |
85989 | @@ -248,9 +248,9 @@ struct sctp_chunk *sctp_make_asconf_update_ip(struct sctp_association *, | ||
85990 | int, __be16); | ||
85991 | struct sctp_chunk *sctp_make_asconf_set_prim(struct sctp_association *asoc, | ||
85992 | union sctp_addr *addr); | ||
85993 | -int sctp_verify_asconf(const struct sctp_association *asoc, | ||
85994 | - struct sctp_paramhdr *param_hdr, void *chunk_end, | ||
85995 | - struct sctp_paramhdr **errp); | ||
85996 | +bool sctp_verify_asconf(const struct sctp_association *asoc, | ||
85997 | + struct sctp_chunk *chunk, bool addr_param_needed, | ||
85998 | + struct sctp_paramhdr **errp); | ||
85999 | struct sctp_chunk *sctp_process_asconf(struct sctp_association *asoc, | ||
86000 | struct sctp_chunk *asconf); | ||
86001 | int sctp_process_asconf_ack(struct sctp_association *asoc, | ||
86002 | @@ -292,7 +292,7 @@ __u32 sctp_generate_tag(const struct sctp_endpoint *); | 85882 | @@ -292,7 +292,7 @@ __u32 sctp_generate_tag(const struct sctp_endpoint *); |
86003 | __u32 sctp_generate_tsn(const struct sctp_endpoint *); | 85883 | __u32 sctp_generate_tsn(const struct sctp_endpoint *); |
86004 | 85884 | ||
@@ -87234,7 +87114,7 @@ index f486b00..442867f 100644 | |||
87234 | case SHMDT: | 87114 | case SHMDT: |
87235 | return sys_shmdt(compat_ptr(ptr)); | 87115 | return sys_shmdt(compat_ptr(ptr)); |
87236 | diff --git a/ipc/ipc_sysctl.c b/ipc/ipc_sysctl.c | 87116 | diff --git a/ipc/ipc_sysctl.c b/ipc/ipc_sysctl.c |
87237 | index 1702864..797fa84 100644 | 87117 | index cadddc8..c263084 100644 |
87238 | --- a/ipc/ipc_sysctl.c | 87118 | --- a/ipc/ipc_sysctl.c |
87239 | +++ b/ipc/ipc_sysctl.c | 87119 | +++ b/ipc/ipc_sysctl.c |
87240 | @@ -30,7 +30,7 @@ static void *get_ipc(ctl_table *table) | 87120 | @@ -30,7 +30,7 @@ static void *get_ipc(ctl_table *table) |
@@ -87279,9 +87159,9 @@ index 1702864..797fa84 100644 | |||
87279 | { | 87159 | { |
87280 | - struct ctl_table ipc_table; | 87160 | - struct ctl_table ipc_table; |
87281 | + ctl_table_no_const ipc_table; | 87161 | + ctl_table_no_const ipc_table; |
87282 | size_t lenp_bef = *lenp; | ||
87283 | int oldval; | 87162 | int oldval; |
87284 | int rc; | 87163 | int rc; |
87164 | |||
87285 | diff --git a/ipc/mq_sysctl.c b/ipc/mq_sysctl.c | 87165 | diff --git a/ipc/mq_sysctl.c b/ipc/mq_sysctl.c |
87286 | index 5bb8bfe..a38ec05 100644 | 87166 | index 5bb8bfe..a38ec05 100644 |
87287 | --- a/ipc/mq_sysctl.c | 87167 | --- a/ipc/mq_sysctl.c |
@@ -87513,7 +87393,7 @@ index 8d6e145..33e0b1e 100644 | |||
87513 | current->signal->rlim[RLIMIT_FSIZE].rlim_cur = flim; | 87393 | current->signal->rlim[RLIMIT_FSIZE].rlim_cur = flim; |
87514 | set_fs(fs); | 87394 | set_fs(fs); |
87515 | diff --git a/kernel/audit.c b/kernel/audit.c | 87395 | diff --git a/kernel/audit.c b/kernel/audit.c |
87516 | index 2c0ecd1..80d068a 100644 | 87396 | index b45b2da..159e8c4 100644 |
87517 | --- a/kernel/audit.c | 87397 | --- a/kernel/audit.c |
87518 | +++ b/kernel/audit.c | 87398 | +++ b/kernel/audit.c |
87519 | @@ -122,7 +122,7 @@ u32 audit_sig_sid = 0; | 87399 | @@ -122,7 +122,7 @@ u32 audit_sig_sid = 0; |
@@ -88117,10 +87997,10 @@ index 0b097c8..11dd5c5 100644 | |||
88117 | #ifdef CONFIG_MODULE_UNLOAD | 87997 | #ifdef CONFIG_MODULE_UNLOAD |
88118 | { | 87998 | { |
88119 | diff --git a/kernel/events/core.c b/kernel/events/core.c | 87999 | diff --git a/kernel/events/core.c b/kernel/events/core.c |
88120 | index 4ced342f..6624485 100644 | 88000 | index 4bbb27a..decf605 100644 |
88121 | --- a/kernel/events/core.c | 88001 | --- a/kernel/events/core.c |
88122 | +++ b/kernel/events/core.c | 88002 | +++ b/kernel/events/core.c |
88123 | @@ -158,8 +158,15 @@ static struct srcu_struct pmus_srcu; | 88003 | @@ -159,8 +159,15 @@ static struct srcu_struct pmus_srcu; |
88124 | * 0 - disallow raw tracepoint access for unpriv | 88004 | * 0 - disallow raw tracepoint access for unpriv |
88125 | * 1 - disallow cpu events for unpriv | 88005 | * 1 - disallow cpu events for unpriv |
88126 | * 2 - disallow kernel profiling for unpriv | 88006 | * 2 - disallow kernel profiling for unpriv |
@@ -88137,7 +88017,7 @@ index 4ced342f..6624485 100644 | |||
88137 | 88017 | ||
88138 | /* Minimum for 512 kiB + 1 user control page */ | 88018 | /* Minimum for 512 kiB + 1 user control page */ |
88139 | int sysctl_perf_event_mlock __read_mostly = 512 + (PAGE_SIZE / 1024); /* 'free' kiB per user */ | 88019 | int sysctl_perf_event_mlock __read_mostly = 512 + (PAGE_SIZE / 1024); /* 'free' kiB per user */ |
88140 | @@ -185,7 +192,7 @@ void update_perf_cpu_limits(void) | 88020 | @@ -186,7 +193,7 @@ void update_perf_cpu_limits(void) |
88141 | 88021 | ||
88142 | tmp *= sysctl_perf_cpu_time_max_percent; | 88022 | tmp *= sysctl_perf_cpu_time_max_percent; |
88143 | do_div(tmp, 100); | 88023 | do_div(tmp, 100); |
@@ -88146,7 +88026,7 @@ index 4ced342f..6624485 100644 | |||
88146 | } | 88026 | } |
88147 | 88027 | ||
88148 | static int perf_rotate_context(struct perf_cpu_context *cpuctx); | 88028 | static int perf_rotate_context(struct perf_cpu_context *cpuctx); |
88149 | @@ -272,7 +279,7 @@ void perf_sample_event_took(u64 sample_len_ns) | 88029 | @@ -273,7 +280,7 @@ void perf_sample_event_took(u64 sample_len_ns) |
88150 | update_perf_cpu_limits(); | 88030 | update_perf_cpu_limits(); |
88151 | } | 88031 | } |
88152 | 88032 | ||
@@ -88155,7 +88035,7 @@ index 4ced342f..6624485 100644 | |||
88155 | 88035 | ||
88156 | static void cpu_ctx_sched_out(struct perf_cpu_context *cpuctx, | 88036 | static void cpu_ctx_sched_out(struct perf_cpu_context *cpuctx, |
88157 | enum event_type_t event_type); | 88037 | enum event_type_t event_type); |
88158 | @@ -3010,7 +3017,7 @@ static void __perf_event_read(void *info) | 88038 | @@ -3011,7 +3018,7 @@ static void __perf_event_read(void *info) |
88159 | 88039 | ||
88160 | static inline u64 perf_event_count(struct perf_event *event) | 88040 | static inline u64 perf_event_count(struct perf_event *event) |
88161 | { | 88041 | { |
@@ -88164,7 +88044,7 @@ index 4ced342f..6624485 100644 | |||
88164 | } | 88044 | } |
88165 | 88045 | ||
88166 | static u64 perf_event_read(struct perf_event *event) | 88046 | static u64 perf_event_read(struct perf_event *event) |
88167 | @@ -3375,9 +3382,9 @@ u64 perf_event_read_value(struct perf_event *event, u64 *enabled, u64 *running) | 88047 | @@ -3376,9 +3383,9 @@ u64 perf_event_read_value(struct perf_event *event, u64 *enabled, u64 *running) |
88168 | mutex_lock(&event->child_mutex); | 88048 | mutex_lock(&event->child_mutex); |
88169 | total += perf_event_read(event); | 88049 | total += perf_event_read(event); |
88170 | *enabled += event->total_time_enabled + | 88050 | *enabled += event->total_time_enabled + |
@@ -88176,7 +88056,7 @@ index 4ced342f..6624485 100644 | |||
88176 | 88056 | ||
88177 | list_for_each_entry(child, &event->child_list, child_list) { | 88057 | list_for_each_entry(child, &event->child_list, child_list) { |
88178 | total += perf_event_read(child); | 88058 | total += perf_event_read(child); |
88179 | @@ -3806,10 +3813,10 @@ void perf_event_update_userpage(struct perf_event *event) | 88059 | @@ -3827,10 +3834,10 @@ void perf_event_update_userpage(struct perf_event *event) |
88180 | userpg->offset -= local64_read(&event->hw.prev_count); | 88060 | userpg->offset -= local64_read(&event->hw.prev_count); |
88181 | 88061 | ||
88182 | userpg->time_enabled = enabled + | 88062 | userpg->time_enabled = enabled + |
@@ -88189,7 +88069,7 @@ index 4ced342f..6624485 100644 | |||
88189 | 88069 | ||
88190 | arch_perf_update_userpage(userpg, now); | 88070 | arch_perf_update_userpage(userpg, now); |
88191 | 88071 | ||
88192 | @@ -4360,7 +4367,7 @@ perf_output_sample_ustack(struct perf_output_handle *handle, u64 dump_size, | 88072 | @@ -4381,7 +4388,7 @@ perf_output_sample_ustack(struct perf_output_handle *handle, u64 dump_size, |
88193 | 88073 | ||
88194 | /* Data. */ | 88074 | /* Data. */ |
88195 | sp = perf_user_stack_pointer(regs); | 88075 | sp = perf_user_stack_pointer(regs); |
@@ -88198,7 +88078,7 @@ index 4ced342f..6624485 100644 | |||
88198 | dyn_size = dump_size - rem; | 88078 | dyn_size = dump_size - rem; |
88199 | 88079 | ||
88200 | perf_output_skip(handle, rem); | 88080 | perf_output_skip(handle, rem); |
88201 | @@ -4451,11 +4458,11 @@ static void perf_output_read_one(struct perf_output_handle *handle, | 88081 | @@ -4472,11 +4479,11 @@ static void perf_output_read_one(struct perf_output_handle *handle, |
88202 | values[n++] = perf_event_count(event); | 88082 | values[n++] = perf_event_count(event); |
88203 | if (read_format & PERF_FORMAT_TOTAL_TIME_ENABLED) { | 88083 | if (read_format & PERF_FORMAT_TOTAL_TIME_ENABLED) { |
88204 | values[n++] = enabled + | 88084 | values[n++] = enabled + |
@@ -88212,7 +88092,7 @@ index 4ced342f..6624485 100644 | |||
88212 | } | 88092 | } |
88213 | if (read_format & PERF_FORMAT_ID) | 88093 | if (read_format & PERF_FORMAT_ID) |
88214 | values[n++] = primary_event_id(event); | 88094 | values[n++] = primary_event_id(event); |
88215 | @@ -6734,7 +6741,7 @@ perf_event_alloc(struct perf_event_attr *attr, int cpu, | 88095 | @@ -6755,7 +6762,7 @@ perf_event_alloc(struct perf_event_attr *attr, int cpu, |
88216 | event->parent = parent_event; | 88096 | event->parent = parent_event; |
88217 | 88097 | ||
88218 | event->ns = get_pid_ns(task_active_pid_ns(current)); | 88098 | event->ns = get_pid_ns(task_active_pid_ns(current)); |
@@ -88221,7 +88101,7 @@ index 4ced342f..6624485 100644 | |||
88221 | 88101 | ||
88222 | event->state = PERF_EVENT_STATE_INACTIVE; | 88102 | event->state = PERF_EVENT_STATE_INACTIVE; |
88223 | 88103 | ||
88224 | @@ -7034,6 +7041,11 @@ SYSCALL_DEFINE5(perf_event_open, | 88104 | @@ -7055,6 +7062,11 @@ SYSCALL_DEFINE5(perf_event_open, |
88225 | if (flags & ~PERF_FLAG_ALL) | 88105 | if (flags & ~PERF_FLAG_ALL) |
88226 | return -EINVAL; | 88106 | return -EINVAL; |
88227 | 88107 | ||
@@ -88233,7 +88113,7 @@ index 4ced342f..6624485 100644 | |||
88233 | err = perf_copy_attr(attr_uptr, &attr); | 88113 | err = perf_copy_attr(attr_uptr, &attr); |
88234 | if (err) | 88114 | if (err) |
88235 | return err; | 88115 | return err; |
88236 | @@ -7372,10 +7384,10 @@ static void sync_child_event(struct perf_event *child_event, | 88116 | @@ -7393,10 +7405,10 @@ static void sync_child_event(struct perf_event *child_event, |
88237 | /* | 88117 | /* |
88238 | * Add back the child's count to the parent's count: | 88118 | * Add back the child's count to the parent's count: |
88239 | */ | 88119 | */ |
@@ -91264,7 +91144,7 @@ index 732f8ae..42c1919 100644 | |||
91264 | for (i = 0; i < RCU_TORTURE_PIPE_LEN + 1; i++) { | 91144 | for (i = 0; i < RCU_TORTURE_PIPE_LEN + 1; i++) { |
91265 | per_cpu(rcu_torture_count, cpu)[i] = 0; | 91145 | per_cpu(rcu_torture_count, cpu)[i] = 0; |
91266 | diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c | 91146 | diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c |
91267 | index b3d116c..ebf6598 100644 | 91147 | index 6705d94..137e56f 100644 |
91268 | --- a/kernel/rcu/tree.c | 91148 | --- a/kernel/rcu/tree.c |
91269 | +++ b/kernel/rcu/tree.c | 91149 | +++ b/kernel/rcu/tree.c |
91270 | @@ -390,9 +390,9 @@ static void rcu_eqs_enter_common(struct rcu_dynticks *rdtp, long long oldval, | 91150 | @@ -390,9 +390,9 @@ static void rcu_eqs_enter_common(struct rcu_dynticks *rdtp, long long oldval, |
@@ -91349,7 +91229,7 @@ index b3d116c..ebf6598 100644 | |||
91349 | snap = (unsigned int)rdp->dynticks_snap; | 91229 | snap = (unsigned int)rdp->dynticks_snap; |
91350 | 91230 | ||
91351 | /* | 91231 | /* |
91352 | @@ -1450,9 +1450,9 @@ static int rcu_gp_init(struct rcu_state *rsp) | 91232 | @@ -1466,9 +1466,9 @@ static int rcu_gp_init(struct rcu_state *rsp) |
91353 | rdp = this_cpu_ptr(rsp->rda); | 91233 | rdp = this_cpu_ptr(rsp->rda); |
91354 | rcu_preempt_check_blocked_tasks(rnp); | 91234 | rcu_preempt_check_blocked_tasks(rnp); |
91355 | rnp->qsmask = rnp->qsmaskinit; | 91235 | rnp->qsmask = rnp->qsmaskinit; |
@@ -91361,7 +91241,7 @@ index b3d116c..ebf6598 100644 | |||
91361 | if (rnp == rdp->mynode) | 91241 | if (rnp == rdp->mynode) |
91362 | __note_gp_changes(rsp, rnp, rdp); | 91242 | __note_gp_changes(rsp, rnp, rdp); |
91363 | rcu_preempt_boost_start_gp(rnp); | 91243 | rcu_preempt_boost_start_gp(rnp); |
91364 | @@ -1546,7 +1546,7 @@ static void rcu_gp_cleanup(struct rcu_state *rsp) | 91244 | @@ -1562,7 +1562,7 @@ static void rcu_gp_cleanup(struct rcu_state *rsp) |
91365 | rcu_for_each_node_breadth_first(rsp, rnp) { | 91245 | rcu_for_each_node_breadth_first(rsp, rnp) { |
91366 | raw_spin_lock_irq(&rnp->lock); | 91246 | raw_spin_lock_irq(&rnp->lock); |
91367 | smp_mb__after_unlock_lock(); | 91247 | smp_mb__after_unlock_lock(); |
@@ -91370,7 +91250,7 @@ index b3d116c..ebf6598 100644 | |||
91370 | rdp = this_cpu_ptr(rsp->rda); | 91250 | rdp = this_cpu_ptr(rsp->rda); |
91371 | if (rnp == rdp->mynode) | 91251 | if (rnp == rdp->mynode) |
91372 | __note_gp_changes(rsp, rnp, rdp); | 91252 | __note_gp_changes(rsp, rnp, rdp); |
91373 | @@ -1912,7 +1912,7 @@ rcu_send_cbs_to_orphanage(int cpu, struct rcu_state *rsp, | 91253 | @@ -1928,7 +1928,7 @@ rcu_send_cbs_to_orphanage(int cpu, struct rcu_state *rsp, |
91374 | rsp->qlen += rdp->qlen; | 91254 | rsp->qlen += rdp->qlen; |
91375 | rdp->n_cbs_orphaned += rdp->qlen; | 91255 | rdp->n_cbs_orphaned += rdp->qlen; |
91376 | rdp->qlen_lazy = 0; | 91256 | rdp->qlen_lazy = 0; |
@@ -91379,7 +91259,7 @@ index b3d116c..ebf6598 100644 | |||
91379 | } | 91259 | } |
91380 | 91260 | ||
91381 | /* | 91261 | /* |
91382 | @@ -2159,7 +2159,7 @@ static void rcu_do_batch(struct rcu_state *rsp, struct rcu_data *rdp) | 91262 | @@ -2175,7 +2175,7 @@ static void rcu_do_batch(struct rcu_state *rsp, struct rcu_data *rdp) |
91383 | } | 91263 | } |
91384 | smp_mb(); /* List handling before counting for rcu_barrier(). */ | 91264 | smp_mb(); /* List handling before counting for rcu_barrier(). */ |
91385 | rdp->qlen_lazy -= count_lazy; | 91265 | rdp->qlen_lazy -= count_lazy; |
@@ -91388,7 +91268,7 @@ index b3d116c..ebf6598 100644 | |||
91388 | rdp->n_cbs_invoked += count; | 91268 | rdp->n_cbs_invoked += count; |
91389 | 91269 | ||
91390 | /* Reinstate batch limit if we have worked down the excess. */ | 91270 | /* Reinstate batch limit if we have worked down the excess. */ |
91391 | @@ -2362,7 +2362,7 @@ __rcu_process_callbacks(struct rcu_state *rsp) | 91271 | @@ -2378,7 +2378,7 @@ __rcu_process_callbacks(struct rcu_state *rsp) |
91392 | /* | 91272 | /* |
91393 | * Do RCU core processing for the current CPU. | 91273 | * Do RCU core processing for the current CPU. |
91394 | */ | 91274 | */ |
@@ -91397,7 +91277,7 @@ index b3d116c..ebf6598 100644 | |||
91397 | { | 91277 | { |
91398 | struct rcu_state *rsp; | 91278 | struct rcu_state *rsp; |
91399 | 91279 | ||
91400 | @@ -2470,7 +2470,7 @@ __call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu), | 91280 | @@ -2486,7 +2486,7 @@ __call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu), |
91401 | WARN_ON_ONCE((unsigned long)head & 0x3); /* Misaligned rcu_head! */ | 91281 | WARN_ON_ONCE((unsigned long)head & 0x3); /* Misaligned rcu_head! */ |
91402 | if (debug_rcu_head_queue(head)) { | 91282 | if (debug_rcu_head_queue(head)) { |
91403 | /* Probable double call_rcu(), so leak the callback. */ | 91283 | /* Probable double call_rcu(), so leak the callback. */ |
@@ -91406,7 +91286,7 @@ index b3d116c..ebf6598 100644 | |||
91406 | WARN_ONCE(1, "__call_rcu(): Leaked duplicate callback\n"); | 91286 | WARN_ONCE(1, "__call_rcu(): Leaked duplicate callback\n"); |
91407 | return; | 91287 | return; |
91408 | } | 91288 | } |
91409 | @@ -2498,7 +2498,7 @@ __call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu), | 91289 | @@ -2514,7 +2514,7 @@ __call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu), |
91410 | local_irq_restore(flags); | 91290 | local_irq_restore(flags); |
91411 | return; | 91291 | return; |
91412 | } | 91292 | } |
@@ -91415,7 +91295,7 @@ index b3d116c..ebf6598 100644 | |||
91415 | if (lazy) | 91295 | if (lazy) |
91416 | rdp->qlen_lazy++; | 91296 | rdp->qlen_lazy++; |
91417 | else | 91297 | else |
91418 | @@ -2707,11 +2707,11 @@ void synchronize_sched_expedited(void) | 91298 | @@ -2723,11 +2723,11 @@ void synchronize_sched_expedited(void) |
91419 | * counter wrap on a 32-bit system. Quite a few more CPUs would of | 91299 | * counter wrap on a 32-bit system. Quite a few more CPUs would of |
91420 | * course be required on a 64-bit system. | 91300 | * course be required on a 64-bit system. |
91421 | */ | 91301 | */ |
@@ -91429,7 +91309,7 @@ index b3d116c..ebf6598 100644 | |||
91429 | return; | 91309 | return; |
91430 | } | 91310 | } |
91431 | 91311 | ||
91432 | @@ -2719,7 +2719,7 @@ void synchronize_sched_expedited(void) | 91312 | @@ -2735,7 +2735,7 @@ void synchronize_sched_expedited(void) |
91433 | * Take a ticket. Note that atomic_inc_return() implies a | 91313 | * Take a ticket. Note that atomic_inc_return() implies a |
91434 | * full memory barrier. | 91314 | * full memory barrier. |
91435 | */ | 91315 | */ |
@@ -91438,7 +91318,7 @@ index b3d116c..ebf6598 100644 | |||
91438 | firstsnap = snap; | 91318 | firstsnap = snap; |
91439 | get_online_cpus(); | 91319 | get_online_cpus(); |
91440 | WARN_ON_ONCE(cpu_is_offline(raw_smp_processor_id())); | 91320 | WARN_ON_ONCE(cpu_is_offline(raw_smp_processor_id())); |
91441 | @@ -2732,14 +2732,14 @@ void synchronize_sched_expedited(void) | 91321 | @@ -2748,14 +2748,14 @@ void synchronize_sched_expedited(void) |
91442 | synchronize_sched_expedited_cpu_stop, | 91322 | synchronize_sched_expedited_cpu_stop, |
91443 | NULL) == -EAGAIN) { | 91323 | NULL) == -EAGAIN) { |
91444 | put_online_cpus(); | 91324 | put_online_cpus(); |
@@ -91455,7 +91335,7 @@ index b3d116c..ebf6598 100644 | |||
91455 | return; | 91335 | return; |
91456 | } | 91336 | } |
91457 | 91337 | ||
91458 | @@ -2748,7 +2748,7 @@ void synchronize_sched_expedited(void) | 91338 | @@ -2764,7 +2764,7 @@ void synchronize_sched_expedited(void) |
91459 | udelay(trycount * num_online_cpus()); | 91339 | udelay(trycount * num_online_cpus()); |
91460 | } else { | 91340 | } else { |
91461 | wait_rcu_gp(call_rcu_sched); | 91341 | wait_rcu_gp(call_rcu_sched); |
@@ -91464,7 +91344,7 @@ index b3d116c..ebf6598 100644 | |||
91464 | return; | 91344 | return; |
91465 | } | 91345 | } |
91466 | 91346 | ||
91467 | @@ -2757,7 +2757,7 @@ void synchronize_sched_expedited(void) | 91347 | @@ -2773,7 +2773,7 @@ void synchronize_sched_expedited(void) |
91468 | if (ULONG_CMP_GE((ulong)s, (ulong)firstsnap)) { | 91348 | if (ULONG_CMP_GE((ulong)s, (ulong)firstsnap)) { |
91469 | /* ensure test happens before caller kfree */ | 91349 | /* ensure test happens before caller kfree */ |
91470 | smp_mb__before_atomic_inc(); /* ^^^ */ | 91350 | smp_mb__before_atomic_inc(); /* ^^^ */ |
@@ -91473,7 +91353,7 @@ index b3d116c..ebf6598 100644 | |||
91473 | return; | 91353 | return; |
91474 | } | 91354 | } |
91475 | 91355 | ||
91476 | @@ -2769,10 +2769,10 @@ void synchronize_sched_expedited(void) | 91356 | @@ -2785,10 +2785,10 @@ void synchronize_sched_expedited(void) |
91477 | * period works for us. | 91357 | * period works for us. |
91478 | */ | 91358 | */ |
91479 | get_online_cpus(); | 91359 | get_online_cpus(); |
@@ -91486,7 +91366,7 @@ index b3d116c..ebf6598 100644 | |||
91486 | 91366 | ||
91487 | /* | 91367 | /* |
91488 | * Everyone up to our most recent fetch is covered by our grace | 91368 | * Everyone up to our most recent fetch is covered by our grace |
91489 | @@ -2781,16 +2781,16 @@ void synchronize_sched_expedited(void) | 91369 | @@ -2797,16 +2797,16 @@ void synchronize_sched_expedited(void) |
91490 | * than we did already did their update. | 91370 | * than we did already did their update. |
91491 | */ | 91371 | */ |
91492 | do { | 91372 | do { |
@@ -91506,7 +91386,7 @@ index b3d116c..ebf6598 100644 | |||
91506 | 91386 | ||
91507 | put_online_cpus(); | 91387 | put_online_cpus(); |
91508 | } | 91388 | } |
91509 | @@ -2996,7 +2996,7 @@ static void _rcu_barrier(struct rcu_state *rsp) | 91389 | @@ -3012,7 +3012,7 @@ static void _rcu_barrier(struct rcu_state *rsp) |
91510 | * ACCESS_ONCE() to prevent the compiler from speculating | 91390 | * ACCESS_ONCE() to prevent the compiler from speculating |
91511 | * the increment to precede the early-exit check. | 91391 | * the increment to precede the early-exit check. |
91512 | */ | 91392 | */ |
@@ -91515,7 +91395,7 @@ index b3d116c..ebf6598 100644 | |||
91515 | WARN_ON_ONCE((rsp->n_barrier_done & 0x1) != 1); | 91395 | WARN_ON_ONCE((rsp->n_barrier_done & 0x1) != 1); |
91516 | _rcu_barrier_trace(rsp, "Inc1", -1, rsp->n_barrier_done); | 91396 | _rcu_barrier_trace(rsp, "Inc1", -1, rsp->n_barrier_done); |
91517 | smp_mb(); /* Order ->n_barrier_done increment with below mechanism. */ | 91397 | smp_mb(); /* Order ->n_barrier_done increment with below mechanism. */ |
91518 | @@ -3046,7 +3046,7 @@ static void _rcu_barrier(struct rcu_state *rsp) | 91398 | @@ -3062,7 +3062,7 @@ static void _rcu_barrier(struct rcu_state *rsp) |
91519 | 91399 | ||
91520 | /* Increment ->n_barrier_done to prevent duplicate work. */ | 91400 | /* Increment ->n_barrier_done to prevent duplicate work. */ |
91521 | smp_mb(); /* Keep increment after above mechanism. */ | 91401 | smp_mb(); /* Keep increment after above mechanism. */ |
@@ -91524,7 +91404,7 @@ index b3d116c..ebf6598 100644 | |||
91524 | WARN_ON_ONCE((rsp->n_barrier_done & 0x1) != 0); | 91404 | WARN_ON_ONCE((rsp->n_barrier_done & 0x1) != 0); |
91525 | _rcu_barrier_trace(rsp, "Inc2", -1, rsp->n_barrier_done); | 91405 | _rcu_barrier_trace(rsp, "Inc2", -1, rsp->n_barrier_done); |
91526 | smp_mb(); /* Keep increment before caller's subsequent code. */ | 91406 | smp_mb(); /* Keep increment before caller's subsequent code. */ |
91527 | @@ -3091,10 +3091,10 @@ rcu_boot_init_percpu_data(int cpu, struct rcu_state *rsp) | 91407 | @@ -3107,10 +3107,10 @@ rcu_boot_init_percpu_data(int cpu, struct rcu_state *rsp) |
91528 | rdp->grpmask = 1UL << (cpu - rdp->mynode->grplo); | 91408 | rdp->grpmask = 1UL << (cpu - rdp->mynode->grplo); |
91529 | init_callback_list(rdp); | 91409 | init_callback_list(rdp); |
91530 | rdp->qlen_lazy = 0; | 91410 | rdp->qlen_lazy = 0; |
@@ -91537,7 +91417,7 @@ index b3d116c..ebf6598 100644 | |||
91537 | rdp->cpu = cpu; | 91417 | rdp->cpu = cpu; |
91538 | rdp->rsp = rsp; | 91418 | rdp->rsp = rsp; |
91539 | rcu_boot_init_nocb_percpu_data(rdp); | 91419 | rcu_boot_init_nocb_percpu_data(rdp); |
91540 | @@ -3128,8 +3128,8 @@ rcu_init_percpu_data(int cpu, struct rcu_state *rsp, int preemptible) | 91420 | @@ -3144,8 +3144,8 @@ rcu_init_percpu_data(int cpu, struct rcu_state *rsp, int preemptible) |
91541 | init_callback_list(rdp); /* Re-enable callbacks on this CPU. */ | 91421 | init_callback_list(rdp); /* Re-enable callbacks on this CPU. */ |
91542 | rdp->dynticks->dynticks_nesting = DYNTICK_TASK_EXIT_IDLE; | 91422 | rdp->dynticks->dynticks_nesting = DYNTICK_TASK_EXIT_IDLE; |
91543 | rcu_sysidle_init_percpu_data(rdp->dynticks); | 91423 | rcu_sysidle_init_percpu_data(rdp->dynticks); |
@@ -94254,7 +94134,7 @@ index 963b703..438bc51 100644 | |||
94254 | /** | 94134 | /** |
94255 | * percpu_ref_init - initialize a percpu refcount | 94135 | * percpu_ref_init - initialize a percpu refcount |
94256 | diff --git a/lib/radix-tree.c b/lib/radix-tree.c | 94136 | diff --git a/lib/radix-tree.c b/lib/radix-tree.c |
94257 | index bd4a8df..9e4804f 100644 | 94137 | index 7e30d2a..eccc695 100644 |
94258 | --- a/lib/radix-tree.c | 94138 | --- a/lib/radix-tree.c |
94259 | +++ b/lib/radix-tree.c | 94139 | +++ b/lib/radix-tree.c |
94260 | @@ -93,7 +93,7 @@ struct radix_tree_preload { | 94140 | @@ -93,7 +93,7 @@ struct radix_tree_preload { |
@@ -94550,10 +94430,10 @@ index 09d9591..165bb75 100644 | |||
94550 | bdi_destroy(bdi); | 94430 | bdi_destroy(bdi); |
94551 | return err; | 94431 | return err; |
94552 | diff --git a/mm/filemap.c b/mm/filemap.c | 94432 | diff --git a/mm/filemap.c b/mm/filemap.c |
94553 | index c2cc7c9..50ef696 100644 | 94433 | index bdaa215..2949940 100644 |
94554 | --- a/mm/filemap.c | 94434 | --- a/mm/filemap.c |
94555 | +++ b/mm/filemap.c | 94435 | +++ b/mm/filemap.c |
94556 | @@ -1768,7 +1768,7 @@ int generic_file_mmap(struct file * file, struct vm_area_struct * vma) | 94436 | @@ -1998,7 +1998,7 @@ int generic_file_mmap(struct file * file, struct vm_area_struct * vma) |
94557 | struct address_space *mapping = file->f_mapping; | 94437 | struct address_space *mapping = file->f_mapping; |
94558 | 94438 | ||
94559 | if (!mapping->a_ops->readpage) | 94439 | if (!mapping->a_ops->readpage) |
@@ -94562,7 +94442,7 @@ index c2cc7c9..50ef696 100644 | |||
94562 | file_accessed(file); | 94442 | file_accessed(file); |
94563 | vma->vm_ops = &generic_file_vm_ops; | 94443 | vma->vm_ops = &generic_file_vm_ops; |
94564 | return 0; | 94444 | return 0; |
94565 | @@ -1950,7 +1950,7 @@ static size_t __iovec_copy_from_user_inatomic(char *vaddr, | 94445 | @@ -2162,7 +2162,7 @@ static size_t __iovec_copy_from_user_inatomic(char *vaddr, |
94566 | 94446 | ||
94567 | while (bytes) { | 94447 | while (bytes) { |
94568 | char __user *buf = iov->iov_base + base; | 94448 | char __user *buf = iov->iov_base + base; |
@@ -94571,8 +94451,8 @@ index c2cc7c9..50ef696 100644 | |||
94571 | 94451 | ||
94572 | base = 0; | 94452 | base = 0; |
94573 | left = __copy_from_user_inatomic(vaddr, buf, copy); | 94453 | left = __copy_from_user_inatomic(vaddr, buf, copy); |
94574 | @@ -1979,7 +1979,7 @@ size_t iov_iter_copy_from_user_atomic(struct page *page, | 94454 | @@ -2190,7 +2190,7 @@ size_t iov_iter_copy_from_user_atomic(struct page *page, |
94575 | BUG_ON(!in_atomic()); | 94455 | |
94576 | kaddr = kmap_atomic(page); | 94456 | kaddr = kmap_atomic(page); |
94577 | if (likely(i->nr_segs == 1)) { | 94457 | if (likely(i->nr_segs == 1)) { |
94578 | - int left; | 94458 | - int left; |
@@ -94580,7 +94460,7 @@ index c2cc7c9..50ef696 100644 | |||
94580 | char __user *buf = i->iov->iov_base + i->iov_offset; | 94460 | char __user *buf = i->iov->iov_base + i->iov_offset; |
94581 | left = __copy_from_user_inatomic(kaddr + offset, buf, bytes); | 94461 | left = __copy_from_user_inatomic(kaddr + offset, buf, bytes); |
94582 | copied = bytes - left; | 94462 | copied = bytes - left; |
94583 | @@ -2007,7 +2007,7 @@ size_t iov_iter_copy_from_user(struct page *page, | 94463 | @@ -2218,7 +2218,7 @@ size_t iov_iter_copy_from_user(struct page *page, |
94584 | 94464 | ||
94585 | kaddr = kmap(page); | 94465 | kaddr = kmap(page); |
94586 | if (likely(i->nr_segs == 1)) { | 94466 | if (likely(i->nr_segs == 1)) { |
@@ -94589,7 +94469,7 @@ index c2cc7c9..50ef696 100644 | |||
94589 | char __user *buf = i->iov->iov_base + i->iov_offset; | 94469 | char __user *buf = i->iov->iov_base + i->iov_offset; |
94590 | left = __copy_from_user(kaddr + offset, buf, bytes); | 94470 | left = __copy_from_user(kaddr + offset, buf, bytes); |
94591 | copied = bytes - left; | 94471 | copied = bytes - left; |
94592 | @@ -2037,7 +2037,7 @@ void iov_iter_advance(struct iov_iter *i, size_t bytes) | 94472 | @@ -2248,7 +2248,7 @@ void iov_iter_advance(struct iov_iter *i, size_t bytes) |
94593 | * zero-length segments (without overruning the iovec). | 94473 | * zero-length segments (without overruning the iovec). |
94594 | */ | 94474 | */ |
94595 | while (bytes || unlikely(i->count && !iov->iov_len)) { | 94475 | while (bytes || unlikely(i->count && !iov->iov_len)) { |
@@ -94598,7 +94478,7 @@ index c2cc7c9..50ef696 100644 | |||
94598 | 94478 | ||
94599 | copy = min(bytes, iov->iov_len - base); | 94479 | copy = min(bytes, iov->iov_len - base); |
94600 | BUG_ON(!i->count || i->count < copy); | 94480 | BUG_ON(!i->count || i->count < copy); |
94601 | @@ -2108,6 +2108,7 @@ inline int generic_write_checks(struct file *file, loff_t *pos, size_t *count, i | 94481 | @@ -2319,6 +2319,7 @@ inline int generic_write_checks(struct file *file, loff_t *pos, size_t *count, i |
94602 | *pos = i_size_read(inode); | 94482 | *pos = i_size_read(inode); |
94603 | 94483 | ||
94604 | if (limit != RLIM_INFINITY) { | 94484 | if (limit != RLIM_INFINITY) { |
@@ -94788,10 +94668,10 @@ index 67d0c17..b22c193 100644 | |||
94788 | if (!ptep) | 94668 | if (!ptep) |
94789 | return VM_FAULT_OOM; | 94669 | return VM_FAULT_OOM; |
94790 | diff --git a/mm/internal.h b/mm/internal.h | 94670 | diff --git a/mm/internal.h b/mm/internal.h |
94791 | index 3e91000..4741a60 100644 | 94671 | index 1a8a0d4..2c580ef 100644 |
94792 | --- a/mm/internal.h | 94672 | --- a/mm/internal.h |
94793 | +++ b/mm/internal.h | 94673 | +++ b/mm/internal.h |
94794 | @@ -94,6 +94,7 @@ extern pmd_t *mm_find_pmd(struct mm_struct *mm, unsigned long address); | 94674 | @@ -109,6 +109,7 @@ extern pmd_t *mm_find_pmd(struct mm_struct *mm, unsigned long address); |
94795 | * in mm/page_alloc.c | 94675 | * in mm/page_alloc.c |
94796 | */ | 94676 | */ |
94797 | extern void __free_pages_bootmem(struct page *page, unsigned int order); | 94677 | extern void __free_pages_bootmem(struct page *page, unsigned int order); |
@@ -94799,7 +94679,7 @@ index 3e91000..4741a60 100644 | |||
94799 | extern void prep_compound_page(struct page *page, unsigned long order); | 94679 | extern void prep_compound_page(struct page *page, unsigned long order); |
94800 | #ifdef CONFIG_MEMORY_FAILURE | 94680 | #ifdef CONFIG_MEMORY_FAILURE |
94801 | extern bool is_free_buddy_page(struct page *page); | 94681 | extern bool is_free_buddy_page(struct page *page); |
94802 | @@ -352,7 +353,7 @@ extern u32 hwpoison_filter_enable; | 94682 | @@ -370,7 +371,7 @@ extern u32 hwpoison_filter_enable; |
94803 | 94683 | ||
94804 | extern unsigned long vm_mmap_pgoff(struct file *, unsigned long, | 94684 | extern unsigned long vm_mmap_pgoff(struct file *, unsigned long, |
94805 | unsigned long, unsigned long, | 94685 | unsigned long, unsigned long, |
@@ -94853,7 +94733,7 @@ index d53adf9..03a24bf 100644 | |||
94853 | set_fs(old_fs); | 94733 | set_fs(old_fs); |
94854 | 94734 | ||
94855 | diff --git a/mm/madvise.c b/mm/madvise.c | 94735 | diff --git a/mm/madvise.c b/mm/madvise.c |
94856 | index 539eeb9..e24a987 100644 | 94736 | index a402f8f..f5e5daa 100644 |
94857 | --- a/mm/madvise.c | 94737 | --- a/mm/madvise.c |
94858 | +++ b/mm/madvise.c | 94738 | +++ b/mm/madvise.c |
94859 | @@ -51,6 +51,10 @@ static long madvise_behavior(struct vm_area_struct *vma, | 94739 | @@ -51,6 +51,10 @@ static long madvise_behavior(struct vm_area_struct *vma, |
@@ -94933,7 +94813,7 @@ index 539eeb9..e24a987 100644 | |||
94933 | if (end == start) | 94813 | if (end == start) |
94934 | return error; | 94814 | return error; |
94935 | diff --git a/mm/memory-failure.c b/mm/memory-failure.c | 94815 | diff --git a/mm/memory-failure.c b/mm/memory-failure.c |
94936 | index 33365e9..2234ef9 100644 | 94816 | index a98c7fc..393f8f1 100644 |
94937 | --- a/mm/memory-failure.c | 94817 | --- a/mm/memory-failure.c |
94938 | +++ b/mm/memory-failure.c | 94818 | +++ b/mm/memory-failure.c |
94939 | @@ -61,7 +61,7 @@ int sysctl_memory_failure_early_kill __read_mostly = 0; | 94819 | @@ -61,7 +61,7 @@ int sysctl_memory_failure_early_kill __read_mostly = 0; |
@@ -95783,7 +95663,7 @@ index 492e36f..b153792 100644 | |||
95783 | mm = get_task_mm(tsk); | 95663 | mm = get_task_mm(tsk); |
95784 | if (!mm) | 95664 | if (!mm) |
95785 | diff --git a/mm/mempolicy.c b/mm/mempolicy.c | 95665 | diff --git a/mm/mempolicy.c b/mm/mempolicy.c |
95786 | index 796c7e6..3e6ec8a 100644 | 95666 | index e8fff0f..8d10fb5 100644 |
95787 | --- a/mm/mempolicy.c | 95667 | --- a/mm/mempolicy.c |
95788 | +++ b/mm/mempolicy.c | 95668 | +++ b/mm/mempolicy.c |
95789 | @@ -747,6 +747,10 @@ static int mbind_range(struct mm_struct *mm, unsigned long start, | 95669 | @@ -747,6 +747,10 @@ static int mbind_range(struct mm_struct *mm, unsigned long start, |
@@ -95859,10 +95739,10 @@ index 796c7e6..3e6ec8a 100644 | |||
95859 | capable(CAP_SYS_NICE) ? MPOL_MF_MOVE_ALL : MPOL_MF_MOVE); | 95739 | capable(CAP_SYS_NICE) ? MPOL_MF_MOVE_ALL : MPOL_MF_MOVE); |
95860 | 95740 | ||
95861 | diff --git a/mm/migrate.c b/mm/migrate.c | 95741 | diff --git a/mm/migrate.c b/mm/migrate.c |
95862 | index 13f47fb..95c4b9f 100644 | 95742 | index 3acac4a..a186f71 100644 |
95863 | --- a/mm/migrate.c | 95743 | --- a/mm/migrate.c |
95864 | +++ b/mm/migrate.c | 95744 | +++ b/mm/migrate.c |
95865 | @@ -1488,8 +1488,7 @@ SYSCALL_DEFINE6(move_pages, pid_t, pid, unsigned long, nr_pages, | 95745 | @@ -1511,8 +1511,7 @@ SYSCALL_DEFINE6(move_pages, pid_t, pid, unsigned long, nr_pages, |
95866 | */ | 95746 | */ |
95867 | tcred = __task_cred(task); | 95747 | tcred = __task_cred(task); |
95868 | if (!uid_eq(cred->euid, tcred->suid) && !uid_eq(cred->euid, tcred->uid) && | 95748 | if (!uid_eq(cred->euid, tcred->suid) && !uid_eq(cred->euid, tcred->uid) && |
@@ -97619,7 +97499,7 @@ index 9f45f87..749bfd8 100644 | |||
97619 | unsigned long bg_thresh, | 97499 | unsigned long bg_thresh, |
97620 | unsigned long dirty, | 97500 | unsigned long dirty, |
97621 | diff --git a/mm/page_alloc.c b/mm/page_alloc.c | 97501 | diff --git a/mm/page_alloc.c b/mm/page_alloc.c |
97622 | index 7b2611a..4407637 100644 | 97502 | index 4b25829..382c9bd 100644 |
97623 | --- a/mm/page_alloc.c | 97503 | --- a/mm/page_alloc.c |
97624 | +++ b/mm/page_alloc.c | 97504 | +++ b/mm/page_alloc.c |
97625 | @@ -61,6 +61,7 @@ | 97505 | @@ -61,6 +61,7 @@ |
@@ -97715,7 +97595,7 @@ index 7b2611a..4407637 100644 | |||
97715 | 97595 | ||
97716 | if (order && (gfp_flags & __GFP_COMP)) | 97596 | if (order && (gfp_flags & __GFP_COMP)) |
97717 | prep_compound_page(page, order); | 97597 | prep_compound_page(page, order); |
97718 | @@ -1957,7 +1997,7 @@ zonelist_scan: | 97598 | @@ -1960,7 +2000,7 @@ zonelist_scan: |
97719 | if (alloc_flags & ALLOC_FAIR) { | 97599 | if (alloc_flags & ALLOC_FAIR) { |
97720 | if (!zone_local(preferred_zone, zone)) | 97600 | if (!zone_local(preferred_zone, zone)) |
97721 | continue; | 97601 | continue; |
@@ -97724,7 +97604,7 @@ index 7b2611a..4407637 100644 | |||
97724 | continue; | 97604 | continue; |
97725 | } | 97605 | } |
97726 | /* | 97606 | /* |
97727 | @@ -2422,7 +2462,7 @@ static void reset_alloc_batches(struct zonelist *zonelist, | 97607 | @@ -2424,7 +2464,7 @@ static void reset_alloc_batches(struct zonelist *zonelist, |
97728 | continue; | 97608 | continue; |
97729 | mod_zone_page_state(zone, NR_ALLOC_BATCH, | 97609 | mod_zone_page_state(zone, NR_ALLOC_BATCH, |
97730 | high_wmark_pages(zone) - low_wmark_pages(zone) - | 97610 | high_wmark_pages(zone) - low_wmark_pages(zone) - |
@@ -97733,7 +97613,7 @@ index 7b2611a..4407637 100644 | |||
97733 | } | 97613 | } |
97734 | } | 97614 | } |
97735 | 97615 | ||
97736 | @@ -5671,7 +5711,7 @@ static void __setup_per_zone_wmarks(void) | 97616 | @@ -5669,7 +5709,7 @@ static void __setup_per_zone_wmarks(void) |
97737 | 97617 | ||
97738 | __mod_zone_page_state(zone, NR_ALLOC_BATCH, | 97618 | __mod_zone_page_state(zone, NR_ALLOC_BATCH, |
97739 | high_wmark_pages(zone) - low_wmark_pages(zone) - | 97619 | high_wmark_pages(zone) - low_wmark_pages(zone) - |
@@ -97742,7 +97622,7 @@ index 7b2611a..4407637 100644 | |||
97742 | 97622 | ||
97743 | setup_zone_migrate_reserve(zone); | 97623 | setup_zone_migrate_reserve(zone); |
97744 | spin_unlock_irqrestore(&zone->lock, flags); | 97624 | spin_unlock_irqrestore(&zone->lock, flags); |
97745 | @@ -6613,4 +6653,4 @@ void dump_page(struct page *page, char *reason) | 97625 | @@ -6611,4 +6651,4 @@ void dump_page(struct page *page, char *reason) |
97746 | { | 97626 | { |
97747 | dump_page_badflags(page, reason, 0); | 97627 | dump_page_badflags(page, reason, 0); |
97748 | } | 97628 | } |
@@ -97942,7 +97822,7 @@ index cdbd312..2e1e0b9 100644 | |||
97942 | 97822 | ||
97943 | /* | 97823 | /* |
97944 | diff --git a/mm/shmem.c b/mm/shmem.c | 97824 | diff --git a/mm/shmem.c b/mm/shmem.c |
97945 | index f0d698b..7037c25 100644 | 97825 | index 0f14475..c469130d 100644 |
97946 | --- a/mm/shmem.c | 97826 | --- a/mm/shmem.c |
97947 | +++ b/mm/shmem.c | 97827 | +++ b/mm/shmem.c |
97948 | @@ -33,7 +33,7 @@ | 97828 | @@ -33,7 +33,7 @@ |
@@ -97963,7 +97843,7 @@ index f0d698b..7037c25 100644 | |||
97963 | 97843 | ||
97964 | /* | 97844 | /* |
97965 | * shmem_fallocate communicates with shmem_fault or shmem_writepage via | 97845 | * shmem_fallocate communicates with shmem_fault or shmem_writepage via |
97966 | @@ -2300,6 +2300,11 @@ static const struct xattr_handler *shmem_xattr_handlers[] = { | 97846 | @@ -2240,6 +2240,11 @@ static const struct xattr_handler *shmem_xattr_handlers[] = { |
97967 | static int shmem_xattr_validate(const char *name) | 97847 | static int shmem_xattr_validate(const char *name) |
97968 | { | 97848 | { |
97969 | struct { const char *prefix; size_t len; } arr[] = { | 97849 | struct { const char *prefix; size_t len; } arr[] = { |
@@ -97975,7 +97855,7 @@ index f0d698b..7037c25 100644 | |||
97975 | { XATTR_SECURITY_PREFIX, XATTR_SECURITY_PREFIX_LEN }, | 97855 | { XATTR_SECURITY_PREFIX, XATTR_SECURITY_PREFIX_LEN }, |
97976 | { XATTR_TRUSTED_PREFIX, XATTR_TRUSTED_PREFIX_LEN } | 97856 | { XATTR_TRUSTED_PREFIX, XATTR_TRUSTED_PREFIX_LEN } |
97977 | }; | 97857 | }; |
97978 | @@ -2355,6 +2360,15 @@ static int shmem_setxattr(struct dentry *dentry, const char *name, | 97858 | @@ -2295,6 +2300,15 @@ static int shmem_setxattr(struct dentry *dentry, const char *name, |
97979 | if (err) | 97859 | if (err) |
97980 | return err; | 97860 | return err; |
97981 | 97861 | ||
@@ -97991,7 +97871,7 @@ index f0d698b..7037c25 100644 | |||
97991 | return simple_xattr_set(&info->xattrs, name, value, size, flags); | 97871 | return simple_xattr_set(&info->xattrs, name, value, size, flags); |
97992 | } | 97872 | } |
97993 | 97873 | ||
97994 | @@ -2667,8 +2681,7 @@ int shmem_fill_super(struct super_block *sb, void *data, int silent) | 97874 | @@ -2607,8 +2621,7 @@ int shmem_fill_super(struct super_block *sb, void *data, int silent) |
97995 | int err = -ENOMEM; | 97875 | int err = -ENOMEM; |
97996 | 97876 | ||
97997 | /* Round up to L1_CACHE_BYTES to resist false sharing */ | 97877 | /* Round up to L1_CACHE_BYTES to resist false sharing */ |
@@ -99101,7 +98981,7 @@ index 63c3ea5..95c0858 100644 | |||
99101 | } | 98981 | } |
99102 | } | 98982 | } |
99103 | diff --git a/mm/swap.c b/mm/swap.c | 98983 | diff --git a/mm/swap.c b/mm/swap.c |
99104 | index 0092097..33361ff 100644 | 98984 | index c8048d7..099d1a3 100644 |
99105 | --- a/mm/swap.c | 98985 | --- a/mm/swap.c |
99106 | +++ b/mm/swap.c | 98986 | +++ b/mm/swap.c |
99107 | @@ -31,6 +31,7 @@ | 98987 | @@ -31,6 +31,7 @@ |
@@ -100234,323 +100114,6 @@ index b543470..d2ddae2 100644 | |||
100234 | 100114 | ||
100235 | if (!can_dir) { | 100115 | if (!can_dir) { |
100236 | printk(KERN_INFO "can: failed to create /proc/net/can . " | 100116 | printk(KERN_INFO "can: failed to create /proc/net/can . " |
100237 | diff --git a/net/ceph/crypto.c b/net/ceph/crypto.c | ||
100238 | index 6e7a236..06f19b9 100644 | ||
100239 | --- a/net/ceph/crypto.c | ||
100240 | +++ b/net/ceph/crypto.c | ||
100241 | @@ -89,11 +89,82 @@ static struct crypto_blkcipher *ceph_crypto_alloc_cipher(void) | ||
100242 | |||
100243 | static const u8 *aes_iv = (u8 *)CEPH_AES_IV; | ||
100244 | |||
100245 | +/* | ||
100246 | + * Should be used for buffers allocated with ceph_kvmalloc(). | ||
100247 | + * Currently these are encrypt out-buffer (ceph_buffer) and decrypt | ||
100248 | + * in-buffer (msg front). | ||
100249 | + * | ||
100250 | + * Dispose of @sgt with teardown_sgtable(). | ||
100251 | + * | ||
100252 | + * @prealloc_sg is to avoid memory allocation inside sg_alloc_table() | ||
100253 | + * in cases where a single sg is sufficient. No attempt to reduce the | ||
100254 | + * number of sgs by squeezing physically contiguous pages together is | ||
100255 | + * made though, for simplicity. | ||
100256 | + */ | ||
100257 | +static int setup_sgtable(struct sg_table *sgt, struct scatterlist *prealloc_sg, | ||
100258 | + const void *buf, unsigned int buf_len) | ||
100259 | +{ | ||
100260 | + struct scatterlist *sg; | ||
100261 | + const bool is_vmalloc = is_vmalloc_addr(buf); | ||
100262 | + unsigned int off = offset_in_page(buf); | ||
100263 | + unsigned int chunk_cnt = 1; | ||
100264 | + unsigned int chunk_len = PAGE_ALIGN(off + buf_len); | ||
100265 | + int i; | ||
100266 | + int ret; | ||
100267 | + | ||
100268 | + if (buf_len == 0) { | ||
100269 | + memset(sgt, 0, sizeof(*sgt)); | ||
100270 | + return -EINVAL; | ||
100271 | + } | ||
100272 | + | ||
100273 | + if (is_vmalloc) { | ||
100274 | + chunk_cnt = chunk_len >> PAGE_SHIFT; | ||
100275 | + chunk_len = PAGE_SIZE; | ||
100276 | + } | ||
100277 | + | ||
100278 | + if (chunk_cnt > 1) { | ||
100279 | + ret = sg_alloc_table(sgt, chunk_cnt, GFP_NOFS); | ||
100280 | + if (ret) | ||
100281 | + return ret; | ||
100282 | + } else { | ||
100283 | + WARN_ON(chunk_cnt != 1); | ||
100284 | + sg_init_table(prealloc_sg, 1); | ||
100285 | + sgt->sgl = prealloc_sg; | ||
100286 | + sgt->nents = sgt->orig_nents = 1; | ||
100287 | + } | ||
100288 | + | ||
100289 | + for_each_sg(sgt->sgl, sg, sgt->orig_nents, i) { | ||
100290 | + struct page *page; | ||
100291 | + unsigned int len = min(chunk_len - off, buf_len); | ||
100292 | + | ||
100293 | + if (is_vmalloc) | ||
100294 | + page = vmalloc_to_page(buf); | ||
100295 | + else | ||
100296 | + page = virt_to_page(buf); | ||
100297 | + | ||
100298 | + sg_set_page(sg, page, len, off); | ||
100299 | + | ||
100300 | + off = 0; | ||
100301 | + buf += len; | ||
100302 | + buf_len -= len; | ||
100303 | + } | ||
100304 | + WARN_ON(buf_len != 0); | ||
100305 | + | ||
100306 | + return 0; | ||
100307 | +} | ||
100308 | + | ||
100309 | +static void teardown_sgtable(struct sg_table *sgt) | ||
100310 | +{ | ||
100311 | + if (sgt->orig_nents > 1) | ||
100312 | + sg_free_table(sgt); | ||
100313 | +} | ||
100314 | + | ||
100315 | static int ceph_aes_encrypt(const void *key, int key_len, | ||
100316 | void *dst, size_t *dst_len, | ||
100317 | const void *src, size_t src_len) | ||
100318 | { | ||
100319 | - struct scatterlist sg_in[2], sg_out[1]; | ||
100320 | + struct scatterlist sg_in[2], prealloc_sg; | ||
100321 | + struct sg_table sg_out; | ||
100322 | struct crypto_blkcipher *tfm = ceph_crypto_alloc_cipher(); | ||
100323 | struct blkcipher_desc desc = { .tfm = tfm, .flags = 0 }; | ||
100324 | int ret; | ||
100325 | @@ -109,16 +180,18 @@ static int ceph_aes_encrypt(const void *key, int key_len, | ||
100326 | |||
100327 | *dst_len = src_len + zero_padding; | ||
100328 | |||
100329 | - crypto_blkcipher_setkey((void *)tfm, key, key_len); | ||
100330 | sg_init_table(sg_in, 2); | ||
100331 | sg_set_buf(&sg_in[0], src, src_len); | ||
100332 | sg_set_buf(&sg_in[1], pad, zero_padding); | ||
100333 | - sg_init_table(sg_out, 1); | ||
100334 | - sg_set_buf(sg_out, dst, *dst_len); | ||
100335 | + ret = setup_sgtable(&sg_out, &prealloc_sg, dst, *dst_len); | ||
100336 | + if (ret) | ||
100337 | + goto out_tfm; | ||
100338 | + | ||
100339 | + crypto_blkcipher_setkey((void *)tfm, key, key_len); | ||
100340 | iv = crypto_blkcipher_crt(tfm)->iv; | ||
100341 | ivsize = crypto_blkcipher_ivsize(tfm); | ||
100342 | - | ||
100343 | memcpy(iv, aes_iv, ivsize); | ||
100344 | + | ||
100345 | /* | ||
100346 | print_hex_dump(KERN_ERR, "enc key: ", DUMP_PREFIX_NONE, 16, 1, | ||
100347 | key, key_len, 1); | ||
100348 | @@ -127,16 +200,22 @@ static int ceph_aes_encrypt(const void *key, int key_len, | ||
100349 | print_hex_dump(KERN_ERR, "enc pad: ", DUMP_PREFIX_NONE, 16, 1, | ||
100350 | pad, zero_padding, 1); | ||
100351 | */ | ||
100352 | - ret = crypto_blkcipher_encrypt(&desc, sg_out, sg_in, | ||
100353 | + ret = crypto_blkcipher_encrypt(&desc, sg_out.sgl, sg_in, | ||
100354 | src_len + zero_padding); | ||
100355 | - crypto_free_blkcipher(tfm); | ||
100356 | - if (ret < 0) | ||
100357 | + if (ret < 0) { | ||
100358 | pr_err("ceph_aes_crypt failed %d\n", ret); | ||
100359 | + goto out_sg; | ||
100360 | + } | ||
100361 | /* | ||
100362 | print_hex_dump(KERN_ERR, "enc out: ", DUMP_PREFIX_NONE, 16, 1, | ||
100363 | dst, *dst_len, 1); | ||
100364 | */ | ||
100365 | - return 0; | ||
100366 | + | ||
100367 | +out_sg: | ||
100368 | + teardown_sgtable(&sg_out); | ||
100369 | +out_tfm: | ||
100370 | + crypto_free_blkcipher(tfm); | ||
100371 | + return ret; | ||
100372 | } | ||
100373 | |||
100374 | static int ceph_aes_encrypt2(const void *key, int key_len, void *dst, | ||
100375 | @@ -144,7 +223,8 @@ static int ceph_aes_encrypt2(const void *key, int key_len, void *dst, | ||
100376 | const void *src1, size_t src1_len, | ||
100377 | const void *src2, size_t src2_len) | ||
100378 | { | ||
100379 | - struct scatterlist sg_in[3], sg_out[1]; | ||
100380 | + struct scatterlist sg_in[3], prealloc_sg; | ||
100381 | + struct sg_table sg_out; | ||
100382 | struct crypto_blkcipher *tfm = ceph_crypto_alloc_cipher(); | ||
100383 | struct blkcipher_desc desc = { .tfm = tfm, .flags = 0 }; | ||
100384 | int ret; | ||
100385 | @@ -160,17 +240,19 @@ static int ceph_aes_encrypt2(const void *key, int key_len, void *dst, | ||
100386 | |||
100387 | *dst_len = src1_len + src2_len + zero_padding; | ||
100388 | |||
100389 | - crypto_blkcipher_setkey((void *)tfm, key, key_len); | ||
100390 | sg_init_table(sg_in, 3); | ||
100391 | sg_set_buf(&sg_in[0], src1, src1_len); | ||
100392 | sg_set_buf(&sg_in[1], src2, src2_len); | ||
100393 | sg_set_buf(&sg_in[2], pad, zero_padding); | ||
100394 | - sg_init_table(sg_out, 1); | ||
100395 | - sg_set_buf(sg_out, dst, *dst_len); | ||
100396 | + ret = setup_sgtable(&sg_out, &prealloc_sg, dst, *dst_len); | ||
100397 | + if (ret) | ||
100398 | + goto out_tfm; | ||
100399 | + | ||
100400 | + crypto_blkcipher_setkey((void *)tfm, key, key_len); | ||
100401 | iv = crypto_blkcipher_crt(tfm)->iv; | ||
100402 | ivsize = crypto_blkcipher_ivsize(tfm); | ||
100403 | - | ||
100404 | memcpy(iv, aes_iv, ivsize); | ||
100405 | + | ||
100406 | /* | ||
100407 | print_hex_dump(KERN_ERR, "enc key: ", DUMP_PREFIX_NONE, 16, 1, | ||
100408 | key, key_len, 1); | ||
100409 | @@ -181,23 +263,30 @@ static int ceph_aes_encrypt2(const void *key, int key_len, void *dst, | ||
100410 | print_hex_dump(KERN_ERR, "enc pad: ", DUMP_PREFIX_NONE, 16, 1, | ||
100411 | pad, zero_padding, 1); | ||
100412 | */ | ||
100413 | - ret = crypto_blkcipher_encrypt(&desc, sg_out, sg_in, | ||
100414 | + ret = crypto_blkcipher_encrypt(&desc, sg_out.sgl, sg_in, | ||
100415 | src1_len + src2_len + zero_padding); | ||
100416 | - crypto_free_blkcipher(tfm); | ||
100417 | - if (ret < 0) | ||
100418 | + if (ret < 0) { | ||
100419 | pr_err("ceph_aes_crypt2 failed %d\n", ret); | ||
100420 | + goto out_sg; | ||
100421 | + } | ||
100422 | /* | ||
100423 | print_hex_dump(KERN_ERR, "enc out: ", DUMP_PREFIX_NONE, 16, 1, | ||
100424 | dst, *dst_len, 1); | ||
100425 | */ | ||
100426 | - return 0; | ||
100427 | + | ||
100428 | +out_sg: | ||
100429 | + teardown_sgtable(&sg_out); | ||
100430 | +out_tfm: | ||
100431 | + crypto_free_blkcipher(tfm); | ||
100432 | + return ret; | ||
100433 | } | ||
100434 | |||
100435 | static int ceph_aes_decrypt(const void *key, int key_len, | ||
100436 | void *dst, size_t *dst_len, | ||
100437 | const void *src, size_t src_len) | ||
100438 | { | ||
100439 | - struct scatterlist sg_in[1], sg_out[2]; | ||
100440 | + struct sg_table sg_in; | ||
100441 | + struct scatterlist sg_out[2], prealloc_sg; | ||
100442 | struct crypto_blkcipher *tfm = ceph_crypto_alloc_cipher(); | ||
100443 | struct blkcipher_desc desc = { .tfm = tfm }; | ||
100444 | char pad[16]; | ||
100445 | @@ -209,16 +298,16 @@ static int ceph_aes_decrypt(const void *key, int key_len, | ||
100446 | if (IS_ERR(tfm)) | ||
100447 | return PTR_ERR(tfm); | ||
100448 | |||
100449 | - crypto_blkcipher_setkey((void *)tfm, key, key_len); | ||
100450 | - sg_init_table(sg_in, 1); | ||
100451 | sg_init_table(sg_out, 2); | ||
100452 | - sg_set_buf(sg_in, src, src_len); | ||
100453 | sg_set_buf(&sg_out[0], dst, *dst_len); | ||
100454 | sg_set_buf(&sg_out[1], pad, sizeof(pad)); | ||
100455 | + ret = setup_sgtable(&sg_in, &prealloc_sg, src, src_len); | ||
100456 | + if (ret) | ||
100457 | + goto out_tfm; | ||
100458 | |||
100459 | + crypto_blkcipher_setkey((void *)tfm, key, key_len); | ||
100460 | iv = crypto_blkcipher_crt(tfm)->iv; | ||
100461 | ivsize = crypto_blkcipher_ivsize(tfm); | ||
100462 | - | ||
100463 | memcpy(iv, aes_iv, ivsize); | ||
100464 | |||
100465 | /* | ||
100466 | @@ -227,12 +316,10 @@ static int ceph_aes_decrypt(const void *key, int key_len, | ||
100467 | print_hex_dump(KERN_ERR, "dec in: ", DUMP_PREFIX_NONE, 16, 1, | ||
100468 | src, src_len, 1); | ||
100469 | */ | ||
100470 | - | ||
100471 | - ret = crypto_blkcipher_decrypt(&desc, sg_out, sg_in, src_len); | ||
100472 | - crypto_free_blkcipher(tfm); | ||
100473 | + ret = crypto_blkcipher_decrypt(&desc, sg_out, sg_in.sgl, src_len); | ||
100474 | if (ret < 0) { | ||
100475 | pr_err("ceph_aes_decrypt failed %d\n", ret); | ||
100476 | - return ret; | ||
100477 | + goto out_sg; | ||
100478 | } | ||
100479 | |||
100480 | if (src_len <= *dst_len) | ||
100481 | @@ -250,7 +337,12 @@ static int ceph_aes_decrypt(const void *key, int key_len, | ||
100482 | print_hex_dump(KERN_ERR, "dec out: ", DUMP_PREFIX_NONE, 16, 1, | ||
100483 | dst, *dst_len, 1); | ||
100484 | */ | ||
100485 | - return 0; | ||
100486 | + | ||
100487 | +out_sg: | ||
100488 | + teardown_sgtable(&sg_in); | ||
100489 | +out_tfm: | ||
100490 | + crypto_free_blkcipher(tfm); | ||
100491 | + return ret; | ||
100492 | } | ||
100493 | |||
100494 | static int ceph_aes_decrypt2(const void *key, int key_len, | ||
100495 | @@ -258,7 +350,8 @@ static int ceph_aes_decrypt2(const void *key, int key_len, | ||
100496 | void *dst2, size_t *dst2_len, | ||
100497 | const void *src, size_t src_len) | ||
100498 | { | ||
100499 | - struct scatterlist sg_in[1], sg_out[3]; | ||
100500 | + struct sg_table sg_in; | ||
100501 | + struct scatterlist sg_out[3], prealloc_sg; | ||
100502 | struct crypto_blkcipher *tfm = ceph_crypto_alloc_cipher(); | ||
100503 | struct blkcipher_desc desc = { .tfm = tfm }; | ||
100504 | char pad[16]; | ||
100505 | @@ -270,17 +363,17 @@ static int ceph_aes_decrypt2(const void *key, int key_len, | ||
100506 | if (IS_ERR(tfm)) | ||
100507 | return PTR_ERR(tfm); | ||
100508 | |||
100509 | - sg_init_table(sg_in, 1); | ||
100510 | - sg_set_buf(sg_in, src, src_len); | ||
100511 | sg_init_table(sg_out, 3); | ||
100512 | sg_set_buf(&sg_out[0], dst1, *dst1_len); | ||
100513 | sg_set_buf(&sg_out[1], dst2, *dst2_len); | ||
100514 | sg_set_buf(&sg_out[2], pad, sizeof(pad)); | ||
100515 | + ret = setup_sgtable(&sg_in, &prealloc_sg, src, src_len); | ||
100516 | + if (ret) | ||
100517 | + goto out_tfm; | ||
100518 | |||
100519 | crypto_blkcipher_setkey((void *)tfm, key, key_len); | ||
100520 | iv = crypto_blkcipher_crt(tfm)->iv; | ||
100521 | ivsize = crypto_blkcipher_ivsize(tfm); | ||
100522 | - | ||
100523 | memcpy(iv, aes_iv, ivsize); | ||
100524 | |||
100525 | /* | ||
100526 | @@ -289,12 +382,10 @@ static int ceph_aes_decrypt2(const void *key, int key_len, | ||
100527 | print_hex_dump(KERN_ERR, "dec in: ", DUMP_PREFIX_NONE, 16, 1, | ||
100528 | src, src_len, 1); | ||
100529 | */ | ||
100530 | - | ||
100531 | - ret = crypto_blkcipher_decrypt(&desc, sg_out, sg_in, src_len); | ||
100532 | - crypto_free_blkcipher(tfm); | ||
100533 | + ret = crypto_blkcipher_decrypt(&desc, sg_out, sg_in.sgl, src_len); | ||
100534 | if (ret < 0) { | ||
100535 | pr_err("ceph_aes_decrypt failed %d\n", ret); | ||
100536 | - return ret; | ||
100537 | + goto out_sg; | ||
100538 | } | ||
100539 | |||
100540 | if (src_len <= *dst1_len) | ||
100541 | @@ -324,7 +415,11 @@ static int ceph_aes_decrypt2(const void *key, int key_len, | ||
100542 | dst2, *dst2_len, 1); | ||
100543 | */ | ||
100544 | |||
100545 | - return 0; | ||
100546 | +out_sg: | ||
100547 | + teardown_sgtable(&sg_in); | ||
100548 | +out_tfm: | ||
100549 | + crypto_free_blkcipher(tfm); | ||
100550 | + return ret; | ||
100551 | } | ||
100552 | |||
100553 | |||
100554 | diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c | 100117 | diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c |
100555 | index 2e87eec..6301eb0 100644 | 100118 | index 2e87eec..6301eb0 100644 |
100556 | --- a/net/ceph/messenger.c | 100119 | --- a/net/ceph/messenger.c |
@@ -101593,10 +101156,30 @@ index 07bd8ed..c574801 100644 | |||
101593 | } | 101156 | } |
101594 | 101157 | ||
101595 | diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c | 101158 | diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c |
101596 | index bdbf68b..deb4759 100644 | 101159 | index bdbf68b..f0d9c83 100644 |
101597 | --- a/net/ipv4/devinet.c | 101160 | --- a/net/ipv4/devinet.c |
101598 | +++ b/net/ipv4/devinet.c | 101161 | +++ b/net/ipv4/devinet.c |
101599 | @@ -1543,7 +1543,7 @@ static int inet_dump_ifaddr(struct sk_buff *skb, struct netlink_callback *cb) | 101162 | @@ -69,7 +69,8 @@ |
101163 | |||
101164 | static struct ipv4_devconf ipv4_devconf = { | ||
101165 | .data = { | ||
101166 | - [IPV4_DEVCONF_ACCEPT_REDIRECTS - 1] = 1, | ||
101167 | + [IPV4_DEVCONF_ACCEPT_REDIRECTS - 1] = 0, | ||
101168 | + [IPV4_DEVCONF_RP_FILTER - 1] = 1, | ||
101169 | [IPV4_DEVCONF_SEND_REDIRECTS - 1] = 1, | ||
101170 | [IPV4_DEVCONF_SECURE_REDIRECTS - 1] = 1, | ||
101171 | [IPV4_DEVCONF_SHARED_MEDIA - 1] = 1, | ||
101172 | @@ -80,7 +81,8 @@ static struct ipv4_devconf ipv4_devconf = { | ||
101173 | |||
101174 | static struct ipv4_devconf ipv4_devconf_dflt = { | ||
101175 | .data = { | ||
101176 | - [IPV4_DEVCONF_ACCEPT_REDIRECTS - 1] = 1, | ||
101177 | + [IPV4_DEVCONF_ACCEPT_REDIRECTS - 1] = 0, | ||
101178 | + [IPV4_DEVCONF_RP_FILTER - 1] = 1, | ||
101179 | [IPV4_DEVCONF_SEND_REDIRECTS - 1] = 1, | ||
101180 | [IPV4_DEVCONF_SECURE_REDIRECTS - 1] = 1, | ||
101181 | [IPV4_DEVCONF_SHARED_MEDIA - 1] = 1, | ||
101182 | @@ -1543,7 +1545,7 @@ static int inet_dump_ifaddr(struct sk_buff *skb, struct netlink_callback *cb) | ||
101600 | idx = 0; | 101183 | idx = 0; |
101601 | head = &net->dev_index_head[h]; | 101184 | head = &net->dev_index_head[h]; |
101602 | rcu_read_lock(); | 101185 | rcu_read_lock(); |
@@ -101605,7 +101188,7 @@ index bdbf68b..deb4759 100644 | |||
101605 | net->dev_base_seq; | 101188 | net->dev_base_seq; |
101606 | hlist_for_each_entry_rcu(dev, head, index_hlist) { | 101189 | hlist_for_each_entry_rcu(dev, head, index_hlist) { |
101607 | if (idx < s_idx) | 101190 | if (idx < s_idx) |
101608 | @@ -1861,7 +1861,7 @@ static int inet_netconf_dump_devconf(struct sk_buff *skb, | 101191 | @@ -1861,7 +1863,7 @@ static int inet_netconf_dump_devconf(struct sk_buff *skb, |
101609 | idx = 0; | 101192 | idx = 0; |
101610 | head = &net->dev_index_head[h]; | 101193 | head = &net->dev_index_head[h]; |
101611 | rcu_read_lock(); | 101194 | rcu_read_lock(); |
@@ -101614,7 +101197,7 @@ index bdbf68b..deb4759 100644 | |||
101614 | net->dev_base_seq; | 101197 | net->dev_base_seq; |
101615 | hlist_for_each_entry_rcu(dev, head, index_hlist) { | 101198 | hlist_for_each_entry_rcu(dev, head, index_hlist) { |
101616 | if (idx < s_idx) | 101199 | if (idx < s_idx) |
101617 | @@ -2096,7 +2096,7 @@ static int ipv4_doint_and_flush(struct ctl_table *ctl, int write, | 101200 | @@ -2096,7 +2098,7 @@ static int ipv4_doint_and_flush(struct ctl_table *ctl, int write, |
101618 | #define DEVINET_SYSCTL_FLUSHING_ENTRY(attr, name) \ | 101201 | #define DEVINET_SYSCTL_FLUSHING_ENTRY(attr, name) \ |
101619 | DEVINET_SYSCTL_COMPLEX_ENTRY(attr, name, ipv4_doint_and_flush) | 101202 | DEVINET_SYSCTL_COMPLEX_ENTRY(attr, name, ipv4_doint_and_flush) |
101620 | 101203 | ||
@@ -101623,7 +101206,7 @@ index bdbf68b..deb4759 100644 | |||
101623 | struct ctl_table_header *sysctl_header; | 101206 | struct ctl_table_header *sysctl_header; |
101624 | struct ctl_table devinet_vars[__IPV4_DEVCONF_MAX]; | 101207 | struct ctl_table devinet_vars[__IPV4_DEVCONF_MAX]; |
101625 | } devinet_sysctl = { | 101208 | } devinet_sysctl = { |
101626 | @@ -2218,7 +2218,7 @@ static __net_init int devinet_init_net(struct net *net) | 101209 | @@ -2218,7 +2220,7 @@ static __net_init int devinet_init_net(struct net *net) |
101627 | int err; | 101210 | int err; |
101628 | struct ipv4_devconf *all, *dflt; | 101211 | struct ipv4_devconf *all, *dflt; |
101629 | #ifdef CONFIG_SYSCTL | 101212 | #ifdef CONFIG_SYSCTL |
@@ -101632,7 +101215,7 @@ index bdbf68b..deb4759 100644 | |||
101632 | struct ctl_table_header *forw_hdr; | 101215 | struct ctl_table_header *forw_hdr; |
101633 | #endif | 101216 | #endif |
101634 | 101217 | ||
101635 | @@ -2236,7 +2236,7 @@ static __net_init int devinet_init_net(struct net *net) | 101218 | @@ -2236,7 +2238,7 @@ static __net_init int devinet_init_net(struct net *net) |
101636 | goto err_alloc_dflt; | 101219 | goto err_alloc_dflt; |
101637 | 101220 | ||
101638 | #ifdef CONFIG_SYSCTL | 101221 | #ifdef CONFIG_SYSCTL |
@@ -101641,7 +101224,7 @@ index bdbf68b..deb4759 100644 | |||
101641 | if (tbl == NULL) | 101224 | if (tbl == NULL) |
101642 | goto err_alloc_ctl; | 101225 | goto err_alloc_ctl; |
101643 | 101226 | ||
101644 | @@ -2256,7 +2256,10 @@ static __net_init int devinet_init_net(struct net *net) | 101227 | @@ -2256,7 +2258,10 @@ static __net_init int devinet_init_net(struct net *net) |
101645 | goto err_reg_dflt; | 101228 | goto err_reg_dflt; |
101646 | 101229 | ||
101647 | err = -ENOMEM; | 101230 | err = -ENOMEM; |
@@ -101653,7 +101236,7 @@ index bdbf68b..deb4759 100644 | |||
101653 | if (forw_hdr == NULL) | 101236 | if (forw_hdr == NULL) |
101654 | goto err_reg_ctl; | 101237 | goto err_reg_ctl; |
101655 | net->ipv4.forw_hdr = forw_hdr; | 101238 | net->ipv4.forw_hdr = forw_hdr; |
101656 | @@ -2272,8 +2275,7 @@ err_reg_ctl: | 101239 | @@ -2272,8 +2277,7 @@ err_reg_ctl: |
101657 | err_reg_dflt: | 101240 | err_reg_dflt: |
101658 | __devinet_sysctl_unregister(all); | 101241 | __devinet_sysctl_unregister(all); |
101659 | err_reg_all: | 101242 | err_reg_all: |
@@ -102812,9 +102395,27 @@ index e1a6393..f634ce5 100644 | |||
102812 | return -ENOMEM; | 102395 | return -ENOMEM; |
102813 | } | 102396 | } |
102814 | diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c | 102397 | diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c |
102815 | index 3f0ec06..495548c 100644 | 102398 | index 3f0ec06..5aad945 100644 |
102816 | --- a/net/ipv6/addrconf.c | 102399 | --- a/net/ipv6/addrconf.c |
102817 | +++ b/net/ipv6/addrconf.c | 102400 | +++ b/net/ipv6/addrconf.c |
102401 | @@ -170,7 +170,7 @@ static struct ipv6_devconf ipv6_devconf __read_mostly = { | ||
102402 | .hop_limit = IPV6_DEFAULT_HOPLIMIT, | ||
102403 | .mtu6 = IPV6_MIN_MTU, | ||
102404 | .accept_ra = 1, | ||
102405 | - .accept_redirects = 1, | ||
102406 | + .accept_redirects = 0, | ||
102407 | .autoconf = 1, | ||
102408 | .force_mld_version = 0, | ||
102409 | .mldv1_unsolicited_report_interval = 10 * HZ, | ||
102410 | @@ -206,7 +206,7 @@ static struct ipv6_devconf ipv6_devconf_dflt __read_mostly = { | ||
102411 | .hop_limit = IPV6_DEFAULT_HOPLIMIT, | ||
102412 | .mtu6 = IPV6_MIN_MTU, | ||
102413 | .accept_ra = 1, | ||
102414 | - .accept_redirects = 1, | ||
102415 | + .accept_redirects = 0, | ||
102416 | .autoconf = 1, | ||
102417 | .force_mld_version = 0, | ||
102418 | .mldv1_unsolicited_report_interval = 10 * HZ, | ||
102818 | @@ -598,7 +598,7 @@ static int inet6_netconf_dump_devconf(struct sk_buff *skb, | 102419 | @@ -598,7 +598,7 @@ static int inet6_netconf_dump_devconf(struct sk_buff *skb, |
102819 | idx = 0; | 102420 | idx = 0; |
102820 | head = &net->dev_index_head[h]; | 102421 | head = &net->dev_index_head[h]; |
@@ -102946,7 +102547,7 @@ index 7b32652..0bc348b 100644 | |||
102946 | table = kmemdup(ipv6_icmp_table_template, | 102547 | table = kmemdup(ipv6_icmp_table_template, |
102947 | sizeof(ipv6_icmp_table_template), | 102548 | sizeof(ipv6_icmp_table_template), |
102948 | diff --git a/net/ipv6/ip6_gre.c b/net/ipv6/ip6_gre.c | 102549 | diff --git a/net/ipv6/ip6_gre.c b/net/ipv6/ip6_gre.c |
102949 | index cb57aa8..01c248e 100644 | 102550 | index b27f6d3..1a2977b 100644 |
102950 | --- a/net/ipv6/ip6_gre.c | 102551 | --- a/net/ipv6/ip6_gre.c |
102951 | +++ b/net/ipv6/ip6_gre.c | 102552 | +++ b/net/ipv6/ip6_gre.c |
102952 | @@ -71,7 +71,7 @@ struct ip6gre_net { | 102553 | @@ -71,7 +71,7 @@ struct ip6gre_net { |
@@ -102958,7 +102559,7 @@ index cb57aa8..01c248e 100644 | |||
102958 | static int ip6gre_tunnel_init(struct net_device *dev); | 102559 | static int ip6gre_tunnel_init(struct net_device *dev); |
102959 | static void ip6gre_tunnel_setup(struct net_device *dev); | 102560 | static void ip6gre_tunnel_setup(struct net_device *dev); |
102960 | static void ip6gre_tunnel_link(struct ip6gre_net *ign, struct ip6_tnl *t); | 102561 | static void ip6gre_tunnel_link(struct ip6gre_net *ign, struct ip6_tnl *t); |
102961 | @@ -1291,7 +1291,7 @@ static void ip6gre_fb_tunnel_init(struct net_device *dev) | 102562 | @@ -1290,7 +1290,7 @@ static void ip6gre_fb_tunnel_init(struct net_device *dev) |
102962 | } | 102563 | } |
102963 | 102564 | ||
102964 | 102565 | ||
@@ -102967,7 +102568,7 @@ index cb57aa8..01c248e 100644 | |||
102967 | .handler = ip6gre_rcv, | 102568 | .handler = ip6gre_rcv, |
102968 | .err_handler = ip6gre_err, | 102569 | .err_handler = ip6gre_err, |
102969 | .flags = INET6_PROTO_NOPOLICY|INET6_PROTO_FINAL, | 102570 | .flags = INET6_PROTO_NOPOLICY|INET6_PROTO_FINAL, |
102970 | @@ -1643,7 +1643,7 @@ static const struct nla_policy ip6gre_policy[IFLA_GRE_MAX + 1] = { | 102571 | @@ -1644,7 +1644,7 @@ static const struct nla_policy ip6gre_policy[IFLA_GRE_MAX + 1] = { |
102971 | [IFLA_GRE_FLAGS] = { .type = NLA_U32 }, | 102572 | [IFLA_GRE_FLAGS] = { .type = NLA_U32 }, |
102972 | }; | 102573 | }; |
102973 | 102574 | ||
@@ -102976,7 +102577,7 @@ index cb57aa8..01c248e 100644 | |||
102976 | .kind = "ip6gre", | 102577 | .kind = "ip6gre", |
102977 | .maxtype = IFLA_GRE_MAX, | 102578 | .maxtype = IFLA_GRE_MAX, |
102978 | .policy = ip6gre_policy, | 102579 | .policy = ip6gre_policy, |
102979 | @@ -1657,7 +1657,7 @@ static struct rtnl_link_ops ip6gre_link_ops __read_mostly = { | 102580 | @@ -1658,7 +1658,7 @@ static struct rtnl_link_ops ip6gre_link_ops __read_mostly = { |
102980 | .fill_info = ip6gre_fill_info, | 102581 | .fill_info = ip6gre_fill_info, |
102981 | }; | 102582 | }; |
102982 | 102583 | ||
@@ -102998,7 +102599,7 @@ index b2f0915..066db10 100644 | |||
102998 | __skb_pull(skb, len); | 102599 | __skb_pull(skb, len); |
102999 | } | 102600 | } |
103000 | diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c | 102601 | diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c |
103001 | index 9120339..cfdd84f 100644 | 102602 | index 657639d..8b609c5 100644 |
103002 | --- a/net/ipv6/ip6_tunnel.c | 102603 | --- a/net/ipv6/ip6_tunnel.c |
103003 | +++ b/net/ipv6/ip6_tunnel.c | 102604 | +++ b/net/ipv6/ip6_tunnel.c |
103004 | @@ -86,7 +86,7 @@ static u32 HASH(const struct in6_addr *addr1, const struct in6_addr *addr2) | 102605 | @@ -86,7 +86,7 @@ static u32 HASH(const struct in6_addr *addr1, const struct in6_addr *addr2) |
@@ -103010,7 +102611,7 @@ index 9120339..cfdd84f 100644 | |||
103010 | 102611 | ||
103011 | static int ip6_tnl_net_id __read_mostly; | 102612 | static int ip6_tnl_net_id __read_mostly; |
103012 | struct ip6_tnl_net { | 102613 | struct ip6_tnl_net { |
103013 | @@ -1715,7 +1715,7 @@ static const struct nla_policy ip6_tnl_policy[IFLA_IPTUN_MAX + 1] = { | 102614 | @@ -1707,7 +1707,7 @@ static const struct nla_policy ip6_tnl_policy[IFLA_IPTUN_MAX + 1] = { |
103014 | [IFLA_IPTUN_PROTO] = { .type = NLA_U8 }, | 102615 | [IFLA_IPTUN_PROTO] = { .type = NLA_U8 }, |
103015 | }; | 102616 | }; |
103016 | 102617 | ||
@@ -103020,7 +102621,7 @@ index 9120339..cfdd84f 100644 | |||
103020 | .maxtype = IFLA_IPTUN_MAX, | 102621 | .maxtype = IFLA_IPTUN_MAX, |
103021 | .policy = ip6_tnl_policy, | 102622 | .policy = ip6_tnl_policy, |
103022 | diff --git a/net/ipv6/ip6_vti.c b/net/ipv6/ip6_vti.c | 102623 | diff --git a/net/ipv6/ip6_vti.c b/net/ipv6/ip6_vti.c |
103023 | index 2d19272..3a46322 100644 | 102624 | index 9a5339f..8fc3c37 100644 |
103024 | --- a/net/ipv6/ip6_vti.c | 102625 | --- a/net/ipv6/ip6_vti.c |
103025 | +++ b/net/ipv6/ip6_vti.c | 102626 | +++ b/net/ipv6/ip6_vti.c |
103026 | @@ -62,7 +62,7 @@ static u32 HASH(const struct in6_addr *addr1, const struct in6_addr *addr2) | 102627 | @@ -62,7 +62,7 @@ static u32 HASH(const struct in6_addr *addr1, const struct in6_addr *addr2) |
@@ -103032,7 +102633,7 @@ index 2d19272..3a46322 100644 | |||
103032 | 102633 | ||
103033 | static int vti6_net_id __read_mostly; | 102634 | static int vti6_net_id __read_mostly; |
103034 | struct vti6_net { | 102635 | struct vti6_net { |
103035 | @@ -901,7 +901,7 @@ static const struct nla_policy vti6_policy[IFLA_VTI_MAX + 1] = { | 102636 | @@ -892,7 +892,7 @@ static const struct nla_policy vti6_policy[IFLA_VTI_MAX + 1] = { |
103036 | [IFLA_VTI_OKEY] = { .type = NLA_U32 }, | 102637 | [IFLA_VTI_OKEY] = { .type = NLA_U32 }, |
103037 | }; | 102638 | }; |
103038 | 102639 | ||
@@ -103349,7 +102950,7 @@ index 7cc1102..7785931 100644 | |||
103349 | table = kmemdup(ipv6_route_table_template, | 102950 | table = kmemdup(ipv6_route_table_template, |
103350 | sizeof(ipv6_route_table_template), | 102951 | sizeof(ipv6_route_table_template), |
103351 | diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c | 102952 | diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c |
103352 | index b12b11b..13856f9 100644 | 102953 | index 317b6db..9dbd284 100644 |
103353 | --- a/net/ipv6/sit.c | 102954 | --- a/net/ipv6/sit.c |
103354 | +++ b/net/ipv6/sit.c | 102955 | +++ b/net/ipv6/sit.c |
103355 | @@ -74,7 +74,7 @@ static void ipip6_tunnel_setup(struct net_device *dev); | 102956 | @@ -74,7 +74,7 @@ static void ipip6_tunnel_setup(struct net_device *dev); |
@@ -103361,7 +102962,7 @@ index b12b11b..13856f9 100644 | |||
103361 | 102962 | ||
103362 | static int sit_net_id __read_mostly; | 102963 | static int sit_net_id __read_mostly; |
103363 | struct sit_net { | 102964 | struct sit_net { |
103364 | @@ -484,11 +484,11 @@ static void ipip6_tunnel_uninit(struct net_device *dev) | 102965 | @@ -483,11 +483,11 @@ static void ipip6_tunnel_uninit(struct net_device *dev) |
103365 | */ | 102966 | */ |
103366 | static int ipip6_err_gen_icmpv6_unreach(struct sk_buff *skb) | 102967 | static int ipip6_err_gen_icmpv6_unreach(struct sk_buff *skb) |
103367 | { | 102968 | { |
@@ -103375,7 +102976,7 @@ index b12b11b..13856f9 100644 | |||
103375 | return 1; | 102976 | return 1; |
103376 | 102977 | ||
103377 | skb2 = skb_clone(skb, GFP_ATOMIC); | 102978 | skb2 = skb_clone(skb, GFP_ATOMIC); |
103378 | @@ -497,7 +497,7 @@ static int ipip6_err_gen_icmpv6_unreach(struct sk_buff *skb) | 102979 | @@ -496,7 +496,7 @@ static int ipip6_err_gen_icmpv6_unreach(struct sk_buff *skb) |
103379 | return 1; | 102980 | return 1; |
103380 | 102981 | ||
103381 | skb_dst_drop(skb2); | 102982 | skb_dst_drop(skb2); |
@@ -103384,7 +102985,7 @@ index b12b11b..13856f9 100644 | |||
103384 | skb_reset_network_header(skb2); | 102985 | skb_reset_network_header(skb2); |
103385 | 102986 | ||
103386 | rt = rt6_lookup(dev_net(skb->dev), &ipv6_hdr(skb2)->saddr, NULL, 0, 0); | 102987 | rt = rt6_lookup(dev_net(skb->dev), &ipv6_hdr(skb2)->saddr, NULL, 0, 0); |
103387 | @@ -1683,7 +1683,7 @@ static void ipip6_dellink(struct net_device *dev, struct list_head *head) | 102988 | @@ -1680,7 +1680,7 @@ static void ipip6_dellink(struct net_device *dev, struct list_head *head) |
103388 | unregister_netdevice_queue(dev, head); | 102989 | unregister_netdevice_queue(dev, head); |
103389 | } | 102990 | } |
103390 | 102991 | ||
@@ -103800,7 +103401,7 @@ index 453e974..b3a43a5 100644 | |||
103800 | if (local->use_chanctx) | 103401 | if (local->use_chanctx) |
103801 | *chandef = local->monitor_chandef; | 103402 | *chandef = local->monitor_chandef; |
103802 | diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h | 103403 | diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h |
103803 | index b127902..9dc4947 100644 | 103404 | index bf7a1bb..1619d8e 100644 |
103804 | --- a/net/mac80211/ieee80211_i.h | 103405 | --- a/net/mac80211/ieee80211_i.h |
103805 | +++ b/net/mac80211/ieee80211_i.h | 103406 | +++ b/net/mac80211/ieee80211_i.h |
103806 | @@ -28,6 +28,7 @@ | 103407 | @@ -28,6 +28,7 @@ |
@@ -103821,7 +103422,7 @@ index b127902..9dc4947 100644 | |||
103821 | /* number of interfaces with corresponding FIF_ flags */ | 103422 | /* number of interfaces with corresponding FIF_ flags */ |
103822 | int fif_fcsfail, fif_plcpfail, fif_control, fif_other_bss, fif_pspoll, | 103423 | int fif_fcsfail, fif_plcpfail, fif_control, fif_other_bss, fif_pspoll, |
103823 | diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c | 103424 | diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c |
103824 | index 8f7fabc..e400523 100644 | 103425 | index 06f5de4..f2e0437 100644 |
103825 | --- a/net/mac80211/iface.c | 103426 | --- a/net/mac80211/iface.c |
103826 | +++ b/net/mac80211/iface.c | 103427 | +++ b/net/mac80211/iface.c |
103827 | @@ -529,7 +529,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up) | 103428 | @@ -529,7 +529,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up) |
@@ -103860,7 +103461,7 @@ index 8f7fabc..e400523 100644 | |||
103860 | drv_stop(local); | 103461 | drv_stop(local); |
103861 | err_del_bss: | 103462 | err_del_bss: |
103862 | sdata->bss = NULL; | 103463 | sdata->bss = NULL; |
103863 | @@ -874,7 +874,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, | 103464 | @@ -876,7 +876,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, |
103864 | } | 103465 | } |
103865 | 103466 | ||
103866 | if (going_down) | 103467 | if (going_down) |
@@ -103869,7 +103470,7 @@ index 8f7fabc..e400523 100644 | |||
103869 | 103470 | ||
103870 | switch (sdata->vif.type) { | 103471 | switch (sdata->vif.type) { |
103871 | case NL80211_IFTYPE_AP_VLAN: | 103472 | case NL80211_IFTYPE_AP_VLAN: |
103872 | @@ -933,7 +933,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, | 103473 | @@ -935,7 +935,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, |
103873 | } | 103474 | } |
103874 | spin_unlock_irqrestore(&local->queue_stop_reason_lock, flags); | 103475 | spin_unlock_irqrestore(&local->queue_stop_reason_lock, flags); |
103875 | 103476 | ||
@@ -103878,16 +103479,16 @@ index 8f7fabc..e400523 100644 | |||
103878 | ieee80211_clear_tx_pending(local); | 103479 | ieee80211_clear_tx_pending(local); |
103879 | 103480 | ||
103880 | /* | 103481 | /* |
103881 | @@ -973,7 +973,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, | 103482 | @@ -978,7 +978,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, |
103882 | 103483 | if (cancel_scan) | |
103883 | ieee80211_recalc_ps(local, -1); | 103484 | flush_delayed_work(&local->scan_work); |
103884 | 103485 | ||
103885 | - if (local->open_count == 0) { | 103486 | - if (local->open_count == 0) { |
103886 | + if (local_read(&local->open_count) == 0) { | 103487 | + if (local_read(&local->open_count) == 0) { |
103887 | ieee80211_stop_device(local); | 103488 | ieee80211_stop_device(local); |
103888 | 103489 | ||
103889 | /* no reconfiguring after stop! */ | 103490 | /* no reconfiguring after stop! */ |
103890 | @@ -984,7 +984,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, | 103491 | @@ -989,7 +989,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, |
103891 | ieee80211_configure_filter(local); | 103492 | ieee80211_configure_filter(local); |
103892 | ieee80211_hw_config(local, hw_reconf_flags); | 103493 | ieee80211_hw_config(local, hw_reconf_flags); |
103893 | 103494 | ||
@@ -104022,7 +103623,7 @@ index bffdad7..f9317d1 100644 | |||
104022 | obj-$(CONFIG_NETFILTER_XT_MATCH_HELPER) += xt_helper.o | 103623 | obj-$(CONFIG_NETFILTER_XT_MATCH_HELPER) += xt_helper.o |
104023 | obj-$(CONFIG_NETFILTER_XT_MATCH_HL) += xt_hl.o | 103624 | obj-$(CONFIG_NETFILTER_XT_MATCH_HL) += xt_hl.o |
104024 | diff --git a/net/netfilter/ipset/ip_set_core.c b/net/netfilter/ipset/ip_set_core.c | 103625 | diff --git a/net/netfilter/ipset/ip_set_core.c b/net/netfilter/ipset/ip_set_core.c |
104025 | index de770ec..3fc49d2 100644 | 103626 | index cf99377..c09b5b7 100644 |
104026 | --- a/net/netfilter/ipset/ip_set_core.c | 103627 | --- a/net/netfilter/ipset/ip_set_core.c |
104027 | +++ b/net/netfilter/ipset/ip_set_core.c | 103628 | +++ b/net/netfilter/ipset/ip_set_core.c |
104028 | @@ -1922,7 +1922,7 @@ done: | 103629 | @@ -1922,7 +1922,7 @@ done: |
@@ -104418,10 +104019,10 @@ index c68e5e0..8d52d50 100644 | |||
104418 | type = __nf_tables_chain_type_lookup(afi->family, nla); | 104019 | type = __nf_tables_chain_type_lookup(afi->family, nla); |
104419 | if (type != NULL) | 104020 | if (type != NULL) |
104420 | diff --git a/net/netfilter/nfnetlink_log.c b/net/netfilter/nfnetlink_log.c | 104021 | diff --git a/net/netfilter/nfnetlink_log.c b/net/netfilter/nfnetlink_log.c |
104421 | index a155d19..726b0f2 100644 | 104022 | index 6ff12a1..d1815b6 100644 |
104422 | --- a/net/netfilter/nfnetlink_log.c | 104023 | --- a/net/netfilter/nfnetlink_log.c |
104423 | +++ b/net/netfilter/nfnetlink_log.c | 104024 | +++ b/net/netfilter/nfnetlink_log.c |
104424 | @@ -82,7 +82,7 @@ static int nfnl_log_net_id __read_mostly; | 104025 | @@ -83,7 +83,7 @@ static int nfnl_log_net_id __read_mostly; |
104425 | struct nfnl_log_net { | 104026 | struct nfnl_log_net { |
104426 | spinlock_t instances_lock; | 104027 | spinlock_t instances_lock; |
104427 | struct hlist_head instance_table[INSTANCE_BUCKETS]; | 104028 | struct hlist_head instance_table[INSTANCE_BUCKETS]; |
@@ -104430,7 +104031,7 @@ index a155d19..726b0f2 100644 | |||
104430 | }; | 104031 | }; |
104431 | 104032 | ||
104432 | static struct nfnl_log_net *nfnl_log_pernet(struct net *net) | 104033 | static struct nfnl_log_net *nfnl_log_pernet(struct net *net) |
104433 | @@ -564,7 +564,7 @@ __build_packet_message(struct nfnl_log_net *log, | 104034 | @@ -566,7 +566,7 @@ __build_packet_message(struct nfnl_log_net *log, |
104434 | /* global sequence number */ | 104035 | /* global sequence number */ |
104435 | if ((inst->flags & NFULNL_CFG_F_SEQ_GLOBAL) && | 104036 | if ((inst->flags & NFULNL_CFG_F_SEQ_GLOBAL) && |
104436 | nla_put_be32(inst->skb, NFULA_SEQ_GLOBAL, | 104037 | nla_put_be32(inst->skb, NFULA_SEQ_GLOBAL, |
@@ -104440,7 +104041,7 @@ index a155d19..726b0f2 100644 | |||
104440 | 104041 | ||
104441 | if (data_len) { | 104042 | if (data_len) { |
104442 | diff --git a/net/netfilter/nft_compat.c b/net/netfilter/nft_compat.c | 104043 | diff --git a/net/netfilter/nft_compat.c b/net/netfilter/nft_compat.c |
104443 | index 82cb823..5685dd5 100644 | 104044 | index ad97961..a312654 100644 |
104444 | --- a/net/netfilter/nft_compat.c | 104045 | --- a/net/netfilter/nft_compat.c |
104445 | +++ b/net/netfilter/nft_compat.c | 104046 | +++ b/net/netfilter/nft_compat.c |
104446 | @@ -216,7 +216,7 @@ target_dump_info(struct sk_buff *skb, const struct xt_target *t, const void *in) | 104047 | @@ -216,7 +216,7 @@ target_dump_info(struct sk_buff *skb, const struct xt_target *t, const void *in) |
@@ -105213,87 +104814,6 @@ index f226709..0e735a8 100644 | |||
105213 | _proto("Tx RESPONSE %%%u", ntohl(hdr->serial)); | 104814 | _proto("Tx RESPONSE %%%u", ntohl(hdr->serial)); |
105214 | 104815 | ||
105215 | ret = kernel_sendmsg(conn->trans->local->socket, &msg, iov, 3, len); | 104816 | ret = kernel_sendmsg(conn->trans->local->socket, &msg, iov, 3, len); |
105216 | diff --git a/net/sctp/associola.c b/net/sctp/associola.c | ||
105217 | index 5d97d8f..d477d47 100644 | ||
105218 | --- a/net/sctp/associola.c | ||
105219 | +++ b/net/sctp/associola.c | ||
105220 | @@ -1627,6 +1627,8 @@ struct sctp_chunk *sctp_assoc_lookup_asconf_ack( | ||
105221 | * ack chunk whose serial number matches that of the request. | ||
105222 | */ | ||
105223 | list_for_each_entry(ack, &asoc->asconf_ack_list, transmitted_list) { | ||
105224 | + if (sctp_chunk_pending(ack)) | ||
105225 | + continue; | ||
105226 | if (ack->subh.addip_hdr->serial == serial) { | ||
105227 | sctp_chunk_hold(ack); | ||
105228 | return ack; | ||
105229 | diff --git a/net/sctp/auth.c b/net/sctp/auth.c | ||
105230 | index 0e85291..fb7976a 100644 | ||
105231 | --- a/net/sctp/auth.c | ||
105232 | +++ b/net/sctp/auth.c | ||
105233 | @@ -862,8 +862,6 @@ int sctp_auth_set_key(struct sctp_endpoint *ep, | ||
105234 | list_add(&cur_key->key_list, sh_keys); | ||
105235 | |||
105236 | cur_key->key = key; | ||
105237 | - sctp_auth_key_hold(key); | ||
105238 | - | ||
105239 | return 0; | ||
105240 | nomem: | ||
105241 | if (!replace) | ||
105242 | diff --git a/net/sctp/inqueue.c b/net/sctp/inqueue.c | ||
105243 | index 4de12af..7e8a16c 100644 | ||
105244 | --- a/net/sctp/inqueue.c | ||
105245 | +++ b/net/sctp/inqueue.c | ||
105246 | @@ -140,18 +140,9 @@ struct sctp_chunk *sctp_inq_pop(struct sctp_inq *queue) | ||
105247 | } else { | ||
105248 | /* Nothing to do. Next chunk in the packet, please. */ | ||
105249 | ch = (sctp_chunkhdr_t *) chunk->chunk_end; | ||
105250 | - | ||
105251 | /* Force chunk->skb->data to chunk->chunk_end. */ | ||
105252 | - skb_pull(chunk->skb, | ||
105253 | - chunk->chunk_end - chunk->skb->data); | ||
105254 | - | ||
105255 | - /* Verify that we have at least chunk headers | ||
105256 | - * worth of buffer left. | ||
105257 | - */ | ||
105258 | - if (skb_headlen(chunk->skb) < sizeof(sctp_chunkhdr_t)) { | ||
105259 | - sctp_chunk_free(chunk); | ||
105260 | - chunk = queue->in_progress = NULL; | ||
105261 | - } | ||
105262 | + skb_pull(chunk->skb, chunk->chunk_end - chunk->skb->data); | ||
105263 | + /* We are guaranteed to pull a SCTP header. */ | ||
105264 | } | ||
105265 | } | ||
105266 | |||
105267 | @@ -187,24 +178,14 @@ struct sctp_chunk *sctp_inq_pop(struct sctp_inq *queue) | ||
105268 | skb_pull(chunk->skb, sizeof(sctp_chunkhdr_t)); | ||
105269 | chunk->subh.v = NULL; /* Subheader is no longer valid. */ | ||
105270 | |||
105271 | - if (chunk->chunk_end < skb_tail_pointer(chunk->skb)) { | ||
105272 | + if (chunk->chunk_end + sizeof(sctp_chunkhdr_t) < | ||
105273 | + skb_tail_pointer(chunk->skb)) { | ||
105274 | /* This is not a singleton */ | ||
105275 | chunk->singleton = 0; | ||
105276 | } else if (chunk->chunk_end > skb_tail_pointer(chunk->skb)) { | ||
105277 | - /* RFC 2960, Section 6.10 Bundling | ||
105278 | - * | ||
105279 | - * Partial chunks MUST NOT be placed in an SCTP packet. | ||
105280 | - * If the receiver detects a partial chunk, it MUST drop | ||
105281 | - * the chunk. | ||
105282 | - * | ||
105283 | - * Since the end of the chunk is past the end of our buffer | ||
105284 | - * (which contains the whole packet, we can freely discard | ||
105285 | - * the whole packet. | ||
105286 | - */ | ||
105287 | - sctp_chunk_free(chunk); | ||
105288 | - chunk = queue->in_progress = NULL; | ||
105289 | - | ||
105290 | - return NULL; | ||
105291 | + /* Discard inside state machine. */ | ||
105292 | + chunk->pdiscard = 1; | ||
105293 | + chunk->chunk_end = skb_tail_pointer(chunk->skb); | ||
105294 | } else { | ||
105295 | /* We are at the end of the packet, so mark the chunk | ||
105296 | * in case we need to send a SACK. | ||
105297 | diff --git a/net/sctp/ipv6.c b/net/sctp/ipv6.c | 104817 | diff --git a/net/sctp/ipv6.c b/net/sctp/ipv6.c |
105298 | index 2b1738e..a9d0fc9 100644 | 104818 | index 2b1738e..a9d0fc9 100644 |
105299 | --- a/net/sctp/ipv6.c | 104819 | --- a/net/sctp/ipv6.c |
@@ -105368,182 +104888,6 @@ index a62a215..0976540 100644 | |||
105368 | } | 104888 | } |
105369 | 104889 | ||
105370 | static int sctp_v4_protosw_init(void) | 104890 | static int sctp_v4_protosw_init(void) |
105371 | diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c | ||
105372 | index fee5552..43abb64 100644 | ||
105373 | --- a/net/sctp/sm_make_chunk.c | ||
105374 | +++ b/net/sctp/sm_make_chunk.c | ||
105375 | @@ -2609,6 +2609,9 @@ do_addr_param: | ||
105376 | addr_param = param.v + sizeof(sctp_addip_param_t); | ||
105377 | |||
105378 | af = sctp_get_af_specific(param_type2af(param.p->type)); | ||
105379 | + if (af == NULL) | ||
105380 | + break; | ||
105381 | + | ||
105382 | af->from_addr_param(&addr, addr_param, | ||
105383 | htons(asoc->peer.port), 0); | ||
105384 | |||
105385 | @@ -3110,50 +3113,63 @@ static __be16 sctp_process_asconf_param(struct sctp_association *asoc, | ||
105386 | return SCTP_ERROR_NO_ERROR; | ||
105387 | } | ||
105388 | |||
105389 | -/* Verify the ASCONF packet before we process it. */ | ||
105390 | -int sctp_verify_asconf(const struct sctp_association *asoc, | ||
105391 | - struct sctp_paramhdr *param_hdr, void *chunk_end, | ||
105392 | - struct sctp_paramhdr **errp) { | ||
105393 | - sctp_addip_param_t *asconf_param; | ||
105394 | +/* Verify the ASCONF packet before we process it. */ | ||
105395 | +bool sctp_verify_asconf(const struct sctp_association *asoc, | ||
105396 | + struct sctp_chunk *chunk, bool addr_param_needed, | ||
105397 | + struct sctp_paramhdr **errp) | ||
105398 | +{ | ||
105399 | + sctp_addip_chunk_t *addip = (sctp_addip_chunk_t *) chunk->chunk_hdr; | ||
105400 | union sctp_params param; | ||
105401 | - int length, plen; | ||
105402 | + bool addr_param_seen = false; | ||
105403 | + | ||
105404 | + sctp_walk_params(param, addip, addip_hdr.params) { | ||
105405 | + size_t length = ntohs(param.p->length); | ||
105406 | |||
105407 | - param.v = (sctp_paramhdr_t *) param_hdr; | ||
105408 | - while (param.v <= chunk_end - sizeof(sctp_paramhdr_t)) { | ||
105409 | - length = ntohs(param.p->length); | ||
105410 | *errp = param.p; | ||
105411 | - | ||
105412 | - if (param.v > chunk_end - length || | ||
105413 | - length < sizeof(sctp_paramhdr_t)) | ||
105414 | - return 0; | ||
105415 | - | ||
105416 | switch (param.p->type) { | ||
105417 | + case SCTP_PARAM_ERR_CAUSE: | ||
105418 | + break; | ||
105419 | + case SCTP_PARAM_IPV4_ADDRESS: | ||
105420 | + if (length != sizeof(sctp_ipv4addr_param_t)) | ||
105421 | + return false; | ||
105422 | + addr_param_seen = true; | ||
105423 | + break; | ||
105424 | + case SCTP_PARAM_IPV6_ADDRESS: | ||
105425 | + if (length != sizeof(sctp_ipv6addr_param_t)) | ||
105426 | + return false; | ||
105427 | + addr_param_seen = true; | ||
105428 | + break; | ||
105429 | case SCTP_PARAM_ADD_IP: | ||
105430 | case SCTP_PARAM_DEL_IP: | ||
105431 | case SCTP_PARAM_SET_PRIMARY: | ||
105432 | - asconf_param = (sctp_addip_param_t *)param.v; | ||
105433 | - plen = ntohs(asconf_param->param_hdr.length); | ||
105434 | - if (plen < sizeof(sctp_addip_param_t) + | ||
105435 | - sizeof(sctp_paramhdr_t)) | ||
105436 | - return 0; | ||
105437 | + /* In ASCONF chunks, these need to be first. */ | ||
105438 | + if (addr_param_needed && !addr_param_seen) | ||
105439 | + return false; | ||
105440 | + length = ntohs(param.addip->param_hdr.length); | ||
105441 | + if (length < sizeof(sctp_addip_param_t) + | ||
105442 | + sizeof(sctp_paramhdr_t)) | ||
105443 | + return false; | ||
105444 | break; | ||
105445 | case SCTP_PARAM_SUCCESS_REPORT: | ||
105446 | case SCTP_PARAM_ADAPTATION_LAYER_IND: | ||
105447 | if (length != sizeof(sctp_addip_param_t)) | ||
105448 | - return 0; | ||
105449 | - | ||
105450 | + return false; | ||
105451 | break; | ||
105452 | default: | ||
105453 | - break; | ||
105454 | + /* This is unkown to us, reject! */ | ||
105455 | + return false; | ||
105456 | } | ||
105457 | - | ||
105458 | - param.v += WORD_ROUND(length); | ||
105459 | } | ||
105460 | |||
105461 | - if (param.v != chunk_end) | ||
105462 | - return 0; | ||
105463 | + /* Remaining sanity checks. */ | ||
105464 | + if (addr_param_needed && !addr_param_seen) | ||
105465 | + return false; | ||
105466 | + if (!addr_param_needed && addr_param_seen) | ||
105467 | + return false; | ||
105468 | + if (param.v != chunk->chunk_end) | ||
105469 | + return false; | ||
105470 | |||
105471 | - return 1; | ||
105472 | + return true; | ||
105473 | } | ||
105474 | |||
105475 | /* Process an incoming ASCONF chunk with the next expected serial no. and | ||
105476 | @@ -3162,16 +3178,17 @@ int sctp_verify_asconf(const struct sctp_association *asoc, | ||
105477 | struct sctp_chunk *sctp_process_asconf(struct sctp_association *asoc, | ||
105478 | struct sctp_chunk *asconf) | ||
105479 | { | ||
105480 | + sctp_addip_chunk_t *addip = (sctp_addip_chunk_t *) asconf->chunk_hdr; | ||
105481 | + bool all_param_pass = true; | ||
105482 | + union sctp_params param; | ||
105483 | sctp_addiphdr_t *hdr; | ||
105484 | union sctp_addr_param *addr_param; | ||
105485 | sctp_addip_param_t *asconf_param; | ||
105486 | struct sctp_chunk *asconf_ack; | ||
105487 | - | ||
105488 | __be16 err_code; | ||
105489 | int length = 0; | ||
105490 | int chunk_len; | ||
105491 | __u32 serial; | ||
105492 | - int all_param_pass = 1; | ||
105493 | |||
105494 | chunk_len = ntohs(asconf->chunk_hdr->length) - sizeof(sctp_chunkhdr_t); | ||
105495 | hdr = (sctp_addiphdr_t *)asconf->skb->data; | ||
105496 | @@ -3199,9 +3216,14 @@ struct sctp_chunk *sctp_process_asconf(struct sctp_association *asoc, | ||
105497 | goto done; | ||
105498 | |||
105499 | /* Process the TLVs contained within the ASCONF chunk. */ | ||
105500 | - while (chunk_len > 0) { | ||
105501 | + sctp_walk_params(param, addip, addip_hdr.params) { | ||
105502 | + /* Skip preceeding address parameters. */ | ||
105503 | + if (param.p->type == SCTP_PARAM_IPV4_ADDRESS || | ||
105504 | + param.p->type == SCTP_PARAM_IPV6_ADDRESS) | ||
105505 | + continue; | ||
105506 | + | ||
105507 | err_code = sctp_process_asconf_param(asoc, asconf, | ||
105508 | - asconf_param); | ||
105509 | + param.addip); | ||
105510 | /* ADDIP 4.1 A7) | ||
105511 | * If an error response is received for a TLV parameter, | ||
105512 | * all TLVs with no response before the failed TLV are | ||
105513 | @@ -3209,28 +3231,20 @@ struct sctp_chunk *sctp_process_asconf(struct sctp_association *asoc, | ||
105514 | * the failed response are considered unsuccessful unless | ||
105515 | * a specific success indication is present for the parameter. | ||
105516 | */ | ||
105517 | - if (SCTP_ERROR_NO_ERROR != err_code) | ||
105518 | - all_param_pass = 0; | ||
105519 | - | ||
105520 | + if (err_code != SCTP_ERROR_NO_ERROR) | ||
105521 | + all_param_pass = false; | ||
105522 | if (!all_param_pass) | ||
105523 | - sctp_add_asconf_response(asconf_ack, | ||
105524 | - asconf_param->crr_id, err_code, | ||
105525 | - asconf_param); | ||
105526 | + sctp_add_asconf_response(asconf_ack, param.addip->crr_id, | ||
105527 | + err_code, param.addip); | ||
105528 | |||
105529 | /* ADDIP 4.3 D11) When an endpoint receiving an ASCONF to add | ||
105530 | * an IP address sends an 'Out of Resource' in its response, it | ||
105531 | * MUST also fail any subsequent add or delete requests bundled | ||
105532 | * in the ASCONF. | ||
105533 | */ | ||
105534 | - if (SCTP_ERROR_RSRC_LOW == err_code) | ||
105535 | + if (err_code == SCTP_ERROR_RSRC_LOW) | ||
105536 | goto done; | ||
105537 | - | ||
105538 | - /* Move to the next ASCONF param. */ | ||
105539 | - length = ntohs(asconf_param->param_hdr.length); | ||
105540 | - asconf_param = (void *)asconf_param + length; | ||
105541 | - chunk_len -= length; | ||
105542 | } | ||
105543 | - | ||
105544 | done: | ||
105545 | asoc->peer.addip_serial++; | ||
105546 | |||
105547 | diff --git a/net/sctp/sm_sideeffect.c b/net/sctp/sm_sideeffect.c | 104891 | diff --git a/net/sctp/sm_sideeffect.c b/net/sctp/sm_sideeffect.c |
105548 | index fef2acd..c705c4f 100644 | 104892 | index fef2acd..c705c4f 100644 |
105549 | --- a/net/sctp/sm_sideeffect.c | 104893 | --- a/net/sctp/sm_sideeffect.c |
@@ -105557,61 +104901,6 @@ index fef2acd..c705c4f 100644 | |||
105557 | NULL, | 104901 | NULL, |
105558 | sctp_generate_t1_cookie_event, | 104902 | sctp_generate_t1_cookie_event, |
105559 | sctp_generate_t1_init_event, | 104903 | sctp_generate_t1_init_event, |
105560 | diff --git a/net/sctp/sm_statefuns.c b/net/sctp/sm_statefuns.c | ||
105561 | index 7194fe85..3e287a3 100644 | ||
105562 | --- a/net/sctp/sm_statefuns.c | ||
105563 | +++ b/net/sctp/sm_statefuns.c | ||
105564 | @@ -170,6 +170,9 @@ sctp_chunk_length_valid(struct sctp_chunk *chunk, | ||
105565 | { | ||
105566 | __u16 chunk_length = ntohs(chunk->chunk_hdr->length); | ||
105567 | |||
105568 | + /* Previously already marked? */ | ||
105569 | + if (unlikely(chunk->pdiscard)) | ||
105570 | + return 0; | ||
105571 | if (unlikely(chunk_length < required_length)) | ||
105572 | return 0; | ||
105573 | |||
105574 | @@ -3591,9 +3594,7 @@ sctp_disposition_t sctp_sf_do_asconf(struct net *net, | ||
105575 | struct sctp_chunk *asconf_ack = NULL; | ||
105576 | struct sctp_paramhdr *err_param = NULL; | ||
105577 | sctp_addiphdr_t *hdr; | ||
105578 | - union sctp_addr_param *addr_param; | ||
105579 | __u32 serial; | ||
105580 | - int length; | ||
105581 | |||
105582 | if (!sctp_vtag_verify(chunk, asoc)) { | ||
105583 | sctp_add_cmd_sf(commands, SCTP_CMD_REPORT_BAD_TAG, | ||
105584 | @@ -3618,17 +3619,8 @@ sctp_disposition_t sctp_sf_do_asconf(struct net *net, | ||
105585 | hdr = (sctp_addiphdr_t *)chunk->skb->data; | ||
105586 | serial = ntohl(hdr->serial); | ||
105587 | |||
105588 | - addr_param = (union sctp_addr_param *)hdr->params; | ||
105589 | - length = ntohs(addr_param->p.length); | ||
105590 | - if (length < sizeof(sctp_paramhdr_t)) | ||
105591 | - return sctp_sf_violation_paramlen(net, ep, asoc, type, arg, | ||
105592 | - (void *)addr_param, commands); | ||
105593 | - | ||
105594 | /* Verify the ASCONF chunk before processing it. */ | ||
105595 | - if (!sctp_verify_asconf(asoc, | ||
105596 | - (sctp_paramhdr_t *)((void *)addr_param + length), | ||
105597 | - (void *)chunk->chunk_end, | ||
105598 | - &err_param)) | ||
105599 | + if (!sctp_verify_asconf(asoc, chunk, true, &err_param)) | ||
105600 | return sctp_sf_violation_paramlen(net, ep, asoc, type, arg, | ||
105601 | (void *)err_param, commands); | ||
105602 | |||
105603 | @@ -3745,10 +3737,7 @@ sctp_disposition_t sctp_sf_do_asconf_ack(struct net *net, | ||
105604 | rcvd_serial = ntohl(addip_hdr->serial); | ||
105605 | |||
105606 | /* Verify the ASCONF-ACK chunk before processing it. */ | ||
105607 | - if (!sctp_verify_asconf(asoc, | ||
105608 | - (sctp_paramhdr_t *)addip_hdr->params, | ||
105609 | - (void *)asconf_ack->chunk_end, | ||
105610 | - &err_param)) | ||
105611 | + if (!sctp_verify_asconf(asoc, asconf_ack, false, &err_param)) | ||
105612 | return sctp_sf_violation_paramlen(net, ep, asoc, type, arg, | ||
105613 | (void *)err_param, commands); | ||
105614 | |||
105615 | diff --git a/net/sctp/socket.c b/net/sctp/socket.c | 104904 | diff --git a/net/sctp/socket.c b/net/sctp/socket.c |
105616 | index 604a6ac..f87f0a3 100644 | 104905 | index 604a6ac..f87f0a3 100644 |
105617 | --- a/net/sctp/socket.c | 104906 | --- a/net/sctp/socket.c |
@@ -107260,13 +106549,14 @@ index 152d4d2..791684c 100644 | |||
107260 | mkdir -p "$destdir" | 106549 | mkdir -p "$destdir" |
107261 | (cd $srctree; tar -c -f - -T "$objtree/debian/hdrsrcfiles") | (cd $destdir; tar -xf -) | 106550 | (cd $srctree; tar -c -f - -T "$objtree/debian/hdrsrcfiles") | (cd $destdir; tar -xf -) |
107262 | diff --git a/scripts/package/mkspec b/scripts/package/mkspec | 106551 | diff --git a/scripts/package/mkspec b/scripts/package/mkspec |
107263 | index 1395760..e4f4ac4 100755 | 106552 | index 1395760..6fb75f2 100755 |
107264 | --- a/scripts/package/mkspec | 106553 | --- a/scripts/package/mkspec |
107265 | +++ b/scripts/package/mkspec | 106554 | +++ b/scripts/package/mkspec |
107266 | @@ -82,6 +82,16 @@ echo "" | 106555 | @@ -129,6 +129,18 @@ echo "" |
107267 | fi | 106556 | echo "%clean" |
107268 | 106557 | echo 'rm -rf $RPM_BUILD_ROOT' | |
107269 | echo "%install" | 106558 | echo "" |
106559 | +echo "%pre" | ||
107270 | +echo 'chmod -f 0500 /boot' | 106560 | +echo 'chmod -f 0500 /boot' |
107271 | +echo 'if [ -d /lib/modules ]; then' | 106561 | +echo 'if [ -d /lib/modules ]; then' |
107272 | +echo 'chmod -f 0500 /lib/modules' | 106562 | +echo 'chmod -f 0500 /lib/modules' |
@@ -107277,10 +106567,11 @@ index 1395760..e4f4ac4 100755 | |||
107277 | +echo 'if [ -d /lib64/modules ]; then' | 106567 | +echo 'if [ -d /lib64/modules ]; then' |
107278 | +echo 'chmod -f 0500 /lib64/modules' | 106568 | +echo 'chmod -f 0500 /lib64/modules' |
107279 | +echo 'fi' | 106569 | +echo 'fi' |
107280 | echo 'KBUILD_IMAGE=$(make image_name)' | 106570 | +echo "" |
107281 | echo "%ifarch ia64" | 106571 | echo "%post" |
107282 | echo 'mkdir -p $RPM_BUILD_ROOT/boot/efi $RPM_BUILD_ROOT/lib/modules' | 106572 | echo "if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then" |
107283 | @@ -139,7 +149,7 @@ echo "rm -f /boot/vmlinuz-$KERNELRELEASE-rpm /boot/System.map-$KERNELRELEASE-rpm | 106573 | echo "cp /boot/vmlinuz-$KERNELRELEASE /boot/vmlinuz-$KERNELRELEASE-rpm" |
106574 | @@ -139,7 +151,7 @@ echo "rm -f /boot/vmlinuz-$KERNELRELEASE-rpm /boot/System.map-$KERNELRELEASE-rpm | ||
107284 | echo "fi" | 106575 | echo "fi" |
107285 | echo "" | 106576 | echo "" |
107286 | echo "%files" | 106577 | echo "%files" |
@@ -107289,7 +106580,7 @@ index 1395760..e4f4ac4 100755 | |||
107289 | echo "%dir /lib/modules" | 106580 | echo "%dir /lib/modules" |
107290 | echo "/lib/modules/$KERNELRELEASE" | 106581 | echo "/lib/modules/$KERNELRELEASE" |
107291 | echo "%exclude /lib/modules/$KERNELRELEASE/build" | 106582 | echo "%exclude /lib/modules/$KERNELRELEASE/build" |
107292 | @@ -152,7 +162,7 @@ echo '%defattr (-, root, root)' | 106583 | @@ -152,7 +164,7 @@ echo '%defattr (-, root, root)' |
107293 | echo "/usr/include" | 106584 | echo "/usr/include" |
107294 | echo "" | 106585 | echo "" |
107295 | echo "%files devel" | 106586 | echo "%files devel" |
@@ -107346,7 +106637,7 @@ index 8fac3fd..32ff38d 100644 | |||
107346 | unsigned int secindex_strings; | 106637 | unsigned int secindex_strings; |
107347 | 106638 | ||
107348 | diff --git a/security/Kconfig b/security/Kconfig | 106639 | diff --git a/security/Kconfig b/security/Kconfig |
107349 | index beb86b5..e66c504 100644 | 106640 | index beb86b5..addbccd 100644 |
107350 | --- a/security/Kconfig | 106641 | --- a/security/Kconfig |
107351 | +++ b/security/Kconfig | 106642 | +++ b/security/Kconfig |
107352 | @@ -4,6 +4,969 @@ | 106643 | @@ -4,6 +4,969 @@ |
@@ -107980,7 +107271,7 @@ index beb86b5..e66c504 100644 | |||
107980 | + | 107271 | + |
107981 | +config PAX_KERNEXEC_MODULE_TEXT | 107272 | +config PAX_KERNEXEC_MODULE_TEXT |
107982 | + int "Minimum amount of memory reserved for module code" | 107273 | + int "Minimum amount of memory reserved for module code" |
107983 | + default "4" if (!GRKERNSEC_CONFIG_AUTO || GRKERNSEC_CONFIG_SERVER) | 107274 | + default "8" if (!GRKERNSEC_CONFIG_AUTO || GRKERNSEC_CONFIG_SERVER) |
107984 | + default "12" if (GRKERNSEC_CONFIG_AUTO && GRKERNSEC_CONFIG_DESKTOP) | 107275 | + default "12" if (GRKERNSEC_CONFIG_AUTO && GRKERNSEC_CONFIG_DESKTOP) |
107985 | + depends on PAX_KERNEXEC && X86_32 | 107276 | + depends on PAX_KERNEXEC && X86_32 |
107986 | + help | 107277 | + help |
@@ -117468,10 +116759,10 @@ index 0000000..4378111 | |||
117468 | +} | 116759 | +} |
117469 | diff --git a/tools/gcc/size_overflow_plugin/size_overflow_hash.data b/tools/gcc/size_overflow_plugin/size_overflow_hash.data | 116760 | diff --git a/tools/gcc/size_overflow_plugin/size_overflow_hash.data b/tools/gcc/size_overflow_plugin/size_overflow_hash.data |
117470 | new file mode 100644 | 116761 | new file mode 100644 |
117471 | index 0000000..d14887a6 | 116762 | index 0000000..bbd5d8e |
117472 | --- /dev/null | 116763 | --- /dev/null |
117473 | +++ b/tools/gcc/size_overflow_plugin/size_overflow_hash.data | 116764 | +++ b/tools/gcc/size_overflow_plugin/size_overflow_hash.data |
117474 | @@ -0,0 +1,6033 @@ | 116765 | @@ -0,0 +1,6034 @@ |
117475 | +intel_fake_agp_alloc_by_type_1 intel_fake_agp_alloc_by_type 1 1 NULL | 116766 | +intel_fake_agp_alloc_by_type_1 intel_fake_agp_alloc_by_type 1 1 NULL |
117476 | +ocfs2_get_refcount_tree_3 ocfs2_get_refcount_tree 0 3 NULL | 116767 | +ocfs2_get_refcount_tree_3 ocfs2_get_refcount_tree 0 3 NULL |
117477 | +storvsc_connect_to_vsp_22 storvsc_connect_to_vsp 2 22 NULL | 116768 | +storvsc_connect_to_vsp_22 storvsc_connect_to_vsp 2 22 NULL |
@@ -119201,6 +118492,7 @@ index 0000000..d14887a6 | |||
119201 | +ieee80211_if_read_element_ttl_18869 ieee80211_if_read_element_ttl 3 18869 NULL | 118492 | +ieee80211_if_read_element_ttl_18869 ieee80211_if_read_element_ttl 3 18869 NULL |
119202 | +xlog_find_verify_log_record_18870 xlog_find_verify_log_record 2 18870 NULL | 118493 | +xlog_find_verify_log_record_18870 xlog_find_verify_log_record 2 18870 NULL |
119203 | +ceph_setxattr_18913 ceph_setxattr 4 18913 NULL | 118494 | +ceph_setxattr_18913 ceph_setxattr 4 18913 NULL |
118495 | +page_cache_tree_insert_18916 page_cache_tree_insert 0 18916 NULL | ||
119204 | +ieee80211_rx_mgmt_disassoc_18927 ieee80211_rx_mgmt_disassoc 3 18927 NULL | 118496 | +ieee80211_rx_mgmt_disassoc_18927 ieee80211_rx_mgmt_disassoc 3 18927 NULL |
119205 | +snapshot_write_next_18937 snapshot_write_next 0 18937 NULL | 118497 | +snapshot_write_next_18937 snapshot_write_next 0 18937 NULL |
119206 | +clean_journal_18955 clean_journal 0 18955 NULL | 118498 | +clean_journal_18955 clean_journal 0 18955 NULL |