diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2013-05-22 13:17:53 +0000 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2013-06-03 13:59:27 +0000 |
commit | f29d6acbeed4be719f013fc9b0900f7c0c4388af (patch) | |
tree | 33cd1aeb7b762385eac03a0084fde96898a23840 | |
parent | 473d40bbb88f98d74f074adb5a1a05e5c168aac2 (diff) | |
download | alpine_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.patch | 29 | ||||
-rw-r--r-- | main/linux-grsec/APKBUILD | 38 | ||||
-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.x86 | 6 | ||||
-rw-r--r-- | main/linux-grsec/kernelconfig.x86_64 | 6 | ||||
-rw-r--r-- | main/linux-grsec/v2-net-next-arp-flush-arp-cache-on-IFF_NOARP-change.patch | 89 |
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 @@ | |||
1 | From 8a0e3ea4924059a7268446177d6869e3399adbb2 Mon Sep 17 00:00:00 2001 | ||
2 | From: Timo Teras <timo.teras@iki.fi> | ||
3 | Date: Mon, 12 Apr 2010 13:46:45 +0000 | ||
4 | Subject: [PATCH 04/18] arp: flush arp cache on device change | ||
5 | |||
6 | If IFF_NOARP is changed, we must flush the arp cache. | ||
7 | |||
8 | Signed-off-by: Timo Teras <timo.teras@iki.fi> | ||
9 | --- | ||
10 | net/ipv4/arp.c | 3 +++ | ||
11 | 1 files changed, 3 insertions(+), 0 deletions(-) | ||
12 | |||
13 | diff --git a/net/ipv4/arp.c b/net/ipv4/arp.c | ||
14 | index 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 | -- | ||
28 | 1.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 |
4 | pkgname=linux-${_flavor} | 4 | pkgname=linux-${_flavor} |
5 | pkgver=3.9.2 | 5 | pkgver=3.9.3 |
6 | case $pkgver in | 6 | case $pkgver in |
7 | *.*.*) _kernver=${pkgver%.*};; | 7 | *.*.*) _kernver=${pkgver%.*};; |
8 | *.*) _kernver=${pkgver};; | 8 | *.*) _kernver=${pkgver};; |
9 | esac | 9 | esac |
10 | pkgrel=2 | 10 | pkgrel=0 |
11 | pkgdesc="Linux kernel with grsecurity" | 11 | pkgdesc="Linux kernel with grsecurity" |
12 | url=http://grsecurity.net | 12 | url=http://grsecurity.net |
13 | depends="mkinitfs linux-firmware" | 13 | depends="mkinitfs linux-firmware" |
@@ -17,9 +17,9 @@ _config=${config:-kernelconfig.${CARCH}} | |||
17 | install= | 17 | install= |
18 | source="http://ftp.kernel.org/pub/linux/kernel/v3.x/linux-$_kernver.tar.xz | 18 | source="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 | ||
147 | md5sums="4348c9b6b2eb3144d601e87c19d5d909 linux-3.9.tar.xz | 147 | md5sums="4348c9b6b2eb3144d601e87c19d5d909 linux-3.9.tar.xz |
148 | adeb2556568f79e827e7a0ce4c483605 patch-3.9.2.xz | 148 | 71b31e29e0cb437a27017c781293b6f4 patch-3.9.3.xz |
149 | 089d16b7c5306ed0d42e344ce1b59615 grsecurity-2.9.1-3.9.2-201305162327.patch | 149 | e881cf0db639205660f237ceea58f708 grsecurity-2.9.1-3.9.3-201305201732.patch |
150 | 776adeeb5272093574f8836c5037dd7d 0004-arp-flush-arp-cache-on-device-change.patch | 150 | 699e92148cc9a55b6fc4d7d81e476717 v2-net-next-arp-flush-arp-cache-on-IFF_NOARP-change.patch |
151 | 83db7136608d8101ae130728539dc376 leds-leds-gpio-reserve-gpio-before-using-it.patch | 151 | 83db7136608d8101ae130728539dc376 leds-leds-gpio-reserve-gpio-before-using-it.patch |
152 | ae4d8b3e917cdea5330ec52048080de3 kernelconfig.x86 | 152 | fd6fd35309c0e8c1f05cb725df958f22 kernelconfig.x86 |
153 | 839de81fedd3a6294d42da70a3fb99e0 kernelconfig.x86_64" | 153 | fd61ff58d25155997c0d6f73e7ca7a7d kernelconfig.x86_64" |
154 | sha256sums="60bc3e64ee5dc778de2cd7cd7640abf518a4c9d4f31b8ed624e16fad53f54541 linux-3.9.tar.xz | 154 | sha256sums="60bc3e64ee5dc778de2cd7cd7640abf518a4c9d4f31b8ed624e16fad53f54541 linux-3.9.tar.xz |
155 | 069126b2b70acbc27fada2bf67235238fd90ff103267b1bb392244a301321996 patch-3.9.2.xz | 155 | 248ab5f9a42b72e5c3d961520a5fff609a625bbf570ad45d7ae97009525b94d7 patch-3.9.3.xz |
156 | 3de1633f26c46a4c93af8497d889a5acc37db54adaa4f3677cb5c5c027787254 grsecurity-2.9.1-3.9.2-201305162327.patch | 156 | c1b4310085ff07200131dc841a0a22f84a7f166c3b25464e27dd2694584bc72c grsecurity-2.9.1-3.9.3-201305201732.patch |
157 | e2d2d1503f53572c6a2e21da729a13a430dd01f510405ffb3a33b29208860bde 0004-arp-flush-arp-cache-on-device-change.patch | 157 | 8e2f41605937eecd47cefe62daefd372dbf1e63cf956ab3ced3213ac2b508ee3 v2-net-next-arp-flush-arp-cache-on-IFF_NOARP-change.patch |
158 | 13676bc5610a8d03e788ac76734babd1338b023bb39559452ee54652b046e6f4 leds-leds-gpio-reserve-gpio-before-using-it.patch | 158 | 13676bc5610a8d03e788ac76734babd1338b023bb39559452ee54652b046e6f4 leds-leds-gpio-reserve-gpio-before-using-it.patch |
159 | 513a5f387e7453169a7f41c1ba42da3229e47edd58b5ac18da31f04905c5c0bf kernelconfig.x86 | 159 | b44c6671b344ddae1da94e6c051a0e708af8609c1f2ff40d962301ed5023c83a kernelconfig.x86 |
160 | e842cf49decc9a8f5c0f2e4b431382f521fe41db22f2c2e6a1c077b2b158b3ab kernelconfig.x86_64" | 160 | 7a6700a6db89f8c2c7f8cce7d77f4ddb3fcad889d72c709c2833af795ef1bc79 kernelconfig.x86_64" |
161 | sha512sums="77fa521f42380409f8ab400c26f7b00e225cb075ef40834bb263325cfdcc3e65aef8511ec2fc2b50bbf4f50e226fb5ab07d7a479aaf09162adbbf318325d0790 linux-3.9.tar.xz | 161 | sha512sums="77fa521f42380409f8ab400c26f7b00e225cb075ef40834bb263325cfdcc3e65aef8511ec2fc2b50bbf4f50e226fb5ab07d7a479aaf09162adbbf318325d0790 linux-3.9.tar.xz |
162 | 439e32edab86f8b1bd49bc4c9325e11520d78b8182ae88aebf46a4be319c4633d6d896e2ecd3fe0363d9247f5af88a989aafca9103b8e1544262bd191440dae9 patch-3.9.2.xz | 162 | ae2bca3f0d274281d7ae88bb835d129a036350dfd3e9e941d7a0175194b2cbccffb5f8b5a20e5a7498cb5a097c6376d8cb1032ea048051b08ec0dd05309c09eb patch-3.9.3.xz |
163 | 652847ba23a7761d6fe90a04deb68f28cdde65d71bd9a53355075ba8410279250d36169359fa759208fcf45b5bfc1cc9505f072e93dd47eae5c464652760aa97 grsecurity-2.9.1-3.9.2-201305162327.patch | 163 | d6aa751d1fac8c4d758f9479bc6b08f70d8725c6c74b63446def044f42260a8beb1f540ae4473ec57f42538513d3ccb42de41c8cc721b9b85d8cfbaef7ab85d5 grsecurity-2.9.1-3.9.3-201305201732.patch |
164 | b6fdf376009f0f0f3fa194cb11be97343e4d394cf5d3547de6cfca8ad619c5bd3f60719331fd8cfadc47f09d22be8376ba5f871b46b24887ea73fe47e233a54e 0004-arp-flush-arp-cache-on-device-change.patch | 164 | 772c847cd74b12ed22266042c0902d8a3cf09c897b6e1c01148dfcd2f01aed331f292e82c34bb718090dc0898e1ef364196272bff885a32378f7fbc8bfc06a9b v2-net-next-arp-flush-arp-cache-on-IFF_NOARP-change.patch |
165 | 10d2cf4fb308d1bc8cb5b9df3f9a6d7b9cef453244673bcbe66bd9b64af410a498e203d4dfa51f53461362ad981736eadc46537616b2c0514f57f4d8864c830d leds-leds-gpio-reserve-gpio-before-using-it.patch | 165 | 10d2cf4fb308d1bc8cb5b9df3f9a6d7b9cef453244673bcbe66bd9b64af410a498e203d4dfa51f53461362ad981736eadc46537616b2c0514f57f4d8864c830d leds-leds-gpio-reserve-gpio-before-using-it.patch |
166 | 57dc79b8b08a81993e1050197886c7f91a609843ed2f919eabd6769860fb1383e87a433def8f6b544a8c6382180822b863869ef76183c4d9df421465fe13c220 kernelconfig.x86 | 166 | 2516c47145f53cfa5624a9a8839b3590fd16a980aa4c8c48af4db025960d33abe855a5c698ee701a0d3704a96a9a3f93cd6c3cc8c9b8fdf73f230c15ad2f7611 kernelconfig.x86 |
167 | 0ce361b417821fc3795c4d8e4b3a8eeecbdc7df66261f744c55d288186f9a7d2a367f80bac2ff29c0d5c54f133cbbd74f3ec5e0147b0e7c04462627724dd3572 kernelconfig.x86_64" | 167 | 0a3739e5e1fe29fcce8c686d8ac223316467a2efaaa18cb3d1abf6c7a66dc86be12c26755dff1aef6d0f5a028ce4f6dfc5664ab42b484046949f401f3b9198f9 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] |
261 | diff --git a/Makefile b/Makefile | 261 | diff --git a/Makefile b/Makefile |
262 | index 3e71511..8ff502e 100644 | 262 | index 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 |
1511 | diff --git a/arch/arm/include/asm/cmpxchg.h b/arch/arm/include/asm/cmpxchg.h | 1511 | diff --git a/arch/arm/include/asm/cmpxchg.h b/arch/arm/include/asm/cmpxchg.h |
1512 | index 7eb18c1..e38b6d2 100644 | 1512 | index 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 |
10242 | diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig | 10242 | diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig |
10243 | index 15b5cef..173babc 100644 | 10243 | index 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 | /* |
14304 | diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h | 14304 | diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h |
14305 | index 1e67223..9183226 100644 | 14305 | index 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: |
23898 | diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c | 23928 | diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c |
23899 | index a9c9d3e..9fe214f 100644 | 23929 | index 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(); |
23980 | diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c | 24010 | diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c |
23981 | index 6667042..b47ece4 100644 | 24011 | index 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); |
31105 | diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c | 31135 | diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c |
31106 | index 2363127..ec09d96 100644 | 31136 | index 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) |
33321 | diff --git a/drivers/block/drbd/drbd_main.c b/drivers/block/drbd/drbd_main.c | 33351 | diff --git a/drivers/block/drbd/drbd_main.c b/drivers/block/drbd/drbd_main.c |
33322 | index e98da67..1181716b 100644 | 33352 | index 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); |
33354 | diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c | 33384 | diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c |
33355 | index a9eccfc..f5efe87 100644 | 33385 | index 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); |
35988 | diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c | 36018 | diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c |
35989 | index aa341d1..ef07090 100644 | 36019 | index 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' : |
37706 | diff --git a/drivers/md/dm-stripe.c b/drivers/md/dm-stripe.c | 37736 | diff --git a/drivers/md/dm-stripe.c b/drivers/md/dm-stripe.c |
37707 | index d8837d3..1f7c341 100644 | 37737 | index 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 | } |
37748 | diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c | 37778 | diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c |
37749 | index e50dad0..d9575e2 100644 | 37779 | index 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; |
39577 | diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c | 39607 | diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c |
39578 | index 73abbc1..f25db7c 100644 | 39608 | index 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 | ||
39686 | diff --git a/drivers/net/tun.c b/drivers/net/tun.c | 39716 | diff --git a/drivers/net/tun.c b/drivers/net/tun.c |
39687 | index 729ed53..9453f99 100644 | 39717 | index 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); |
42168 | diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c | 42198 | diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c |
42169 | index 7992635..609faf8 100644 | 42199 | index 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); |
42470 | diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c | 42500 | diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c |
42471 | index 3243ea7..4f19a6e 100644 | 42501 | index 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 */ |
50652 | diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c | 50682 | diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c |
50653 | index cf3025c..cac6011 100644 | 50683 | index 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(); |
52634 | diff --git a/fs/namei.c b/fs/namei.c | 52664 | diff --git a/fs/namei.c b/fs/namei.c |
52635 | index 57ae9c8..b018eba 100644 | 52665 | index 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) |
53317 | diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c | 53347 | diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c |
53318 | index 8288b08..4a140d4 100644 | 53348 | index 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); |
69131 | diff --git a/include/linux/kref.h b/include/linux/kref.h | 69161 | diff --git a/include/linux/kref.h b/include/linux/kref.h |
69132 | index 4972e6e..de4d19b 100644 | 69162 | index 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); |
72201 | diff --git a/include/net/sock.h b/include/net/sock.h | 72231 | diff --git a/include/net/sock.h b/include/net/sock.h |
72202 | index 14f6e9d..7cd56d0 100644 | 72232 | index 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 |
72232 | diff --git a/include/net/tcp.h b/include/net/tcp.h | 72262 | diff --git a/include/net/tcp.h b/include/net/tcp.h |
72233 | index cf0694d..52a6881 100644 | 72263 | index 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; |
73414 | diff --git a/ipc/shm.c b/ipc/shm.c | 73444 | diff --git a/ipc/shm.c b/ipc/shm.c |
73415 | index 34af1fe..85fc1aa 100644 | 73445 | index 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)); |
73561 | diff --git a/kernel/auditsc.c b/kernel/auditsc.c | 73591 | diff --git a/kernel/auditsc.c b/kernel/auditsc.c |
73562 | index a371f85..da826c1 100644 | 73592 | index 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 |
74910 | diff --git a/kernel/kmod.c b/kernel/kmod.c | 74940 | diff --git a/kernel/kmod.c b/kernel/kmod.c |
74911 | index 56dd349..336e1dc 100644 | 74941 | index 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; |
78441 | diff --git a/kernel/timer.c b/kernel/timer.c | 78471 | diff --git a/kernel/timer.c b/kernel/timer.c |
78442 | index dbf7a78..e2148f0 100644 | 78472 | index 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); |
81044 | diff --git a/mm/mmap.c b/mm/mmap.c | 81074 | diff --git a/mm/mmap.c b/mm/mmap.c |
81045 | index e17fc06..72fc5fd 100644 | 81075 | index 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; |
85017 | diff --git a/net/core/dev.c b/net/core/dev.c | 85047 | diff --git a/net/core/dev.c b/net/core/dev.c |
85018 | index b24ab0e9..1c424bc 100644 | 85048 | index 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) |
85354 | diff --git a/net/core/sock.c b/net/core/sock.c | 85384 | diff --git a/net/core/sock.c b/net/core/sock.c |
85355 | index b261a79..8fe17ab 100644 | 85385 | index 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 | ||
86484 | diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c | 86514 | diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c |
86485 | index b83a49c..6c562a7 100644 | 86515 | index 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), |
86754 | diff --git a/net/ipv6/ip6_gre.c b/net/ipv6/ip6_gre.c | 86784 | diff --git a/net/ipv6/ip6_gre.c b/net/ipv6/ip6_gre.c |
86755 | index e4efffe..791fe2f 100644 | 86785 | index 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; |
87110 | diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c | 87124 | diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c |
87111 | index 46a5be8..415688d 100644 | 87125 | index 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 | ||
87169 | diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c | 87183 | diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c |
87170 | index d8e5e85..5a447f4 100644 | 87184 | index 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) |
87230 | diff --git a/net/ipv6/xfrm6_policy.c b/net/ipv6/xfrm6_policy.c | 87244 | diff --git a/net/ipv6/xfrm6_policy.c b/net/ipv6/xfrm6_policy.c |
87231 | index 4ef7bdb..9e97017 100644 | 87245 | index 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 | } |
88197 | diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c | 88211 | diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c |
88198 | index 1d6793d..056b191 100644 | 88212 | index 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 | +} |
102591 | diff --git a/tools/gcc/structleak_plugin.c b/tools/gcc/structleak_plugin.c | 102605 | diff --git a/tools/gcc/structleak_plugin.c b/tools/gcc/structleak_plugin.c |
102592 | new file mode 100644 | 102606 | new file mode 100644 |
102593 | index 0000000..b07fe22 | 102607 | index 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 |
6 | CONFIG_X86_32=y | 6 | CONFIG_X86_32=y |
@@ -83,7 +83,6 @@ CONFIG_IRQ_DOMAIN=y | |||
83 | CONFIG_IRQ_FORCED_THREADING=y | 83 | CONFIG_IRQ_FORCED_THREADING=y |
84 | CONFIG_SPARSE_IRQ=y | 84 | CONFIG_SPARSE_IRQ=y |
85 | CONFIG_CLOCKSOURCE_WATCHDOG=y | 85 | CONFIG_CLOCKSOURCE_WATCHDOG=y |
86 | CONFIG_ALWAYS_USE_PERSISTENT_CLOCK=y | ||
87 | CONFIG_KTIME_SCALAR=y | 86 | CONFIG_KTIME_SCALAR=y |
88 | CONFIG_GENERIC_CLOCKEVENTS=y | 87 | CONFIG_GENERIC_CLOCKEVENTS=y |
89 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | 88 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y |
@@ -4735,6 +4734,9 @@ CONFIG_INFINIBAND_ISER=m | |||
4735 | # CONFIG_EDAC is not set | 4734 | # CONFIG_EDAC is not set |
4736 | CONFIG_RTC_LIB=y | 4735 | CONFIG_RTC_LIB=y |
4737 | CONFIG_RTC_CLASS=y | 4736 | CONFIG_RTC_CLASS=y |
4737 | CONFIG_RTC_HCTOSYS=y | ||
4738 | CONFIG_RTC_SYSTOHC=y | ||
4739 | CONFIG_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 | # |
5 | CONFIG_64BIT=y | 5 | CONFIG_64BIT=y |
6 | CONFIG_X86_64=y | 6 | CONFIG_X86_64=y |
@@ -85,7 +85,6 @@ CONFIG_IRQ_FORCED_THREADING=y | |||
85 | CONFIG_SPARSE_IRQ=y | 85 | CONFIG_SPARSE_IRQ=y |
86 | CONFIG_CLOCKSOURCE_WATCHDOG=y | 86 | CONFIG_CLOCKSOURCE_WATCHDOG=y |
87 | CONFIG_ARCH_CLOCKSOURCE_DATA=y | 87 | CONFIG_ARCH_CLOCKSOURCE_DATA=y |
88 | CONFIG_ALWAYS_USE_PERSISTENT_CLOCK=y | ||
89 | CONFIG_GENERIC_TIME_VSYSCALL=y | 88 | CONFIG_GENERIC_TIME_VSYSCALL=y |
90 | CONFIG_GENERIC_CLOCKEVENTS=y | 89 | CONFIG_GENERIC_CLOCKEVENTS=y |
91 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | 90 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y |
@@ -4650,6 +4649,9 @@ CONFIG_INFINIBAND_ISER=m | |||
4650 | # CONFIG_EDAC is not set | 4649 | # CONFIG_EDAC is not set |
4651 | CONFIG_RTC_LIB=y | 4650 | CONFIG_RTC_LIB=y |
4652 | CONFIG_RTC_CLASS=y | 4651 | CONFIG_RTC_CLASS=y |
4652 | CONFIG_RTC_HCTOSYS=y | ||
4653 | CONFIG_RTC_SYSTOHC=y | ||
4654 | CONFIG_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 @@ | |||
1 | From patchwork Tue May 21 10:23:44 2013 | ||
2 | Content-Type: text/plain; charset="utf-8" | ||
3 | MIME-Version: 1.0 | ||
4 | Content-Transfer-Encoding: 8bit | ||
5 | Subject: [v2,net-next] arp: flush arp cache on IFF_NOARP change | ||
6 | Date: Tue, 21 May 2013 00:23:44 -0000 | ||
7 | From: =?utf-8?q?Timo_Ter=C3=A4s?= <timo.teras@iki.fi> | ||
8 | X-Patchwork-Id: 245256 | ||
9 | Message-Id: <1369131824-6318-1-git-send-email-timo.teras@iki.fi> | ||
10 | To: David Miller <davem@davemloft.net>, netdev@vger.kernel.org, kaber@trash.net | ||
11 | Cc: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi> | ||
12 | |||
13 | IFF_NOARP affects what kind of neighbor entries are created | ||
14 | (nud NOARP or nud INCOMPLETE). If the flag changes, flush the arp | ||
15 | cache to refresh all entries. | ||
16 | |||
17 | Signed-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 | |||
30 | IFF_NOARP_CHANGED is set according to "changes = dev->flags ^ old_flags;" | ||
31 | which reflect the change. But I agree that the clearing out bit was | ||
32 | misplaced. This is especially true as it seems NETDEV_CHANGE can be | ||
33 | notified from another place too. | ||
34 | |||
35 | I've updated the if.h comment to state that the bit is valid only during | ||
36 | NETDEV_CHANGE notifier. And __dev_notify_flags is updated to always clear | ||
37 | the 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 | |||
44 | diff --git a/include/uapi/linux/if.h b/include/uapi/linux/if.h | ||
45 | index 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 */ | ||
57 | diff --git a/net/core/dev.c b/net/core/dev.c | ||
58 | index 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 | /** | ||
75 | diff --git a/net/ipv4/arp.c b/net/ipv4/arp.c | ||
76 | index 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 | } | ||