aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2013-05-22 13:17:53 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2013-06-03 13:59:27 +0000
commitf29d6acbeed4be719f013fc9b0900f7c0c4388af (patch)
tree33cd1aeb7b762385eac03a0084fde96898a23840
parent473d40bbb88f98d74f074adb5a1a05e5c168aac2 (diff)
downloadalpine_aports-f29d6acbeed4be719f013fc9b0900f7c0c4388af.tar.bz2
alpine_aports-f29d6acbeed4be719f013fc9b0900f7c0c4388af.tar.xz
alpine_aports-f29d6acbeed4be719f013fc9b0900f7c0c4388af.zip
main/linux-grsec: upgprade to 3.9.3 and update flush arp cache patch
fixes #1926 (cherry picked from commit e5c176c6a337804bd6007231d967faf435ea5210)
-rw-r--r--main/linux-grsec/0004-arp-flush-arp-cache-on-device-change.patch29
-rw-r--r--main/linux-grsec/APKBUILD38
-rw-r--r--main/linux-grsec/grsecurity-2.9.1-3.9.3-201305201732.patch (renamed from main/linux-grsec/grsecurity-2.9.1-3.9.2-201305162327.patch)365
-rw-r--r--main/linux-grsec/kernelconfig.x866
-rw-r--r--main/linux-grsec/kernelconfig.x86_646
-rw-r--r--main/linux-grsec/v2-net-next-arp-flush-arp-cache-on-IFF_NOARP-change.patch89
6 files changed, 306 insertions, 227 deletions
diff --git a/main/linux-grsec/0004-arp-flush-arp-cache-on-device-change.patch b/main/linux-grsec/0004-arp-flush-arp-cache-on-device-change.patch
deleted file mode 100644
index 85161ea3a3..0000000000
--- a/main/linux-grsec/0004-arp-flush-arp-cache-on-device-change.patch
+++ /dev/null
@@ -1,29 +0,0 @@
1From 8a0e3ea4924059a7268446177d6869e3399adbb2 Mon Sep 17 00:00:00 2001
2From: Timo Teras <timo.teras@iki.fi>
3Date: Mon, 12 Apr 2010 13:46:45 +0000
4Subject: [PATCH 04/18] arp: flush arp cache on device change
5
6If IFF_NOARP is changed, we must flush the arp cache.
7
8Signed-off-by: Timo Teras <timo.teras@iki.fi>
9---
10 net/ipv4/arp.c | 3 +++
11 1 files changed, 3 insertions(+), 0 deletions(-)
12
13diff --git a/net/ipv4/arp.c b/net/ipv4/arp.c
14index 4e80f33..580bfc3 100644
15--- a/net/ipv4/arp.c
16+++ b/net/ipv4/arp.c
17@@ -1200,6 +1200,9 @@ static int arp_netdev_event(struct notifier_block *this, unsigned long event, vo
18 neigh_changeaddr(&arp_tbl, dev);
19 rt_cache_flush(dev_net(dev), 0);
20 break;
21+ case NETDEV_CHANGE:
22+ neigh_changeaddr(&arp_tbl, dev);
23+ break;
24 default:
25 break;
26 }
27--
281.7.0.2
29
diff --git a/main/linux-grsec/APKBUILD b/main/linux-grsec/APKBUILD
index 6eee77349b..dda2694820 100644
--- a/main/linux-grsec/APKBUILD
+++ b/main/linux-grsec/APKBUILD
@@ -2,12 +2,12 @@
2 2
3_flavor=grsec 3_flavor=grsec
4pkgname=linux-${_flavor} 4pkgname=linux-${_flavor}
5pkgver=3.9.2 5pkgver=3.9.3
6case $pkgver in 6case $pkgver in
7*.*.*) _kernver=${pkgver%.*};; 7*.*.*) _kernver=${pkgver%.*};;
8*.*) _kernver=${pkgver};; 8*.*) _kernver=${pkgver};;
9esac 9esac
10pkgrel=2 10pkgrel=0
11pkgdesc="Linux kernel with grsecurity" 11pkgdesc="Linux kernel with grsecurity"
12url=http://grsecurity.net 12url=http://grsecurity.net
13depends="mkinitfs linux-firmware" 13depends="mkinitfs linux-firmware"
@@ -17,9 +17,9 @@ _config=${config:-kernelconfig.${CARCH}}
17install= 17install=
18source="http://ftp.kernel.org/pub/linux/kernel/v3.x/linux-$_kernver.tar.xz 18source="http://ftp.kernel.org/pub/linux/kernel/v3.x/linux-$_kernver.tar.xz
19 http://ftp.kernel.org/pub/linux/kernel/v3.x/patch-$pkgver.xz 19 http://ftp.kernel.org/pub/linux/kernel/v3.x/patch-$pkgver.xz
20 grsecurity-2.9.1-3.9.2-201305162327.patch 20 grsecurity-2.9.1-3.9.3-201305201732.patch
21 21
22 0004-arp-flush-arp-cache-on-device-change.patch 22 v2-net-next-arp-flush-arp-cache-on-IFF_NOARP-change.patch
23 leds-leds-gpio-reserve-gpio-before-using-it.patch 23 leds-leds-gpio-reserve-gpio-before-using-it.patch
24 24
25 kernelconfig.x86 25 kernelconfig.x86
@@ -145,23 +145,23 @@ dev() {
145} 145}
146 146
147md5sums="4348c9b6b2eb3144d601e87c19d5d909 linux-3.9.tar.xz 147md5sums="4348c9b6b2eb3144d601e87c19d5d909 linux-3.9.tar.xz
148adeb2556568f79e827e7a0ce4c483605 patch-3.9.2.xz 14871b31e29e0cb437a27017c781293b6f4 patch-3.9.3.xz
149089d16b7c5306ed0d42e344ce1b59615 grsecurity-2.9.1-3.9.2-201305162327.patch 149e881cf0db639205660f237ceea58f708 grsecurity-2.9.1-3.9.3-201305201732.patch
150776adeeb5272093574f8836c5037dd7d 0004-arp-flush-arp-cache-on-device-change.patch 150699e92148cc9a55b6fc4d7d81e476717 v2-net-next-arp-flush-arp-cache-on-IFF_NOARP-change.patch
15183db7136608d8101ae130728539dc376 leds-leds-gpio-reserve-gpio-before-using-it.patch 15183db7136608d8101ae130728539dc376 leds-leds-gpio-reserve-gpio-before-using-it.patch
152ae4d8b3e917cdea5330ec52048080de3 kernelconfig.x86 152fd6fd35309c0e8c1f05cb725df958f22 kernelconfig.x86
153839de81fedd3a6294d42da70a3fb99e0 kernelconfig.x86_64" 153fd61ff58d25155997c0d6f73e7ca7a7d kernelconfig.x86_64"
154sha256sums="60bc3e64ee5dc778de2cd7cd7640abf518a4c9d4f31b8ed624e16fad53f54541 linux-3.9.tar.xz 154sha256sums="60bc3e64ee5dc778de2cd7cd7640abf518a4c9d4f31b8ed624e16fad53f54541 linux-3.9.tar.xz
155069126b2b70acbc27fada2bf67235238fd90ff103267b1bb392244a301321996 patch-3.9.2.xz 155248ab5f9a42b72e5c3d961520a5fff609a625bbf570ad45d7ae97009525b94d7 patch-3.9.3.xz
1563de1633f26c46a4c93af8497d889a5acc37db54adaa4f3677cb5c5c027787254 grsecurity-2.9.1-3.9.2-201305162327.patch 156c1b4310085ff07200131dc841a0a22f84a7f166c3b25464e27dd2694584bc72c grsecurity-2.9.1-3.9.3-201305201732.patch
157e2d2d1503f53572c6a2e21da729a13a430dd01f510405ffb3a33b29208860bde 0004-arp-flush-arp-cache-on-device-change.patch 1578e2f41605937eecd47cefe62daefd372dbf1e63cf956ab3ced3213ac2b508ee3 v2-net-next-arp-flush-arp-cache-on-IFF_NOARP-change.patch
15813676bc5610a8d03e788ac76734babd1338b023bb39559452ee54652b046e6f4 leds-leds-gpio-reserve-gpio-before-using-it.patch 15813676bc5610a8d03e788ac76734babd1338b023bb39559452ee54652b046e6f4 leds-leds-gpio-reserve-gpio-before-using-it.patch
159513a5f387e7453169a7f41c1ba42da3229e47edd58b5ac18da31f04905c5c0bf kernelconfig.x86 159b44c6671b344ddae1da94e6c051a0e708af8609c1f2ff40d962301ed5023c83a kernelconfig.x86
160e842cf49decc9a8f5c0f2e4b431382f521fe41db22f2c2e6a1c077b2b158b3ab kernelconfig.x86_64" 1607a6700a6db89f8c2c7f8cce7d77f4ddb3fcad889d72c709c2833af795ef1bc79 kernelconfig.x86_64"
161sha512sums="77fa521f42380409f8ab400c26f7b00e225cb075ef40834bb263325cfdcc3e65aef8511ec2fc2b50bbf4f50e226fb5ab07d7a479aaf09162adbbf318325d0790 linux-3.9.tar.xz 161sha512sums="77fa521f42380409f8ab400c26f7b00e225cb075ef40834bb263325cfdcc3e65aef8511ec2fc2b50bbf4f50e226fb5ab07d7a479aaf09162adbbf318325d0790 linux-3.9.tar.xz
162439e32edab86f8b1bd49bc4c9325e11520d78b8182ae88aebf46a4be319c4633d6d896e2ecd3fe0363d9247f5af88a989aafca9103b8e1544262bd191440dae9 patch-3.9.2.xz 162ae2bca3f0d274281d7ae88bb835d129a036350dfd3e9e941d7a0175194b2cbccffb5f8b5a20e5a7498cb5a097c6376d8cb1032ea048051b08ec0dd05309c09eb patch-3.9.3.xz
163652847ba23a7761d6fe90a04deb68f28cdde65d71bd9a53355075ba8410279250d36169359fa759208fcf45b5bfc1cc9505f072e93dd47eae5c464652760aa97 grsecurity-2.9.1-3.9.2-201305162327.patch 163d6aa751d1fac8c4d758f9479bc6b08f70d8725c6c74b63446def044f42260a8beb1f540ae4473ec57f42538513d3ccb42de41c8cc721b9b85d8cfbaef7ab85d5 grsecurity-2.9.1-3.9.3-201305201732.patch
164b6fdf376009f0f0f3fa194cb11be97343e4d394cf5d3547de6cfca8ad619c5bd3f60719331fd8cfadc47f09d22be8376ba5f871b46b24887ea73fe47e233a54e 0004-arp-flush-arp-cache-on-device-change.patch 164772c847cd74b12ed22266042c0902d8a3cf09c897b6e1c01148dfcd2f01aed331f292e82c34bb718090dc0898e1ef364196272bff885a32378f7fbc8bfc06a9b v2-net-next-arp-flush-arp-cache-on-IFF_NOARP-change.patch
16510d2cf4fb308d1bc8cb5b9df3f9a6d7b9cef453244673bcbe66bd9b64af410a498e203d4dfa51f53461362ad981736eadc46537616b2c0514f57f4d8864c830d leds-leds-gpio-reserve-gpio-before-using-it.patch 16510d2cf4fb308d1bc8cb5b9df3f9a6d7b9cef453244673bcbe66bd9b64af410a498e203d4dfa51f53461362ad981736eadc46537616b2c0514f57f4d8864c830d leds-leds-gpio-reserve-gpio-before-using-it.patch
16657dc79b8b08a81993e1050197886c7f91a609843ed2f919eabd6769860fb1383e87a433def8f6b544a8c6382180822b863869ef76183c4d9df421465fe13c220 kernelconfig.x86 1662516c47145f53cfa5624a9a8839b3590fd16a980aa4c8c48af4db025960d33abe855a5c698ee701a0d3704a96a9a3f93cd6c3cc8c9b8fdf73f230c15ad2f7611 kernelconfig.x86
1670ce361b417821fc3795c4d8e4b3a8eeecbdc7df66261f744c55d288186f9a7d2a367f80bac2ff29c0d5c54f133cbbd74f3ec5e0147b0e7c04462627724dd3572 kernelconfig.x86_64" 1670a3739e5e1fe29fcce8c686d8ac223316467a2efaaa18cb3d1abf6c7a66dc86be12c26755dff1aef6d0f5a028ce4f6dfc5664ab42b484046949f401f3b9198f9 kernelconfig.x86_64"
diff --git a/main/linux-grsec/grsecurity-2.9.1-3.9.2-201305162327.patch b/main/linux-grsec/grsecurity-2.9.1-3.9.3-201305201732.patch
index 588c5edc1b..b6dd68f753 100644
--- a/main/linux-grsec/grsecurity-2.9.1-3.9.2-201305162327.patch
+++ b/main/linux-grsec/grsecurity-2.9.1-3.9.3-201305201732.patch
@@ -259,7 +259,7 @@ index 8ccbf27..afffeb4 100644
259 259
260 pcd. [PARIDE] 260 pcd. [PARIDE]
261diff --git a/Makefile b/Makefile 261diff --git a/Makefile b/Makefile
262index 3e71511..8ff502e 100644 262index 01003d4..da43c4a 100644
263--- a/Makefile 263--- a/Makefile
264+++ b/Makefile 264+++ b/Makefile
265@@ -241,8 +241,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ 265@@ -241,8 +241,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
@@ -1509,7 +1509,7 @@ index 6dcc164..b14d917 100644
1509 /* 1509 /*
1510 * Fold a partial checksum without adding pseudo headers 1510 * Fold a partial checksum without adding pseudo headers
1511diff --git a/arch/arm/include/asm/cmpxchg.h b/arch/arm/include/asm/cmpxchg.h 1511diff --git a/arch/arm/include/asm/cmpxchg.h b/arch/arm/include/asm/cmpxchg.h
1512index 7eb18c1..e38b6d2 100644 1512index 4f009c1..466c59b 100644
1513--- a/arch/arm/include/asm/cmpxchg.h 1513--- a/arch/arm/include/asm/cmpxchg.h
1514+++ b/arch/arm/include/asm/cmpxchg.h 1514+++ b/arch/arm/include/asm/cmpxchg.h
1515@@ -102,6 +102,8 @@ static inline unsigned long __xchg(unsigned long x, volatile void *ptr, int size 1515@@ -102,6 +102,8 @@ static inline unsigned long __xchg(unsigned long x, volatile void *ptr, int size
@@ -10240,10 +10240,10 @@ index ad8f795..2c7eec6 100644
10240 /* 10240 /*
10241 * Memory returned by kmalloc() may be used for DMA, so we must make 10241 * Memory returned by kmalloc() may be used for DMA, so we must make
10242diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig 10242diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
10243index 15b5cef..173babc 100644 10243index 6ef2a37..74ad6ad 100644
10244--- a/arch/x86/Kconfig 10244--- a/arch/x86/Kconfig
10245+++ b/arch/x86/Kconfig 10245+++ b/arch/x86/Kconfig
10246@@ -244,7 +244,7 @@ config X86_HT 10246@@ -243,7 +243,7 @@ config X86_HT
10247 10247
10248 config X86_32_LAZY_GS 10248 config X86_32_LAZY_GS
10249 def_bool y 10249 def_bool y
@@ -10252,7 +10252,7 @@ index 15b5cef..173babc 100644
10252 10252
10253 config ARCH_HWEIGHT_CFLAGS 10253 config ARCH_HWEIGHT_CFLAGS
10254 string 10254 string
10255@@ -1077,6 +1077,7 @@ config MICROCODE_EARLY 10255@@ -1076,6 +1076,7 @@ config MICROCODE_EARLY
10256 10256
10257 config X86_MSR 10257 config X86_MSR
10258 tristate "/dev/cpu/*/msr - Model-specific register support" 10258 tristate "/dev/cpu/*/msr - Model-specific register support"
@@ -10260,7 +10260,7 @@ index 15b5cef..173babc 100644
10260 ---help--- 10260 ---help---
10261 This device gives privileged processes access to the x86 10261 This device gives privileged processes access to the x86
10262 Model-Specific Registers (MSRs). It is a character device with 10262 Model-Specific Registers (MSRs). It is a character device with
10263@@ -1100,7 +1101,7 @@ choice 10263@@ -1099,7 +1100,7 @@ choice
10264 10264
10265 config NOHIGHMEM 10265 config NOHIGHMEM
10266 bool "off" 10266 bool "off"
@@ -10269,7 +10269,7 @@ index 15b5cef..173babc 100644
10269 ---help--- 10269 ---help---
10270 Linux can use up to 64 Gigabytes of physical memory on x86 systems. 10270 Linux can use up to 64 Gigabytes of physical memory on x86 systems.
10271 However, the address space of 32-bit x86 processors is only 4 10271 However, the address space of 32-bit x86 processors is only 4
10272@@ -1137,7 +1138,7 @@ config NOHIGHMEM 10272@@ -1136,7 +1137,7 @@ config NOHIGHMEM
10273 10273
10274 config HIGHMEM4G 10274 config HIGHMEM4G
10275 bool "4GB" 10275 bool "4GB"
@@ -10278,7 +10278,7 @@ index 15b5cef..173babc 100644
10278 ---help--- 10278 ---help---
10279 Select this if you have a 32-bit processor and between 1 and 4 10279 Select this if you have a 32-bit processor and between 1 and 4
10280 gigabytes of physical RAM. 10280 gigabytes of physical RAM.
10281@@ -1190,7 +1191,7 @@ config PAGE_OFFSET 10281@@ -1189,7 +1190,7 @@ config PAGE_OFFSET
10282 hex 10282 hex
10283 default 0xB0000000 if VMSPLIT_3G_OPT 10283 default 0xB0000000 if VMSPLIT_3G_OPT
10284 default 0x80000000 if VMSPLIT_2G 10284 default 0x80000000 if VMSPLIT_2G
@@ -10287,7 +10287,7 @@ index 15b5cef..173babc 100644
10287 default 0x40000000 if VMSPLIT_1G 10287 default 0x40000000 if VMSPLIT_1G
10288 default 0xC0000000 10288 default 0xC0000000
10289 depends on X86_32 10289 depends on X86_32
10290@@ -1588,6 +1589,7 @@ config SECCOMP 10290@@ -1587,6 +1588,7 @@ config SECCOMP
10291 10291
10292 config CC_STACKPROTECTOR 10292 config CC_STACKPROTECTOR
10293 bool "Enable -fstack-protector buffer overflow detection" 10293 bool "Enable -fstack-protector buffer overflow detection"
@@ -10295,7 +10295,7 @@ index 15b5cef..173babc 100644
10295 ---help--- 10295 ---help---
10296 This option turns on the -fstack-protector GCC feature. This 10296 This option turns on the -fstack-protector GCC feature. This
10297 feature puts, at the beginning of functions, a canary value on 10297 feature puts, at the beginning of functions, a canary value on
10298@@ -1707,6 +1709,8 @@ config X86_NEED_RELOCS 10298@@ -1706,6 +1708,8 @@ config X86_NEED_RELOCS
10299 config PHYSICAL_ALIGN 10299 config PHYSICAL_ALIGN
10300 hex "Alignment value to which kernel should be aligned" if X86_32 10300 hex "Alignment value to which kernel should be aligned" if X86_32
10301 default "0x1000000" 10301 default "0x1000000"
@@ -10304,7 +10304,7 @@ index 15b5cef..173babc 100644
10304 range 0x2000 0x1000000 10304 range 0x2000 0x1000000
10305 ---help--- 10305 ---help---
10306 This value puts the alignment restrictions on physical address 10306 This value puts the alignment restrictions on physical address
10307@@ -1782,9 +1786,10 @@ config DEBUG_HOTPLUG_CPU0 10307@@ -1781,9 +1785,10 @@ config DEBUG_HOTPLUG_CPU0
10308 If unsure, say N. 10308 If unsure, say N.
10309 10309
10310 config COMPAT_VDSO 10310 config COMPAT_VDSO
@@ -14302,7 +14302,7 @@ index 4cc9f2b..5fd9226 100644
14302 14302
14303 /* 14303 /*
14304diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h 14304diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h
14305index 1e67223..9183226 100644 14305index 1e67223..dd6e7ea 100644
14306--- a/arch/x86/include/asm/pgtable.h 14306--- a/arch/x86/include/asm/pgtable.h
14307+++ b/arch/x86/include/asm/pgtable.h 14307+++ b/arch/x86/include/asm/pgtable.h
14308@@ -44,6 +44,7 @@ extern struct mm_struct *pgd_page_get_mm(struct page *page); 14308@@ -44,6 +44,7 @@ extern struct mm_struct *pgd_page_get_mm(struct page *page);
@@ -14365,7 +14365,19 @@ index 1e67223..9183226 100644
14365 static inline int pte_dirty(pte_t pte) 14365 static inline int pte_dirty(pte_t pte)
14366 { 14366 {
14367 return pte_flags(pte) & _PAGE_DIRTY; 14367 return pte_flags(pte) & _PAGE_DIRTY;
14368@@ -200,9 +240,29 @@ static inline pte_t pte_wrprotect(pte_t pte) 14368@@ -147,6 +187,11 @@ static inline unsigned long pud_pfn(pud_t pud)
14369 return (pud_val(pud) & PTE_PFN_MASK) >> PAGE_SHIFT;
14370 }
14371
14372+static inline unsigned long pgd_pfn(pgd_t pgd)
14373+{
14374+ return (pgd_val(pgd) & PTE_PFN_MASK) >> PAGE_SHIFT;
14375+}
14376+
14377 #define pte_page(pte) pfn_to_page(pte_pfn(pte))
14378
14379 static inline int pmd_large(pmd_t pte)
14380@@ -200,9 +245,29 @@ static inline pte_t pte_wrprotect(pte_t pte)
14369 return pte_clear_flags(pte, _PAGE_RW); 14381 return pte_clear_flags(pte, _PAGE_RW);
14370 } 14382 }
14371 14383
@@ -14396,7 +14408,7 @@ index 1e67223..9183226 100644
14396 } 14408 }
14397 14409
14398 static inline pte_t pte_mkdirty(pte_t pte) 14410 static inline pte_t pte_mkdirty(pte_t pte)
14399@@ -394,6 +454,15 @@ pte_t *populate_extra_pte(unsigned long vaddr); 14411@@ -394,6 +459,15 @@ pte_t *populate_extra_pte(unsigned long vaddr);
14400 #endif 14412 #endif
14401 14413
14402 #ifndef __ASSEMBLY__ 14414 #ifndef __ASSEMBLY__
@@ -14412,7 +14424,25 @@ index 1e67223..9183226 100644
14412 #include <linux/mm_types.h> 14424 #include <linux/mm_types.h>
14413 #include <linux/log2.h> 14425 #include <linux/log2.h>
14414 14426
14415@@ -584,7 +653,7 @@ static inline pud_t *pud_offset(pgd_t *pgd, unsigned long address) 14427@@ -529,7 +603,7 @@ static inline unsigned long pud_page_vaddr(pud_t pud)
14428 * Currently stuck as a macro due to indirect forward reference to
14429 * linux/mmzone.h's __section_mem_map_addr() definition:
14430 */
14431-#define pud_page(pud) pfn_to_page(pud_val(pud) >> PAGE_SHIFT)
14432+#define pud_page(pud) pfn_to_page((pud_val(pud) & PTE_PFN_MASK) >> PAGE_SHIFT)
14433
14434 /* Find an entry in the second-level page table.. */
14435 static inline pmd_t *pmd_offset(pud_t *pud, unsigned long address)
14436@@ -569,7 +643,7 @@ static inline unsigned long pgd_page_vaddr(pgd_t pgd)
14437 * Currently stuck as a macro due to indirect forward reference to
14438 * linux/mmzone.h's __section_mem_map_addr() definition:
14439 */
14440-#define pgd_page(pgd) pfn_to_page(pgd_val(pgd) >> PAGE_SHIFT)
14441+#define pgd_page(pgd) pfn_to_page((pgd_val(pgd) & PTE_PFN_MASK) >> PAGE_SHIFT)
14442
14443 /* to find an entry in a page-table-directory. */
14444 static inline unsigned long pud_index(unsigned long address)
14445@@ -584,7 +658,7 @@ static inline pud_t *pud_offset(pgd_t *pgd, unsigned long address)
14416 14446
14417 static inline int pgd_bad(pgd_t pgd) 14447 static inline int pgd_bad(pgd_t pgd)
14418 { 14448 {
@@ -14421,7 +14451,7 @@ index 1e67223..9183226 100644
14421 } 14451 }
14422 14452
14423 static inline int pgd_none(pgd_t pgd) 14453 static inline int pgd_none(pgd_t pgd)
14424@@ -607,7 +676,12 @@ static inline int pgd_none(pgd_t pgd) 14454@@ -607,7 +681,12 @@ static inline int pgd_none(pgd_t pgd)
14425 * pgd_offset() returns a (pgd_t *) 14455 * pgd_offset() returns a (pgd_t *)
14426 * pgd_index() is used get the offset into the pgd page's array of pgd_t's; 14456 * pgd_index() is used get the offset into the pgd page's array of pgd_t's;
14427 */ 14457 */
@@ -14435,7 +14465,7 @@ index 1e67223..9183226 100644
14435 /* 14465 /*
14436 * a shortcut which implies the use of the kernel's pgd, instead 14466 * a shortcut which implies the use of the kernel's pgd, instead
14437 * of a process's 14467 * of a process's
14438@@ -618,6 +692,22 @@ static inline int pgd_none(pgd_t pgd) 14468@@ -618,6 +697,22 @@ static inline int pgd_none(pgd_t pgd)
14439 #define KERNEL_PGD_BOUNDARY pgd_index(PAGE_OFFSET) 14469 #define KERNEL_PGD_BOUNDARY pgd_index(PAGE_OFFSET)
14440 #define KERNEL_PGD_PTRS (PTRS_PER_PGD - KERNEL_PGD_BOUNDARY) 14470 #define KERNEL_PGD_PTRS (PTRS_PER_PGD - KERNEL_PGD_BOUNDARY)
14441 14471
@@ -14458,7 +14488,7 @@ index 1e67223..9183226 100644
14458 #ifndef __ASSEMBLY__ 14488 #ifndef __ASSEMBLY__
14459 14489
14460 extern int direct_gbpages; 14490 extern int direct_gbpages;
14461@@ -784,11 +874,24 @@ static inline void pmdp_set_wrprotect(struct mm_struct *mm, 14491@@ -784,11 +879,24 @@ static inline void pmdp_set_wrprotect(struct mm_struct *mm,
14462 * dst and src can be on the same page, but the range must not overlap, 14492 * dst and src can be on the same page, but the range must not overlap,
14463 * and must not cross a page boundary. 14493 * and must not cross a page boundary.
14464 */ 14494 */
@@ -23896,10 +23926,10 @@ index a20ecb5..d0e2194 100644
23896 23926
23897 out: 23927 out:
23898diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c 23928diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
23899index a9c9d3e..9fe214f 100644 23929index 59622c9..f338414 100644
23900--- a/arch/x86/kvm/emulate.c 23930--- a/arch/x86/kvm/emulate.c
23901+++ b/arch/x86/kvm/emulate.c 23931+++ b/arch/x86/kvm/emulate.c
23902@@ -326,6 +326,7 @@ static void invalidate_registers(struct x86_emulate_ctxt *ctxt) 23932@@ -328,6 +328,7 @@ static void invalidate_registers(struct x86_emulate_ctxt *ctxt)
23903 23933
23904 #define ____emulate_2op(ctxt, _op, _x, _y, _suffix, _dsttype) \ 23934 #define ____emulate_2op(ctxt, _op, _x, _y, _suffix, _dsttype) \
23905 do { \ 23935 do { \
@@ -23907,7 +23937,7 @@ index a9c9d3e..9fe214f 100644
23907 __asm__ __volatile__ ( \ 23937 __asm__ __volatile__ ( \
23908 _PRE_EFLAGS("0", "4", "2") \ 23938 _PRE_EFLAGS("0", "4", "2") \
23909 _op _suffix " %"_x"3,%1; " \ 23939 _op _suffix " %"_x"3,%1; " \
23910@@ -340,8 +341,6 @@ static void invalidate_registers(struct x86_emulate_ctxt *ctxt) 23940@@ -342,8 +343,6 @@ static void invalidate_registers(struct x86_emulate_ctxt *ctxt)
23911 /* Raw emulation: instruction has two explicit operands. */ 23941 /* Raw emulation: instruction has two explicit operands. */
23912 #define __emulate_2op_nobyte(ctxt,_op,_wx,_wy,_lx,_ly,_qx,_qy) \ 23942 #define __emulate_2op_nobyte(ctxt,_op,_wx,_wy,_lx,_ly,_qx,_qy) \
23913 do { \ 23943 do { \
@@ -23916,7 +23946,7 @@ index a9c9d3e..9fe214f 100644
23916 switch ((ctxt)->dst.bytes) { \ 23946 switch ((ctxt)->dst.bytes) { \
23917 case 2: \ 23947 case 2: \
23918 ____emulate_2op(ctxt,_op,_wx,_wy,"w",u16); \ 23948 ____emulate_2op(ctxt,_op,_wx,_wy,"w",u16); \
23919@@ -357,7 +356,6 @@ static void invalidate_registers(struct x86_emulate_ctxt *ctxt) 23949@@ -359,7 +358,6 @@ static void invalidate_registers(struct x86_emulate_ctxt *ctxt)
23920 23950
23921 #define __emulate_2op(ctxt,_op,_bx,_by,_wx,_wy,_lx,_ly,_qx,_qy) \ 23951 #define __emulate_2op(ctxt,_op,_bx,_by,_wx,_wy,_lx,_ly,_qx,_qy) \
23922 do { \ 23952 do { \
@@ -23978,7 +24008,7 @@ index e1b1ce2..f7b4b43 100644
23978 24008
23979 local_irq_disable(); 24009 local_irq_disable();
23980diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c 24010diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
23981index 6667042..b47ece4 100644 24011index 0af1807..06912bb 100644
23982--- a/arch/x86/kvm/vmx.c 24012--- a/arch/x86/kvm/vmx.c
23983+++ b/arch/x86/kvm/vmx.c 24013+++ b/arch/x86/kvm/vmx.c
23984@@ -1184,12 +1184,12 @@ static void vmcs_write64(unsigned long field, u64 value) 24014@@ -1184,12 +1184,12 @@ static void vmcs_write64(unsigned long field, u64 value)
@@ -24068,7 +24098,7 @@ index 6667042..b47ece4 100644
24068 24098
24069 rdmsr(MSR_IA32_SYSENTER_CS, low32, high32); 24099 rdmsr(MSR_IA32_SYSENTER_CS, low32, high32);
24070 vmcs_write32(HOST_IA32_SYSENTER_CS, low32); 24100 vmcs_write32(HOST_IA32_SYSENTER_CS, low32);
24071@@ -6574,6 +6590,12 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu) 24101@@ -6580,6 +6596,12 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
24072 "jmp 2f \n\t" 24102 "jmp 2f \n\t"
24073 "1: " __ex(ASM_VMX_VMRESUME) "\n\t" 24103 "1: " __ex(ASM_VMX_VMRESUME) "\n\t"
24074 "2: " 24104 "2: "
@@ -24081,7 +24111,7 @@ index 6667042..b47ece4 100644
24081 /* Save guest registers, load host registers, keep flags */ 24111 /* Save guest registers, load host registers, keep flags */
24082 "mov %0, %c[wordsize](%%" _ASM_SP ") \n\t" 24112 "mov %0, %c[wordsize](%%" _ASM_SP ") \n\t"
24083 "pop %0 \n\t" 24113 "pop %0 \n\t"
24084@@ -6626,6 +6648,11 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu) 24114@@ -6632,6 +6654,11 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
24085 #endif 24115 #endif
24086 [cr2]"i"(offsetof(struct vcpu_vmx, vcpu.arch.cr2)), 24116 [cr2]"i"(offsetof(struct vcpu_vmx, vcpu.arch.cr2)),
24087 [wordsize]"i"(sizeof(ulong)) 24117 [wordsize]"i"(sizeof(ulong))
@@ -24093,7 +24123,7 @@ index 6667042..b47ece4 100644
24093 : "cc", "memory" 24123 : "cc", "memory"
24094 #ifdef CONFIG_X86_64 24124 #ifdef CONFIG_X86_64
24095 , "rax", "rbx", "rdi", "rsi" 24125 , "rax", "rbx", "rdi", "rsi"
24096@@ -6639,7 +6666,7 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu) 24126@@ -6645,7 +6672,7 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
24097 if (debugctlmsr) 24127 if (debugctlmsr)
24098 update_debugctlmsr(debugctlmsr); 24128 update_debugctlmsr(debugctlmsr);
24099 24129
@@ -24102,7 +24132,7 @@ index 6667042..b47ece4 100644
24102 /* 24132 /*
24103 * The sysexit path does not restore ds/es, so we must set them to 24133 * The sysexit path does not restore ds/es, so we must set them to
24104 * a reasonable value ourselves. 24134 * a reasonable value ourselves.
24105@@ -6648,8 +6675,18 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu) 24135@@ -6654,8 +6681,18 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
24106 * may be executed in interrupt context, which saves and restore segments 24136 * may be executed in interrupt context, which saves and restore segments
24107 * around it, nullifying its effect. 24137 * around it, nullifying its effect.
24108 */ 24138 */
@@ -31103,7 +31133,7 @@ index 431e875..cbb23f3 100644
31103-} 31133-}
31104-__setup("vdso=", vdso_setup); 31134-__setup("vdso=", vdso_setup);
31105diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c 31135diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
31106index 2363127..ec09d96 100644 31136index cf95e19..17e9f50 100644
31107--- a/arch/x86/xen/enlighten.c 31137--- a/arch/x86/xen/enlighten.c
31108+++ b/arch/x86/xen/enlighten.c 31138+++ b/arch/x86/xen/enlighten.c
31109@@ -100,8 +100,6 @@ EXPORT_SYMBOL_GPL(xen_start_info); 31139@@ -100,8 +100,6 @@ EXPORT_SYMBOL_GPL(xen_start_info);
@@ -31115,7 +31145,7 @@ index 2363127..ec09d96 100644
31115 RESERVE_BRK(shared_info_page_brk, PAGE_SIZE); 31145 RESERVE_BRK(shared_info_page_brk, PAGE_SIZE);
31116 __read_mostly int xen_have_vector_callback; 31146 __read_mostly int xen_have_vector_callback;
31117 EXPORT_SYMBOL_GPL(xen_have_vector_callback); 31147 EXPORT_SYMBOL_GPL(xen_have_vector_callback);
31118@@ -496,8 +494,7 @@ static void xen_load_gdt(const struct desc_ptr *dtr) 31148@@ -511,8 +509,7 @@ static void xen_load_gdt(const struct desc_ptr *dtr)
31119 { 31149 {
31120 unsigned long va = dtr->address; 31150 unsigned long va = dtr->address;
31121 unsigned int size = dtr->size + 1; 31151 unsigned int size = dtr->size + 1;
@@ -31125,7 +31155,7 @@ index 2363127..ec09d96 100644
31125 int f; 31155 int f;
31126 31156
31127 /* 31157 /*
31128@@ -545,8 +542,7 @@ static void __init xen_load_gdt_boot(const struct desc_ptr *dtr) 31158@@ -560,8 +557,7 @@ static void __init xen_load_gdt_boot(const struct desc_ptr *dtr)
31129 { 31159 {
31130 unsigned long va = dtr->address; 31160 unsigned long va = dtr->address;
31131 unsigned int size = dtr->size + 1; 31161 unsigned int size = dtr->size + 1;
@@ -31135,7 +31165,7 @@ index 2363127..ec09d96 100644
31135 int f; 31165 int f;
31136 31166
31137 /* 31167 /*
31138@@ -554,7 +550,7 @@ static void __init xen_load_gdt_boot(const struct desc_ptr *dtr) 31168@@ -569,7 +565,7 @@ static void __init xen_load_gdt_boot(const struct desc_ptr *dtr)
31139 * 8-byte entries, or 16 4k pages.. 31169 * 8-byte entries, or 16 4k pages..
31140 */ 31170 */
31141 31171
@@ -31144,7 +31174,7 @@ index 2363127..ec09d96 100644
31144 BUG_ON(va & ~PAGE_MASK); 31174 BUG_ON(va & ~PAGE_MASK);
31145 31175
31146 for (f = 0; va < dtr->address + size; va += PAGE_SIZE, f++) { 31176 for (f = 0; va < dtr->address + size; va += PAGE_SIZE, f++) {
31147@@ -939,7 +935,7 @@ static u32 xen_safe_apic_wait_icr_idle(void) 31177@@ -954,7 +950,7 @@ static u32 xen_safe_apic_wait_icr_idle(void)
31148 return 0; 31178 return 0;
31149 } 31179 }
31150 31180
@@ -31153,7 +31183,7 @@ index 2363127..ec09d96 100644
31153 { 31183 {
31154 apic->read = xen_apic_read; 31184 apic->read = xen_apic_read;
31155 apic->write = xen_apic_write; 31185 apic->write = xen_apic_write;
31156@@ -1245,30 +1241,30 @@ static const struct pv_apic_ops xen_apic_ops __initconst = { 31186@@ -1260,30 +1256,30 @@ static const struct pv_apic_ops xen_apic_ops __initconst = {
31157 #endif 31187 #endif
31158 }; 31188 };
31159 31189
@@ -31191,7 +31221,7 @@ index 2363127..ec09d96 100644
31191 { 31221 {
31192 if (pm_power_off) 31222 if (pm_power_off)
31193 pm_power_off(); 31223 pm_power_off();
31194@@ -1370,7 +1366,17 @@ asmlinkage void __init xen_start_kernel(void) 31224@@ -1385,7 +1381,17 @@ asmlinkage void __init xen_start_kernel(void)
31195 __userpte_alloc_gfp &= ~__GFP_HIGHMEM; 31225 __userpte_alloc_gfp &= ~__GFP_HIGHMEM;
31196 31226
31197 /* Work out if we support NX */ 31227 /* Work out if we support NX */
@@ -31210,7 +31240,7 @@ index 2363127..ec09d96 100644
31210 31240
31211 xen_setup_features(); 31241 xen_setup_features();
31212 31242
31213@@ -1401,13 +1407,6 @@ asmlinkage void __init xen_start_kernel(void) 31243@@ -1416,13 +1422,6 @@ asmlinkage void __init xen_start_kernel(void)
31214 31244
31215 machine_ops = xen_machine_ops; 31245 machine_ops = xen_machine_ops;
31216 31246
@@ -31224,7 +31254,7 @@ index 2363127..ec09d96 100644
31224 xen_smp_init(); 31254 xen_smp_init();
31225 31255
31226 #ifdef CONFIG_ACPI_NUMA 31256 #ifdef CONFIG_ACPI_NUMA
31227@@ -1601,7 +1600,7 @@ static int __cpuinit xen_hvm_cpu_notify(struct notifier_block *self, 31257@@ -1616,7 +1615,7 @@ static int __cpuinit xen_hvm_cpu_notify(struct notifier_block *self,
31228 return NOTIFY_OK; 31258 return NOTIFY_OK;
31229 } 31259 }
31230 31260
@@ -33319,7 +33349,7 @@ index 6b51afa..17e1191 100644
33319 set_fs(KERNEL_DS); 33349 set_fs(KERNEL_DS);
33320 if (level == SOL_SOCKET) 33350 if (level == SOL_SOCKET)
33321diff --git a/drivers/block/drbd/drbd_main.c b/drivers/block/drbd/drbd_main.c 33351diff --git a/drivers/block/drbd/drbd_main.c b/drivers/block/drbd/drbd_main.c
33322index e98da67..1181716b 100644 33352index 54d03d4..332f311 100644
33323--- a/drivers/block/drbd/drbd_main.c 33353--- a/drivers/block/drbd/drbd_main.c
33324+++ b/drivers/block/drbd/drbd_main.c 33354+++ b/drivers/block/drbd/drbd_main.c
33325@@ -1317,7 +1317,7 @@ static int _drbd_send_ack(struct drbd_conf *mdev, enum drbd_packet cmd, 33355@@ -1317,7 +1317,7 @@ static int _drbd_send_ack(struct drbd_conf *mdev, enum drbd_packet cmd,
@@ -33352,7 +33382,7 @@ index e98da67..1181716b 100644
33352 33382
33353 idr_destroy(&tconn->volumes); 33383 idr_destroy(&tconn->volumes);
33354diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c 33384diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c
33355index a9eccfc..f5efe87 100644 33385index 2f5fffd..b22a1ae 100644
33356--- a/drivers/block/drbd/drbd_receiver.c 33386--- a/drivers/block/drbd/drbd_receiver.c
33357+++ b/drivers/block/drbd/drbd_receiver.c 33387+++ b/drivers/block/drbd/drbd_receiver.c
33358@@ -833,7 +833,7 @@ int drbd_connected(struct drbd_conf *mdev) 33388@@ -833,7 +833,7 @@ int drbd_connected(struct drbd_conf *mdev)
@@ -33423,7 +33453,7 @@ index a9eccfc..f5efe87 100644
33423 atomic_inc(&peer_req->epoch->active); 33453 atomic_inc(&peer_req->epoch->active);
33424 spin_unlock(&tconn->epoch_lock); 33454 spin_unlock(&tconn->epoch_lock);
33425 33455
33426@@ -4346,7 +4346,7 @@ struct data_cmd { 33456@@ -4345,7 +4345,7 @@ struct data_cmd {
33427 int expect_payload; 33457 int expect_payload;
33428 size_t pkt_size; 33458 size_t pkt_size;
33429 int (*fn)(struct drbd_tconn *, struct packet_info *); 33459 int (*fn)(struct drbd_tconn *, struct packet_info *);
@@ -33432,7 +33462,7 @@ index a9eccfc..f5efe87 100644
33432 33462
33433 static struct data_cmd drbd_cmd_handler[] = { 33463 static struct data_cmd drbd_cmd_handler[] = {
33434 [P_DATA] = { 1, sizeof(struct p_data), receive_Data }, 33464 [P_DATA] = { 1, sizeof(struct p_data), receive_Data },
33435@@ -4466,7 +4466,7 @@ static void conn_disconnect(struct drbd_tconn *tconn) 33465@@ -4465,7 +4465,7 @@ static void conn_disconnect(struct drbd_tconn *tconn)
33436 if (!list_empty(&tconn->current_epoch->list)) 33466 if (!list_empty(&tconn->current_epoch->list))
33437 conn_err(tconn, "ASSERTION FAILED: tconn->current_epoch->list not empty\n"); 33467 conn_err(tconn, "ASSERTION FAILED: tconn->current_epoch->list not empty\n");
33438 /* ok, no more ee's on the fly, it is safe to reset the epoch_size */ 33468 /* ok, no more ee's on the fly, it is safe to reset the epoch_size */
@@ -33441,7 +33471,7 @@ index a9eccfc..f5efe87 100644
33441 tconn->send.seen_any_write_yet = false; 33471 tconn->send.seen_any_write_yet = false;
33442 33472
33443 conn_info(tconn, "Connection closed\n"); 33473 conn_info(tconn, "Connection closed\n");
33444@@ -5222,7 +5222,7 @@ static int tconn_finish_peer_reqs(struct drbd_tconn *tconn) 33474@@ -5221,7 +5221,7 @@ static int tconn_finish_peer_reqs(struct drbd_tconn *tconn)
33445 struct asender_cmd { 33475 struct asender_cmd {
33446 size_t pkt_size; 33476 size_t pkt_size;
33447 int (*fn)(struct drbd_tconn *tconn, struct packet_info *); 33477 int (*fn)(struct drbd_tconn *tconn, struct packet_info *);
@@ -35986,10 +36016,10 @@ index 8a8725c2..afed796 100644
35986 marker = list_first_entry(&queue->head, 36016 marker = list_first_entry(&queue->head,
35987 struct vmw_marker, head); 36017 struct vmw_marker, head);
35988diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c 36018diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
35989index aa341d1..ef07090 100644 36019index e6dbf09..3dd2540 100644
35990--- a/drivers/hid/hid-core.c 36020--- a/drivers/hid/hid-core.c
35991+++ b/drivers/hid/hid-core.c 36021+++ b/drivers/hid/hid-core.c
35992@@ -2267,7 +2267,7 @@ EXPORT_SYMBOL_GPL(hid_ignore); 36022@@ -2268,7 +2268,7 @@ EXPORT_SYMBOL_GPL(hid_ignore);
35993 36023
35994 int hid_add_device(struct hid_device *hdev) 36024 int hid_add_device(struct hid_device *hdev)
35995 { 36025 {
@@ -35998,7 +36028,7 @@ index aa341d1..ef07090 100644
35998 int ret; 36028 int ret;
35999 36029
36000 if (WARN_ON(hdev->status & HID_STAT_ADDED)) 36030 if (WARN_ON(hdev->status & HID_STAT_ADDED))
36001@@ -2301,7 +2301,7 @@ int hid_add_device(struct hid_device *hdev) 36031@@ -2302,7 +2302,7 @@ int hid_add_device(struct hid_device *hdev)
36002 /* XXX hack, any other cleaner solution after the driver core 36032 /* XXX hack, any other cleaner solution after the driver core
36003 * is converted to allow more than 20 bytes as the device name? */ 36033 * is converted to allow more than 20 bytes as the device name? */
36004 dev_set_name(&hdev->dev, "%04X:%04X:%04X.%04X", hdev->bus, 36034 dev_set_name(&hdev->dev, "%04X:%04X:%04X.%04X", hdev->bus,
@@ -37704,7 +37734,7 @@ index d053098..05cc375 100644
37704 37734
37705 return (test_bit(DM_RAID1_FLUSH_ERROR, &(m->error_type))) ? 'F' : 37735 return (test_bit(DM_RAID1_FLUSH_ERROR, &(m->error_type))) ? 'F' :
37706diff --git a/drivers/md/dm-stripe.c b/drivers/md/dm-stripe.c 37736diff --git a/drivers/md/dm-stripe.c b/drivers/md/dm-stripe.c
37707index d8837d3..1f7c341 100644 37737index 7b8b2b9..9c7d145 100644
37708--- a/drivers/md/dm-stripe.c 37738--- a/drivers/md/dm-stripe.c
37709+++ b/drivers/md/dm-stripe.c 37739+++ b/drivers/md/dm-stripe.c
37710@@ -20,7 +20,7 @@ struct stripe { 37740@@ -20,7 +20,7 @@ struct stripe {
@@ -37716,7 +37746,7 @@ index d8837d3..1f7c341 100644
37716 }; 37746 };
37717 37747
37718 struct stripe_c { 37748 struct stripe_c {
37719@@ -184,7 +184,7 @@ static int stripe_ctr(struct dm_target *ti, unsigned int argc, char **argv) 37749@@ -185,7 +185,7 @@ static int stripe_ctr(struct dm_target *ti, unsigned int argc, char **argv)
37720 kfree(sc); 37750 kfree(sc);
37721 return r; 37751 return r;
37722 } 37752 }
@@ -37725,7 +37755,7 @@ index d8837d3..1f7c341 100644
37725 } 37755 }
37726 37756
37727 ti->private = sc; 37757 ti->private = sc;
37728@@ -325,7 +325,7 @@ static void stripe_status(struct dm_target *ti, status_type_t type, 37758@@ -326,7 +326,7 @@ static void stripe_status(struct dm_target *ti, status_type_t type,
37729 DMEMIT("%d ", sc->stripes); 37759 DMEMIT("%d ", sc->stripes);
37730 for (i = 0; i < sc->stripes; i++) { 37760 for (i = 0; i < sc->stripes; i++) {
37731 DMEMIT("%s ", sc->stripe[i].dev->name); 37761 DMEMIT("%s ", sc->stripe[i].dev->name);
@@ -37734,7 +37764,7 @@ index d8837d3..1f7c341 100644
37734 'D' : 'A'; 37764 'D' : 'A';
37735 } 37765 }
37736 buffer[i] = '\0'; 37766 buffer[i] = '\0';
37737@@ -370,8 +370,8 @@ static int stripe_end_io(struct dm_target *ti, struct bio *bio, int error) 37767@@ -371,8 +371,8 @@ static int stripe_end_io(struct dm_target *ti, struct bio *bio, int error)
37738 */ 37768 */
37739 for (i = 0; i < sc->stripes; i++) 37769 for (i = 0; i < sc->stripes; i++)
37740 if (!strcmp(sc->stripe[i].dev->name, major_minor)) { 37770 if (!strcmp(sc->stripe[i].dev->name, major_minor)) {
@@ -37746,7 +37776,7 @@ index d8837d3..1f7c341 100644
37746 schedule_work(&sc->trigger_event); 37776 schedule_work(&sc->trigger_event);
37747 } 37777 }
37748diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c 37778diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c
37749index e50dad0..d9575e2 100644 37779index 1ff252a..ee384c1 100644
37750--- a/drivers/md/dm-table.c 37780--- a/drivers/md/dm-table.c
37751+++ b/drivers/md/dm-table.c 37781+++ b/drivers/md/dm-table.c
37752@@ -389,7 +389,7 @@ static int device_area_is_invalid(struct dm_target *ti, struct dm_dev *dev, 37782@@ -389,7 +389,7 @@ static int device_area_is_invalid(struct dm_target *ti, struct dm_dev *dev,
@@ -39575,10 +39605,10 @@ index 8f1c256..a2991d1 100644
39575 priv = netdev_priv(dev); 39605 priv = netdev_priv(dev);
39576 priv->phy = phy; 39606 priv->phy = phy;
39577diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c 39607diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
39578index 73abbc1..f25db7c 100644 39608index 011062e..ada88e9 100644
39579--- a/drivers/net/macvlan.c 39609--- a/drivers/net/macvlan.c
39580+++ b/drivers/net/macvlan.c 39610+++ b/drivers/net/macvlan.c
39581@@ -891,13 +891,15 @@ static const struct nla_policy macvlan_policy[IFLA_MACVLAN_MAX + 1] = { 39611@@ -892,13 +892,15 @@ static const struct nla_policy macvlan_policy[IFLA_MACVLAN_MAX + 1] = {
39582 int macvlan_link_register(struct rtnl_link_ops *ops) 39612 int macvlan_link_register(struct rtnl_link_ops *ops)
39583 { 39613 {
39584 /* common fields */ 39614 /* common fields */
@@ -39601,7 +39631,7 @@ index 73abbc1..f25db7c 100644
39601 39631
39602 return rtnl_link_register(ops); 39632 return rtnl_link_register(ops);
39603 }; 39633 };
39604@@ -953,7 +955,7 @@ static int macvlan_device_event(struct notifier_block *unused, 39634@@ -954,7 +956,7 @@ static int macvlan_device_event(struct notifier_block *unused,
39605 return NOTIFY_DONE; 39635 return NOTIFY_DONE;
39606 } 39636 }
39607 39637
@@ -39684,10 +39714,10 @@ index bf34192..fba3500 100644
39684 }; 39714 };
39685 39715
39686diff --git a/drivers/net/tun.c b/drivers/net/tun.c 39716diff --git a/drivers/net/tun.c b/drivers/net/tun.c
39687index 729ed53..9453f99 100644 39717index 755fa9e..631fdce 100644
39688--- a/drivers/net/tun.c 39718--- a/drivers/net/tun.c
39689+++ b/drivers/net/tun.c 39719+++ b/drivers/net/tun.c
39690@@ -1838,7 +1838,7 @@ unlock: 39720@@ -1841,7 +1841,7 @@ unlock:
39691 } 39721 }
39692 39722
39693 static long __tun_chr_ioctl(struct file *file, unsigned int cmd, 39723 static long __tun_chr_ioctl(struct file *file, unsigned int cmd,
@@ -39696,7 +39726,7 @@ index 729ed53..9453f99 100644
39696 { 39726 {
39697 struct tun_file *tfile = file->private_data; 39727 struct tun_file *tfile = file->private_data;
39698 struct tun_struct *tun; 39728 struct tun_struct *tun;
39699@@ -1850,6 +1850,9 @@ static long __tun_chr_ioctl(struct file *file, unsigned int cmd, 39729@@ -1853,6 +1853,9 @@ static long __tun_chr_ioctl(struct file *file, unsigned int cmd,
39700 int vnet_hdr_sz; 39730 int vnet_hdr_sz;
39701 int ret; 39731 int ret;
39702 39732
@@ -42166,10 +42196,10 @@ index f379c7f..e8fc69c 100644
42166 42196
42167 transport_setup_device(&rport->dev); 42197 transport_setup_device(&rport->dev);
42168diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c 42198diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
42169index 7992635..609faf8 100644 42199index 82910cc..7c350ad 100644
42170--- a/drivers/scsi/sd.c 42200--- a/drivers/scsi/sd.c
42171+++ b/drivers/scsi/sd.c 42201+++ b/drivers/scsi/sd.c
42172@@ -2909,7 +2909,7 @@ static int sd_probe(struct device *dev) 42202@@ -2929,7 +2929,7 @@ static int sd_probe(struct device *dev)
42173 sdkp->disk = gd; 42203 sdkp->disk = gd;
42174 sdkp->index = index; 42204 sdkp->index = index;
42175 atomic_set(&sdkp->openers, 0); 42205 atomic_set(&sdkp->openers, 0);
@@ -42468,7 +42498,7 @@ index 2e4d655..fd72e68 100644
42468 spin_lock_init(&dev->t10_wwn.t10_vpd_lock); 42498 spin_lock_init(&dev->t10_wwn.t10_vpd_lock);
42469 INIT_LIST_HEAD(&dev->t10_pr.registration_list); 42499 INIT_LIST_HEAD(&dev->t10_pr.registration_list);
42470diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c 42500diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c
42471index 3243ea7..4f19a6e 100644 42501index 0d46276..f327cab5 100644
42472--- a/drivers/target/target_core_transport.c 42502--- a/drivers/target/target_core_transport.c
42473+++ b/drivers/target/target_core_transport.c 42503+++ b/drivers/target/target_core_transport.c
42474@@ -1080,7 +1080,7 @@ transport_check_alloc_task_attr(struct se_cmd *cmd) 42504@@ -1080,7 +1080,7 @@ transport_check_alloc_task_attr(struct se_cmd *cmd)
@@ -50650,7 +50680,7 @@ index 3b83cd6..0f34dcd 100644
50650 50680
50651 /* locality groups */ 50681 /* locality groups */
50652diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c 50682diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
50653index cf3025c..cac6011 100644 50683index f3190ab..84ffb21 100644
50654--- a/fs/ext4/mballoc.c 50684--- a/fs/ext4/mballoc.c
50655+++ b/fs/ext4/mballoc.c 50685+++ b/fs/ext4/mballoc.c
50656@@ -1754,7 +1754,7 @@ void ext4_mb_simple_scan_group(struct ext4_allocation_context *ac, 50686@@ -1754,7 +1754,7 @@ void ext4_mb_simple_scan_group(struct ext4_allocation_context *ac,
@@ -50662,7 +50692,7 @@ index cf3025c..cac6011 100644
50662 50692
50663 break; 50693 break;
50664 } 50694 }
50665@@ -2055,7 +2055,7 @@ repeat: 50695@@ -2059,7 +2059,7 @@ repeat:
50666 ac->ac_status = AC_STATUS_CONTINUE; 50696 ac->ac_status = AC_STATUS_CONTINUE;
50667 ac->ac_flags |= EXT4_MB_HINT_FIRST; 50697 ac->ac_flags |= EXT4_MB_HINT_FIRST;
50668 cr = 3; 50698 cr = 3;
@@ -50671,7 +50701,7 @@ index cf3025c..cac6011 100644
50671 goto repeat; 50701 goto repeat;
50672 } 50702 }
50673 } 50703 }
50674@@ -2563,25 +2563,25 @@ int ext4_mb_release(struct super_block *sb) 50704@@ -2567,25 +2567,25 @@ int ext4_mb_release(struct super_block *sb)
50675 if (sbi->s_mb_stats) { 50705 if (sbi->s_mb_stats) {
50676 ext4_msg(sb, KERN_INFO, 50706 ext4_msg(sb, KERN_INFO,
50677 "mballoc: %u blocks %u reqs (%u success)", 50707 "mballoc: %u blocks %u reqs (%u success)",
@@ -50707,7 +50737,7 @@ index cf3025c..cac6011 100644
50707 } 50737 }
50708 50738
50709 free_percpu(sbi->s_locality_groups); 50739 free_percpu(sbi->s_locality_groups);
50710@@ -3035,16 +3035,16 @@ static void ext4_mb_collect_stats(struct ext4_allocation_context *ac) 50740@@ -3039,16 +3039,16 @@ static void ext4_mb_collect_stats(struct ext4_allocation_context *ac)
50711 struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb); 50741 struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb);
50712 50742
50713 if (sbi->s_mb_stats && ac->ac_g_ex.fe_len > 1) { 50743 if (sbi->s_mb_stats && ac->ac_g_ex.fe_len > 1) {
@@ -50730,7 +50760,7 @@ index cf3025c..cac6011 100644
50730 } 50760 }
50731 50761
50732 if (ac->ac_op == EXT4_MB_HISTORY_ALLOC) 50762 if (ac->ac_op == EXT4_MB_HISTORY_ALLOC)
50733@@ -3444,7 +3444,7 @@ ext4_mb_new_inode_pa(struct ext4_allocation_context *ac) 50763@@ -3448,7 +3448,7 @@ ext4_mb_new_inode_pa(struct ext4_allocation_context *ac)
50734 trace_ext4_mb_new_inode_pa(ac, pa); 50764 trace_ext4_mb_new_inode_pa(ac, pa);
50735 50765
50736 ext4_mb_use_inode_pa(ac, pa); 50766 ext4_mb_use_inode_pa(ac, pa);
@@ -50739,7 +50769,7 @@ index cf3025c..cac6011 100644
50739 50769
50740 ei = EXT4_I(ac->ac_inode); 50770 ei = EXT4_I(ac->ac_inode);
50741 grp = ext4_get_group_info(sb, ac->ac_b_ex.fe_group); 50771 grp = ext4_get_group_info(sb, ac->ac_b_ex.fe_group);
50742@@ -3504,7 +3504,7 @@ ext4_mb_new_group_pa(struct ext4_allocation_context *ac) 50772@@ -3508,7 +3508,7 @@ ext4_mb_new_group_pa(struct ext4_allocation_context *ac)
50743 trace_ext4_mb_new_group_pa(ac, pa); 50773 trace_ext4_mb_new_group_pa(ac, pa);
50744 50774
50745 ext4_mb_use_group_pa(ac, pa); 50775 ext4_mb_use_group_pa(ac, pa);
@@ -50748,7 +50778,7 @@ index cf3025c..cac6011 100644
50748 50778
50749 grp = ext4_get_group_info(sb, ac->ac_b_ex.fe_group); 50779 grp = ext4_get_group_info(sb, ac->ac_b_ex.fe_group);
50750 lg = ac->ac_lg; 50780 lg = ac->ac_lg;
50751@@ -3593,7 +3593,7 @@ ext4_mb_release_inode_pa(struct ext4_buddy *e4b, struct buffer_head *bitmap_bh, 50781@@ -3597,7 +3597,7 @@ ext4_mb_release_inode_pa(struct ext4_buddy *e4b, struct buffer_head *bitmap_bh,
50752 * from the bitmap and continue. 50782 * from the bitmap and continue.
50753 */ 50783 */
50754 } 50784 }
@@ -50757,7 +50787,7 @@ index cf3025c..cac6011 100644
50757 50787
50758 return err; 50788 return err;
50759 } 50789 }
50760@@ -3611,7 +3611,7 @@ ext4_mb_release_group_pa(struct ext4_buddy *e4b, 50790@@ -3615,7 +3615,7 @@ ext4_mb_release_group_pa(struct ext4_buddy *e4b,
50761 ext4_get_group_no_and_offset(sb, pa->pa_pstart, &group, &bit); 50791 ext4_get_group_no_and_offset(sb, pa->pa_pstart, &group, &bit);
50762 BUG_ON(group != e4b->bd_group && pa->pa_len != 0); 50792 BUG_ON(group != e4b->bd_group && pa->pa_len != 0);
50763 mb_free_blocks(pa->pa_inode, e4b, bit, pa->pa_len); 50793 mb_free_blocks(pa->pa_inode, e4b, bit, pa->pa_len);
@@ -52632,7 +52662,7 @@ index cb424a4..850e4dd 100644
52632 52662
52633 lock_flocks(); 52663 lock_flocks();
52634diff --git a/fs/namei.c b/fs/namei.c 52664diff --git a/fs/namei.c b/fs/namei.c
52635index 57ae9c8..b018eba 100644 52665index 85e40d1..b66744e 100644
52636--- a/fs/namei.c 52666--- a/fs/namei.c
52637+++ b/fs/namei.c 52667+++ b/fs/namei.c
52638@@ -319,16 +319,32 @@ int generic_permission(struct inode *inode, int mask) 52668@@ -319,16 +319,32 @@ int generic_permission(struct inode *inode, int mask)
@@ -53315,10 +53345,10 @@ index 1f94167..79c4ce4 100644
53315 53345
53316 void nfs_fattr_init(struct nfs_fattr *fattr) 53346 void nfs_fattr_init(struct nfs_fattr *fattr)
53317diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c 53347diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
53318index 8288b08..4a140d4 100644 53348index d401d01..10b3e62 100644
53319--- a/fs/nfsd/nfs4proc.c 53349--- a/fs/nfsd/nfs4proc.c
53320+++ b/fs/nfsd/nfs4proc.c 53350+++ b/fs/nfsd/nfs4proc.c
53321@@ -1098,7 +1098,7 @@ struct nfsd4_operation { 53351@@ -1109,7 +1109,7 @@ struct nfsd4_operation {
53322 nfsd4op_rsize op_rsize_bop; 53352 nfsd4op_rsize op_rsize_bop;
53323 stateid_getter op_get_currentstateid; 53353 stateid_getter op_get_currentstateid;
53324 stateid_setter op_set_currentstateid; 53354 stateid_setter op_set_currentstateid;
@@ -69129,10 +69159,10 @@ index f66b065..c2c29b4 100644
69129 int kobj_ns_type_register(const struct kobj_ns_type_operations *ops); 69159 int kobj_ns_type_register(const struct kobj_ns_type_operations *ops);
69130 int kobj_ns_type_registered(enum kobj_ns_type type); 69160 int kobj_ns_type_registered(enum kobj_ns_type type);
69131diff --git a/include/linux/kref.h b/include/linux/kref.h 69161diff --git a/include/linux/kref.h b/include/linux/kref.h
69132index 4972e6e..de4d19b 100644 69162index 7419c02..aa2f02d 100644
69133--- a/include/linux/kref.h 69163--- a/include/linux/kref.h
69134+++ b/include/linux/kref.h 69164+++ b/include/linux/kref.h
69135@@ -64,7 +64,7 @@ static inline void kref_get(struct kref *kref) 69165@@ -65,7 +65,7 @@ static inline void kref_get(struct kref *kref)
69136 static inline int kref_sub(struct kref *kref, unsigned int count, 69166 static inline int kref_sub(struct kref *kref, unsigned int count,
69137 void (*release)(struct kref *kref)) 69167 void (*release)(struct kref *kref))
69138 { 69168 {
@@ -72199,7 +72229,7 @@ index c2e542b..6ca975b 100644
72199 extern __u32 secure_ipv6_id(const __be32 daddr[4]); 72229 extern __u32 secure_ipv6_id(const __be32 daddr[4]);
72200 extern u32 secure_ipv4_port_ephemeral(__be32 saddr, __be32 daddr, __be16 dport); 72230 extern u32 secure_ipv4_port_ephemeral(__be32 saddr, __be32 daddr, __be16 dport);
72201diff --git a/include/net/sock.h b/include/net/sock.h 72231diff --git a/include/net/sock.h b/include/net/sock.h
72202index 14f6e9d..7cd56d0 100644 72232index 0be480a..586232f 100644
72203--- a/include/net/sock.h 72233--- a/include/net/sock.h
72204+++ b/include/net/sock.h 72234+++ b/include/net/sock.h
72205@@ -325,7 +325,7 @@ struct sock { 72235@@ -325,7 +325,7 @@ struct sock {
@@ -72211,7 +72241,7 @@ index 14f6e9d..7cd56d0 100644
72211 int sk_rcvbuf; 72241 int sk_rcvbuf;
72212 72242
72213 struct sk_filter __rcu *sk_filter; 72243 struct sk_filter __rcu *sk_filter;
72214@@ -1784,7 +1784,7 @@ static inline void sk_nocaps_add(struct sock *sk, netdev_features_t flags) 72244@@ -1796,7 +1796,7 @@ static inline void sk_nocaps_add(struct sock *sk, netdev_features_t flags)
72215 } 72245 }
72216 72246
72217 static inline int skb_do_copy_data_nocache(struct sock *sk, struct sk_buff *skb, 72247 static inline int skb_do_copy_data_nocache(struct sock *sk, struct sk_buff *skb,
@@ -72220,7 +72250,7 @@ index 14f6e9d..7cd56d0 100644
72220 int copy, int offset) 72250 int copy, int offset)
72221 { 72251 {
72222 if (skb->ip_summed == CHECKSUM_NONE) { 72252 if (skb->ip_summed == CHECKSUM_NONE) {
72223@@ -2043,7 +2043,7 @@ static inline void sk_stream_moderate_sndbuf(struct sock *sk) 72253@@ -2055,7 +2055,7 @@ static inline void sk_stream_moderate_sndbuf(struct sock *sk)
72224 } 72254 }
72225 } 72255 }
72226 72256
@@ -72230,7 +72260,7 @@ index 14f6e9d..7cd56d0 100644
72230 /** 72260 /**
72231 * sk_page_frag - return an appropriate page_frag 72261 * sk_page_frag - return an appropriate page_frag
72232diff --git a/include/net/tcp.h b/include/net/tcp.h 72262diff --git a/include/net/tcp.h b/include/net/tcp.h
72233index cf0694d..52a6881 100644 72263index a345480..3c65cf4 100644
72234--- a/include/net/tcp.h 72264--- a/include/net/tcp.h
72235+++ b/include/net/tcp.h 72265+++ b/include/net/tcp.h
72236@@ -529,7 +529,7 @@ extern void tcp_retransmit_timer(struct sock *sk); 72266@@ -529,7 +529,7 @@ extern void tcp_retransmit_timer(struct sock *sk);
@@ -73412,7 +73442,7 @@ index 58d31f1..cce7a55 100644
73412 sem_params.flg = semflg; 73442 sem_params.flg = semflg;
73413 sem_params.u.nsems = nsems; 73443 sem_params.u.nsems = nsems;
73414diff --git a/ipc/shm.c b/ipc/shm.c 73444diff --git a/ipc/shm.c b/ipc/shm.c
73415index 34af1fe..85fc1aa 100644 73445index 7e199fa..180a1ca 100644
73416--- a/ipc/shm.c 73446--- a/ipc/shm.c
73417+++ b/ipc/shm.c 73447+++ b/ipc/shm.c
73418@@ -69,6 +69,14 @@ static void shm_destroy (struct ipc_namespace *ns, struct shmid_kernel *shp); 73448@@ -69,6 +69,14 @@ static void shm_destroy (struct ipc_namespace *ns, struct shmid_kernel *shp);
@@ -73430,7 +73460,7 @@ index 34af1fe..85fc1aa 100644
73430 void shm_init_ns(struct ipc_namespace *ns) 73460 void shm_init_ns(struct ipc_namespace *ns)
73431 { 73461 {
73432 ns->shm_ctlmax = SHMMAX; 73462 ns->shm_ctlmax = SHMMAX;
73433@@ -525,6 +533,14 @@ static int newseg(struct ipc_namespace *ns, struct ipc_params *params) 73463@@ -531,6 +539,14 @@ static int newseg(struct ipc_namespace *ns, struct ipc_params *params)
73434 shp->shm_lprid = 0; 73464 shp->shm_lprid = 0;
73435 shp->shm_atim = shp->shm_dtim = 0; 73465 shp->shm_atim = shp->shm_dtim = 0;
73436 shp->shm_ctim = get_seconds(); 73466 shp->shm_ctim = get_seconds();
@@ -73445,7 +73475,7 @@ index 34af1fe..85fc1aa 100644
73445 shp->shm_segsz = size; 73475 shp->shm_segsz = size;
73446 shp->shm_nattch = 0; 73476 shp->shm_nattch = 0;
73447 shp->shm_file = file; 73477 shp->shm_file = file;
73448@@ -576,18 +592,19 @@ static inline int shm_more_checks(struct kern_ipc_perm *ipcp, 73478@@ -582,18 +598,19 @@ static inline int shm_more_checks(struct kern_ipc_perm *ipcp,
73449 return 0; 73479 return 0;
73450 } 73480 }
73451 73481
@@ -73470,7 +73500,7 @@ index 34af1fe..85fc1aa 100644
73470 shm_params.key = key; 73500 shm_params.key = key;
73471 shm_params.flg = shmflg; 73501 shm_params.flg = shmflg;
73472 shm_params.u.size = size; 73502 shm_params.u.size = size;
73473@@ -1008,6 +1025,12 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr, 73503@@ -1014,6 +1031,12 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr,
73474 f_mode = FMODE_READ | FMODE_WRITE; 73504 f_mode = FMODE_READ | FMODE_WRITE;
73475 } 73505 }
73476 if (shmflg & SHM_EXEC) { 73506 if (shmflg & SHM_EXEC) {
@@ -73483,7 +73513,7 @@ index 34af1fe..85fc1aa 100644
73483 prot |= PROT_EXEC; 73513 prot |= PROT_EXEC;
73484 acc_mode |= S_IXUGO; 73514 acc_mode |= S_IXUGO;
73485 } 73515 }
73486@@ -1031,9 +1054,21 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr, 73516@@ -1037,9 +1060,21 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr,
73487 if (err) 73517 if (err)
73488 goto out_unlock; 73518 goto out_unlock;
73489 73519
@@ -73559,10 +73589,10 @@ index d596e53..dbef3c3 100644
73559 audit_send_reply(NETLINK_CB(skb).portid, seq, AUDIT_GET, 0, 0, 73589 audit_send_reply(NETLINK_CB(skb).portid, seq, AUDIT_GET, 0, 0,
73560 &status_set, sizeof(status_set)); 73590 &status_set, sizeof(status_set));
73561diff --git a/kernel/auditsc.c b/kernel/auditsc.c 73591diff --git a/kernel/auditsc.c b/kernel/auditsc.c
73562index a371f85..da826c1 100644 73592index c4b72b0..8654c4e 100644
73563--- a/kernel/auditsc.c 73593--- a/kernel/auditsc.c
73564+++ b/kernel/auditsc.c 73594+++ b/kernel/auditsc.c
73565@@ -2292,7 +2292,7 @@ int auditsc_get_stamp(struct audit_context *ctx, 73595@@ -2295,7 +2295,7 @@ int auditsc_get_stamp(struct audit_context *ctx,
73566 } 73596 }
73567 73597
73568 /* global counter which is incremented every time something logs in */ 73598 /* global counter which is incremented every time something logs in */
@@ -73571,7 +73601,7 @@ index a371f85..da826c1 100644
73571 73601
73572 /** 73602 /**
73573 * audit_set_loginuid - set current task's audit_context loginuid 73603 * audit_set_loginuid - set current task's audit_context loginuid
73574@@ -2316,7 +2316,7 @@ int audit_set_loginuid(kuid_t loginuid) 73604@@ -2319,7 +2319,7 @@ int audit_set_loginuid(kuid_t loginuid)
73575 return -EPERM; 73605 return -EPERM;
73576 #endif /* CONFIG_AUDIT_LOGINUID_IMMUTABLE */ 73606 #endif /* CONFIG_AUDIT_LOGINUID_IMMUTABLE */
73577 73607
@@ -74908,7 +74938,7 @@ index ffd4e11..c3ff6bf 100644
74908 74938
74909 /* Don't allow clients that don't understand the native 74939 /* Don't allow clients that don't understand the native
74910diff --git a/kernel/kmod.c b/kernel/kmod.c 74940diff --git a/kernel/kmod.c b/kernel/kmod.c
74911index 56dd349..336e1dc 100644 74941index 8985c87..f539dbe 100644
74912--- a/kernel/kmod.c 74942--- a/kernel/kmod.c
74913+++ b/kernel/kmod.c 74943+++ b/kernel/kmod.c
74914@@ -75,7 +75,7 @@ static void free_modprobe_argv(struct subprocess_info *info) 74944@@ -75,7 +75,7 @@ static void free_modprobe_argv(struct subprocess_info *info)
@@ -75045,7 +75075,7 @@ index 56dd349..336e1dc 100644
75045 75075
75046 /* 75076 /*
75047 * If ret is 0, either ____call_usermodehelper failed and the 75077 * If ret is 0, either ____call_usermodehelper failed and the
75048@@ -644,7 +697,7 @@ EXPORT_SYMBOL(call_usermodehelper_fns); 75078@@ -649,7 +702,7 @@ EXPORT_SYMBOL(call_usermodehelper_fns);
75049 static int proc_cap_handler(struct ctl_table *table, int write, 75079 static int proc_cap_handler(struct ctl_table *table, int write,
75050 void __user *buffer, size_t *lenp, loff_t *ppos) 75080 void __user *buffer, size_t *lenp, loff_t *ppos)
75051 { 75081 {
@@ -78439,7 +78469,7 @@ index 0b537f2..40d6c20 100644
78439 return -ENOMEM; 78469 return -ENOMEM;
78440 return 0; 78470 return 0;
78441diff --git a/kernel/timer.c b/kernel/timer.c 78471diff --git a/kernel/timer.c b/kernel/timer.c
78442index dbf7a78..e2148f0 100644 78472index 1b399c8..90e1849 100644
78443--- a/kernel/timer.c 78473--- a/kernel/timer.c
78444+++ b/kernel/timer.c 78474+++ b/kernel/timer.c
78445@@ -1363,7 +1363,7 @@ void update_process_times(int user_tick) 78475@@ -1363,7 +1363,7 @@ void update_process_times(int user_tick)
@@ -81042,7 +81072,7 @@ index 79b7cf7..c60424f 100644
81042 capable(CAP_IPC_LOCK)) 81072 capable(CAP_IPC_LOCK))
81043 ret = do_mlockall(flags); 81073 ret = do_mlockall(flags);
81044diff --git a/mm/mmap.c b/mm/mmap.c 81074diff --git a/mm/mmap.c b/mm/mmap.c
81045index e17fc06..72fc5fd 100644 81075index 0dceed8..671951c 100644
81046--- a/mm/mmap.c 81076--- a/mm/mmap.c
81047+++ b/mm/mmap.c 81077+++ b/mm/mmap.c
81048@@ -33,6 +33,7 @@ 81078@@ -33,6 +33,7 @@
@@ -81337,7 +81367,7 @@ index e17fc06..72fc5fd 100644
81337 addr = mmap_region(file, addr, len, vm_flags, pgoff); 81367 addr = mmap_region(file, addr, len, vm_flags, pgoff);
81338 if (!IS_ERR_VALUE(addr) && 81368 if (!IS_ERR_VALUE(addr) &&
81339 ((vm_flags & VM_LOCKED) || 81369 ((vm_flags & VM_LOCKED) ||
81340@@ -1392,7 +1509,7 @@ int vma_wants_writenotify(struct vm_area_struct *vma) 81370@@ -1396,7 +1513,7 @@ int vma_wants_writenotify(struct vm_area_struct *vma)
81341 vm_flags_t vm_flags = vma->vm_flags; 81371 vm_flags_t vm_flags = vma->vm_flags;
81342 81372
81343 /* If it was private or non-writable, the write bit is already clear */ 81373 /* If it was private or non-writable, the write bit is already clear */
@@ -81346,7 +81376,7 @@ index e17fc06..72fc5fd 100644
81346 return 0; 81376 return 0;
81347 81377
81348 /* The backer wishes to know when pages are first written to? */ 81378 /* The backer wishes to know when pages are first written to? */
81349@@ -1440,16 +1557,30 @@ unsigned long mmap_region(struct file *file, unsigned long addr, 81379@@ -1444,16 +1561,30 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
81350 unsigned long charged = 0; 81380 unsigned long charged = 0;
81351 struct inode *inode = file ? file_inode(file) : NULL; 81381 struct inode *inode = file ? file_inode(file) : NULL;
81352 81382
@@ -81379,7 +81409,7 @@ index e17fc06..72fc5fd 100644
81379 if (!may_expand_vm(mm, len >> PAGE_SHIFT)) 81409 if (!may_expand_vm(mm, len >> PAGE_SHIFT))
81380 return -ENOMEM; 81410 return -ENOMEM;
81381 81411
81382@@ -1481,6 +1612,16 @@ munmap_back: 81412@@ -1485,6 +1616,16 @@ munmap_back:
81383 goto unacct_error; 81413 goto unacct_error;
81384 } 81414 }
81385 81415
@@ -81396,7 +81426,7 @@ index e17fc06..72fc5fd 100644
81396 vma->vm_mm = mm; 81426 vma->vm_mm = mm;
81397 vma->vm_start = addr; 81427 vma->vm_start = addr;
81398 vma->vm_end = addr + len; 81428 vma->vm_end = addr + len;
81399@@ -1505,6 +1646,13 @@ munmap_back: 81429@@ -1509,6 +1650,13 @@ munmap_back:
81400 if (error) 81430 if (error)
81401 goto unmap_and_free_vma; 81431 goto unmap_and_free_vma;
81402 81432
@@ -81410,7 +81440,7 @@ index e17fc06..72fc5fd 100644
81410 /* Can addr have changed?? 81440 /* Can addr have changed??
81411 * 81441 *
81412 * Answer: Yes, several device drivers can do it in their 81442 * Answer: Yes, several device drivers can do it in their
81413@@ -1543,6 +1691,11 @@ munmap_back: 81443@@ -1547,6 +1695,11 @@ munmap_back:
81414 vma_link(mm, vma, prev, rb_link, rb_parent); 81444 vma_link(mm, vma, prev, rb_link, rb_parent);
81415 file = vma->vm_file; 81445 file = vma->vm_file;
81416 81446
@@ -81422,7 +81452,7 @@ index e17fc06..72fc5fd 100644
81422 /* Once vma denies write, undo our temporary denial count */ 81452 /* Once vma denies write, undo our temporary denial count */
81423 if (correct_wcount) 81453 if (correct_wcount)
81424 atomic_inc(&inode->i_writecount); 81454 atomic_inc(&inode->i_writecount);
81425@@ -1550,6 +1703,7 @@ out: 81455@@ -1554,6 +1707,7 @@ out:
81426 perf_event_mmap(vma); 81456 perf_event_mmap(vma);
81427 81457
81428 vm_stat_account(mm, vm_flags, file, len >> PAGE_SHIFT); 81458 vm_stat_account(mm, vm_flags, file, len >> PAGE_SHIFT);
@@ -81430,7 +81460,7 @@ index e17fc06..72fc5fd 100644
81430 if (vm_flags & VM_LOCKED) { 81460 if (vm_flags & VM_LOCKED) {
81431 if (!((vm_flags & VM_SPECIAL) || is_vm_hugetlb_page(vma) || 81461 if (!((vm_flags & VM_SPECIAL) || is_vm_hugetlb_page(vma) ||
81432 vma == get_gate_vma(current->mm))) 81462 vma == get_gate_vma(current->mm)))
81433@@ -1573,6 +1727,12 @@ unmap_and_free_vma: 81463@@ -1577,6 +1731,12 @@ unmap_and_free_vma:
81434 unmap_region(mm, vma, prev, vma->vm_start, vma->vm_end); 81464 unmap_region(mm, vma, prev, vma->vm_start, vma->vm_end);
81435 charged = 0; 81465 charged = 0;
81436 free_vma: 81466 free_vma:
@@ -81443,7 +81473,7 @@ index e17fc06..72fc5fd 100644
81443 kmem_cache_free(vm_area_cachep, vma); 81473 kmem_cache_free(vm_area_cachep, vma);
81444 unacct_error: 81474 unacct_error:
81445 if (charged) 81475 if (charged)
81446@@ -1580,6 +1740,62 @@ unacct_error: 81476@@ -1584,6 +1744,62 @@ unacct_error:
81447 return error; 81477 return error;
81448 } 81478 }
81449 81479
@@ -81506,7 +81536,7 @@ index e17fc06..72fc5fd 100644
81506 unsigned long unmapped_area(struct vm_unmapped_area_info *info) 81536 unsigned long unmapped_area(struct vm_unmapped_area_info *info)
81507 { 81537 {
81508 /* 81538 /*
81509@@ -1799,6 +2015,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, 81539@@ -1803,6 +2019,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
81510 struct mm_struct *mm = current->mm; 81540 struct mm_struct *mm = current->mm;
81511 struct vm_area_struct *vma; 81541 struct vm_area_struct *vma;
81512 struct vm_unmapped_area_info info; 81542 struct vm_unmapped_area_info info;
@@ -81514,7 +81544,7 @@ index e17fc06..72fc5fd 100644
81514 81544
81515 if (len > TASK_SIZE) 81545 if (len > TASK_SIZE)
81516 return -ENOMEM; 81546 return -ENOMEM;
81517@@ -1806,29 +2023,45 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, 81547@@ -1810,29 +2027,45 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
81518 if (flags & MAP_FIXED) 81548 if (flags & MAP_FIXED)
81519 return addr; 81549 return addr;
81520 81550
@@ -81563,7 +81593,7 @@ index e17fc06..72fc5fd 100644
81563 mm->free_area_cache = addr; 81593 mm->free_area_cache = addr;
81564 } 81594 }
81565 81595
81566@@ -1846,6 +2079,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, 81596@@ -1850,6 +2083,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
81567 struct mm_struct *mm = current->mm; 81597 struct mm_struct *mm = current->mm;
81568 unsigned long addr = addr0; 81598 unsigned long addr = addr0;
81569 struct vm_unmapped_area_info info; 81599 struct vm_unmapped_area_info info;
@@ -81571,7 +81601,7 @@ index e17fc06..72fc5fd 100644
81571 81601
81572 /* requested length too big for entire address space */ 81602 /* requested length too big for entire address space */
81573 if (len > TASK_SIZE) 81603 if (len > TASK_SIZE)
81574@@ -1854,12 +2088,15 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, 81604@@ -1858,12 +2092,15 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
81575 if (flags & MAP_FIXED) 81605 if (flags & MAP_FIXED)
81576 return addr; 81606 return addr;
81577 81607
@@ -81589,7 +81619,7 @@ index e17fc06..72fc5fd 100644
81589 return addr; 81619 return addr;
81590 } 81620 }
81591 81621
81592@@ -1868,6 +2105,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, 81622@@ -1872,6 +2109,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
81593 info.low_limit = PAGE_SIZE; 81623 info.low_limit = PAGE_SIZE;
81594 info.high_limit = mm->mmap_base; 81624 info.high_limit = mm->mmap_base;
81595 info.align_mask = 0; 81625 info.align_mask = 0;
@@ -81597,7 +81627,7 @@ index e17fc06..72fc5fd 100644
81597 addr = vm_unmapped_area(&info); 81627 addr = vm_unmapped_area(&info);
81598 81628
81599 /* 81629 /*
81600@@ -1880,6 +2118,12 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, 81630@@ -1884,6 +2122,12 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
81601 VM_BUG_ON(addr != -ENOMEM); 81631 VM_BUG_ON(addr != -ENOMEM);
81602 info.flags = 0; 81632 info.flags = 0;
81603 info.low_limit = TASK_UNMAPPED_BASE; 81633 info.low_limit = TASK_UNMAPPED_BASE;
@@ -81610,7 +81640,7 @@ index e17fc06..72fc5fd 100644
81610 info.high_limit = TASK_SIZE; 81640 info.high_limit = TASK_SIZE;
81611 addr = vm_unmapped_area(&info); 81641 addr = vm_unmapped_area(&info);
81612 } 81642 }
81613@@ -1890,6 +2134,12 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, 81643@@ -1894,6 +2138,12 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
81614 81644
81615 void arch_unmap_area_topdown(struct mm_struct *mm, unsigned long addr) 81645 void arch_unmap_area_topdown(struct mm_struct *mm, unsigned long addr)
81616 { 81646 {
@@ -81623,7 +81653,7 @@ index e17fc06..72fc5fd 100644
81623 /* 81653 /*
81624 * Is this a new hole at the highest possible address? 81654 * Is this a new hole at the highest possible address?
81625 */ 81655 */
81626@@ -1897,8 +2147,10 @@ void arch_unmap_area_topdown(struct mm_struct *mm, unsigned long addr) 81656@@ -1901,8 +2151,10 @@ void arch_unmap_area_topdown(struct mm_struct *mm, unsigned long addr)
81627 mm->free_area_cache = addr; 81657 mm->free_area_cache = addr;
81628 81658
81629 /* dont allow allocations above current base */ 81659 /* dont allow allocations above current base */
@@ -81635,7 +81665,7 @@ index e17fc06..72fc5fd 100644
81635 } 81665 }
81636 81666
81637 unsigned long 81667 unsigned long
81638@@ -1997,6 +2249,28 @@ find_vma_prev(struct mm_struct *mm, unsigned long addr, 81668@@ -2001,6 +2253,28 @@ find_vma_prev(struct mm_struct *mm, unsigned long addr,
81639 return vma; 81669 return vma;
81640 } 81670 }
81641 81671
@@ -81664,7 +81694,7 @@ index e17fc06..72fc5fd 100644
81664 /* 81694 /*
81665 * Verify that the stack growth is acceptable and 81695 * Verify that the stack growth is acceptable and
81666 * update accounting. This is shared with both the 81696 * update accounting. This is shared with both the
81667@@ -2013,6 +2287,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns 81697@@ -2017,6 +2291,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
81668 return -ENOMEM; 81698 return -ENOMEM;
81669 81699
81670 /* Stack limit test */ 81700 /* Stack limit test */
@@ -81672,7 +81702,7 @@ index e17fc06..72fc5fd 100644
81672 if (size > ACCESS_ONCE(rlim[RLIMIT_STACK].rlim_cur)) 81702 if (size > ACCESS_ONCE(rlim[RLIMIT_STACK].rlim_cur))
81673 return -ENOMEM; 81703 return -ENOMEM;
81674 81704
81675@@ -2023,6 +2298,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns 81705@@ -2027,6 +2302,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
81676 locked = mm->locked_vm + grow; 81706 locked = mm->locked_vm + grow;
81677 limit = ACCESS_ONCE(rlim[RLIMIT_MEMLOCK].rlim_cur); 81707 limit = ACCESS_ONCE(rlim[RLIMIT_MEMLOCK].rlim_cur);
81678 limit >>= PAGE_SHIFT; 81708 limit >>= PAGE_SHIFT;
@@ -81680,7 +81710,7 @@ index e17fc06..72fc5fd 100644
81680 if (locked > limit && !capable(CAP_IPC_LOCK)) 81710 if (locked > limit && !capable(CAP_IPC_LOCK))
81681 return -ENOMEM; 81711 return -ENOMEM;
81682 } 81712 }
81683@@ -2052,37 +2328,48 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns 81713@@ -2056,37 +2332,48 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
81684 * PA-RISC uses this for its stack; IA64 for its Register Backing Store. 81714 * PA-RISC uses this for its stack; IA64 for its Register Backing Store.
81685 * vma is the last one with address > vma->vm_end. Have to extend vma. 81715 * vma is the last one with address > vma->vm_end. Have to extend vma.
81686 */ 81716 */
@@ -81738,7 +81768,7 @@ index e17fc06..72fc5fd 100644
81738 unsigned long size, grow; 81768 unsigned long size, grow;
81739 81769
81740 size = address - vma->vm_start; 81770 size = address - vma->vm_start;
81741@@ -2117,6 +2404,8 @@ int expand_upwards(struct vm_area_struct *vma, unsigned long address) 81771@@ -2121,6 +2408,8 @@ int expand_upwards(struct vm_area_struct *vma, unsigned long address)
81742 } 81772 }
81743 } 81773 }
81744 } 81774 }
@@ -81747,7 +81777,7 @@ index e17fc06..72fc5fd 100644
81747 vma_unlock_anon_vma(vma); 81777 vma_unlock_anon_vma(vma);
81748 khugepaged_enter_vma_merge(vma); 81778 khugepaged_enter_vma_merge(vma);
81749 validate_mm(vma->vm_mm); 81779 validate_mm(vma->vm_mm);
81750@@ -2131,6 +2420,8 @@ int expand_downwards(struct vm_area_struct *vma, 81780@@ -2135,6 +2424,8 @@ int expand_downwards(struct vm_area_struct *vma,
81751 unsigned long address) 81781 unsigned long address)
81752 { 81782 {
81753 int error; 81783 int error;
@@ -81756,7 +81786,7 @@ index e17fc06..72fc5fd 100644
81756 81786
81757 /* 81787 /*
81758 * We must make sure the anon_vma is allocated 81788 * We must make sure the anon_vma is allocated
81759@@ -2144,6 +2435,15 @@ int expand_downwards(struct vm_area_struct *vma, 81789@@ -2148,6 +2439,15 @@ int expand_downwards(struct vm_area_struct *vma,
81760 if (error) 81790 if (error)
81761 return error; 81791 return error;
81762 81792
@@ -81772,7 +81802,7 @@ index e17fc06..72fc5fd 100644
81772 vma_lock_anon_vma(vma); 81802 vma_lock_anon_vma(vma);
81773 81803
81774 /* 81804 /*
81775@@ -2153,9 +2453,17 @@ int expand_downwards(struct vm_area_struct *vma, 81805@@ -2157,9 +2457,17 @@ int expand_downwards(struct vm_area_struct *vma,
81776 */ 81806 */
81777 81807
81778 /* Somebody else might have raced and expanded it already */ 81808 /* Somebody else might have raced and expanded it already */
@@ -81791,7 +81821,7 @@ index e17fc06..72fc5fd 100644
81791 size = vma->vm_end - address; 81821 size = vma->vm_end - address;
81792 grow = (vma->vm_start - address) >> PAGE_SHIFT; 81822 grow = (vma->vm_start - address) >> PAGE_SHIFT;
81793 81823
81794@@ -2180,6 +2488,18 @@ int expand_downwards(struct vm_area_struct *vma, 81824@@ -2184,6 +2492,18 @@ int expand_downwards(struct vm_area_struct *vma,
81795 vma->vm_pgoff -= grow; 81825 vma->vm_pgoff -= grow;
81796 anon_vma_interval_tree_post_update_vma(vma); 81826 anon_vma_interval_tree_post_update_vma(vma);
81797 vma_gap_update(vma); 81827 vma_gap_update(vma);
@@ -81810,7 +81840,7 @@ index e17fc06..72fc5fd 100644
81810 spin_unlock(&vma->vm_mm->page_table_lock); 81840 spin_unlock(&vma->vm_mm->page_table_lock);
81811 81841
81812 perf_event_mmap(vma); 81842 perf_event_mmap(vma);
81813@@ -2284,6 +2604,13 @@ static void remove_vma_list(struct mm_struct *mm, struct vm_area_struct *vma) 81843@@ -2288,6 +2608,13 @@ static void remove_vma_list(struct mm_struct *mm, struct vm_area_struct *vma)
81814 do { 81844 do {
81815 long nrpages = vma_pages(vma); 81845 long nrpages = vma_pages(vma);
81816 81846
@@ -81824,7 +81854,7 @@ index e17fc06..72fc5fd 100644
81824 if (vma->vm_flags & VM_ACCOUNT) 81854 if (vma->vm_flags & VM_ACCOUNT)
81825 nr_accounted += nrpages; 81855 nr_accounted += nrpages;
81826 vm_stat_account(mm, vma->vm_flags, vma->vm_file, -nrpages); 81856 vm_stat_account(mm, vma->vm_flags, vma->vm_file, -nrpages);
81827@@ -2329,6 +2656,16 @@ detach_vmas_to_be_unmapped(struct mm_struct *mm, struct vm_area_struct *vma, 81857@@ -2333,6 +2660,16 @@ detach_vmas_to_be_unmapped(struct mm_struct *mm, struct vm_area_struct *vma,
81828 insertion_point = (prev ? &prev->vm_next : &mm->mmap); 81858 insertion_point = (prev ? &prev->vm_next : &mm->mmap);
81829 vma->vm_prev = NULL; 81859 vma->vm_prev = NULL;
81830 do { 81860 do {
@@ -81841,7 +81871,7 @@ index e17fc06..72fc5fd 100644
81841 vma_rb_erase(vma, &mm->mm_rb); 81871 vma_rb_erase(vma, &mm->mm_rb);
81842 mm->map_count--; 81872 mm->map_count--;
81843 tail_vma = vma; 81873 tail_vma = vma;
81844@@ -2360,14 +2697,33 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma, 81874@@ -2364,14 +2701,33 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
81845 struct vm_area_struct *new; 81875 struct vm_area_struct *new;
81846 int err = -ENOMEM; 81876 int err = -ENOMEM;
81847 81877
@@ -81875,7 +81905,7 @@ index e17fc06..72fc5fd 100644
81875 /* most fields are the same, copy all, and then fixup */ 81905 /* most fields are the same, copy all, and then fixup */
81876 *new = *vma; 81906 *new = *vma;
81877 81907
81878@@ -2380,6 +2736,22 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma, 81908@@ -2384,6 +2740,22 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
81879 new->vm_pgoff += ((addr - vma->vm_start) >> PAGE_SHIFT); 81909 new->vm_pgoff += ((addr - vma->vm_start) >> PAGE_SHIFT);
81880 } 81910 }
81881 81911
@@ -81898,7 +81928,7 @@ index e17fc06..72fc5fd 100644
81898 pol = mpol_dup(vma_policy(vma)); 81928 pol = mpol_dup(vma_policy(vma));
81899 if (IS_ERR(pol)) { 81929 if (IS_ERR(pol)) {
81900 err = PTR_ERR(pol); 81930 err = PTR_ERR(pol);
81901@@ -2402,6 +2774,36 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma, 81931@@ -2406,6 +2778,36 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
81902 else 81932 else
81903 err = vma_adjust(vma, vma->vm_start, addr, vma->vm_pgoff, new); 81933 err = vma_adjust(vma, vma->vm_start, addr, vma->vm_pgoff, new);
81904 81934
@@ -81935,7 +81965,7 @@ index e17fc06..72fc5fd 100644
81935 /* Success. */ 81965 /* Success. */
81936 if (!err) 81966 if (!err)
81937 return 0; 81967 return 0;
81938@@ -2411,10 +2813,18 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma, 81968@@ -2415,10 +2817,18 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
81939 new->vm_ops->close(new); 81969 new->vm_ops->close(new);
81940 if (new->vm_file) 81970 if (new->vm_file)
81941 fput(new->vm_file); 81971 fput(new->vm_file);
@@ -81955,7 +81985,7 @@ index e17fc06..72fc5fd 100644
81955 kmem_cache_free(vm_area_cachep, new); 81985 kmem_cache_free(vm_area_cachep, new);
81956 out_err: 81986 out_err:
81957 return err; 81987 return err;
81958@@ -2427,6 +2837,15 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma, 81988@@ -2431,6 +2841,15 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
81959 int split_vma(struct mm_struct *mm, struct vm_area_struct *vma, 81989 int split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
81960 unsigned long addr, int new_below) 81990 unsigned long addr, int new_below)
81961 { 81991 {
@@ -81971,7 +82001,7 @@ index e17fc06..72fc5fd 100644
81971 if (mm->map_count >= sysctl_max_map_count) 82001 if (mm->map_count >= sysctl_max_map_count)
81972 return -ENOMEM; 82002 return -ENOMEM;
81973 82003
81974@@ -2438,11 +2857,30 @@ int split_vma(struct mm_struct *mm, struct vm_area_struct *vma, 82004@@ -2442,11 +2861,30 @@ int split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
81975 * work. This now handles partial unmappings. 82005 * work. This now handles partial unmappings.
81976 * Jeremy Fitzhardinge <jeremy@goop.org> 82006 * Jeremy Fitzhardinge <jeremy@goop.org>
81977 */ 82007 */
@@ -82002,7 +82032,7 @@ index e17fc06..72fc5fd 100644
82002 if ((start & ~PAGE_MASK) || start > TASK_SIZE || len > TASK_SIZE-start) 82032 if ((start & ~PAGE_MASK) || start > TASK_SIZE || len > TASK_SIZE-start)
82003 return -EINVAL; 82033 return -EINVAL;
82004 82034
82005@@ -2517,6 +2955,8 @@ int do_munmap(struct mm_struct *mm, unsigned long start, size_t len) 82035@@ -2521,6 +2959,8 @@ int do_munmap(struct mm_struct *mm, unsigned long start, size_t len)
82006 /* Fix up all other VM information */ 82036 /* Fix up all other VM information */
82007 remove_vma_list(mm, vma); 82037 remove_vma_list(mm, vma);
82008 82038
@@ -82011,7 +82041,7 @@ index e17fc06..72fc5fd 100644
82011 return 0; 82041 return 0;
82012 } 82042 }
82013 82043
82014@@ -2525,6 +2965,13 @@ int vm_munmap(unsigned long start, size_t len) 82044@@ -2529,6 +2969,13 @@ int vm_munmap(unsigned long start, size_t len)
82015 int ret; 82045 int ret;
82016 struct mm_struct *mm = current->mm; 82046 struct mm_struct *mm = current->mm;
82017 82047
@@ -82025,7 +82055,7 @@ index e17fc06..72fc5fd 100644
82025 down_write(&mm->mmap_sem); 82055 down_write(&mm->mmap_sem);
82026 ret = do_munmap(mm, start, len); 82056 ret = do_munmap(mm, start, len);
82027 up_write(&mm->mmap_sem); 82057 up_write(&mm->mmap_sem);
82028@@ -2538,16 +2985,6 @@ SYSCALL_DEFINE2(munmap, unsigned long, addr, size_t, len) 82058@@ -2542,16 +2989,6 @@ SYSCALL_DEFINE2(munmap, unsigned long, addr, size_t, len)
82029 return vm_munmap(addr, len); 82059 return vm_munmap(addr, len);
82030 } 82060 }
82031 82061
@@ -82042,7 +82072,7 @@ index e17fc06..72fc5fd 100644
82042 /* 82072 /*
82043 * this is really a simplified "do_mmap". it only handles 82073 * this is really a simplified "do_mmap". it only handles
82044 * anonymous maps. eventually we may be able to do some 82074 * anonymous maps. eventually we may be able to do some
82045@@ -2561,6 +2998,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) 82075@@ -2565,6 +3002,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
82046 struct rb_node ** rb_link, * rb_parent; 82076 struct rb_node ** rb_link, * rb_parent;
82047 pgoff_t pgoff = addr >> PAGE_SHIFT; 82077 pgoff_t pgoff = addr >> PAGE_SHIFT;
82048 int error; 82078 int error;
@@ -82050,7 +82080,7 @@ index e17fc06..72fc5fd 100644
82050 82080
82051 len = PAGE_ALIGN(len); 82081 len = PAGE_ALIGN(len);
82052 if (!len) 82082 if (!len)
82053@@ -2568,16 +3006,30 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) 82083@@ -2572,16 +3010,30 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
82054 82084
82055 flags = VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags; 82085 flags = VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags;
82056 82086
@@ -82082,7 +82112,7 @@ index e17fc06..72fc5fd 100644
82082 locked += mm->locked_vm; 82112 locked += mm->locked_vm;
82083 lock_limit = rlimit(RLIMIT_MEMLOCK); 82113 lock_limit = rlimit(RLIMIT_MEMLOCK);
82084 lock_limit >>= PAGE_SHIFT; 82114 lock_limit >>= PAGE_SHIFT;
82085@@ -2594,21 +3046,20 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) 82115@@ -2598,21 +3050,20 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
82086 /* 82116 /*
82087 * Clear old maps. this also does some error checking for us 82117 * Clear old maps. this also does some error checking for us
82088 */ 82118 */
@@ -82107,7 +82137,7 @@ index e17fc06..72fc5fd 100644
82107 return -ENOMEM; 82137 return -ENOMEM;
82108 82138
82109 /* Can we just expand an old private anonymous mapping? */ 82139 /* Can we just expand an old private anonymous mapping? */
82110@@ -2622,7 +3073,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) 82140@@ -2626,7 +3077,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
82111 */ 82141 */
82112 vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL); 82142 vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL);
82113 if (!vma) { 82143 if (!vma) {
@@ -82116,7 +82146,7 @@ index e17fc06..72fc5fd 100644
82116 return -ENOMEM; 82146 return -ENOMEM;
82117 } 82147 }
82118 82148
82119@@ -2636,9 +3087,10 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) 82149@@ -2640,9 +3091,10 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
82120 vma_link(mm, vma, prev, rb_link, rb_parent); 82150 vma_link(mm, vma, prev, rb_link, rb_parent);
82121 out: 82151 out:
82122 perf_event_mmap(vma); 82152 perf_event_mmap(vma);
@@ -82129,7 +82159,7 @@ index e17fc06..72fc5fd 100644
82129 return addr; 82159 return addr;
82130 } 82160 }
82131 82161
82132@@ -2700,6 +3152,7 @@ void exit_mmap(struct mm_struct *mm) 82162@@ -2704,6 +3156,7 @@ void exit_mmap(struct mm_struct *mm)
82133 while (vma) { 82163 while (vma) {
82134 if (vma->vm_flags & VM_ACCOUNT) 82164 if (vma->vm_flags & VM_ACCOUNT)
82135 nr_accounted += vma_pages(vma); 82165 nr_accounted += vma_pages(vma);
@@ -82137,7 +82167,7 @@ index e17fc06..72fc5fd 100644
82137 vma = remove_vma(vma); 82167 vma = remove_vma(vma);
82138 } 82168 }
82139 vm_unacct_memory(nr_accounted); 82169 vm_unacct_memory(nr_accounted);
82140@@ -2716,6 +3169,13 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma) 82170@@ -2720,6 +3173,13 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma)
82141 struct vm_area_struct *prev; 82171 struct vm_area_struct *prev;
82142 struct rb_node **rb_link, *rb_parent; 82172 struct rb_node **rb_link, *rb_parent;
82143 82173
@@ -82151,7 +82181,7 @@ index e17fc06..72fc5fd 100644
82151 /* 82181 /*
82152 * The vm_pgoff of a purely anonymous vma should be irrelevant 82182 * The vm_pgoff of a purely anonymous vma should be irrelevant
82153 * until its first write fault, when page's anon_vma and index 82183 * until its first write fault, when page's anon_vma and index
82154@@ -2739,7 +3199,21 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma) 82184@@ -2743,7 +3203,21 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma)
82155 security_vm_enough_memory_mm(mm, vma_pages(vma))) 82185 security_vm_enough_memory_mm(mm, vma_pages(vma)))
82156 return -ENOMEM; 82186 return -ENOMEM;
82157 82187
@@ -82173,7 +82203,7 @@ index e17fc06..72fc5fd 100644
82173 return 0; 82203 return 0;
82174 } 82204 }
82175 82205
82176@@ -2759,6 +3233,8 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap, 82206@@ -2763,6 +3237,8 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
82177 struct mempolicy *pol; 82207 struct mempolicy *pol;
82178 bool faulted_in_anon_vma = true; 82208 bool faulted_in_anon_vma = true;
82179 82209
@@ -82182,7 +82212,7 @@ index e17fc06..72fc5fd 100644
82182 /* 82212 /*
82183 * If anonymous vma has not yet been faulted, update new pgoff 82213 * If anonymous vma has not yet been faulted, update new pgoff
82184 * to match new location, to increase its chance of merging. 82214 * to match new location, to increase its chance of merging.
82185@@ -2825,6 +3301,39 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap, 82215@@ -2829,6 +3305,39 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
82186 return NULL; 82216 return NULL;
82187 } 82217 }
82188 82218
@@ -82222,7 +82252,7 @@ index e17fc06..72fc5fd 100644
82222 /* 82252 /*
82223 * Return true if the calling process may expand its vm space by the passed 82253 * Return true if the calling process may expand its vm space by the passed
82224 * number of pages 82254 * number of pages
82225@@ -2836,6 +3345,7 @@ int may_expand_vm(struct mm_struct *mm, unsigned long npages) 82255@@ -2840,6 +3349,7 @@ int may_expand_vm(struct mm_struct *mm, unsigned long npages)
82226 82256
82227 lim = rlimit(RLIMIT_AS) >> PAGE_SHIFT; 82257 lim = rlimit(RLIMIT_AS) >> PAGE_SHIFT;
82228 82258
@@ -82230,7 +82260,7 @@ index e17fc06..72fc5fd 100644
82230 if (cur + npages > lim) 82260 if (cur + npages > lim)
82231 return 0; 82261 return 0;
82232 return 1; 82262 return 1;
82233@@ -2906,6 +3416,22 @@ int install_special_mapping(struct mm_struct *mm, 82263@@ -2910,6 +3420,22 @@ int install_special_mapping(struct mm_struct *mm,
82234 vma->vm_start = addr; 82264 vma->vm_start = addr;
82235 vma->vm_end = addr + len; 82265 vma->vm_end = addr + len;
82236 82266
@@ -85015,7 +85045,7 @@ index 368f9c3..f82d4a3 100644
85015 85045
85016 return err; 85046 return err;
85017diff --git a/net/core/dev.c b/net/core/dev.c 85047diff --git a/net/core/dev.c b/net/core/dev.c
85018index b24ab0e9..1c424bc 100644 85048index 9a278e9..15f2b9e 100644
85019--- a/net/core/dev.c 85049--- a/net/core/dev.c
85020+++ b/net/core/dev.c 85050+++ b/net/core/dev.c
85021@@ -1617,7 +1617,7 @@ int dev_forward_skb(struct net_device *dev, struct sk_buff *skb) 85051@@ -1617,7 +1617,7 @@ int dev_forward_skb(struct net_device *dev, struct sk_buff *skb)
@@ -85352,7 +85382,7 @@ index e61a8bb..6a2f13c 100644
85352 #ifdef CONFIG_INET 85382 #ifdef CONFIG_INET
85353 static u32 seq_scale(u32 seq) 85383 static u32 seq_scale(u32 seq)
85354diff --git a/net/core/sock.c b/net/core/sock.c 85384diff --git a/net/core/sock.c b/net/core/sock.c
85355index b261a79..8fe17ab 100644 85385index 1432266..1a0d4a1 100644
85356--- a/net/core/sock.c 85386--- a/net/core/sock.c
85357+++ b/net/core/sock.c 85387+++ b/net/core/sock.c
85358@@ -390,7 +390,7 @@ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) 85388@@ -390,7 +390,7 @@ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
@@ -85439,7 +85469,7 @@ index b261a79..8fe17ab 100644
85439 return -EFAULT; 85469 return -EFAULT;
85440 lenout: 85470 lenout:
85441 if (put_user(len, optlen)) 85471 if (put_user(len, optlen))
85442@@ -2296,7 +2296,7 @@ void sock_init_data(struct socket *sock, struct sock *sk) 85472@@ -2284,7 +2284,7 @@ void sock_init_data(struct socket *sock, struct sock *sk)
85443 */ 85473 */
85444 smp_wmb(); 85474 smp_wmb();
85445 atomic_set(&sk->sk_refcnt, 1); 85475 atomic_set(&sk->sk_refcnt, 1);
@@ -86482,7 +86512,7 @@ index d09203c..fd5cc91 100644
86482 } 86512 }
86483 86513
86484diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c 86514diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c
86485index b83a49c..6c562a7 100644 86515index 2f672e7..b8895e9 100644
86486--- a/net/ipv4/tcp_minisocks.c 86516--- a/net/ipv4/tcp_minisocks.c
86487+++ b/net/ipv4/tcp_minisocks.c 86517+++ b/net/ipv4/tcp_minisocks.c
86488@@ -27,6 +27,10 @@ 86518@@ -27,6 +27,10 @@
@@ -86496,7 +86526,7 @@ index b83a49c..6c562a7 100644
86496 int sysctl_tcp_syncookies __read_mostly = 1; 86526 int sysctl_tcp_syncookies __read_mostly = 1;
86497 EXPORT_SYMBOL(sysctl_tcp_syncookies); 86527 EXPORT_SYMBOL(sysctl_tcp_syncookies);
86498 86528
86499@@ -744,7 +748,10 @@ embryonic_reset: 86529@@ -749,7 +753,10 @@ embryonic_reset:
86500 * avoid becoming vulnerable to outside attack aiming at 86530 * avoid becoming vulnerable to outside attack aiming at
86501 * resetting legit local connections. 86531 * resetting legit local connections.
86502 */ 86532 */
@@ -86752,7 +86782,7 @@ index fff5bdd..15194fb 100644
86752 table = kmemdup(ipv6_icmp_table_template, 86782 table = kmemdup(ipv6_icmp_table_template,
86753 sizeof(ipv6_icmp_table_template), 86783 sizeof(ipv6_icmp_table_template),
86754diff --git a/net/ipv6/ip6_gre.c b/net/ipv6/ip6_gre.c 86784diff --git a/net/ipv6/ip6_gre.c b/net/ipv6/ip6_gre.c
86755index e4efffe..791fe2f 100644 86785index 95d13c7..791fe2f 100644
86756--- a/net/ipv6/ip6_gre.c 86786--- a/net/ipv6/ip6_gre.c
86757+++ b/net/ipv6/ip6_gre.c 86787+++ b/net/ipv6/ip6_gre.c
86758@@ -73,7 +73,7 @@ struct ip6gre_net { 86788@@ -73,7 +73,7 @@ struct ip6gre_net {
@@ -86764,23 +86794,7 @@ index e4efffe..791fe2f 100644
86764 static int ip6gre_tunnel_init(struct net_device *dev); 86794 static int ip6gre_tunnel_init(struct net_device *dev);
86765 static void ip6gre_tunnel_setup(struct net_device *dev); 86795 static void ip6gre_tunnel_setup(struct net_device *dev);
86766 static void ip6gre_tunnel_link(struct ip6gre_net *ign, struct ip6_tnl *t); 86796 static void ip6gre_tunnel_link(struct ip6gre_net *ign, struct ip6_tnl *t);
86767@@ -1135,6 +1135,7 @@ static int ip6gre_tunnel_ioctl(struct net_device *dev, 86797@@ -1337,7 +1337,7 @@ static void ip6gre_fb_tunnel_init(struct net_device *dev)
86768 }
86769 if (t == NULL)
86770 t = netdev_priv(dev);
86771+ memset(&p, 0, sizeof(p));
86772 ip6gre_tnl_parm_to_user(&p, &t->parms);
86773 if (copy_to_user(ifr->ifr_ifru.ifru_data, &p, sizeof(p)))
86774 err = -EFAULT;
86775@@ -1182,6 +1183,7 @@ static int ip6gre_tunnel_ioctl(struct net_device *dev,
86776 if (t) {
86777 err = 0;
86778
86779+ memset(&p, 0, sizeof(p));
86780 ip6gre_tnl_parm_to_user(&p, &t->parms);
86781 if (copy_to_user(ifr->ifr_ifru.ifru_data, &p, sizeof(p)))
86782 err = -EFAULT;
86783@@ -1335,7 +1337,7 @@ static void ip6gre_fb_tunnel_init(struct net_device *dev)
86784 } 86798 }
86785 86799
86786 86800
@@ -86789,7 +86803,7 @@ index e4efffe..791fe2f 100644
86789 .handler = ip6gre_rcv, 86803 .handler = ip6gre_rcv,
86790 .err_handler = ip6gre_err, 86804 .err_handler = ip6gre_err,
86791 .flags = INET6_PROTO_NOPOLICY|INET6_PROTO_FINAL, 86805 .flags = INET6_PROTO_NOPOLICY|INET6_PROTO_FINAL,
86792@@ -1669,7 +1671,7 @@ static const struct nla_policy ip6gre_policy[IFLA_GRE_MAX + 1] = { 86806@@ -1671,7 +1671,7 @@ static const struct nla_policy ip6gre_policy[IFLA_GRE_MAX + 1] = {
86793 [IFLA_GRE_FLAGS] = { .type = NLA_U32 }, 86807 [IFLA_GRE_FLAGS] = { .type = NLA_U32 },
86794 }; 86808 };
86795 86809
@@ -86798,7 +86812,7 @@ index e4efffe..791fe2f 100644
86798 .kind = "ip6gre", 86812 .kind = "ip6gre",
86799 .maxtype = IFLA_GRE_MAX, 86813 .maxtype = IFLA_GRE_MAX,
86800 .policy = ip6gre_policy, 86814 .policy = ip6gre_policy,
86801@@ -1682,7 +1684,7 @@ static struct rtnl_link_ops ip6gre_link_ops __read_mostly = { 86815@@ -1684,7 +1684,7 @@ static struct rtnl_link_ops ip6gre_link_ops __read_mostly = {
86802 .fill_info = ip6gre_fill_info, 86816 .fill_info = ip6gre_fill_info,
86803 }; 86817 };
86804 86818
@@ -87108,7 +87122,7 @@ index e85c48b..b8268d3 100644
87108 struct ctl_table *ipv6_icmp_table; 87122 struct ctl_table *ipv6_icmp_table;
87109 int err; 87123 int err;
87110diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c 87124diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
87111index 46a5be8..415688d 100644 87125index 0fce928..c52a518 100644
87112--- a/net/ipv6/tcp_ipv6.c 87126--- a/net/ipv6/tcp_ipv6.c
87113+++ b/net/ipv6/tcp_ipv6.c 87127+++ b/net/ipv6/tcp_ipv6.c
87114@@ -103,6 +103,10 @@ static void inet6_sk_rx_dst_set(struct sock *sk, const struct sk_buff *skb) 87128@@ -103,6 +103,10 @@ static void inet6_sk_rx_dst_set(struct sock *sk, const struct sk_buff *skb)
@@ -87167,7 +87181,7 @@ index 46a5be8..415688d 100644
87167 } 87181 }
87168 87182
87169diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c 87183diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
87170index d8e5e85..5a447f4 100644 87184index 27f0f8e..949e7ee 100644
87171--- a/net/ipv6/udp.c 87185--- a/net/ipv6/udp.c
87172+++ b/net/ipv6/udp.c 87186+++ b/net/ipv6/udp.c
87173@@ -52,6 +52,10 @@ 87187@@ -52,6 +52,10 @@
@@ -87228,10 +87242,10 @@ index d8e5e85..5a447f4 100644
87228 87242
87229 int udp6_seq_show(struct seq_file *seq, void *v) 87243 int udp6_seq_show(struct seq_file *seq, void *v)
87230diff --git a/net/ipv6/xfrm6_policy.c b/net/ipv6/xfrm6_policy.c 87244diff --git a/net/ipv6/xfrm6_policy.c b/net/ipv6/xfrm6_policy.c
87231index 4ef7bdb..9e97017 100644 87245index 23ed03d..465a71d 100644
87232--- a/net/ipv6/xfrm6_policy.c 87246--- a/net/ipv6/xfrm6_policy.c
87233+++ b/net/ipv6/xfrm6_policy.c 87247+++ b/net/ipv6/xfrm6_policy.c
87234@@ -322,19 +322,19 @@ static struct ctl_table xfrm6_policy_table[] = { 87248@@ -324,19 +324,19 @@ static struct ctl_table xfrm6_policy_table[] = {
87235 87249
87236 static int __net_init xfrm6_net_init(struct net *net) 87250 static int __net_init xfrm6_net_init(struct net *net)
87237 { 87251 {
@@ -87256,7 +87270,7 @@ index 4ef7bdb..9e97017 100644
87256 if (!hdr) 87270 if (!hdr)
87257 goto err_reg; 87271 goto err_reg;
87258 87272
87259@@ -342,8 +342,7 @@ static int __net_init xfrm6_net_init(struct net *net) 87273@@ -344,8 +344,7 @@ static int __net_init xfrm6_net_init(struct net *net)
87260 return 0; 87274 return 0;
87261 87275
87262 err_reg: 87276 err_reg:
@@ -88195,10 +88209,10 @@ index 103bd70..f21aad3 100644
88195 *uaddr_len = sizeof(struct sockaddr_ax25); 88209 *uaddr_len = sizeof(struct sockaddr_ax25);
88196 } 88210 }
88197diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c 88211diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
88198index 1d6793d..056b191 100644 88212index f83e172..b57140d 100644
88199--- a/net/packet/af_packet.c 88213--- a/net/packet/af_packet.c
88200+++ b/net/packet/af_packet.c 88214+++ b/net/packet/af_packet.c
88201@@ -1578,7 +1578,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev, 88215@@ -1571,7 +1571,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev,
88202 88216
88203 spin_lock(&sk->sk_receive_queue.lock); 88217 spin_lock(&sk->sk_receive_queue.lock);
88204 po->stats.tp_packets++; 88218 po->stats.tp_packets++;
@@ -88207,7 +88221,7 @@ index 1d6793d..056b191 100644
88207 __skb_queue_tail(&sk->sk_receive_queue, skb); 88221 __skb_queue_tail(&sk->sk_receive_queue, skb);
88208 spin_unlock(&sk->sk_receive_queue.lock); 88222 spin_unlock(&sk->sk_receive_queue.lock);
88209 sk->sk_data_ready(sk, skb->len); 88223 sk->sk_data_ready(sk, skb->len);
88210@@ -1587,7 +1587,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev, 88224@@ -1580,7 +1580,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev,
88211 drop_n_acct: 88225 drop_n_acct:
88212 spin_lock(&sk->sk_receive_queue.lock); 88226 spin_lock(&sk->sk_receive_queue.lock);
88213 po->stats.tp_drops++; 88227 po->stats.tp_drops++;
@@ -88216,7 +88230,7 @@ index 1d6793d..056b191 100644
88216 spin_unlock(&sk->sk_receive_queue.lock); 88230 spin_unlock(&sk->sk_receive_queue.lock);
88217 88231
88218 drop_n_restore: 88232 drop_n_restore:
88219@@ -2565,6 +2565,7 @@ out: 88233@@ -2558,6 +2558,7 @@ out:
88220 88234
88221 static int packet_recv_error(struct sock *sk, struct msghdr *msg, int len) 88235 static int packet_recv_error(struct sock *sk, struct msghdr *msg, int len)
88222 { 88236 {
@@ -88224,7 +88238,7 @@ index 1d6793d..056b191 100644
88224 struct sock_exterr_skb *serr; 88238 struct sock_exterr_skb *serr;
88225 struct sk_buff *skb, *skb2; 88239 struct sk_buff *skb, *skb2;
88226 int copied, err; 88240 int copied, err;
88227@@ -2586,8 +2587,9 @@ static int packet_recv_error(struct sock *sk, struct msghdr *msg, int len) 88241@@ -2579,8 +2580,9 @@ static int packet_recv_error(struct sock *sk, struct msghdr *msg, int len)
88228 sock_recv_timestamp(msg, sk, skb); 88242 sock_recv_timestamp(msg, sk, skb);
88229 88243
88230 serr = SKB_EXT_ERR(skb); 88244 serr = SKB_EXT_ERR(skb);
@@ -88235,7 +88249,7 @@ index 1d6793d..056b191 100644
88235 88249
88236 msg->msg_flags |= MSG_ERRQUEUE; 88250 msg->msg_flags |= MSG_ERRQUEUE;
88237 err = copied; 88251 err = copied;
88238@@ -3212,7 +3214,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname, 88252@@ -3205,7 +3207,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname,
88239 case PACKET_HDRLEN: 88253 case PACKET_HDRLEN:
88240 if (len > sizeof(int)) 88254 if (len > sizeof(int))
88241 len = sizeof(int); 88255 len = sizeof(int);
@@ -88244,7 +88258,7 @@ index 1d6793d..056b191 100644
88244 return -EFAULT; 88258 return -EFAULT;
88245 switch (val) { 88259 switch (val) {
88246 case TPACKET_V1: 88260 case TPACKET_V1:
88247@@ -3254,7 +3256,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname, 88261@@ -3247,7 +3249,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname,
88248 len = lv; 88262 len = lv;
88249 if (put_user(len, optlen)) 88263 if (put_user(len, optlen))
88250 return -EFAULT; 88264 return -EFAULT;
@@ -102590,10 +102604,10 @@ index 0000000..ac2901e
102590+} 102604+}
102591diff --git a/tools/gcc/structleak_plugin.c b/tools/gcc/structleak_plugin.c 102605diff --git a/tools/gcc/structleak_plugin.c b/tools/gcc/structleak_plugin.c
102592new file mode 100644 102606new file mode 100644
102593index 0000000..b07fe22 102607index 0000000..4fae911
102594--- /dev/null 102608--- /dev/null
102595+++ b/tools/gcc/structleak_plugin.c 102609+++ b/tools/gcc/structleak_plugin.c
102596@@ -0,0 +1,276 @@ 102610@@ -0,0 +1,277 @@
102597+/* 102611+/*
102598+ * Copyright 2013 by PaX Team <pageexec@freemail.hu> 102612+ * Copyright 2013 by PaX Team <pageexec@freemail.hu>
102599+ * Licensed under the GPL v2 102613+ * Licensed under the GPL v2
@@ -102734,11 +102748,12 @@ index 0000000..b07fe22
102734+ // first check if the variable is already initialized, warn otherwise 102748+ // first check if the variable is already initialized, warn otherwise
102735+ for (gsi = gsi_start_bb(bb); !gsi_end_p(gsi); gsi_next(&gsi)) { 102749+ for (gsi = gsi_start_bb(bb); !gsi_end_p(gsi); gsi_next(&gsi)) {
102736+ gimple stmt = gsi_stmt(gsi); 102750+ gimple stmt = gsi_stmt(gsi);
102737+ tree rhs1 = gimple_assign_rhs1(stmt); 102751+ tree rhs1;
102738+ 102752+
102739+ // we're looking for an assignment of a single rhs... 102753+ // we're looking for an assignment of a single rhs...
102740+ if (!gimple_assign_single_p(stmt)) 102754+ if (!gimple_assign_single_p(stmt))
102741+ continue; 102755+ continue;
102756+ rhs1 = gimple_assign_rhs1(stmt);
102742+#if BUILDING_GCC_VERSION >= 4007 102757+#if BUILDING_GCC_VERSION >= 4007
102743+ // ... of a non-clobbering expression... 102758+ // ... of a non-clobbering expression...
102744+ if (TREE_CLOBBER_P(rhs1)) 102759+ if (TREE_CLOBBER_P(rhs1))
diff --git a/main/linux-grsec/kernelconfig.x86 b/main/linux-grsec/kernelconfig.x86
index 3f3b6f478d..e7d4331a7f 100644
--- a/main/linux-grsec/kernelconfig.x86
+++ b/main/linux-grsec/kernelconfig.x86
@@ -1,6 +1,6 @@
1# 1#
2# Automatically generated file; DO NOT EDIT. 2# Automatically generated file; DO NOT EDIT.
3# Linux/x86 3.9.2 Kernel Configuration 3# Linux/x86 3.9.3 Kernel Configuration
4# 4#
5# CONFIG_64BIT is not set 5# CONFIG_64BIT is not set
6CONFIG_X86_32=y 6CONFIG_X86_32=y
@@ -83,7 +83,6 @@ CONFIG_IRQ_DOMAIN=y
83CONFIG_IRQ_FORCED_THREADING=y 83CONFIG_IRQ_FORCED_THREADING=y
84CONFIG_SPARSE_IRQ=y 84CONFIG_SPARSE_IRQ=y
85CONFIG_CLOCKSOURCE_WATCHDOG=y 85CONFIG_CLOCKSOURCE_WATCHDOG=y
86CONFIG_ALWAYS_USE_PERSISTENT_CLOCK=y
87CONFIG_KTIME_SCALAR=y 86CONFIG_KTIME_SCALAR=y
88CONFIG_GENERIC_CLOCKEVENTS=y 87CONFIG_GENERIC_CLOCKEVENTS=y
89CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 88CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
@@ -4735,6 +4734,9 @@ CONFIG_INFINIBAND_ISER=m
4735# CONFIG_EDAC is not set 4734# CONFIG_EDAC is not set
4736CONFIG_RTC_LIB=y 4735CONFIG_RTC_LIB=y
4737CONFIG_RTC_CLASS=y 4736CONFIG_RTC_CLASS=y
4737CONFIG_RTC_HCTOSYS=y
4738CONFIG_RTC_SYSTOHC=y
4739CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
4738# CONFIG_RTC_DEBUG is not set 4740# CONFIG_RTC_DEBUG is not set
4739 4741
4740# 4742#
diff --git a/main/linux-grsec/kernelconfig.x86_64 b/main/linux-grsec/kernelconfig.x86_64
index ba51aaf127..561ab2088a 100644
--- a/main/linux-grsec/kernelconfig.x86_64
+++ b/main/linux-grsec/kernelconfig.x86_64
@@ -1,6 +1,6 @@
1# 1#
2# Automatically generated file; DO NOT EDIT. 2# Automatically generated file; DO NOT EDIT.
3# Linux/x86 3.9.2 Kernel Configuration 3# Linux/x86 3.9.3 Kernel Configuration
4# 4#
5CONFIG_64BIT=y 5CONFIG_64BIT=y
6CONFIG_X86_64=y 6CONFIG_X86_64=y
@@ -85,7 +85,6 @@ CONFIG_IRQ_FORCED_THREADING=y
85CONFIG_SPARSE_IRQ=y 85CONFIG_SPARSE_IRQ=y
86CONFIG_CLOCKSOURCE_WATCHDOG=y 86CONFIG_CLOCKSOURCE_WATCHDOG=y
87CONFIG_ARCH_CLOCKSOURCE_DATA=y 87CONFIG_ARCH_CLOCKSOURCE_DATA=y
88CONFIG_ALWAYS_USE_PERSISTENT_CLOCK=y
89CONFIG_GENERIC_TIME_VSYSCALL=y 88CONFIG_GENERIC_TIME_VSYSCALL=y
90CONFIG_GENERIC_CLOCKEVENTS=y 89CONFIG_GENERIC_CLOCKEVENTS=y
91CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 90CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
@@ -4650,6 +4649,9 @@ CONFIG_INFINIBAND_ISER=m
4650# CONFIG_EDAC is not set 4649# CONFIG_EDAC is not set
4651CONFIG_RTC_LIB=y 4650CONFIG_RTC_LIB=y
4652CONFIG_RTC_CLASS=y 4651CONFIG_RTC_CLASS=y
4652CONFIG_RTC_HCTOSYS=y
4653CONFIG_RTC_SYSTOHC=y
4654CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
4653# CONFIG_RTC_DEBUG is not set 4655# CONFIG_RTC_DEBUG is not set
4654 4656
4655# 4657#
diff --git a/main/linux-grsec/v2-net-next-arp-flush-arp-cache-on-IFF_NOARP-change.patch b/main/linux-grsec/v2-net-next-arp-flush-arp-cache-on-IFF_NOARP-change.patch
new file mode 100644
index 0000000000..0fdafec17e
--- /dev/null
+++ b/main/linux-grsec/v2-net-next-arp-flush-arp-cache-on-IFF_NOARP-change.patch
@@ -0,0 +1,89 @@
1From patchwork Tue May 21 10:23:44 2013
2Content-Type: text/plain; charset="utf-8"
3MIME-Version: 1.0
4Content-Transfer-Encoding: 8bit
5Subject: [v2,net-next] arp: flush arp cache on IFF_NOARP change
6Date: Tue, 21 May 2013 00:23:44 -0000
7From: =?utf-8?q?Timo_Ter=C3=A4s?= <timo.teras@iki.fi>
8X-Patchwork-Id: 245256
9Message-Id: <1369131824-6318-1-git-send-email-timo.teras@iki.fi>
10To: David Miller <davem@davemloft.net>, netdev@vger.kernel.org, kaber@trash.net
11Cc: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
12
13IFF_NOARP affects what kind of neighbor entries are created
14(nud NOARP or nud INCOMPLETE). If the flag changes, flush the arp
15cache to refresh all entries.
16
17Signed-off-by: Timo Teräs <timo.teras@iki.fi>
18
19---
20> This patch makes no sense at all.
21>
22> The state bit in ->priv_flags is a boolean stating whether the
23> notified should do something or not.
24>
25> But you're setting it to match what IFF_NOARP is.
26>
27> You should set it any time IFF_NOARP _changes_, and then clear
28> the bit when the notifier clears the neighbour entries.
29
30IFF_NOARP_CHANGED is set according to "changes = dev->flags ^ old_flags;"
31which reflect the change. But I agree that the clearing out bit was
32misplaced. This is especially true as it seems NETDEV_CHANGE can be
33notified from another place too.
34
35I've updated the if.h comment to state that the bit is valid only during
36NETDEV_CHANGE notifier. And __dev_notify_flags is updated to always clear
37the bit after notifiers are done.
38
39 include/uapi/linux/if.h | 2 ++
40 net/core/dev.c | 6 +++++-
41 net/ipv4/arp.c | 4 ++++
42 3 files changed, 11 insertions(+), 1 deletion(-)
43
44diff --git a/include/uapi/linux/if.h b/include/uapi/linux/if.h
45index 1ec407b..1be8b35 100644
46--- a/include/uapi/linux/if.h
47+++ b/include/uapi/linux/if.h
48@@ -83,6 +83,8 @@
49 #define IFF_SUPP_NOFCS 0x80000 /* device supports sending custom FCS */
50 #define IFF_LIVE_ADDR_CHANGE 0x100000 /* device supports hardware address
51 * change when it's running */
52+#define IFF_NOARP_CHANGED 0x200000 /* Set during NETDEV_CHANGE notifier
53+ * if IFF_NOARP has changed */
54
55
56 #define IF_GET_IFACE 0x0001 /* for querying only */
57diff --git a/net/core/dev.c b/net/core/dev.c
58index 18e9730..ce30761 100644
59--- a/net/core/dev.c
60+++ b/net/core/dev.c
61@@ -4699,8 +4699,12 @@ void __dev_notify_flags(struct net_device *dev, unsigned int old_flags)
62 }
63
64 if (dev->flags & IFF_UP &&
65- (changes & ~(IFF_UP | IFF_PROMISC | IFF_ALLMULTI | IFF_VOLATILE)))
66+ (changes & ~(IFF_UP | IFF_PROMISC | IFF_ALLMULTI | IFF_VOLATILE))) {
67+ if (changes & IFF_NOARP)
68+ dev->priv_flags |= IFF_NOARP_CHANGED;
69 call_netdevice_notifiers(NETDEV_CHANGE, dev);
70+ dev->priv_flags &= ~IFF_NOARP_CHANGED;
71+ }
72 }
73
74 /**
75diff --git a/net/ipv4/arp.c b/net/ipv4/arp.c
76index 247ec19..375b2f2 100644
77--- a/net/ipv4/arp.c
78+++ b/net/ipv4/arp.c
79@@ -1241,6 +1241,10 @@ static int arp_netdev_event(struct notifier_block *this, unsigned long event,
80 neigh_changeaddr(&arp_tbl, dev);
81 rt_cache_flush(dev_net(dev));
82 break;
83+ case NETDEV_CHANGE:
84+ if (dev->priv_flags & IFF_NOARP_CHANGED)
85+ neigh_changeaddr(&arp_tbl, dev);
86+ break;
87 default:
88 break;
89 }