diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2013-08-05 10:28:35 +0200 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2013-08-07 06:56:15 +0000 |
commit | e528c1f10f6151dec8c1d84f8bfe1f736e5426fa (patch) | |
tree | bae72bd6e3c40c25a97e7634a88d8733203610a2 | |
parent | 02a182fc23f4769efbaa25d93b76d4ddc944f22b (diff) | |
download | alpine_aports-e528c1f10f6151dec8c1d84f8bfe1f736e5426fa.tar.bz2 alpine_aports-e528c1f10f6151dec8c1d84f8bfe1f736e5426fa.tar.xz alpine_aports-e528c1f10f6151dec8c1d84f8bfe1f736e5426fa.zip |
main/linux-grsec: upgrade to 3.10.4
(cherry picked from commit 46a1495797a89ae9d3f767848f334ae0b2c633ce)
-rw-r--r-- | main/linux-grsec/APKBUILD | 36 | ||||
-rw-r--r-- | main/linux-grsec/grsecurity-2.9.1-3.10.4-201308030031.patch (renamed from main/linux-grsec/grsecurity-2.9.1-3.9.11-unofficial-2.patch) | 13060 | ||||
-rw-r--r-- | main/linux-grsec/kernelconfig.x86 | 199 | ||||
-rw-r--r-- | main/linux-grsec/kernelconfig.x86_64 | 206 |
4 files changed, 6465 insertions, 7036 deletions
diff --git a/main/linux-grsec/APKBUILD b/main/linux-grsec/APKBUILD index fd772985c0..15a08e86df 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.11 | 5 | pkgver=3.10.4 |
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,7 +17,7 @@ _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.11-unofficial-2.patch | 20 | grsecurity-2.9.1-3.10.4-201308030031.patch |
21 | 21 | ||
22 | 0001-net-inform-NETDEV_CHANGE-callbacks-which-flags-were-.patch | 22 | 0001-net-inform-NETDEV_CHANGE-callbacks-which-flags-were-.patch |
23 | 0002-arp-flush-arp-cache-on-IFF_NOARP-change.patch | 23 | 0002-arp-flush-arp-cache-on-IFF_NOARP-change.patch |
@@ -148,36 +148,36 @@ dev() { | |||
148 | "$subpkgdir"/lib/modules/${_abi_release}/build | 148 | "$subpkgdir"/lib/modules/${_abi_release}/build |
149 | } | 149 | } |
150 | 150 | ||
151 | md5sums="4348c9b6b2eb3144d601e87c19d5d909 linux-3.9.tar.xz | 151 | md5sums="4f25cd5bec5f8d5a7d935b3f2ccb8481 linux-3.10.tar.xz |
152 | 552146435b7ecc414bf8e3cd8bb6ac4a patch-3.9.11.xz | 152 | 2e46ab138670b3171b52b849568cb42f patch-3.10.4.xz |
153 | 808e4e5dd176692d62ccfbf5988a88fa grsecurity-2.9.1-3.9.11-unofficial-2.patch | 153 | 62bb9b34f874425600ada2817ddf23b6 grsecurity-2.9.1-3.10.4-201308030031.patch |
154 | a16f11b12381efb3bec79b9bfb329836 0001-net-inform-NETDEV_CHANGE-callbacks-which-flags-were-.patch | 154 | a16f11b12381efb3bec79b9bfb329836 0001-net-inform-NETDEV_CHANGE-callbacks-which-flags-were-.patch |
155 | 656ae7b10dd2f18dbfa1011041d08d60 0002-arp-flush-arp-cache-on-IFF_NOARP-change.patch | 155 | 656ae7b10dd2f18dbfa1011041d08d60 0002-arp-flush-arp-cache-on-IFF_NOARP-change.patch |
156 | aa454ffb96428586447775c21449e284 0003-ipv4-properly-refresh-rtable-entries-on-pmtu-redirec.patch | 156 | aa454ffb96428586447775c21449e284 0003-ipv4-properly-refresh-rtable-entries-on-pmtu-redirec.patch |
157 | 2a12a3717052e878c0cd42aa935bfcf4 0004-ipv4-rate-limit-updating-of-next-hop-exceptions-with.patch | 157 | 2a12a3717052e878c0cd42aa935bfcf4 0004-ipv4-rate-limit-updating-of-next-hop-exceptions-with.patch |
158 | 6ce5fed63aad3f1a1ff1b9ba7b741822 0005-ipv4-use-separate-genid-for-next-hop-exceptions.patch | 158 | 6ce5fed63aad3f1a1ff1b9ba7b741822 0005-ipv4-use-separate-genid-for-next-hop-exceptions.patch |
159 | 1a5800a2122ba0cc0d06733cb3bb8b8f 0006-ipv4-use-next-hop-exceptions-also-for-input-routes.patch | 159 | 1a5800a2122ba0cc0d06733cb3bb8b8f 0006-ipv4-use-next-hop-exceptions-also-for-input-routes.patch |
160 | d89089b3c7eb94dd9f65cf8a357fc36d kernelconfig.x86 | 160 | 1a111abaeb381bf47d9e979a85fba2ee kernelconfig.x86 |
161 | eb147f09fef5996a488c247790205cd6 kernelconfig.x86_64" | 161 | 1312267644d0c729bd7c7af979b29c8d kernelconfig.x86_64" |
162 | sha256sums="60bc3e64ee5dc778de2cd7cd7640abf518a4c9d4f31b8ed624e16fad53f54541 linux-3.9.tar.xz | 162 | sha256sums="df27fa92d27a9c410bfe6c4a89f141638500d7eadcca5cce578954efc2ad3544 linux-3.10.tar.xz |
163 | 29be11d16ef152ae1858d567cbf45f0da0193adf364826f5e3fa8b2fcd839682 patch-3.9.11.xz | 163 | d8ef39930663cc916e57e06b308a1654f2a03903a3c5a0d3a5503c6d58e2b2b8 patch-3.10.4.xz |
164 | bd672d212020b5a7a00b3e0f6df39efbba6d0a1cbad88e0bf65cbaf8f8045204 grsecurity-2.9.1-3.9.11-unofficial-2.patch | 164 | 3acf56b31b85298c56cee026fd01f3b0643c44743bd61476db85f15d9209c72b grsecurity-2.9.1-3.10.4-201308030031.patch |
165 | 6af3757ac36a6cd3cda7b0a71b08143726383b19261294a569ad7f4042c72df3 0001-net-inform-NETDEV_CHANGE-callbacks-which-flags-were-.patch | 165 | 6af3757ac36a6cd3cda7b0a71b08143726383b19261294a569ad7f4042c72df3 0001-net-inform-NETDEV_CHANGE-callbacks-which-flags-were-.patch |
166 | dc8e82108615657f1fb9d641efd42255a5761c06edde1b00a41ae0d314d548f0 0002-arp-flush-arp-cache-on-IFF_NOARP-change.patch | 166 | dc8e82108615657f1fb9d641efd42255a5761c06edde1b00a41ae0d314d548f0 0002-arp-flush-arp-cache-on-IFF_NOARP-change.patch |
167 | 0985caa0f3ee8ed0959aeaa4214f5f8057ae8e61d50dcae39194912d31e14892 0003-ipv4-properly-refresh-rtable-entries-on-pmtu-redirec.patch | 167 | 0985caa0f3ee8ed0959aeaa4214f5f8057ae8e61d50dcae39194912d31e14892 0003-ipv4-properly-refresh-rtable-entries-on-pmtu-redirec.patch |
168 | 260fd1807838b68305a96992bf7d3302a2a8ef3a3b08fe079ba9a07e6422f736 0004-ipv4-rate-limit-updating-of-next-hop-exceptions-with.patch | 168 | 260fd1807838b68305a96992bf7d3302a2a8ef3a3b08fe079ba9a07e6422f736 0004-ipv4-rate-limit-updating-of-next-hop-exceptions-with.patch |
169 | ae32bb72afa170e6c3788c564b342763aba5945afacc1e2ebfc096adf50d77a3 0005-ipv4-use-separate-genid-for-next-hop-exceptions.patch | 169 | ae32bb72afa170e6c3788c564b342763aba5945afacc1e2ebfc096adf50d77a3 0005-ipv4-use-separate-genid-for-next-hop-exceptions.patch |
170 | fc613ac466610b866b721c41836fd5bfb2d4b75bceb67972dc6369d7f62ff47e 0006-ipv4-use-next-hop-exceptions-also-for-input-routes.patch | 170 | fc613ac466610b866b721c41836fd5bfb2d4b75bceb67972dc6369d7f62ff47e 0006-ipv4-use-next-hop-exceptions-also-for-input-routes.patch |
171 | de3c17420664ae4e52826c6e602aade0deeae94f72253f85b3e48771491ed5d6 kernelconfig.x86 | 171 | 1ef74cf3703dd26201970a2d9f043fed7e03ad2540a20f810cec8add93f81ccd kernelconfig.x86 |
172 | e1cce320f207cc2ba72b9d154c7060c8cbed52c664319dfd21f24e8956d0bf3e kernelconfig.x86_64" | 172 | 1c4b4a74d982fdc8d3baddcdaa674ae4b4a3390daba024fca55e85604af74507 kernelconfig.x86_64" |
173 | sha512sums="77fa521f42380409f8ab400c26f7b00e225cb075ef40834bb263325cfdcc3e65aef8511ec2fc2b50bbf4f50e226fb5ab07d7a479aaf09162adbbf318325d0790 linux-3.9.tar.xz | 173 | sha512sums="5fb109fcbd59bf3dffc911b853894f0a84afa75151368f783a1252c5ff60c7a1504de216c0012be446df983e2dea400ad8eeed3ce04f24dc61d0ef76c174dc35 linux-3.10.tar.xz |
174 | c3a0be102d816ae06d7dfdd2738915fc2114cb9bb488b03b34e4f52f2367dcba4d8cb8ba203687bf694c2dcad36d70bb9d3121ac739a28e2c7fb2c44f08a9c71 patch-3.9.11.xz | 174 | 382adb3faf7feda6c5dd8f401c0ad0a2dbbc62e33d5f85d4181a56567abdec3be5b5279d35829a3a9a53a54949ea10de3f31c4256eba1f132fda79197af46819 patch-3.10.4.xz |
175 | 730e24dffc70250945d873358a2fbe19f1c9249befeaba6e53ce8c1b4ebb19583d51d6a437b6d9a39b705f48001f4a645f92560ef6b4db88ee8fbf9f17bafd41 grsecurity-2.9.1-3.9.11-unofficial-2.patch | 175 | e39d89f2c5e20e642488234a7a0967f8f46239e267eb73a1ab2375b4cf58528ebb239e4a47a102b674e0deb7b0aa713a1d037f97a47a77f87dcca8217ffe00ad grsecurity-2.9.1-3.10.4-201308030031.patch |
176 | 81e78593288e8b0fd2c03ea9fc1450323887707f087e911f172450a122bc9b591ee83394836789730d951aeec13d0b75a64e1c05f04364abf8f80d883ddc4a02 0001-net-inform-NETDEV_CHANGE-callbacks-which-flags-were-.patch | 176 | 81e78593288e8b0fd2c03ea9fc1450323887707f087e911f172450a122bc9b591ee83394836789730d951aeec13d0b75a64e1c05f04364abf8f80d883ddc4a02 0001-net-inform-NETDEV_CHANGE-callbacks-which-flags-were-.patch |
177 | 51ecb15b669f6a82940a13a38939116e003bf5dfd24496771c8279e907b72adcc63d607f0340a2940d757e12ddadb7d45c7af78ae311d284935a6296dbcac00c 0002-arp-flush-arp-cache-on-IFF_NOARP-change.patch | 177 | 51ecb15b669f6a82940a13a38939116e003bf5dfd24496771c8279e907b72adcc63d607f0340a2940d757e12ddadb7d45c7af78ae311d284935a6296dbcac00c 0002-arp-flush-arp-cache-on-IFF_NOARP-change.patch |
178 | 57d0a8bd35d19cf657ded58efe24517d2252aec6984040713ba173a34edb5887ececaa2985076bc6a149eaa57639fd98a042c1c2d226ed4ad8dd5ed0e230717e 0003-ipv4-properly-refresh-rtable-entries-on-pmtu-redirec.patch | 178 | 57d0a8bd35d19cf657ded58efe24517d2252aec6984040713ba173a34edb5887ececaa2985076bc6a149eaa57639fd98a042c1c2d226ed4ad8dd5ed0e230717e 0003-ipv4-properly-refresh-rtable-entries-on-pmtu-redirec.patch |
179 | d2f578ad1d6e1fe52b55863e5bf338ae8201b828a498ec3e42e549c55295d3d1c6c3adfa9e226d711e3486628ed56ab996484e219d79ac4b0c0ec684ebd380aa 0004-ipv4-rate-limit-updating-of-next-hop-exceptions-with.patch | 179 | d2f578ad1d6e1fe52b55863e5bf338ae8201b828a498ec3e42e549c55295d3d1c6c3adfa9e226d711e3486628ed56ab996484e219d79ac4b0c0ec684ebd380aa 0004-ipv4-rate-limit-updating-of-next-hop-exceptions-with.patch |
180 | 28a33e644bf2faf99c8dd6dbccfe14e140dfdd8824a8fb2d58aa7deb9e572f130d92b6b35ee181084050d82166bdf2e498a451a2a538a67b7ab84204405d2d87 0005-ipv4-use-separate-genid-for-next-hop-exceptions.patch | 180 | 28a33e644bf2faf99c8dd6dbccfe14e140dfdd8824a8fb2d58aa7deb9e572f130d92b6b35ee181084050d82166bdf2e498a451a2a538a67b7ab84204405d2d87 0005-ipv4-use-separate-genid-for-next-hop-exceptions.patch |
181 | 249140374c19a5599876268ff5b3cda2e136681aee103b4a9fff5d7d346f8e3295a907fb43db0701b8a9fece64c299ad2abac0434259cce6631307ce84090205 0006-ipv4-use-next-hop-exceptions-also-for-input-routes.patch | 181 | 249140374c19a5599876268ff5b3cda2e136681aee103b4a9fff5d7d346f8e3295a907fb43db0701b8a9fece64c299ad2abac0434259cce6631307ce84090205 0006-ipv4-use-next-hop-exceptions-also-for-input-routes.patch |
182 | c51ac429c3e811976318a7ca2a4f7fc48bcf290e885ceeb09a1a56ee32c37b673f6e789789cf36876747bd54e4dc55d340ad888ba0eb8e7f45f60e8ef7ea67b4 kernelconfig.x86 | 182 | 5d2057cb27362175d85cbe1b79586a3daaa16c1b36baa0bf433b594a85284a02460b28e90ee9dc3f5a8c973a7e8316e0be83099a40a039913e6f1c7036570196 kernelconfig.x86 |
183 | 584e778f96a05388051b05eb6f1c20377bc8aad72d0cd678323af7aaaab85ecc992244fe6bf3f27ab88131903490fd8af3c3fb56062490dd90dca1ba91d4da21 kernelconfig.x86_64" | 183 | 89b5fe8a4930ef19deb00e18bb8a4ae4c87105bcf29b7e15c677f7e6a4d2618bb5c378da485aed573b5a2342e0cdff4d0ceae60f2b89cde603988de9f3c36929 kernelconfig.x86_64" |
diff --git a/main/linux-grsec/grsecurity-2.9.1-3.9.11-unofficial-2.patch b/main/linux-grsec/grsecurity-2.9.1-3.10.4-201308030031.patch index cb0d943df0..9cf4026039 100644 --- a/main/linux-grsec/grsecurity-2.9.1-3.9.11-unofficial-2.patch +++ b/main/linux-grsec/grsecurity-2.9.1-3.10.4-201308030031.patch | |||
@@ -229,10 +229,10 @@ index b89a739..79768fb 100644 | |||
229 | +zconf.lex.c | 229 | +zconf.lex.c |
230 | zoffset.h | 230 | zoffset.h |
231 | diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt | 231 | diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt |
232 | index 8ccbf27..afffeb4 100644 | 232 | index 2fe6e76..df58221 100644 |
233 | --- a/Documentation/kernel-parameters.txt | 233 | --- a/Documentation/kernel-parameters.txt |
234 | +++ b/Documentation/kernel-parameters.txt | 234 | +++ b/Documentation/kernel-parameters.txt |
235 | @@ -948,6 +948,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | 235 | @@ -976,6 +976,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted. |
236 | Format: <unsigned int> such that (rxsize & ~0x1fffc0) == 0. | 236 | Format: <unsigned int> such that (rxsize & ~0x1fffc0) == 0. |
237 | Default: 1024 | 237 | Default: 1024 |
238 | 238 | ||
@@ -243,7 +243,7 @@ index 8ccbf27..afffeb4 100644 | |||
243 | hashdist= [KNL,NUMA] Large hashes allocated during boot | 243 | hashdist= [KNL,NUMA] Large hashes allocated during boot |
244 | are distributed across NUMA nodes. Defaults on | 244 | are distributed across NUMA nodes. Defaults on |
245 | for 64-bit NUMA, off otherwise. | 245 | for 64-bit NUMA, off otherwise. |
246 | @@ -2147,6 +2151,18 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | 246 | @@ -2195,6 +2199,22 @@ bytes respectively. Such letter suffixes can also be entirely omitted. |
247 | the specified number of seconds. This is to be used if | 247 | the specified number of seconds. This is to be used if |
248 | your oopses keep scrolling off the screen. | 248 | your oopses keep scrolling off the screen. |
249 | 249 | ||
@@ -252,6 +252,10 @@ index 8ccbf27..afffeb4 100644 | |||
252 | + expand down segment used by UDEREF on X86-32 or the frequent | 252 | + expand down segment used by UDEREF on X86-32 or the frequent |
253 | + page table updates on X86-64. | 253 | + page table updates on X86-64. |
254 | + | 254 | + |
255 | + pax_sanitize_slab= | ||
256 | + 0/1 to disable/enable slab object sanitization (enabled by | ||
257 | + default). | ||
258 | + | ||
255 | + pax_softmode= 0/1 to disable/enable PaX softmode on boot already. | 259 | + pax_softmode= 0/1 to disable/enable PaX softmode on boot already. |
256 | + | 260 | + |
257 | + pax_extra_latent_entropy | 261 | + pax_extra_latent_entropy |
@@ -263,7 +267,7 @@ index 8ccbf27..afffeb4 100644 | |||
263 | 267 | ||
264 | pcd. [PARIDE] | 268 | pcd. [PARIDE] |
265 | diff --git a/Makefile b/Makefile | 269 | diff --git a/Makefile b/Makefile |
266 | index ad368cd..96b21c3 100644 | 270 | index b4df9b2..256e7cc 100644 |
267 | --- a/Makefile | 271 | --- a/Makefile |
268 | +++ b/Makefile | 272 | +++ b/Makefile |
269 | @@ -241,8 +241,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ | 273 | @@ -241,8 +241,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ |
@@ -364,7 +368,7 @@ index ad368cd..96b21c3 100644 | |||
364 | 368 | ||
365 | vmlinux-dirs := $(patsubst %/,%,$(filter %/, $(init-y) $(init-m) \ | 369 | vmlinux-dirs := $(patsubst %/,%,$(filter %/, $(init-y) $(init-m) \ |
366 | $(core-y) $(core-m) $(drivers-y) $(drivers-m) \ | 370 | $(core-y) $(core-m) $(drivers-y) $(drivers-m) \ |
367 | @@ -780,6 +840,8 @@ endif | 371 | @@ -782,6 +842,8 @@ endif |
368 | 372 | ||
369 | # The actual objects are generated when descending, | 373 | # The actual objects are generated when descending, |
370 | # make sure no implicit rule kicks in | 374 | # make sure no implicit rule kicks in |
@@ -373,7 +377,7 @@ index ad368cd..96b21c3 100644 | |||
373 | $(sort $(vmlinux-deps)): $(vmlinux-dirs) ; | 377 | $(sort $(vmlinux-deps)): $(vmlinux-dirs) ; |
374 | 378 | ||
375 | # Handle descending into subdirectories listed in $(vmlinux-dirs) | 379 | # Handle descending into subdirectories listed in $(vmlinux-dirs) |
376 | @@ -789,7 +851,7 @@ $(sort $(vmlinux-deps)): $(vmlinux-dirs) ; | 380 | @@ -791,7 +853,7 @@ $(sort $(vmlinux-deps)): $(vmlinux-dirs) ; |
377 | # Error messages still appears in the original language | 381 | # Error messages still appears in the original language |
378 | 382 | ||
379 | PHONY += $(vmlinux-dirs) | 383 | PHONY += $(vmlinux-dirs) |
@@ -382,7 +386,7 @@ index ad368cd..96b21c3 100644 | |||
382 | $(Q)$(MAKE) $(build)=$@ | 386 | $(Q)$(MAKE) $(build)=$@ |
383 | 387 | ||
384 | # Store (new) KERNELRELASE string in include/config/kernel.release | 388 | # Store (new) KERNELRELASE string in include/config/kernel.release |
385 | @@ -833,6 +895,7 @@ prepare0: archprepare FORCE | 389 | @@ -835,6 +897,7 @@ prepare0: archprepare FORCE |
386 | $(Q)$(MAKE) $(build)=. | 390 | $(Q)$(MAKE) $(build)=. |
387 | 391 | ||
388 | # All the preparing.. | 392 | # All the preparing.. |
@@ -390,7 +394,7 @@ index ad368cd..96b21c3 100644 | |||
390 | prepare: prepare0 | 394 | prepare: prepare0 |
391 | 395 | ||
392 | # Generate some files | 396 | # Generate some files |
393 | @@ -940,6 +1003,8 @@ all: modules | 397 | @@ -942,6 +1005,8 @@ all: modules |
394 | # using awk while concatenating to the final file. | 398 | # using awk while concatenating to the final file. |
395 | 399 | ||
396 | PHONY += modules | 400 | PHONY += modules |
@@ -399,7 +403,7 @@ index ad368cd..96b21c3 100644 | |||
399 | modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin | 403 | modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin |
400 | $(Q)$(AWK) '!x[$$0]++' $(vmlinux-dirs:%=$(objtree)/%/modules.order) > $(objtree)/modules.order | 404 | $(Q)$(AWK) '!x[$$0]++' $(vmlinux-dirs:%=$(objtree)/%/modules.order) > $(objtree)/modules.order |
401 | @$(kecho) ' Building modules, stage 2.'; | 405 | @$(kecho) ' Building modules, stage 2.'; |
402 | @@ -955,7 +1020,7 @@ modules.builtin: $(vmlinux-dirs:%=%/modules.builtin) | 406 | @@ -957,7 +1022,7 @@ modules.builtin: $(vmlinux-dirs:%=%/modules.builtin) |
403 | 407 | ||
404 | # Target to prepare building external modules | 408 | # Target to prepare building external modules |
405 | PHONY += modules_prepare | 409 | PHONY += modules_prepare |
@@ -408,7 +412,7 @@ index ad368cd..96b21c3 100644 | |||
408 | 412 | ||
409 | # Target to install modules | 413 | # Target to install modules |
410 | PHONY += modules_install | 414 | PHONY += modules_install |
411 | @@ -1021,7 +1086,7 @@ MRPROPER_FILES += .config .config.old .version .old_version $(version_h) \ | 415 | @@ -1023,7 +1088,7 @@ MRPROPER_FILES += .config .config.old .version .old_version $(version_h) \ |
412 | Module.symvers tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS \ | 416 | Module.symvers tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS \ |
413 | signing_key.priv signing_key.x509 x509.genkey \ | 417 | signing_key.priv signing_key.x509 x509.genkey \ |
414 | extra_certificates signing_key.x509.keyid \ | 418 | extra_certificates signing_key.x509.keyid \ |
@@ -417,7 +421,7 @@ index ad368cd..96b21c3 100644 | |||
417 | 421 | ||
418 | # clean - Delete most, but leave enough to build external modules | 422 | # clean - Delete most, but leave enough to build external modules |
419 | # | 423 | # |
420 | @@ -1061,6 +1126,7 @@ distclean: mrproper | 424 | @@ -1063,6 +1128,7 @@ distclean: mrproper |
421 | \( -name '*.orig' -o -name '*.rej' -o -name '*~' \ | 425 | \( -name '*.orig' -o -name '*.rej' -o -name '*~' \ |
422 | -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \ | 426 | -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \ |
423 | -o -name '.*.rej' \ | 427 | -o -name '.*.rej' \ |
@@ -425,7 +429,7 @@ index ad368cd..96b21c3 100644 | |||
425 | -o -name '*%' -o -name '.*.cmd' -o -name 'core' \) \ | 429 | -o -name '*%' -o -name '.*.cmd' -o -name 'core' \) \ |
426 | -type f -print | xargs rm -f | 430 | -type f -print | xargs rm -f |
427 | 431 | ||
428 | @@ -1221,6 +1287,8 @@ PHONY += $(module-dirs) modules | 432 | @@ -1223,6 +1289,8 @@ PHONY += $(module-dirs) modules |
429 | $(module-dirs): crmodverdir $(objtree)/Module.symvers | 433 | $(module-dirs): crmodverdir $(objtree)/Module.symvers |
430 | $(Q)$(MAKE) $(build)=$(patsubst _module_%,%,$@) | 434 | $(Q)$(MAKE) $(build)=$(patsubst _module_%,%,$@) |
431 | 435 | ||
@@ -434,7 +438,7 @@ index ad368cd..96b21c3 100644 | |||
434 | modules: $(module-dirs) | 438 | modules: $(module-dirs) |
435 | @$(kecho) ' Building modules, stage 2.'; | 439 | @$(kecho) ' Building modules, stage 2.'; |
436 | $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost | 440 | $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost |
437 | @@ -1357,17 +1425,21 @@ else | 441 | @@ -1359,17 +1427,21 @@ else |
438 | target-dir = $(if $(KBUILD_EXTMOD),$(dir $<),$(dir $@)) | 442 | target-dir = $(if $(KBUILD_EXTMOD),$(dir $<),$(dir $@)) |
439 | endif | 443 | endif |
440 | 444 | ||
@@ -460,7 +464,7 @@ index ad368cd..96b21c3 100644 | |||
460 | $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) | 464 | $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) |
461 | %.symtypes: %.c prepare scripts FORCE | 465 | %.symtypes: %.c prepare scripts FORCE |
462 | $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) | 466 | $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) |
463 | @@ -1377,11 +1449,15 @@ endif | 467 | @@ -1379,11 +1451,15 @@ endif |
464 | $(cmd_crmodverdir) | 468 | $(cmd_crmodverdir) |
465 | $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ | 469 | $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ |
466 | $(build)=$(build-dir) | 470 | $(build)=$(build-dir) |
@@ -811,10 +815,10 @@ index 0c4132d..88f0d53 100644 | |||
811 | /* Allow reads even for write-only mappings */ | 815 | /* Allow reads even for write-only mappings */ |
812 | if (!(vma->vm_flags & (VM_READ | VM_WRITE))) | 816 | if (!(vma->vm_flags & (VM_READ | VM_WRITE))) |
813 | diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig | 817 | diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig |
814 | index 70cd012..71b82cd 100644 | 818 | index 136f263..f471277 100644 |
815 | --- a/arch/arm/Kconfig | 819 | --- a/arch/arm/Kconfig |
816 | +++ b/arch/arm/Kconfig | 820 | +++ b/arch/arm/Kconfig |
817 | @@ -1860,7 +1860,7 @@ config ALIGNMENT_TRAP | 821 | @@ -1766,7 +1766,7 @@ config ALIGNMENT_TRAP |
818 | 822 | ||
819 | config UACCESS_WITH_MEMCPY | 823 | config UACCESS_WITH_MEMCPY |
820 | bool "Use kernel mem{cpy,set}() for {copy_to,clear}_user()" | 824 | bool "Use kernel mem{cpy,set}() for {copy_to,clear}_user()" |
@@ -824,7 +828,7 @@ index 70cd012..71b82cd 100644 | |||
824 | help | 828 | help |
825 | Implement faster copy_to_user and clear_user methods for CPU | 829 | Implement faster copy_to_user and clear_user methods for CPU |
826 | diff --git a/arch/arm/include/asm/atomic.h b/arch/arm/include/asm/atomic.h | 830 | diff --git a/arch/arm/include/asm/atomic.h b/arch/arm/include/asm/atomic.h |
827 | index c79f61f..9ac0642 100644 | 831 | index da1c77d..2ee6056 100644 |
828 | --- a/arch/arm/include/asm/atomic.h | 832 | --- a/arch/arm/include/asm/atomic.h |
829 | +++ b/arch/arm/include/asm/atomic.h | 833 | +++ b/arch/arm/include/asm/atomic.h |
830 | @@ -17,17 +17,35 @@ | 834 | @@ -17,17 +17,35 @@ |
@@ -1129,8 +1133,44 @@ index c79f61f..9ac0642 100644 | |||
1129 | + | 1133 | + |
1130 | #define ATOMIC64_INIT(i) { (i) } | 1134 | #define ATOMIC64_INIT(i) { (i) } |
1131 | 1135 | ||
1136 | #ifdef CONFIG_ARM_LPAE | ||
1137 | @@ -257,6 +452,19 @@ static inline u64 atomic64_read(const atomic64_t *v) | ||
1138 | return result; | ||
1139 | } | ||
1140 | |||
1141 | +static inline u64 atomic64_read_unchecked(const atomic64_unchecked_t *v) | ||
1142 | +{ | ||
1143 | + u64 result; | ||
1144 | + | ||
1145 | + __asm__ __volatile__("@ atomic64_read_unchecked\n" | ||
1146 | +" ldrd %0, %H0, [%1]" | ||
1147 | + : "=&r" (result) | ||
1148 | + : "r" (&v->counter), "Qo" (v->counter) | ||
1149 | + ); | ||
1150 | + | ||
1151 | + return result; | ||
1152 | +} | ||
1153 | + | ||
1154 | static inline void atomic64_set(atomic64_t *v, u64 i) | ||
1155 | { | ||
1156 | __asm__ __volatile__("@ atomic64_set\n" | ||
1157 | @@ -265,6 +473,15 @@ static inline void atomic64_set(atomic64_t *v, u64 i) | ||
1158 | : "r" (&v->counter), "r" (i) | ||
1159 | ); | ||
1160 | } | ||
1161 | + | ||
1162 | +static inline void atomic64_set_unchecked(atomic64_unchecked_t *v, u64 i) | ||
1163 | +{ | ||
1164 | + __asm__ __volatile__("@ atomic64_set_unchecked\n" | ||
1165 | +" strd %2, %H2, [%1]" | ||
1166 | + : "=Qo" (v->counter) | ||
1167 | + : "r" (&v->counter), "r" (i) | ||
1168 | + ); | ||
1169 | +} | ||
1170 | #else | ||
1132 | static inline u64 atomic64_read(const atomic64_t *v) | 1171 | static inline u64 atomic64_read(const atomic64_t *v) |
1133 | @@ -256,6 +451,19 @@ static inline u64 atomic64_read(const atomic64_t *v) | 1172 | { |
1173 | @@ -279,6 +496,19 @@ static inline u64 atomic64_read(const atomic64_t *v) | ||
1134 | return result; | 1174 | return result; |
1135 | } | 1175 | } |
1136 | 1176 | ||
@@ -1150,10 +1190,11 @@ index c79f61f..9ac0642 100644 | |||
1150 | static inline void atomic64_set(atomic64_t *v, u64 i) | 1190 | static inline void atomic64_set(atomic64_t *v, u64 i) |
1151 | { | 1191 | { |
1152 | u64 tmp; | 1192 | u64 tmp; |
1153 | @@ -270,6 +478,20 @@ static inline void atomic64_set(atomic64_t *v, u64 i) | 1193 | @@ -292,6 +522,21 @@ static inline void atomic64_set(atomic64_t *v, u64 i) |
1194 | : "r" (&v->counter), "r" (i) | ||
1154 | : "cc"); | 1195 | : "cc"); |
1155 | } | 1196 | } |
1156 | 1197 | + | |
1157 | +static inline void atomic64_set_unchecked(atomic64_unchecked_t *v, u64 i) | 1198 | +static inline void atomic64_set_unchecked(atomic64_unchecked_t *v, u64 i) |
1158 | +{ | 1199 | +{ |
1159 | + u64 tmp; | 1200 | + u64 tmp; |
@@ -1168,10 +1209,10 @@ index c79f61f..9ac0642 100644 | |||
1168 | + : "cc"); | 1209 | + : "cc"); |
1169 | +} | 1210 | +} |
1170 | + | 1211 | + |
1212 | #endif | ||
1213 | |||
1171 | static inline void atomic64_add(u64 i, atomic64_t *v) | 1214 | static inline void atomic64_add(u64 i, atomic64_t *v) |
1172 | { | 1215 | @@ -302,6 +547,36 @@ static inline void atomic64_add(u64 i, atomic64_t *v) |
1173 | u64 result; | ||
1174 | @@ -278,6 +500,36 @@ static inline void atomic64_add(u64 i, atomic64_t *v) | ||
1175 | __asm__ __volatile__("@ atomic64_add\n" | 1216 | __asm__ __volatile__("@ atomic64_add\n" |
1176 | "1: ldrexd %0, %H0, [%3]\n" | 1217 | "1: ldrexd %0, %H0, [%3]\n" |
1177 | " adds %0, %0, %4\n" | 1218 | " adds %0, %0, %4\n" |
@@ -1208,15 +1249,17 @@ index c79f61f..9ac0642 100644 | |||
1208 | " adc %H0, %H0, %H4\n" | 1249 | " adc %H0, %H0, %H4\n" |
1209 | " strexd %1, %0, %H0, [%3]\n" | 1250 | " strexd %1, %0, %H0, [%3]\n" |
1210 | " teq %1, #0\n" | 1251 | " teq %1, #0\n" |
1211 | @@ -289,12 +541,49 @@ static inline void atomic64_add(u64 i, atomic64_t *v) | 1252 | @@ -313,12 +588,49 @@ static inline void atomic64_add(u64 i, atomic64_t *v) |
1212 | 1253 | ||
1213 | static inline u64 atomic64_add_return(u64 i, atomic64_t *v) | 1254 | static inline u64 atomic64_add_return(u64 i, atomic64_t *v) |
1214 | { | 1255 | { |
1256 | - u64 result; | ||
1257 | - unsigned long tmp; | ||
1215 | + u64 result, tmp; | 1258 | + u64 result, tmp; |
1216 | + | 1259 | |
1217 | + smp_mb(); | 1260 | smp_mb(); |
1218 | + | 1261 | |
1219 | + __asm__ __volatile__("@ atomic64_add_return\n" | 1262 | __asm__ __volatile__("@ atomic64_add_return\n" |
1220 | +"1: ldrexd %1, %H1, [%3]\n" | 1263 | +"1: ldrexd %1, %H1, [%3]\n" |
1221 | +" adds %0, %1, %4\n" | 1264 | +" adds %0, %1, %4\n" |
1222 | +" adcs %H0, %H1, %H4\n" | 1265 | +" adcs %H0, %H1, %H4\n" |
@@ -1249,21 +1292,19 @@ index c79f61f..9ac0642 100644 | |||
1249 | + | 1292 | + |
1250 | +static inline u64 atomic64_add_return_unchecked(u64 i, atomic64_unchecked_t *v) | 1293 | +static inline u64 atomic64_add_return_unchecked(u64 i, atomic64_unchecked_t *v) |
1251 | +{ | 1294 | +{ |
1252 | u64 result; | 1295 | + u64 result; |
1253 | unsigned long tmp; | 1296 | + unsigned long tmp; |
1254 | 1297 | + | |
1255 | smp_mb(); | 1298 | + smp_mb(); |
1256 | 1299 | + | |
1257 | - __asm__ __volatile__("@ atomic64_add_return\n" | ||
1258 | + __asm__ __volatile__("@ atomic64_add_return_unchecked\n" | 1300 | + __asm__ __volatile__("@ atomic64_add_return_unchecked\n" |
1259 | "1: ldrexd %0, %H0, [%3]\n" | 1301 | "1: ldrexd %0, %H0, [%3]\n" |
1260 | " adds %0, %0, %4\n" | 1302 | " adds %0, %0, %4\n" |
1261 | " adc %H0, %H0, %H4\n" | 1303 | " adc %H0, %H0, %H4\n" |
1262 | @@ -318,23 +607,34 @@ static inline void atomic64_sub(u64 i, atomic64_t *v) | 1304 | @@ -342,6 +654,36 @@ static inline void atomic64_sub(u64 i, atomic64_t *v) |
1263 | __asm__ __volatile__("@ atomic64_sub\n" | 1305 | __asm__ __volatile__("@ atomic64_sub\n" |
1264 | "1: ldrexd %0, %H0, [%3]\n" | 1306 | "1: ldrexd %0, %H0, [%3]\n" |
1265 | " subs %0, %0, %4\n" | 1307 | " subs %0, %0, %4\n" |
1266 | -" sbc %H0, %H0, %H4\n" | ||
1267 | +" sbcs %H0, %H0, %H4\n" | 1308 | +" sbcs %H0, %H0, %H4\n" |
1268 | + | 1309 | + |
1269 | +#ifdef CONFIG_PAX_REFCOUNT | 1310 | +#ifdef CONFIG_PAX_REFCOUNT |
@@ -1272,46 +1313,45 @@ index c79f61f..9ac0642 100644 | |||
1272 | +"3:\n" | 1313 | +"3:\n" |
1273 | +#endif | 1314 | +#endif |
1274 | + | 1315 | + |
1275 | " strexd %1, %0, %H0, [%3]\n" | 1316 | +" strexd %1, %0, %H0, [%3]\n" |
1276 | " teq %1, #0\n" | 1317 | +" teq %1, #0\n" |
1277 | " bne 1b" | 1318 | +" bne 1b" |
1278 | + | 1319 | + |
1279 | +#ifdef CONFIG_PAX_REFCOUNT | 1320 | +#ifdef CONFIG_PAX_REFCOUNT |
1280 | +"\n4:\n" | 1321 | +"\n4:\n" |
1281 | + _ASM_EXTABLE(2b, 4b) | 1322 | + _ASM_EXTABLE(2b, 4b) |
1282 | +#endif | 1323 | +#endif |
1283 | + | 1324 | + |
1284 | : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter) | 1325 | + : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter) |
1285 | : "r" (&v->counter), "r" (i) | 1326 | + : "r" (&v->counter), "r" (i) |
1286 | : "cc"); | 1327 | + : "cc"); |
1287 | } | ||
1288 | |||
1289 | -static inline u64 atomic64_sub_return(u64 i, atomic64_t *v) | ||
1290 | +static inline void atomic64_sub_unchecked(u64 i, atomic64_unchecked_t *v) | ||
1291 | { | ||
1292 | u64 result; | ||
1293 | unsigned long tmp; | ||
1294 | |||
1295 | - smp_mb(); | ||
1296 | - | ||
1297 | - __asm__ __volatile__("@ atomic64_sub_return\n" | ||
1298 | + __asm__ __volatile__("@ atomic64_sub_unchecked\n" | ||
1299 | "1: ldrexd %0, %H0, [%3]\n" | ||
1300 | " subs %0, %0, %4\n" | ||
1301 | " sbc %H0, %H0, %H4\n" | ||
1302 | @@ -344,6 +644,39 @@ static inline u64 atomic64_sub_return(u64 i, atomic64_t *v) | ||
1303 | : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter) | ||
1304 | : "r" (&v->counter), "r" (i) | ||
1305 | : "cc"); | ||
1306 | +} | 1328 | +} |
1307 | + | 1329 | + |
1308 | +static inline u64 atomic64_sub_return(u64 i, atomic64_t *v) | 1330 | +static inline void atomic64_sub_unchecked(u64 i, atomic64_unchecked_t *v) |
1309 | +{ | 1331 | +{ |
1310 | + u64 result, tmp; | 1332 | + u64 result; |
1311 | + | 1333 | + unsigned long tmp; |
1312 | + smp_mb(); | ||
1313 | + | 1334 | + |
1314 | + __asm__ __volatile__("@ atomic64_sub_return\n" | 1335 | + __asm__ __volatile__("@ atomic64_sub_unchecked\n" |
1336 | +"1: ldrexd %0, %H0, [%3]\n" | ||
1337 | +" subs %0, %0, %4\n" | ||
1338 | " sbc %H0, %H0, %H4\n" | ||
1339 | " strexd %1, %0, %H0, [%3]\n" | ||
1340 | " teq %1, #0\n" | ||
1341 | @@ -353,18 +695,32 @@ static inline void atomic64_sub(u64 i, atomic64_t *v) | ||
1342 | |||
1343 | static inline u64 atomic64_sub_return(u64 i, atomic64_t *v) | ||
1344 | { | ||
1345 | - u64 result; | ||
1346 | - unsigned long tmp; | ||
1347 | + u64 result, tmp; | ||
1348 | |||
1349 | smp_mb(); | ||
1350 | |||
1351 | __asm__ __volatile__("@ atomic64_sub_return\n" | ||
1352 | -"1: ldrexd %0, %H0, [%3]\n" | ||
1353 | -" subs %0, %0, %4\n" | ||
1354 | -" sbc %H0, %H0, %H4\n" | ||
1315 | +"1: ldrexd %1, %H1, [%3]\n" | 1355 | +"1: ldrexd %1, %H1, [%3]\n" |
1316 | +" subs %0, %1, %4\n" | 1356 | +" subs %0, %1, %4\n" |
1317 | +" sbcs %H0, %H1, %H4\n" | 1357 | +" sbcs %H0, %H1, %H4\n" |
@@ -1324,22 +1364,19 @@ index c79f61f..9ac0642 100644 | |||
1324 | +"3:\n" | 1364 | +"3:\n" |
1325 | +#endif | 1365 | +#endif |
1326 | + | 1366 | + |
1327 | +" strexd %1, %0, %H0, [%3]\n" | 1367 | " strexd %1, %0, %H0, [%3]\n" |
1328 | +" teq %1, #0\n" | 1368 | " teq %1, #0\n" |
1329 | +" bne 1b" | 1369 | " bne 1b" |
1330 | + | 1370 | + |
1331 | +#ifdef CONFIG_PAX_REFCOUNT | 1371 | +#ifdef CONFIG_PAX_REFCOUNT |
1332 | +"\n4:\n" | 1372 | +"\n4:\n" |
1333 | + _ASM_EXTABLE(2b, 4b) | 1373 | + _ASM_EXTABLE(2b, 4b) |
1334 | +#endif | 1374 | +#endif |
1335 | + | 1375 | + |
1336 | + : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter) | 1376 | : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter) |
1337 | + : "r" (&v->counter), "r" (i) | 1377 | : "r" (&v->counter), "r" (i) |
1338 | + : "cc"); | 1378 | : "cc"); |
1339 | 1379 | @@ -398,6 +754,30 @@ static inline u64 atomic64_cmpxchg(atomic64_t *ptr, u64 old, u64 new) | |
1340 | smp_mb(); | ||
1341 | |||
1342 | @@ -374,6 +707,30 @@ static inline u64 atomic64_cmpxchg(atomic64_t *ptr, u64 old, u64 new) | ||
1343 | return oldval; | 1380 | return oldval; |
1344 | } | 1381 | } |
1345 | 1382 | ||
@@ -1370,7 +1407,7 @@ index c79f61f..9ac0642 100644 | |||
1370 | static inline u64 atomic64_xchg(atomic64_t *ptr, u64 new) | 1407 | static inline u64 atomic64_xchg(atomic64_t *ptr, u64 new) |
1371 | { | 1408 | { |
1372 | u64 result; | 1409 | u64 result; |
1373 | @@ -397,21 +754,34 @@ static inline u64 atomic64_xchg(atomic64_t *ptr, u64 new) | 1410 | @@ -421,21 +801,34 @@ static inline u64 atomic64_xchg(atomic64_t *ptr, u64 new) |
1374 | 1411 | ||
1375 | static inline u64 atomic64_dec_if_positive(atomic64_t *v) | 1412 | static inline u64 atomic64_dec_if_positive(atomic64_t *v) |
1376 | { | 1413 | { |
@@ -1412,7 +1449,7 @@ index c79f61f..9ac0642 100644 | |||
1412 | : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter) | 1449 | : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter) |
1413 | : "r" (&v->counter) | 1450 | : "r" (&v->counter) |
1414 | : "cc"); | 1451 | : "cc"); |
1415 | @@ -434,13 +804,25 @@ static inline int atomic64_add_unless(atomic64_t *v, u64 a, u64 u) | 1452 | @@ -458,13 +851,25 @@ static inline int atomic64_add_unless(atomic64_t *v, u64 a, u64 u) |
1416 | " teq %0, %5\n" | 1453 | " teq %0, %5\n" |
1417 | " teqeq %H0, %H5\n" | 1454 | " teqeq %H0, %H5\n" |
1418 | " moveq %1, #0\n" | 1455 | " moveq %1, #0\n" |
@@ -1441,7 +1478,7 @@ index c79f61f..9ac0642 100644 | |||
1441 | : "=&r" (val), "+r" (ret), "=&r" (tmp), "+Qo" (v->counter) | 1478 | : "=&r" (val), "+r" (ret), "=&r" (tmp), "+Qo" (v->counter) |
1442 | : "r" (&v->counter), "r" (u), "r" (a) | 1479 | : "r" (&v->counter), "r" (u), "r" (a) |
1443 | : "cc"); | 1480 | : "cc"); |
1444 | @@ -453,10 +835,13 @@ static inline int atomic64_add_unless(atomic64_t *v, u64 a, u64 u) | 1481 | @@ -477,10 +882,13 @@ static inline int atomic64_add_unless(atomic64_t *v, u64 a, u64 u) |
1445 | 1482 | ||
1446 | #define atomic64_add_negative(a, v) (atomic64_add_return((a), (v)) < 0) | 1483 | #define atomic64_add_negative(a, v) (atomic64_add_return((a), (v)) < 0) |
1447 | #define atomic64_inc(v) atomic64_add(1LL, (v)) | 1484 | #define atomic64_inc(v) atomic64_add(1LL, (v)) |
@@ -1479,7 +1516,7 @@ index 75fe66b..ba3dee4 100644 | |||
1479 | 1516 | ||
1480 | #endif | 1517 | #endif |
1481 | diff --git a/arch/arm/include/asm/cacheflush.h b/arch/arm/include/asm/cacheflush.h | 1518 | diff --git a/arch/arm/include/asm/cacheflush.h b/arch/arm/include/asm/cacheflush.h |
1482 | index 738fcba..7a43500 100644 | 1519 | index 17d0ae8..014e350 100644 |
1483 | --- a/arch/arm/include/asm/cacheflush.h | 1520 | --- a/arch/arm/include/asm/cacheflush.h |
1484 | +++ b/arch/arm/include/asm/cacheflush.h | 1521 | +++ b/arch/arm/include/asm/cacheflush.h |
1485 | @@ -116,7 +116,7 @@ struct cpu_cache_fns { | 1522 | @@ -116,7 +116,7 @@ struct cpu_cache_fns { |
@@ -1543,15 +1580,15 @@ index 6ddbe44..b5e38b1 100644 | |||
1543 | +#define DOMAIN_KERNELCLIENT 1 | 1580 | +#define DOMAIN_KERNELCLIENT 1 |
1544 | #define DOMAIN_MANAGER 3 | 1581 | #define DOMAIN_MANAGER 3 |
1545 | +#define DOMAIN_VECTORS DOMAIN_USER | 1582 | +#define DOMAIN_VECTORS DOMAIN_USER |
1546 | +#else | 1583 | #else |
1547 | + | 1584 | + |
1548 | +#ifdef CONFIG_PAX_KERNEXEC | 1585 | +#ifdef CONFIG_PAX_KERNEXEC |
1549 | +#define DOMAIN_MANAGER 1 | ||
1550 | +#define DOMAIN_KERNEXEC 3 | ||
1551 | #else | ||
1552 | #define DOMAIN_MANAGER 1 | 1586 | #define DOMAIN_MANAGER 1 |
1553 | #endif | 1587 | +#define DOMAIN_KERNEXEC 3 |
1554 | 1588 | +#else | |
1589 | +#define DOMAIN_MANAGER 1 | ||
1590 | +#endif | ||
1591 | + | ||
1555 | +#ifdef CONFIG_PAX_MEMORY_UDEREF | 1592 | +#ifdef CONFIG_PAX_MEMORY_UDEREF |
1556 | +#define DOMAIN_USERCLIENT 0 | 1593 | +#define DOMAIN_USERCLIENT 0 |
1557 | +#define DOMAIN_UDEREF 1 | 1594 | +#define DOMAIN_UDEREF 1 |
@@ -1562,8 +1599,8 @@ index 6ddbe44..b5e38b1 100644 | |||
1562 | +#endif | 1599 | +#endif |
1563 | +#define DOMAIN_KERNELCLIENT 1 | 1600 | +#define DOMAIN_KERNELCLIENT 1 |
1564 | + | 1601 | + |
1565 | +#endif | 1602 | #endif |
1566 | + | 1603 | |
1567 | #define domain_val(dom,type) ((type) << (2*(dom))) | 1604 | #define domain_val(dom,type) ((type) << (2*(dom))) |
1568 | 1605 | ||
1569 | #ifndef __ASSEMBLY__ | 1606 | #ifndef __ASSEMBLY__ |
@@ -2063,7 +2100,7 @@ index d3a22be..3a69ad5 100644 | |||
2063 | /* | 2100 | /* |
2064 | * set platform specific SMP operations | 2101 | * set platform specific SMP operations |
2065 | diff --git a/arch/arm/include/asm/thread_info.h b/arch/arm/include/asm/thread_info.h | 2102 | diff --git a/arch/arm/include/asm/thread_info.h b/arch/arm/include/asm/thread_info.h |
2066 | index cddda1f..ff357f7 100644 | 2103 | index 1995d1a..76693a2 100644 |
2067 | --- a/arch/arm/include/asm/thread_info.h | 2104 | --- a/arch/arm/include/asm/thread_info.h |
2068 | +++ b/arch/arm/include/asm/thread_info.h | 2105 | +++ b/arch/arm/include/asm/thread_info.h |
2069 | @@ -77,9 +77,9 @@ struct thread_info { | 2106 | @@ -77,9 +77,9 @@ struct thread_info { |
@@ -2079,20 +2116,20 @@ index cddda1f..ff357f7 100644 | |||
2079 | .restart_block = { \ | 2116 | .restart_block = { \ |
2080 | .fn = do_no_restart_syscall, \ | 2117 | .fn = do_no_restart_syscall, \ |
2081 | }, \ | 2118 | }, \ |
2082 | @@ -152,6 +152,12 @@ extern int vfp_restore_user_hwstate(struct user_vfp __user *, | 2119 | @@ -152,7 +152,11 @@ extern int vfp_restore_user_hwstate(struct user_vfp __user *, |
2083 | #define TIF_SYSCALL_AUDIT 9 | 2120 | #define TIF_SYSCALL_AUDIT 9 |
2084 | #define TIF_SYSCALL_TRACEPOINT 10 | 2121 | #define TIF_SYSCALL_TRACEPOINT 10 |
2085 | #define TIF_SECCOMP 11 /* seccomp syscall filtering active */ | 2122 | #define TIF_SECCOMP 11 /* seccomp syscall filtering active */ |
2086 | + | 2123 | -#define TIF_NOHZ 12 /* in adaptive nohz mode */ |
2087 | +/* within 8 bits of TIF_SYSCALL_TRACE | 2124 | +/* within 8 bits of TIF_SYSCALL_TRACE |
2088 | + * to meet flexible second operand requirements | 2125 | + * to meet flexible second operand requirements |
2089 | + */ | 2126 | + */ |
2090 | +#define TIF_GRSEC_SETXID 12 | 2127 | +#define TIF_GRSEC_SETXID 12 |
2091 | + | 2128 | +#define TIF_NOHZ 13 /* in adaptive nohz mode */ |
2092 | #define TIF_USING_IWMMXT 17 | 2129 | #define TIF_USING_IWMMXT 17 |
2093 | #define TIF_MEMDIE 18 /* is terminating due to OOM killer */ | 2130 | #define TIF_MEMDIE 18 /* is terminating due to OOM killer */ |
2094 | #define TIF_RESTORE_SIGMASK 20 | 2131 | #define TIF_RESTORE_SIGMASK 20 |
2095 | @@ -165,10 +171,11 @@ extern int vfp_restore_user_hwstate(struct user_vfp __user *, | 2132 | @@ -166,10 +170,11 @@ extern int vfp_restore_user_hwstate(struct user_vfp __user *, |
2096 | #define _TIF_SYSCALL_TRACEPOINT (1 << TIF_SYSCALL_TRACEPOINT) | 2133 | #define _TIF_SYSCALL_TRACEPOINT (1 << TIF_SYSCALL_TRACEPOINT) |
2097 | #define _TIF_SECCOMP (1 << TIF_SECCOMP) | 2134 | #define _TIF_SECCOMP (1 << TIF_SECCOMP) |
2098 | #define _TIF_USING_IWMMXT (1 << TIF_USING_IWMMXT) | 2135 | #define _TIF_USING_IWMMXT (1 << TIF_USING_IWMMXT) |
@@ -2106,7 +2143,7 @@ index cddda1f..ff357f7 100644 | |||
2106 | /* | 2143 | /* |
2107 | * Change these and you break ASM code in entry-common.S | 2144 | * Change these and you break ASM code in entry-common.S |
2108 | diff --git a/arch/arm/include/asm/uaccess.h b/arch/arm/include/asm/uaccess.h | 2145 | diff --git a/arch/arm/include/asm/uaccess.h b/arch/arm/include/asm/uaccess.h |
2109 | index 7e1f760..510061e 100644 | 2146 | index 7e1f760..d42d7f8 100644 |
2110 | --- a/arch/arm/include/asm/uaccess.h | 2147 | --- a/arch/arm/include/asm/uaccess.h |
2111 | +++ b/arch/arm/include/asm/uaccess.h | 2148 | +++ b/arch/arm/include/asm/uaccess.h |
2112 | @@ -18,6 +18,7 @@ | 2149 | @@ -18,6 +18,7 @@ |
@@ -2131,7 +2168,7 @@ index 7e1f760..510061e 100644 | |||
2131 | +{ | 2168 | +{ |
2132 | + | 2169 | + |
2133 | +#ifdef CONFIG_PAX_MEMORY_UDEREF | 2170 | +#ifdef CONFIG_PAX_MEMORY_UDEREF |
2134 | + if (segment_eq(get_fs(), USER_DS) { | 2171 | + if (segment_eq(get_fs(), USER_DS)) { |
2135 | + BUG_ON(test_domain(DOMAIN_USER, DOMAIN_UDEREF)); | 2172 | + BUG_ON(test_domain(DOMAIN_USER, DOMAIN_UDEREF)); |
2136 | + modify_domain(DOMAIN_USER, DOMAIN_UDEREF); | 2173 | + modify_domain(DOMAIN_USER, DOMAIN_UDEREF); |
2137 | + } | 2174 | + } |
@@ -2143,7 +2180,7 @@ index 7e1f760..510061e 100644 | |||
2143 | +{ | 2180 | +{ |
2144 | + | 2181 | + |
2145 | +#ifdef CONFIG_PAX_MEMORY_UDEREF | 2182 | +#ifdef CONFIG_PAX_MEMORY_UDEREF |
2146 | + if (segment_eq(get_fs(), USER_DS) { | 2183 | + if (segment_eq(get_fs(), USER_DS)) { |
2147 | + BUG_ON(test_domain(DOMAIN_USER, DOMAIN_NOACCESS)); | 2184 | + BUG_ON(test_domain(DOMAIN_USER, DOMAIN_NOACCESS)); |
2148 | + modify_domain(DOMAIN_USER, DOMAIN_NOACCESS); | 2185 | + modify_domain(DOMAIN_USER, DOMAIN_NOACCESS); |
2149 | + } | 2186 | + } |
@@ -2326,7 +2363,7 @@ index 60d3b73..e5a0f22 100644 | |||
2326 | EXPORT_SYMBOL(__get_user_1); | 2363 | EXPORT_SYMBOL(__get_user_1); |
2327 | EXPORT_SYMBOL(__get_user_2); | 2364 | EXPORT_SYMBOL(__get_user_2); |
2328 | diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S | 2365 | diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S |
2329 | index 0f82098..fb3d3d5 100644 | 2366 | index 582b405..a78366b 100644 |
2330 | --- a/arch/arm/kernel/entry-armv.S | 2367 | --- a/arch/arm/kernel/entry-armv.S |
2331 | +++ b/arch/arm/kernel/entry-armv.S | 2368 | +++ b/arch/arm/kernel/entry-armv.S |
2332 | @@ -47,6 +47,87 @@ | 2369 | @@ -47,6 +47,87 @@ |
@@ -2458,7 +2495,7 @@ index 0f82098..fb3d3d5 100644 | |||
2458 | SPFIX( addeq r2, r2, #4 ) | 2495 | SPFIX( addeq r2, r2, #4 ) |
2459 | str r3, [sp, #-4]! @ save the "real" r0 copied | 2496 | str r3, [sp, #-4]! @ save the "real" r0 copied |
2460 | @ from the exception stack | 2497 | @ from the exception stack |
2461 | @@ -359,6 +453,9 @@ ENDPROC(__pabt_svc) | 2498 | @@ -316,6 +410,9 @@ ENDPROC(__pabt_svc) |
2462 | .macro usr_entry | 2499 | .macro usr_entry |
2463 | UNWIND(.fnstart ) | 2500 | UNWIND(.fnstart ) |
2464 | UNWIND(.cantunwind ) @ don't unwind the user space | 2501 | UNWIND(.cantunwind ) @ don't unwind the user space |
@@ -2468,7 +2505,7 @@ index 0f82098..fb3d3d5 100644 | |||
2468 | sub sp, sp, #S_FRAME_SIZE | 2505 | sub sp, sp, #S_FRAME_SIZE |
2469 | ARM( stmib sp, {r1 - r12} ) | 2506 | ARM( stmib sp, {r1 - r12} ) |
2470 | THUMB( stmia sp, {r0 - r12} ) | 2507 | THUMB( stmia sp, {r0 - r12} ) |
2471 | @@ -456,7 +553,9 @@ __und_usr: | 2508 | @@ -414,7 +511,9 @@ __und_usr: |
2472 | tst r3, #PSR_T_BIT @ Thumb mode? | 2509 | tst r3, #PSR_T_BIT @ Thumb mode? |
2473 | bne __und_usr_thumb | 2510 | bne __und_usr_thumb |
2474 | sub r4, r2, #4 @ ARM instr at LR - 4 | 2511 | sub r4, r2, #4 @ ARM instr at LR - 4 |
@@ -2478,7 +2515,7 @@ index 0f82098..fb3d3d5 100644 | |||
2478 | #ifdef CONFIG_CPU_ENDIAN_BE8 | 2515 | #ifdef CONFIG_CPU_ENDIAN_BE8 |
2479 | rev r0, r0 @ little endian instruction | 2516 | rev r0, r0 @ little endian instruction |
2480 | #endif | 2517 | #endif |
2481 | @@ -491,10 +590,14 @@ __und_usr_thumb: | 2518 | @@ -449,10 +548,14 @@ __und_usr_thumb: |
2482 | */ | 2519 | */ |
2483 | .arch armv6t2 | 2520 | .arch armv6t2 |
2484 | #endif | 2521 | #endif |
@@ -2493,7 +2530,17 @@ index 0f82098..fb3d3d5 100644 | |||
2493 | add r2, r2, #2 @ r2 is PC + 2, make it PC + 4 | 2530 | add r2, r2, #2 @ r2 is PC + 2, make it PC + 4 |
2494 | str r2, [sp, #S_PC] @ it's a 2x16bit instr, update | 2531 | str r2, [sp, #S_PC] @ it's a 2x16bit instr, update |
2495 | orr r0, r0, r5, lsl #16 | 2532 | orr r0, r0, r5, lsl #16 |
2496 | @@ -733,7 +836,7 @@ ENTRY(__switch_to) | 2533 | @@ -481,7 +584,8 @@ ENDPROC(__und_usr) |
2534 | */ | ||
2535 | .pushsection .fixup, "ax" | ||
2536 | .align 2 | ||
2537 | -4: mov pc, r9 | ||
2538 | +4: pax_close_userland | ||
2539 | + mov pc, r9 | ||
2540 | .popsection | ||
2541 | .pushsection __ex_table,"a" | ||
2542 | .long 1b, 4b | ||
2543 | @@ -690,7 +794,7 @@ ENTRY(__switch_to) | ||
2497 | THUMB( stmia ip!, {r4 - sl, fp} ) @ Store most regs on stack | 2544 | THUMB( stmia ip!, {r4 - sl, fp} ) @ Store most regs on stack |
2498 | THUMB( str sp, [ip], #4 ) | 2545 | THUMB( str sp, [ip], #4 ) |
2499 | THUMB( str lr, [ip], #4 ) | 2546 | THUMB( str lr, [ip], #4 ) |
@@ -2502,7 +2549,7 @@ index 0f82098..fb3d3d5 100644 | |||
2502 | ldr r6, [r2, #TI_CPU_DOMAIN] | 2549 | ldr r6, [r2, #TI_CPU_DOMAIN] |
2503 | #endif | 2550 | #endif |
2504 | set_tls r3, r4, r5 | 2551 | set_tls r3, r4, r5 |
2505 | @@ -742,7 +845,7 @@ ENTRY(__switch_to) | 2552 | @@ -699,7 +803,7 @@ ENTRY(__switch_to) |
2506 | ldr r8, =__stack_chk_guard | 2553 | ldr r8, =__stack_chk_guard |
2507 | ldr r7, [r7, #TSK_STACK_CANARY] | 2554 | ldr r7, [r7, #TSK_STACK_CANARY] |
2508 | #endif | 2555 | #endif |
@@ -2512,7 +2559,7 @@ index 0f82098..fb3d3d5 100644 | |||
2512 | #endif | 2559 | #endif |
2513 | mov r5, r0 | 2560 | mov r5, r0 |
2514 | diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S | 2561 | diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S |
2515 | index fefd7f9..e6f250e 100644 | 2562 | index bc5bc0a..d0998ca 100644 |
2516 | --- a/arch/arm/kernel/entry-common.S | 2563 | --- a/arch/arm/kernel/entry-common.S |
2517 | +++ b/arch/arm/kernel/entry-common.S | 2564 | +++ b/arch/arm/kernel/entry-common.S |
2518 | @@ -10,18 +10,46 @@ | 2565 | @@ -10,18 +10,46 @@ |
@@ -2565,7 +2612,7 @@ index fefd7f9..e6f250e 100644 | |||
2565 | .align 5 | 2612 | .align 5 |
2566 | /* | 2613 | /* |
2567 | * This is the fast syscall return path. We do as little as | 2614 | * This is the fast syscall return path. We do as little as |
2568 | @@ -351,6 +379,7 @@ ENDPROC(ftrace_stub) | 2615 | @@ -350,6 +378,7 @@ ENDPROC(ftrace_stub) |
2569 | 2616 | ||
2570 | .align 5 | 2617 | .align 5 |
2571 | ENTRY(vector_swi) | 2618 | ENTRY(vector_swi) |
@@ -2573,7 +2620,7 @@ index fefd7f9..e6f250e 100644 | |||
2573 | sub sp, sp, #S_FRAME_SIZE | 2620 | sub sp, sp, #S_FRAME_SIZE |
2574 | stmia sp, {r0 - r12} @ Calling r0 - r12 | 2621 | stmia sp, {r0 - r12} @ Calling r0 - r12 |
2575 | ARM( add r8, sp, #S_PC ) | 2622 | ARM( add r8, sp, #S_PC ) |
2576 | @@ -400,6 +429,12 @@ ENTRY(vector_swi) | 2623 | @@ -399,6 +428,12 @@ ENTRY(vector_swi) |
2577 | ldr scno, [lr, #-4] @ get SWI instruction | 2624 | ldr scno, [lr, #-4] @ get SWI instruction |
2578 | #endif | 2625 | #endif |
2579 | 2626 | ||
@@ -2587,10 +2634,10 @@ index fefd7f9..e6f250e 100644 | |||
2587 | ldr ip, __cr_alignment | 2634 | ldr ip, __cr_alignment |
2588 | ldr ip, [ip] | 2635 | ldr ip, [ip] |
2589 | diff --git a/arch/arm/kernel/entry-header.S b/arch/arm/kernel/entry-header.S | 2636 | diff --git a/arch/arm/kernel/entry-header.S b/arch/arm/kernel/entry-header.S |
2590 | index 9a8531e..812e287 100644 | 2637 | index 160f337..db67ee4 100644 |
2591 | --- a/arch/arm/kernel/entry-header.S | 2638 | --- a/arch/arm/kernel/entry-header.S |
2592 | +++ b/arch/arm/kernel/entry-header.S | 2639 | +++ b/arch/arm/kernel/entry-header.S |
2593 | @@ -73,9 +73,66 @@ | 2640 | @@ -73,6 +73,60 @@ |
2594 | msr cpsr_c, \rtemp @ switch back to the SVC mode | 2641 | msr cpsr_c, \rtemp @ switch back to the SVC mode |
2595 | .endm | 2642 | .endm |
2596 | 2643 | ||
@@ -2649,18 +2696,22 @@ index 9a8531e..812e287 100644 | |||
2649 | + .endm | 2696 | + .endm |
2650 | + | 2697 | + |
2651 | #ifndef CONFIG_THUMB2_KERNEL | 2698 | #ifndef CONFIG_THUMB2_KERNEL |
2652 | .macro svc_exit, rpsr | 2699 | .macro svc_exit, rpsr, irq = 0 |
2653 | msr spsr_cxsf, \rpsr | 2700 | .if \irq != 0 |
2701 | @@ -92,6 +146,9 @@ | ||
2702 | blne trace_hardirqs_off | ||
2703 | #endif | ||
2704 | .endif | ||
2654 | + | 2705 | + |
2655 | + pax_exit_kernel | 2706 | + pax_exit_kernel |
2656 | + | 2707 | + |
2708 | msr spsr_cxsf, \rpsr | ||
2657 | #if defined(CONFIG_CPU_V6) | 2709 | #if defined(CONFIG_CPU_V6) |
2658 | ldr r0, [sp] | 2710 | ldr r0, [sp] |
2659 | strex r1, r2, [sp] @ clear the exclusive monitor | 2711 | @@ -155,6 +212,9 @@ |
2660 | @@ -121,6 +178,9 @@ | 2712 | blne trace_hardirqs_off |
2661 | .endm | 2713 | #endif |
2662 | #else /* CONFIG_THUMB2_KERNEL */ | 2714 | .endif |
2663 | .macro svc_exit, rpsr | ||
2664 | + | 2715 | + |
2665 | + pax_exit_kernel | 2716 | + pax_exit_kernel |
2666 | + | 2717 | + |
@@ -2796,7 +2847,7 @@ index 1f2740e..b36e225 100644 | |||
2796 | }; | 2847 | }; |
2797 | 2848 | ||
2798 | diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c | 2849 | diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c |
2799 | index 047d3e4..7e96107 100644 | 2850 | index 6e8931c..82ec6a5 100644 |
2800 | --- a/arch/arm/kernel/process.c | 2851 | --- a/arch/arm/kernel/process.c |
2801 | +++ b/arch/arm/kernel/process.c | 2852 | +++ b/arch/arm/kernel/process.c |
2802 | @@ -28,7 +28,6 @@ | 2853 | @@ -28,7 +28,6 @@ |
@@ -2807,22 +2858,27 @@ index 047d3e4..7e96107 100644 | |||
2807 | #include <linux/hw_breakpoint.h> | 2858 | #include <linux/hw_breakpoint.h> |
2808 | #include <linux/cpuidle.h> | 2859 | #include <linux/cpuidle.h> |
2809 | #include <linux/leds.h> | 2860 | #include <linux/leds.h> |
2810 | @@ -251,9 +250,10 @@ void machine_power_off(void) | 2861 | @@ -223,6 +222,7 @@ void machine_power_off(void) |
2811 | machine_shutdown(); | 2862 | |
2812 | if (pm_power_off) | 2863 | if (pm_power_off) |
2813 | pm_power_off(); | 2864 | pm_power_off(); |
2814 | + BUG(); | 2865 | + BUG(); |
2815 | } | 2866 | } |
2816 | 2867 | ||
2868 | /* | ||
2869 | @@ -236,7 +236,7 @@ void machine_power_off(void) | ||
2870 | * executing pre-reset code, and using RAM that the primary CPU's code wishes | ||
2871 | * to use. Implementing such co-ordination would be essentially impossible. | ||
2872 | */ | ||
2817 | -void machine_restart(char *cmd) | 2873 | -void machine_restart(char *cmd) |
2818 | +__noreturn void machine_restart(char *cmd) | 2874 | +__noreturn void machine_restart(char *cmd) |
2819 | { | 2875 | { |
2820 | machine_shutdown(); | 2876 | smp_send_stop(); |
2877 | |||
2878 | @@ -258,8 +258,8 @@ void __show_regs(struct pt_regs *regs) | ||
2879 | |||
2880 | show_regs_print_info(KERN_DEFAULT); | ||
2821 | 2881 | ||
2822 | @@ -278,8 +278,8 @@ void __show_regs(struct pt_regs *regs) | ||
2823 | init_utsname()->release, | ||
2824 | (int)strcspn(init_utsname()->version, " "), | ||
2825 | init_utsname()->version); | ||
2826 | - print_symbol("PC is at %s\n", instruction_pointer(regs)); | 2882 | - print_symbol("PC is at %s\n", instruction_pointer(regs)); |
2827 | - print_symbol("LR is at %s\n", regs->ARM_lr); | 2883 | - print_symbol("LR is at %s\n", regs->ARM_lr); |
2828 | + printk("PC is at %pA\n", instruction_pointer(regs)); | 2884 | + printk("PC is at %pA\n", instruction_pointer(regs)); |
@@ -2830,7 +2886,7 @@ index 047d3e4..7e96107 100644 | |||
2830 | printk("pc : [<%08lx>] lr : [<%08lx>] psr: %08lx\n" | 2886 | printk("pc : [<%08lx>] lr : [<%08lx>] psr: %08lx\n" |
2831 | "sp : %08lx ip : %08lx fp : %08lx\n", | 2887 | "sp : %08lx ip : %08lx fp : %08lx\n", |
2832 | regs->ARM_pc, regs->ARM_lr, regs->ARM_cpsr, | 2888 | regs->ARM_pc, regs->ARM_lr, regs->ARM_cpsr, |
2833 | @@ -447,12 +447,6 @@ unsigned long get_wchan(struct task_struct *p) | 2889 | @@ -426,12 +426,6 @@ unsigned long get_wchan(struct task_struct *p) |
2834 | return 0; | 2890 | return 0; |
2835 | } | 2891 | } |
2836 | 2892 | ||
@@ -2843,14 +2899,17 @@ index 047d3e4..7e96107 100644 | |||
2843 | #ifdef CONFIG_MMU | 2899 | #ifdef CONFIG_MMU |
2844 | /* | 2900 | /* |
2845 | * The vectors page is always readable from user space for the | 2901 | * The vectors page is always readable from user space for the |
2846 | @@ -465,9 +459,8 @@ static int __init gate_vma_init(void) | 2902 | @@ -441,12 +435,12 @@ unsigned long arch_randomize_brk(struct mm_struct *mm) |
2847 | { | 2903 | static struct vm_area_struct gate_vma = { |
2848 | gate_vma.vm_start = 0xffff0000; | 2904 | .vm_start = 0xffff0000, |
2849 | gate_vma.vm_end = 0xffff0000 + PAGE_SIZE; | 2905 | .vm_end = 0xffff0000 + PAGE_SIZE, |
2850 | - gate_vma.vm_page_prot = PAGE_READONLY_EXEC; | 2906 | - .vm_flags = VM_READ | VM_EXEC | VM_MAYREAD | VM_MAYEXEC, |
2851 | - gate_vma.vm_flags = VM_READ | VM_EXEC | | 2907 | + .vm_flags = VM_NONE, |
2852 | - VM_MAYREAD | VM_MAYEXEC; | 2908 | }; |
2853 | + gate_vma.vm_flags = VM_NONE; | 2909 | |
2910 | static int __init gate_vma_init(void) | ||
2911 | { | ||
2912 | - gate_vma.vm_page_prot = PAGE_READONLY_EXEC; | ||
2854 | + gate_vma.vm_page_prot = vm_get_page_prot(gate_vma.vm_flags); | 2913 | + gate_vma.vm_page_prot = vm_get_page_prot(gate_vma.vm_flags); |
2855 | return 0; | 2914 | return 0; |
2856 | } | 2915 | } |
@@ -2893,10 +2952,10 @@ index 03deeff..741ce88 100644 | |||
2893 | if (secure_computing(scno) == -1) | 2952 | if (secure_computing(scno) == -1) |
2894 | return -1; | 2953 | return -1; |
2895 | diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c | 2954 | diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c |
2896 | index 234e339..81264a1 100644 | 2955 | index b4b1d39..efdc9be 100644 |
2897 | --- a/arch/arm/kernel/setup.c | 2956 | --- a/arch/arm/kernel/setup.c |
2898 | +++ b/arch/arm/kernel/setup.c | 2957 | +++ b/arch/arm/kernel/setup.c |
2899 | @@ -96,21 +96,23 @@ EXPORT_SYMBOL(system_serial_high); | 2958 | @@ -97,21 +97,23 @@ EXPORT_SYMBOL(system_serial_high); |
2900 | unsigned int elf_hwcap __read_mostly; | 2959 | unsigned int elf_hwcap __read_mostly; |
2901 | EXPORT_SYMBOL(elf_hwcap); | 2960 | EXPORT_SYMBOL(elf_hwcap); |
2902 | 2961 | ||
@@ -2925,7 +2984,7 @@ index 234e339..81264a1 100644 | |||
2925 | EXPORT_SYMBOL(outer_cache); | 2984 | EXPORT_SYMBOL(outer_cache); |
2926 | #endif | 2985 | #endif |
2927 | 2986 | ||
2928 | @@ -235,9 +237,13 @@ static int __get_cpu_architecture(void) | 2987 | @@ -236,9 +238,13 @@ static int __get_cpu_architecture(void) |
2929 | asm("mrc p15, 0, %0, c0, c1, 4" | 2988 | asm("mrc p15, 0, %0, c0, c1, 4" |
2930 | : "=r" (mmfr0)); | 2989 | : "=r" (mmfr0)); |
2931 | if ((mmfr0 & 0x0000000f) >= 0x00000003 || | 2990 | if ((mmfr0 & 0x0000000f) >= 0x00000003 || |
@@ -2941,7 +3000,7 @@ index 234e339..81264a1 100644 | |||
2941 | (mmfr0 & 0x000000f0) == 0x00000020) | 3000 | (mmfr0 & 0x000000f0) == 0x00000020) |
2942 | cpu_arch = CPU_ARCH_ARMv6; | 3001 | cpu_arch = CPU_ARCH_ARMv6; |
2943 | else | 3002 | else |
2944 | @@ -478,7 +484,7 @@ static void __init setup_processor(void) | 3003 | @@ -479,7 +485,7 @@ static void __init setup_processor(void) |
2945 | __cpu_architecture = __get_cpu_architecture(); | 3004 | __cpu_architecture = __get_cpu_architecture(); |
2946 | 3005 | ||
2947 | #ifdef MULTI_CPU | 3006 | #ifdef MULTI_CPU |
@@ -2971,22 +3030,21 @@ index 296786b..a8d4dd5 100644 | |||
2971 | - */ | 3030 | - */ |
2972 | - flush_icache_range((unsigned long)rc, | 3031 | - flush_icache_range((unsigned long)rc, |
2973 | - (unsigned long)(rc + 2)); | 3032 | - (unsigned long)(rc + 2)); |
2974 | - | ||
2975 | - retcode = ((unsigned long)rc) + thumb; | ||
2976 | - } | ||
2977 | + /* | 3033 | + /* |
2978 | + * Ensure that the instruction cache sees | 3034 | + * Ensure that the instruction cache sees |
2979 | + * the return code written onto the stack. | 3035 | + * the return code written onto the stack. |
2980 | + */ | 3036 | + */ |
2981 | + flush_icache_range((unsigned long)rc, | 3037 | + flush_icache_range((unsigned long)rc, |
2982 | + (unsigned long)(rc + 2)); | 3038 | + (unsigned long)(rc + 2)); |
2983 | + | 3039 | |
3040 | - retcode = ((unsigned long)rc) + thumb; | ||
3041 | - } | ||
2984 | + retcode = ((unsigned long)rc) + thumb; | 3042 | + retcode = ((unsigned long)rc) + thumb; |
2985 | } | 3043 | } |
2986 | 3044 | ||
2987 | regs->ARM_r0 = map_sig(ksig->sig); | 3045 | regs->ARM_r0 = map_sig(ksig->sig); |
2988 | diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c | 3046 | diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c |
2989 | index 1f2cccc..f40c02e 100644 | 3047 | index 5919eb4..b5d6dfe 100644 |
2990 | --- a/arch/arm/kernel/smp.c | 3048 | --- a/arch/arm/kernel/smp.c |
2991 | +++ b/arch/arm/kernel/smp.c | 3049 | +++ b/arch/arm/kernel/smp.c |
2992 | @@ -70,7 +70,7 @@ enum ipi_msg_type { | 3050 | @@ -70,7 +70,7 @@ enum ipi_msg_type { |
@@ -2999,7 +3057,7 @@ index 1f2cccc..f40c02e 100644 | |||
2999 | void __init smp_set_ops(struct smp_operations *ops) | 3057 | void __init smp_set_ops(struct smp_operations *ops) |
3000 | { | 3058 | { |
3001 | diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c | 3059 | diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c |
3002 | index 1c08911..264f009 100644 | 3060 | index 18b32e8..b0c8dca 100644 |
3003 | --- a/arch/arm/kernel/traps.c | 3061 | --- a/arch/arm/kernel/traps.c |
3004 | +++ b/arch/arm/kernel/traps.c | 3062 | +++ b/arch/arm/kernel/traps.c |
3005 | @@ -57,7 +57,7 @@ static void dump_mem(const char *, const char *, unsigned long, unsigned long); | 3063 | @@ -57,7 +57,7 @@ static void dump_mem(const char *, const char *, unsigned long, unsigned long); |
@@ -3011,7 +3069,7 @@ index 1c08911..264f009 100644 | |||
3011 | #else | 3069 | #else |
3012 | printk("Function entered at [<%08lx>] from [<%08lx>]\n", where, from); | 3070 | printk("Function entered at [<%08lx>] from [<%08lx>]\n", where, from); |
3013 | #endif | 3071 | #endif |
3014 | @@ -266,6 +266,8 @@ static arch_spinlock_t die_lock = __ARCH_SPIN_LOCK_UNLOCKED; | 3072 | @@ -259,6 +259,8 @@ static arch_spinlock_t die_lock = __ARCH_SPIN_LOCK_UNLOCKED; |
3015 | static int die_owner = -1; | 3073 | static int die_owner = -1; |
3016 | static unsigned int die_nest_count; | 3074 | static unsigned int die_nest_count; |
3017 | 3075 | ||
@@ -3020,7 +3078,7 @@ index 1c08911..264f009 100644 | |||
3020 | static unsigned long oops_begin(void) | 3078 | static unsigned long oops_begin(void) |
3021 | { | 3079 | { |
3022 | int cpu; | 3080 | int cpu; |
3023 | @@ -308,6 +310,9 @@ static void oops_end(unsigned long flags, struct pt_regs *regs, int signr) | 3081 | @@ -301,6 +303,9 @@ static void oops_end(unsigned long flags, struct pt_regs *regs, int signr) |
3024 | panic("Fatal exception in interrupt"); | 3082 | panic("Fatal exception in interrupt"); |
3025 | if (panic_on_oops) | 3083 | if (panic_on_oops) |
3026 | panic("Fatal exception"); | 3084 | panic("Fatal exception"); |
@@ -3030,7 +3088,7 @@ index 1c08911..264f009 100644 | |||
3030 | if (signr) | 3088 | if (signr) |
3031 | do_exit(signr); | 3089 | do_exit(signr); |
3032 | } | 3090 | } |
3033 | @@ -601,7 +606,9 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs) | 3091 | @@ -594,7 +599,9 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs) |
3034 | * The user helper at 0xffff0fe0 must be used instead. | 3092 | * The user helper at 0xffff0fe0 must be used instead. |
3035 | * (see entry-armv.S for details) | 3093 | * (see entry-armv.S for details) |
3036 | */ | 3094 | */ |
@@ -3040,7 +3098,7 @@ index 1c08911..264f009 100644 | |||
3040 | } | 3098 | } |
3041 | return 0; | 3099 | return 0; |
3042 | 3100 | ||
3043 | @@ -841,13 +848,10 @@ void __init early_trap_init(void *vectors_base) | 3101 | @@ -834,13 +841,10 @@ void __init early_trap_init(void *vectors_base) |
3044 | */ | 3102 | */ |
3045 | kuser_get_tls_init(vectors); | 3103 | kuser_get_tls_init(vectors); |
3046 | 3104 | ||
@@ -3060,7 +3118,7 @@ index 1c08911..264f009 100644 | |||
3060 | + | 3118 | + |
3061 | } | 3119 | } |
3062 | diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S | 3120 | diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S |
3063 | index b571484..4b2fc9b 100644 | 3121 | index a871b8e..123b00a 100644 |
3064 | --- a/arch/arm/kernel/vmlinux.lds.S | 3122 | --- a/arch/arm/kernel/vmlinux.lds.S |
3065 | +++ b/arch/arm/kernel/vmlinux.lds.S | 3123 | +++ b/arch/arm/kernel/vmlinux.lds.S |
3066 | @@ -8,7 +8,11 @@ | 3124 | @@ -8,7 +8,11 @@ |
@@ -3258,10 +3316,10 @@ index 025f742..8432b08 100644 | |||
3258 | /* | 3316 | /* |
3259 | * This test is stubbed out of the main function above to keep | 3317 | * This test is stubbed out of the main function above to keep |
3260 | diff --git a/arch/arm/mach-kirkwood/common.c b/arch/arm/mach-kirkwood/common.c | 3318 | diff --git a/arch/arm/mach-kirkwood/common.c b/arch/arm/mach-kirkwood/common.c |
3261 | index 49792a0..f192052 100644 | 3319 | index f389228..592ef66 100644 |
3262 | --- a/arch/arm/mach-kirkwood/common.c | 3320 | --- a/arch/arm/mach-kirkwood/common.c |
3263 | +++ b/arch/arm/mach-kirkwood/common.c | 3321 | +++ b/arch/arm/mach-kirkwood/common.c |
3264 | @@ -150,7 +150,16 @@ static void clk_gate_fn_disable(struct clk_hw *hw) | 3322 | @@ -149,7 +149,16 @@ static void clk_gate_fn_disable(struct clk_hw *hw) |
3265 | clk_gate_ops.disable(hw); | 3323 | clk_gate_ops.disable(hw); |
3266 | } | 3324 | } |
3267 | 3325 | ||
@@ -3279,7 +3337,7 @@ index 49792a0..f192052 100644 | |||
3279 | 3337 | ||
3280 | static struct clk __init *clk_register_gate_fn(struct device *dev, | 3338 | static struct clk __init *clk_register_gate_fn(struct device *dev, |
3281 | const char *name, | 3339 | const char *name, |
3282 | @@ -184,14 +193,6 @@ static struct clk __init *clk_register_gate_fn(struct device *dev, | 3340 | @@ -183,14 +192,6 @@ static struct clk __init *clk_register_gate_fn(struct device *dev, |
3283 | gate_fn->fn_en = fn_en; | 3341 | gate_fn->fn_en = fn_en; |
3284 | gate_fn->fn_dis = fn_dis; | 3342 | gate_fn->fn_dis = fn_dis; |
3285 | 3343 | ||
@@ -3308,10 +3366,10 @@ index f6eeb87..cc90868 100644 | |||
3308 | }; | 3366 | }; |
3309 | 3367 | ||
3310 | diff --git a/arch/arm/mach-omap2/gpmc.c b/arch/arm/mach-omap2/gpmc.c | 3368 | diff --git a/arch/arm/mach-omap2/gpmc.c b/arch/arm/mach-omap2/gpmc.c |
3311 | index 410e1ba..1d2dd59 100644 | 3369 | index 6c4da12..d9ca72d 100644 |
3312 | --- a/arch/arm/mach-omap2/gpmc.c | 3370 | --- a/arch/arm/mach-omap2/gpmc.c |
3313 | +++ b/arch/arm/mach-omap2/gpmc.c | 3371 | +++ b/arch/arm/mach-omap2/gpmc.c |
3314 | @@ -145,7 +145,6 @@ struct omap3_gpmc_regs { | 3372 | @@ -147,7 +147,6 @@ struct omap3_gpmc_regs { |
3315 | }; | 3373 | }; |
3316 | 3374 | ||
3317 | static struct gpmc_client_irq gpmc_client_irq[GPMC_NR_IRQ]; | 3375 | static struct gpmc_client_irq gpmc_client_irq[GPMC_NR_IRQ]; |
@@ -3319,7 +3377,7 @@ index 410e1ba..1d2dd59 100644 | |||
3319 | static unsigned gpmc_irq_start; | 3377 | static unsigned gpmc_irq_start; |
3320 | 3378 | ||
3321 | static struct resource gpmc_mem_root; | 3379 | static struct resource gpmc_mem_root; |
3322 | @@ -707,6 +706,18 @@ static void gpmc_irq_noop(struct irq_data *data) { } | 3380 | @@ -711,6 +710,18 @@ static void gpmc_irq_noop(struct irq_data *data) { } |
3323 | 3381 | ||
3324 | static unsigned int gpmc_irq_noop_ret(struct irq_data *data) { return 0; } | 3382 | static unsigned int gpmc_irq_noop_ret(struct irq_data *data) { return 0; } |
3325 | 3383 | ||
@@ -3338,7 +3396,7 @@ index 410e1ba..1d2dd59 100644 | |||
3338 | static int gpmc_setup_irq(void) | 3396 | static int gpmc_setup_irq(void) |
3339 | { | 3397 | { |
3340 | int i; | 3398 | int i; |
3341 | @@ -721,15 +732,6 @@ static int gpmc_setup_irq(void) | 3399 | @@ -725,15 +736,6 @@ static int gpmc_setup_irq(void) |
3342 | return gpmc_irq_start; | 3400 | return gpmc_irq_start; |
3343 | } | 3401 | } |
3344 | 3402 | ||
@@ -3368,7 +3426,7 @@ index f8bb3b9..831e7b8 100644 | |||
3368 | }; | 3426 | }; |
3369 | 3427 | ||
3370 | diff --git a/arch/arm/mach-omap2/omap_device.c b/arch/arm/mach-omap2/omap_device.c | 3428 | diff --git a/arch/arm/mach-omap2/omap_device.c b/arch/arm/mach-omap2/omap_device.c |
3371 | index 381be7a..89b9c7e 100644 | 3429 | index e6d2307..d057195 100644 |
3372 | --- a/arch/arm/mach-omap2/omap_device.c | 3430 | --- a/arch/arm/mach-omap2/omap_device.c |
3373 | +++ b/arch/arm/mach-omap2/omap_device.c | 3431 | +++ b/arch/arm/mach-omap2/omap_device.c |
3374 | @@ -499,7 +499,7 @@ void omap_device_delete(struct omap_device *od) | 3432 | @@ -499,7 +499,7 @@ void omap_device_delete(struct omap_device *od) |
@@ -3409,10 +3467,10 @@ index 044c31d..2ee0861 100644 | |||
3409 | struct omap_device *omap_device_alloc(struct platform_device *pdev, | 3467 | struct omap_device *omap_device_alloc(struct platform_device *pdev, |
3410 | struct omap_hwmod **ohs, int oh_cnt); | 3468 | struct omap_hwmod **ohs, int oh_cnt); |
3411 | diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c | 3469 | diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c |
3412 | index 3a750de..4c9b88f 100644 | 3470 | index 7341eff..fd75e34 100644 |
3413 | --- a/arch/arm/mach-omap2/omap_hwmod.c | 3471 | --- a/arch/arm/mach-omap2/omap_hwmod.c |
3414 | +++ b/arch/arm/mach-omap2/omap_hwmod.c | 3472 | +++ b/arch/arm/mach-omap2/omap_hwmod.c |
3415 | @@ -191,10 +191,10 @@ struct omap_hwmod_soc_ops { | 3473 | @@ -194,10 +194,10 @@ struct omap_hwmod_soc_ops { |
3416 | int (*init_clkdm)(struct omap_hwmod *oh); | 3474 | int (*init_clkdm)(struct omap_hwmod *oh); |
3417 | void (*update_context_lost)(struct omap_hwmod *oh); | 3475 | void (*update_context_lost)(struct omap_hwmod *oh); |
3418 | int (*get_context_lost)(struct omap_hwmod *oh); | 3476 | int (*get_context_lost)(struct omap_hwmod *oh); |
@@ -3449,10 +3507,23 @@ index d15c7bb..b2d1f0c 100644 | |||
3449 | pdev = omap_device_build(dev_name, id, oh, &pdata, | 3507 | pdev = omap_device_build(dev_name, id, oh, &pdata, |
3450 | sizeof(struct omap_wd_timer_platform_data)); | 3508 | sizeof(struct omap_wd_timer_platform_data)); |
3451 | WARN(IS_ERR(pdev), "Can't build omap_device for %s:%s.\n", | 3509 | WARN(IS_ERR(pdev), "Can't build omap_device for %s:%s.\n", |
3452 | diff --git a/arch/arm/mach-ux500/include/mach/setup.h b/arch/arm/mach-ux500/include/mach/setup.h | 3510 | diff --git a/arch/arm/mach-tegra/cpuidle-tegra20.c b/arch/arm/mach-tegra/cpuidle-tegra20.c |
3453 | index bddce2b..3eb04e2 100644 | 3511 | index 0cdba8d..297993e 100644 |
3454 | --- a/arch/arm/mach-ux500/include/mach/setup.h | 3512 | --- a/arch/arm/mach-tegra/cpuidle-tegra20.c |
3455 | +++ b/arch/arm/mach-ux500/include/mach/setup.h | 3513 | +++ b/arch/arm/mach-tegra/cpuidle-tegra20.c |
3514 | @@ -181,7 +181,7 @@ static int tegra20_idle_lp2_coupled(struct cpuidle_device *dev, | ||
3515 | bool entered_lp2 = false; | ||
3516 | |||
3517 | if (tegra_pending_sgi()) | ||
3518 | - ACCESS_ONCE(abort_flag) = true; | ||
3519 | + ACCESS_ONCE_RW(abort_flag) = true; | ||
3520 | |||
3521 | cpuidle_coupled_parallel_barrier(dev, &abort_barrier); | ||
3522 | |||
3523 | diff --git a/arch/arm/mach-ux500/setup.h b/arch/arm/mach-ux500/setup.h | ||
3524 | index cad3ca86..1d79e0f 100644 | ||
3525 | --- a/arch/arm/mach-ux500/setup.h | ||
3526 | +++ b/arch/arm/mach-ux500/setup.h | ||
3456 | @@ -37,13 +37,6 @@ extern void ux500_timer_init(void); | 3527 | @@ -37,13 +37,6 @@ extern void ux500_timer_init(void); |
3457 | .type = MT_DEVICE, \ | 3528 | .type = MT_DEVICE, \ |
3458 | } | 3529 | } |
@@ -3468,10 +3539,10 @@ index bddce2b..3eb04e2 100644 | |||
3468 | extern void ux500_cpu_die(unsigned int cpu); | 3539 | extern void ux500_cpu_die(unsigned int cpu); |
3469 | 3540 | ||
3470 | diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig | 3541 | diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig |
3471 | index 4045c49..0263c07 100644 | 3542 | index 35955b5..b475042 100644 |
3472 | --- a/arch/arm/mm/Kconfig | 3543 | --- a/arch/arm/mm/Kconfig |
3473 | +++ b/arch/arm/mm/Kconfig | 3544 | +++ b/arch/arm/mm/Kconfig |
3474 | @@ -425,7 +425,7 @@ config CPU_32v5 | 3545 | @@ -432,7 +432,7 @@ config CPU_32v5 |
3475 | 3546 | ||
3476 | config CPU_32v6 | 3547 | config CPU_32v6 |
3477 | bool | 3548 | bool |
@@ -3480,7 +3551,7 @@ index 4045c49..0263c07 100644 | |||
3480 | select TLS_REG_EMUL if !CPU_32v6K && !MMU | 3551 | select TLS_REG_EMUL if !CPU_32v6K && !MMU |
3481 | 3552 | ||
3482 | config CPU_32v6K | 3553 | config CPU_32v6K |
3483 | @@ -574,6 +574,7 @@ config CPU_CP15_MPU | 3554 | @@ -581,6 +581,7 @@ config CPU_CP15_MPU |
3484 | 3555 | ||
3485 | config CPU_USE_DOMAINS | 3556 | config CPU_USE_DOMAINS |
3486 | bool | 3557 | bool |
@@ -3489,7 +3560,7 @@ index 4045c49..0263c07 100644 | |||
3489 | This option enables or disables the use of domain switching | 3560 | This option enables or disables the use of domain switching |
3490 | via the set_fs() function. | 3561 | via the set_fs() function. |
3491 | diff --git a/arch/arm/mm/alignment.c b/arch/arm/mm/alignment.c | 3562 | diff --git a/arch/arm/mm/alignment.c b/arch/arm/mm/alignment.c |
3492 | index db26e2e..ee44569 100644 | 3563 | index 6f4585b..7b6f52b 100644 |
3493 | --- a/arch/arm/mm/alignment.c | 3564 | --- a/arch/arm/mm/alignment.c |
3494 | +++ b/arch/arm/mm/alignment.c | 3565 | +++ b/arch/arm/mm/alignment.c |
3495 | @@ -211,10 +211,12 @@ union offset_union { | 3566 | @@ -211,10 +211,12 @@ union offset_union { |
@@ -3738,7 +3809,7 @@ index cf08bdf..772656c 100644 | |||
3738 | unsigned long search_exception_table(unsigned long addr); | 3809 | unsigned long search_exception_table(unsigned long addr); |
3739 | 3810 | ||
3740 | diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c | 3811 | diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c |
3741 | index ad722f1..763fdd3 100644 | 3812 | index 0ecc43f..190b956 100644 |
3742 | --- a/arch/arm/mm/init.c | 3813 | --- a/arch/arm/mm/init.c |
3743 | +++ b/arch/arm/mm/init.c | 3814 | +++ b/arch/arm/mm/init.c |
3744 | @@ -30,6 +30,8 @@ | 3815 | @@ -30,6 +30,8 @@ |
@@ -3750,12 +3821,12 @@ index ad722f1..763fdd3 100644 | |||
3750 | 3821 | ||
3751 | #include <asm/mach/arch.h> | 3822 | #include <asm/mach/arch.h> |
3752 | #include <asm/mach/map.h> | 3823 | #include <asm/mach/map.h> |
3753 | @@ -736,7 +738,46 @@ void free_initmem(void) | 3824 | @@ -726,7 +728,46 @@ void free_initmem(void) |
3754 | { | 3825 | { |
3755 | #ifdef CONFIG_HAVE_TCM | 3826 | #ifdef CONFIG_HAVE_TCM |
3756 | extern char __tcm_start, __tcm_end; | 3827 | extern char __tcm_start, __tcm_end; |
3757 | +#endif | 3828 | +#endif |
3758 | + | 3829 | |
3759 | +#ifdef CONFIG_PAX_KERNEXEC | 3830 | +#ifdef CONFIG_PAX_KERNEXEC |
3760 | + unsigned long addr; | 3831 | + unsigned long addr; |
3761 | + pgd_t *pgd; | 3832 | + pgd_t *pgd; |
@@ -3792,11 +3863,11 @@ index ad722f1..763fdd3 100644 | |||
3792 | + } | 3863 | + } |
3793 | + } | 3864 | + } |
3794 | +#endif | 3865 | +#endif |
3795 | 3866 | + | |
3796 | +#ifdef CONFIG_HAVE_TCM | 3867 | +#ifdef CONFIG_HAVE_TCM |
3797 | poison_init_mem(&__tcm_start, &__tcm_end - &__tcm_start); | 3868 | poison_init_mem(&__tcm_start, &__tcm_end - &__tcm_start); |
3798 | totalram_pages += free_area(__phys_to_pfn(__pa(&__tcm_start)), | 3869 | free_reserved_area(&__tcm_start, &__tcm_end, 0, "TCM link"); |
3799 | __phys_to_pfn(__pa(&__tcm_end)), | 3870 | #endif |
3800 | diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c | 3871 | diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c |
3801 | index 04d9006..c547d85 100644 | 3872 | index 04d9006..c547d85 100644 |
3802 | --- a/arch/arm/mm/ioremap.c | 3873 | --- a/arch/arm/mm/ioremap.c |
@@ -3926,7 +3997,7 @@ index 10062ce..8695745 100644 | |||
3926 | mm->unmap_area = arch_unmap_area_topdown; | 3997 | mm->unmap_area = arch_unmap_area_topdown; |
3927 | } | 3998 | } |
3928 | diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c | 3999 | diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c |
3929 | index a84ff76..f221c1d 100644 | 4000 | index 4d409e6..f375351 100644 |
3930 | --- a/arch/arm/mm/mmu.c | 4001 | --- a/arch/arm/mm/mmu.c |
3931 | +++ b/arch/arm/mm/mmu.c | 4002 | +++ b/arch/arm/mm/mmu.c |
3932 | @@ -36,6 +36,22 @@ | 4003 | @@ -36,6 +36,22 @@ |
@@ -3952,9 +4023,9 @@ index a84ff76..f221c1d 100644 | |||
3952 | /* | 4023 | /* |
3953 | * empty_zero_page is a special page that is used for | 4024 | * empty_zero_page is a special page that is used for |
3954 | * zero-initialized data and COW. | 4025 | * zero-initialized data and COW. |
3955 | @@ -211,10 +227,18 @@ void adjust_cr(unsigned long mask, unsigned long set) | 4026 | @@ -228,10 +244,18 @@ __setup("noalign", noalign_setup); |
3956 | } | 4027 | |
3957 | #endif | 4028 | #endif /* ifdef CONFIG_CPU_CP15 / else */ |
3958 | 4029 | ||
3959 | -#define PROT_PTE_DEVICE L_PTE_PRESENT|L_PTE_YOUNG|L_PTE_DIRTY|L_PTE_XN | 4030 | -#define PROT_PTE_DEVICE L_PTE_PRESENT|L_PTE_YOUNG|L_PTE_DIRTY|L_PTE_XN |
3960 | +#define PROT_PTE_DEVICE L_PTE_PRESENT|L_PTE_YOUNG|L_PTE_DIRTY | 4031 | +#define PROT_PTE_DEVICE L_PTE_PRESENT|L_PTE_YOUNG|L_PTE_DIRTY |
@@ -3973,7 +4044,7 @@ index a84ff76..f221c1d 100644 | |||
3973 | [MT_DEVICE] = { /* Strongly ordered / ARMv6 shared device */ | 4044 | [MT_DEVICE] = { /* Strongly ordered / ARMv6 shared device */ |
3974 | .prot_pte = PROT_PTE_DEVICE | L_PTE_MT_DEV_SHARED | | 4045 | .prot_pte = PROT_PTE_DEVICE | L_PTE_MT_DEV_SHARED | |
3975 | L_PTE_SHARED, | 4046 | L_PTE_SHARED, |
3976 | @@ -243,16 +267,16 @@ static struct mem_type mem_types[] = { | 4047 | @@ -260,16 +284,16 @@ static struct mem_type mem_types[] = { |
3977 | [MT_UNCACHED] = { | 4048 | [MT_UNCACHED] = { |
3978 | .prot_pte = PROT_PTE_DEVICE, | 4049 | .prot_pte = PROT_PTE_DEVICE, |
3979 | .prot_l1 = PMD_TYPE_TABLE, | 4050 | .prot_l1 = PMD_TYPE_TABLE, |
@@ -3993,7 +4064,7 @@ index a84ff76..f221c1d 100644 | |||
3993 | .domain = DOMAIN_KERNEL, | 4064 | .domain = DOMAIN_KERNEL, |
3994 | }, | 4065 | }, |
3995 | #endif | 4066 | #endif |
3996 | @@ -260,36 +284,54 @@ static struct mem_type mem_types[] = { | 4067 | @@ -277,36 +301,65 @@ static struct mem_type mem_types[] = { |
3997 | .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY | | 4068 | .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY | |
3998 | L_PTE_RDONLY, | 4069 | L_PTE_RDONLY, |
3999 | .prot_l1 = PMD_TYPE_TABLE, | 4070 | .prot_l1 = PMD_TYPE_TABLE, |
@@ -4001,9 +4072,21 @@ index a84ff76..f221c1d 100644 | |||
4001 | + .domain = DOMAIN_VECTORS, | 4072 | + .domain = DOMAIN_VECTORS, |
4002 | }, | 4073 | }, |
4003 | [MT_HIGH_VECTORS] = { | 4074 | [MT_HIGH_VECTORS] = { |
4004 | .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY | | 4075 | - .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY | |
4005 | - L_PTE_USER | L_PTE_RDONLY, | 4076 | - L_PTE_USER | L_PTE_RDONLY, |
4006 | + L_PTE_RDONLY, | 4077 | + /* we always want the vector page to be noaccess for userland on archs with |
4078 | + XN where we can enforce some reasonable measure of security | ||
4079 | + therefore, when kernexec is disabled, instead of L_PTE_USER | L_PTE_RDONLY | ||
4080 | + which turns into supervisor rwx, userland rx, we instead omit that entirely, | ||
4081 | + leaving it as supervisor rwx only | ||
4082 | + */ | ||
4083 | +#ifdef CONFIG_PAX_KERNEXEC | ||
4084 | + .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY | L_PTE_RDONLY, | ||
4085 | +#elif __LINUX_ARM_ARCH__ >= 6 | ||
4086 | + .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY, | ||
4087 | +#else | ||
4088 | + .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY | L_PTE_USER | L_PTE_RDONLY, | ||
4089 | +#endif | ||
4007 | .prot_l1 = PMD_TYPE_TABLE, | 4090 | .prot_l1 = PMD_TYPE_TABLE, |
4008 | - .domain = DOMAIN_USER, | 4091 | - .domain = DOMAIN_USER, |
4009 | + .domain = DOMAIN_VECTORS, | 4092 | + .domain = DOMAIN_VECTORS, |
@@ -4057,7 +4140,7 @@ index a84ff76..f221c1d 100644 | |||
4057 | .domain = DOMAIN_KERNEL, | 4140 | .domain = DOMAIN_KERNEL, |
4058 | }, | 4141 | }, |
4059 | [MT_MEMORY_ITCM] = { | 4142 | [MT_MEMORY_ITCM] = { |
4060 | @@ -299,10 +341,10 @@ static struct mem_type mem_types[] = { | 4143 | @@ -316,10 +369,10 @@ static struct mem_type mem_types[] = { |
4061 | }, | 4144 | }, |
4062 | [MT_MEMORY_SO] = { | 4145 | [MT_MEMORY_SO] = { |
4063 | .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY | | 4146 | .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY | |
@@ -4070,7 +4153,7 @@ index a84ff76..f221c1d 100644 | |||
4070 | .domain = DOMAIN_KERNEL, | 4153 | .domain = DOMAIN_KERNEL, |
4071 | }, | 4154 | }, |
4072 | [MT_MEMORY_DMA_READY] = { | 4155 | [MT_MEMORY_DMA_READY] = { |
4073 | @@ -388,9 +430,35 @@ static void __init build_mem_type_table(void) | 4156 | @@ -405,9 +458,35 @@ static void __init build_mem_type_table(void) |
4074 | * to prevent speculative instruction fetches. | 4157 | * to prevent speculative instruction fetches. |
4075 | */ | 4158 | */ |
4076 | mem_types[MT_DEVICE].prot_sect |= PMD_SECT_XN; | 4159 | mem_types[MT_DEVICE].prot_sect |= PMD_SECT_XN; |
@@ -4106,7 +4189,7 @@ index a84ff76..f221c1d 100644 | |||
4106 | } | 4189 | } |
4107 | if (cpu_arch >= CPU_ARCH_ARMv7 && (cr & CR_TRE)) { | 4190 | if (cpu_arch >= CPU_ARCH_ARMv7 && (cr & CR_TRE)) { |
4108 | /* | 4191 | /* |
4109 | @@ -451,6 +519,9 @@ static void __init build_mem_type_table(void) | 4192 | @@ -468,6 +547,9 @@ static void __init build_mem_type_table(void) |
4110 | * from SVC mode and no access from userspace. | 4193 | * from SVC mode and no access from userspace. |
4111 | */ | 4194 | */ |
4112 | mem_types[MT_ROM].prot_sect |= PMD_SECT_APX|PMD_SECT_AP_WRITE; | 4195 | mem_types[MT_ROM].prot_sect |= PMD_SECT_APX|PMD_SECT_AP_WRITE; |
@@ -4116,7 +4199,7 @@ index a84ff76..f221c1d 100644 | |||
4116 | mem_types[MT_MINICLEAN].prot_sect |= PMD_SECT_APX|PMD_SECT_AP_WRITE; | 4199 | mem_types[MT_MINICLEAN].prot_sect |= PMD_SECT_APX|PMD_SECT_AP_WRITE; |
4117 | mem_types[MT_CACHECLEAN].prot_sect |= PMD_SECT_APX|PMD_SECT_AP_WRITE; | 4200 | mem_types[MT_CACHECLEAN].prot_sect |= PMD_SECT_APX|PMD_SECT_AP_WRITE; |
4118 | #endif | 4201 | #endif |
4119 | @@ -468,11 +539,17 @@ static void __init build_mem_type_table(void) | 4202 | @@ -485,11 +567,17 @@ static void __init build_mem_type_table(void) |
4120 | mem_types[MT_DEVICE_WC].prot_pte |= L_PTE_SHARED; | 4203 | mem_types[MT_DEVICE_WC].prot_pte |= L_PTE_SHARED; |
4121 | mem_types[MT_DEVICE_CACHED].prot_sect |= PMD_SECT_S; | 4204 | mem_types[MT_DEVICE_CACHED].prot_sect |= PMD_SECT_S; |
4122 | mem_types[MT_DEVICE_CACHED].prot_pte |= L_PTE_SHARED; | 4205 | mem_types[MT_DEVICE_CACHED].prot_pte |= L_PTE_SHARED; |
@@ -4138,7 +4221,7 @@ index a84ff76..f221c1d 100644 | |||
4138 | } | 4221 | } |
4139 | } | 4222 | } |
4140 | 4223 | ||
4141 | @@ -483,15 +560,20 @@ static void __init build_mem_type_table(void) | 4224 | @@ -500,15 +588,20 @@ static void __init build_mem_type_table(void) |
4142 | if (cpu_arch >= CPU_ARCH_ARMv6) { | 4225 | if (cpu_arch >= CPU_ARCH_ARMv6) { |
4143 | if (cpu_arch >= CPU_ARCH_ARMv7 && (cr & CR_TRE)) { | 4226 | if (cpu_arch >= CPU_ARCH_ARMv7 && (cr & CR_TRE)) { |
4144 | /* Non-cacheable Normal is XCB = 001 */ | 4227 | /* Non-cacheable Normal is XCB = 001 */ |
@@ -4162,7 +4245,7 @@ index a84ff76..f221c1d 100644 | |||
4162 | } | 4245 | } |
4163 | 4246 | ||
4164 | #ifdef CONFIG_ARM_LPAE | 4247 | #ifdef CONFIG_ARM_LPAE |
4165 | @@ -507,6 +589,8 @@ static void __init build_mem_type_table(void) | 4248 | @@ -524,6 +617,8 @@ static void __init build_mem_type_table(void) |
4166 | vecs_pgprot |= PTE_EXT_AF; | 4249 | vecs_pgprot |= PTE_EXT_AF; |
4167 | #endif | 4250 | #endif |
4168 | 4251 | ||
@@ -4171,7 +4254,7 @@ index a84ff76..f221c1d 100644 | |||
4171 | for (i = 0; i < 16; i++) { | 4254 | for (i = 0; i < 16; i++) { |
4172 | pteval_t v = pgprot_val(protection_map[i]); | 4255 | pteval_t v = pgprot_val(protection_map[i]); |
4173 | protection_map[i] = __pgprot(v | user_pgprot); | 4256 | protection_map[i] = __pgprot(v | user_pgprot); |
4174 | @@ -524,10 +608,15 @@ static void __init build_mem_type_table(void) | 4257 | @@ -541,10 +636,15 @@ static void __init build_mem_type_table(void) |
4175 | 4258 | ||
4176 | mem_types[MT_LOW_VECTORS].prot_l1 |= ecc_mask; | 4259 | mem_types[MT_LOW_VECTORS].prot_l1 |= ecc_mask; |
4177 | mem_types[MT_HIGH_VECTORS].prot_l1 |= ecc_mask; | 4260 | mem_types[MT_HIGH_VECTORS].prot_l1 |= ecc_mask; |
@@ -4190,7 +4273,7 @@ index a84ff76..f221c1d 100644 | |||
4190 | mem_types[MT_ROM].prot_sect |= cp->pmd; | 4273 | mem_types[MT_ROM].prot_sect |= cp->pmd; |
4191 | 4274 | ||
4192 | switch (cp->pmd) { | 4275 | switch (cp->pmd) { |
4193 | @@ -1147,18 +1236,15 @@ void __init arm_mm_memblock_reserve(void) | 4276 | @@ -1166,18 +1266,15 @@ void __init arm_mm_memblock_reserve(void) |
4194 | * called function. This means you can't use any function or debugging | 4277 | * called function. This means you can't use any function or debugging |
4195 | * method which may touch any device, otherwise the kernel _will_ crash. | 4278 | * method which may touch any device, otherwise the kernel _will_ crash. |
4196 | */ | 4279 | */ |
@@ -4202,18 +4285,18 @@ index a84ff76..f221c1d 100644 | |||
4202 | struct map_desc map; | 4285 | struct map_desc map; |
4203 | unsigned long addr; | 4286 | unsigned long addr; |
4204 | - void *vectors; | 4287 | - void *vectors; |
4205 | - | 4288 | |
4206 | - /* | 4289 | - /* |
4207 | - * Allocate the vector page early. | 4290 | - * Allocate the vector page early. |
4208 | - */ | 4291 | - */ |
4209 | - vectors = early_alloc(PAGE_SIZE); | 4292 | - vectors = early_alloc(PAGE_SIZE); |
4210 | 4293 | - | |
4211 | - early_trap_init(vectors); | 4294 | - early_trap_init(vectors); |
4212 | + early_trap_init(&vectors); | 4295 | + early_trap_init(&vectors); |
4213 | 4296 | ||
4214 | for (addr = VMALLOC_START; addr; addr += PMD_SIZE) | 4297 | for (addr = VMALLOC_START; addr; addr += PMD_SIZE) |
4215 | pmd_clear(pmd_off_k(addr)); | 4298 | pmd_clear(pmd_off_k(addr)); |
4216 | @@ -1198,7 +1284,7 @@ static void __init devicemaps_init(struct machine_desc *mdesc) | 4299 | @@ -1217,7 +1314,7 @@ static void __init devicemaps_init(struct machine_desc *mdesc) |
4217 | * location (0xffff0000). If we aren't using high-vectors, also | 4300 | * location (0xffff0000). If we aren't using high-vectors, also |
4218 | * create a mapping at the low-vectors virtual address. | 4301 | * create a mapping at the low-vectors virtual address. |
4219 | */ | 4302 | */ |
@@ -4222,7 +4305,7 @@ index a84ff76..f221c1d 100644 | |||
4222 | map.virtual = 0xffff0000; | 4305 | map.virtual = 0xffff0000; |
4223 | map.length = PAGE_SIZE; | 4306 | map.length = PAGE_SIZE; |
4224 | map.type = MT_HIGH_VECTORS; | 4307 | map.type = MT_HIGH_VECTORS; |
4225 | @@ -1256,8 +1342,39 @@ static void __init map_lowmem(void) | 4308 | @@ -1275,8 +1372,39 @@ static void __init map_lowmem(void) |
4226 | map.pfn = __phys_to_pfn(start); | 4309 | map.pfn = __phys_to_pfn(start); |
4227 | map.virtual = __phys_to_virt(start); | 4310 | map.virtual = __phys_to_virt(start); |
4228 | map.length = end - start; | 4311 | map.length = end - start; |
@@ -4264,7 +4347,7 @@ index a84ff76..f221c1d 100644 | |||
4264 | } | 4347 | } |
4265 | } | 4348 | } |
4266 | diff --git a/arch/arm/mm/proc-v7-2level.S b/arch/arm/mm/proc-v7-2level.S | 4349 | diff --git a/arch/arm/mm/proc-v7-2level.S b/arch/arm/mm/proc-v7-2level.S |
4267 | index 78f520b..31f0cb6 100644 | 4350 | index 9704097..3e36dde 100644 |
4268 | --- a/arch/arm/mm/proc-v7-2level.S | 4351 | --- a/arch/arm/mm/proc-v7-2level.S |
4269 | +++ b/arch/arm/mm/proc-v7-2level.S | 4352 | +++ b/arch/arm/mm/proc-v7-2level.S |
4270 | @@ -99,6 +99,9 @@ ENTRY(cpu_v7_set_pte_ext) | 4353 | @@ -99,6 +99,9 @@ ENTRY(cpu_v7_set_pte_ext) |
@@ -4291,10 +4374,10 @@ index a5bc92d..0bb4730 100644 | |||
4291 | + pax_close_kernel(); | 4374 | + pax_close_kernel(); |
4292 | } | 4375 | } |
4293 | diff --git a/arch/arm/plat-samsung/include/plat/dma-ops.h b/arch/arm/plat-samsung/include/plat/dma-ops.h | 4376 | diff --git a/arch/arm/plat-samsung/include/plat/dma-ops.h b/arch/arm/plat-samsung/include/plat/dma-ops.h |
4294 | index 1141782..0959d64 100644 | 4377 | index ce6d763..cfea917 100644 |
4295 | --- a/arch/arm/plat-samsung/include/plat/dma-ops.h | 4378 | --- a/arch/arm/plat-samsung/include/plat/dma-ops.h |
4296 | +++ b/arch/arm/plat-samsung/include/plat/dma-ops.h | 4379 | +++ b/arch/arm/plat-samsung/include/plat/dma-ops.h |
4297 | @@ -48,7 +48,7 @@ struct samsung_dma_ops { | 4380 | @@ -47,7 +47,7 @@ struct samsung_dma_ops { |
4298 | int (*started)(unsigned ch); | 4381 | int (*started)(unsigned ch); |
4299 | int (*flush)(unsigned ch); | 4382 | int (*flush)(unsigned ch); |
4300 | int (*stop)(unsigned ch); | 4383 | int (*stop)(unsigned ch); |
@@ -4893,10 +4976,10 @@ index 24603be..948052d 100644 | |||
4893 | DEBUGP("%s: placing gp at 0x%lx\n", __func__, gp); | 4976 | DEBUGP("%s: placing gp at 0x%lx\n", __func__, gp); |
4894 | } | 4977 | } |
4895 | diff --git a/arch/ia64/kernel/palinfo.c b/arch/ia64/kernel/palinfo.c | 4978 | diff --git a/arch/ia64/kernel/palinfo.c b/arch/ia64/kernel/palinfo.c |
4896 | index 79521d5..43dddff 100644 | 4979 | index 2b3c2d7..a318d84 100644 |
4897 | --- a/arch/ia64/kernel/palinfo.c | 4980 | --- a/arch/ia64/kernel/palinfo.c |
4898 | +++ b/arch/ia64/kernel/palinfo.c | 4981 | +++ b/arch/ia64/kernel/palinfo.c |
4899 | @@ -1006,7 +1006,7 @@ static int __cpuinit palinfo_cpu_callback(struct notifier_block *nfb, | 4982 | @@ -980,7 +980,7 @@ static int __cpuinit palinfo_cpu_callback(struct notifier_block *nfb, |
4900 | return NOTIFY_OK; | 4983 | return NOTIFY_OK; |
4901 | } | 4984 | } |
4902 | 4985 | ||
@@ -4906,10 +4989,10 @@ index 79521d5..43dddff 100644 | |||
4906 | .notifier_call = palinfo_cpu_callback, | 4989 | .notifier_call = palinfo_cpu_callback, |
4907 | .priority = 0, | 4990 | .priority = 0, |
4908 | diff --git a/arch/ia64/kernel/salinfo.c b/arch/ia64/kernel/salinfo.c | 4991 | diff --git a/arch/ia64/kernel/salinfo.c b/arch/ia64/kernel/salinfo.c |
4909 | index aa527d7..f237752 100644 | 4992 | index 4bc580a..7767f24 100644 |
4910 | --- a/arch/ia64/kernel/salinfo.c | 4993 | --- a/arch/ia64/kernel/salinfo.c |
4911 | +++ b/arch/ia64/kernel/salinfo.c | 4994 | +++ b/arch/ia64/kernel/salinfo.c |
4912 | @@ -616,7 +616,7 @@ salinfo_cpu_callback(struct notifier_block *nb, unsigned long action, void *hcpu | 4995 | @@ -609,7 +609,7 @@ salinfo_cpu_callback(struct notifier_block *nb, unsigned long action, void *hcpu |
4913 | return NOTIFY_OK; | 4996 | return NOTIFY_OK; |
4914 | } | 4997 | } |
4915 | 4998 | ||
@@ -5050,7 +5133,7 @@ index 76069c1..c2aa816 100644 | |||
5050 | } | 5133 | } |
5051 | 5134 | ||
5052 | diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c | 5135 | diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c |
5053 | index 20bc967..a26993e 100644 | 5136 | index d1fe4b4..2628f37 100644 |
5054 | --- a/arch/ia64/mm/init.c | 5137 | --- a/arch/ia64/mm/init.c |
5055 | +++ b/arch/ia64/mm/init.c | 5138 | +++ b/arch/ia64/mm/init.c |
5056 | @@ -120,6 +120,19 @@ ia64_init_addr_space (void) | 5139 | @@ -120,6 +120,19 @@ ia64_init_addr_space (void) |
@@ -5247,10 +5330,10 @@ index c1f6afa..38cc6e9 100644 | |||
5247 | 5330 | ||
5248 | #endif /* _ASM_EXEC_H */ | 5331 | #endif /* _ASM_EXEC_H */ |
5249 | diff --git a/arch/mips/include/asm/page.h b/arch/mips/include/asm/page.h | 5332 | diff --git a/arch/mips/include/asm/page.h b/arch/mips/include/asm/page.h |
5250 | index eab99e5..607c98e 100644 | 5333 | index f59552f..3abe9b9 100644 |
5251 | --- a/arch/mips/include/asm/page.h | 5334 | --- a/arch/mips/include/asm/page.h |
5252 | +++ b/arch/mips/include/asm/page.h | 5335 | +++ b/arch/mips/include/asm/page.h |
5253 | @@ -96,7 +96,7 @@ extern void copy_user_highpage(struct page *to, struct page *from, | 5336 | @@ -95,7 +95,7 @@ extern void copy_user_highpage(struct page *to, struct page *from, |
5254 | #ifdef CONFIG_CPU_MIPS32 | 5337 | #ifdef CONFIG_CPU_MIPS32 |
5255 | typedef struct { unsigned long pte_low, pte_high; } pte_t; | 5338 | typedef struct { unsigned long pte_low, pte_high; } pte_t; |
5256 | #define pte_val(x) ((x).pte_low | ((unsigned long long)(x).pte_high << 32)) | 5339 | #define pte_val(x) ((x).pte_low | ((unsigned long long)(x).pte_high << 32)) |
@@ -5276,10 +5359,10 @@ index 881d18b..cea38bc 100644 | |||
5276 | 5359 | ||
5277 | /* | 5360 | /* |
5278 | diff --git a/arch/mips/include/asm/thread_info.h b/arch/mips/include/asm/thread_info.h | 5361 | diff --git a/arch/mips/include/asm/thread_info.h b/arch/mips/include/asm/thread_info.h |
5279 | index 178f792..8ebc510 100644 | 5362 | index 895320e..bf63e10 100644 |
5280 | --- a/arch/mips/include/asm/thread_info.h | 5363 | --- a/arch/mips/include/asm/thread_info.h |
5281 | +++ b/arch/mips/include/asm/thread_info.h | 5364 | +++ b/arch/mips/include/asm/thread_info.h |
5282 | @@ -111,6 +111,8 @@ register struct thread_info *__current_thread_info __asm__("$28"); | 5365 | @@ -115,6 +115,8 @@ static inline struct thread_info *current_thread_info(void) |
5283 | #define TIF_32BIT_ADDR 23 /* 32-bit address space (o32/n32) */ | 5366 | #define TIF_32BIT_ADDR 23 /* 32-bit address space (o32/n32) */ |
5284 | #define TIF_FPUBOUND 24 /* thread bound to FPU-full CPU set */ | 5367 | #define TIF_FPUBOUND 24 /* thread bound to FPU-full CPU set */ |
5285 | #define TIF_LOAD_WATCH 25 /* If set, load watch registers */ | 5368 | #define TIF_LOAD_WATCH 25 /* If set, load watch registers */ |
@@ -5288,7 +5371,7 @@ index 178f792..8ebc510 100644 | |||
5288 | #define TIF_SYSCALL_TRACE 31 /* syscall trace active */ | 5371 | #define TIF_SYSCALL_TRACE 31 /* syscall trace active */ |
5289 | 5372 | ||
5290 | #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) | 5373 | #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) |
5291 | @@ -126,15 +128,18 @@ register struct thread_info *__current_thread_info __asm__("$28"); | 5374 | @@ -130,15 +132,18 @@ static inline struct thread_info *current_thread_info(void) |
5292 | #define _TIF_32BIT_ADDR (1<<TIF_32BIT_ADDR) | 5375 | #define _TIF_32BIT_ADDR (1<<TIF_32BIT_ADDR) |
5293 | #define _TIF_FPUBOUND (1<<TIF_FPUBOUND) | 5376 | #define _TIF_FPUBOUND (1<<TIF_FPUBOUND) |
5294 | #define _TIF_LOAD_WATCH (1<<TIF_LOAD_WATCH) | 5377 | #define _TIF_LOAD_WATCH (1<<TIF_LOAD_WATCH) |
@@ -5310,7 +5393,7 @@ index 178f792..8ebc510 100644 | |||
5310 | #endif /* __KERNEL__ */ | 5393 | #endif /* __KERNEL__ */ |
5311 | 5394 | ||
5312 | diff --git a/arch/mips/kernel/binfmt_elfn32.c b/arch/mips/kernel/binfmt_elfn32.c | 5395 | diff --git a/arch/mips/kernel/binfmt_elfn32.c b/arch/mips/kernel/binfmt_elfn32.c |
5313 | index e06f777..3244284 100644 | 5396 | index 1188e00..41cf144 100644 |
5314 | --- a/arch/mips/kernel/binfmt_elfn32.c | 5397 | --- a/arch/mips/kernel/binfmt_elfn32.c |
5315 | +++ b/arch/mips/kernel/binfmt_elfn32.c | 5398 | +++ b/arch/mips/kernel/binfmt_elfn32.c |
5316 | @@ -50,6 +50,13 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG]; | 5399 | @@ -50,6 +50,13 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG]; |
@@ -5328,10 +5411,10 @@ index e06f777..3244284 100644 | |||
5328 | #include <linux/module.h> | 5411 | #include <linux/module.h> |
5329 | #include <linux/elfcore.h> | 5412 | #include <linux/elfcore.h> |
5330 | diff --git a/arch/mips/kernel/binfmt_elfo32.c b/arch/mips/kernel/binfmt_elfo32.c | 5413 | diff --git a/arch/mips/kernel/binfmt_elfo32.c b/arch/mips/kernel/binfmt_elfo32.c |
5331 | index 556a435..b4fd2e3 100644 | 5414 | index 202e581..689ca79 100644 |
5332 | --- a/arch/mips/kernel/binfmt_elfo32.c | 5415 | --- a/arch/mips/kernel/binfmt_elfo32.c |
5333 | +++ b/arch/mips/kernel/binfmt_elfo32.c | 5416 | +++ b/arch/mips/kernel/binfmt_elfo32.c |
5334 | @@ -52,6 +52,13 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG]; | 5417 | @@ -56,6 +56,13 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG]; |
5335 | #undef ELF_ET_DYN_BASE | 5418 | #undef ELF_ET_DYN_BASE |
5336 | #define ELF_ET_DYN_BASE (TASK32_SIZE / 3 * 2) | 5419 | #define ELF_ET_DYN_BASE (TASK32_SIZE / 3 * 2) |
5337 | 5420 | ||
@@ -5346,10 +5429,10 @@ index 556a435..b4fd2e3 100644 | |||
5346 | 5429 | ||
5347 | /* | 5430 | /* |
5348 | diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c | 5431 | diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c |
5349 | index 3be4405..a799827 100644 | 5432 | index c6a041d..b3e7318 100644 |
5350 | --- a/arch/mips/kernel/process.c | 5433 | --- a/arch/mips/kernel/process.c |
5351 | +++ b/arch/mips/kernel/process.c | 5434 | +++ b/arch/mips/kernel/process.c |
5352 | @@ -461,15 +461,3 @@ unsigned long get_wchan(struct task_struct *task) | 5435 | @@ -563,15 +563,3 @@ unsigned long get_wchan(struct task_struct *task) |
5353 | out: | 5436 | out: |
5354 | return pc; | 5437 | return pc; |
5355 | } | 5438 | } |
@@ -5393,7 +5476,7 @@ index 9c6299c..2fb4c22 100644 | |||
5393 | goto out; | 5476 | goto out; |
5394 | 5477 | ||
5395 | diff --git a/arch/mips/kernel/scall32-o32.S b/arch/mips/kernel/scall32-o32.S | 5478 | diff --git a/arch/mips/kernel/scall32-o32.S b/arch/mips/kernel/scall32-o32.S |
5396 | index 9ea2964..c4329c3 100644 | 5479 | index 9b36424..e7f4154 100644 |
5397 | --- a/arch/mips/kernel/scall32-o32.S | 5480 | --- a/arch/mips/kernel/scall32-o32.S |
5398 | +++ b/arch/mips/kernel/scall32-o32.S | 5481 | +++ b/arch/mips/kernel/scall32-o32.S |
5399 | @@ -52,7 +52,7 @@ NESTED(handle_sys, PT_SIZE, sp) | 5482 | @@ -52,7 +52,7 @@ NESTED(handle_sys, PT_SIZE, sp) |
@@ -5406,7 +5489,7 @@ index 9ea2964..c4329c3 100644 | |||
5406 | bnez t0, syscall_trace_entry # -> yes | 5489 | bnez t0, syscall_trace_entry # -> yes |
5407 | 5490 | ||
5408 | diff --git a/arch/mips/kernel/scall64-64.S b/arch/mips/kernel/scall64-64.S | 5491 | diff --git a/arch/mips/kernel/scall64-64.S b/arch/mips/kernel/scall64-64.S |
5409 | index 36cfd40..b1436e0 100644 | 5492 | index 97a5909..59622f8 100644 |
5410 | --- a/arch/mips/kernel/scall64-64.S | 5493 | --- a/arch/mips/kernel/scall64-64.S |
5411 | +++ b/arch/mips/kernel/scall64-64.S | 5494 | +++ b/arch/mips/kernel/scall64-64.S |
5412 | @@ -54,7 +54,7 @@ NESTED(handle_sys64, PT_SIZE, sp) | 5495 | @@ -54,7 +54,7 @@ NESTED(handle_sys64, PT_SIZE, sp) |
@@ -5419,7 +5502,7 @@ index 36cfd40..b1436e0 100644 | |||
5419 | and t0, t1, t0 | 5502 | and t0, t1, t0 |
5420 | bnez t0, syscall_trace_entry | 5503 | bnez t0, syscall_trace_entry |
5421 | diff --git a/arch/mips/kernel/scall64-n32.S b/arch/mips/kernel/scall64-n32.S | 5504 | diff --git a/arch/mips/kernel/scall64-n32.S b/arch/mips/kernel/scall64-n32.S |
5422 | index 693d60b..ae0ba75 100644 | 5505 | index edcb659..fb2ab09 100644 |
5423 | --- a/arch/mips/kernel/scall64-n32.S | 5506 | --- a/arch/mips/kernel/scall64-n32.S |
5424 | +++ b/arch/mips/kernel/scall64-n32.S | 5507 | +++ b/arch/mips/kernel/scall64-n32.S |
5425 | @@ -47,7 +47,7 @@ NESTED(handle_sysn32, PT_SIZE, sp) | 5508 | @@ -47,7 +47,7 @@ NESTED(handle_sysn32, PT_SIZE, sp) |
@@ -5432,7 +5515,7 @@ index 693d60b..ae0ba75 100644 | |||
5432 | and t0, t1, t0 | 5515 | and t0, t1, t0 |
5433 | bnez t0, n32_syscall_trace_entry | 5516 | bnez t0, n32_syscall_trace_entry |
5434 | diff --git a/arch/mips/kernel/scall64-o32.S b/arch/mips/kernel/scall64-o32.S | 5517 | diff --git a/arch/mips/kernel/scall64-o32.S b/arch/mips/kernel/scall64-o32.S |
5435 | index af8887f..611ccb6 100644 | 5518 | index 74f485d..47d2c38 100644 |
5436 | --- a/arch/mips/kernel/scall64-o32.S | 5519 | --- a/arch/mips/kernel/scall64-o32.S |
5437 | +++ b/arch/mips/kernel/scall64-o32.S | 5520 | +++ b/arch/mips/kernel/scall64-o32.S |
5438 | @@ -81,7 +81,7 @@ NESTED(handle_sys, PT_SIZE, sp) | 5521 | @@ -81,7 +81,7 @@ NESTED(handle_sys, PT_SIZE, sp) |
@@ -5640,12 +5723,12 @@ index 4ce7a01..449202a 100644 | |||
5640 | 5723 | ||
5641 | #endif /* __ASM_OPENRISC_CACHE_H */ | 5724 | #endif /* __ASM_OPENRISC_CACHE_H */ |
5642 | diff --git a/arch/parisc/include/asm/atomic.h b/arch/parisc/include/asm/atomic.h | 5725 | diff --git a/arch/parisc/include/asm/atomic.h b/arch/parisc/include/asm/atomic.h |
5643 | index f38e198..4179e38 100644 | 5726 | index 472886c..00e7df9 100644 |
5644 | --- a/arch/parisc/include/asm/atomic.h | 5727 | --- a/arch/parisc/include/asm/atomic.h |
5645 | +++ b/arch/parisc/include/asm/atomic.h | 5728 | +++ b/arch/parisc/include/asm/atomic.h |
5646 | @@ -229,6 +229,16 @@ static __inline__ int atomic64_add_unless(atomic64_t *v, long a, long u) | 5729 | @@ -252,6 +252,16 @@ static inline long atomic64_dec_if_positive(atomic64_t *v) |
5647 | 5730 | return dec; | |
5648 | #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0) | 5731 | } |
5649 | 5732 | ||
5650 | +#define atomic64_read_unchecked(v) atomic64_read(v) | 5733 | +#define atomic64_read_unchecked(v) atomic64_read(v) |
5651 | +#define atomic64_set_unchecked(v, i) atomic64_set((v), (i)) | 5734 | +#define atomic64_set_unchecked(v, i) atomic64_set((v), (i)) |
@@ -5947,10 +6030,10 @@ index 5dfd248..64914ac 100644 | |||
5947 | return addr; | 6030 | return addr; |
5948 | } | 6031 | } |
5949 | diff --git a/arch/parisc/kernel/traps.c b/arch/parisc/kernel/traps.c | 6032 | diff --git a/arch/parisc/kernel/traps.c b/arch/parisc/kernel/traps.c |
5950 | index c6ae9f5..e9c3cf4 100644 | 6033 | index 04e47c6..7a8faf6 100644 |
5951 | --- a/arch/parisc/kernel/traps.c | 6034 | --- a/arch/parisc/kernel/traps.c |
5952 | +++ b/arch/parisc/kernel/traps.c | 6035 | +++ b/arch/parisc/kernel/traps.c |
5953 | @@ -733,9 +733,7 @@ void notrace handle_interruption(int code, struct pt_regs *regs) | 6036 | @@ -727,9 +727,7 @@ void notrace handle_interruption(int code, struct pt_regs *regs) |
5954 | 6037 | ||
5955 | down_read(¤t->mm->mmap_sem); | 6038 | down_read(¤t->mm->mmap_sem); |
5956 | vma = find_vma(current->mm,regs->iaoq[0]); | 6039 | vma = find_vma(current->mm,regs->iaoq[0]); |
@@ -6177,7 +6260,7 @@ index 9e495c9..b6878e5 100644 | |||
6177 | #define SMP_CACHE_BYTES L1_CACHE_BYTES | 6260 | #define SMP_CACHE_BYTES L1_CACHE_BYTES |
6178 | 6261 | ||
6179 | diff --git a/arch/powerpc/include/asm/elf.h b/arch/powerpc/include/asm/elf.h | 6262 | diff --git a/arch/powerpc/include/asm/elf.h b/arch/powerpc/include/asm/elf.h |
6180 | index ac9790f..6d30741 100644 | 6263 | index cc0655a..13eac2e 100644 |
6181 | --- a/arch/powerpc/include/asm/elf.h | 6264 | --- a/arch/powerpc/include/asm/elf.h |
6182 | +++ b/arch/powerpc/include/asm/elf.h | 6265 | +++ b/arch/powerpc/include/asm/elf.h |
6183 | @@ -28,8 +28,19 @@ | 6266 | @@ -28,8 +28,19 @@ |
@@ -6202,7 +6285,7 @@ index ac9790f..6d30741 100644 | |||
6202 | 6285 | ||
6203 | /* | 6286 | /* |
6204 | * Our registers are always unsigned longs, whether we're a 32 bit | 6287 | * Our registers are always unsigned longs, whether we're a 32 bit |
6205 | @@ -122,10 +133,6 @@ extern int arch_setup_additional_pages(struct linux_binprm *bprm, | 6288 | @@ -123,10 +134,6 @@ extern int arch_setup_additional_pages(struct linux_binprm *bprm, |
6206 | (0x7ff >> (PAGE_SHIFT - 12)) : \ | 6289 | (0x7ff >> (PAGE_SHIFT - 12)) : \ |
6207 | (0x3ffff >> (PAGE_SHIFT - 12))) | 6290 | (0x3ffff >> (PAGE_SHIFT - 12))) |
6208 | 6291 | ||
@@ -6252,7 +6335,7 @@ index 8565c25..2865190 100644 | |||
6252 | return (vm_flags & VM_SAO) ? __pgprot(_PAGE_SAO) : __pgprot(0); | 6335 | return (vm_flags & VM_SAO) ? __pgprot(_PAGE_SAO) : __pgprot(0); |
6253 | } | 6336 | } |
6254 | diff --git a/arch/powerpc/include/asm/page.h b/arch/powerpc/include/asm/page.h | 6337 | diff --git a/arch/powerpc/include/asm/page.h b/arch/powerpc/include/asm/page.h |
6255 | index f072e97..b436dee 100644 | 6338 | index 988c812..63c7d70 100644 |
6256 | --- a/arch/powerpc/include/asm/page.h | 6339 | --- a/arch/powerpc/include/asm/page.h |
6257 | +++ b/arch/powerpc/include/asm/page.h | 6340 | +++ b/arch/powerpc/include/asm/page.h |
6258 | @@ -220,8 +220,9 @@ extern long long virt_phys_offset; | 6341 | @@ -220,8 +220,9 @@ extern long long virt_phys_offset; |
@@ -6274,14 +6357,14 @@ index f072e97..b436dee 100644 | |||
6274 | +#define ktla_ktva(addr) (addr) | 6357 | +#define ktla_ktva(addr) (addr) |
6275 | +#define ktva_ktla(addr) (addr) | 6358 | +#define ktva_ktla(addr) (addr) |
6276 | + | 6359 | + |
6360 | #ifndef CONFIG_PPC_BOOK3S_64 | ||
6277 | /* | 6361 | /* |
6278 | * Use the top bit of the higher-level page table entries to indicate whether | 6362 | * Use the top bit of the higher-level page table entries to indicate whether |
6279 | * the entries we point to contain hugepages. This works because we know that | ||
6280 | diff --git a/arch/powerpc/include/asm/page_64.h b/arch/powerpc/include/asm/page_64.h | 6363 | diff --git a/arch/powerpc/include/asm/page_64.h b/arch/powerpc/include/asm/page_64.h |
6281 | index cd915d6..c10cee8 100644 | 6364 | index 88693ce..ac6f9ab 100644 |
6282 | --- a/arch/powerpc/include/asm/page_64.h | 6365 | --- a/arch/powerpc/include/asm/page_64.h |
6283 | +++ b/arch/powerpc/include/asm/page_64.h | 6366 | +++ b/arch/powerpc/include/asm/page_64.h |
6284 | @@ -154,15 +154,18 @@ do { \ | 6367 | @@ -153,15 +153,18 @@ do { \ |
6285 | * stack by default, so in the absence of a PT_GNU_STACK program header | 6368 | * stack by default, so in the absence of a PT_GNU_STACK program header |
6286 | * we turn execute permission off. | 6369 | * we turn execute permission off. |
6287 | */ | 6370 | */ |
@@ -6303,10 +6386,10 @@ index cd915d6..c10cee8 100644 | |||
6303 | #include <asm-generic/getorder.h> | 6386 | #include <asm-generic/getorder.h> |
6304 | 6387 | ||
6305 | diff --git a/arch/powerpc/include/asm/pgalloc-64.h b/arch/powerpc/include/asm/pgalloc-64.h | 6388 | diff --git a/arch/powerpc/include/asm/pgalloc-64.h b/arch/powerpc/include/asm/pgalloc-64.h |
6306 | index 292725c..f87ae14 100644 | 6389 | index b66ae72..4a378cd 100644 |
6307 | --- a/arch/powerpc/include/asm/pgalloc-64.h | 6390 | --- a/arch/powerpc/include/asm/pgalloc-64.h |
6308 | +++ b/arch/powerpc/include/asm/pgalloc-64.h | 6391 | +++ b/arch/powerpc/include/asm/pgalloc-64.h |
6309 | @@ -50,6 +50,7 @@ static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd) | 6392 | @@ -53,6 +53,7 @@ static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd) |
6310 | #ifndef CONFIG_PPC_64K_PAGES | 6393 | #ifndef CONFIG_PPC_64K_PAGES |
6311 | 6394 | ||
6312 | #define pgd_populate(MM, PGD, PUD) pgd_set(PGD, PUD) | 6395 | #define pgd_populate(MM, PGD, PUD) pgd_set(PGD, PUD) |
@@ -6314,7 +6397,7 @@ index 292725c..f87ae14 100644 | |||
6314 | 6397 | ||
6315 | static inline pud_t *pud_alloc_one(struct mm_struct *mm, unsigned long addr) | 6398 | static inline pud_t *pud_alloc_one(struct mm_struct *mm, unsigned long addr) |
6316 | { | 6399 | { |
6317 | @@ -67,6 +68,11 @@ static inline void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd) | 6400 | @@ -70,6 +71,11 @@ static inline void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd) |
6318 | pud_set(pud, (unsigned long)pmd); | 6401 | pud_set(pud, (unsigned long)pmd); |
6319 | } | 6402 | } |
6320 | 6403 | ||
@@ -6326,8 +6409,8 @@ index 292725c..f87ae14 100644 | |||
6326 | #define pmd_populate(mm, pmd, pte_page) \ | 6409 | #define pmd_populate(mm, pmd, pte_page) \ |
6327 | pmd_populate_kernel(mm, pmd, page_address(pte_page)) | 6410 | pmd_populate_kernel(mm, pmd, page_address(pte_page)) |
6328 | #define pmd_populate_kernel(mm, pmd, pte) pmd_set(pmd, (unsigned long)(pte)) | 6411 | #define pmd_populate_kernel(mm, pmd, pte) pmd_set(pmd, (unsigned long)(pte)) |
6329 | @@ -76,6 +82,7 @@ static inline void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd) | 6412 | @@ -171,6 +177,7 @@ extern void __tlb_remove_table(void *_table); |
6330 | #else /* CONFIG_PPC_64K_PAGES */ | 6413 | #endif |
6331 | 6414 | ||
6332 | #define pud_populate(mm, pud, pmd) pud_set(pud, (unsigned long)pmd) | 6415 | #define pud_populate(mm, pud, pmd) pud_set(pud, (unsigned long)pmd) |
6333 | +#define pud_populate_kernel(mm, pud, pmd) pud_populate((mm), (pud), (pmd)) | 6416 | +#define pud_populate_kernel(mm, pud, pmd) pud_populate((mm), (pud), (pmd)) |
@@ -6335,7 +6418,7 @@ index 292725c..f87ae14 100644 | |||
6335 | static inline void pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd, | 6418 | static inline void pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd, |
6336 | pte_t *pte) | 6419 | pte_t *pte) |
6337 | diff --git a/arch/powerpc/include/asm/pgtable.h b/arch/powerpc/include/asm/pgtable.h | 6420 | diff --git a/arch/powerpc/include/asm/pgtable.h b/arch/powerpc/include/asm/pgtable.h |
6338 | index a9cbd3b..3b67efa 100644 | 6421 | index 7aeb955..19f748e 100644 |
6339 | --- a/arch/powerpc/include/asm/pgtable.h | 6422 | --- a/arch/powerpc/include/asm/pgtable.h |
6340 | +++ b/arch/powerpc/include/asm/pgtable.h | 6423 | +++ b/arch/powerpc/include/asm/pgtable.h |
6341 | @@ -2,6 +2,7 @@ | 6424 | @@ -2,6 +2,7 @@ |
@@ -6359,7 +6442,7 @@ index 4aad413..85d86bf 100644 | |||
6359 | #define _PAGE_NO_CACHE 0x020 /* I: cache inhibit */ | 6442 | #define _PAGE_NO_CACHE 0x020 /* I: cache inhibit */ |
6360 | #define _PAGE_WRITETHRU 0x040 /* W: cache write-through */ | 6443 | #define _PAGE_WRITETHRU 0x040 /* W: cache write-through */ |
6361 | diff --git a/arch/powerpc/include/asm/reg.h b/arch/powerpc/include/asm/reg.h | 6444 | diff --git a/arch/powerpc/include/asm/reg.h b/arch/powerpc/include/asm/reg.h |
6362 | index 3b097a8..8f8c774 100644 | 6445 | index 362142b..8b22c1b 100644 |
6363 | --- a/arch/powerpc/include/asm/reg.h | 6446 | --- a/arch/powerpc/include/asm/reg.h |
6364 | +++ b/arch/powerpc/include/asm/reg.h | 6447 | +++ b/arch/powerpc/include/asm/reg.h |
6365 | @@ -234,6 +234,7 @@ | 6448 | @@ -234,6 +234,7 @@ |
@@ -6371,7 +6454,7 @@ index 3b097a8..8f8c774 100644 | |||
6371 | #define DSISR_ISSTORE 0x02000000 /* access was a store */ | 6454 | #define DSISR_ISSTORE 0x02000000 /* access was a store */ |
6372 | #define DSISR_DABRMATCH 0x00400000 /* hit data breakpoint */ | 6455 | #define DSISR_DABRMATCH 0x00400000 /* hit data breakpoint */ |
6373 | diff --git a/arch/powerpc/include/asm/smp.h b/arch/powerpc/include/asm/smp.h | 6456 | diff --git a/arch/powerpc/include/asm/smp.h b/arch/powerpc/include/asm/smp.h |
6374 | index 195ce2a..ab5c614 100644 | 6457 | index ffbaabe..eabe843 100644 |
6375 | --- a/arch/powerpc/include/asm/smp.h | 6458 | --- a/arch/powerpc/include/asm/smp.h |
6376 | +++ b/arch/powerpc/include/asm/smp.h | 6459 | +++ b/arch/powerpc/include/asm/smp.h |
6377 | @@ -50,7 +50,7 @@ struct smp_ops_t { | 6460 | @@ -50,7 +50,7 @@ struct smp_ops_t { |
@@ -6384,36 +6467,36 @@ index 195ce2a..ab5c614 100644 | |||
6384 | extern void smp_send_debugger_break(void); | 6467 | extern void smp_send_debugger_break(void); |
6385 | extern void start_secondary_resume(void); | 6468 | extern void start_secondary_resume(void); |
6386 | diff --git a/arch/powerpc/include/asm/thread_info.h b/arch/powerpc/include/asm/thread_info.h | 6469 | diff --git a/arch/powerpc/include/asm/thread_info.h b/arch/powerpc/include/asm/thread_info.h |
6387 | index 406b7b9..af63426 100644 | 6470 | index ba7b197..d292e26 100644 |
6388 | --- a/arch/powerpc/include/asm/thread_info.h | 6471 | --- a/arch/powerpc/include/asm/thread_info.h |
6389 | +++ b/arch/powerpc/include/asm/thread_info.h | 6472 | +++ b/arch/powerpc/include/asm/thread_info.h |
6390 | @@ -97,7 +97,6 @@ static inline struct thread_info *current_thread_info(void) | 6473 | @@ -93,7 +93,6 @@ static inline struct thread_info *current_thread_info(void) |
6474 | #define TIF_POLLING_NRFLAG 3 /* true if poll_idle() is polling | ||
6475 | TIF_NEED_RESCHED */ | ||
6476 | #define TIF_32BIT 4 /* 32 bit binary */ | ||
6477 | -#define TIF_PERFMON_WORK 5 /* work for pfm_handle_work() */ | ||
6391 | #define TIF_PERFMON_CTXSW 6 /* perfmon needs ctxsw calls */ | 6478 | #define TIF_PERFMON_CTXSW 6 /* perfmon needs ctxsw calls */ |
6392 | #define TIF_SYSCALL_AUDIT 7 /* syscall auditing active */ | 6479 | #define TIF_SYSCALL_AUDIT 7 /* syscall auditing active */ |
6393 | #define TIF_SINGLESTEP 8 /* singlestepping active */ | 6480 | #define TIF_SINGLESTEP 8 /* singlestepping active */ |
6394 | -#define TIF_MEMDIE 9 /* is terminating due to OOM killer */ | 6481 | @@ -107,6 +106,9 @@ static inline struct thread_info *current_thread_info(void) |
6395 | #define TIF_SECCOMP 10 /* secure computing */ | ||
6396 | #define TIF_RESTOREALL 11 /* Restore all regs (implies NOERROR) */ | ||
6397 | #define TIF_NOERROR 12 /* Force successful syscall return */ | ||
6398 | @@ -106,6 +105,9 @@ static inline struct thread_info *current_thread_info(void) | ||
6399 | #define TIF_SYSCALL_TRACEPOINT 15 /* syscall tracepoint instrumentation */ | ||
6400 | #define TIF_EMULATE_STACK_STORE 16 /* Is an instruction emulation | 6482 | #define TIF_EMULATE_STACK_STORE 16 /* Is an instruction emulation |
6401 | for stack store? */ | 6483 | for stack store? */ |
6402 | +#define TIF_MEMDIE 17 /* is terminating due to OOM killer */ | 6484 | #define TIF_MEMDIE 17 /* is terminating due to OOM killer */ |
6485 | +#define TIF_PERFMON_WORK 18 /* work for pfm_handle_work() */ | ||
6403 | +/* mask must be expressable within 16 bits to satisfy 'andi' instruction reqs */ | 6486 | +/* mask must be expressable within 16 bits to satisfy 'andi' instruction reqs */ |
6404 | +#define TIF_GRSEC_SETXID 9 /* update credentials on syscall entry/exit */ | 6487 | +#define TIF_GRSEC_SETXID 5 /* update credentials on syscall entry/exit */ |
6405 | 6488 | ||
6406 | /* as above, but as bit values */ | 6489 | /* as above, but as bit values */ |
6407 | #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) | 6490 | #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) |
6408 | @@ -124,8 +126,10 @@ static inline struct thread_info *current_thread_info(void) | 6491 | @@ -126,9 +128,10 @@ static inline struct thread_info *current_thread_info(void) |
6409 | #define _TIF_UPROBE (1<<TIF_UPROBE) | ||
6410 | #define _TIF_SYSCALL_TRACEPOINT (1<<TIF_SYSCALL_TRACEPOINT) | 6492 | #define _TIF_SYSCALL_TRACEPOINT (1<<TIF_SYSCALL_TRACEPOINT) |
6411 | #define _TIF_EMULATE_STACK_STORE (1<<TIF_EMULATE_STACK_STORE) | 6493 | #define _TIF_EMULATE_STACK_STORE (1<<TIF_EMULATE_STACK_STORE) |
6494 | #define _TIF_NOHZ (1<<TIF_NOHZ) | ||
6412 | +#define _TIF_GRSEC_SETXID (1<<TIF_GRSEC_SETXID) | 6495 | +#define _TIF_GRSEC_SETXID (1<<TIF_GRSEC_SETXID) |
6413 | #define _TIF_SYSCALL_T_OR_A (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT | \ | 6496 | #define _TIF_SYSCALL_T_OR_A (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT | \ |
6414 | - _TIF_SECCOMP | _TIF_SYSCALL_TRACEPOINT) | 6497 | _TIF_SECCOMP | _TIF_SYSCALL_TRACEPOINT | \ |
6415 | + _TIF_SECCOMP | _TIF_SYSCALL_TRACEPOINT | \ | 6498 | - _TIF_NOHZ) |
6416 | + _TIF_GRSEC_SETXID) | 6499 | + _TIF_NOHZ | _TIF_GRSEC_SETXID) |
6417 | 6500 | ||
6418 | #define _TIF_USER_WORK_MASK (_TIF_SIGPENDING | _TIF_NEED_RESCHED | \ | 6501 | #define _TIF_USER_WORK_MASK (_TIF_SIGPENDING | _TIF_NEED_RESCHED | \ |
6419 | _TIF_NOTIFY_RESUME | _TIF_UPROBE) | 6502 | _TIF_NOTIFY_RESUME | _TIF_UPROBE) |
@@ -6590,10 +6673,10 @@ index 4db4959..aba5c41 100644 | |||
6590 | 6673 | ||
6591 | static inline unsigned long clear_user(void __user *addr, unsigned long size) | 6674 | static inline unsigned long clear_user(void __user *addr, unsigned long size) |
6592 | diff --git a/arch/powerpc/kernel/exceptions-64e.S b/arch/powerpc/kernel/exceptions-64e.S | 6675 | diff --git a/arch/powerpc/kernel/exceptions-64e.S b/arch/powerpc/kernel/exceptions-64e.S |
6593 | index ae54553..cf2184d 100644 | 6676 | index 645170a..6cf0271 100644 |
6594 | --- a/arch/powerpc/kernel/exceptions-64e.S | 6677 | --- a/arch/powerpc/kernel/exceptions-64e.S |
6595 | +++ b/arch/powerpc/kernel/exceptions-64e.S | 6678 | +++ b/arch/powerpc/kernel/exceptions-64e.S |
6596 | @@ -716,6 +716,7 @@ storage_fault_common: | 6679 | @@ -757,6 +757,7 @@ storage_fault_common: |
6597 | std r14,_DAR(r1) | 6680 | std r14,_DAR(r1) |
6598 | std r15,_DSISR(r1) | 6681 | std r15,_DSISR(r1) |
6599 | addi r3,r1,STACK_FRAME_OVERHEAD | 6682 | addi r3,r1,STACK_FRAME_OVERHEAD |
@@ -6601,7 +6684,7 @@ index ae54553..cf2184d 100644 | |||
6601 | mr r4,r14 | 6684 | mr r4,r14 |
6602 | mr r5,r15 | 6685 | mr r5,r15 |
6603 | ld r14,PACA_EXGEN+EX_R14(r13) | 6686 | ld r14,PACA_EXGEN+EX_R14(r13) |
6604 | @@ -724,8 +725,7 @@ storage_fault_common: | 6687 | @@ -765,8 +766,7 @@ storage_fault_common: |
6605 | cmpdi r3,0 | 6688 | cmpdi r3,0 |
6606 | bne- 1f | 6689 | bne- 1f |
6607 | b .ret_from_except_lite | 6690 | b .ret_from_except_lite |
@@ -6612,10 +6695,10 @@ index ae54553..cf2184d 100644 | |||
6612 | ld r4,_DAR(r1) | 6695 | ld r4,_DAR(r1) |
6613 | bl .bad_page_fault | 6696 | bl .bad_page_fault |
6614 | diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S | 6697 | diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S |
6615 | index 644378e..b6f2c26 100644 | 6698 | index 4e00d22..b26abcc 100644 |
6616 | --- a/arch/powerpc/kernel/exceptions-64s.S | 6699 | --- a/arch/powerpc/kernel/exceptions-64s.S |
6617 | +++ b/arch/powerpc/kernel/exceptions-64s.S | 6700 | +++ b/arch/powerpc/kernel/exceptions-64s.S |
6618 | @@ -1390,10 +1390,10 @@ handle_page_fault: | 6701 | @@ -1356,10 +1356,10 @@ handle_page_fault: |
6619 | 11: ld r4,_DAR(r1) | 6702 | 11: ld r4,_DAR(r1) |
6620 | ld r5,_DSISR(r1) | 6703 | ld r5,_DSISR(r1) |
6621 | addi r3,r1,STACK_FRAME_OVERHEAD | 6704 | addi r3,r1,STACK_FRAME_OVERHEAD |
@@ -6661,10 +6744,10 @@ index 2e3200c..72095ce 100644 | |||
6661 | /* Find this entry, or if that fails, the next avail. entry */ | 6744 | /* Find this entry, or if that fails, the next avail. entry */ |
6662 | while (entry->jump[0]) { | 6745 | while (entry->jump[0]) { |
6663 | diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c | 6746 | diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c |
6664 | index 0d86c8a..df4c5f2 100644 | 6747 | index 076d124..6cb2cbf 100644 |
6665 | --- a/arch/powerpc/kernel/process.c | 6748 | --- a/arch/powerpc/kernel/process.c |
6666 | +++ b/arch/powerpc/kernel/process.c | 6749 | +++ b/arch/powerpc/kernel/process.c |
6667 | @@ -871,8 +871,8 @@ void show_regs(struct pt_regs * regs) | 6750 | @@ -874,8 +874,8 @@ void show_regs(struct pt_regs * regs) |
6668 | * Lookup NIP late so we have the best change of getting the | 6751 | * Lookup NIP late so we have the best change of getting the |
6669 | * above info out without failing | 6752 | * above info out without failing |
6670 | */ | 6753 | */ |
@@ -6675,7 +6758,7 @@ index 0d86c8a..df4c5f2 100644 | |||
6675 | #endif | 6758 | #endif |
6676 | #ifdef CONFIG_PPC_TRANSACTIONAL_MEM | 6759 | #ifdef CONFIG_PPC_TRANSACTIONAL_MEM |
6677 | printk("PACATMSCRATCH [%llx]\n", get_paca()->tm_scratch); | 6760 | printk("PACATMSCRATCH [%llx]\n", get_paca()->tm_scratch); |
6678 | @@ -1331,10 +1331,10 @@ void show_stack(struct task_struct *tsk, unsigned long *stack) | 6761 | @@ -1335,10 +1335,10 @@ void show_stack(struct task_struct *tsk, unsigned long *stack) |
6679 | newsp = stack[0]; | 6762 | newsp = stack[0]; |
6680 | ip = stack[STACK_FRAME_LR_SAVE]; | 6763 | ip = stack[STACK_FRAME_LR_SAVE]; |
6681 | if (!firstframe || ip != lr) { | 6764 | if (!firstframe || ip != lr) { |
@@ -6688,7 +6771,7 @@ index 0d86c8a..df4c5f2 100644 | |||
6688 | (void *)current->ret_stack[curr_frame].ret); | 6771 | (void *)current->ret_stack[curr_frame].ret); |
6689 | curr_frame--; | 6772 | curr_frame--; |
6690 | } | 6773 | } |
6691 | @@ -1354,7 +1354,7 @@ void show_stack(struct task_struct *tsk, unsigned long *stack) | 6774 | @@ -1358,7 +1358,7 @@ void show_stack(struct task_struct *tsk, unsigned long *stack) |
6692 | struct pt_regs *regs = (struct pt_regs *) | 6775 | struct pt_regs *regs = (struct pt_regs *) |
6693 | (sp + STACK_FRAME_OVERHEAD); | 6776 | (sp + STACK_FRAME_OVERHEAD); |
6694 | lr = regs->link; | 6777 | lr = regs->link; |
@@ -6697,7 +6780,7 @@ index 0d86c8a..df4c5f2 100644 | |||
6697 | regs->trap, (void *)regs->nip, (void *)lr); | 6780 | regs->trap, (void *)regs->nip, (void *)lr); |
6698 | firstframe = 1; | 6781 | firstframe = 1; |
6699 | } | 6782 | } |
6700 | @@ -1396,58 +1396,3 @@ void notrace __ppc64_runlatch_off(void) | 6783 | @@ -1394,58 +1394,3 @@ void notrace __ppc64_runlatch_off(void) |
6701 | mtspr(SPRN_CTRLT, ctrl); | 6784 | mtspr(SPRN_CTRLT, ctrl); |
6702 | } | 6785 | } |
6703 | #endif /* CONFIG_PPC64 */ | 6786 | #endif /* CONFIG_PPC64 */ |
@@ -6757,10 +6840,10 @@ index 0d86c8a..df4c5f2 100644 | |||
6757 | - return ret; | 6840 | - return ret; |
6758 | -} | 6841 | -} |
6759 | diff --git a/arch/powerpc/kernel/ptrace.c b/arch/powerpc/kernel/ptrace.c | 6842 | diff --git a/arch/powerpc/kernel/ptrace.c b/arch/powerpc/kernel/ptrace.c |
6760 | index f9b30c6..d72e7a3 100644 | 6843 | index 64f7bd5..8dd550f 100644 |
6761 | --- a/arch/powerpc/kernel/ptrace.c | 6844 | --- a/arch/powerpc/kernel/ptrace.c |
6762 | +++ b/arch/powerpc/kernel/ptrace.c | 6845 | +++ b/arch/powerpc/kernel/ptrace.c |
6763 | @@ -1771,6 +1771,10 @@ long arch_ptrace(struct task_struct *child, long request, | 6846 | @@ -1783,6 +1783,10 @@ long arch_ptrace(struct task_struct *child, long request, |
6764 | return ret; | 6847 | return ret; |
6765 | } | 6848 | } |
6766 | 6849 | ||
@@ -6771,7 +6854,7 @@ index f9b30c6..d72e7a3 100644 | |||
6771 | /* | 6854 | /* |
6772 | * We must return the syscall number to actually look up in the table. | 6855 | * We must return the syscall number to actually look up in the table. |
6773 | * This can be -1L to skip running any syscall at all. | 6856 | * This can be -1L to skip running any syscall at all. |
6774 | @@ -1781,6 +1785,11 @@ long do_syscall_trace_enter(struct pt_regs *regs) | 6857 | @@ -1795,6 +1799,11 @@ long do_syscall_trace_enter(struct pt_regs *regs) |
6775 | 6858 | ||
6776 | secure_computing_strict(regs->gpr[0]); | 6859 | secure_computing_strict(regs->gpr[0]); |
6777 | 6860 | ||
@@ -6783,7 +6866,7 @@ index f9b30c6..d72e7a3 100644 | |||
6783 | if (test_thread_flag(TIF_SYSCALL_TRACE) && | 6866 | if (test_thread_flag(TIF_SYSCALL_TRACE) && |
6784 | tracehook_report_syscall_entry(regs)) | 6867 | tracehook_report_syscall_entry(regs)) |
6785 | /* | 6868 | /* |
6786 | @@ -1815,6 +1824,11 @@ void do_syscall_trace_leave(struct pt_regs *regs) | 6869 | @@ -1829,6 +1838,11 @@ void do_syscall_trace_leave(struct pt_regs *regs) |
6787 | { | 6870 | { |
6788 | int step; | 6871 | int step; |
6789 | 6872 | ||
@@ -6796,10 +6879,10 @@ index f9b30c6..d72e7a3 100644 | |||
6796 | 6879 | ||
6797 | if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT))) | 6880 | if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT))) |
6798 | diff --git a/arch/powerpc/kernel/signal_32.c b/arch/powerpc/kernel/signal_32.c | 6881 | diff --git a/arch/powerpc/kernel/signal_32.c b/arch/powerpc/kernel/signal_32.c |
6799 | index 201385c..0f01828 100644 | 6882 | index 0f83122..c0aca6a 100644 |
6800 | --- a/arch/powerpc/kernel/signal_32.c | 6883 | --- a/arch/powerpc/kernel/signal_32.c |
6801 | +++ b/arch/powerpc/kernel/signal_32.c | 6884 | +++ b/arch/powerpc/kernel/signal_32.c |
6802 | @@ -976,7 +976,7 @@ int handle_rt_signal32(unsigned long sig, struct k_sigaction *ka, | 6885 | @@ -987,7 +987,7 @@ int handle_rt_signal32(unsigned long sig, struct k_sigaction *ka, |
6803 | /* Save user registers on the stack */ | 6886 | /* Save user registers on the stack */ |
6804 | frame = &rt_sf->uc.uc_mcontext; | 6887 | frame = &rt_sf->uc.uc_mcontext; |
6805 | addr = frame; | 6888 | addr = frame; |
@@ -6809,10 +6892,10 @@ index 201385c..0f01828 100644 | |||
6809 | tramp = current->mm->context.vdso_base + vdso32_rt_sigtramp; | 6892 | tramp = current->mm->context.vdso_base + vdso32_rt_sigtramp; |
6810 | } else { | 6893 | } else { |
6811 | diff --git a/arch/powerpc/kernel/signal_64.c b/arch/powerpc/kernel/signal_64.c | 6894 | diff --git a/arch/powerpc/kernel/signal_64.c b/arch/powerpc/kernel/signal_64.c |
6812 | index 3459473..2d40783 100644 | 6895 | index 887e99d..310bc11 100644 |
6813 | --- a/arch/powerpc/kernel/signal_64.c | 6896 | --- a/arch/powerpc/kernel/signal_64.c |
6814 | +++ b/arch/powerpc/kernel/signal_64.c | 6897 | +++ b/arch/powerpc/kernel/signal_64.c |
6815 | @@ -749,7 +749,7 @@ int handle_rt_signal64(int signr, struct k_sigaction *ka, siginfo_t *info, | 6898 | @@ -751,7 +751,7 @@ int handle_rt_signal64(int signr, struct k_sigaction *ka, siginfo_t *info, |
6816 | #endif | 6899 | #endif |
6817 | 6900 | ||
6818 | /* Set up to return from userspace. */ | 6901 | /* Set up to return from userspace. */ |
@@ -6822,7 +6905,7 @@ index 3459473..2d40783 100644 | |||
6822 | } else { | 6905 | } else { |
6823 | err |= setup_trampoline(__NR_rt_sigreturn, &frame->tramp[0]); | 6906 | err |= setup_trampoline(__NR_rt_sigreturn, &frame->tramp[0]); |
6824 | diff --git a/arch/powerpc/kernel/sysfs.c b/arch/powerpc/kernel/sysfs.c | 6907 | diff --git a/arch/powerpc/kernel/sysfs.c b/arch/powerpc/kernel/sysfs.c |
6825 | index 3ce1f86..c30e629 100644 | 6908 | index e68a845..8b140e6 100644 |
6826 | --- a/arch/powerpc/kernel/sysfs.c | 6909 | --- a/arch/powerpc/kernel/sysfs.c |
6827 | +++ b/arch/powerpc/kernel/sysfs.c | 6910 | +++ b/arch/powerpc/kernel/sysfs.c |
6828 | @@ -522,7 +522,7 @@ static int __cpuinit sysfs_cpu_notify(struct notifier_block *self, | 6911 | @@ -522,7 +522,7 @@ static int __cpuinit sysfs_cpu_notify(struct notifier_block *self, |
@@ -6835,10 +6918,10 @@ index 3ce1f86..c30e629 100644 | |||
6835 | }; | 6918 | }; |
6836 | 6919 | ||
6837 | diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c | 6920 | diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c |
6838 | index bf33ace..e836d8b 100644 | 6921 | index e4f205a..8bfffb8 100644 |
6839 | --- a/arch/powerpc/kernel/traps.c | 6922 | --- a/arch/powerpc/kernel/traps.c |
6840 | +++ b/arch/powerpc/kernel/traps.c | 6923 | +++ b/arch/powerpc/kernel/traps.c |
6841 | @@ -142,6 +142,8 @@ static unsigned __kprobes long oops_begin(struct pt_regs *regs) | 6924 | @@ -143,6 +143,8 @@ static unsigned __kprobes long oops_begin(struct pt_regs *regs) |
6842 | return flags; | 6925 | return flags; |
6843 | } | 6926 | } |
6844 | 6927 | ||
@@ -6847,7 +6930,7 @@ index bf33ace..e836d8b 100644 | |||
6847 | static void __kprobes oops_end(unsigned long flags, struct pt_regs *regs, | 6930 | static void __kprobes oops_end(unsigned long flags, struct pt_regs *regs, |
6848 | int signr) | 6931 | int signr) |
6849 | { | 6932 | { |
6850 | @@ -191,6 +193,9 @@ static void __kprobes oops_end(unsigned long flags, struct pt_regs *regs, | 6933 | @@ -192,6 +194,9 @@ static void __kprobes oops_end(unsigned long flags, struct pt_regs *regs, |
6851 | panic("Fatal exception in interrupt"); | 6934 | panic("Fatal exception in interrupt"); |
6852 | if (panic_on_oops) | 6935 | if (panic_on_oops) |
6853 | panic("Fatal exception"); | 6936 | panic("Fatal exception"); |
@@ -6858,7 +6941,7 @@ index bf33ace..e836d8b 100644 | |||
6858 | } | 6941 | } |
6859 | 6942 | ||
6860 | diff --git a/arch/powerpc/kernel/vdso.c b/arch/powerpc/kernel/vdso.c | 6943 | diff --git a/arch/powerpc/kernel/vdso.c b/arch/powerpc/kernel/vdso.c |
6861 | index 1b2076f..835e4be 100644 | 6944 | index d4f463a..8fb7431 100644 |
6862 | --- a/arch/powerpc/kernel/vdso.c | 6945 | --- a/arch/powerpc/kernel/vdso.c |
6863 | +++ b/arch/powerpc/kernel/vdso.c | 6946 | +++ b/arch/powerpc/kernel/vdso.c |
6864 | @@ -34,6 +34,7 @@ | 6947 | @@ -34,6 +34,7 @@ |
@@ -6869,7 +6952,7 @@ index 1b2076f..835e4be 100644 | |||
6869 | 6952 | ||
6870 | #include "setup.h" | 6953 | #include "setup.h" |
6871 | 6954 | ||
6872 | @@ -218,7 +219,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) | 6955 | @@ -222,7 +223,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) |
6873 | vdso_base = VDSO32_MBASE; | 6956 | vdso_base = VDSO32_MBASE; |
6874 | #endif | 6957 | #endif |
6875 | 6958 | ||
@@ -6878,7 +6961,7 @@ index 1b2076f..835e4be 100644 | |||
6878 | 6961 | ||
6879 | /* vDSO has a problem and was disabled, just don't "enable" it for the | 6962 | /* vDSO has a problem and was disabled, just don't "enable" it for the |
6880 | * process | 6963 | * process |
6881 | @@ -238,7 +239,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) | 6964 | @@ -242,7 +243,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) |
6882 | vdso_base = get_unmapped_area(NULL, vdso_base, | 6965 | vdso_base = get_unmapped_area(NULL, vdso_base, |
6883 | (vdso_pages << PAGE_SHIFT) + | 6966 | (vdso_pages << PAGE_SHIFT) + |
6884 | ((VDSO_ALIGNMENT - 1) & PAGE_MASK), | 6967 | ((VDSO_ALIGNMENT - 1) & PAGE_MASK), |
@@ -6923,13 +7006,13 @@ index 5eea6f3..5d10396 100644 | |||
6923 | EXPORT_SYMBOL(copy_in_user); | 7006 | EXPORT_SYMBOL(copy_in_user); |
6924 | 7007 | ||
6925 | diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c | 7008 | diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c |
6926 | index 229951f..cdeca42 100644 | 7009 | index 8726779..a33c512 100644 |
6927 | --- a/arch/powerpc/mm/fault.c | 7010 | --- a/arch/powerpc/mm/fault.c |
6928 | +++ b/arch/powerpc/mm/fault.c | 7011 | +++ b/arch/powerpc/mm/fault.c |
6929 | @@ -32,6 +32,10 @@ | 7012 | @@ -33,6 +33,10 @@ |
6930 | #include <linux/perf_event.h> | ||
6931 | #include <linux/magic.h> | 7013 | #include <linux/magic.h> |
6932 | #include <linux/ratelimit.h> | 7014 | #include <linux/ratelimit.h> |
7015 | #include <linux/context_tracking.h> | ||
6933 | +#include <linux/slab.h> | 7016 | +#include <linux/slab.h> |
6934 | +#include <linux/pagemap.h> | 7017 | +#include <linux/pagemap.h> |
6935 | +#include <linux/compiler.h> | 7018 | +#include <linux/compiler.h> |
@@ -6937,7 +7020,7 @@ index 229951f..cdeca42 100644 | |||
6937 | 7020 | ||
6938 | #include <asm/firmware.h> | 7021 | #include <asm/firmware.h> |
6939 | #include <asm/page.h> | 7022 | #include <asm/page.h> |
6940 | @@ -68,6 +72,33 @@ static inline int notify_page_fault(struct pt_regs *regs) | 7023 | @@ -69,6 +73,33 @@ static inline int notify_page_fault(struct pt_regs *regs) |
6941 | } | 7024 | } |
6942 | #endif | 7025 | #endif |
6943 | 7026 | ||
@@ -6971,7 +7054,7 @@ index 229951f..cdeca42 100644 | |||
6971 | /* | 7054 | /* |
6972 | * Check whether the instruction at regs->nip is a store using | 7055 | * Check whether the instruction at regs->nip is a store using |
6973 | * an update addressing form which will update r1. | 7056 | * an update addressing form which will update r1. |
6974 | @@ -213,7 +244,7 @@ int __kprobes do_page_fault(struct pt_regs *regs, unsigned long address, | 7057 | @@ -216,7 +247,7 @@ int __kprobes do_page_fault(struct pt_regs *regs, unsigned long address, |
6975 | * indicate errors in DSISR but can validly be set in SRR1. | 7058 | * indicate errors in DSISR but can validly be set in SRR1. |
6976 | */ | 7059 | */ |
6977 | if (trap == 0x400) | 7060 | if (trap == 0x400) |
@@ -6980,7 +7063,7 @@ index 229951f..cdeca42 100644 | |||
6980 | else | 7063 | else |
6981 | is_write = error_code & DSISR_ISSTORE; | 7064 | is_write = error_code & DSISR_ISSTORE; |
6982 | #else | 7065 | #else |
6983 | @@ -364,7 +395,7 @@ good_area: | 7066 | @@ -371,7 +402,7 @@ good_area: |
6984 | * "undefined". Of those that can be set, this is the only | 7067 | * "undefined". Of those that can be set, this is the only |
6985 | * one which seems bad. | 7068 | * one which seems bad. |
6986 | */ | 7069 | */ |
@@ -6989,7 +7072,7 @@ index 229951f..cdeca42 100644 | |||
6989 | /* Guarded storage error. */ | 7072 | /* Guarded storage error. */ |
6990 | goto bad_area; | 7073 | goto bad_area; |
6991 | #endif /* CONFIG_8xx */ | 7074 | #endif /* CONFIG_8xx */ |
6992 | @@ -379,7 +410,7 @@ good_area: | 7075 | @@ -386,7 +417,7 @@ good_area: |
6993 | * processors use the same I/D cache coherency mechanism | 7076 | * processors use the same I/D cache coherency mechanism |
6994 | * as embedded. | 7077 | * as embedded. |
6995 | */ | 7078 | */ |
@@ -6998,7 +7081,7 @@ index 229951f..cdeca42 100644 | |||
6998 | goto bad_area; | 7081 | goto bad_area; |
6999 | #endif /* CONFIG_PPC_STD_MMU */ | 7082 | #endif /* CONFIG_PPC_STD_MMU */ |
7000 | 7083 | ||
7001 | @@ -462,6 +493,23 @@ bad_area: | 7084 | @@ -471,6 +502,23 @@ bad_area: |
7002 | bad_area_nosemaphore: | 7085 | bad_area_nosemaphore: |
7003 | /* User mode accesses cause a SIGSEGV */ | 7086 | /* User mode accesses cause a SIGSEGV */ |
7004 | if (user_mode(regs)) { | 7087 | if (user_mode(regs)) { |
@@ -7020,7 +7103,7 @@ index 229951f..cdeca42 100644 | |||
7020 | +#endif | 7103 | +#endif |
7021 | + | 7104 | + |
7022 | _exception(SIGSEGV, regs, code, address); | 7105 | _exception(SIGSEGV, regs, code, address); |
7023 | return 0; | 7106 | goto bail; |
7024 | } | 7107 | } |
7025 | diff --git a/arch/powerpc/mm/mmap_64.c b/arch/powerpc/mm/mmap_64.c | 7108 | diff --git a/arch/powerpc/mm/mmap_64.c b/arch/powerpc/mm/mmap_64.c |
7026 | index 67a42ed..cd463e0 100644 | 7109 | index 67a42ed..cd463e0 100644 |
@@ -7074,10 +7157,10 @@ index e779642..e5bb889 100644 | |||
7074 | }; | 7157 | }; |
7075 | 7158 | ||
7076 | diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c | 7159 | diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c |
7077 | index 6a252c4..3024d81 100644 | 7160 | index 2859a1f..74f9a6e 100644 |
7078 | --- a/arch/powerpc/mm/numa.c | 7161 | --- a/arch/powerpc/mm/numa.c |
7079 | +++ b/arch/powerpc/mm/numa.c | 7162 | +++ b/arch/powerpc/mm/numa.c |
7080 | @@ -932,7 +932,7 @@ static void __init *careful_zallocation(int nid, unsigned long size, | 7163 | @@ -919,7 +919,7 @@ static void __init *careful_zallocation(int nid, unsigned long size, |
7081 | return ret; | 7164 | return ret; |
7082 | } | 7165 | } |
7083 | 7166 | ||
@@ -7087,7 +7170,7 @@ index 6a252c4..3024d81 100644 | |||
7087 | .priority = 1 /* Must run before sched domains notifier. */ | 7170 | .priority = 1 /* Must run before sched domains notifier. */ |
7088 | }; | 7171 | }; |
7089 | diff --git a/arch/powerpc/mm/slice.c b/arch/powerpc/mm/slice.c | 7172 | diff --git a/arch/powerpc/mm/slice.c b/arch/powerpc/mm/slice.c |
7090 | index cf9dada..241529f 100644 | 7173 | index 3e99c14..f00953c 100644 |
7091 | --- a/arch/powerpc/mm/slice.c | 7174 | --- a/arch/powerpc/mm/slice.c |
7092 | +++ b/arch/powerpc/mm/slice.c | 7175 | +++ b/arch/powerpc/mm/slice.c |
7093 | @@ -103,7 +103,7 @@ static int slice_area_is_free(struct mm_struct *mm, unsigned long addr, | 7176 | @@ -103,7 +103,7 @@ static int slice_area_is_free(struct mm_struct *mm, unsigned long addr, |
@@ -7099,52 +7182,20 @@ index cf9dada..241529f 100644 | |||
7099 | } | 7182 | } |
7100 | 7183 | ||
7101 | static int slice_low_has_vma(struct mm_struct *mm, unsigned long slice) | 7184 | static int slice_low_has_vma(struct mm_struct *mm, unsigned long slice) |
7102 | @@ -272,7 +272,7 @@ full_search: | 7185 | @@ -277,6 +277,12 @@ static unsigned long slice_find_area_bottomup(struct mm_struct *mm, |
7103 | addr = _ALIGN_UP(addr + 1, 1ul << SLICE_HIGH_SHIFT); | 7186 | info.align_offset = 0; |
7104 | continue; | ||
7105 | } | ||
7106 | - if (!vma || addr + len <= vma->vm_start) { | ||
7107 | + if (check_heap_stack_gap(vma, addr, len, 0)) { | ||
7108 | /* | ||
7109 | * Remember the place where we stopped the search: | ||
7110 | */ | ||
7111 | @@ -329,10 +329,14 @@ static unsigned long slice_find_area_topdown(struct mm_struct *mm, | ||
7112 | } | ||
7113 | } | ||
7114 | 7187 | ||
7115 | - addr = mm->mmap_base; | 7188 | addr = TASK_UNMAPPED_BASE; |
7116 | - while (addr > len) { | ||
7117 | + if (mm->mmap_base < len) | ||
7118 | + addr = -ENOMEM; | ||
7119 | + else | ||
7120 | + addr = mm->mmap_base - len; | ||
7121 | + | 7189 | + |
7122 | + while (!IS_ERR_VALUE(addr)) { | 7190 | +#ifdef CONFIG_PAX_RANDMMAP |
7123 | /* Go down by chunk size */ | 7191 | + if (mm->pax_flags & MF_PAX_RANDMMAP) |
7124 | - addr = _ALIGN_DOWN(addr - len, 1ul << pshift); | 7192 | + addr += mm->delta_mmap; |
7125 | + addr = _ALIGN_DOWN(addr, 1ul << pshift); | 7193 | +#endif |
7126 | 7194 | + | |
7127 | /* Check for hit with different page size */ | 7195 | while (addr < TASK_SIZE) { |
7128 | mask = slice_range_to_mask(addr, len); | 7196 | info.low_limit = addr; |
7129 | @@ -352,7 +356,7 @@ static unsigned long slice_find_area_topdown(struct mm_struct *mm, | 7197 | if (!slice_scan_available(addr, available, 1, &addr)) |
7130 | * return with success: | 7198 | @@ -410,6 +416,11 @@ unsigned long slice_get_unmapped_area(unsigned long addr, unsigned long len, |
7131 | */ | ||
7132 | vma = find_vma(mm, addr); | ||
7133 | - if (!vma || (addr + len) <= vma->vm_start) { | ||
7134 | + if (check_heap_stack_gap(vma, addr, len, 0)) { | ||
7135 | /* remember the address as a hint for next time */ | ||
7136 | if (use_cache) | ||
7137 | mm->free_area_cache = addr; | ||
7138 | @@ -364,7 +368,7 @@ static unsigned long slice_find_area_topdown(struct mm_struct *mm, | ||
7139 | mm->cached_hole_size = vma->vm_start - addr; | ||
7140 | |||
7141 | /* try just below the current vma->vm_start */ | ||
7142 | - addr = vma->vm_start; | ||
7143 | + addr = skip_heap_stack_gap(vma, len, 0); | ||
7144 | } | ||
7145 | |||
7146 | /* | ||
7147 | @@ -442,6 +446,11 @@ unsigned long slice_get_unmapped_area(unsigned long addr, unsigned long len, | ||
7148 | if (fixed && addr > (mm->task_size - len)) | 7199 | if (fixed && addr > (mm->task_size - len)) |
7149 | return -EINVAL; | 7200 | return -EINVAL; |
7150 | 7201 | ||
@@ -7157,10 +7208,10 @@ index cf9dada..241529f 100644 | |||
7157 | if (!fixed && addr) { | 7208 | if (!fixed && addr) { |
7158 | addr = _ALIGN_UP(addr, 1ul << pshift); | 7209 | addr = _ALIGN_UP(addr, 1ul << pshift); |
7159 | diff --git a/arch/powerpc/platforms/cell/spufs/file.c b/arch/powerpc/platforms/cell/spufs/file.c | 7210 | diff --git a/arch/powerpc/platforms/cell/spufs/file.c b/arch/powerpc/platforms/cell/spufs/file.c |
7160 | index 68c57d3..1fdcfb2 100644 | 7211 | index 9098692..3d54cd1 100644 |
7161 | --- a/arch/powerpc/platforms/cell/spufs/file.c | 7212 | --- a/arch/powerpc/platforms/cell/spufs/file.c |
7162 | +++ b/arch/powerpc/platforms/cell/spufs/file.c | 7213 | +++ b/arch/powerpc/platforms/cell/spufs/file.c |
7163 | @@ -281,9 +281,9 @@ spufs_mem_mmap_fault(struct vm_area_struct *vma, struct vm_fault *vmf) | 7214 | @@ -280,9 +280,9 @@ spufs_mem_mmap_fault(struct vm_area_struct *vma, struct vm_fault *vmf) |
7164 | return VM_FAULT_NOPAGE; | 7215 | return VM_FAULT_NOPAGE; |
7165 | } | 7216 | } |
7166 | 7217 | ||
@@ -7223,10 +7274,10 @@ index 4d7ccac..d03d0ad 100644 | |||
7223 | 7274 | ||
7224 | #define __read_mostly __attribute__((__section__(".data..read_mostly"))) | 7275 | #define __read_mostly __attribute__((__section__(".data..read_mostly"))) |
7225 | diff --git a/arch/s390/include/asm/elf.h b/arch/s390/include/asm/elf.h | 7276 | diff --git a/arch/s390/include/asm/elf.h b/arch/s390/include/asm/elf.h |
7226 | index 1bfdf24..9c9ab2e 100644 | 7277 | index 78f4f87..598ce39 100644 |
7227 | --- a/arch/s390/include/asm/elf.h | 7278 | --- a/arch/s390/include/asm/elf.h |
7228 | +++ b/arch/s390/include/asm/elf.h | 7279 | +++ b/arch/s390/include/asm/elf.h |
7229 | @@ -160,8 +160,14 @@ extern unsigned int vdso_enabled; | 7280 | @@ -162,8 +162,14 @@ extern unsigned int vdso_enabled; |
7230 | the loader. We need to make sure that it is out of the way of the program | 7281 | the loader. We need to make sure that it is out of the way of the program |
7231 | that it will "exec", and that there is sufficient room for the brk. */ | 7282 | that it will "exec", and that there is sufficient room for the brk. */ |
7232 | 7283 | ||
@@ -7243,7 +7294,7 @@ index 1bfdf24..9c9ab2e 100644 | |||
7243 | 7294 | ||
7244 | /* This yields a mask that user programs can use to figure out what | 7295 | /* This yields a mask that user programs can use to figure out what |
7245 | instruction set this CPU supports. */ | 7296 | instruction set this CPU supports. */ |
7246 | @@ -207,9 +213,6 @@ struct linux_binprm; | 7297 | @@ -222,9 +228,6 @@ struct linux_binprm; |
7247 | #define ARCH_HAS_SETUP_ADDITIONAL_PAGES 1 | 7298 | #define ARCH_HAS_SETUP_ADDITIONAL_PAGES 1 |
7248 | int arch_setup_additional_pages(struct linux_binprm *, int); | 7299 | int arch_setup_additional_pages(struct linux_binprm *, int); |
7249 | 7300 | ||
@@ -7383,10 +7434,10 @@ index 7845e15..59c4353 100644 | |||
7383 | if (r_type == R_390_GOTPC) | 7434 | if (r_type == R_390_GOTPC) |
7384 | rc = apply_rela_bits(loc, val, 1, 32, 0); | 7435 | rc = apply_rela_bits(loc, val, 1, 32, 0); |
7385 | diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c | 7436 | diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c |
7386 | index 536d645..4a5bd9e 100644 | 7437 | index 2bc3edd..ab9d598 100644 |
7387 | --- a/arch/s390/kernel/process.c | 7438 | --- a/arch/s390/kernel/process.c |
7388 | +++ b/arch/s390/kernel/process.c | 7439 | +++ b/arch/s390/kernel/process.c |
7389 | @@ -250,39 +250,3 @@ unsigned long get_wchan(struct task_struct *p) | 7440 | @@ -236,39 +236,3 @@ unsigned long get_wchan(struct task_struct *p) |
7390 | } | 7441 | } |
7391 | return 0; | 7442 | return 0; |
7392 | } | 7443 | } |
@@ -7504,10 +7555,10 @@ index f9f3cd5..58ff438 100644 | |||
7504 | 7555 | ||
7505 | #endif /* _ASM_SCORE_EXEC_H */ | 7556 | #endif /* _ASM_SCORE_EXEC_H */ |
7506 | diff --git a/arch/score/kernel/process.c b/arch/score/kernel/process.c | 7557 | diff --git a/arch/score/kernel/process.c b/arch/score/kernel/process.c |
7507 | index 7956846..5f37677 100644 | 7558 | index f4c6d02..e9355c3 100644 |
7508 | --- a/arch/score/kernel/process.c | 7559 | --- a/arch/score/kernel/process.c |
7509 | +++ b/arch/score/kernel/process.c | 7560 | +++ b/arch/score/kernel/process.c |
7510 | @@ -134,8 +134,3 @@ unsigned long get_wchan(struct task_struct *task) | 7561 | @@ -116,8 +116,3 @@ unsigned long get_wchan(struct task_struct *task) |
7511 | 7562 | ||
7512 | return task_pt_regs(task)->cp0_epc; | 7563 | return task_pt_regs(task)->cp0_epc; |
7513 | } | 7564 | } |
@@ -8053,7 +8104,7 @@ index 9689176..63c18ea 100644 | |||
8053 | unsigned long mask, tmp1, tmp2, result; | 8104 | unsigned long mask, tmp1, tmp2, result; |
8054 | 8105 | ||
8055 | diff --git a/arch/sparc/include/asm/thread_info_32.h b/arch/sparc/include/asm/thread_info_32.h | 8106 | diff --git a/arch/sparc/include/asm/thread_info_32.h b/arch/sparc/include/asm/thread_info_32.h |
8056 | index 25849ae..924c54b 100644 | 8107 | index dd38075..e7cac83 100644 |
8057 | --- a/arch/sparc/include/asm/thread_info_32.h | 8108 | --- a/arch/sparc/include/asm/thread_info_32.h |
8058 | +++ b/arch/sparc/include/asm/thread_info_32.h | 8109 | +++ b/arch/sparc/include/asm/thread_info_32.h |
8059 | @@ -49,6 +49,8 @@ struct thread_info { | 8110 | @@ -49,6 +49,8 @@ struct thread_info { |
@@ -8066,7 +8117,7 @@ index 25849ae..924c54b 100644 | |||
8066 | 8117 | ||
8067 | /* | 8118 | /* |
8068 | diff --git a/arch/sparc/include/asm/thread_info_64.h b/arch/sparc/include/asm/thread_info_64.h | 8119 | diff --git a/arch/sparc/include/asm/thread_info_64.h b/arch/sparc/include/asm/thread_info_64.h |
8069 | index 269bd92..e46a9b8 100644 | 8120 | index d5e5042..9bfee76 100644 |
8070 | --- a/arch/sparc/include/asm/thread_info_64.h | 8121 | --- a/arch/sparc/include/asm/thread_info_64.h |
8071 | +++ b/arch/sparc/include/asm/thread_info_64.h | 8122 | +++ b/arch/sparc/include/asm/thread_info_64.h |
8072 | @@ -63,6 +63,8 @@ struct thread_info { | 8123 | @@ -63,6 +63,8 @@ struct thread_info { |
@@ -8211,19 +8262,19 @@ index e562d3c..191f176 100644 | |||
8211 | { | 8262 | { |
8212 | - unsigned long ret = ___copy_to_user(to, from, size); | 8263 | - unsigned long ret = ___copy_to_user(to, from, size); |
8213 | + unsigned long ret; | 8264 | + unsigned long ret; |
8214 | + | 8265 | |
8215 | + if ((long)size < 0 || size > INT_MAX) | 8266 | + if ((long)size < 0 || size > INT_MAX) |
8216 | + return size; | 8267 | + return size; |
8217 | + | 8268 | + |
8218 | + if (!__builtin_constant_p(size)) | 8269 | + if (!__builtin_constant_p(size)) |
8219 | + check_object_size(from, size, true); | 8270 | + check_object_size(from, size, true); |
8220 | 8271 | + | |
8221 | + ret = ___copy_to_user(to, from, size); | 8272 | + ret = ___copy_to_user(to, from, size); |
8222 | if (unlikely(ret)) | 8273 | if (unlikely(ret)) |
8223 | ret = copy_to_user_fixup(to, from, size); | 8274 | ret = copy_to_user_fixup(to, from, size); |
8224 | return ret; | 8275 | return ret; |
8225 | diff --git a/arch/sparc/kernel/Makefile b/arch/sparc/kernel/Makefile | 8276 | diff --git a/arch/sparc/kernel/Makefile b/arch/sparc/kernel/Makefile |
8226 | index 6cf591b..b49e65a 100644 | 8277 | index d432fb2..6056af1 100644 |
8227 | --- a/arch/sparc/kernel/Makefile | 8278 | --- a/arch/sparc/kernel/Makefile |
8228 | +++ b/arch/sparc/kernel/Makefile | 8279 | +++ b/arch/sparc/kernel/Makefile |
8229 | @@ -3,7 +3,7 @@ | 8280 | @@ -3,7 +3,7 @@ |
@@ -8235,11 +8286,32 @@ index 6cf591b..b49e65a 100644 | |||
8235 | 8286 | ||
8236 | extra-y := head_$(BITS).o | 8287 | extra-y := head_$(BITS).o |
8237 | 8288 | ||
8289 | diff --git a/arch/sparc/kernel/ds.c b/arch/sparc/kernel/ds.c | ||
8290 | index 5ef48da..11d460f 100644 | ||
8291 | --- a/arch/sparc/kernel/ds.c | ||
8292 | +++ b/arch/sparc/kernel/ds.c | ||
8293 | @@ -783,6 +783,16 @@ void ldom_set_var(const char *var, const char *value) | ||
8294 | char *base, *p; | ||
8295 | int msg_len, loops; | ||
8296 | |||
8297 | + if (strlen(var) + strlen(value) + 2 > | ||
8298 | + sizeof(pkt) - sizeof(pkt.header)) { | ||
8299 | + printk(KERN_ERR PFX | ||
8300 | + "contents length: %zu, which more than max: %lu," | ||
8301 | + "so could not set (%s) variable to (%s).\n", | ||
8302 | + strlen(var) + strlen(value) + 2, | ||
8303 | + sizeof(pkt) - sizeof(pkt.header), var, value); | ||
8304 | + return; | ||
8305 | + } | ||
8306 | + | ||
8307 | memset(&pkt, 0, sizeof(pkt)); | ||
8308 | pkt.header.data.tag.type = DS_DATA; | ||
8309 | pkt.header.data.handle = cp->handle; | ||
8238 | diff --git a/arch/sparc/kernel/process_32.c b/arch/sparc/kernel/process_32.c | 8310 | diff --git a/arch/sparc/kernel/process_32.c b/arch/sparc/kernel/process_32.c |
8239 | index 62eede1..9c5b904 100644 | 8311 | index fdd819d..5af08c8 100644 |
8240 | --- a/arch/sparc/kernel/process_32.c | 8312 | --- a/arch/sparc/kernel/process_32.c |
8241 | +++ b/arch/sparc/kernel/process_32.c | 8313 | +++ b/arch/sparc/kernel/process_32.c |
8242 | @@ -125,14 +125,14 @@ void show_regs(struct pt_regs *r) | 8314 | @@ -116,14 +116,14 @@ void show_regs(struct pt_regs *r) |
8243 | 8315 | ||
8244 | printk("PSR: %08lx PC: %08lx NPC: %08lx Y: %08lx %s\n", | 8316 | printk("PSR: %08lx PC: %08lx NPC: %08lx Y: %08lx %s\n", |
8245 | r->psr, r->pc, r->npc, r->y, print_tainted()); | 8317 | r->psr, r->pc, r->npc, r->y, print_tainted()); |
@@ -8256,7 +8328,7 @@ index 62eede1..9c5b904 100644 | |||
8256 | 8328 | ||
8257 | printk("%%L: %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n", | 8329 | printk("%%L: %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n", |
8258 | rw->locals[0], rw->locals[1], rw->locals[2], rw->locals[3], | 8330 | rw->locals[0], rw->locals[1], rw->locals[2], rw->locals[3], |
8259 | @@ -167,7 +167,7 @@ void show_stack(struct task_struct *tsk, unsigned long *_ksp) | 8331 | @@ -160,7 +160,7 @@ void show_stack(struct task_struct *tsk, unsigned long *_ksp) |
8260 | rw = (struct reg_window32 *) fp; | 8332 | rw = (struct reg_window32 *) fp; |
8261 | pc = rw->ins[7]; | 8333 | pc = rw->ins[7]; |
8262 | printk("[%08lx : ", pc); | 8334 | printk("[%08lx : ", pc); |
@@ -8266,10 +8338,10 @@ index 62eede1..9c5b904 100644 | |||
8266 | } while (++count < 16); | 8338 | } while (++count < 16); |
8267 | printk("\n"); | 8339 | printk("\n"); |
8268 | diff --git a/arch/sparc/kernel/process_64.c b/arch/sparc/kernel/process_64.c | 8340 | diff --git a/arch/sparc/kernel/process_64.c b/arch/sparc/kernel/process_64.c |
8269 | index cdb80b2..5ca141d 100644 | 8341 | index baebab2..9cd13b1 100644 |
8270 | --- a/arch/sparc/kernel/process_64.c | 8342 | --- a/arch/sparc/kernel/process_64.c |
8271 | +++ b/arch/sparc/kernel/process_64.c | 8343 | +++ b/arch/sparc/kernel/process_64.c |
8272 | @@ -181,14 +181,14 @@ static void show_regwindow(struct pt_regs *regs) | 8344 | @@ -158,7 +158,7 @@ static void show_regwindow(struct pt_regs *regs) |
8273 | printk("i4: %016lx i5: %016lx i6: %016lx i7: %016lx\n", | 8345 | printk("i4: %016lx i5: %016lx i6: %016lx i7: %016lx\n", |
8274 | rwk->ins[4], rwk->ins[5], rwk->ins[6], rwk->ins[7]); | 8346 | rwk->ins[4], rwk->ins[5], rwk->ins[6], rwk->ins[7]); |
8275 | if (regs->tstate & TSTATE_PRIV) | 8347 | if (regs->tstate & TSTATE_PRIV) |
@@ -8278,7 +8350,8 @@ index cdb80b2..5ca141d 100644 | |||
8278 | } | 8350 | } |
8279 | 8351 | ||
8280 | void show_regs(struct pt_regs *regs) | 8352 | void show_regs(struct pt_regs *regs) |
8281 | { | 8353 | @@ -167,7 +167,7 @@ void show_regs(struct pt_regs *regs) |
8354 | |||
8282 | printk("TSTATE: %016lx TPC: %016lx TNPC: %016lx Y: %08x %s\n", regs->tstate, | 8355 | printk("TSTATE: %016lx TPC: %016lx TNPC: %016lx Y: %08x %s\n", regs->tstate, |
8283 | regs->tpc, regs->tnpc, regs->y, print_tainted()); | 8356 | regs->tpc, regs->tnpc, regs->y, print_tainted()); |
8284 | - printk("TPC: <%pS>\n", (void *) regs->tpc); | 8357 | - printk("TPC: <%pS>\n", (void *) regs->tpc); |
@@ -8286,7 +8359,7 @@ index cdb80b2..5ca141d 100644 | |||
8286 | printk("g0: %016lx g1: %016lx g2: %016lx g3: %016lx\n", | 8359 | printk("g0: %016lx g1: %016lx g2: %016lx g3: %016lx\n", |
8287 | regs->u_regs[0], regs->u_regs[1], regs->u_regs[2], | 8360 | regs->u_regs[0], regs->u_regs[1], regs->u_regs[2], |
8288 | regs->u_regs[3]); | 8361 | regs->u_regs[3]); |
8289 | @@ -201,7 +201,7 @@ void show_regs(struct pt_regs *regs) | 8362 | @@ -180,7 +180,7 @@ void show_regs(struct pt_regs *regs) |
8290 | printk("o4: %016lx o5: %016lx sp: %016lx ret_pc: %016lx\n", | 8363 | printk("o4: %016lx o5: %016lx sp: %016lx ret_pc: %016lx\n", |
8291 | regs->u_regs[12], regs->u_regs[13], regs->u_regs[14], | 8364 | regs->u_regs[12], regs->u_regs[13], regs->u_regs[14], |
8292 | regs->u_regs[15]); | 8365 | regs->u_regs[15]); |
@@ -8295,7 +8368,7 @@ index cdb80b2..5ca141d 100644 | |||
8295 | show_regwindow(regs); | 8368 | show_regwindow(regs); |
8296 | show_stack(current, (unsigned long *) regs->u_regs[UREG_FP]); | 8369 | show_stack(current, (unsigned long *) regs->u_regs[UREG_FP]); |
8297 | } | 8370 | } |
8298 | @@ -290,7 +290,7 @@ void arch_trigger_all_cpu_backtrace(void) | 8371 | @@ -269,7 +269,7 @@ void arch_trigger_all_cpu_backtrace(void) |
8299 | ((tp && tp->task) ? tp->task->pid : -1)); | 8372 | ((tp && tp->task) ? tp->task->pid : -1)); |
8300 | 8373 | ||
8301 | if (gp->tstate & TSTATE_PRIV) { | 8374 | if (gp->tstate & TSTATE_PRIV) { |
@@ -8305,10 +8378,10 @@ index cdb80b2..5ca141d 100644 | |||
8305 | (void *) gp->o7, | 8378 | (void *) gp->o7, |
8306 | (void *) gp->i7, | 8379 | (void *) gp->i7, |
8307 | diff --git a/arch/sparc/kernel/prom_common.c b/arch/sparc/kernel/prom_common.c | 8380 | diff --git a/arch/sparc/kernel/prom_common.c b/arch/sparc/kernel/prom_common.c |
8308 | index 9f20566..67eb41b 100644 | 8381 | index 79cc0d1..ec62734 100644 |
8309 | --- a/arch/sparc/kernel/prom_common.c | 8382 | --- a/arch/sparc/kernel/prom_common.c |
8310 | +++ b/arch/sparc/kernel/prom_common.c | 8383 | +++ b/arch/sparc/kernel/prom_common.c |
8311 | @@ -143,7 +143,7 @@ static int __init prom_common_nextprop(phandle node, char *prev, char *buf) | 8384 | @@ -144,7 +144,7 @@ static int __init prom_common_nextprop(phandle node, char *prev, char *buf) |
8312 | 8385 | ||
8313 | unsigned int prom_early_allocated __initdata; | 8386 | unsigned int prom_early_allocated __initdata; |
8314 | 8387 | ||
@@ -8370,7 +8443,7 @@ index 3a8d184..49498a8 100644 | |||
8370 | info.flags = 0; | 8443 | info.flags = 0; |
8371 | info.length = len; | 8444 | info.length = len; |
8372 | diff --git a/arch/sparc/kernel/sys_sparc_64.c b/arch/sparc/kernel/sys_sparc_64.c | 8445 | diff --git a/arch/sparc/kernel/sys_sparc_64.c b/arch/sparc/kernel/sys_sparc_64.c |
8373 | index 708bc29..6bfdfad 100644 | 8446 | index 2daaaa6..4fb84dc 100644 |
8374 | --- a/arch/sparc/kernel/sys_sparc_64.c | 8447 | --- a/arch/sparc/kernel/sys_sparc_64.c |
8375 | +++ b/arch/sparc/kernel/sys_sparc_64.c | 8448 | +++ b/arch/sparc/kernel/sys_sparc_64.c |
8376 | @@ -90,13 +90,14 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsi | 8449 | @@ -90,13 +90,14 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsi |
@@ -8491,7 +8564,12 @@ index 708bc29..6bfdfad 100644 | |||
8491 | info.high_limit = STACK_TOP32; | 8564 | info.high_limit = STACK_TOP32; |
8492 | addr = vm_unmapped_area(&info); | 8565 | addr = vm_unmapped_area(&info); |
8493 | } | 8566 | } |
8494 | @@ -264,6 +286,10 @@ static unsigned long mmap_rnd(void) | 8567 | @@ -260,10 +282,14 @@ unsigned long get_fb_unmapped_area(struct file *filp, unsigned long orig_addr, u |
8568 | EXPORT_SYMBOL(get_fb_unmapped_area); | ||
8569 | |||
8570 | /* Essentially the same as PowerPC. */ | ||
8571 | -static unsigned long mmap_rnd(void) | ||
8572 | +static unsigned long mmap_rnd(struct mm_struct *mm) | ||
8495 | { | 8573 | { |
8496 | unsigned long rnd = 0UL; | 8574 | unsigned long rnd = 0UL; |
8497 | 8575 | ||
@@ -8502,6 +8580,15 @@ index 708bc29..6bfdfad 100644 | |||
8502 | if (current->flags & PF_RANDOMIZE) { | 8580 | if (current->flags & PF_RANDOMIZE) { |
8503 | unsigned long val = get_random_int(); | 8581 | unsigned long val = get_random_int(); |
8504 | if (test_thread_flag(TIF_32BIT)) | 8582 | if (test_thread_flag(TIF_32BIT)) |
8583 | @@ -276,7 +302,7 @@ static unsigned long mmap_rnd(void) | ||
8584 | |||
8585 | void arch_pick_mmap_layout(struct mm_struct *mm) | ||
8586 | { | ||
8587 | - unsigned long random_factor = mmap_rnd(); | ||
8588 | + unsigned long random_factor = mmap_rnd(mm); | ||
8589 | unsigned long gap; | ||
8590 | |||
8591 | /* | ||
8505 | @@ -289,6 +315,12 @@ void arch_pick_mmap_layout(struct mm_struct *mm) | 8592 | @@ -289,6 +315,12 @@ void arch_pick_mmap_layout(struct mm_struct *mm) |
8506 | gap == RLIM_INFINITY || | 8593 | gap == RLIM_INFINITY || |
8507 | sysctl_legacy_va_layout) { | 8594 | sysctl_legacy_va_layout) { |
@@ -8615,7 +8702,7 @@ index 6629829..036032d 100644 | |||
8615 | } | 8702 | } |
8616 | 8703 | ||
8617 | diff --git a/arch/sparc/kernel/traps_64.c b/arch/sparc/kernel/traps_64.c | 8704 | diff --git a/arch/sparc/kernel/traps_64.c b/arch/sparc/kernel/traps_64.c |
8618 | index 8d38ca9..845b1d6 100644 | 8705 | index b3f833a..ac74b2d 100644 |
8619 | --- a/arch/sparc/kernel/traps_64.c | 8706 | --- a/arch/sparc/kernel/traps_64.c |
8620 | +++ b/arch/sparc/kernel/traps_64.c | 8707 | +++ b/arch/sparc/kernel/traps_64.c |
8621 | @@ -76,7 +76,7 @@ static void dump_tl1_traplog(struct tl1_traplog *p) | 8708 | @@ -76,7 +76,7 @@ static void dump_tl1_traplog(struct tl1_traplog *p) |
@@ -8725,7 +8812,7 @@ index 8d38ca9..845b1d6 100644 | |||
8725 | graph++; | 8812 | graph++; |
8726 | } | 8813 | } |
8727 | } | 8814 | } |
8728 | @@ -2367,6 +2378,8 @@ static inline struct reg_window *kernel_stack_up(struct reg_window *rw) | 8815 | @@ -2360,6 +2371,8 @@ static inline struct reg_window *kernel_stack_up(struct reg_window *rw) |
8729 | return (struct reg_window *) (fp + STACK_BIAS); | 8816 | return (struct reg_window *) (fp + STACK_BIAS); |
8730 | } | 8817 | } |
8731 | 8818 | ||
@@ -8734,7 +8821,7 @@ index 8d38ca9..845b1d6 100644 | |||
8734 | void die_if_kernel(char *str, struct pt_regs *regs) | 8821 | void die_if_kernel(char *str, struct pt_regs *regs) |
8735 | { | 8822 | { |
8736 | static int die_counter; | 8823 | static int die_counter; |
8737 | @@ -2395,7 +2408,7 @@ void die_if_kernel(char *str, struct pt_regs *regs) | 8824 | @@ -2388,7 +2401,7 @@ void die_if_kernel(char *str, struct pt_regs *regs) |
8738 | while (rw && | 8825 | while (rw && |
8739 | count++ < 30 && | 8826 | count++ < 30 && |
8740 | kstack_valid(tp, (unsigned long) rw)) { | 8827 | kstack_valid(tp, (unsigned long) rw)) { |
@@ -8743,7 +8830,7 @@ index 8d38ca9..845b1d6 100644 | |||
8743 | (void *) rw->ins[7]); | 8830 | (void *) rw->ins[7]); |
8744 | 8831 | ||
8745 | rw = kernel_stack_up(rw); | 8832 | rw = kernel_stack_up(rw); |
8746 | @@ -2408,8 +2421,10 @@ void die_if_kernel(char *str, struct pt_regs *regs) | 8833 | @@ -2401,8 +2414,10 @@ void die_if_kernel(char *str, struct pt_regs *regs) |
8747 | } | 8834 | } |
8748 | user_instruction_dump ((unsigned int __user *) regs->tpc); | 8835 | user_instruction_dump ((unsigned int __user *) regs->tpc); |
8749 | } | 8836 | } |
@@ -8768,117 +8855,8 @@ index 8201c25e..072a2a7 100644 | |||
8768 | regs->tpc, (void *) regs->tpc); | 8855 | regs->tpc, (void *) regs->tpc); |
8769 | } | 8856 | } |
8770 | } | 8857 | } |
8771 | diff --git a/arch/sparc/kernel/us3_cpufreq.c b/arch/sparc/kernel/us3_cpufreq.c | ||
8772 | index eb1624b..55100de 100644 | ||
8773 | --- a/arch/sparc/kernel/us3_cpufreq.c | ||
8774 | +++ b/arch/sparc/kernel/us3_cpufreq.c | ||
8775 | @@ -18,14 +18,12 @@ | ||
8776 | #include <asm/head.h> | ||
8777 | #include <asm/timer.h> | ||
8778 | |||
8779 | -static struct cpufreq_driver *cpufreq_us3_driver; | ||
8780 | - | ||
8781 | struct us3_freq_percpu_info { | ||
8782 | struct cpufreq_frequency_table table[4]; | ||
8783 | }; | ||
8784 | |||
8785 | /* Indexed by cpu number. */ | ||
8786 | -static struct us3_freq_percpu_info *us3_freq_table; | ||
8787 | +static struct us3_freq_percpu_info us3_freq_table[NR_CPUS]; | ||
8788 | |||
8789 | /* UltraSPARC-III has three dividers: 1, 2, and 32. These are controlled | ||
8790 | * in the Safari config register. | ||
8791 | @@ -191,12 +189,25 @@ static int __init us3_freq_cpu_init(struct cpufreq_policy *policy) | ||
8792 | |||
8793 | static int us3_freq_cpu_exit(struct cpufreq_policy *policy) | ||
8794 | { | ||
8795 | - if (cpufreq_us3_driver) | ||
8796 | - us3_set_cpu_divider_index(policy->cpu, 0); | ||
8797 | + us3_set_cpu_divider_index(policy->cpu, 0); | ||
8798 | |||
8799 | return 0; | ||
8800 | } | ||
8801 | |||
8802 | +static int __init us3_freq_init(void); | ||
8803 | +static void __exit us3_freq_exit(void); | ||
8804 | + | ||
8805 | +static struct cpufreq_driver cpufreq_us3_driver = { | ||
8806 | + .init = us3_freq_cpu_init, | ||
8807 | + .verify = us3_freq_verify, | ||
8808 | + .target = us3_freq_target, | ||
8809 | + .get = us3_freq_get, | ||
8810 | + .exit = us3_freq_cpu_exit, | ||
8811 | + .owner = THIS_MODULE, | ||
8812 | + .name = "UltraSPARC-III", | ||
8813 | + | ||
8814 | +}; | ||
8815 | + | ||
8816 | static int __init us3_freq_init(void) | ||
8817 | { | ||
8818 | unsigned long manuf, impl, ver; | ||
8819 | @@ -213,57 +224,15 @@ static int __init us3_freq_init(void) | ||
8820 | (impl == CHEETAH_IMPL || | ||
8821 | impl == CHEETAH_PLUS_IMPL || | ||
8822 | impl == JAGUAR_IMPL || | ||
8823 | - impl == PANTHER_IMPL)) { | ||
8824 | - struct cpufreq_driver *driver; | ||
8825 | - | ||
8826 | - ret = -ENOMEM; | ||
8827 | - driver = kzalloc(sizeof(struct cpufreq_driver), GFP_KERNEL); | ||
8828 | - if (!driver) | ||
8829 | - goto err_out; | ||
8830 | - | ||
8831 | - us3_freq_table = kzalloc( | ||
8832 | - (NR_CPUS * sizeof(struct us3_freq_percpu_info)), | ||
8833 | - GFP_KERNEL); | ||
8834 | - if (!us3_freq_table) | ||
8835 | - goto err_out; | ||
8836 | - | ||
8837 | - driver->init = us3_freq_cpu_init; | ||
8838 | - driver->verify = us3_freq_verify; | ||
8839 | - driver->target = us3_freq_target; | ||
8840 | - driver->get = us3_freq_get; | ||
8841 | - driver->exit = us3_freq_cpu_exit; | ||
8842 | - driver->owner = THIS_MODULE, | ||
8843 | - strcpy(driver->name, "UltraSPARC-III"); | ||
8844 | - | ||
8845 | - cpufreq_us3_driver = driver; | ||
8846 | - ret = cpufreq_register_driver(driver); | ||
8847 | - if (ret) | ||
8848 | - goto err_out; | ||
8849 | - | ||
8850 | - return 0; | ||
8851 | - | ||
8852 | -err_out: | ||
8853 | - if (driver) { | ||
8854 | - kfree(driver); | ||
8855 | - cpufreq_us3_driver = NULL; | ||
8856 | - } | ||
8857 | - kfree(us3_freq_table); | ||
8858 | - us3_freq_table = NULL; | ||
8859 | - return ret; | ||
8860 | - } | ||
8861 | + impl == PANTHER_IMPL)) | ||
8862 | + return cpufreq_register_driver(&cpufreq_us3_driver); | ||
8863 | |||
8864 | return -ENODEV; | ||
8865 | } | ||
8866 | |||
8867 | static void __exit us3_freq_exit(void) | ||
8868 | { | ||
8869 | - if (cpufreq_us3_driver) { | ||
8870 | - cpufreq_unregister_driver(cpufreq_us3_driver); | ||
8871 | - kfree(cpufreq_us3_driver); | ||
8872 | - cpufreq_us3_driver = NULL; | ||
8873 | - kfree(us3_freq_table); | ||
8874 | - us3_freq_table = NULL; | ||
8875 | - } | ||
8876 | + cpufreq_unregister_driver(&cpufreq_us3_driver); | ||
8877 | } | ||
8878 | |||
8879 | MODULE_AUTHOR("David S. Miller <davem@redhat.com>"); | ||
8880 | diff --git a/arch/sparc/lib/Makefile b/arch/sparc/lib/Makefile | 8858 | diff --git a/arch/sparc/lib/Makefile b/arch/sparc/lib/Makefile |
8881 | index 8410065f2..4fd4ca22 100644 | 8859 | index dbe119b..089c7c1 100644 |
8882 | --- a/arch/sparc/lib/Makefile | 8860 | --- a/arch/sparc/lib/Makefile |
8883 | +++ b/arch/sparc/lib/Makefile | 8861 | +++ b/arch/sparc/lib/Makefile |
8884 | @@ -2,7 +2,7 @@ | 8862 | @@ -2,7 +2,7 @@ |
@@ -10041,20 +10019,6 @@ index d2b5944..bd813f2 100644 | |||
10041 | return addr; | 10019 | return addr; |
10042 | } | 10020 | } |
10043 | if (mm->get_unmapped_area == arch_get_unmapped_area) | 10021 | if (mm->get_unmapped_area == arch_get_unmapped_area) |
10044 | diff --git a/arch/sparc/mm/tlb.c b/arch/sparc/mm/tlb.c | ||
10045 | index 83d89bc..37e7bc4 100644 | ||
10046 | --- a/arch/sparc/mm/tlb.c | ||
10047 | +++ b/arch/sparc/mm/tlb.c | ||
10048 | @@ -85,8 +85,8 @@ static void tlb_batch_add_one(struct mm_struct *mm, unsigned long vaddr, | ||
10049 | } | ||
10050 | |||
10051 | if (!tb->active) { | ||
10052 | - global_flush_tlb_page(mm, vaddr); | ||
10053 | flush_tsb_user_page(mm, vaddr); | ||
10054 | + global_flush_tlb_page(mm, vaddr); | ||
10055 | goto out; | ||
10056 | } | ||
10057 | |||
10058 | diff --git a/arch/tile/include/asm/atomic_64.h b/arch/tile/include/asm/atomic_64.h | 10022 | diff --git a/arch/tile/include/asm/atomic_64.h b/arch/tile/include/asm/atomic_64.h |
10059 | index f4500c6..889656c 100644 | 10023 | index f4500c6..889656c 100644 |
10060 | --- a/arch/tile/include/asm/atomic_64.h | 10024 | --- a/arch/tile/include/asm/atomic_64.h |
@@ -10095,10 +10059,10 @@ index a9a5299..0fce79e 100644 | |||
10095 | /* bytes per L2 cache line */ | 10059 | /* bytes per L2 cache line */ |
10096 | #define L2_CACHE_SHIFT CHIP_L2_LOG_LINE_SIZE() | 10060 | #define L2_CACHE_SHIFT CHIP_L2_LOG_LINE_SIZE() |
10097 | diff --git a/arch/tile/include/asm/uaccess.h b/arch/tile/include/asm/uaccess.h | 10061 | diff --git a/arch/tile/include/asm/uaccess.h b/arch/tile/include/asm/uaccess.h |
10098 | index 9ab078a..d6635c2 100644 | 10062 | index 8a082bc..7a6bf87 100644 |
10099 | --- a/arch/tile/include/asm/uaccess.h | 10063 | --- a/arch/tile/include/asm/uaccess.h |
10100 | +++ b/arch/tile/include/asm/uaccess.h | 10064 | +++ b/arch/tile/include/asm/uaccess.h |
10101 | @@ -403,9 +403,9 @@ static inline unsigned long __must_check copy_from_user(void *to, | 10065 | @@ -408,9 +408,9 @@ static inline unsigned long __must_check copy_from_user(void *to, |
10102 | const void __user *from, | 10066 | const void __user *from, |
10103 | unsigned long n) | 10067 | unsigned long n) |
10104 | { | 10068 | { |
@@ -10216,10 +10180,10 @@ index 0032f92..cd151e0 100644 | |||
10216 | #ifdef CONFIG_64BIT | 10180 | #ifdef CONFIG_64BIT |
10217 | #define set_pud(pudptr, pudval) set_64bit((u64 *) (pudptr), pud_val(pudval)) | 10181 | #define set_pud(pudptr, pudval) set_64bit((u64 *) (pudptr), pud_val(pudval)) |
10218 | diff --git a/arch/um/kernel/process.c b/arch/um/kernel/process.c | 10182 | diff --git a/arch/um/kernel/process.c b/arch/um/kernel/process.c |
10219 | index b462b13..e7a19aa 100644 | 10183 | index bbcef52..6a2a483 100644 |
10220 | --- a/arch/um/kernel/process.c | 10184 | --- a/arch/um/kernel/process.c |
10221 | +++ b/arch/um/kernel/process.c | 10185 | +++ b/arch/um/kernel/process.c |
10222 | @@ -386,22 +386,6 @@ int singlestepping(void * t) | 10186 | @@ -367,22 +367,6 @@ int singlestepping(void * t) |
10223 | return 2; | 10187 | return 2; |
10224 | } | 10188 | } |
10225 | 10189 | ||
@@ -10260,10 +10224,10 @@ index ad8f795..2c7eec6 100644 | |||
10260 | /* | 10224 | /* |
10261 | * Memory returned by kmalloc() may be used for DMA, so we must make | 10225 | * Memory returned by kmalloc() may be used for DMA, so we must make |
10262 | diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig | 10226 | diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig |
10263 | index de80b33..c0f0899 100644 | 10227 | index fe120da..24177f7 100644 |
10264 | --- a/arch/x86/Kconfig | 10228 | --- a/arch/x86/Kconfig |
10265 | +++ b/arch/x86/Kconfig | 10229 | +++ b/arch/x86/Kconfig |
10266 | @@ -243,7 +243,7 @@ config X86_HT | 10230 | @@ -239,7 +239,7 @@ config X86_HT |
10267 | 10231 | ||
10268 | config X86_32_LAZY_GS | 10232 | config X86_32_LAZY_GS |
10269 | def_bool y | 10233 | def_bool y |
@@ -10272,7 +10236,7 @@ index de80b33..c0f0899 100644 | |||
10272 | 10236 | ||
10273 | config ARCH_HWEIGHT_CFLAGS | 10237 | config ARCH_HWEIGHT_CFLAGS |
10274 | string | 10238 | string |
10275 | @@ -1076,6 +1076,7 @@ config MICROCODE_EARLY | 10239 | @@ -1073,6 +1073,7 @@ config MICROCODE_EARLY |
10276 | 10240 | ||
10277 | config X86_MSR | 10241 | config X86_MSR |
10278 | tristate "/dev/cpu/*/msr - Model-specific register support" | 10242 | tristate "/dev/cpu/*/msr - Model-specific register support" |
@@ -10280,7 +10244,7 @@ index de80b33..c0f0899 100644 | |||
10280 | ---help--- | 10244 | ---help--- |
10281 | This device gives privileged processes access to the x86 | 10245 | This device gives privileged processes access to the x86 |
10282 | Model-Specific Registers (MSRs). It is a character device with | 10246 | Model-Specific Registers (MSRs). It is a character device with |
10283 | @@ -1099,7 +1100,7 @@ choice | 10247 | @@ -1096,7 +1097,7 @@ choice |
10284 | 10248 | ||
10285 | config NOHIGHMEM | 10249 | config NOHIGHMEM |
10286 | bool "off" | 10250 | bool "off" |
@@ -10289,7 +10253,7 @@ index de80b33..c0f0899 100644 | |||
10289 | ---help--- | 10253 | ---help--- |
10290 | Linux can use up to 64 Gigabytes of physical memory on x86 systems. | 10254 | Linux can use up to 64 Gigabytes of physical memory on x86 systems. |
10291 | However, the address space of 32-bit x86 processors is only 4 | 10255 | However, the address space of 32-bit x86 processors is only 4 |
10292 | @@ -1136,7 +1137,7 @@ config NOHIGHMEM | 10256 | @@ -1133,7 +1134,7 @@ config NOHIGHMEM |
10293 | 10257 | ||
10294 | config HIGHMEM4G | 10258 | config HIGHMEM4G |
10295 | bool "4GB" | 10259 | bool "4GB" |
@@ -10298,7 +10262,7 @@ index de80b33..c0f0899 100644 | |||
10298 | ---help--- | 10262 | ---help--- |
10299 | Select this if you have a 32-bit processor and between 1 and 4 | 10263 | Select this if you have a 32-bit processor and between 1 and 4 |
10300 | gigabytes of physical RAM. | 10264 | gigabytes of physical RAM. |
10301 | @@ -1189,7 +1190,7 @@ config PAGE_OFFSET | 10265 | @@ -1186,7 +1187,7 @@ config PAGE_OFFSET |
10302 | hex | 10266 | hex |
10303 | default 0xB0000000 if VMSPLIT_3G_OPT | 10267 | default 0xB0000000 if VMSPLIT_3G_OPT |
10304 | default 0x80000000 if VMSPLIT_2G | 10268 | default 0x80000000 if VMSPLIT_2G |
@@ -10307,7 +10271,7 @@ index de80b33..c0f0899 100644 | |||
10307 | default 0x40000000 if VMSPLIT_1G | 10271 | default 0x40000000 if VMSPLIT_1G |
10308 | default 0xC0000000 | 10272 | default 0xC0000000 |
10309 | depends on X86_32 | 10273 | depends on X86_32 |
10310 | @@ -1587,6 +1588,7 @@ config SECCOMP | 10274 | @@ -1584,6 +1585,7 @@ config SECCOMP |
10311 | 10275 | ||
10312 | config CC_STACKPROTECTOR | 10276 | config CC_STACKPROTECTOR |
10313 | bool "Enable -fstack-protector buffer overflow detection" | 10277 | bool "Enable -fstack-protector buffer overflow detection" |
@@ -10315,7 +10279,7 @@ index de80b33..c0f0899 100644 | |||
10315 | ---help--- | 10279 | ---help--- |
10316 | This option turns on the -fstack-protector GCC feature. This | 10280 | This option turns on the -fstack-protector GCC feature. This |
10317 | feature puts, at the beginning of functions, a canary value on | 10281 | feature puts, at the beginning of functions, a canary value on |
10318 | @@ -1706,6 +1708,8 @@ config X86_NEED_RELOCS | 10282 | @@ -1703,6 +1705,8 @@ config X86_NEED_RELOCS |
10319 | config PHYSICAL_ALIGN | 10283 | config PHYSICAL_ALIGN |
10320 | hex "Alignment value to which kernel should be aligned" if X86_32 | 10284 | hex "Alignment value to which kernel should be aligned" if X86_32 |
10321 | default "0x1000000" | 10285 | default "0x1000000" |
@@ -10324,7 +10288,7 @@ index de80b33..c0f0899 100644 | |||
10324 | range 0x2000 0x1000000 | 10288 | range 0x2000 0x1000000 |
10325 | ---help--- | 10289 | ---help--- |
10326 | This value puts the alignment restrictions on physical address | 10290 | This value puts the alignment restrictions on physical address |
10327 | @@ -1781,9 +1785,10 @@ config DEBUG_HOTPLUG_CPU0 | 10291 | @@ -1778,9 +1782,10 @@ config DEBUG_HOTPLUG_CPU0 |
10328 | If unsure, say N. | 10292 | If unsure, say N. |
10329 | 10293 | ||
10330 | config COMPAT_VDSO | 10294 | config COMPAT_VDSO |
@@ -10368,7 +10332,7 @@ index c026cca..14657ae 100644 | |||
10368 | config X86_MINIMUM_CPU_FAMILY | 10332 | config X86_MINIMUM_CPU_FAMILY |
10369 | int | 10333 | int |
10370 | diff --git a/arch/x86/Kconfig.debug b/arch/x86/Kconfig.debug | 10334 | diff --git a/arch/x86/Kconfig.debug b/arch/x86/Kconfig.debug |
10371 | index b322f12..652d0d9 100644 | 10335 | index c198b7e..63eea60 100644 |
10372 | --- a/arch/x86/Kconfig.debug | 10336 | --- a/arch/x86/Kconfig.debug |
10373 | +++ b/arch/x86/Kconfig.debug | 10337 | +++ b/arch/x86/Kconfig.debug |
10374 | @@ -84,7 +84,7 @@ config X86_PTDUMP | 10338 | @@ -84,7 +84,7 @@ config X86_PTDUMP |
@@ -10389,15 +10353,6 @@ index b322f12..652d0d9 100644 | |||
10389 | ---help--- | 10353 | ---help--- |
10390 | This option helps catch unintended modifications to loadable | 10354 | This option helps catch unintended modifications to loadable |
10391 | kernel module's text and read-only data. It also prevents execution | 10355 | kernel module's text and read-only data. It also prevents execution |
10392 | @@ -294,7 +294,7 @@ config OPTIMIZE_INLINING | ||
10393 | |||
10394 | config DEBUG_STRICT_USER_COPY_CHECKS | ||
10395 | bool "Strict copy size checks" | ||
10396 | - depends on DEBUG_KERNEL && !TRACE_BRANCH_PROFILING | ||
10397 | + depends on DEBUG_KERNEL && !TRACE_BRANCH_PROFILING && !PAX_SIZE_OVERFLOW | ||
10398 | ---help--- | ||
10399 | Enabling this option turns a certain set of sanity checks for user | ||
10400 | copy operations into compile time failures. | ||
10401 | diff --git a/arch/x86/Makefile b/arch/x86/Makefile | 10356 | diff --git a/arch/x86/Makefile b/arch/x86/Makefile |
10402 | index 5c47726..8c4fa67 100644 | 10357 | index 5c47726..8c4fa67 100644 |
10403 | --- a/arch/x86/Makefile | 10358 | --- a/arch/x86/Makefile |
@@ -10496,7 +10451,7 @@ index 5ef205c..342191d 100644 | |||
10496 | KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__ | 10451 | KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__ |
10497 | GCOV_PROFILE := n | 10452 | GCOV_PROFILE := n |
10498 | diff --git a/arch/x86/boot/compressed/eboot.c b/arch/x86/boot/compressed/eboot.c | 10453 | diff --git a/arch/x86/boot/compressed/eboot.c b/arch/x86/boot/compressed/eboot.c |
10499 | index c205035..5853587 100644 | 10454 | index d606463..b887794 100644 |
10500 | --- a/arch/x86/boot/compressed/eboot.c | 10455 | --- a/arch/x86/boot/compressed/eboot.c |
10501 | +++ b/arch/x86/boot/compressed/eboot.c | 10456 | +++ b/arch/x86/boot/compressed/eboot.c |
10502 | @@ -150,7 +150,6 @@ again: | 10457 | @@ -150,7 +150,6 @@ again: |
@@ -10590,7 +10545,7 @@ index 1e3184f..0d11e2e 100644 | |||
10590 | jmp 1b | 10545 | jmp 1b |
10591 | 2: | 10546 | 2: |
10592 | diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S | 10547 | diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S |
10593 | index c1d383d..57ab51c 100644 | 10548 | index 16f24e6..47491a3 100644 |
10594 | --- a/arch/x86/boot/compressed/head_64.S | 10549 | --- a/arch/x86/boot/compressed/head_64.S |
10595 | +++ b/arch/x86/boot/compressed/head_64.S | 10550 | +++ b/arch/x86/boot/compressed/head_64.S |
10596 | @@ -97,7 +97,7 @@ ENTRY(startup_32) | 10551 | @@ -97,7 +97,7 @@ ENTRY(startup_32) |
@@ -10824,7 +10779,7 @@ index 9105655..5e37f27 100644 | |||
10824 | movq r1,r2; \ | 10779 | movq r1,r2; \ |
10825 | movq r3,r4; \ | 10780 | movq r3,r4; \ |
10826 | diff --git a/arch/x86/crypto/aesni-intel_asm.S b/arch/x86/crypto/aesni-intel_asm.S | 10781 | diff --git a/arch/x86/crypto/aesni-intel_asm.S b/arch/x86/crypto/aesni-intel_asm.S |
10827 | index 04b7977..402f223 100644 | 10782 | index 477e9d7..3ab339f 100644 |
10828 | --- a/arch/x86/crypto/aesni-intel_asm.S | 10783 | --- a/arch/x86/crypto/aesni-intel_asm.S |
10829 | +++ b/arch/x86/crypto/aesni-intel_asm.S | 10784 | +++ b/arch/x86/crypto/aesni-intel_asm.S |
10830 | @@ -31,6 +31,7 @@ | 10785 | @@ -31,6 +31,7 @@ |
@@ -10835,7 +10790,7 @@ index 04b7977..402f223 100644 | |||
10835 | 10790 | ||
10836 | #ifdef __x86_64__ | 10791 | #ifdef __x86_64__ |
10837 | .data | 10792 | .data |
10838 | @@ -1435,6 +1436,7 @@ _return_T_done_decrypt: | 10793 | @@ -1441,6 +1442,7 @@ _return_T_done_decrypt: |
10839 | pop %r14 | 10794 | pop %r14 |
10840 | pop %r13 | 10795 | pop %r13 |
10841 | pop %r12 | 10796 | pop %r12 |
@@ -10843,7 +10798,7 @@ index 04b7977..402f223 100644 | |||
10843 | ret | 10798 | ret |
10844 | ENDPROC(aesni_gcm_dec) | 10799 | ENDPROC(aesni_gcm_dec) |
10845 | 10800 | ||
10846 | @@ -1699,6 +1701,7 @@ _return_T_done_encrypt: | 10801 | @@ -1705,6 +1707,7 @@ _return_T_done_encrypt: |
10847 | pop %r14 | 10802 | pop %r14 |
10848 | pop %r13 | 10803 | pop %r13 |
10849 | pop %r12 | 10804 | pop %r12 |
@@ -10851,7 +10806,7 @@ index 04b7977..402f223 100644 | |||
10851 | ret | 10806 | ret |
10852 | ENDPROC(aesni_gcm_enc) | 10807 | ENDPROC(aesni_gcm_enc) |
10853 | 10808 | ||
10854 | @@ -1716,6 +1719,7 @@ _key_expansion_256a: | 10809 | @@ -1722,6 +1725,7 @@ _key_expansion_256a: |
10855 | pxor %xmm1, %xmm0 | 10810 | pxor %xmm1, %xmm0 |
10856 | movaps %xmm0, (TKEYP) | 10811 | movaps %xmm0, (TKEYP) |
10857 | add $0x10, TKEYP | 10812 | add $0x10, TKEYP |
@@ -10859,7 +10814,7 @@ index 04b7977..402f223 100644 | |||
10859 | ret | 10814 | ret |
10860 | ENDPROC(_key_expansion_128) | 10815 | ENDPROC(_key_expansion_128) |
10861 | ENDPROC(_key_expansion_256a) | 10816 | ENDPROC(_key_expansion_256a) |
10862 | @@ -1742,6 +1746,7 @@ _key_expansion_192a: | 10817 | @@ -1748,6 +1752,7 @@ _key_expansion_192a: |
10863 | shufps $0b01001110, %xmm2, %xmm1 | 10818 | shufps $0b01001110, %xmm2, %xmm1 |
10864 | movaps %xmm1, 0x10(TKEYP) | 10819 | movaps %xmm1, 0x10(TKEYP) |
10865 | add $0x20, TKEYP | 10820 | add $0x20, TKEYP |
@@ -10867,7 +10822,7 @@ index 04b7977..402f223 100644 | |||
10867 | ret | 10822 | ret |
10868 | ENDPROC(_key_expansion_192a) | 10823 | ENDPROC(_key_expansion_192a) |
10869 | 10824 | ||
10870 | @@ -1762,6 +1767,7 @@ _key_expansion_192b: | 10825 | @@ -1768,6 +1773,7 @@ _key_expansion_192b: |
10871 | 10826 | ||
10872 | movaps %xmm0, (TKEYP) | 10827 | movaps %xmm0, (TKEYP) |
10873 | add $0x10, TKEYP | 10828 | add $0x10, TKEYP |
@@ -10875,7 +10830,7 @@ index 04b7977..402f223 100644 | |||
10875 | ret | 10830 | ret |
10876 | ENDPROC(_key_expansion_192b) | 10831 | ENDPROC(_key_expansion_192b) |
10877 | 10832 | ||
10878 | @@ -1775,6 +1781,7 @@ _key_expansion_256b: | 10833 | @@ -1781,6 +1787,7 @@ _key_expansion_256b: |
10879 | pxor %xmm1, %xmm2 | 10834 | pxor %xmm1, %xmm2 |
10880 | movaps %xmm2, (TKEYP) | 10835 | movaps %xmm2, (TKEYP) |
10881 | add $0x10, TKEYP | 10836 | add $0x10, TKEYP |
@@ -10883,7 +10838,7 @@ index 04b7977..402f223 100644 | |||
10883 | ret | 10838 | ret |
10884 | ENDPROC(_key_expansion_256b) | 10839 | ENDPROC(_key_expansion_256b) |
10885 | 10840 | ||
10886 | @@ -1888,6 +1895,7 @@ ENTRY(aesni_set_key) | 10841 | @@ -1894,6 +1901,7 @@ ENTRY(aesni_set_key) |
10887 | #ifndef __x86_64__ | 10842 | #ifndef __x86_64__ |
10888 | popl KEYP | 10843 | popl KEYP |
10889 | #endif | 10844 | #endif |
@@ -10891,7 +10846,7 @@ index 04b7977..402f223 100644 | |||
10891 | ret | 10846 | ret |
10892 | ENDPROC(aesni_set_key) | 10847 | ENDPROC(aesni_set_key) |
10893 | 10848 | ||
10894 | @@ -1910,6 +1918,7 @@ ENTRY(aesni_enc) | 10849 | @@ -1916,6 +1924,7 @@ ENTRY(aesni_enc) |
10895 | popl KLEN | 10850 | popl KLEN |
10896 | popl KEYP | 10851 | popl KEYP |
10897 | #endif | 10852 | #endif |
@@ -10899,7 +10854,7 @@ index 04b7977..402f223 100644 | |||
10899 | ret | 10854 | ret |
10900 | ENDPROC(aesni_enc) | 10855 | ENDPROC(aesni_enc) |
10901 | 10856 | ||
10902 | @@ -1968,6 +1977,7 @@ _aesni_enc1: | 10857 | @@ -1974,6 +1983,7 @@ _aesni_enc1: |
10903 | AESENC KEY STATE | 10858 | AESENC KEY STATE |
10904 | movaps 0x70(TKEYP), KEY | 10859 | movaps 0x70(TKEYP), KEY |
10905 | AESENCLAST KEY STATE | 10860 | AESENCLAST KEY STATE |
@@ -10907,7 +10862,7 @@ index 04b7977..402f223 100644 | |||
10907 | ret | 10862 | ret |
10908 | ENDPROC(_aesni_enc1) | 10863 | ENDPROC(_aesni_enc1) |
10909 | 10864 | ||
10910 | @@ -2077,6 +2087,7 @@ _aesni_enc4: | 10865 | @@ -2083,6 +2093,7 @@ _aesni_enc4: |
10911 | AESENCLAST KEY STATE2 | 10866 | AESENCLAST KEY STATE2 |
10912 | AESENCLAST KEY STATE3 | 10867 | AESENCLAST KEY STATE3 |
10913 | AESENCLAST KEY STATE4 | 10868 | AESENCLAST KEY STATE4 |
@@ -10915,7 +10870,7 @@ index 04b7977..402f223 100644 | |||
10915 | ret | 10870 | ret |
10916 | ENDPROC(_aesni_enc4) | 10871 | ENDPROC(_aesni_enc4) |
10917 | 10872 | ||
10918 | @@ -2100,6 +2111,7 @@ ENTRY(aesni_dec) | 10873 | @@ -2106,6 +2117,7 @@ ENTRY(aesni_dec) |
10919 | popl KLEN | 10874 | popl KLEN |
10920 | popl KEYP | 10875 | popl KEYP |
10921 | #endif | 10876 | #endif |
@@ -10923,7 +10878,7 @@ index 04b7977..402f223 100644 | |||
10923 | ret | 10878 | ret |
10924 | ENDPROC(aesni_dec) | 10879 | ENDPROC(aesni_dec) |
10925 | 10880 | ||
10926 | @@ -2158,6 +2170,7 @@ _aesni_dec1: | 10881 | @@ -2164,6 +2176,7 @@ _aesni_dec1: |
10927 | AESDEC KEY STATE | 10882 | AESDEC KEY STATE |
10928 | movaps 0x70(TKEYP), KEY | 10883 | movaps 0x70(TKEYP), KEY |
10929 | AESDECLAST KEY STATE | 10884 | AESDECLAST KEY STATE |
@@ -10931,7 +10886,7 @@ index 04b7977..402f223 100644 | |||
10931 | ret | 10886 | ret |
10932 | ENDPROC(_aesni_dec1) | 10887 | ENDPROC(_aesni_dec1) |
10933 | 10888 | ||
10934 | @@ -2267,6 +2280,7 @@ _aesni_dec4: | 10889 | @@ -2273,6 +2286,7 @@ _aesni_dec4: |
10935 | AESDECLAST KEY STATE2 | 10890 | AESDECLAST KEY STATE2 |
10936 | AESDECLAST KEY STATE3 | 10891 | AESDECLAST KEY STATE3 |
10937 | AESDECLAST KEY STATE4 | 10892 | AESDECLAST KEY STATE4 |
@@ -10939,7 +10894,7 @@ index 04b7977..402f223 100644 | |||
10939 | ret | 10894 | ret |
10940 | ENDPROC(_aesni_dec4) | 10895 | ENDPROC(_aesni_dec4) |
10941 | 10896 | ||
10942 | @@ -2325,6 +2339,7 @@ ENTRY(aesni_ecb_enc) | 10897 | @@ -2331,6 +2345,7 @@ ENTRY(aesni_ecb_enc) |
10943 | popl KEYP | 10898 | popl KEYP |
10944 | popl LEN | 10899 | popl LEN |
10945 | #endif | 10900 | #endif |
@@ -10947,7 +10902,7 @@ index 04b7977..402f223 100644 | |||
10947 | ret | 10902 | ret |
10948 | ENDPROC(aesni_ecb_enc) | 10903 | ENDPROC(aesni_ecb_enc) |
10949 | 10904 | ||
10950 | @@ -2384,6 +2399,7 @@ ENTRY(aesni_ecb_dec) | 10905 | @@ -2390,6 +2405,7 @@ ENTRY(aesni_ecb_dec) |
10951 | popl KEYP | 10906 | popl KEYP |
10952 | popl LEN | 10907 | popl LEN |
10953 | #endif | 10908 | #endif |
@@ -10955,7 +10910,7 @@ index 04b7977..402f223 100644 | |||
10955 | ret | 10910 | ret |
10956 | ENDPROC(aesni_ecb_dec) | 10911 | ENDPROC(aesni_ecb_dec) |
10957 | 10912 | ||
10958 | @@ -2426,6 +2442,7 @@ ENTRY(aesni_cbc_enc) | 10913 | @@ -2432,6 +2448,7 @@ ENTRY(aesni_cbc_enc) |
10959 | popl LEN | 10914 | popl LEN |
10960 | popl IVP | 10915 | popl IVP |
10961 | #endif | 10916 | #endif |
@@ -10963,7 +10918,7 @@ index 04b7977..402f223 100644 | |||
10963 | ret | 10918 | ret |
10964 | ENDPROC(aesni_cbc_enc) | 10919 | ENDPROC(aesni_cbc_enc) |
10965 | 10920 | ||
10966 | @@ -2517,6 +2534,7 @@ ENTRY(aesni_cbc_dec) | 10921 | @@ -2523,6 +2540,7 @@ ENTRY(aesni_cbc_dec) |
10967 | popl LEN | 10922 | popl LEN |
10968 | popl IVP | 10923 | popl IVP |
10969 | #endif | 10924 | #endif |
@@ -10971,7 +10926,7 @@ index 04b7977..402f223 100644 | |||
10971 | ret | 10926 | ret |
10972 | ENDPROC(aesni_cbc_dec) | 10927 | ENDPROC(aesni_cbc_dec) |
10973 | 10928 | ||
10974 | @@ -2544,6 +2562,7 @@ _aesni_inc_init: | 10929 | @@ -2550,6 +2568,7 @@ _aesni_inc_init: |
10975 | mov $1, TCTR_LOW | 10930 | mov $1, TCTR_LOW |
10976 | MOVQ_R64_XMM TCTR_LOW INC | 10931 | MOVQ_R64_XMM TCTR_LOW INC |
10977 | MOVQ_R64_XMM CTR TCTR_LOW | 10932 | MOVQ_R64_XMM CTR TCTR_LOW |
@@ -10979,7 +10934,7 @@ index 04b7977..402f223 100644 | |||
10979 | ret | 10934 | ret |
10980 | ENDPROC(_aesni_inc_init) | 10935 | ENDPROC(_aesni_inc_init) |
10981 | 10936 | ||
10982 | @@ -2573,6 +2592,7 @@ _aesni_inc: | 10937 | @@ -2579,6 +2598,7 @@ _aesni_inc: |
10983 | .Linc_low: | 10938 | .Linc_low: |
10984 | movaps CTR, IV | 10939 | movaps CTR, IV |
10985 | PSHUFB_XMM BSWAP_MASK IV | 10940 | PSHUFB_XMM BSWAP_MASK IV |
@@ -10987,14 +10942,22 @@ index 04b7977..402f223 100644 | |||
10987 | ret | 10942 | ret |
10988 | ENDPROC(_aesni_inc) | 10943 | ENDPROC(_aesni_inc) |
10989 | 10944 | ||
10990 | @@ -2634,6 +2654,7 @@ ENTRY(aesni_ctr_enc) | 10945 | @@ -2640,6 +2660,7 @@ ENTRY(aesni_ctr_enc) |
10991 | .Lctr_enc_ret: | 10946 | .Lctr_enc_ret: |
10992 | movups IV, (IVP) | 10947 | movups IV, (IVP) |
10993 | .Lctr_enc_just_ret: | 10948 | .Lctr_enc_just_ret: |
10994 | + pax_force_retaddr 0, 1 | 10949 | + pax_force_retaddr 0, 1 |
10995 | ret | 10950 | ret |
10996 | ENDPROC(aesni_ctr_enc) | 10951 | ENDPROC(aesni_ctr_enc) |
10997 | #endif | 10952 | |
10953 | @@ -2766,6 +2787,7 @@ ENTRY(aesni_xts_crypt8) | ||
10954 | pxor INC, STATE4 | ||
10955 | movdqu STATE4, 0x70(OUTP) | ||
10956 | |||
10957 | + pax_force_retaddr 0, 1 | ||
10958 | ret | ||
10959 | ENDPROC(aesni_xts_crypt8) | ||
10960 | |||
10998 | diff --git a/arch/x86/crypto/blowfish-x86_64-asm_64.S b/arch/x86/crypto/blowfish-x86_64-asm_64.S | 10961 | diff --git a/arch/x86/crypto/blowfish-x86_64-asm_64.S b/arch/x86/crypto/blowfish-x86_64-asm_64.S |
10999 | index 246c670..4d1ed00 100644 | 10962 | index 246c670..4d1ed00 100644 |
11000 | --- a/arch/x86/crypto/blowfish-x86_64-asm_64.S | 10963 | --- a/arch/x86/crypto/blowfish-x86_64-asm_64.S |
@@ -11168,7 +11131,7 @@ index c35fd5d..c1ee236 100644 | |||
11168 | ret; | 11131 | ret; |
11169 | ENDPROC(cast5_ctr_16way) | 11132 | ENDPROC(cast5_ctr_16way) |
11170 | diff --git a/arch/x86/crypto/cast6-avx-x86_64-asm_64.S b/arch/x86/crypto/cast6-avx-x86_64-asm_64.S | 11133 | diff --git a/arch/x86/crypto/cast6-avx-x86_64-asm_64.S b/arch/x86/crypto/cast6-avx-x86_64-asm_64.S |
11171 | index f93b610..c09bf40 100644 | 11134 | index e3531f8..18ded3a 100644 |
11172 | --- a/arch/x86/crypto/cast6-avx-x86_64-asm_64.S | 11135 | --- a/arch/x86/crypto/cast6-avx-x86_64-asm_64.S |
11173 | +++ b/arch/x86/crypto/cast6-avx-x86_64-asm_64.S | 11136 | +++ b/arch/x86/crypto/cast6-avx-x86_64-asm_64.S |
11174 | @@ -24,6 +24,7 @@ | 11137 | @@ -24,6 +24,7 @@ |
@@ -11179,7 +11142,7 @@ index f93b610..c09bf40 100644 | |||
11179 | #include "glue_helper-asm-avx.S" | 11142 | #include "glue_helper-asm-avx.S" |
11180 | 11143 | ||
11181 | .file "cast6-avx-x86_64-asm_64.S" | 11144 | .file "cast6-avx-x86_64-asm_64.S" |
11182 | @@ -293,6 +294,7 @@ __cast6_enc_blk8: | 11145 | @@ -295,6 +296,7 @@ __cast6_enc_blk8: |
11183 | outunpack_blocks(RA1, RB1, RC1, RD1, RTMP, RX, RKRF, RKM); | 11146 | outunpack_blocks(RA1, RB1, RC1, RD1, RTMP, RX, RKRF, RKM); |
11184 | outunpack_blocks(RA2, RB2, RC2, RD2, RTMP, RX, RKRF, RKM); | 11147 | outunpack_blocks(RA2, RB2, RC2, RD2, RTMP, RX, RKRF, RKM); |
11185 | 11148 | ||
@@ -11187,7 +11150,7 @@ index f93b610..c09bf40 100644 | |||
11187 | ret; | 11150 | ret; |
11188 | ENDPROC(__cast6_enc_blk8) | 11151 | ENDPROC(__cast6_enc_blk8) |
11189 | 11152 | ||
11190 | @@ -338,6 +340,7 @@ __cast6_dec_blk8: | 11153 | @@ -340,6 +342,7 @@ __cast6_dec_blk8: |
11191 | outunpack_blocks(RA1, RB1, RC1, RD1, RTMP, RX, RKRF, RKM); | 11154 | outunpack_blocks(RA1, RB1, RC1, RD1, RTMP, RX, RKRF, RKM); |
11192 | outunpack_blocks(RA2, RB2, RC2, RD2, RTMP, RX, RKRF, RKM); | 11155 | outunpack_blocks(RA2, RB2, RC2, RD2, RTMP, RX, RKRF, RKM); |
11193 | 11156 | ||
@@ -11195,7 +11158,7 @@ index f93b610..c09bf40 100644 | |||
11195 | ret; | 11158 | ret; |
11196 | ENDPROC(__cast6_dec_blk8) | 11159 | ENDPROC(__cast6_dec_blk8) |
11197 | 11160 | ||
11198 | @@ -356,6 +359,7 @@ ENTRY(cast6_ecb_enc_8way) | 11161 | @@ -358,6 +361,7 @@ ENTRY(cast6_ecb_enc_8way) |
11199 | 11162 | ||
11200 | store_8way(%r11, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2); | 11163 | store_8way(%r11, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2); |
11201 | 11164 | ||
@@ -11203,7 +11166,7 @@ index f93b610..c09bf40 100644 | |||
11203 | ret; | 11166 | ret; |
11204 | ENDPROC(cast6_ecb_enc_8way) | 11167 | ENDPROC(cast6_ecb_enc_8way) |
11205 | 11168 | ||
11206 | @@ -374,6 +378,7 @@ ENTRY(cast6_ecb_dec_8way) | 11169 | @@ -376,6 +380,7 @@ ENTRY(cast6_ecb_dec_8way) |
11207 | 11170 | ||
11208 | store_8way(%r11, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2); | 11171 | store_8way(%r11, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2); |
11209 | 11172 | ||
@@ -11211,7 +11174,7 @@ index f93b610..c09bf40 100644 | |||
11211 | ret; | 11174 | ret; |
11212 | ENDPROC(cast6_ecb_dec_8way) | 11175 | ENDPROC(cast6_ecb_dec_8way) |
11213 | 11176 | ||
11214 | @@ -397,6 +402,7 @@ ENTRY(cast6_cbc_dec_8way) | 11177 | @@ -399,6 +404,7 @@ ENTRY(cast6_cbc_dec_8way) |
11215 | 11178 | ||
11216 | popq %r12; | 11179 | popq %r12; |
11217 | 11180 | ||
@@ -11219,13 +11182,29 @@ index f93b610..c09bf40 100644 | |||
11219 | ret; | 11182 | ret; |
11220 | ENDPROC(cast6_cbc_dec_8way) | 11183 | ENDPROC(cast6_cbc_dec_8way) |
11221 | 11184 | ||
11222 | @@ -422,5 +428,6 @@ ENTRY(cast6_ctr_8way) | 11185 | @@ -424,6 +430,7 @@ ENTRY(cast6_ctr_8way) |
11223 | 11186 | ||
11224 | popq %r12; | 11187 | popq %r12; |
11225 | 11188 | ||
11226 | + pax_force_retaddr | 11189 | + pax_force_retaddr |
11227 | ret; | 11190 | ret; |
11228 | ENDPROC(cast6_ctr_8way) | 11191 | ENDPROC(cast6_ctr_8way) |
11192 | |||
11193 | @@ -446,6 +453,7 @@ ENTRY(cast6_xts_enc_8way) | ||
11194 | /* dst <= regs xor IVs(in dst) */ | ||
11195 | store_xts_8way(%r11, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2); | ||
11196 | |||
11197 | + pax_force_retaddr | ||
11198 | ret; | ||
11199 | ENDPROC(cast6_xts_enc_8way) | ||
11200 | |||
11201 | @@ -468,5 +476,6 @@ ENTRY(cast6_xts_dec_8way) | ||
11202 | /* dst <= regs xor IVs(in dst) */ | ||
11203 | store_xts_8way(%r11, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2); | ||
11204 | |||
11205 | + pax_force_retaddr | ||
11206 | ret; | ||
11207 | ENDPROC(cast6_xts_dec_8way) | ||
11229 | diff --git a/arch/x86/crypto/salsa20-x86_64-asm_64.S b/arch/x86/crypto/salsa20-x86_64-asm_64.S | 11208 | diff --git a/arch/x86/crypto/salsa20-x86_64-asm_64.S b/arch/x86/crypto/salsa20-x86_64-asm_64.S |
11230 | index 9279e0b..9270820 100644 | 11209 | index 9279e0b..9270820 100644 |
11231 | --- a/arch/x86/crypto/salsa20-x86_64-asm_64.S | 11210 | --- a/arch/x86/crypto/salsa20-x86_64-asm_64.S |
@@ -11260,10 +11239,10 @@ index 9279e0b..9270820 100644 | |||
11260 | ret | 11239 | ret |
11261 | ENDPROC(salsa20_ivsetup) | 11240 | ENDPROC(salsa20_ivsetup) |
11262 | diff --git a/arch/x86/crypto/serpent-avx-x86_64-asm_64.S b/arch/x86/crypto/serpent-avx-x86_64-asm_64.S | 11241 | diff --git a/arch/x86/crypto/serpent-avx-x86_64-asm_64.S b/arch/x86/crypto/serpent-avx-x86_64-asm_64.S |
11263 | index 43c9386..a0e2d60 100644 | 11242 | index 2f202f4..d9164d6 100644 |
11264 | --- a/arch/x86/crypto/serpent-avx-x86_64-asm_64.S | 11243 | --- a/arch/x86/crypto/serpent-avx-x86_64-asm_64.S |
11265 | +++ b/arch/x86/crypto/serpent-avx-x86_64-asm_64.S | 11244 | +++ b/arch/x86/crypto/serpent-avx-x86_64-asm_64.S |
11266 | @@ -25,6 +25,7 @@ | 11245 | @@ -24,6 +24,7 @@ |
11267 | */ | 11246 | */ |
11268 | 11247 | ||
11269 | #include <linux/linkage.h> | 11248 | #include <linux/linkage.h> |
@@ -11271,7 +11250,7 @@ index 43c9386..a0e2d60 100644 | |||
11271 | #include "glue_helper-asm-avx.S" | 11250 | #include "glue_helper-asm-avx.S" |
11272 | 11251 | ||
11273 | .file "serpent-avx-x86_64-asm_64.S" | 11252 | .file "serpent-avx-x86_64-asm_64.S" |
11274 | @@ -617,6 +618,7 @@ __serpent_enc_blk8_avx: | 11253 | @@ -618,6 +619,7 @@ __serpent_enc_blk8_avx: |
11275 | write_blocks(RA1, RB1, RC1, RD1, RK0, RK1, RK2); | 11254 | write_blocks(RA1, RB1, RC1, RD1, RK0, RK1, RK2); |
11276 | write_blocks(RA2, RB2, RC2, RD2, RK0, RK1, RK2); | 11255 | write_blocks(RA2, RB2, RC2, RD2, RK0, RK1, RK2); |
11277 | 11256 | ||
@@ -11279,7 +11258,7 @@ index 43c9386..a0e2d60 100644 | |||
11279 | ret; | 11258 | ret; |
11280 | ENDPROC(__serpent_enc_blk8_avx) | 11259 | ENDPROC(__serpent_enc_blk8_avx) |
11281 | 11260 | ||
11282 | @@ -671,6 +673,7 @@ __serpent_dec_blk8_avx: | 11261 | @@ -672,6 +674,7 @@ __serpent_dec_blk8_avx: |
11283 | write_blocks(RC1, RD1, RB1, RE1, RK0, RK1, RK2); | 11262 | write_blocks(RC1, RD1, RB1, RE1, RK0, RK1, RK2); |
11284 | write_blocks(RC2, RD2, RB2, RE2, RK0, RK1, RK2); | 11263 | write_blocks(RC2, RD2, RB2, RE2, RK0, RK1, RK2); |
11285 | 11264 | ||
@@ -11287,7 +11266,7 @@ index 43c9386..a0e2d60 100644 | |||
11287 | ret; | 11266 | ret; |
11288 | ENDPROC(__serpent_dec_blk8_avx) | 11267 | ENDPROC(__serpent_dec_blk8_avx) |
11289 | 11268 | ||
11290 | @@ -687,6 +690,7 @@ ENTRY(serpent_ecb_enc_8way_avx) | 11269 | @@ -688,6 +691,7 @@ ENTRY(serpent_ecb_enc_8way_avx) |
11291 | 11270 | ||
11292 | store_8way(%rsi, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2); | 11271 | store_8way(%rsi, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2); |
11293 | 11272 | ||
@@ -11295,7 +11274,7 @@ index 43c9386..a0e2d60 100644 | |||
11295 | ret; | 11274 | ret; |
11296 | ENDPROC(serpent_ecb_enc_8way_avx) | 11275 | ENDPROC(serpent_ecb_enc_8way_avx) |
11297 | 11276 | ||
11298 | @@ -703,6 +707,7 @@ ENTRY(serpent_ecb_dec_8way_avx) | 11277 | @@ -704,6 +708,7 @@ ENTRY(serpent_ecb_dec_8way_avx) |
11299 | 11278 | ||
11300 | store_8way(%rsi, RC1, RD1, RB1, RE1, RC2, RD2, RB2, RE2); | 11279 | store_8way(%rsi, RC1, RD1, RB1, RE1, RC2, RD2, RB2, RE2); |
11301 | 11280 | ||
@@ -11303,7 +11282,7 @@ index 43c9386..a0e2d60 100644 | |||
11303 | ret; | 11282 | ret; |
11304 | ENDPROC(serpent_ecb_dec_8way_avx) | 11283 | ENDPROC(serpent_ecb_dec_8way_avx) |
11305 | 11284 | ||
11306 | @@ -719,6 +724,7 @@ ENTRY(serpent_cbc_dec_8way_avx) | 11285 | @@ -720,6 +725,7 @@ ENTRY(serpent_cbc_dec_8way_avx) |
11307 | 11286 | ||
11308 | store_cbc_8way(%rdx, %rsi, RC1, RD1, RB1, RE1, RC2, RD2, RB2, RE2); | 11287 | store_cbc_8way(%rdx, %rsi, RC1, RD1, RB1, RE1, RC2, RD2, RB2, RE2); |
11309 | 11288 | ||
@@ -11311,13 +11290,29 @@ index 43c9386..a0e2d60 100644 | |||
11311 | ret; | 11290 | ret; |
11312 | ENDPROC(serpent_cbc_dec_8way_avx) | 11291 | ENDPROC(serpent_cbc_dec_8way_avx) |
11313 | 11292 | ||
11314 | @@ -737,5 +743,6 @@ ENTRY(serpent_ctr_8way_avx) | 11293 | @@ -738,6 +744,7 @@ ENTRY(serpent_ctr_8way_avx) |
11315 | 11294 | ||
11316 | store_ctr_8way(%rdx, %rsi, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2); | 11295 | store_ctr_8way(%rdx, %rsi, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2); |
11317 | 11296 | ||
11318 | + pax_force_retaddr | 11297 | + pax_force_retaddr |
11319 | ret; | 11298 | ret; |
11320 | ENDPROC(serpent_ctr_8way_avx) | 11299 | ENDPROC(serpent_ctr_8way_avx) |
11300 | |||
11301 | @@ -758,6 +765,7 @@ ENTRY(serpent_xts_enc_8way_avx) | ||
11302 | /* dst <= regs xor IVs(in dst) */ | ||
11303 | store_xts_8way(%rsi, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2); | ||
11304 | |||
11305 | + pax_force_retaddr | ||
11306 | ret; | ||
11307 | ENDPROC(serpent_xts_enc_8way_avx) | ||
11308 | |||
11309 | @@ -778,5 +786,6 @@ ENTRY(serpent_xts_dec_8way_avx) | ||
11310 | /* dst <= regs xor IVs(in dst) */ | ||
11311 | store_xts_8way(%rsi, RC1, RD1, RB1, RE1, RC2, RD2, RB2, RE2); | ||
11312 | |||
11313 | + pax_force_retaddr | ||
11314 | ret; | ||
11315 | ENDPROC(serpent_xts_dec_8way_avx) | ||
11321 | diff --git a/arch/x86/crypto/serpent-sse2-x86_64-asm_64.S b/arch/x86/crypto/serpent-sse2-x86_64-asm_64.S | 11316 | diff --git a/arch/x86/crypto/serpent-sse2-x86_64-asm_64.S b/arch/x86/crypto/serpent-sse2-x86_64-asm_64.S |
11322 | index acc066c..1559cc4 100644 | 11317 | index acc066c..1559cc4 100644 |
11323 | --- a/arch/x86/crypto/serpent-sse2-x86_64-asm_64.S | 11318 | --- a/arch/x86/crypto/serpent-sse2-x86_64-asm_64.S |
@@ -11373,7 +11368,7 @@ index a410950..3356d42 100644 | |||
11373 | 11368 | ||
11374 | ENDPROC(\name) | 11369 | ENDPROC(\name) |
11375 | diff --git a/arch/x86/crypto/twofish-avx-x86_64-asm_64.S b/arch/x86/crypto/twofish-avx-x86_64-asm_64.S | 11370 | diff --git a/arch/x86/crypto/twofish-avx-x86_64-asm_64.S b/arch/x86/crypto/twofish-avx-x86_64-asm_64.S |
11376 | index 8d3e113..898b161 100644 | 11371 | index 0505813..63b1d00 100644 |
11377 | --- a/arch/x86/crypto/twofish-avx-x86_64-asm_64.S | 11372 | --- a/arch/x86/crypto/twofish-avx-x86_64-asm_64.S |
11378 | +++ b/arch/x86/crypto/twofish-avx-x86_64-asm_64.S | 11373 | +++ b/arch/x86/crypto/twofish-avx-x86_64-asm_64.S |
11379 | @@ -24,6 +24,7 @@ | 11374 | @@ -24,6 +24,7 @@ |
@@ -11384,7 +11379,7 @@ index 8d3e113..898b161 100644 | |||
11384 | #include "glue_helper-asm-avx.S" | 11379 | #include "glue_helper-asm-avx.S" |
11385 | 11380 | ||
11386 | .file "twofish-avx-x86_64-asm_64.S" | 11381 | .file "twofish-avx-x86_64-asm_64.S" |
11387 | @@ -282,6 +283,7 @@ __twofish_enc_blk8: | 11382 | @@ -284,6 +285,7 @@ __twofish_enc_blk8: |
11388 | outunpack_blocks(RC1, RD1, RA1, RB1, RK1, RX0, RY0, RK2); | 11383 | outunpack_blocks(RC1, RD1, RA1, RB1, RK1, RX0, RY0, RK2); |
11389 | outunpack_blocks(RC2, RD2, RA2, RB2, RK1, RX0, RY0, RK2); | 11384 | outunpack_blocks(RC2, RD2, RA2, RB2, RK1, RX0, RY0, RK2); |
11390 | 11385 | ||
@@ -11392,7 +11387,7 @@ index 8d3e113..898b161 100644 | |||
11392 | ret; | 11387 | ret; |
11393 | ENDPROC(__twofish_enc_blk8) | 11388 | ENDPROC(__twofish_enc_blk8) |
11394 | 11389 | ||
11395 | @@ -322,6 +324,7 @@ __twofish_dec_blk8: | 11390 | @@ -324,6 +326,7 @@ __twofish_dec_blk8: |
11396 | outunpack_blocks(RA1, RB1, RC1, RD1, RK1, RX0, RY0, RK2); | 11391 | outunpack_blocks(RA1, RB1, RC1, RD1, RK1, RX0, RY0, RK2); |
11397 | outunpack_blocks(RA2, RB2, RC2, RD2, RK1, RX0, RY0, RK2); | 11392 | outunpack_blocks(RA2, RB2, RC2, RD2, RK1, RX0, RY0, RK2); |
11398 | 11393 | ||
@@ -11400,7 +11395,7 @@ index 8d3e113..898b161 100644 | |||
11400 | ret; | 11395 | ret; |
11401 | ENDPROC(__twofish_dec_blk8) | 11396 | ENDPROC(__twofish_dec_blk8) |
11402 | 11397 | ||
11403 | @@ -340,6 +343,7 @@ ENTRY(twofish_ecb_enc_8way) | 11398 | @@ -342,6 +345,7 @@ ENTRY(twofish_ecb_enc_8way) |
11404 | 11399 | ||
11405 | store_8way(%r11, RC1, RD1, RA1, RB1, RC2, RD2, RA2, RB2); | 11400 | store_8way(%r11, RC1, RD1, RA1, RB1, RC2, RD2, RA2, RB2); |
11406 | 11401 | ||
@@ -11408,7 +11403,7 @@ index 8d3e113..898b161 100644 | |||
11408 | ret; | 11403 | ret; |
11409 | ENDPROC(twofish_ecb_enc_8way) | 11404 | ENDPROC(twofish_ecb_enc_8way) |
11410 | 11405 | ||
11411 | @@ -358,6 +362,7 @@ ENTRY(twofish_ecb_dec_8way) | 11406 | @@ -360,6 +364,7 @@ ENTRY(twofish_ecb_dec_8way) |
11412 | 11407 | ||
11413 | store_8way(%r11, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2); | 11408 | store_8way(%r11, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2); |
11414 | 11409 | ||
@@ -11416,7 +11411,7 @@ index 8d3e113..898b161 100644 | |||
11416 | ret; | 11411 | ret; |
11417 | ENDPROC(twofish_ecb_dec_8way) | 11412 | ENDPROC(twofish_ecb_dec_8way) |
11418 | 11413 | ||
11419 | @@ -381,6 +386,7 @@ ENTRY(twofish_cbc_dec_8way) | 11414 | @@ -383,6 +388,7 @@ ENTRY(twofish_cbc_dec_8way) |
11420 | 11415 | ||
11421 | popq %r12; | 11416 | popq %r12; |
11422 | 11417 | ||
@@ -11424,13 +11419,29 @@ index 8d3e113..898b161 100644 | |||
11424 | ret; | 11419 | ret; |
11425 | ENDPROC(twofish_cbc_dec_8way) | 11420 | ENDPROC(twofish_cbc_dec_8way) |
11426 | 11421 | ||
11427 | @@ -406,5 +412,6 @@ ENTRY(twofish_ctr_8way) | 11422 | @@ -408,6 +414,7 @@ ENTRY(twofish_ctr_8way) |
11428 | 11423 | ||
11429 | popq %r12; | 11424 | popq %r12; |
11430 | 11425 | ||
11431 | + pax_force_retaddr 0, 1 | 11426 | + pax_force_retaddr 0, 1 |
11432 | ret; | 11427 | ret; |
11433 | ENDPROC(twofish_ctr_8way) | 11428 | ENDPROC(twofish_ctr_8way) |
11429 | |||
11430 | @@ -430,6 +437,7 @@ ENTRY(twofish_xts_enc_8way) | ||
11431 | /* dst <= regs xor IVs(in dst) */ | ||
11432 | store_xts_8way(%r11, RC1, RD1, RA1, RB1, RC2, RD2, RA2, RB2); | ||
11433 | |||
11434 | + pax_force_retaddr 0, 1 | ||
11435 | ret; | ||
11436 | ENDPROC(twofish_xts_enc_8way) | ||
11437 | |||
11438 | @@ -452,5 +460,6 @@ ENTRY(twofish_xts_dec_8way) | ||
11439 | /* dst <= regs xor IVs(in dst) */ | ||
11440 | store_xts_8way(%r11, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2); | ||
11441 | |||
11442 | + pax_force_retaddr 0, 1 | ||
11443 | ret; | ||
11444 | ENDPROC(twofish_xts_dec_8way) | ||
11434 | diff --git a/arch/x86/crypto/twofish-x86_64-asm_64-3way.S b/arch/x86/crypto/twofish-x86_64-asm_64-3way.S | 11445 | diff --git a/arch/x86/crypto/twofish-x86_64-asm_64-3way.S b/arch/x86/crypto/twofish-x86_64-asm_64-3way.S |
11435 | index 1c3b7ce..b365c5e 100644 | 11446 | index 1c3b7ce..b365c5e 100644 |
11436 | --- a/arch/x86/crypto/twofish-x86_64-asm_64-3way.S | 11447 | --- a/arch/x86/crypto/twofish-x86_64-asm_64-3way.S |
@@ -11494,7 +11505,7 @@ index a039d21..29e7615 100644 | |||
11494 | ret | 11505 | ret |
11495 | ENDPROC(twofish_dec_blk) | 11506 | ENDPROC(twofish_dec_blk) |
11496 | diff --git a/arch/x86/ia32/ia32_aout.c b/arch/x86/ia32/ia32_aout.c | 11507 | diff --git a/arch/x86/ia32/ia32_aout.c b/arch/x86/ia32/ia32_aout.c |
11497 | index 03abf9b..a42ba29 100644 | 11508 | index 52ff81c..98af645 100644 |
11498 | --- a/arch/x86/ia32/ia32_aout.c | 11509 | --- a/arch/x86/ia32/ia32_aout.c |
11499 | +++ b/arch/x86/ia32/ia32_aout.c | 11510 | +++ b/arch/x86/ia32/ia32_aout.c |
11500 | @@ -159,6 +159,8 @@ static int aout_core_dump(long signr, struct pt_regs *regs, struct file *file, | 11511 | @@ -159,6 +159,8 @@ static int aout_core_dump(long signr, struct pt_regs *regs, struct file *file, |
@@ -11872,7 +11883,7 @@ index 474dc1b..24aaa3e 100644 | |||
11872 | END(ia32_syscall) | 11883 | END(ia32_syscall) |
11873 | 11884 | ||
11874 | diff --git a/arch/x86/ia32/sys_ia32.c b/arch/x86/ia32/sys_ia32.c | 11885 | diff --git a/arch/x86/ia32/sys_ia32.c b/arch/x86/ia32/sys_ia32.c |
11875 | index ad7a20c..1ffa3c1 100644 | 11886 | index 8e0ceec..af13504 100644 |
11876 | --- a/arch/x86/ia32/sys_ia32.c | 11887 | --- a/arch/x86/ia32/sys_ia32.c |
11877 | +++ b/arch/x86/ia32/sys_ia32.c | 11888 | +++ b/arch/x86/ia32/sys_ia32.c |
11878 | @@ -69,8 +69,8 @@ asmlinkage long sys32_ftruncate64(unsigned int fd, unsigned long offset_low, | 11889 | @@ -69,8 +69,8 @@ asmlinkage long sys32_ftruncate64(unsigned int fd, unsigned long offset_low, |
@@ -11886,15 +11897,6 @@ index ad7a20c..1ffa3c1 100644 | |||
11886 | SET_UID(uid, from_kuid_munged(current_user_ns(), stat->uid)); | 11897 | SET_UID(uid, from_kuid_munged(current_user_ns(), stat->uid)); |
11887 | SET_GID(gid, from_kgid_munged(current_user_ns(), stat->gid)); | 11898 | SET_GID(gid, from_kgid_munged(current_user_ns(), stat->gid)); |
11888 | if (!access_ok(VERIFY_WRITE, ubuf, sizeof(struct stat64)) || | 11899 | if (!access_ok(VERIFY_WRITE, ubuf, sizeof(struct stat64)) || |
11889 | @@ -205,7 +205,7 @@ asmlinkage long sys32_sendfile(int out_fd, int in_fd, | ||
11890 | return -EFAULT; | ||
11891 | |||
11892 | set_fs(KERNEL_DS); | ||
11893 | - ret = sys_sendfile(out_fd, in_fd, offset ? (off_t __user *)&of : NULL, | ||
11894 | + ret = sys_sendfile(out_fd, in_fd, offset ? (off_t __force_user *)&of : NULL, | ||
11895 | count); | ||
11896 | set_fs(old_fs); | ||
11897 | |||
11898 | diff --git a/arch/x86/include/asm/alternative-asm.h b/arch/x86/include/asm/alternative-asm.h | 11900 | diff --git a/arch/x86/include/asm/alternative-asm.h b/arch/x86/include/asm/alternative-asm.h |
11899 | index 372231c..a5aa1a1 100644 | 11901 | index 372231c..a5aa1a1 100644 |
11900 | --- a/arch/x86/include/asm/alternative-asm.h | 11902 | --- a/arch/x86/include/asm/alternative-asm.h |
@@ -12394,11 +12396,6 @@ index 722aa3b..3a0bb27 100644 | |||
12394 | -#define atomic_clear_mask(mask, addr) \ | 12396 | -#define atomic_clear_mask(mask, addr) \ |
12395 | - asm volatile(LOCK_PREFIX "andl %0,%1" \ | 12397 | - asm volatile(LOCK_PREFIX "andl %0,%1" \ |
12396 | - : : "r" (~(mask)), "m" (*(addr)) : "memory") | 12398 | - : : "r" (~(mask)), "m" (*(addr)) : "memory") |
12397 | - | ||
12398 | -#define atomic_set_mask(mask, addr) \ | ||
12399 | - asm volatile(LOCK_PREFIX "orl %0,%1" \ | ||
12400 | - : : "r" ((unsigned)(mask)), "m" (*(addr)) \ | ||
12401 | - : "memory") | ||
12402 | +static inline void atomic_clear_mask(unsigned int mask, atomic_t *v) | 12399 | +static inline void atomic_clear_mask(unsigned int mask, atomic_t *v) |
12403 | +{ | 12400 | +{ |
12404 | + asm volatile(LOCK_PREFIX "andl %1,%0" | 12401 | + asm volatile(LOCK_PREFIX "andl %1,%0" |
@@ -12406,7 +12403,11 @@ index 722aa3b..3a0bb27 100644 | |||
12406 | + : "r" (~(mask)) | 12403 | + : "r" (~(mask)) |
12407 | + : "memory"); | 12404 | + : "memory"); |
12408 | +} | 12405 | +} |
12409 | + | 12406 | |
12407 | -#define atomic_set_mask(mask, addr) \ | ||
12408 | - asm volatile(LOCK_PREFIX "orl %0,%1" \ | ||
12409 | - : : "r" ((unsigned)(mask)), "m" (*(addr)) \ | ||
12410 | - : "memory") | ||
12410 | +static inline void atomic_clear_mask_unchecked(unsigned int mask, atomic_unchecked_t *v) | 12411 | +static inline void atomic_clear_mask_unchecked(unsigned int mask, atomic_unchecked_t *v) |
12411 | +{ | 12412 | +{ |
12412 | + asm volatile(LOCK_PREFIX "andl %1,%0" | 12413 | + asm volatile(LOCK_PREFIX "andl %1,%0" |
@@ -13033,7 +13034,7 @@ index 46fc474..b02b0f9 100644 | |||
13033 | 13034 | ||
13034 | if (len) | 13035 | if (len) |
13035 | diff --git a/arch/x86/include/asm/cmpxchg.h b/arch/x86/include/asm/cmpxchg.h | 13036 | diff --git a/arch/x86/include/asm/cmpxchg.h b/arch/x86/include/asm/cmpxchg.h |
13036 | index 8d871ea..c1a0dc9 100644 | 13037 | index d47786a..ce1b05d 100644 |
13037 | --- a/arch/x86/include/asm/cmpxchg.h | 13038 | --- a/arch/x86/include/asm/cmpxchg.h |
13038 | +++ b/arch/x86/include/asm/cmpxchg.h | 13039 | +++ b/arch/x86/include/asm/cmpxchg.h |
13039 | @@ -14,8 +14,12 @@ extern void __cmpxchg_wrong_size(void) | 13040 | @@ -14,8 +14,12 @@ extern void __cmpxchg_wrong_size(void) |
@@ -13108,10 +13109,10 @@ index 59c6c40..5e0b22c 100644 | |||
13108 | struct compat_timespec { | 13109 | struct compat_timespec { |
13109 | compat_time_t tv_sec; | 13110 | compat_time_t tv_sec; |
13110 | diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h | 13111 | diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h |
13111 | index 93fe929..90858b7 100644 | 13112 | index e99ac27..e89e28c 100644 |
13112 | --- a/arch/x86/include/asm/cpufeature.h | 13113 | --- a/arch/x86/include/asm/cpufeature.h |
13113 | +++ b/arch/x86/include/asm/cpufeature.h | 13114 | +++ b/arch/x86/include/asm/cpufeature.h |
13114 | @@ -207,7 +207,7 @@ | 13115 | @@ -211,7 +211,7 @@ |
13115 | #define X86_FEATURE_BMI1 (9*32+ 3) /* 1st group bit manipulation extensions */ | 13116 | #define X86_FEATURE_BMI1 (9*32+ 3) /* 1st group bit manipulation extensions */ |
13116 | #define X86_FEATURE_HLE (9*32+ 4) /* Hardware Lock Elision */ | 13117 | #define X86_FEATURE_HLE (9*32+ 4) /* Hardware Lock Elision */ |
13117 | #define X86_FEATURE_AVX2 (9*32+ 5) /* AVX2 instructions */ | 13118 | #define X86_FEATURE_AVX2 (9*32+ 5) /* AVX2 instructions */ |
@@ -13120,7 +13121,7 @@ index 93fe929..90858b7 100644 | |||
13120 | #define X86_FEATURE_BMI2 (9*32+ 8) /* 2nd group bit manipulation extensions */ | 13121 | #define X86_FEATURE_BMI2 (9*32+ 8) /* 2nd group bit manipulation extensions */ |
13121 | #define X86_FEATURE_ERMS (9*32+ 9) /* Enhanced REP MOVSB/STOSB */ | 13122 | #define X86_FEATURE_ERMS (9*32+ 9) /* Enhanced REP MOVSB/STOSB */ |
13122 | #define X86_FEATURE_INVPCID (9*32+10) /* Invalidate Processor Context ID */ | 13123 | #define X86_FEATURE_INVPCID (9*32+10) /* Invalidate Processor Context ID */ |
13123 | @@ -377,7 +377,7 @@ static __always_inline __pure bool __static_cpu_has(u16 bit) | 13124 | @@ -394,7 +394,7 @@ static __always_inline __pure bool __static_cpu_has(u16 bit) |
13124 | ".section .discard,\"aw\",@progbits\n" | 13125 | ".section .discard,\"aw\",@progbits\n" |
13125 | " .byte 0xff + (4f-3f) - (2b-1b)\n" /* size check */ | 13126 | " .byte 0xff + (4f-3f) - (2b-1b)\n" /* size check */ |
13126 | ".previous\n" | 13127 | ".previous\n" |
@@ -13537,10 +13538,10 @@ index be27ba1..8f13ff9 100644 | |||
13537 | : "memory" | 13538 | : "memory" |
13538 | ); | 13539 | ); |
13539 | diff --git a/arch/x86/include/asm/hw_irq.h b/arch/x86/include/asm/hw_irq.h | 13540 | diff --git a/arch/x86/include/asm/hw_irq.h b/arch/x86/include/asm/hw_irq.h |
13540 | index 10a78c3..cc77143 100644 | 13541 | index 1da97ef..9c2ebff 100644 |
13541 | --- a/arch/x86/include/asm/hw_irq.h | 13542 | --- a/arch/x86/include/asm/hw_irq.h |
13542 | +++ b/arch/x86/include/asm/hw_irq.h | 13543 | +++ b/arch/x86/include/asm/hw_irq.h |
13543 | @@ -147,8 +147,8 @@ extern void setup_ioapic_dest(void); | 13544 | @@ -148,8 +148,8 @@ extern void setup_ioapic_dest(void); |
13544 | extern void enable_IO_APIC(void); | 13545 | extern void enable_IO_APIC(void); |
13545 | 13546 | ||
13546 | /* Statistics */ | 13547 | /* Statistics */ |
@@ -14039,9 +14040,9 @@ index cdbf367..adb37ac 100644 | |||
14039 | +#endif | 14040 | +#endif |
14040 | + | 14041 | + |
14041 | } | 14042 | } |
14042 | - } | 14043 | +#endif |
14043 | #endif | 14044 | } |
14044 | + } | 14045 | -#endif |
14045 | } | 14046 | } |
14046 | 14047 | ||
14047 | #define activate_mm(prev, next) \ | 14048 | #define activate_mm(prev, next) \ |
@@ -14081,10 +14082,10 @@ index e3b7819..b257c64 100644 | |||
14081 | + | 14082 | + |
14082 | #endif /* _ASM_X86_MODULE_H */ | 14083 | #endif /* _ASM_X86_MODULE_H */ |
14083 | diff --git a/arch/x86/include/asm/nmi.h b/arch/x86/include/asm/nmi.h | 14084 | diff --git a/arch/x86/include/asm/nmi.h b/arch/x86/include/asm/nmi.h |
14084 | index c0fa356..07a498a 100644 | 14085 | index 86f9301..b365cda 100644 |
14085 | --- a/arch/x86/include/asm/nmi.h | 14086 | --- a/arch/x86/include/asm/nmi.h |
14086 | +++ b/arch/x86/include/asm/nmi.h | 14087 | +++ b/arch/x86/include/asm/nmi.h |
14087 | @@ -42,11 +42,11 @@ struct nmiaction { | 14088 | @@ -40,11 +40,11 @@ struct nmiaction { |
14088 | nmi_handler_t handler; | 14089 | nmi_handler_t handler; |
14089 | unsigned long flags; | 14090 | unsigned long flags; |
14090 | const char *name; | 14091 | const char *name; |
@@ -14098,7 +14099,7 @@ index c0fa356..07a498a 100644 | |||
14098 | .handler = (fn), \ | 14099 | .handler = (fn), \ |
14099 | .name = (n), \ | 14100 | .name = (n), \ |
14100 | .flags = (fg), \ | 14101 | .flags = (fg), \ |
14101 | @@ -54,7 +54,7 @@ struct nmiaction { | 14102 | @@ -52,7 +52,7 @@ struct nmiaction { |
14102 | __register_nmi_handler((t), &fn##_na); \ | 14103 | __register_nmi_handler((t), &fn##_na); \ |
14103 | }) | 14104 | }) |
14104 | 14105 | ||
@@ -14136,10 +14137,10 @@ index 0f1ddee..e2fc3d1 100644 | |||
14136 | unsigned long y = x - __START_KERNEL_map; | 14137 | unsigned long y = x - __START_KERNEL_map; |
14137 | 14138 | ||
14138 | diff --git a/arch/x86/include/asm/paravirt.h b/arch/x86/include/asm/paravirt.h | 14139 | diff --git a/arch/x86/include/asm/paravirt.h b/arch/x86/include/asm/paravirt.h |
14139 | index 7361e47..16dc226 100644 | 14140 | index cfdc9ee..3f7b5d6 100644 |
14140 | --- a/arch/x86/include/asm/paravirt.h | 14141 | --- a/arch/x86/include/asm/paravirt.h |
14141 | +++ b/arch/x86/include/asm/paravirt.h | 14142 | +++ b/arch/x86/include/asm/paravirt.h |
14142 | @@ -564,7 +564,7 @@ static inline pmd_t __pmd(pmdval_t val) | 14143 | @@ -560,7 +560,7 @@ static inline pmd_t __pmd(pmdval_t val) |
14143 | return (pmd_t) { ret }; | 14144 | return (pmd_t) { ret }; |
14144 | } | 14145 | } |
14145 | 14146 | ||
@@ -14148,7 +14149,7 @@ index 7361e47..16dc226 100644 | |||
14148 | { | 14149 | { |
14149 | pmdval_t ret; | 14150 | pmdval_t ret; |
14150 | 14151 | ||
14151 | @@ -630,6 +630,18 @@ static inline void set_pgd(pgd_t *pgdp, pgd_t pgd) | 14152 | @@ -626,6 +626,18 @@ static inline void set_pgd(pgd_t *pgdp, pgd_t pgd) |
14152 | val); | 14153 | val); |
14153 | } | 14154 | } |
14154 | 14155 | ||
@@ -14167,7 +14168,7 @@ index 7361e47..16dc226 100644 | |||
14167 | static inline void pgd_clear(pgd_t *pgdp) | 14168 | static inline void pgd_clear(pgd_t *pgdp) |
14168 | { | 14169 | { |
14169 | set_pgd(pgdp, __pgd(0)); | 14170 | set_pgd(pgdp, __pgd(0)); |
14170 | @@ -714,6 +726,21 @@ static inline void __set_fixmap(unsigned /* enum fixed_addresses */ idx, | 14171 | @@ -710,6 +722,21 @@ static inline void __set_fixmap(unsigned /* enum fixed_addresses */ idx, |
14171 | pv_mmu_ops.set_fixmap(idx, phys, flags); | 14172 | pv_mmu_ops.set_fixmap(idx, phys, flags); |
14172 | } | 14173 | } |
14173 | 14174 | ||
@@ -14189,7 +14190,7 @@ index 7361e47..16dc226 100644 | |||
14189 | #if defined(CONFIG_SMP) && defined(CONFIG_PARAVIRT_SPINLOCKS) | 14190 | #if defined(CONFIG_SMP) && defined(CONFIG_PARAVIRT_SPINLOCKS) |
14190 | 14191 | ||
14191 | static inline int arch_spin_is_locked(struct arch_spinlock *lock) | 14192 | static inline int arch_spin_is_locked(struct arch_spinlock *lock) |
14192 | @@ -930,7 +957,7 @@ extern void default_banner(void); | 14193 | @@ -926,7 +953,7 @@ extern void default_banner(void); |
14193 | 14194 | ||
14194 | #define PARA_PATCH(struct, off) ((PARAVIRT_PATCH_##struct + (off)) / 4) | 14195 | #define PARA_PATCH(struct, off) ((PARAVIRT_PATCH_##struct + (off)) / 4) |
14195 | #define PARA_SITE(ptype, clobbers, ops) _PVSITE(ptype, clobbers, ops, .long, 4) | 14196 | #define PARA_SITE(ptype, clobbers, ops) _PVSITE(ptype, clobbers, ops, .long, 4) |
@@ -14198,7 +14199,7 @@ index 7361e47..16dc226 100644 | |||
14198 | #endif | 14199 | #endif |
14199 | 14200 | ||
14200 | #define INTERRUPT_RETURN \ | 14201 | #define INTERRUPT_RETURN \ |
14201 | @@ -1005,6 +1032,21 @@ extern void default_banner(void); | 14202 | @@ -1001,6 +1028,21 @@ extern void default_banner(void); |
14202 | PARA_SITE(PARA_PATCH(pv_cpu_ops, PV_CPU_irq_enable_sysexit), \ | 14203 | PARA_SITE(PARA_PATCH(pv_cpu_ops, PV_CPU_irq_enable_sysexit), \ |
14203 | CLBR_NONE, \ | 14204 | CLBR_NONE, \ |
14204 | jmp PARA_INDIRECT(pv_cpu_ops+PV_CPU_irq_enable_sysexit)) | 14205 | jmp PARA_INDIRECT(pv_cpu_ops+PV_CPU_irq_enable_sysexit)) |
@@ -14221,7 +14222,7 @@ index 7361e47..16dc226 100644 | |||
14221 | 14222 | ||
14222 | #endif /* __ASSEMBLY__ */ | 14223 | #endif /* __ASSEMBLY__ */ |
14223 | diff --git a/arch/x86/include/asm/paravirt_types.h b/arch/x86/include/asm/paravirt_types.h | 14224 | diff --git a/arch/x86/include/asm/paravirt_types.h b/arch/x86/include/asm/paravirt_types.h |
14224 | index b3b0ec1..b1cd3eb 100644 | 14225 | index 0db1fca..52310cc 100644 |
14225 | --- a/arch/x86/include/asm/paravirt_types.h | 14226 | --- a/arch/x86/include/asm/paravirt_types.h |
14226 | +++ b/arch/x86/include/asm/paravirt_types.h | 14227 | +++ b/arch/x86/include/asm/paravirt_types.h |
14227 | @@ -84,7 +84,7 @@ struct pv_init_ops { | 14228 | @@ -84,7 +84,7 @@ struct pv_init_ops { |
@@ -14743,7 +14744,7 @@ index 2d88344..4679fc3 100644 | |||
14743 | #define EARLY_DYNAMIC_PAGE_TABLES 64 | 14744 | #define EARLY_DYNAMIC_PAGE_TABLES 64 |
14744 | 14745 | ||
14745 | diff --git a/arch/x86/include/asm/pgtable_types.h b/arch/x86/include/asm/pgtable_types.h | 14746 | diff --git a/arch/x86/include/asm/pgtable_types.h b/arch/x86/include/asm/pgtable_types.h |
14746 | index 567b5d0..bd91d64 100644 | 14747 | index e642300..0ef8f31 100644 |
14747 | --- a/arch/x86/include/asm/pgtable_types.h | 14748 | --- a/arch/x86/include/asm/pgtable_types.h |
14748 | +++ b/arch/x86/include/asm/pgtable_types.h | 14749 | +++ b/arch/x86/include/asm/pgtable_types.h |
14749 | @@ -16,13 +16,12 @@ | 14750 | @@ -16,13 +16,12 @@ |
@@ -14858,10 +14859,10 @@ index 567b5d0..bd91d64 100644 | |||
14858 | #define pgprot_writecombine pgprot_writecombine | 14859 | #define pgprot_writecombine pgprot_writecombine |
14859 | extern pgprot_t pgprot_writecombine(pgprot_t prot); | 14860 | extern pgprot_t pgprot_writecombine(pgprot_t prot); |
14860 | diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h | 14861 | diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h |
14861 | index 3270116..8d99d82 100644 | 14862 | index 22224b3..4080dab 100644 |
14862 | --- a/arch/x86/include/asm/processor.h | 14863 | --- a/arch/x86/include/asm/processor.h |
14863 | +++ b/arch/x86/include/asm/processor.h | 14864 | +++ b/arch/x86/include/asm/processor.h |
14864 | @@ -285,7 +285,7 @@ struct tss_struct { | 14865 | @@ -282,7 +282,7 @@ struct tss_struct { |
14865 | 14866 | ||
14866 | } ____cacheline_aligned; | 14867 | } ____cacheline_aligned; |
14867 | 14868 | ||
@@ -14870,7 +14871,7 @@ index 3270116..8d99d82 100644 | |||
14870 | 14871 | ||
14871 | /* | 14872 | /* |
14872 | * Save the original ist values for checking stack pointers during debugging | 14873 | * Save the original ist values for checking stack pointers during debugging |
14873 | @@ -826,11 +826,18 @@ static inline void spin_lock_prefetch(const void *x) | 14874 | @@ -823,11 +823,18 @@ static inline void spin_lock_prefetch(const void *x) |
14874 | */ | 14875 | */ |
14875 | #define TASK_SIZE PAGE_OFFSET | 14876 | #define TASK_SIZE PAGE_OFFSET |
14876 | #define TASK_SIZE_MAX TASK_SIZE | 14877 | #define TASK_SIZE_MAX TASK_SIZE |
@@ -14891,7 +14892,7 @@ index 3270116..8d99d82 100644 | |||
14891 | .vm86_info = NULL, \ | 14892 | .vm86_info = NULL, \ |
14892 | .sysenter_cs = __KERNEL_CS, \ | 14893 | .sysenter_cs = __KERNEL_CS, \ |
14893 | .io_bitmap_ptr = NULL, \ | 14894 | .io_bitmap_ptr = NULL, \ |
14894 | @@ -844,7 +851,7 @@ static inline void spin_lock_prefetch(const void *x) | 14895 | @@ -841,7 +848,7 @@ static inline void spin_lock_prefetch(const void *x) |
14895 | */ | 14896 | */ |
14896 | #define INIT_TSS { \ | 14897 | #define INIT_TSS { \ |
14897 | .x86_tss = { \ | 14898 | .x86_tss = { \ |
@@ -14900,7 +14901,7 @@ index 3270116..8d99d82 100644 | |||
14900 | .ss0 = __KERNEL_DS, \ | 14901 | .ss0 = __KERNEL_DS, \ |
14901 | .ss1 = __KERNEL_CS, \ | 14902 | .ss1 = __KERNEL_CS, \ |
14902 | .io_bitmap_base = INVALID_IO_BITMAP_OFFSET, \ | 14903 | .io_bitmap_base = INVALID_IO_BITMAP_OFFSET, \ |
14903 | @@ -855,11 +862,7 @@ static inline void spin_lock_prefetch(const void *x) | 14904 | @@ -852,11 +859,7 @@ static inline void spin_lock_prefetch(const void *x) |
14904 | extern unsigned long thread_saved_pc(struct task_struct *tsk); | 14905 | extern unsigned long thread_saved_pc(struct task_struct *tsk); |
14905 | 14906 | ||
14906 | #define THREAD_SIZE_LONGS (THREAD_SIZE/sizeof(unsigned long)) | 14907 | #define THREAD_SIZE_LONGS (THREAD_SIZE/sizeof(unsigned long)) |
@@ -14913,7 +14914,7 @@ index 3270116..8d99d82 100644 | |||
14913 | 14914 | ||
14914 | /* | 14915 | /* |
14915 | * The below -8 is to reserve 8 bytes on top of the ring0 stack. | 14916 | * The below -8 is to reserve 8 bytes on top of the ring0 stack. |
14916 | @@ -874,7 +877,7 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk); | 14917 | @@ -871,7 +874,7 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk); |
14917 | #define task_pt_regs(task) \ | 14918 | #define task_pt_regs(task) \ |
14918 | ({ \ | 14919 | ({ \ |
14919 | struct pt_regs *__regs__; \ | 14920 | struct pt_regs *__regs__; \ |
@@ -14922,7 +14923,7 @@ index 3270116..8d99d82 100644 | |||
14922 | __regs__ - 1; \ | 14923 | __regs__ - 1; \ |
14923 | }) | 14924 | }) |
14924 | 14925 | ||
14925 | @@ -884,13 +887,13 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk); | 14926 | @@ -881,13 +884,13 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk); |
14926 | /* | 14927 | /* |
14927 | * User space process size. 47bits minus one guard page. | 14928 | * User space process size. 47bits minus one guard page. |
14928 | */ | 14929 | */ |
@@ -14938,7 +14939,7 @@ index 3270116..8d99d82 100644 | |||
14938 | 14939 | ||
14939 | #define TASK_SIZE (test_thread_flag(TIF_ADDR32) ? \ | 14940 | #define TASK_SIZE (test_thread_flag(TIF_ADDR32) ? \ |
14940 | IA32_PAGE_OFFSET : TASK_SIZE_MAX) | 14941 | IA32_PAGE_OFFSET : TASK_SIZE_MAX) |
14941 | @@ -901,11 +904,11 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk); | 14942 | @@ -898,11 +901,11 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk); |
14942 | #define STACK_TOP_MAX TASK_SIZE_MAX | 14943 | #define STACK_TOP_MAX TASK_SIZE_MAX |
14943 | 14944 | ||
14944 | #define INIT_THREAD { \ | 14945 | #define INIT_THREAD { \ |
@@ -14952,7 +14953,7 @@ index 3270116..8d99d82 100644 | |||
14952 | } | 14953 | } |
14953 | 14954 | ||
14954 | /* | 14955 | /* |
14955 | @@ -933,6 +936,10 @@ extern void start_thread(struct pt_regs *regs, unsigned long new_ip, | 14956 | @@ -930,6 +933,10 @@ extern void start_thread(struct pt_regs *regs, unsigned long new_ip, |
14956 | */ | 14957 | */ |
14957 | #define TASK_UNMAPPED_BASE (PAGE_ALIGN(TASK_SIZE / 3)) | 14958 | #define TASK_UNMAPPED_BASE (PAGE_ALIGN(TASK_SIZE / 3)) |
14958 | 14959 | ||
@@ -14963,16 +14964,16 @@ index 3270116..8d99d82 100644 | |||
14963 | #define KSTK_EIP(task) (task_pt_regs(task)->ip) | 14964 | #define KSTK_EIP(task) (task_pt_regs(task)->ip) |
14964 | 14965 | ||
14965 | /* Get/set a process' ability to use the timestamp counter instruction */ | 14966 | /* Get/set a process' ability to use the timestamp counter instruction */ |
14966 | @@ -993,7 +1000,7 @@ extern bool cpu_has_amd_erratum(const int *); | 14967 | @@ -970,7 +977,7 @@ unsigned long calc_aperfmperf_ratio(struct aperfmperf *old, |
14967 | #define cpu_has_amd_erratum(x) (false) | 14968 | return ratio; |
14968 | #endif /* CONFIG_CPU_SUP_AMD */ | 14969 | } |
14969 | 14970 | ||
14970 | -extern unsigned long arch_align_stack(unsigned long sp); | 14971 | -extern unsigned long arch_align_stack(unsigned long sp); |
14971 | +#define arch_align_stack(x) ((x) & ~0xfUL) | 14972 | +#define arch_align_stack(x) ((x) & ~0xfUL) |
14972 | extern void free_init_pages(char *what, unsigned long begin, unsigned long end); | 14973 | extern void free_init_pages(char *what, unsigned long begin, unsigned long end); |
14973 | 14974 | ||
14974 | void default_idle(void); | 14975 | void default_idle(void); |
14975 | @@ -1003,6 +1010,6 @@ bool xen_set_default_idle(void); | 14976 | @@ -980,6 +987,6 @@ bool xen_set_default_idle(void); |
14976 | #define xen_set_default_idle 0 | 14977 | #define xen_set_default_idle 0 |
14977 | #endif | 14978 | #endif |
14978 | 14979 | ||
@@ -15100,7 +15101,7 @@ index a82c4f1..ac45053 100644 | |||
15100 | extern struct machine_ops machine_ops; | 15101 | extern struct machine_ops machine_ops; |
15101 | 15102 | ||
15102 | diff --git a/arch/x86/include/asm/rwsem.h b/arch/x86/include/asm/rwsem.h | 15103 | diff --git a/arch/x86/include/asm/rwsem.h b/arch/x86/include/asm/rwsem.h |
15103 | index 2dbe4a7..ce1db00 100644 | 15104 | index cad82c9..2e5c5c1 100644 |
15104 | --- a/arch/x86/include/asm/rwsem.h | 15105 | --- a/arch/x86/include/asm/rwsem.h |
15105 | +++ b/arch/x86/include/asm/rwsem.h | 15106 | +++ b/arch/x86/include/asm/rwsem.h |
15106 | @@ -64,6 +64,14 @@ static inline void __down_read(struct rw_semaphore *sem) | 15107 | @@ -64,6 +64,14 @@ static inline void __down_read(struct rw_semaphore *sem) |
@@ -15146,9 +15147,9 @@ index 2dbe4a7..ce1db00 100644 | |||
15146 | +#endif | 15147 | +#endif |
15147 | + | 15148 | + |
15148 | /* adds 0xffff0001, returns the old value */ | 15149 | /* adds 0xffff0001, returns the old value */ |
15149 | " test %1,%1\n\t" | 15150 | " test " __ASM_SEL(%w1,%k1) "," __ASM_SEL(%w1,%k1) "\n\t" |
15150 | /* was the count 0 before? */ | 15151 | /* was the active mask 0 before? */ |
15151 | @@ -141,6 +165,14 @@ static inline void __up_read(struct rw_semaphore *sem) | 15152 | @@ -155,6 +179,14 @@ static inline void __up_read(struct rw_semaphore *sem) |
15152 | long tmp; | 15153 | long tmp; |
15153 | asm volatile("# beginning __up_read\n\t" | 15154 | asm volatile("# beginning __up_read\n\t" |
15154 | LOCK_PREFIX " xadd %1,(%2)\n\t" | 15155 | LOCK_PREFIX " xadd %1,(%2)\n\t" |
@@ -15163,7 +15164,7 @@ index 2dbe4a7..ce1db00 100644 | |||
15163 | /* subtracts 1, returns the old value */ | 15164 | /* subtracts 1, returns the old value */ |
15164 | " jns 1f\n\t" | 15165 | " jns 1f\n\t" |
15165 | " call call_rwsem_wake\n" /* expects old value in %edx */ | 15166 | " call call_rwsem_wake\n" /* expects old value in %edx */ |
15166 | @@ -159,6 +191,14 @@ static inline void __up_write(struct rw_semaphore *sem) | 15167 | @@ -173,6 +205,14 @@ static inline void __up_write(struct rw_semaphore *sem) |
15167 | long tmp; | 15168 | long tmp; |
15168 | asm volatile("# beginning __up_write\n\t" | 15169 | asm volatile("# beginning __up_write\n\t" |
15169 | LOCK_PREFIX " xadd %1,(%2)\n\t" | 15170 | LOCK_PREFIX " xadd %1,(%2)\n\t" |
@@ -15178,7 +15179,7 @@ index 2dbe4a7..ce1db00 100644 | |||
15178 | /* subtracts 0xffff0001, returns the old value */ | 15179 | /* subtracts 0xffff0001, returns the old value */ |
15179 | " jns 1f\n\t" | 15180 | " jns 1f\n\t" |
15180 | " call call_rwsem_wake\n" /* expects old value in %edx */ | 15181 | " call call_rwsem_wake\n" /* expects old value in %edx */ |
15181 | @@ -176,6 +216,14 @@ static inline void __downgrade_write(struct rw_semaphore *sem) | 15182 | @@ -190,6 +230,14 @@ static inline void __downgrade_write(struct rw_semaphore *sem) |
15182 | { | 15183 | { |
15183 | asm volatile("# beginning __downgrade_write\n\t" | 15184 | asm volatile("# beginning __downgrade_write\n\t" |
15184 | LOCK_PREFIX _ASM_ADD "%2,(%1)\n\t" | 15185 | LOCK_PREFIX _ASM_ADD "%2,(%1)\n\t" |
@@ -15193,7 +15194,7 @@ index 2dbe4a7..ce1db00 100644 | |||
15193 | /* | 15194 | /* |
15194 | * transitions 0xZZZZ0001 -> 0xYYYY0001 (i386) | 15195 | * transitions 0xZZZZ0001 -> 0xYYYY0001 (i386) |
15195 | * 0xZZZZZZZZ00000001 -> 0xYYYYYYYY00000001 (x86_64) | 15196 | * 0xZZZZZZZZ00000001 -> 0xYYYYYYYY00000001 (x86_64) |
15196 | @@ -194,7 +242,15 @@ static inline void __downgrade_write(struct rw_semaphore *sem) | 15197 | @@ -208,7 +256,15 @@ static inline void __downgrade_write(struct rw_semaphore *sem) |
15197 | */ | 15198 | */ |
15198 | static inline void rwsem_atomic_add(long delta, struct rw_semaphore *sem) | 15199 | static inline void rwsem_atomic_add(long delta, struct rw_semaphore *sem) |
15199 | { | 15200 | { |
@@ -15210,7 +15211,7 @@ index 2dbe4a7..ce1db00 100644 | |||
15210 | : "+m" (sem->count) | 15211 | : "+m" (sem->count) |
15211 | : "er" (delta)); | 15212 | : "er" (delta)); |
15212 | } | 15213 | } |
15213 | @@ -204,7 +260,7 @@ static inline void rwsem_atomic_add(long delta, struct rw_semaphore *sem) | 15214 | @@ -218,7 +274,7 @@ static inline void rwsem_atomic_add(long delta, struct rw_semaphore *sem) |
15214 | */ | 15215 | */ |
15215 | static inline long rwsem_atomic_update(long delta, struct rw_semaphore *sem) | 15216 | static inline long rwsem_atomic_update(long delta, struct rw_semaphore *sem) |
15216 | { | 15217 | { |
@@ -15444,7 +15445,15 @@ index 70bbe39..4ae2bd4 100644 | |||
15444 | - void *data, | 15445 | - void *data, |
15445 | - unsigned long *end, | 15446 | - unsigned long *end, |
15446 | - int *graph); | 15447 | - int *graph); |
15447 | - | 15448 | +typedef unsigned long walk_stack_t(struct task_struct *task, |
15449 | + void *stack_start, | ||
15450 | + unsigned long *stack, | ||
15451 | + unsigned long bp, | ||
15452 | + const struct stacktrace_ops *ops, | ||
15453 | + void *data, | ||
15454 | + unsigned long *end, | ||
15455 | + int *graph); | ||
15456 | |||
15448 | -extern unsigned long | 15457 | -extern unsigned long |
15449 | -print_context_stack(struct thread_info *tinfo, | 15458 | -print_context_stack(struct thread_info *tinfo, |
15450 | - unsigned long *stack, unsigned long bp, | 15459 | - unsigned long *stack, unsigned long bp, |
@@ -15456,15 +15465,6 @@ index 70bbe39..4ae2bd4 100644 | |||
15456 | - unsigned long *stack, unsigned long bp, | 15465 | - unsigned long *stack, unsigned long bp, |
15457 | - const struct stacktrace_ops *ops, void *data, | 15466 | - const struct stacktrace_ops *ops, void *data, |
15458 | - unsigned long *end, int *graph); | 15467 | - unsigned long *end, int *graph); |
15459 | +typedef unsigned long walk_stack_t(struct task_struct *task, | ||
15460 | + void *stack_start, | ||
15461 | + unsigned long *stack, | ||
15462 | + unsigned long bp, | ||
15463 | + const struct stacktrace_ops *ops, | ||
15464 | + void *data, | ||
15465 | + unsigned long *end, | ||
15466 | + int *graph); | ||
15467 | + | ||
15468 | +extern walk_stack_t print_context_stack; | 15468 | +extern walk_stack_t print_context_stack; |
15469 | +extern walk_stack_t print_context_stack_bp; | 15469 | +extern walk_stack_t print_context_stack_bp; |
15470 | 15470 | ||
@@ -15502,7 +15502,7 @@ index 4ec45b3..a4f0a8a 100644 | |||
15502 | __switch_canary_iparam \ | 15502 | __switch_canary_iparam \ |
15503 | : "memory", "cc" __EXTRA_CLOBBER) | 15503 | : "memory", "cc" __EXTRA_CLOBBER) |
15504 | diff --git a/arch/x86/include/asm/thread_info.h b/arch/x86/include/asm/thread_info.h | 15504 | diff --git a/arch/x86/include/asm/thread_info.h b/arch/x86/include/asm/thread_info.h |
15505 | index 2cd056e..0224df8 100644 | 15505 | index a1df6e8..e002940 100644 |
15506 | --- a/arch/x86/include/asm/thread_info.h | 15506 | --- a/arch/x86/include/asm/thread_info.h |
15507 | +++ b/arch/x86/include/asm/thread_info.h | 15507 | +++ b/arch/x86/include/asm/thread_info.h |
15508 | @@ -10,6 +10,7 @@ | 15508 | @@ -10,6 +10,7 @@ |
@@ -15590,38 +15590,24 @@ index 2cd056e..0224df8 100644 | |||
15590 | 15590 | ||
15591 | /* Only used for 64 bit */ | 15591 | /* Only used for 64 bit */ |
15592 | #define _TIF_DO_NOTIFY_MASK \ | 15592 | #define _TIF_DO_NOTIFY_MASK \ |
15593 | @@ -158,6 +154,23 @@ struct thread_info { | 15593 | @@ -158,45 +154,40 @@ struct thread_info { |
15594 | 15594 | ||
15595 | #define PREEMPT_ACTIVE 0x10000000 | 15595 | #define PREEMPT_ACTIVE 0x10000000 |
15596 | 15596 | ||
15597 | +#ifdef __ASSEMBLY__ | 15597 | -#ifdef CONFIG_X86_32 |
15598 | +/* how to get the thread information struct from ASM */ | 15598 | - |
15599 | +#define GET_THREAD_INFO(reg) \ | 15599 | -#define STACK_WARN (THREAD_SIZE/8) |
15600 | + mov PER_CPU_VAR(current_tinfo), reg | 15600 | -/* |
15601 | + | 15601 | - * macros/functions for gaining access to the thread information structure |
15602 | +/* use this one if reg already contains %esp */ | 15602 | - * |
15603 | +#define GET_THREAD_INFO_WITH_ESP(reg) GET_THREAD_INFO(reg) | 15603 | - * preempt_count needs to be 1 initially, until the scheduler is functional. |
15604 | +#else | 15604 | - */ |
15605 | +/* how to get the thread information struct from C */ | 15605 | -#ifndef __ASSEMBLY__ |
15606 | +DECLARE_PER_CPU(struct thread_info *, current_tinfo); | 15606 | - |
15607 | + | 15607 | - |
15608 | +static __always_inline struct thread_info *current_thread_info(void) | 15608 | -/* how to get the current stack pointer from C */ |
15609 | +{ | 15609 | -register unsigned long current_stack_pointer asm("esp") __used; |
15610 | + return this_cpu_read_stable(current_tinfo); | ||
15611 | +} | ||
15612 | +#endif | ||
15613 | + | ||
15614 | #ifdef CONFIG_X86_32 | ||
15615 | |||
15616 | #define STACK_WARN (THREAD_SIZE/8) | ||
15617 | @@ -168,35 +181,13 @@ struct thread_info { | ||
15618 | */ | ||
15619 | #ifndef __ASSEMBLY__ | ||
15620 | |||
15621 | - | 15610 | - |
15622 | /* how to get the current stack pointer from C */ | ||
15623 | register unsigned long current_stack_pointer asm("esp") __used; | ||
15624 | |||
15625 | -/* how to get the thread information struct from C */ | 15611 | -/* how to get the thread information struct from C */ |
15626 | -static inline struct thread_info *current_thread_info(void) | 15612 | -static inline struct thread_info *current_thread_info(void) |
15627 | -{ | 15613 | -{ |
@@ -15631,15 +15617,40 @@ index 2cd056e..0224df8 100644 | |||
15631 | - | 15617 | - |
15632 | -#else /* !__ASSEMBLY__ */ | 15618 | -#else /* !__ASSEMBLY__ */ |
15633 | - | 15619 | - |
15634 | -/* how to get the thread information struct from ASM */ | 15620 | +#ifdef __ASSEMBLY__ |
15635 | -#define GET_THREAD_INFO(reg) \ | 15621 | /* how to get the thread information struct from ASM */ |
15622 | #define GET_THREAD_INFO(reg) \ | ||
15636 | - movl $-THREAD_SIZE, reg; \ | 15623 | - movl $-THREAD_SIZE, reg; \ |
15637 | - andl %esp, reg | 15624 | - andl %esp, reg |
15638 | - | 15625 | + mov PER_CPU_VAR(current_tinfo), reg |
15639 | -/* use this one if reg already contains %esp */ | 15626 | |
15627 | /* use this one if reg already contains %esp */ | ||
15640 | -#define GET_THREAD_INFO_WITH_ESP(reg) \ | 15628 | -#define GET_THREAD_INFO_WITH_ESP(reg) \ |
15641 | - andl $-THREAD_SIZE, reg | 15629 | - andl $-THREAD_SIZE, reg |
15642 | - | 15630 | +#define GET_THREAD_INFO_WITH_ESP(reg) GET_THREAD_INFO(reg) |
15631 | +#else | ||
15632 | +/* how to get the thread information struct from C */ | ||
15633 | +DECLARE_PER_CPU(struct thread_info *, current_tinfo); | ||
15634 | + | ||
15635 | +static __always_inline struct thread_info *current_thread_info(void) | ||
15636 | +{ | ||
15637 | + return this_cpu_read_stable(current_tinfo); | ||
15638 | +} | ||
15639 | +#endif | ||
15640 | + | ||
15641 | +#ifdef CONFIG_X86_32 | ||
15642 | + | ||
15643 | +#define STACK_WARN (THREAD_SIZE/8) | ||
15644 | +/* | ||
15645 | + * macros/functions for gaining access to the thread information structure | ||
15646 | + * | ||
15647 | + * preempt_count needs to be 1 initially, until the scheduler is functional. | ||
15648 | + */ | ||
15649 | +#ifndef __ASSEMBLY__ | ||
15650 | + | ||
15651 | +/* how to get the current stack pointer from C */ | ||
15652 | +register unsigned long current_stack_pointer asm("esp") __used; | ||
15653 | |||
15643 | #endif | 15654 | #endif |
15644 | 15655 | ||
15645 | #else /* X86_32 */ | 15656 | #else /* X86_32 */ |
@@ -15680,7 +15691,7 @@ index 2cd056e..0224df8 100644 | |||
15680 | #endif | 15691 | #endif |
15681 | 15692 | ||
15682 | #endif /* !X86_32 */ | 15693 | #endif /* !X86_32 */ |
15683 | @@ -285,5 +257,12 @@ static inline bool is_ia32_task(void) | 15694 | @@ -283,5 +255,12 @@ static inline bool is_ia32_task(void) |
15684 | extern void arch_task_cache_init(void); | 15695 | extern void arch_task_cache_init(void); |
15685 | extern int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src); | 15696 | extern int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src); |
15686 | extern void arch_release_task_struct(struct task_struct *tsk); | 15697 | extern void arch_release_task_struct(struct task_struct *tsk); |
@@ -16004,18 +16015,18 @@ index 7f760a9..04b1c65 100644 | |||
16004 | unsigned long n) | 16015 | unsigned long n) |
16005 | { | 16016 | { |
16006 | - return __copy_from_user_ll_nocache_nozero(to, from, n); | 16017 | - return __copy_from_user_ll_nocache_nozero(to, from, n); |
16007 | -} | ||
16008 | + if ((long)n < 0) | 16018 | + if ((long)n < 0) |
16009 | + return n; | 16019 | + return n; |
16020 | + | ||
16021 | + return __copy_from_user_ll_nocache_nozero(to, from, n); | ||
16022 | } | ||
16010 | 16023 | ||
16011 | -unsigned long __must_check copy_to_user(void __user *to, | 16024 | -unsigned long __must_check copy_to_user(void __user *to, |
16012 | - const void *from, unsigned long n); | 16025 | - const void *from, unsigned long n); |
16013 | -unsigned long __must_check _copy_from_user(void *to, | 16026 | -unsigned long __must_check _copy_from_user(void *to, |
16014 | - const void __user *from, | 16027 | - const void __user *from, |
16015 | - unsigned long n); | 16028 | - unsigned long n); |
16016 | + return __copy_from_user_ll_nocache_nozero(to, from, n); | 16029 | - |
16017 | +} | ||
16018 | |||
16019 | +extern void copy_to_user_overflow(void) | 16030 | +extern void copy_to_user_overflow(void) |
16020 | +#ifdef CONFIG_DEBUG_STRICT_USER_COPY_CHECKS | 16031 | +#ifdef CONFIG_DEBUG_STRICT_USER_COPY_CHECKS |
16021 | + __compiletime_error("copy_to_user() buffer size is not provably correct") | 16032 | + __compiletime_error("copy_to_user() buffer size is not provably correct") |
@@ -16055,14 +16066,13 @@ index 7f760a9..04b1c65 100644 | |||
16055 | - if (likely(sz == -1 || sz >= n)) | 16066 | - if (likely(sz == -1 || sz >= n)) |
16056 | - n = _copy_from_user(to, from, n); | 16067 | - n = _copy_from_user(to, from, n); |
16057 | - else | 16068 | - else |
16058 | - copy_from_user_overflow(); | ||
16059 | + if (unlikely(sz != (size_t)-1 && sz < n)) | 16069 | + if (unlikely(sz != (size_t)-1 && sz < n)) |
16060 | + copy_to_user_overflow(); | 16070 | + copy_to_user_overflow(); |
16061 | + else if (access_ok(VERIFY_WRITE, to, n)) | 16071 | + else if (access_ok(VERIFY_WRITE, to, n)) |
16062 | + n = __copy_to_user(to, from, n); | 16072 | + n = __copy_to_user(to, from, n); |
16063 | + return n; | 16073 | + return n; |
16064 | +} | 16074 | +} |
16065 | 16075 | + | |
16066 | +/** | 16076 | +/** |
16067 | + * copy_from_user: - Copy a block of data from user space. | 16077 | + * copy_from_user: - Copy a block of data from user space. |
16068 | + * @to: Destination address, in kernel space. | 16078 | + * @to: Destination address, in kernel space. |
@@ -16087,7 +16097,8 @@ index 7f760a9..04b1c65 100644 | |||
16087 | + check_object_size(to, n, false); | 16097 | + check_object_size(to, n, false); |
16088 | + | 16098 | + |
16089 | + if (unlikely(sz != (size_t)-1 && sz < n)) | 16099 | + if (unlikely(sz != (size_t)-1 && sz < n)) |
16090 | + copy_from_user_overflow(); | 16100 | copy_from_user_overflow(); |
16101 | - | ||
16091 | + else if (access_ok(VERIFY_READ, from, n)) | 16102 | + else if (access_ok(VERIFY_READ, from, n)) |
16092 | + n = __copy_from_user(to, from, n); | 16103 | + n = __copy_from_user(to, from, n); |
16093 | + else if ((long)n > 0) | 16104 | + else if ((long)n > 0) |
@@ -16636,7 +16647,7 @@ index 230c8ea..f915130 100644 | |||
16636 | * HP laptops which use a DSDT reporting as HP/SB400/10000, | 16647 | * HP laptops which use a DSDT reporting as HP/SB400/10000, |
16637 | * which includes some code which overrides all temperature | 16648 | * which includes some code which overrides all temperature |
16638 | diff --git a/arch/x86/kernel/acpi/sleep.c b/arch/x86/kernel/acpi/sleep.c | 16649 | diff --git a/arch/x86/kernel/acpi/sleep.c b/arch/x86/kernel/acpi/sleep.c |
16639 | index 0532f5d..36afc0a 100644 | 16650 | index b44577b..27d8443 100644 |
16640 | --- a/arch/x86/kernel/acpi/sleep.c | 16651 | --- a/arch/x86/kernel/acpi/sleep.c |
16641 | +++ b/arch/x86/kernel/acpi/sleep.c | 16652 | +++ b/arch/x86/kernel/acpi/sleep.c |
16642 | @@ -74,8 +74,12 @@ int acpi_suspend_lowlevel(void) | 16653 | @@ -74,8 +74,12 @@ int acpi_suspend_lowlevel(void) |
@@ -16653,10 +16664,10 @@ index 0532f5d..36afc0a 100644 | |||
16653 | #endif | 16664 | #endif |
16654 | initial_code = (unsigned long)wakeup_long64; | 16665 | initial_code = (unsigned long)wakeup_long64; |
16655 | diff --git a/arch/x86/kernel/acpi/wakeup_32.S b/arch/x86/kernel/acpi/wakeup_32.S | 16666 | diff --git a/arch/x86/kernel/acpi/wakeup_32.S b/arch/x86/kernel/acpi/wakeup_32.S |
16656 | index 13ab720..95d5442 100644 | 16667 | index d1daa66..59fecba 100644 |
16657 | --- a/arch/x86/kernel/acpi/wakeup_32.S | 16668 | --- a/arch/x86/kernel/acpi/wakeup_32.S |
16658 | +++ b/arch/x86/kernel/acpi/wakeup_32.S | 16669 | +++ b/arch/x86/kernel/acpi/wakeup_32.S |
16659 | @@ -30,13 +30,11 @@ wakeup_pmode_return: | 16670 | @@ -29,13 +29,11 @@ wakeup_pmode_return: |
16660 | # and restore the stack ... but you need gdt for this to work | 16671 | # and restore the stack ... but you need gdt for this to work |
16661 | movl saved_context_esp, %esp | 16672 | movl saved_context_esp, %esp |
16662 | 16673 | ||
@@ -16673,7 +16684,7 @@ index 13ab720..95d5442 100644 | |||
16673 | bogus_magic: | 16684 | bogus_magic: |
16674 | jmp bogus_magic | 16685 | jmp bogus_magic |
16675 | diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c | 16686 | diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c |
16676 | index ef5ccca..bd83949 100644 | 16687 | index c15cf9a..0e63558 100644 |
16677 | --- a/arch/x86/kernel/alternative.c | 16688 | --- a/arch/x86/kernel/alternative.c |
16678 | +++ b/arch/x86/kernel/alternative.c | 16689 | +++ b/arch/x86/kernel/alternative.c |
16679 | @@ -268,6 +268,13 @@ void __init_or_module apply_alternatives(struct alt_instr *start, | 16690 | @@ -268,6 +268,13 @@ void __init_or_module apply_alternatives(struct alt_instr *start, |
@@ -17031,10 +17042,10 @@ index 794f6eb..67e1db2 100644 | |||
17031 | .name = "UV large system", | 17042 | .name = "UV large system", |
17032 | .probe = uv_probe, | 17043 | .probe = uv_probe, |
17033 | diff --git a/arch/x86/kernel/apm_32.c b/arch/x86/kernel/apm_32.c | 17044 | diff --git a/arch/x86/kernel/apm_32.c b/arch/x86/kernel/apm_32.c |
17034 | index 66b5faf..3442423 100644 | 17045 | index 53a4e27..038760a 100644 |
17035 | --- a/arch/x86/kernel/apm_32.c | 17046 | --- a/arch/x86/kernel/apm_32.c |
17036 | +++ b/arch/x86/kernel/apm_32.c | 17047 | +++ b/arch/x86/kernel/apm_32.c |
17037 | @@ -434,7 +434,7 @@ static DEFINE_MUTEX(apm_mutex); | 17048 | @@ -433,7 +433,7 @@ static DEFINE_MUTEX(apm_mutex); |
17038 | * This is for buggy BIOS's that refer to (real mode) segment 0x40 | 17049 | * This is for buggy BIOS's that refer to (real mode) segment 0x40 |
17039 | * even though they are called in protected mode. | 17050 | * even though they are called in protected mode. |
17040 | */ | 17051 | */ |
@@ -17043,7 +17054,7 @@ index 66b5faf..3442423 100644 | |||
17043 | (unsigned long)__va(0x400UL), PAGE_SIZE - 0x400 - 1); | 17054 | (unsigned long)__va(0x400UL), PAGE_SIZE - 0x400 - 1); |
17044 | 17055 | ||
17045 | static const char driver_version[] = "1.16ac"; /* no spaces */ | 17056 | static const char driver_version[] = "1.16ac"; /* no spaces */ |
17046 | @@ -612,7 +612,10 @@ static long __apm_bios_call(void *_call) | 17057 | @@ -611,7 +611,10 @@ static long __apm_bios_call(void *_call) |
17047 | BUG_ON(cpu != 0); | 17058 | BUG_ON(cpu != 0); |
17048 | gdt = get_cpu_gdt_table(cpu); | 17059 | gdt = get_cpu_gdt_table(cpu); |
17049 | save_desc_40 = gdt[0x40 / 8]; | 17060 | save_desc_40 = gdt[0x40 / 8]; |
@@ -17054,7 +17065,7 @@ index 66b5faf..3442423 100644 | |||
17054 | 17065 | ||
17055 | apm_irq_save(flags); | 17066 | apm_irq_save(flags); |
17056 | APM_DO_SAVE_SEGS; | 17067 | APM_DO_SAVE_SEGS; |
17057 | @@ -621,7 +624,11 @@ static long __apm_bios_call(void *_call) | 17068 | @@ -620,7 +623,11 @@ static long __apm_bios_call(void *_call) |
17058 | &call->esi); | 17069 | &call->esi); |
17059 | APM_DO_RESTORE_SEGS; | 17070 | APM_DO_RESTORE_SEGS; |
17060 | apm_irq_restore(flags); | 17071 | apm_irq_restore(flags); |
@@ -17066,7 +17077,7 @@ index 66b5faf..3442423 100644 | |||
17066 | put_cpu(); | 17077 | put_cpu(); |
17067 | 17078 | ||
17068 | return call->eax & 0xff; | 17079 | return call->eax & 0xff; |
17069 | @@ -688,7 +695,10 @@ static long __apm_bios_call_simple(void *_call) | 17080 | @@ -687,7 +694,10 @@ static long __apm_bios_call_simple(void *_call) |
17070 | BUG_ON(cpu != 0); | 17081 | BUG_ON(cpu != 0); |
17071 | gdt = get_cpu_gdt_table(cpu); | 17082 | gdt = get_cpu_gdt_table(cpu); |
17072 | save_desc_40 = gdt[0x40 / 8]; | 17083 | save_desc_40 = gdt[0x40 / 8]; |
@@ -17077,7 +17088,7 @@ index 66b5faf..3442423 100644 | |||
17077 | 17088 | ||
17078 | apm_irq_save(flags); | 17089 | apm_irq_save(flags); |
17079 | APM_DO_SAVE_SEGS; | 17090 | APM_DO_SAVE_SEGS; |
17080 | @@ -696,7 +706,11 @@ static long __apm_bios_call_simple(void *_call) | 17091 | @@ -695,7 +705,11 @@ static long __apm_bios_call_simple(void *_call) |
17081 | &call->eax); | 17092 | &call->eax); |
17082 | APM_DO_RESTORE_SEGS; | 17093 | APM_DO_RESTORE_SEGS; |
17083 | apm_irq_restore(flags); | 17094 | apm_irq_restore(flags); |
@@ -17089,7 +17100,7 @@ index 66b5faf..3442423 100644 | |||
17089 | put_cpu(); | 17100 | put_cpu(); |
17090 | return error; | 17101 | return error; |
17091 | } | 17102 | } |
17092 | @@ -2363,12 +2377,15 @@ static int __init apm_init(void) | 17103 | @@ -2362,12 +2376,15 @@ static int __init apm_init(void) |
17093 | * code to that CPU. | 17104 | * code to that CPU. |
17094 | */ | 17105 | */ |
17095 | gdt = get_cpu_gdt_table(0); | 17106 | gdt = get_cpu_gdt_table(0); |
@@ -17125,16 +17136,16 @@ index 2861082..6d4718e 100644 | |||
17125 | + | 17136 | + |
17126 | +#ifdef CONFIG_PAX_KERNEXEC | 17137 | +#ifdef CONFIG_PAX_KERNEXEC |
17127 | + OFFSET(PV_CPU_write_cr0, pv_cpu_ops, write_cr0); | 17138 | + OFFSET(PV_CPU_write_cr0, pv_cpu_ops, write_cr0); |
17128 | +#endif | 17139 | #endif |
17129 | + | 17140 | |
17130 | +#ifdef CONFIG_PAX_MEMORY_UDEREF | 17141 | +#ifdef CONFIG_PAX_MEMORY_UDEREF |
17131 | + OFFSET(PV_MMU_read_cr3, pv_mmu_ops, read_cr3); | 17142 | + OFFSET(PV_MMU_read_cr3, pv_mmu_ops, read_cr3); |
17132 | + OFFSET(PV_MMU_write_cr3, pv_mmu_ops, write_cr3); | 17143 | + OFFSET(PV_MMU_write_cr3, pv_mmu_ops, write_cr3); |
17133 | +#ifdef CONFIG_X86_64 | 17144 | +#ifdef CONFIG_X86_64 |
17134 | + OFFSET(PV_MMU_set_pgd_batched, pv_mmu_ops, set_pgd_batched); | 17145 | + OFFSET(PV_MMU_set_pgd_batched, pv_mmu_ops, set_pgd_batched); |
17135 | +#endif | 17146 | +#endif |
17136 | #endif | 17147 | +#endif |
17137 | 17148 | + | |
17138 | +#endif | 17149 | +#endif |
17139 | + | 17150 | + |
17140 | + BLANK(); | 17151 | + BLANK(); |
@@ -17146,10 +17157,10 @@ index 2861082..6d4718e 100644 | |||
17146 | BLANK(); | 17157 | BLANK(); |
17147 | OFFSET(XEN_vcpu_info_mask, vcpu_info, evtchn_upcall_mask); | 17158 | OFFSET(XEN_vcpu_info_mask, vcpu_info, evtchn_upcall_mask); |
17148 | diff --git a/arch/x86/kernel/asm-offsets_64.c b/arch/x86/kernel/asm-offsets_64.c | 17159 | diff --git a/arch/x86/kernel/asm-offsets_64.c b/arch/x86/kernel/asm-offsets_64.c |
17149 | index 1b4754f..fbb4227 100644 | 17160 | index e7c798b..2b2019b 100644 |
17150 | --- a/arch/x86/kernel/asm-offsets_64.c | 17161 | --- a/arch/x86/kernel/asm-offsets_64.c |
17151 | +++ b/arch/x86/kernel/asm-offsets_64.c | 17162 | +++ b/arch/x86/kernel/asm-offsets_64.c |
17152 | @@ -76,6 +76,7 @@ int main(void) | 17163 | @@ -77,6 +77,7 @@ int main(void) |
17153 | BLANK(); | 17164 | BLANK(); |
17154 | #undef ENTRY | 17165 | #undef ENTRY |
17155 | 17166 | ||
@@ -17158,7 +17169,7 @@ index 1b4754f..fbb4227 100644 | |||
17158 | BLANK(); | 17169 | BLANK(); |
17159 | 17170 | ||
17160 | diff --git a/arch/x86/kernel/cpu/Makefile b/arch/x86/kernel/cpu/Makefile | 17171 | diff --git a/arch/x86/kernel/cpu/Makefile b/arch/x86/kernel/cpu/Makefile |
17161 | index a0e067d..9c7db16 100644 | 17172 | index b0684e4..22ccfd7 100644 |
17162 | --- a/arch/x86/kernel/cpu/Makefile | 17173 | --- a/arch/x86/kernel/cpu/Makefile |
17163 | +++ b/arch/x86/kernel/cpu/Makefile | 17174 | +++ b/arch/x86/kernel/cpu/Makefile |
17164 | @@ -8,10 +8,6 @@ CFLAGS_REMOVE_common.o = -pg | 17175 | @@ -8,10 +8,6 @@ CFLAGS_REMOVE_common.o = -pg |
@@ -17171,12 +17182,12 @@ index a0e067d..9c7db16 100644 | |||
17171 | - | 17182 | - |
17172 | obj-y := intel_cacheinfo.o scattered.o topology.o | 17183 | obj-y := intel_cacheinfo.o scattered.o topology.o |
17173 | obj-y += proc.o capflags.o powerflags.o common.o | 17184 | obj-y += proc.o capflags.o powerflags.o common.o |
17174 | obj-y += vmware.o hypervisor.o mshyperv.o | 17185 | obj-y += rdrand.o |
17175 | diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c | 17186 | diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c |
17176 | index fa96eb0..03efe73 100644 | 17187 | index 5013a48..0782c53 100644 |
17177 | --- a/arch/x86/kernel/cpu/amd.c | 17188 | --- a/arch/x86/kernel/cpu/amd.c |
17178 | +++ b/arch/x86/kernel/cpu/amd.c | 17189 | +++ b/arch/x86/kernel/cpu/amd.c |
17179 | @@ -737,7 +737,7 @@ static unsigned int __cpuinit amd_size_cache(struct cpuinfo_x86 *c, | 17190 | @@ -744,7 +744,7 @@ static unsigned int __cpuinit amd_size_cache(struct cpuinfo_x86 *c, |
17180 | unsigned int size) | 17191 | unsigned int size) |
17181 | { | 17192 | { |
17182 | /* AMD errata T13 (order #21922) */ | 17193 | /* AMD errata T13 (order #21922) */ |
@@ -17186,7 +17197,7 @@ index fa96eb0..03efe73 100644 | |||
17186 | if (c->x86_model == 3 && c->x86_mask == 0) | 17197 | if (c->x86_model == 3 && c->x86_mask == 0) |
17187 | size = 64; | 17198 | size = 64; |
17188 | diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c | 17199 | diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c |
17189 | index d814772..c615653 100644 | 17200 | index 22018f7..bc6f5e3 100644 |
17190 | --- a/arch/x86/kernel/cpu/common.c | 17201 | --- a/arch/x86/kernel/cpu/common.c |
17191 | +++ b/arch/x86/kernel/cpu/common.c | 17202 | +++ b/arch/x86/kernel/cpu/common.c |
17192 | @@ -88,60 +88,6 @@ static const struct cpu_dev __cpuinitconst default_cpu = { | 17203 | @@ -88,60 +88,6 @@ static const struct cpu_dev __cpuinitconst default_cpu = { |
@@ -17270,7 +17281,7 @@ index d814772..c615653 100644 | |||
17270 | /* If the model name is still unset, do table lookup. */ | 17281 | /* If the model name is still unset, do table lookup. */ |
17271 | if (!c->x86_model_id[0]) { | 17282 | if (!c->x86_model_id[0]) { |
17272 | const char *p; | 17283 | const char *p; |
17273 | @@ -1065,10 +1015,12 @@ static __init int setup_disablecpuid(char *arg) | 17284 | @@ -1069,10 +1019,12 @@ static __init int setup_disablecpuid(char *arg) |
17274 | } | 17285 | } |
17275 | __setup("clearcpuid=", setup_disablecpuid); | 17286 | __setup("clearcpuid=", setup_disablecpuid); |
17276 | 17287 | ||
@@ -17285,7 +17296,7 @@ index d814772..c615653 100644 | |||
17285 | 17296 | ||
17286 | DEFINE_PER_CPU_FIRST(union irq_stack_union, | 17297 | DEFINE_PER_CPU_FIRST(union irq_stack_union, |
17287 | irq_stack_union) __aligned(PAGE_SIZE); | 17298 | irq_stack_union) __aligned(PAGE_SIZE); |
17288 | @@ -1082,7 +1034,7 @@ DEFINE_PER_CPU(struct task_struct *, current_task) ____cacheline_aligned = | 17299 | @@ -1086,7 +1038,7 @@ DEFINE_PER_CPU(struct task_struct *, current_task) ____cacheline_aligned = |
17289 | EXPORT_PER_CPU_SYMBOL(current_task); | 17300 | EXPORT_PER_CPU_SYMBOL(current_task); |
17290 | 17301 | ||
17291 | DEFINE_PER_CPU(unsigned long, kernel_stack) = | 17302 | DEFINE_PER_CPU(unsigned long, kernel_stack) = |
@@ -17294,7 +17305,7 @@ index d814772..c615653 100644 | |||
17294 | EXPORT_PER_CPU_SYMBOL(kernel_stack); | 17305 | EXPORT_PER_CPU_SYMBOL(kernel_stack); |
17295 | 17306 | ||
17296 | DEFINE_PER_CPU(char *, irq_stack_ptr) = | 17307 | DEFINE_PER_CPU(char *, irq_stack_ptr) = |
17297 | @@ -1227,7 +1179,7 @@ void __cpuinit cpu_init(void) | 17308 | @@ -1231,7 +1183,7 @@ void __cpuinit cpu_init(void) |
17298 | load_ucode_ap(); | 17309 | load_ucode_ap(); |
17299 | 17310 | ||
17300 | cpu = stack_smp_processor_id(); | 17311 | cpu = stack_smp_processor_id(); |
@@ -17303,7 +17314,7 @@ index d814772..c615653 100644 | |||
17303 | oist = &per_cpu(orig_ist, cpu); | 17314 | oist = &per_cpu(orig_ist, cpu); |
17304 | 17315 | ||
17305 | #ifdef CONFIG_NUMA | 17316 | #ifdef CONFIG_NUMA |
17306 | @@ -1253,7 +1205,7 @@ void __cpuinit cpu_init(void) | 17317 | @@ -1257,7 +1209,7 @@ void __cpuinit cpu_init(void) |
17307 | switch_to_new_gdt(cpu); | 17318 | switch_to_new_gdt(cpu); |
17308 | loadsegment(fs, 0); | 17319 | loadsegment(fs, 0); |
17309 | 17320 | ||
@@ -17312,7 +17323,7 @@ index d814772..c615653 100644 | |||
17312 | 17323 | ||
17313 | memset(me->thread.tls_array, 0, GDT_ENTRY_TLS_ENTRIES * 8); | 17324 | memset(me->thread.tls_array, 0, GDT_ENTRY_TLS_ENTRIES * 8); |
17314 | syscall_init(); | 17325 | syscall_init(); |
17315 | @@ -1262,7 +1214,6 @@ void __cpuinit cpu_init(void) | 17326 | @@ -1266,7 +1218,6 @@ void __cpuinit cpu_init(void) |
17316 | wrmsrl(MSR_KERNEL_GS_BASE, 0); | 17327 | wrmsrl(MSR_KERNEL_GS_BASE, 0); |
17317 | barrier(); | 17328 | barrier(); |
17318 | 17329 | ||
@@ -17320,7 +17331,7 @@ index d814772..c615653 100644 | |||
17320 | enable_x2apic(); | 17331 | enable_x2apic(); |
17321 | 17332 | ||
17322 | /* | 17333 | /* |
17323 | @@ -1314,7 +1265,7 @@ void __cpuinit cpu_init(void) | 17334 | @@ -1318,7 +1269,7 @@ void __cpuinit cpu_init(void) |
17324 | { | 17335 | { |
17325 | int cpu = smp_processor_id(); | 17336 | int cpu = smp_processor_id(); |
17326 | struct task_struct *curr = current; | 17337 | struct task_struct *curr = current; |
@@ -17329,19 +17340,6 @@ index d814772..c615653 100644 | |||
17329 | struct thread_struct *thread = &curr->thread; | 17340 | struct thread_struct *thread = &curr->thread; |
17330 | 17341 | ||
17331 | show_ucode_info_early(); | 17342 | show_ucode_info_early(); |
17332 | diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c | ||
17333 | index 1905ce9..a7ac587 100644 | ||
17334 | --- a/arch/x86/kernel/cpu/intel.c | ||
17335 | +++ b/arch/x86/kernel/cpu/intel.c | ||
17336 | @@ -173,7 +173,7 @@ static void __cpuinit trap_init_f00f_bug(void) | ||
17337 | * Update the IDT descriptor and reload the IDT so that | ||
17338 | * it uses the read-only mapped virtual address. | ||
17339 | */ | ||
17340 | - idt_descr.address = fix_to_virt(FIX_F00F_IDT); | ||
17341 | + idt_descr.address = (struct desc_struct *)fix_to_virt(FIX_F00F_IDT); | ||
17342 | load_idt(&idt_descr); | ||
17343 | } | ||
17344 | #endif | ||
17345 | diff --git a/arch/x86/kernel/cpu/intel_cacheinfo.c b/arch/x86/kernel/cpu/intel_cacheinfo.c | 17343 | diff --git a/arch/x86/kernel/cpu/intel_cacheinfo.c b/arch/x86/kernel/cpu/intel_cacheinfo.c |
17346 | index 7c6f7d5..8cac382 100644 | 17344 | index 7c6f7d5..8cac382 100644 |
17347 | --- a/arch/x86/kernel/cpu/intel_cacheinfo.c | 17345 | --- a/arch/x86/kernel/cpu/intel_cacheinfo.c |
@@ -17443,7 +17441,7 @@ index 7c6f7d5..8cac382 100644 | |||
17443 | }; | 17441 | }; |
17444 | 17442 | ||
17445 | diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c | 17443 | diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c |
17446 | index 7bc1263..bff5686 100644 | 17444 | index 9239504..b2471ce 100644 |
17447 | --- a/arch/x86/kernel/cpu/mcheck/mce.c | 17445 | --- a/arch/x86/kernel/cpu/mcheck/mce.c |
17448 | +++ b/arch/x86/kernel/cpu/mcheck/mce.c | 17446 | +++ b/arch/x86/kernel/cpu/mcheck/mce.c |
17449 | @@ -45,6 +45,7 @@ | 17447 | @@ -45,6 +45,7 @@ |
@@ -17678,10 +17676,10 @@ index df5e41f..816c719 100644 | |||
17678 | extern int generic_get_free_region(unsigned long base, unsigned long size, | 17676 | extern int generic_get_free_region(unsigned long base, unsigned long size, |
17679 | int replace_reg); | 17677 | int replace_reg); |
17680 | diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c | 17678 | diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c |
17681 | index bf0f01a..9adfee1 100644 | 17679 | index 1025f3c..824f677 100644 |
17682 | --- a/arch/x86/kernel/cpu/perf_event.c | 17680 | --- a/arch/x86/kernel/cpu/perf_event.c |
17683 | +++ b/arch/x86/kernel/cpu/perf_event.c | 17681 | +++ b/arch/x86/kernel/cpu/perf_event.c |
17684 | @@ -1305,7 +1305,7 @@ static void __init pmu_check_apic(void) | 17682 | @@ -1311,7 +1311,7 @@ static void __init pmu_check_apic(void) |
17685 | pr_info("no hardware sampling interrupt available.\n"); | 17683 | pr_info("no hardware sampling interrupt available.\n"); |
17686 | } | 17684 | } |
17687 | 17685 | ||
@@ -17690,7 +17688,7 @@ index bf0f01a..9adfee1 100644 | |||
17690 | .name = "format", | 17688 | .name = "format", |
17691 | .attrs = NULL, | 17689 | .attrs = NULL, |
17692 | }; | 17690 | }; |
17693 | @@ -1374,7 +1374,7 @@ static struct attribute *events_attr[] = { | 17691 | @@ -1410,7 +1410,7 @@ static struct attribute *events_attr[] = { |
17694 | NULL, | 17692 | NULL, |
17695 | }; | 17693 | }; |
17696 | 17694 | ||
@@ -17699,7 +17697,7 @@ index bf0f01a..9adfee1 100644 | |||
17699 | .name = "events", | 17697 | .name = "events", |
17700 | .attrs = events_attr, | 17698 | .attrs = events_attr, |
17701 | }; | 17699 | }; |
17702 | @@ -1873,7 +1873,7 @@ static unsigned long get_segment_base(unsigned int segment) | 17700 | @@ -1920,7 +1920,7 @@ static unsigned long get_segment_base(unsigned int segment) |
17703 | if (idx > GDT_ENTRIES) | 17701 | if (idx > GDT_ENTRIES) |
17704 | return 0; | 17702 | return 0; |
17705 | 17703 | ||
@@ -17708,7 +17706,7 @@ index bf0f01a..9adfee1 100644 | |||
17708 | } | 17706 | } |
17709 | 17707 | ||
17710 | return get_desc_base(desc + idx); | 17708 | return get_desc_base(desc + idx); |
17711 | @@ -1963,7 +1963,7 @@ perf_callchain_user(struct perf_callchain_entry *entry, struct pt_regs *regs) | 17709 | @@ -2010,7 +2010,7 @@ perf_callchain_user(struct perf_callchain_entry *entry, struct pt_regs *regs) |
17712 | break; | 17710 | break; |
17713 | 17711 | ||
17714 | perf_callchain_store(entry, frame.return_address); | 17712 | perf_callchain_store(entry, frame.return_address); |
@@ -17718,10 +17716,10 @@ index bf0f01a..9adfee1 100644 | |||
17718 | } | 17716 | } |
17719 | 17717 | ||
17720 | diff --git a/arch/x86/kernel/cpu/perf_event_intel.c b/arch/x86/kernel/cpu/perf_event_intel.c | 17718 | diff --git a/arch/x86/kernel/cpu/perf_event_intel.c b/arch/x86/kernel/cpu/perf_event_intel.c |
17721 | index 4a0a462..be3b204 100644 | 17719 | index a9e2207..d70c83a 100644 |
17722 | --- a/arch/x86/kernel/cpu/perf_event_intel.c | 17720 | --- a/arch/x86/kernel/cpu/perf_event_intel.c |
17723 | +++ b/arch/x86/kernel/cpu/perf_event_intel.c | 17721 | +++ b/arch/x86/kernel/cpu/perf_event_intel.c |
17724 | @@ -1994,10 +1994,10 @@ __init int intel_pmu_init(void) | 17722 | @@ -2022,10 +2022,10 @@ __init int intel_pmu_init(void) |
17725 | * v2 and above have a perf capabilities MSR | 17723 | * v2 and above have a perf capabilities MSR |
17726 | */ | 17724 | */ |
17727 | if (version > 1) { | 17725 | if (version > 1) { |
@@ -17736,10 +17734,10 @@ index 4a0a462..be3b204 100644 | |||
17736 | 17734 | ||
17737 | intel_ds_init(); | 17735 | intel_ds_init(); |
17738 | diff --git a/arch/x86/kernel/cpu/perf_event_intel_uncore.c b/arch/x86/kernel/cpu/perf_event_intel_uncore.c | 17736 | diff --git a/arch/x86/kernel/cpu/perf_event_intel_uncore.c b/arch/x86/kernel/cpu/perf_event_intel_uncore.c |
17739 | index 3e091f0..d2dc8d6 100644 | 17737 | index 52441a2..f94fae8 100644 |
17740 | --- a/arch/x86/kernel/cpu/perf_event_intel_uncore.c | 17738 | --- a/arch/x86/kernel/cpu/perf_event_intel_uncore.c |
17741 | +++ b/arch/x86/kernel/cpu/perf_event_intel_uncore.c | 17739 | +++ b/arch/x86/kernel/cpu/perf_event_intel_uncore.c |
17742 | @@ -2428,7 +2428,7 @@ static void __init uncore_types_exit(struct intel_uncore_type **types) | 17740 | @@ -3093,7 +3093,7 @@ static void __init uncore_types_exit(struct intel_uncore_type **types) |
17743 | static int __init uncore_type_init(struct intel_uncore_type *type) | 17741 | static int __init uncore_type_init(struct intel_uncore_type *type) |
17744 | { | 17742 | { |
17745 | struct intel_uncore_pmu *pmus; | 17743 | struct intel_uncore_pmu *pmus; |
@@ -17748,7 +17746,7 @@ index 3e091f0..d2dc8d6 100644 | |||
17748 | struct attribute **attrs; | 17746 | struct attribute **attrs; |
17749 | int i, j; | 17747 | int i, j; |
17750 | 17748 | ||
17751 | @@ -2826,7 +2826,7 @@ static int | 17749 | @@ -3518,7 +3518,7 @@ static int |
17752 | return NOTIFY_OK; | 17750 | return NOTIFY_OK; |
17753 | } | 17751 | } |
17754 | 17752 | ||
@@ -17758,10 +17756,10 @@ index 3e091f0..d2dc8d6 100644 | |||
17758 | /* | 17756 | /* |
17759 | * to migrate uncore events, our notifier should be executed | 17757 | * to migrate uncore events, our notifier should be executed |
17760 | diff --git a/arch/x86/kernel/cpu/perf_event_intel_uncore.h b/arch/x86/kernel/cpu/perf_event_intel_uncore.h | 17758 | diff --git a/arch/x86/kernel/cpu/perf_event_intel_uncore.h b/arch/x86/kernel/cpu/perf_event_intel_uncore.h |
17761 | index e68a455..975a932 100644 | 17759 | index f952891..4722ad4 100644 |
17762 | --- a/arch/x86/kernel/cpu/perf_event_intel_uncore.h | 17760 | --- a/arch/x86/kernel/cpu/perf_event_intel_uncore.h |
17763 | +++ b/arch/x86/kernel/cpu/perf_event_intel_uncore.h | 17761 | +++ b/arch/x86/kernel/cpu/perf_event_intel_uncore.h |
17764 | @@ -428,7 +428,7 @@ struct intel_uncore_box { | 17762 | @@ -488,7 +488,7 @@ struct intel_uncore_box { |
17765 | struct uncore_event_desc { | 17763 | struct uncore_event_desc { |
17766 | struct kobj_attribute attr; | 17764 | struct kobj_attribute attr; |
17767 | const char *config; | 17765 | const char *config; |
@@ -17813,7 +17811,7 @@ index afa64ad..dce67dd 100644 | |||
17813 | return -EFAULT; | 17811 | return -EFAULT; |
17814 | } | 17812 | } |
17815 | diff --git a/arch/x86/kernel/doublefault_32.c b/arch/x86/kernel/doublefault_32.c | 17813 | diff --git a/arch/x86/kernel/doublefault_32.c b/arch/x86/kernel/doublefault_32.c |
17816 | index 37250fe..bf2ec74 100644 | 17814 | index 155a13f..1672b9b 100644 |
17817 | --- a/arch/x86/kernel/doublefault_32.c | 17815 | --- a/arch/x86/kernel/doublefault_32.c |
17818 | +++ b/arch/x86/kernel/doublefault_32.c | 17816 | +++ b/arch/x86/kernel/doublefault_32.c |
17819 | @@ -11,7 +11,7 @@ | 17817 | @@ -11,7 +11,7 @@ |
@@ -17828,7 +17826,7 @@ index 37250fe..bf2ec74 100644 | |||
17828 | @@ -21,7 +21,7 @@ static void doublefault_fn(void) | 17826 | @@ -21,7 +21,7 @@ static void doublefault_fn(void) |
17829 | unsigned long gdt, tss; | 17827 | unsigned long gdt, tss; |
17830 | 17828 | ||
17831 | store_gdt(&gdt_desc); | 17829 | native_store_gdt(&gdt_desc); |
17832 | - gdt = gdt_desc.address; | 17830 | - gdt = gdt_desc.address; |
17833 | + gdt = (unsigned long)gdt_desc.address; | 17831 | + gdt = (unsigned long)gdt_desc.address; |
17834 | 17832 | ||
@@ -17848,7 +17846,7 @@ index 37250fe..bf2ec74 100644 | |||
17848 | 17846 | ||
17849 | .__cr3 = __pa_nodebug(swapper_pg_dir), | 17847 | .__cr3 = __pa_nodebug(swapper_pg_dir), |
17850 | diff --git a/arch/x86/kernel/dumpstack.c b/arch/x86/kernel/dumpstack.c | 17848 | diff --git a/arch/x86/kernel/dumpstack.c b/arch/x86/kernel/dumpstack.c |
17851 | index c8797d5..c605e53 100644 | 17849 | index deb6421..76bbc12 100644 |
17852 | --- a/arch/x86/kernel/dumpstack.c | 17850 | --- a/arch/x86/kernel/dumpstack.c |
17853 | +++ b/arch/x86/kernel/dumpstack.c | 17851 | +++ b/arch/x86/kernel/dumpstack.c |
17854 | @@ -2,6 +2,9 @@ | 17852 | @@ -2,6 +2,9 @@ |
@@ -17953,16 +17951,16 @@ index c8797d5..c605e53 100644 | |||
17953 | } | 17951 | } |
17954 | 17952 | ||
17955 | return (unsigned long)frame; | 17953 | return (unsigned long)frame; |
17956 | @@ -189,7 +188,7 @@ void dump_stack(void) | 17954 | @@ -150,7 +149,7 @@ static int print_trace_stack(void *data, char *name) |
17955 | static void print_trace_address(void *data, unsigned long addr, int reliable) | ||
17956 | { | ||
17957 | touch_nmi_watchdog(); | ||
17958 | - printk(data); | ||
17959 | + printk("%s", (char *)data); | ||
17960 | printk_address(addr, reliable); | ||
17961 | } | ||
17957 | 17962 | ||
17958 | bp = stack_frame(current, NULL); | 17963 | @@ -219,6 +218,8 @@ unsigned __kprobes long oops_begin(void) |
17959 | printk("Pid: %d, comm: %.20s %s %s %.*s\n", | ||
17960 | - current->pid, current->comm, print_tainted(), | ||
17961 | + task_pid_nr(current), current->comm, print_tainted(), | ||
17962 | init_utsname()->release, | ||
17963 | (int)strcspn(init_utsname()->version, " "), | ||
17964 | init_utsname()->version); | ||
17965 | @@ -225,6 +224,8 @@ unsigned __kprobes long oops_begin(void) | ||
17966 | } | 17964 | } |
17967 | EXPORT_SYMBOL_GPL(oops_begin); | 17965 | EXPORT_SYMBOL_GPL(oops_begin); |
17968 | 17966 | ||
@@ -17971,7 +17969,7 @@ index c8797d5..c605e53 100644 | |||
17971 | void __kprobes oops_end(unsigned long flags, struct pt_regs *regs, int signr) | 17969 | void __kprobes oops_end(unsigned long flags, struct pt_regs *regs, int signr) |
17972 | { | 17970 | { |
17973 | if (regs && kexec_should_crash(current)) | 17971 | if (regs && kexec_should_crash(current)) |
17974 | @@ -246,7 +247,10 @@ void __kprobes oops_end(unsigned long flags, struct pt_regs *regs, int signr) | 17972 | @@ -240,7 +241,10 @@ void __kprobes oops_end(unsigned long flags, struct pt_regs *regs, int signr) |
17975 | panic("Fatal exception in interrupt"); | 17973 | panic("Fatal exception in interrupt"); |
17976 | if (panic_on_oops) | 17974 | if (panic_on_oops) |
17977 | panic("Fatal exception"); | 17975 | panic("Fatal exception"); |
@@ -17983,7 +17981,7 @@ index c8797d5..c605e53 100644 | |||
17983 | } | 17981 | } |
17984 | 17982 | ||
17985 | int __kprobes __die(const char *str, struct pt_regs *regs, long err) | 17983 | int __kprobes __die(const char *str, struct pt_regs *regs, long err) |
17986 | @@ -274,7 +278,7 @@ int __kprobes __die(const char *str, struct pt_regs *regs, long err) | 17984 | @@ -268,7 +272,7 @@ int __kprobes __die(const char *str, struct pt_regs *regs, long err) |
17987 | print_modules(); | 17985 | print_modules(); |
17988 | show_regs(regs); | 17986 | show_regs(regs); |
17989 | #ifdef CONFIG_X86_32 | 17987 | #ifdef CONFIG_X86_32 |
@@ -17992,7 +17990,7 @@ index c8797d5..c605e53 100644 | |||
17992 | sp = regs->sp; | 17990 | sp = regs->sp; |
17993 | ss = regs->ss & 0xffff; | 17991 | ss = regs->ss & 0xffff; |
17994 | } else { | 17992 | } else { |
17995 | @@ -302,7 +306,7 @@ void die(const char *str, struct pt_regs *regs, long err) | 17993 | @@ -296,7 +300,7 @@ void die(const char *str, struct pt_regs *regs, long err) |
17996 | unsigned long flags = oops_begin(); | 17994 | unsigned long flags = oops_begin(); |
17997 | int sig = SIGSEGV; | 17995 | int sig = SIGSEGV; |
17998 | 17996 | ||
@@ -18002,7 +18000,7 @@ index c8797d5..c605e53 100644 | |||
18002 | 18000 | ||
18003 | if (__die(str, regs, err)) | 18001 | if (__die(str, regs, err)) |
18004 | diff --git a/arch/x86/kernel/dumpstack_32.c b/arch/x86/kernel/dumpstack_32.c | 18002 | diff --git a/arch/x86/kernel/dumpstack_32.c b/arch/x86/kernel/dumpstack_32.c |
18005 | index 1038a41..db2c12b 100644 | 18003 | index f2a1770..540657f 100644 |
18006 | --- a/arch/x86/kernel/dumpstack_32.c | 18004 | --- a/arch/x86/kernel/dumpstack_32.c |
18007 | +++ b/arch/x86/kernel/dumpstack_32.c | 18005 | +++ b/arch/x86/kernel/dumpstack_32.c |
18008 | @@ -38,15 +38,13 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs, | 18006 | @@ -38,15 +38,13 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs, |
@@ -18025,16 +18023,14 @@ index 1038a41..db2c12b 100644 | |||
18025 | if (ops->stack(data, "IRQ") < 0) | 18023 | if (ops->stack(data, "IRQ") < 0) |
18026 | break; | 18024 | break; |
18027 | touch_nmi_watchdog(); | 18025 | touch_nmi_watchdog(); |
18028 | @@ -86,7 +84,7 @@ void show_regs(struct pt_regs *regs) | 18026 | @@ -87,27 +85,28 @@ void show_regs(struct pt_regs *regs) |
18029 | { | ||
18030 | int i; | 18027 | int i; |
18031 | 18028 | ||
18029 | show_regs_print_info(KERN_EMERG); | ||
18032 | - __show_regs(regs, !user_mode_vm(regs)); | 18030 | - __show_regs(regs, !user_mode_vm(regs)); |
18033 | + __show_regs(regs, !user_mode(regs)); | 18031 | + __show_regs(regs, !user_mode(regs)); |
18034 | 18032 | ||
18035 | pr_emerg("Process %.*s (pid: %d, ti=%p task=%p task.ti=%p)\n", | 18033 | /* |
18036 | TASK_COMM_LEN, current->comm, task_pid_nr(current), | ||
18037 | @@ -95,21 +93,22 @@ void show_regs(struct pt_regs *regs) | ||
18038 | * When in-kernel, we also print out the stack and code at the | 18034 | * When in-kernel, we also print out the stack and code at the |
18039 | * time of the fault.. | 18035 | * time of the fault.. |
18040 | */ | 18036 | */ |
@@ -18060,7 +18056,7 @@ index 1038a41..db2c12b 100644 | |||
18060 | code_len = code_len - code_prologue + 1; | 18056 | code_len = code_len - code_prologue + 1; |
18061 | } | 18057 | } |
18062 | for (i = 0; i < code_len; i++, ip++) { | 18058 | for (i = 0; i < code_len; i++, ip++) { |
18063 | @@ -118,7 +117,7 @@ void show_regs(struct pt_regs *regs) | 18059 | @@ -116,7 +115,7 @@ void show_regs(struct pt_regs *regs) |
18064 | pr_cont(" Bad EIP value."); | 18060 | pr_cont(" Bad EIP value."); |
18065 | break; | 18061 | break; |
18066 | } | 18062 | } |
@@ -18069,7 +18065,7 @@ index 1038a41..db2c12b 100644 | |||
18069 | pr_cont(" <%02x>", c); | 18065 | pr_cont(" <%02x>", c); |
18070 | else | 18066 | else |
18071 | pr_cont(" %02x", c); | 18067 | pr_cont(" %02x", c); |
18072 | @@ -131,6 +130,7 @@ int is_valid_bugaddr(unsigned long ip) | 18068 | @@ -129,6 +128,7 @@ int is_valid_bugaddr(unsigned long ip) |
18073 | { | 18069 | { |
18074 | unsigned short ud2; | 18070 | unsigned short ud2; |
18075 | 18071 | ||
@@ -18077,7 +18073,7 @@ index 1038a41..db2c12b 100644 | |||
18077 | if (ip < PAGE_OFFSET) | 18073 | if (ip < PAGE_OFFSET) |
18078 | return 0; | 18074 | return 0; |
18079 | if (probe_kernel_address((unsigned short *)ip, ud2)) | 18075 | if (probe_kernel_address((unsigned short *)ip, ud2)) |
18080 | @@ -138,3 +138,15 @@ int is_valid_bugaddr(unsigned long ip) | 18076 | @@ -136,3 +136,15 @@ int is_valid_bugaddr(unsigned long ip) |
18081 | 18077 | ||
18082 | return ud2 == 0x0b0f; | 18078 | return ud2 == 0x0b0f; |
18083 | } | 18079 | } |
@@ -18094,7 +18090,7 @@ index 1038a41..db2c12b 100644 | |||
18094 | +EXPORT_SYMBOL(pax_check_alloca); | 18090 | +EXPORT_SYMBOL(pax_check_alloca); |
18095 | +#endif | 18091 | +#endif |
18096 | diff --git a/arch/x86/kernel/dumpstack_64.c b/arch/x86/kernel/dumpstack_64.c | 18092 | diff --git a/arch/x86/kernel/dumpstack_64.c b/arch/x86/kernel/dumpstack_64.c |
18097 | index b653675..51cc8c0 100644 | 18093 | index addb207..99635fa 100644 |
18098 | --- a/arch/x86/kernel/dumpstack_64.c | 18094 | --- a/arch/x86/kernel/dumpstack_64.c |
18099 | +++ b/arch/x86/kernel/dumpstack_64.c | 18095 | +++ b/arch/x86/kernel/dumpstack_64.c |
18100 | @@ -119,9 +119,9 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs, | 18096 | @@ -119,9 +119,9 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs, |
@@ -18158,16 +18154,7 @@ index b653675..51cc8c0 100644 | |||
18158 | put_cpu(); | 18154 | put_cpu(); |
18159 | } | 18155 | } |
18160 | EXPORT_SYMBOL(dump_trace); | 18156 | EXPORT_SYMBOL(dump_trace); |
18161 | @@ -249,7 +253,7 @@ void show_regs(struct pt_regs *regs) | 18157 | @@ -300,3 +304,50 @@ int is_valid_bugaddr(unsigned long ip) |
18162 | { | ||
18163 | int i; | ||
18164 | unsigned long sp; | ||
18165 | - const int cpu = smp_processor_id(); | ||
18166 | + const int cpu = raw_smp_processor_id(); | ||
18167 | struct task_struct *cur = current; | ||
18168 | |||
18169 | sp = regs->sp; | ||
18170 | @@ -304,3 +308,50 @@ int is_valid_bugaddr(unsigned long ip) | ||
18171 | 18158 | ||
18172 | return ud2 == 0x0b0f; | 18159 | return ud2 == 0x0b0f; |
18173 | } | 18160 | } |
@@ -18234,7 +18221,7 @@ index d32abea..74daf4f 100644 | |||
18234 | 18221 | ||
18235 | static int userdef __initdata; | 18222 | static int userdef __initdata; |
18236 | diff --git a/arch/x86/kernel/early_printk.c b/arch/x86/kernel/early_printk.c | 18223 | diff --git a/arch/x86/kernel/early_printk.c b/arch/x86/kernel/early_printk.c |
18237 | index 9b9f18b..9fcaa04 100644 | 18224 | index d15f575..d692043 100644 |
18238 | --- a/arch/x86/kernel/early_printk.c | 18225 | --- a/arch/x86/kernel/early_printk.c |
18239 | +++ b/arch/x86/kernel/early_printk.c | 18226 | +++ b/arch/x86/kernel/early_printk.c |
18240 | @@ -7,6 +7,7 @@ | 18227 | @@ -7,6 +7,7 @@ |
@@ -19006,7 +18993,7 @@ index 8f3e2de..caecc4e 100644 | |||
19006 | 18993 | ||
19007 | /* | 18994 | /* |
19008 | diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S | 18995 | diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S |
19009 | index c1d01e6..a88cf02 100644 | 18996 | index 7272089..6204f9c5 100644 |
19010 | --- a/arch/x86/kernel/entry_64.S | 18997 | --- a/arch/x86/kernel/entry_64.S |
19011 | +++ b/arch/x86/kernel/entry_64.S | 18998 | +++ b/arch/x86/kernel/entry_64.S |
19012 | @@ -59,6 +59,8 @@ | 18999 | @@ -59,6 +59,8 @@ |
@@ -19742,7 +19729,7 @@ index c1d01e6..a88cf02 100644 | |||
19742 | .endm | 19729 | .endm |
19743 | 19730 | ||
19744 | #ifdef CONFIG_SMP | 19731 | #ifdef CONFIG_SMP |
19745 | @@ -1203,12 +1554,22 @@ ENTRY(\sym) | 19732 | @@ -1208,12 +1559,22 @@ ENTRY(\sym) |
19746 | CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15 | 19733 | CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15 |
19747 | call error_entry | 19734 | call error_entry |
19748 | DEFAULT_FRAME 0 | 19735 | DEFAULT_FRAME 0 |
@@ -19766,7 +19753,7 @@ index c1d01e6..a88cf02 100644 | |||
19766 | .endm | 19753 | .endm |
19767 | 19754 | ||
19768 | .macro paranoidzeroentry sym do_sym | 19755 | .macro paranoidzeroentry sym do_sym |
19769 | @@ -1221,15 +1582,25 @@ ENTRY(\sym) | 19756 | @@ -1226,15 +1587,25 @@ ENTRY(\sym) |
19770 | CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15 | 19757 | CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15 |
19771 | call save_paranoid | 19758 | call save_paranoid |
19772 | TRACE_IRQS_OFF | 19759 | TRACE_IRQS_OFF |
@@ -19794,7 +19781,7 @@ index c1d01e6..a88cf02 100644 | |||
19794 | .macro paranoidzeroentry_ist sym do_sym ist | 19781 | .macro paranoidzeroentry_ist sym do_sym ist |
19795 | ENTRY(\sym) | 19782 | ENTRY(\sym) |
19796 | INTR_FRAME | 19783 | INTR_FRAME |
19797 | @@ -1240,14 +1611,30 @@ ENTRY(\sym) | 19784 | @@ -1245,14 +1616,30 @@ ENTRY(\sym) |
19798 | CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15 | 19785 | CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15 |
19799 | call save_paranoid | 19786 | call save_paranoid |
19800 | TRACE_IRQS_OFF_DEBUG | 19787 | TRACE_IRQS_OFF_DEBUG |
@@ -19826,7 +19813,7 @@ index c1d01e6..a88cf02 100644 | |||
19826 | .endm | 19813 | .endm |
19827 | 19814 | ||
19828 | .macro errorentry sym do_sym | 19815 | .macro errorentry sym do_sym |
19829 | @@ -1259,13 +1646,23 @@ ENTRY(\sym) | 19816 | @@ -1264,13 +1651,23 @@ ENTRY(\sym) |
19830 | CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15 | 19817 | CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15 |
19831 | call error_entry | 19818 | call error_entry |
19832 | DEFAULT_FRAME 0 | 19819 | DEFAULT_FRAME 0 |
@@ -19851,7 +19838,7 @@ index c1d01e6..a88cf02 100644 | |||
19851 | .endm | 19838 | .endm |
19852 | 19839 | ||
19853 | /* error code is on the stack already */ | 19840 | /* error code is on the stack already */ |
19854 | @@ -1279,13 +1676,23 @@ ENTRY(\sym) | 19841 | @@ -1284,13 +1681,23 @@ ENTRY(\sym) |
19855 | call save_paranoid | 19842 | call save_paranoid |
19856 | DEFAULT_FRAME 0 | 19843 | DEFAULT_FRAME 0 |
19857 | TRACE_IRQS_OFF | 19844 | TRACE_IRQS_OFF |
@@ -19876,7 +19863,7 @@ index c1d01e6..a88cf02 100644 | |||
19876 | .endm | 19863 | .endm |
19877 | 19864 | ||
19878 | zeroentry divide_error do_divide_error | 19865 | zeroentry divide_error do_divide_error |
19879 | @@ -1315,9 +1722,10 @@ gs_change: | 19866 | @@ -1320,9 +1727,10 @@ gs_change: |
19880 | 2: mfence /* workaround */ | 19867 | 2: mfence /* workaround */ |
19881 | SWAPGS | 19868 | SWAPGS |
19882 | popfq_cfi | 19869 | popfq_cfi |
@@ -19888,7 +19875,7 @@ index c1d01e6..a88cf02 100644 | |||
19888 | 19875 | ||
19889 | _ASM_EXTABLE(gs_change,bad_gs) | 19876 | _ASM_EXTABLE(gs_change,bad_gs) |
19890 | .section .fixup,"ax" | 19877 | .section .fixup,"ax" |
19891 | @@ -1345,9 +1753,10 @@ ENTRY(call_softirq) | 19878 | @@ -1350,9 +1758,10 @@ ENTRY(call_softirq) |
19892 | CFI_DEF_CFA_REGISTER rsp | 19879 | CFI_DEF_CFA_REGISTER rsp |
19893 | CFI_ADJUST_CFA_OFFSET -8 | 19880 | CFI_ADJUST_CFA_OFFSET -8 |
19894 | decl PER_CPU_VAR(irq_count) | 19881 | decl PER_CPU_VAR(irq_count) |
@@ -19900,7 +19887,7 @@ index c1d01e6..a88cf02 100644 | |||
19900 | 19887 | ||
19901 | #ifdef CONFIG_XEN | 19888 | #ifdef CONFIG_XEN |
19902 | zeroentry xen_hypervisor_callback xen_do_hypervisor_callback | 19889 | zeroentry xen_hypervisor_callback xen_do_hypervisor_callback |
19903 | @@ -1385,7 +1794,7 @@ ENTRY(xen_do_hypervisor_callback) # do_hypervisor_callback(struct *pt_regs) | 19890 | @@ -1390,7 +1799,7 @@ ENTRY(xen_do_hypervisor_callback) # do_hypervisor_callback(struct *pt_regs) |
19904 | decl PER_CPU_VAR(irq_count) | 19891 | decl PER_CPU_VAR(irq_count) |
19905 | jmp error_exit | 19892 | jmp error_exit |
19906 | CFI_ENDPROC | 19893 | CFI_ENDPROC |
@@ -19909,7 +19896,7 @@ index c1d01e6..a88cf02 100644 | |||
19909 | 19896 | ||
19910 | /* | 19897 | /* |
19911 | * Hypervisor uses this for application faults while it executes. | 19898 | * Hypervisor uses this for application faults while it executes. |
19912 | @@ -1444,7 +1853,7 @@ ENTRY(xen_failsafe_callback) | 19899 | @@ -1449,7 +1858,7 @@ ENTRY(xen_failsafe_callback) |
19913 | SAVE_ALL | 19900 | SAVE_ALL |
19914 | jmp error_exit | 19901 | jmp error_exit |
19915 | CFI_ENDPROC | 19902 | CFI_ENDPROC |
@@ -19918,7 +19905,7 @@ index c1d01e6..a88cf02 100644 | |||
19918 | 19905 | ||
19919 | apicinterrupt HYPERVISOR_CALLBACK_VECTOR \ | 19906 | apicinterrupt HYPERVISOR_CALLBACK_VECTOR \ |
19920 | xen_hvm_callback_vector xen_evtchn_do_upcall | 19907 | xen_hvm_callback_vector xen_evtchn_do_upcall |
19921 | @@ -1496,18 +1905,33 @@ ENTRY(paranoid_exit) | 19908 | @@ -1501,18 +1910,33 @@ ENTRY(paranoid_exit) |
19922 | DEFAULT_FRAME | 19909 | DEFAULT_FRAME |
19923 | DISABLE_INTERRUPTS(CLBR_NONE) | 19910 | DISABLE_INTERRUPTS(CLBR_NONE) |
19924 | TRACE_IRQS_OFF_DEBUG | 19911 | TRACE_IRQS_OFF_DEBUG |
@@ -19954,7 +19941,7 @@ index c1d01e6..a88cf02 100644 | |||
19954 | jmp irq_return | 19941 | jmp irq_return |
19955 | paranoid_userspace: | 19942 | paranoid_userspace: |
19956 | GET_THREAD_INFO(%rcx) | 19943 | GET_THREAD_INFO(%rcx) |
19957 | @@ -1536,7 +1960,7 @@ paranoid_schedule: | 19944 | @@ -1541,7 +1965,7 @@ paranoid_schedule: |
19958 | TRACE_IRQS_OFF | 19945 | TRACE_IRQS_OFF |
19959 | jmp paranoid_userspace | 19946 | jmp paranoid_userspace |
19960 | CFI_ENDPROC | 19947 | CFI_ENDPROC |
@@ -19963,7 +19950,7 @@ index c1d01e6..a88cf02 100644 | |||
19963 | 19950 | ||
19964 | /* | 19951 | /* |
19965 | * Exception entry point. This expects an error code/orig_rax on the stack. | 19952 | * Exception entry point. This expects an error code/orig_rax on the stack. |
19966 | @@ -1563,12 +1987,13 @@ ENTRY(error_entry) | 19953 | @@ -1568,12 +1992,13 @@ ENTRY(error_entry) |
19967 | movq_cfi r14, R14+8 | 19954 | movq_cfi r14, R14+8 |
19968 | movq_cfi r15, R15+8 | 19955 | movq_cfi r15, R15+8 |
19969 | xorl %ebx,%ebx | 19956 | xorl %ebx,%ebx |
@@ -19978,7 +19965,7 @@ index c1d01e6..a88cf02 100644 | |||
19978 | ret | 19965 | ret |
19979 | 19966 | ||
19980 | /* | 19967 | /* |
19981 | @@ -1595,7 +2020,7 @@ bstep_iret: | 19968 | @@ -1600,7 +2025,7 @@ bstep_iret: |
19982 | movq %rcx,RIP+8(%rsp) | 19969 | movq %rcx,RIP+8(%rsp) |
19983 | jmp error_swapgs | 19970 | jmp error_swapgs |
19984 | CFI_ENDPROC | 19971 | CFI_ENDPROC |
@@ -19987,7 +19974,7 @@ index c1d01e6..a88cf02 100644 | |||
19987 | 19974 | ||
19988 | 19975 | ||
19989 | /* ebx: no swapgs flag (1: don't need swapgs, 0: need it) */ | 19976 | /* ebx: no swapgs flag (1: don't need swapgs, 0: need it) */ |
19990 | @@ -1606,7 +2031,7 @@ ENTRY(error_exit) | 19977 | @@ -1611,7 +2036,7 @@ ENTRY(error_exit) |
19991 | DISABLE_INTERRUPTS(CLBR_NONE) | 19978 | DISABLE_INTERRUPTS(CLBR_NONE) |
19992 | TRACE_IRQS_OFF | 19979 | TRACE_IRQS_OFF |
19993 | GET_THREAD_INFO(%rcx) | 19980 | GET_THREAD_INFO(%rcx) |
@@ -19996,7 +19983,7 @@ index c1d01e6..a88cf02 100644 | |||
19996 | jne retint_kernel | 19983 | jne retint_kernel |
19997 | LOCKDEP_SYS_EXIT_IRQ | 19984 | LOCKDEP_SYS_EXIT_IRQ |
19998 | movl TI_flags(%rcx),%edx | 19985 | movl TI_flags(%rcx),%edx |
19999 | @@ -1615,7 +2040,7 @@ ENTRY(error_exit) | 19986 | @@ -1620,7 +2045,7 @@ ENTRY(error_exit) |
20000 | jnz retint_careful | 19987 | jnz retint_careful |
20001 | jmp retint_swapgs | 19988 | jmp retint_swapgs |
20002 | CFI_ENDPROC | 19989 | CFI_ENDPROC |
@@ -20005,7 +19992,7 @@ index c1d01e6..a88cf02 100644 | |||
20005 | 19992 | ||
20006 | /* | 19993 | /* |
20007 | * Test if a given stack is an NMI stack or not. | 19994 | * Test if a given stack is an NMI stack or not. |
20008 | @@ -1673,9 +2098,11 @@ ENTRY(nmi) | 19995 | @@ -1678,9 +2103,11 @@ ENTRY(nmi) |
20009 | * If %cs was not the kernel segment, then the NMI triggered in user | 19996 | * If %cs was not the kernel segment, then the NMI triggered in user |
20010 | * space, which means it is definitely not nested. | 19997 | * space, which means it is definitely not nested. |
20011 | */ | 19998 | */ |
@@ -20018,7 +20005,7 @@ index c1d01e6..a88cf02 100644 | |||
20018 | /* | 20005 | /* |
20019 | * Check the special variable on the stack to see if NMIs are | 20006 | * Check the special variable on the stack to see if NMIs are |
20020 | * executing. | 20007 | * executing. |
20021 | @@ -1709,8 +2136,7 @@ nested_nmi: | 20008 | @@ -1714,8 +2141,7 @@ nested_nmi: |
20022 | 20009 | ||
20023 | 1: | 20010 | 1: |
20024 | /* Set up the interrupted NMIs stack to jump to repeat_nmi */ | 20011 | /* Set up the interrupted NMIs stack to jump to repeat_nmi */ |
@@ -20028,7 +20015,7 @@ index c1d01e6..a88cf02 100644 | |||
20028 | CFI_ADJUST_CFA_OFFSET 1*8 | 20015 | CFI_ADJUST_CFA_OFFSET 1*8 |
20029 | leaq -10*8(%rsp), %rdx | 20016 | leaq -10*8(%rsp), %rdx |
20030 | pushq_cfi $__KERNEL_DS | 20017 | pushq_cfi $__KERNEL_DS |
20031 | @@ -1728,6 +2154,7 @@ nested_nmi_out: | 20018 | @@ -1733,6 +2159,7 @@ nested_nmi_out: |
20032 | CFI_RESTORE rdx | 20019 | CFI_RESTORE rdx |
20033 | 20020 | ||
20034 | /* No need to check faults here */ | 20021 | /* No need to check faults here */ |
@@ -20036,7 +20023,7 @@ index c1d01e6..a88cf02 100644 | |||
20036 | INTERRUPT_RETURN | 20023 | INTERRUPT_RETURN |
20037 | 20024 | ||
20038 | CFI_RESTORE_STATE | 20025 | CFI_RESTORE_STATE |
20039 | @@ -1844,6 +2271,8 @@ end_repeat_nmi: | 20026 | @@ -1849,6 +2276,8 @@ end_repeat_nmi: |
20040 | */ | 20027 | */ |
20041 | movq %cr2, %r12 | 20028 | movq %cr2, %r12 |
20042 | 20029 | ||
@@ -20045,7 +20032,7 @@ index c1d01e6..a88cf02 100644 | |||
20045 | /* paranoidentry do_nmi, 0; without TRACE_IRQS_OFF */ | 20032 | /* paranoidentry do_nmi, 0; without TRACE_IRQS_OFF */ |
20046 | movq %rsp,%rdi | 20033 | movq %rsp,%rdi |
20047 | movq $-1,%rsi | 20034 | movq $-1,%rsi |
20048 | @@ -1856,26 +2285,31 @@ end_repeat_nmi: | 20035 | @@ -1861,26 +2290,31 @@ end_repeat_nmi: |
20049 | movq %r12, %cr2 | 20036 | movq %r12, %cr2 |
20050 | 1: | 20037 | 1: |
20051 | 20038 | ||
@@ -20148,7 +20135,7 @@ index 42a392a..fbbd930 100644 | |||
20148 | return -EFAULT; | 20135 | return -EFAULT; |
20149 | 20136 | ||
20150 | diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c | 20137 | diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c |
20151 | index 8f3201d..6898c0c 100644 | 20138 | index 55b6761..a6456fc 100644 |
20152 | --- a/arch/x86/kernel/head64.c | 20139 | --- a/arch/x86/kernel/head64.c |
20153 | +++ b/arch/x86/kernel/head64.c | 20140 | +++ b/arch/x86/kernel/head64.c |
20154 | @@ -67,12 +67,12 @@ again: | 20141 | @@ -67,12 +67,12 @@ again: |
@@ -20633,7 +20620,7 @@ index 73afd11..d1670f5 100644 | |||
20633 | + .fill PAGE_SIZE_asm - GDT_SIZE,1,0 | 20620 | + .fill PAGE_SIZE_asm - GDT_SIZE,1,0 |
20634 | + .endr | 20621 | + .endr |
20635 | diff --git a/arch/x86/kernel/head_64.S b/arch/x86/kernel/head_64.S | 20622 | diff --git a/arch/x86/kernel/head_64.S b/arch/x86/kernel/head_64.S |
20636 | index 321d65e..ad8817d 100644 | 20623 | index 321d65e..863089b 100644 |
20637 | --- a/arch/x86/kernel/head_64.S | 20624 | --- a/arch/x86/kernel/head_64.S |
20638 | +++ b/arch/x86/kernel/head_64.S | 20625 | +++ b/arch/x86/kernel/head_64.S |
20639 | @@ -20,6 +20,8 @@ | 20626 | @@ -20,6 +20,8 @@ |
@@ -20674,10 +20661,10 @@ index 321d65e..ad8817d 100644 | |||
20674 | +#ifndef CONFIG_XEN | 20661 | +#ifndef CONFIG_XEN |
20675 | + addq %rbp, level3_ident_pgt + (1*8)(%rip) | 20662 | + addq %rbp, level3_ident_pgt + (1*8)(%rip) |
20676 | +#endif | 20663 | +#endif |
20677 | + | ||
20678 | + addq %rbp, level3_vmemmap_pgt + (L3_VMEMMAP_START*8)(%rip) | ||
20679 | 20664 | ||
20680 | - addq %rbp, level2_fixmap_pgt + (506*8)(%rip) | 20665 | - addq %rbp, level2_fixmap_pgt + (506*8)(%rip) |
20666 | + addq %rbp, level3_vmemmap_pgt + (L3_VMEMMAP_START*8)(%rip) | ||
20667 | + | ||
20681 | + addq %rbp, level3_kernel_pgt + (L3_START_KERNEL*8)(%rip) | 20668 | + addq %rbp, level3_kernel_pgt + (L3_START_KERNEL*8)(%rip) |
20682 | + addq %rbp, level3_kernel_pgt + ((L3_START_KERNEL+1)*8)(%rip) | 20669 | + addq %rbp, level3_kernel_pgt + ((L3_START_KERNEL+1)*8)(%rip) |
20683 | + | 20670 | + |
@@ -20749,10 +20736,10 @@ index 321d65e..ad8817d 100644 | |||
20749 | + .section .rodata,"a",@progbits | 20736 | + .section .rodata,"a",@progbits |
20750 | 20737 | ||
20751 | -#ifndef CONFIG_XEN | 20738 | -#ifndef CONFIG_XEN |
20752 | -NEXT_PAGE(init_level4_pgt) | 20739 | NEXT_PAGE(init_level4_pgt) |
20753 | - .fill 512,8,0 | 20740 | - .fill 512,8,0 |
20754 | -#else | 20741 | -#else |
20755 | NEXT_PAGE(init_level4_pgt) | 20742 | -NEXT_PAGE(init_level4_pgt) |
20756 | - .quad level3_ident_pgt - __START_KERNEL_map + _KERNPG_TABLE | 20743 | - .quad level3_ident_pgt - __START_KERNEL_map + _KERNPG_TABLE |
20757 | .org init_level4_pgt + L4_PAGE_OFFSET*8, 0 | 20744 | .org init_level4_pgt + L4_PAGE_OFFSET*8, 0 |
20758 | .quad level3_ident_pgt - __START_KERNEL_map + _KERNPG_TABLE | 20745 | .quad level3_ident_pgt - __START_KERNEL_map + _KERNPG_TABLE |
@@ -20875,21 +20862,26 @@ index 321d65e..ad8817d 100644 | |||
20875 | #include "../../x86/xen/xen-head.S" | 20862 | #include "../../x86/xen/xen-head.S" |
20876 | - | 20863 | - |
20877 | - .section .bss, "aw", @nobits | 20864 | - .section .bss, "aw", @nobits |
20878 | + | 20865 | - .align L1_CACHE_BYTES |
20879 | + .section .rodata,"a",@progbits | 20866 | -ENTRY(idt_table) |
20880 | .align L1_CACHE_BYTES | ||
20881 | ENTRY(idt_table) | ||
20882 | - .skip IDT_ENTRIES * 16 | 20867 | - .skip IDT_ENTRIES * 16 |
20883 | + .fill 512,8,0 | ||
20884 | 20868 | ||
20885 | .align L1_CACHE_BYTES | 20869 | - .align L1_CACHE_BYTES |
20886 | ENTRY(nmi_idt_table) | 20870 | -ENTRY(nmi_idt_table) |
20887 | - .skip IDT_ENTRIES * 16 | 20871 | - .skip IDT_ENTRIES * 16 |
20888 | + .fill 512,8,0 | 20872 | - |
20889 | |||
20890 | - __PAGE_ALIGNED_BSS | 20873 | - __PAGE_ALIGNED_BSS |
20874 | + .section .rodata,"a",@progbits | ||
20891 | NEXT_PAGE(empty_zero_page) | 20875 | NEXT_PAGE(empty_zero_page) |
20892 | .skip PAGE_SIZE | 20876 | .skip PAGE_SIZE |
20877 | + | ||
20878 | + .align L1_CACHE_BYTES | ||
20879 | +ENTRY(idt_table) | ||
20880 | + .fill 512,8,0 | ||
20881 | + | ||
20882 | + .align L1_CACHE_BYTES | ||
20883 | +ENTRY(nmi_idt_table) | ||
20884 | + .fill 512,8,0 | ||
20893 | diff --git a/arch/x86/kernel/i386_ksyms_32.c b/arch/x86/kernel/i386_ksyms_32.c | 20885 | diff --git a/arch/x86/kernel/i386_ksyms_32.c b/arch/x86/kernel/i386_ksyms_32.c |
20894 | index 0fa6912..37fce70 100644 | 20886 | index 0fa6912..37fce70 100644 |
20895 | --- a/arch/x86/kernel/i386_ksyms_32.c | 20887 | --- a/arch/x86/kernel/i386_ksyms_32.c |
@@ -21030,7 +21022,7 @@ index 4ddaf66..6292f4e 100644 | |||
21030 | return -EPERM; | 21022 | return -EPERM; |
21031 | } | 21023 | } |
21032 | diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c | 21024 | diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c |
21033 | index 84b7789..e65e8be 100644 | 21025 | index ac0631d..ff7cb62 100644 |
21034 | --- a/arch/x86/kernel/irq.c | 21026 | --- a/arch/x86/kernel/irq.c |
21035 | +++ b/arch/x86/kernel/irq.c | 21027 | +++ b/arch/x86/kernel/irq.c |
21036 | @@ -18,7 +18,7 @@ | 21028 | @@ -18,7 +18,7 @@ |
@@ -21333,7 +21325,7 @@ index 836f832..a8bda67 100644 | |||
21333 | } | 21325 | } |
21334 | 21326 | ||
21335 | diff --git a/arch/x86/kernel/kprobes/core.c b/arch/x86/kernel/kprobes/core.c | 21327 | diff --git a/arch/x86/kernel/kprobes/core.c b/arch/x86/kernel/kprobes/core.c |
21336 | index 7bfe318..383d238 100644 | 21328 | index 211bce4..6e2580a 100644 |
21337 | --- a/arch/x86/kernel/kprobes/core.c | 21329 | --- a/arch/x86/kernel/kprobes/core.c |
21338 | +++ b/arch/x86/kernel/kprobes/core.c | 21330 | +++ b/arch/x86/kernel/kprobes/core.c |
21339 | @@ -119,9 +119,12 @@ static void __kprobes __synthesize_relative_insn(void *from, void *to, u8 op) | 21331 | @@ -119,9 +119,12 @@ static void __kprobes __synthesize_relative_insn(void *from, void *to, u8 op) |
@@ -21381,9 +21373,9 @@ index 7bfe318..383d238 100644 | |||
21381 | 21373 | ||
21382 | #ifdef CONFIG_X86_64 | 21374 | #ifdef CONFIG_X86_64 |
21383 | if (insn_rip_relative(&insn)) { | 21375 | if (insn_rip_relative(&insn)) { |
21384 | @@ -355,7 +360,9 @@ int __kprobes __copy_instruction(u8 *dest, u8 *src) | 21376 | @@ -359,7 +364,9 @@ int __kprobes __copy_instruction(u8 *dest, u8 *src) |
21385 | newdisp = (u8 *) src + (s64) insn.displacement.value - (u8 *) dest; | 21377 | return 0; |
21386 | BUG_ON((s64) (s32) newdisp != newdisp); /* Sanity check. */ | 21378 | } |
21387 | disp = (u8 *) dest + insn_offset_displacement(&insn); | 21379 | disp = (u8 *) dest + insn_offset_displacement(&insn); |
21388 | + pax_open_kernel(); | 21380 | + pax_open_kernel(); |
21389 | *(s32 *) disp = (s32) newdisp; | 21381 | *(s32 *) disp = (s32) newdisp; |
@@ -21391,7 +21383,7 @@ index 7bfe318..383d238 100644 | |||
21391 | } | 21383 | } |
21392 | #endif | 21384 | #endif |
21393 | return insn.length; | 21385 | return insn.length; |
21394 | @@ -488,7 +495,7 @@ setup_singlestep(struct kprobe *p, struct pt_regs *regs, struct kprobe_ctlblk *k | 21386 | @@ -498,7 +505,7 @@ setup_singlestep(struct kprobe *p, struct pt_regs *regs, struct kprobe_ctlblk *k |
21395 | * nor set current_kprobe, because it doesn't use single | 21387 | * nor set current_kprobe, because it doesn't use single |
21396 | * stepping. | 21388 | * stepping. |
21397 | */ | 21389 | */ |
@@ -21400,7 +21392,7 @@ index 7bfe318..383d238 100644 | |||
21400 | preempt_enable_no_resched(); | 21392 | preempt_enable_no_resched(); |
21401 | return; | 21393 | return; |
21402 | } | 21394 | } |
21403 | @@ -505,9 +512,9 @@ setup_singlestep(struct kprobe *p, struct pt_regs *regs, struct kprobe_ctlblk *k | 21395 | @@ -515,9 +522,9 @@ setup_singlestep(struct kprobe *p, struct pt_regs *regs, struct kprobe_ctlblk *k |
21404 | regs->flags &= ~X86_EFLAGS_IF; | 21396 | regs->flags &= ~X86_EFLAGS_IF; |
21405 | /* single step inline if the instruction is an int3 */ | 21397 | /* single step inline if the instruction is an int3 */ |
21406 | if (p->opcode == BREAKPOINT_INSTRUCTION) | 21398 | if (p->opcode == BREAKPOINT_INSTRUCTION) |
@@ -21412,7 +21404,7 @@ index 7bfe318..383d238 100644 | |||
21412 | } | 21404 | } |
21413 | 21405 | ||
21414 | /* | 21406 | /* |
21415 | @@ -586,7 +593,7 @@ static int __kprobes kprobe_handler(struct pt_regs *regs) | 21407 | @@ -596,7 +603,7 @@ static int __kprobes kprobe_handler(struct pt_regs *regs) |
21416 | setup_singlestep(p, regs, kcb, 0); | 21408 | setup_singlestep(p, regs, kcb, 0); |
21417 | return 1; | 21409 | return 1; |
21418 | } | 21410 | } |
@@ -21421,7 +21413,7 @@ index 7bfe318..383d238 100644 | |||
21421 | /* | 21413 | /* |
21422 | * The breakpoint instruction was removed right | 21414 | * The breakpoint instruction was removed right |
21423 | * after we hit it. Another cpu has removed | 21415 | * after we hit it. Another cpu has removed |
21424 | @@ -632,6 +639,9 @@ static void __used __kprobes kretprobe_trampoline_holder(void) | 21416 | @@ -642,6 +649,9 @@ static void __used __kprobes kretprobe_trampoline_holder(void) |
21425 | " movq %rax, 152(%rsp)\n" | 21417 | " movq %rax, 152(%rsp)\n" |
21426 | RESTORE_REGS_STRING | 21418 | RESTORE_REGS_STRING |
21427 | " popfq\n" | 21419 | " popfq\n" |
@@ -21431,7 +21423,7 @@ index 7bfe318..383d238 100644 | |||
21431 | #else | 21423 | #else |
21432 | " pushf\n" | 21424 | " pushf\n" |
21433 | SAVE_REGS_STRING | 21425 | SAVE_REGS_STRING |
21434 | @@ -769,7 +779,7 @@ static void __kprobes | 21426 | @@ -779,7 +789,7 @@ static void __kprobes |
21435 | resume_execution(struct kprobe *p, struct pt_regs *regs, struct kprobe_ctlblk *kcb) | 21427 | resume_execution(struct kprobe *p, struct pt_regs *regs, struct kprobe_ctlblk *kcb) |
21436 | { | 21428 | { |
21437 | unsigned long *tos = stack_addr(regs); | 21429 | unsigned long *tos = stack_addr(regs); |
@@ -21440,7 +21432,7 @@ index 7bfe318..383d238 100644 | |||
21440 | unsigned long orig_ip = (unsigned long)p->addr; | 21432 | unsigned long orig_ip = (unsigned long)p->addr; |
21441 | kprobe_opcode_t *insn = p->ainsn.insn; | 21433 | kprobe_opcode_t *insn = p->ainsn.insn; |
21442 | 21434 | ||
21443 | @@ -951,7 +961,7 @@ kprobe_exceptions_notify(struct notifier_block *self, unsigned long val, void *d | 21435 | @@ -961,7 +971,7 @@ kprobe_exceptions_notify(struct notifier_block *self, unsigned long val, void *d |
21444 | struct die_args *args = data; | 21436 | struct die_args *args = data; |
21445 | int ret = NOTIFY_DONE; | 21437 | int ret = NOTIFY_DONE; |
21446 | 21438 | ||
@@ -21519,10 +21511,10 @@ index 76dc6f0..66bdfc3 100644 | |||
21519 | reset_current_kprobe(); | 21511 | reset_current_kprobe(); |
21520 | preempt_enable_no_resched(); | 21512 | preempt_enable_no_resched(); |
21521 | diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c | 21513 | diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c |
21522 | index b686a90..60d36fb 100644 | 21514 | index cd6d9a5..16245a4 100644 |
21523 | --- a/arch/x86/kernel/kvm.c | 21515 | --- a/arch/x86/kernel/kvm.c |
21524 | +++ b/arch/x86/kernel/kvm.c | 21516 | +++ b/arch/x86/kernel/kvm.c |
21525 | @@ -453,7 +453,7 @@ static int __cpuinit kvm_cpu_notify(struct notifier_block *self, | 21517 | @@ -455,7 +455,7 @@ static int __cpuinit kvm_cpu_notify(struct notifier_block *self, |
21526 | return NOTIFY_OK; | 21518 | return NOTIFY_OK; |
21527 | } | 21519 | } |
21528 | 21520 | ||
@@ -21901,7 +21893,7 @@ index 676b8c7..870ba04 100644 | |||
21901 | .spin_is_locked = __ticket_spin_is_locked, | 21893 | .spin_is_locked = __ticket_spin_is_locked, |
21902 | .spin_is_contended = __ticket_spin_is_contended, | 21894 | .spin_is_contended = __ticket_spin_is_contended, |
21903 | diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c | 21895 | diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c |
21904 | index 8bfb335..c1463c6 100644 | 21896 | index cd6de64..27c6af0 100644 |
21905 | --- a/arch/x86/kernel/paravirt.c | 21897 | --- a/arch/x86/kernel/paravirt.c |
21906 | +++ b/arch/x86/kernel/paravirt.c | 21898 | +++ b/arch/x86/kernel/paravirt.c |
21907 | @@ -55,6 +55,9 @@ u64 _paravirt_ident_64(u64 x) | 21899 | @@ -55,6 +55,9 @@ u64 _paravirt_ident_64(u64 x) |
@@ -21929,10 +21921,10 @@ index 8bfb335..c1463c6 100644 | |||
21929 | ret = paravirt_patch_ident_32(insnbuf, len); | 21921 | ret = paravirt_patch_ident_32(insnbuf, len); |
21930 | - else if (opfunc == _paravirt_ident_64) | 21922 | - else if (opfunc == _paravirt_ident_64) |
21931 | + else if (opfunc == (void *)_paravirt_ident_64) | 21923 | + else if (opfunc == (void *)_paravirt_ident_64) |
21932 | + ret = paravirt_patch_ident_64(insnbuf, len); | 21924 | ret = paravirt_patch_ident_64(insnbuf, len); |
21933 | +#if defined(CONFIG_X86_32) && defined(CONFIG_X86_PAE) | 21925 | +#if defined(CONFIG_X86_32) && defined(CONFIG_X86_PAE) |
21934 | + else if (opfunc == (void *)__raw_callee_save__paravirt_ident_64) | 21926 | + else if (opfunc == (void *)__raw_callee_save__paravirt_ident_64) |
21935 | ret = paravirt_patch_ident_64(insnbuf, len); | 21927 | + ret = paravirt_patch_ident_64(insnbuf, len); |
21936 | +#endif | 21928 | +#endif |
21937 | 21929 | ||
21938 | else if (type == PARAVIRT_PATCH(pv_cpu_ops.iret) || | 21930 | else if (type == PARAVIRT_PATCH(pv_cpu_ops.iret) || |
@@ -21984,7 +21976,7 @@ index 8bfb335..c1463c6 100644 | |||
21984 | .cpuid = native_cpuid, | 21976 | .cpuid = native_cpuid, |
21985 | .get_debugreg = native_get_debugreg, | 21977 | .get_debugreg = native_get_debugreg, |
21986 | .set_debugreg = native_set_debugreg, | 21978 | .set_debugreg = native_set_debugreg, |
21987 | @@ -395,21 +402,26 @@ struct pv_cpu_ops pv_cpu_ops = { | 21979 | @@ -394,21 +401,26 @@ struct pv_cpu_ops pv_cpu_ops = { |
21988 | .end_context_switch = paravirt_nop, | 21980 | .end_context_switch = paravirt_nop, |
21989 | }; | 21981 | }; |
21990 | 21982 | ||
@@ -22014,7 +22006,7 @@ index 8bfb335..c1463c6 100644 | |||
22014 | 22006 | ||
22015 | .read_cr2 = native_read_cr2, | 22007 | .read_cr2 = native_read_cr2, |
22016 | .write_cr2 = native_write_cr2, | 22008 | .write_cr2 = native_write_cr2, |
22017 | @@ -459,6 +471,7 @@ struct pv_mmu_ops pv_mmu_ops = { | 22009 | @@ -458,6 +470,7 @@ struct pv_mmu_ops pv_mmu_ops = { |
22018 | .make_pud = PTE_IDENT, | 22010 | .make_pud = PTE_IDENT, |
22019 | 22011 | ||
22020 | .set_pgd = native_set_pgd, | 22012 | .set_pgd = native_set_pgd, |
@@ -22022,7 +22014,7 @@ index 8bfb335..c1463c6 100644 | |||
22022 | #endif | 22014 | #endif |
22023 | #endif /* PAGETABLE_LEVELS >= 3 */ | 22015 | #endif /* PAGETABLE_LEVELS >= 3 */ |
22024 | 22016 | ||
22025 | @@ -479,6 +492,12 @@ struct pv_mmu_ops pv_mmu_ops = { | 22017 | @@ -478,6 +491,12 @@ struct pv_mmu_ops pv_mmu_ops = { |
22026 | }, | 22018 | }, |
22027 | 22019 | ||
22028 | .set_fixmap = native_set_fixmap, | 22020 | .set_fixmap = native_set_fixmap, |
@@ -22075,7 +22067,7 @@ index 6c483ba..d10ce2f 100644 | |||
22075 | 22067 | ||
22076 | static struct dma_map_ops swiotlb_dma_ops = { | 22068 | static struct dma_map_ops swiotlb_dma_ops = { |
22077 | diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c | 22069 | diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c |
22078 | index 14ae100..752a4f6 100644 | 22070 | index 81a5f5e..20f8b58 100644 |
22079 | --- a/arch/x86/kernel/process.c | 22071 | --- a/arch/x86/kernel/process.c |
22080 | +++ b/arch/x86/kernel/process.c | 22072 | +++ b/arch/x86/kernel/process.c |
22081 | @@ -36,7 +36,8 @@ | 22073 | @@ -36,7 +36,8 @@ |
@@ -22106,16 +22098,7 @@ index 14ae100..752a4f6 100644 | |||
22106 | 22098 | ||
22107 | t->io_bitmap_ptr = NULL; | 22099 | t->io_bitmap_ptr = NULL; |
22108 | clear_thread_flag(TIF_IO_BITMAP); | 22100 | clear_thread_flag(TIF_IO_BITMAP); |
22109 | @@ -136,7 +137,7 @@ void show_regs_common(void) | 22101 | @@ -125,6 +126,9 @@ void flush_thread(void) |
22110 | board = dmi_get_system_info(DMI_BOARD_NAME); | ||
22111 | |||
22112 | printk(KERN_DEFAULT "Pid: %d, comm: %.20s %s %s %.*s %s %s%s%s\n", | ||
22113 | - current->pid, current->comm, print_tainted(), | ||
22114 | + task_pid_nr(current), current->comm, print_tainted(), | ||
22115 | init_utsname()->release, | ||
22116 | (int)strcspn(init_utsname()->version, " "), | ||
22117 | init_utsname()->version, | ||
22118 | @@ -149,6 +150,9 @@ void flush_thread(void) | ||
22119 | { | 22102 | { |
22120 | struct task_struct *tsk = current; | 22103 | struct task_struct *tsk = current; |
22121 | 22104 | ||
@@ -22125,7 +22108,7 @@ index 14ae100..752a4f6 100644 | |||
22125 | flush_ptrace_hw_breakpoint(tsk); | 22108 | flush_ptrace_hw_breakpoint(tsk); |
22126 | memset(tsk->thread.tls_array, 0, sizeof(tsk->thread.tls_array)); | 22109 | memset(tsk->thread.tls_array, 0, sizeof(tsk->thread.tls_array)); |
22127 | drop_init_fpu(tsk); | 22110 | drop_init_fpu(tsk); |
22128 | @@ -295,7 +299,7 @@ static void __exit_idle(void) | 22111 | @@ -271,7 +275,7 @@ static void __exit_idle(void) |
22129 | void exit_idle(void) | 22112 | void exit_idle(void) |
22130 | { | 22113 | { |
22131 | /* idle loop has pid 0 */ | 22114 | /* idle loop has pid 0 */ |
@@ -22134,7 +22117,7 @@ index 14ae100..752a4f6 100644 | |||
22134 | return; | 22117 | return; |
22135 | __exit_idle(); | 22118 | __exit_idle(); |
22136 | } | 22119 | } |
22137 | @@ -398,7 +402,7 @@ bool xen_set_default_idle(void) | 22120 | @@ -327,7 +331,7 @@ bool xen_set_default_idle(void) |
22138 | return ret; | 22121 | return ret; |
22139 | } | 22122 | } |
22140 | #endif | 22123 | #endif |
@@ -22143,7 +22126,7 @@ index 14ae100..752a4f6 100644 | |||
22143 | { | 22126 | { |
22144 | local_irq_disable(); | 22127 | local_irq_disable(); |
22145 | /* | 22128 | /* |
22146 | @@ -544,16 +548,37 @@ static int __init idle_setup(char *str) | 22129 | @@ -456,16 +460,37 @@ static int __init idle_setup(char *str) |
22147 | } | 22130 | } |
22148 | early_param("idle", idle_setup); | 22131 | early_param("idle", idle_setup); |
22149 | 22132 | ||
@@ -22192,7 +22175,7 @@ index 14ae100..752a4f6 100644 | |||
22192 | +} | 22175 | +} |
22193 | +#endif | 22176 | +#endif |
22194 | diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c | 22177 | diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c |
22195 | index b5a8905..d9cacac 100644 | 22178 | index 7305f7d..22f73d6 100644 |
22196 | --- a/arch/x86/kernel/process_32.c | 22179 | --- a/arch/x86/kernel/process_32.c |
22197 | +++ b/arch/x86/kernel/process_32.c | 22180 | +++ b/arch/x86/kernel/process_32.c |
22198 | @@ -65,6 +65,7 @@ asmlinkage void ret_from_kernel_thread(void) __asm__("ret_from_kernel_thread"); | 22181 | @@ -65,6 +65,7 @@ asmlinkage void ret_from_kernel_thread(void) __asm__("ret_from_kernel_thread"); |
@@ -22203,7 +22186,7 @@ index b5a8905..d9cacac 100644 | |||
22203 | } | 22186 | } |
22204 | 22187 | ||
22205 | void __show_regs(struct pt_regs *regs, int all) | 22188 | void __show_regs(struct pt_regs *regs, int all) |
22206 | @@ -74,21 +75,20 @@ void __show_regs(struct pt_regs *regs, int all) | 22189 | @@ -74,19 +75,18 @@ void __show_regs(struct pt_regs *regs, int all) |
22207 | unsigned long sp; | 22190 | unsigned long sp; |
22208 | unsigned short ss, gs; | 22191 | unsigned short ss, gs; |
22209 | 22192 | ||
@@ -22219,8 +22202,6 @@ index b5a8905..d9cacac 100644 | |||
22219 | } | 22202 | } |
22220 | + gs = get_user_gs(regs); | 22203 | + gs = get_user_gs(regs); |
22221 | 22204 | ||
22222 | show_regs_common(); | ||
22223 | |||
22224 | printk(KERN_DEFAULT "EIP: %04x:[<%08lx>] EFLAGS: %08lx CPU: %d\n", | 22205 | printk(KERN_DEFAULT "EIP: %04x:[<%08lx>] EFLAGS: %08lx CPU: %d\n", |
22225 | (u16)regs->cs, regs->ip, regs->flags, | 22206 | (u16)regs->cs, regs->ip, regs->flags, |
22226 | - smp_processor_id()); | 22207 | - smp_processor_id()); |
@@ -22228,7 +22209,7 @@ index b5a8905..d9cacac 100644 | |||
22228 | print_symbol("EIP is at %s\n", regs->ip); | 22209 | print_symbol("EIP is at %s\n", regs->ip); |
22229 | 22210 | ||
22230 | printk(KERN_DEFAULT "EAX: %08lx EBX: %08lx ECX: %08lx EDX: %08lx\n", | 22211 | printk(KERN_DEFAULT "EAX: %08lx EBX: %08lx ECX: %08lx EDX: %08lx\n", |
22231 | @@ -130,20 +130,21 @@ void release_thread(struct task_struct *dead_task) | 22212 | @@ -128,20 +128,21 @@ void release_thread(struct task_struct *dead_task) |
22232 | int copy_thread(unsigned long clone_flags, unsigned long sp, | 22213 | int copy_thread(unsigned long clone_flags, unsigned long sp, |
22233 | unsigned long arg, struct task_struct *p) | 22214 | unsigned long arg, struct task_struct *p) |
22234 | { | 22215 | { |
@@ -22254,7 +22235,7 @@ index b5a8905..d9cacac 100644 | |||
22254 | childregs->fs = __KERNEL_PERCPU; | 22235 | childregs->fs = __KERNEL_PERCPU; |
22255 | childregs->bx = sp; /* function */ | 22236 | childregs->bx = sp; /* function */ |
22256 | childregs->bp = arg; | 22237 | childregs->bp = arg; |
22257 | @@ -250,7 +251,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) | 22238 | @@ -248,7 +249,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) |
22258 | struct thread_struct *prev = &prev_p->thread, | 22239 | struct thread_struct *prev = &prev_p->thread, |
22259 | *next = &next_p->thread; | 22240 | *next = &next_p->thread; |
22260 | int cpu = smp_processor_id(); | 22241 | int cpu = smp_processor_id(); |
@@ -22263,7 +22244,7 @@ index b5a8905..d9cacac 100644 | |||
22263 | fpu_switch_t fpu; | 22244 | fpu_switch_t fpu; |
22264 | 22245 | ||
22265 | /* never put a printk in __switch_to... printk() calls wake_up*() indirectly */ | 22246 | /* never put a printk in __switch_to... printk() calls wake_up*() indirectly */ |
22266 | @@ -274,6 +275,10 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) | 22247 | @@ -272,6 +273,10 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) |
22267 | */ | 22248 | */ |
22268 | lazy_save_gs(prev->gs); | 22249 | lazy_save_gs(prev->gs); |
22269 | 22250 | ||
@@ -22274,7 +22255,7 @@ index b5a8905..d9cacac 100644 | |||
22274 | /* | 22255 | /* |
22275 | * Load the per-thread Thread-Local Storage descriptor. | 22256 | * Load the per-thread Thread-Local Storage descriptor. |
22276 | */ | 22257 | */ |
22277 | @@ -304,6 +309,9 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) | 22258 | @@ -302,6 +307,9 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) |
22278 | */ | 22259 | */ |
22279 | arch_end_context_switch(next_p); | 22260 | arch_end_context_switch(next_p); |
22280 | 22261 | ||
@@ -22284,7 +22265,7 @@ index b5a8905..d9cacac 100644 | |||
22284 | /* | 22265 | /* |
22285 | * Restore %gs if needed (which is common) | 22266 | * Restore %gs if needed (which is common) |
22286 | */ | 22267 | */ |
22287 | @@ -312,8 +320,6 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) | 22268 | @@ -310,8 +318,6 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) |
22288 | 22269 | ||
22289 | switch_fpu_finish(next_p, fpu); | 22270 | switch_fpu_finish(next_p, fpu); |
22290 | 22271 | ||
@@ -22293,16 +22274,16 @@ index b5a8905..d9cacac 100644 | |||
22293 | return prev_p; | 22274 | return prev_p; |
22294 | } | 22275 | } |
22295 | 22276 | ||
22296 | @@ -343,4 +349,3 @@ unsigned long get_wchan(struct task_struct *p) | 22277 | @@ -341,4 +347,3 @@ unsigned long get_wchan(struct task_struct *p) |
22297 | } while (count++ < 16); | 22278 | } while (count++ < 16); |
22298 | return 0; | 22279 | return 0; |
22299 | } | 22280 | } |
22300 | - | 22281 | - |
22301 | diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c | 22282 | diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c |
22302 | index 0f49677..fcbf88c 100644 | 22283 | index 355ae06..4530766 100644 |
22303 | --- a/arch/x86/kernel/process_64.c | 22284 | --- a/arch/x86/kernel/process_64.c |
22304 | +++ b/arch/x86/kernel/process_64.c | 22285 | +++ b/arch/x86/kernel/process_64.c |
22305 | @@ -152,10 +152,11 @@ int copy_thread(unsigned long clone_flags, unsigned long sp, | 22286 | @@ -151,10 +151,11 @@ int copy_thread(unsigned long clone_flags, unsigned long sp, |
22306 | struct pt_regs *childregs; | 22287 | struct pt_regs *childregs; |
22307 | struct task_struct *me = current; | 22288 | struct task_struct *me = current; |
22308 | 22289 | ||
@@ -22315,7 +22296,7 @@ index 0f49677..fcbf88c 100644 | |||
22315 | set_tsk_thread_flag(p, TIF_FORK); | 22296 | set_tsk_thread_flag(p, TIF_FORK); |
22316 | p->fpu_counter = 0; | 22297 | p->fpu_counter = 0; |
22317 | p->thread.io_bitmap_ptr = NULL; | 22298 | p->thread.io_bitmap_ptr = NULL; |
22318 | @@ -274,7 +275,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) | 22299 | @@ -273,7 +274,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) |
22319 | struct thread_struct *prev = &prev_p->thread; | 22300 | struct thread_struct *prev = &prev_p->thread; |
22320 | struct thread_struct *next = &next_p->thread; | 22301 | struct thread_struct *next = &next_p->thread; |
22321 | int cpu = smp_processor_id(); | 22302 | int cpu = smp_processor_id(); |
@@ -22324,7 +22305,7 @@ index 0f49677..fcbf88c 100644 | |||
22324 | unsigned fsindex, gsindex; | 22305 | unsigned fsindex, gsindex; |
22325 | fpu_switch_t fpu; | 22306 | fpu_switch_t fpu; |
22326 | 22307 | ||
22327 | @@ -356,10 +357,9 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) | 22308 | @@ -355,10 +356,9 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) |
22328 | prev->usersp = this_cpu_read(old_rsp); | 22309 | prev->usersp = this_cpu_read(old_rsp); |
22329 | this_cpu_write(old_rsp, next->usersp); | 22310 | this_cpu_write(old_rsp, next->usersp); |
22330 | this_cpu_write(current_task, next_p); | 22311 | this_cpu_write(current_task, next_p); |
@@ -22337,7 +22318,7 @@ index 0f49677..fcbf88c 100644 | |||
22337 | 22318 | ||
22338 | /* | 22319 | /* |
22339 | * Now maybe reload the debug registers and handle I/O bitmaps | 22320 | * Now maybe reload the debug registers and handle I/O bitmaps |
22340 | @@ -428,12 +428,11 @@ unsigned long get_wchan(struct task_struct *p) | 22321 | @@ -427,12 +427,11 @@ unsigned long get_wchan(struct task_struct *p) |
22341 | if (!p || p == current || p->state == TASK_RUNNING) | 22322 | if (!p || p == current || p->state == TASK_RUNNING) |
22342 | return 0; | 22323 | return 0; |
22343 | stack = (unsigned long)task_stack_page(p); | 22324 | stack = (unsigned long)task_stack_page(p); |
@@ -22624,6 +22605,19 @@ index 76fa1e9..abf09ea 100644 | |||
22624 | .power_off = native_machine_power_off, | 22605 | .power_off = native_machine_power_off, |
22625 | .shutdown = native_machine_shutdown, | 22606 | .shutdown = native_machine_shutdown, |
22626 | .emergency_restart = native_machine_emergency_restart, | 22607 | .emergency_restart = native_machine_emergency_restart, |
22608 | diff --git a/arch/x86/kernel/reboot_fixups_32.c b/arch/x86/kernel/reboot_fixups_32.c | ||
22609 | index c8e41e9..64049ef 100644 | ||
22610 | --- a/arch/x86/kernel/reboot_fixups_32.c | ||
22611 | +++ b/arch/x86/kernel/reboot_fixups_32.c | ||
22612 | @@ -57,7 +57,7 @@ struct device_fixup { | ||
22613 | unsigned int vendor; | ||
22614 | unsigned int device; | ||
22615 | void (*reboot_fixup)(struct pci_dev *); | ||
22616 | -}; | ||
22617 | +} __do_const; | ||
22618 | |||
22619 | /* | ||
22620 | * PCI ids solely used for fixups_table go here | ||
22627 | diff --git a/arch/x86/kernel/relocate_kernel_64.S b/arch/x86/kernel/relocate_kernel_64.S | 22621 | diff --git a/arch/x86/kernel/relocate_kernel_64.S b/arch/x86/kernel/relocate_kernel_64.S |
22628 | index f2bb9c9..bed145d7 100644 | 22622 | index f2bb9c9..bed145d7 100644 |
22629 | --- a/arch/x86/kernel/relocate_kernel_64.S | 22623 | --- a/arch/x86/kernel/relocate_kernel_64.S |
@@ -22645,10 +22639,10 @@ index f2bb9c9..bed145d7 100644 | |||
22645 | 22639 | ||
22646 | 1: | 22640 | 1: |
22647 | diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c | 22641 | diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c |
22648 | index fae9134..8fcd87c 100644 | 22642 | index 56f7fcf..fa229f4 100644 |
22649 | --- a/arch/x86/kernel/setup.c | 22643 | --- a/arch/x86/kernel/setup.c |
22650 | +++ b/arch/x86/kernel/setup.c | 22644 | +++ b/arch/x86/kernel/setup.c |
22651 | @@ -111,6 +111,7 @@ | 22645 | @@ -110,6 +110,7 @@ |
22652 | #include <asm/mce.h> | 22646 | #include <asm/mce.h> |
22653 | #include <asm/alternative.h> | 22647 | #include <asm/alternative.h> |
22654 | #include <asm/prom.h> | 22648 | #include <asm/prom.h> |
@@ -22656,7 +22650,7 @@ index fae9134..8fcd87c 100644 | |||
22656 | 22650 | ||
22657 | /* | 22651 | /* |
22658 | * max_low_pfn_mapped: highest direct mapped pfn under 4GB | 22652 | * max_low_pfn_mapped: highest direct mapped pfn under 4GB |
22659 | @@ -447,7 +448,7 @@ static void __init parse_setup_data(void) | 22653 | @@ -444,7 +445,7 @@ static void __init parse_setup_data(void) |
22660 | 22654 | ||
22661 | switch (data->type) { | 22655 | switch (data->type) { |
22662 | case SETUP_E820_EXT: | 22656 | case SETUP_E820_EXT: |
@@ -22665,7 +22659,7 @@ index fae9134..8fcd87c 100644 | |||
22665 | break; | 22659 | break; |
22666 | case SETUP_DTB: | 22660 | case SETUP_DTB: |
22667 | add_dtb(pa_data); | 22661 | add_dtb(pa_data); |
22668 | @@ -774,7 +775,7 @@ static void __init trim_bios_range(void) | 22662 | @@ -771,7 +772,7 @@ static void __init trim_bios_range(void) |
22669 | * area (640->1Mb) as ram even though it is not. | 22663 | * area (640->1Mb) as ram even though it is not. |
22670 | * take them out. | 22664 | * take them out. |
22671 | */ | 22665 | */ |
@@ -22674,7 +22668,7 @@ index fae9134..8fcd87c 100644 | |||
22674 | 22668 | ||
22675 | sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &e820.nr_map); | 22669 | sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &e820.nr_map); |
22676 | } | 22670 | } |
22677 | @@ -782,7 +783,7 @@ static void __init trim_bios_range(void) | 22671 | @@ -779,7 +780,7 @@ static void __init trim_bios_range(void) |
22678 | /* called before trim_bios_range() to spare extra sanitize */ | 22672 | /* called before trim_bios_range() to spare extra sanitize */ |
22679 | static void __init e820_add_kernel_range(void) | 22673 | static void __init e820_add_kernel_range(void) |
22680 | { | 22674 | { |
@@ -22683,7 +22677,7 @@ index fae9134..8fcd87c 100644 | |||
22683 | u64 size = __pa_symbol(_end) - start; | 22677 | u64 size = __pa_symbol(_end) - start; |
22684 | 22678 | ||
22685 | /* | 22679 | /* |
22686 | @@ -844,8 +845,12 @@ static void __init trim_low_memory_range(void) | 22680 | @@ -841,8 +842,12 @@ static void __init trim_low_memory_range(void) |
22687 | 22681 | ||
22688 | void __init setup_arch(char **cmdline_p) | 22682 | void __init setup_arch(char **cmdline_p) |
22689 | { | 22683 | { |
@@ -22696,7 +22690,7 @@ index fae9134..8fcd87c 100644 | |||
22696 | 22690 | ||
22697 | early_reserve_initrd(); | 22691 | early_reserve_initrd(); |
22698 | 22692 | ||
22699 | @@ -937,14 +942,14 @@ void __init setup_arch(char **cmdline_p) | 22693 | @@ -934,14 +939,14 @@ void __init setup_arch(char **cmdline_p) |
22700 | 22694 | ||
22701 | if (!boot_params.hdr.root_flags) | 22695 | if (!boot_params.hdr.root_flags) |
22702 | root_mountflags &= ~MS_RDONLY; | 22696 | root_mountflags &= ~MS_RDONLY; |
@@ -22884,7 +22878,7 @@ index 48d2b7d..90d328a 100644 | |||
22884 | .smp_prepare_cpus = native_smp_prepare_cpus, | 22878 | .smp_prepare_cpus = native_smp_prepare_cpus, |
22885 | .smp_cpus_done = native_smp_cpus_done, | 22879 | .smp_cpus_done = native_smp_cpus_done, |
22886 | diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c | 22880 | diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c |
22887 | index 9f190a2..90a0688 100644 | 22881 | index bfd348e..4816ad8 100644 |
22888 | --- a/arch/x86/kernel/smpboot.c | 22882 | --- a/arch/x86/kernel/smpboot.c |
22889 | +++ b/arch/x86/kernel/smpboot.c | 22883 | +++ b/arch/x86/kernel/smpboot.c |
22890 | @@ -748,6 +748,7 @@ static int __cpuinit do_boot_cpu(int apicid, int cpu, struct task_struct *idle) | 22884 | @@ -748,6 +748,7 @@ static int __cpuinit do_boot_cpu(int apicid, int cpu, struct task_struct *idle) |
@@ -23349,7 +23343,7 @@ index 24d3c91..d06b473 100644 | |||
23349 | return pc; | 23343 | return pc; |
23350 | } | 23344 | } |
23351 | diff --git a/arch/x86/kernel/tls.c b/arch/x86/kernel/tls.c | 23345 | diff --git a/arch/x86/kernel/tls.c b/arch/x86/kernel/tls.c |
23352 | index 9d9d2f9..cad418a 100644 | 23346 | index f7fec09..9991981 100644 |
23353 | --- a/arch/x86/kernel/tls.c | 23347 | --- a/arch/x86/kernel/tls.c |
23354 | +++ b/arch/x86/kernel/tls.c | 23348 | +++ b/arch/x86/kernel/tls.c |
23355 | @@ -84,6 +84,11 @@ int do_set_thread_area(struct task_struct *p, int idx, | 23349 | @@ -84,6 +84,11 @@ int do_set_thread_area(struct task_struct *p, int idx, |
@@ -23364,7 +23358,7 @@ index 9d9d2f9..cad418a 100644 | |||
23364 | set_tls_desc(p, idx, &info, 1); | 23358 | set_tls_desc(p, idx, &info, 1); |
23365 | 23359 | ||
23366 | return 0; | 23360 | return 0; |
23367 | @@ -204,7 +209,7 @@ int regset_tls_set(struct task_struct *target, const struct user_regset *regset, | 23361 | @@ -200,7 +205,7 @@ int regset_tls_set(struct task_struct *target, const struct user_regset *regset, |
23368 | 23362 | ||
23369 | if (kbuf) | 23363 | if (kbuf) |
23370 | info = kbuf; | 23364 | info = kbuf; |
@@ -23374,7 +23368,7 @@ index 9d9d2f9..cad418a 100644 | |||
23374 | else | 23368 | else |
23375 | info = infobuf; | 23369 | info = infobuf; |
23376 | diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c | 23370 | diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c |
23377 | index 68bda7a..3ec7bb7 100644 | 23371 | index 772e2a8..bad5bf6 100644 |
23378 | --- a/arch/x86/kernel/traps.c | 23372 | --- a/arch/x86/kernel/traps.c |
23379 | +++ b/arch/x86/kernel/traps.c | 23373 | +++ b/arch/x86/kernel/traps.c |
23380 | @@ -68,12 +68,6 @@ | 23374 | @@ -68,12 +68,6 @@ |
@@ -23448,7 +23442,7 @@ index 68bda7a..3ec7bb7 100644 | |||
23448 | regs->ip, regs->sp, error_code); | 23442 | regs->ip, regs->sp, error_code); |
23449 | print_vma_addr(" in ", regs->ip); | 23443 | print_vma_addr(" in ", regs->ip); |
23450 | pr_cont("\n"); | 23444 | pr_cont("\n"); |
23451 | @@ -266,7 +272,7 @@ do_general_protection(struct pt_regs *regs, long error_code) | 23445 | @@ -273,7 +279,7 @@ do_general_protection(struct pt_regs *regs, long error_code) |
23452 | conditional_sti(regs); | 23446 | conditional_sti(regs); |
23453 | 23447 | ||
23454 | #ifdef CONFIG_X86_32 | 23448 | #ifdef CONFIG_X86_32 |
@@ -23457,7 +23451,7 @@ index 68bda7a..3ec7bb7 100644 | |||
23457 | local_irq_enable(); | 23451 | local_irq_enable(); |
23458 | handle_vm86_fault((struct kernel_vm86_regs *) regs, error_code); | 23452 | handle_vm86_fault((struct kernel_vm86_regs *) regs, error_code); |
23459 | goto exit; | 23453 | goto exit; |
23460 | @@ -274,18 +280,42 @@ do_general_protection(struct pt_regs *regs, long error_code) | 23454 | @@ -281,18 +287,42 @@ do_general_protection(struct pt_regs *regs, long error_code) |
23461 | #endif | 23455 | #endif |
23462 | 23456 | ||
23463 | tsk = current; | 23457 | tsk = current; |
@@ -23502,7 +23496,7 @@ index 68bda7a..3ec7bb7 100644 | |||
23502 | tsk->thread.error_code = error_code; | 23496 | tsk->thread.error_code = error_code; |
23503 | tsk->thread.trap_nr = X86_TRAP_GP; | 23497 | tsk->thread.trap_nr = X86_TRAP_GP; |
23504 | 23498 | ||
23505 | @@ -440,7 +470,7 @@ dotraplinkage void __kprobes do_debug(struct pt_regs *regs, long error_code) | 23499 | @@ -450,7 +480,7 @@ dotraplinkage void __kprobes do_debug(struct pt_regs *regs, long error_code) |
23506 | /* It's safe to allow irq's after DR6 has been saved */ | 23500 | /* It's safe to allow irq's after DR6 has been saved */ |
23507 | preempt_conditional_sti(regs); | 23501 | preempt_conditional_sti(regs); |
23508 | 23502 | ||
@@ -23511,7 +23505,7 @@ index 68bda7a..3ec7bb7 100644 | |||
23511 | handle_vm86_trap((struct kernel_vm86_regs *) regs, error_code, | 23505 | handle_vm86_trap((struct kernel_vm86_regs *) regs, error_code, |
23512 | X86_TRAP_DB); | 23506 | X86_TRAP_DB); |
23513 | preempt_conditional_cli(regs); | 23507 | preempt_conditional_cli(regs); |
23514 | @@ -455,7 +485,7 @@ dotraplinkage void __kprobes do_debug(struct pt_regs *regs, long error_code) | 23508 | @@ -465,7 +495,7 @@ dotraplinkage void __kprobes do_debug(struct pt_regs *regs, long error_code) |
23515 | * We already checked v86 mode above, so we can check for kernel mode | 23509 | * We already checked v86 mode above, so we can check for kernel mode |
23516 | * by just checking the CPL of CS. | 23510 | * by just checking the CPL of CS. |
23517 | */ | 23511 | */ |
@@ -23520,7 +23514,7 @@ index 68bda7a..3ec7bb7 100644 | |||
23520 | tsk->thread.debugreg6 &= ~DR_STEP; | 23514 | tsk->thread.debugreg6 &= ~DR_STEP; |
23521 | set_tsk_thread_flag(tsk, TIF_SINGLESTEP); | 23515 | set_tsk_thread_flag(tsk, TIF_SINGLESTEP); |
23522 | regs->flags &= ~X86_EFLAGS_TF; | 23516 | regs->flags &= ~X86_EFLAGS_TF; |
23523 | @@ -487,7 +517,7 @@ void math_error(struct pt_regs *regs, int error_code, int trapnr) | 23517 | @@ -497,7 +527,7 @@ void math_error(struct pt_regs *regs, int error_code, int trapnr) |
23524 | return; | 23518 | return; |
23525 | conditional_sti(regs); | 23519 | conditional_sti(regs); |
23526 | 23520 | ||
@@ -23530,7 +23524,7 @@ index 68bda7a..3ec7bb7 100644 | |||
23530 | if (!fixup_exception(regs)) { | 23524 | if (!fixup_exception(regs)) { |
23531 | task->thread.error_code = error_code; | 23525 | task->thread.error_code = error_code; |
23532 | diff --git a/arch/x86/kernel/uprobes.c b/arch/x86/kernel/uprobes.c | 23526 | diff --git a/arch/x86/kernel/uprobes.c b/arch/x86/kernel/uprobes.c |
23533 | index 0ba4cfb..4596bec 100644 | 23527 | index 2ed8459..7cf329f 100644 |
23534 | --- a/arch/x86/kernel/uprobes.c | 23528 | --- a/arch/x86/kernel/uprobes.c |
23535 | +++ b/arch/x86/kernel/uprobes.c | 23529 | +++ b/arch/x86/kernel/uprobes.c |
23536 | @@ -629,7 +629,7 @@ int arch_uprobe_exception_notify(struct notifier_block *self, unsigned long val, | 23530 | @@ -629,7 +629,7 @@ int arch_uprobe_exception_notify(struct notifier_block *self, unsigned long val, |
@@ -23542,6 +23536,15 @@ index 0ba4cfb..4596bec 100644 | |||
23542 | return NOTIFY_DONE; | 23536 | return NOTIFY_DONE; |
23543 | 23537 | ||
23544 | switch (val) { | 23538 | switch (val) { |
23539 | @@ -719,7 +719,7 @@ arch_uretprobe_hijack_return_addr(unsigned long trampoline_vaddr, struct pt_regs | ||
23540 | |||
23541 | if (ncopied != rasize) { | ||
23542 | pr_err("uprobe: return address clobbered: pid=%d, %%sp=%#lx, " | ||
23543 | - "%%ip=%#lx\n", current->pid, regs->sp, regs->ip); | ||
23544 | + "%%ip=%#lx\n", task_pid_nr(current), regs->sp, regs->ip); | ||
23545 | |||
23546 | force_sig_info(SIGSEGV, SEND_SIG_FORCED, current); | ||
23547 | } | ||
23545 | diff --git a/arch/x86/kernel/verify_cpu.S b/arch/x86/kernel/verify_cpu.S | 23548 | diff --git a/arch/x86/kernel/verify_cpu.S b/arch/x86/kernel/verify_cpu.S |
23546 | index b9242ba..50c5edd 100644 | 23549 | index b9242ba..50c5edd 100644 |
23547 | --- a/arch/x86/kernel/verify_cpu.S | 23550 | --- a/arch/x86/kernel/verify_cpu.S |
@@ -23555,7 +23558,7 @@ index b9242ba..50c5edd 100644 | |||
23555 | * verify_cpu, returns the status of longmode and SSE in register %eax. | 23558 | * verify_cpu, returns the status of longmode and SSE in register %eax. |
23556 | * 0: Success 1: Failure | 23559 | * 0: Success 1: Failure |
23557 | diff --git a/arch/x86/kernel/vm86_32.c b/arch/x86/kernel/vm86_32.c | 23560 | diff --git a/arch/x86/kernel/vm86_32.c b/arch/x86/kernel/vm86_32.c |
23558 | index 3dbdd9c..888b14e 100644 | 23561 | index e8edcf5..27f9344 100644 |
23559 | --- a/arch/x86/kernel/vm86_32.c | 23562 | --- a/arch/x86/kernel/vm86_32.c |
23560 | +++ b/arch/x86/kernel/vm86_32.c | 23563 | +++ b/arch/x86/kernel/vm86_32.c |
23561 | @@ -44,6 +44,7 @@ | 23564 | @@ -44,6 +44,7 @@ |
@@ -23578,34 +23581,33 @@ index 3dbdd9c..888b14e 100644 | |||
23578 | @@ -214,6 +215,14 @@ SYSCALL_DEFINE1(vm86old, struct vm86_struct __user *, v86) | 23581 | @@ -214,6 +215,14 @@ SYSCALL_DEFINE1(vm86old, struct vm86_struct __user *, v86) |
23579 | 23582 | ||
23580 | if (tsk->thread.saved_sp0) | 23583 | if (tsk->thread.saved_sp0) |
23581 | goto out; | 23584 | return -EPERM; |
23582 | + | 23585 | + |
23583 | +#ifdef CONFIG_GRKERNSEC_VM86 | 23586 | +#ifdef CONFIG_GRKERNSEC_VM86 |
23584 | + if (!capable(CAP_SYS_RAWIO)) { | 23587 | + if (!capable(CAP_SYS_RAWIO)) { |
23585 | + gr_handle_vm86(); | 23588 | + gr_handle_vm86(); |
23586 | + goto out; | 23589 | + return -EPERM; |
23587 | + } | 23590 | + } |
23588 | +#endif | 23591 | +#endif |
23589 | + | 23592 | + |
23590 | tmp = copy_vm86_regs_from_user(&info.regs, &v86->regs, | 23593 | tmp = copy_vm86_regs_from_user(&info.regs, &v86->regs, |
23591 | offsetof(struct kernel_vm86_struct, vm86plus) - | 23594 | offsetof(struct kernel_vm86_struct, vm86plus) - |
23592 | sizeof(info.regs)); | 23595 | sizeof(info.regs)); |
23593 | @@ -242,6 +251,14 @@ SYSCALL_DEFINE2(vm86, unsigned long, cmd, unsigned long, arg) | 23596 | @@ -238,6 +247,13 @@ SYSCALL_DEFINE2(vm86, unsigned long, cmd, unsigned long, arg) |
23594 | int tmp, ret; | 23597 | int tmp; |
23595 | struct vm86plus_struct __user *v86; | 23598 | struct vm86plus_struct __user *v86; |
23596 | 23599 | ||
23597 | +#ifdef CONFIG_GRKERNSEC_VM86 | 23600 | +#ifdef CONFIG_GRKERNSEC_VM86 |
23598 | + if (!capable(CAP_SYS_RAWIO)) { | 23601 | + if (!capable(CAP_SYS_RAWIO)) { |
23599 | + gr_handle_vm86(); | 23602 | + gr_handle_vm86(); |
23600 | + ret = -EPERM; | 23603 | + return -EPERM; |
23601 | + goto out; | ||
23602 | + } | 23604 | + } |
23603 | +#endif | 23605 | +#endif |
23604 | + | 23606 | + |
23605 | tsk = current; | 23607 | tsk = current; |
23606 | switch (cmd) { | 23608 | switch (cmd) { |
23607 | case VM86_REQUEST_IRQ: | 23609 | case VM86_REQUEST_IRQ: |
23608 | @@ -329,7 +346,7 @@ static void do_sys_vm86(struct kernel_vm86_struct *info, struct task_struct *tsk | 23610 | @@ -318,7 +334,7 @@ static void do_sys_vm86(struct kernel_vm86_struct *info, struct task_struct *tsk |
23609 | tsk->thread.saved_fs = info->regs32->fs; | 23611 | tsk->thread.saved_fs = info->regs32->fs; |
23610 | tsk->thread.saved_gs = get_user_gs(info->regs32); | 23612 | tsk->thread.saved_gs = get_user_gs(info->regs32); |
23611 | 23613 | ||
@@ -23614,7 +23616,7 @@ index 3dbdd9c..888b14e 100644 | |||
23614 | tsk->thread.sp0 = (unsigned long) &info->VM86_TSS_ESP0; | 23616 | tsk->thread.sp0 = (unsigned long) &info->VM86_TSS_ESP0; |
23615 | if (cpu_has_sep) | 23617 | if (cpu_has_sep) |
23616 | tsk->thread.sysenter_cs = 0; | 23618 | tsk->thread.sysenter_cs = 0; |
23617 | @@ -536,7 +553,7 @@ static void do_int(struct kernel_vm86_regs *regs, int i, | 23619 | @@ -525,7 +541,7 @@ static void do_int(struct kernel_vm86_regs *regs, int i, |
23618 | goto cannot_handle; | 23620 | goto cannot_handle; |
23619 | if (i == 0x21 && is_revectored(AH(regs), &KVM86->int21_revectored)) | 23621 | if (i == 0x21 && is_revectored(AH(regs), &KVM86->int21_revectored)) |
23620 | goto cannot_handle; | 23622 | goto cannot_handle; |
@@ -23624,7 +23626,7 @@ index 3dbdd9c..888b14e 100644 | |||
23624 | goto cannot_handle; | 23626 | goto cannot_handle; |
23625 | if ((segoffs >> 16) == BIOSSEG) | 23627 | if ((segoffs >> 16) == BIOSSEG) |
23626 | diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S | 23628 | diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S |
23627 | index 22a1530..5efafbf 100644 | 23629 | index 10c4f30..57377c2 100644 |
23628 | --- a/arch/x86/kernel/vmlinux.lds.S | 23630 | --- a/arch/x86/kernel/vmlinux.lds.S |
23629 | +++ b/arch/x86/kernel/vmlinux.lds.S | 23631 | +++ b/arch/x86/kernel/vmlinux.lds.S |
23630 | @@ -26,6 +26,13 @@ | 23632 | @@ -26,6 +26,13 @@ |
@@ -23691,9 +23693,9 @@ index 22a1530..5efafbf 100644 | |||
23691 | + __LOAD_PHYSICAL_ADDR = . - LOAD_OFFSET + __KERNEL_TEXT_OFFSET; | 23693 | + __LOAD_PHYSICAL_ADDR = . - LOAD_OFFSET + __KERNEL_TEXT_OFFSET; |
23692 | + _text = .; | 23694 | + _text = .; |
23693 | HEAD_TEXT | 23695 | HEAD_TEXT |
23694 | #ifdef CONFIG_X86_32 | 23696 | . = ALIGN(8); |
23695 | . = ALIGN(PAGE_SIZE); | 23697 | _stext = .; |
23696 | @@ -108,13 +128,48 @@ SECTIONS | 23698 | @@ -104,13 +124,48 @@ SECTIONS |
23697 | IRQENTRY_TEXT | 23699 | IRQENTRY_TEXT |
23698 | *(.fixup) | 23700 | *(.fixup) |
23699 | *(.gnu.warning) | 23701 | *(.gnu.warning) |
@@ -23746,7 +23748,7 @@ index 22a1530..5efafbf 100644 | |||
23746 | 23748 | ||
23747 | #if defined(CONFIG_DEBUG_RODATA) | 23749 | #if defined(CONFIG_DEBUG_RODATA) |
23748 | /* .text should occupy whole number of pages */ | 23750 | /* .text should occupy whole number of pages */ |
23749 | @@ -126,16 +181,20 @@ SECTIONS | 23751 | @@ -122,16 +177,20 @@ SECTIONS |
23750 | 23752 | ||
23751 | /* Data */ | 23753 | /* Data */ |
23752 | .data : AT(ADDR(.data) - LOAD_OFFSET) { | 23754 | .data : AT(ADDR(.data) - LOAD_OFFSET) { |
@@ -23770,7 +23772,7 @@ index 22a1530..5efafbf 100644 | |||
23770 | 23772 | ||
23771 | PAGE_ALIGNED_DATA(PAGE_SIZE) | 23773 | PAGE_ALIGNED_DATA(PAGE_SIZE) |
23772 | 23774 | ||
23773 | @@ -176,12 +235,19 @@ SECTIONS | 23775 | @@ -172,12 +231,19 @@ SECTIONS |
23774 | #endif /* CONFIG_X86_64 */ | 23776 | #endif /* CONFIG_X86_64 */ |
23775 | 23777 | ||
23776 | /* Init code and data - will be freed after init */ | 23778 | /* Init code and data - will be freed after init */ |
@@ -23793,7 +23795,7 @@ index 22a1530..5efafbf 100644 | |||
23793 | /* | 23795 | /* |
23794 | * percpu offsets are zero-based on SMP. PERCPU_VADDR() changes the | 23796 | * percpu offsets are zero-based on SMP. PERCPU_VADDR() changes the |
23795 | * output PHDR, so the next output section - .init.text - should | 23797 | * output PHDR, so the next output section - .init.text - should |
23796 | @@ -190,12 +256,27 @@ SECTIONS | 23798 | @@ -186,12 +252,27 @@ SECTIONS |
23797 | PERCPU_VADDR(INTERNODE_CACHE_BYTES, 0, :percpu) | 23799 | PERCPU_VADDR(INTERNODE_CACHE_BYTES, 0, :percpu) |
23798 | #endif | 23800 | #endif |
23799 | 23801 | ||
@@ -23826,7 +23828,7 @@ index 22a1530..5efafbf 100644 | |||
23826 | 23828 | ||
23827 | .x86_cpu_dev.init : AT(ADDR(.x86_cpu_dev.init) - LOAD_OFFSET) { | 23829 | .x86_cpu_dev.init : AT(ADDR(.x86_cpu_dev.init) - LOAD_OFFSET) { |
23828 | __x86_cpu_dev_start = .; | 23830 | __x86_cpu_dev_start = .; |
23829 | @@ -257,19 +338,12 @@ SECTIONS | 23831 | @@ -253,19 +334,12 @@ SECTIONS |
23830 | } | 23832 | } |
23831 | 23833 | ||
23832 | . = ALIGN(8); | 23834 | . = ALIGN(8); |
@@ -23847,7 +23849,7 @@ index 22a1530..5efafbf 100644 | |||
23847 | PERCPU_SECTION(INTERNODE_CACHE_BYTES) | 23849 | PERCPU_SECTION(INTERNODE_CACHE_BYTES) |
23848 | #endif | 23850 | #endif |
23849 | 23851 | ||
23850 | @@ -288,16 +362,10 @@ SECTIONS | 23852 | @@ -284,16 +358,10 @@ SECTIONS |
23851 | .smp_locks : AT(ADDR(.smp_locks) - LOAD_OFFSET) { | 23853 | .smp_locks : AT(ADDR(.smp_locks) - LOAD_OFFSET) { |
23852 | __smp_locks = .; | 23854 | __smp_locks = .; |
23853 | *(.smp_locks) | 23855 | *(.smp_locks) |
@@ -23865,7 +23867,7 @@ index 22a1530..5efafbf 100644 | |||
23865 | /* BSS */ | 23867 | /* BSS */ |
23866 | . = ALIGN(PAGE_SIZE); | 23868 | . = ALIGN(PAGE_SIZE); |
23867 | .bss : AT(ADDR(.bss) - LOAD_OFFSET) { | 23869 | .bss : AT(ADDR(.bss) - LOAD_OFFSET) { |
23868 | @@ -313,6 +381,7 @@ SECTIONS | 23870 | @@ -309,6 +377,7 @@ SECTIONS |
23869 | __brk_base = .; | 23871 | __brk_base = .; |
23870 | . += 64 * 1024; /* 64k alignment slop space */ | 23872 | . += 64 * 1024; /* 64k alignment slop space */ |
23871 | *(.brk_reservation) /* areas brk users have reserved */ | 23873 | *(.brk_reservation) /* areas brk users have reserved */ |
@@ -23873,7 +23875,7 @@ index 22a1530..5efafbf 100644 | |||
23873 | __brk_limit = .; | 23875 | __brk_limit = .; |
23874 | } | 23876 | } |
23875 | 23877 | ||
23876 | @@ -339,13 +408,12 @@ SECTIONS | 23878 | @@ -335,13 +404,12 @@ SECTIONS |
23877 | * for the boot processor. | 23879 | * for the boot processor. |
23878 | */ | 23880 | */ |
23879 | #define INIT_PER_CPU(x) init_per_cpu__##x = x + __per_cpu_load | 23881 | #define INIT_PER_CPU(x) init_per_cpu__##x = x + __per_cpu_load |
@@ -24056,10 +24058,10 @@ index a20ecb5..d0e2194 100644 | |||
24056 | 24058 | ||
24057 | out: | 24059 | out: |
24058 | diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c | 24060 | diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c |
24059 | index 698eece..776b682 100644 | 24061 | index 5953dce..f11a7d2 100644 |
24060 | --- a/arch/x86/kvm/emulate.c | 24062 | --- a/arch/x86/kvm/emulate.c |
24061 | +++ b/arch/x86/kvm/emulate.c | 24063 | +++ b/arch/x86/kvm/emulate.c |
24062 | @@ -328,6 +328,7 @@ static void invalidate_registers(struct x86_emulate_ctxt *ctxt) | 24064 | @@ -329,6 +329,7 @@ static void invalidate_registers(struct x86_emulate_ctxt *ctxt) |
24063 | 24065 | ||
24064 | #define ____emulate_2op(ctxt, _op, _x, _y, _suffix, _dsttype) \ | 24066 | #define ____emulate_2op(ctxt, _op, _x, _y, _suffix, _dsttype) \ |
24065 | do { \ | 24067 | do { \ |
@@ -24067,7 +24069,7 @@ index 698eece..776b682 100644 | |||
24067 | __asm__ __volatile__ ( \ | 24069 | __asm__ __volatile__ ( \ |
24068 | _PRE_EFLAGS("0", "4", "2") \ | 24070 | _PRE_EFLAGS("0", "4", "2") \ |
24069 | _op _suffix " %"_x"3,%1; " \ | 24071 | _op _suffix " %"_x"3,%1; " \ |
24070 | @@ -342,8 +343,6 @@ static void invalidate_registers(struct x86_emulate_ctxt *ctxt) | 24072 | @@ -343,8 +344,6 @@ static void invalidate_registers(struct x86_emulate_ctxt *ctxt) |
24071 | /* Raw emulation: instruction has two explicit operands. */ | 24073 | /* Raw emulation: instruction has two explicit operands. */ |
24072 | #define __emulate_2op_nobyte(ctxt,_op,_wx,_wy,_lx,_ly,_qx,_qy) \ | 24074 | #define __emulate_2op_nobyte(ctxt,_op,_wx,_wy,_lx,_ly,_qx,_qy) \ |
24073 | do { \ | 24075 | do { \ |
@@ -24076,7 +24078,7 @@ index 698eece..776b682 100644 | |||
24076 | switch ((ctxt)->dst.bytes) { \ | 24078 | switch ((ctxt)->dst.bytes) { \ |
24077 | case 2: \ | 24079 | case 2: \ |
24078 | ____emulate_2op(ctxt,_op,_wx,_wy,"w",u16); \ | 24080 | ____emulate_2op(ctxt,_op,_wx,_wy,"w",u16); \ |
24079 | @@ -359,7 +358,6 @@ static void invalidate_registers(struct x86_emulate_ctxt *ctxt) | 24081 | @@ -360,7 +359,6 @@ static void invalidate_registers(struct x86_emulate_ctxt *ctxt) |
24080 | 24082 | ||
24081 | #define __emulate_2op(ctxt,_op,_bx,_by,_wx,_wy,_lx,_ly,_qx,_qy) \ | 24083 | #define __emulate_2op(ctxt,_op,_bx,_by,_wx,_wy,_lx,_ly,_qx,_qy) \ |
24082 | do { \ | 24084 | do { \ |
@@ -24085,7 +24087,7 @@ index 698eece..776b682 100644 | |||
24085 | case 1: \ | 24087 | case 1: \ |
24086 | ____emulate_2op(ctxt,_op,_bx,_by,"b",u8); \ | 24088 | ____emulate_2op(ctxt,_op,_bx,_by,"b",u8); \ |
24087 | diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c | 24089 | diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c |
24088 | index f77df1c..6f20690 100644 | 24090 | index 0eee2c8..94a32c3 100644 |
24089 | --- a/arch/x86/kvm/lapic.c | 24091 | --- a/arch/x86/kvm/lapic.c |
24090 | +++ b/arch/x86/kvm/lapic.c | 24092 | +++ b/arch/x86/kvm/lapic.c |
24091 | @@ -55,7 +55,7 @@ | 24093 | @@ -55,7 +55,7 @@ |
@@ -24098,7 +24100,7 @@ index f77df1c..6f20690 100644 | |||
24098 | #define APIC_LVT_NUM 6 | 24100 | #define APIC_LVT_NUM 6 |
24099 | /* 14 is the version for Xeon and Pentium 8.4.8*/ | 24101 | /* 14 is the version for Xeon and Pentium 8.4.8*/ |
24100 | diff --git a/arch/x86/kvm/paging_tmpl.h b/arch/x86/kvm/paging_tmpl.h | 24102 | diff --git a/arch/x86/kvm/paging_tmpl.h b/arch/x86/kvm/paging_tmpl.h |
24101 | index 105dd5b..1b0ccc2 100644 | 24103 | index da20860..d19fdf5 100644 |
24102 | --- a/arch/x86/kvm/paging_tmpl.h | 24104 | --- a/arch/x86/kvm/paging_tmpl.h |
24103 | +++ b/arch/x86/kvm/paging_tmpl.h | 24105 | +++ b/arch/x86/kvm/paging_tmpl.h |
24104 | @@ -208,7 +208,7 @@ retry_walk: | 24106 | @@ -208,7 +208,7 @@ retry_walk: |
@@ -24111,10 +24113,10 @@ index 105dd5b..1b0ccc2 100644 | |||
24111 | goto error; | 24113 | goto error; |
24112 | walker->ptep_user[walker->level - 1] = ptep_user; | 24114 | walker->ptep_user[walker->level - 1] = ptep_user; |
24113 | diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c | 24115 | diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c |
24114 | index e1b1ce2..f7b4b43 100644 | 24116 | index a14a6ea..dc86cf0 100644 |
24115 | --- a/arch/x86/kvm/svm.c | 24117 | --- a/arch/x86/kvm/svm.c |
24116 | +++ b/arch/x86/kvm/svm.c | 24118 | +++ b/arch/x86/kvm/svm.c |
24117 | @@ -3507,7 +3507,11 @@ static void reload_tss(struct kvm_vcpu *vcpu) | 24119 | @@ -3493,7 +3493,11 @@ static void reload_tss(struct kvm_vcpu *vcpu) |
24118 | int cpu = raw_smp_processor_id(); | 24120 | int cpu = raw_smp_processor_id(); |
24119 | 24121 | ||
24120 | struct svm_cpu_data *sd = per_cpu(svm_data, cpu); | 24122 | struct svm_cpu_data *sd = per_cpu(svm_data, cpu); |
@@ -24126,7 +24128,7 @@ index e1b1ce2..f7b4b43 100644 | |||
24126 | load_TR_desc(); | 24128 | load_TR_desc(); |
24127 | } | 24129 | } |
24128 | 24130 | ||
24129 | @@ -3901,6 +3905,10 @@ static void svm_vcpu_run(struct kvm_vcpu *vcpu) | 24131 | @@ -3894,6 +3898,10 @@ static void svm_vcpu_run(struct kvm_vcpu *vcpu) |
24130 | #endif | 24132 | #endif |
24131 | #endif | 24133 | #endif |
24132 | 24134 | ||
@@ -24138,10 +24140,10 @@ index e1b1ce2..f7b4b43 100644 | |||
24138 | 24140 | ||
24139 | local_irq_disable(); | 24141 | local_irq_disable(); |
24140 | diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c | 24142 | diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c |
24141 | index 0e2f2a4..4331db2 100644 | 24143 | index 5402c94..c3bdeee 100644 |
24142 | --- a/arch/x86/kvm/vmx.c | 24144 | --- a/arch/x86/kvm/vmx.c |
24143 | +++ b/arch/x86/kvm/vmx.c | 24145 | +++ b/arch/x86/kvm/vmx.c |
24144 | @@ -1184,12 +1184,12 @@ static void vmcs_write64(unsigned long field, u64 value) | 24146 | @@ -1311,12 +1311,12 @@ static void vmcs_write64(unsigned long field, u64 value) |
24145 | #endif | 24147 | #endif |
24146 | } | 24148 | } |
24147 | 24149 | ||
@@ -24156,7 +24158,7 @@ index 0e2f2a4..4331db2 100644 | |||
24156 | { | 24158 | { |
24157 | vmcs_writel(field, vmcs_readl(field) | mask); | 24159 | vmcs_writel(field, vmcs_readl(field) | mask); |
24158 | } | 24160 | } |
24159 | @@ -1390,7 +1390,11 @@ static void reload_tss(void) | 24161 | @@ -1517,7 +1517,11 @@ static void reload_tss(void) |
24160 | struct desc_struct *descs; | 24162 | struct desc_struct *descs; |
24161 | 24163 | ||
24162 | descs = (void *)gdt->address; | 24164 | descs = (void *)gdt->address; |
@@ -24168,7 +24170,7 @@ index 0e2f2a4..4331db2 100644 | |||
24168 | load_TR_desc(); | 24170 | load_TR_desc(); |
24169 | } | 24171 | } |
24170 | 24172 | ||
24171 | @@ -1614,6 +1618,10 @@ static void vmx_vcpu_load(struct kvm_vcpu *vcpu, int cpu) | 24173 | @@ -1741,6 +1745,10 @@ static void vmx_vcpu_load(struct kvm_vcpu *vcpu, int cpu) |
24172 | vmcs_writel(HOST_TR_BASE, kvm_read_tr_base()); /* 22.2.4 */ | 24174 | vmcs_writel(HOST_TR_BASE, kvm_read_tr_base()); /* 22.2.4 */ |
24173 | vmcs_writel(HOST_GDTR_BASE, gdt->address); /* 22.2.4 */ | 24175 | vmcs_writel(HOST_GDTR_BASE, gdt->address); /* 22.2.4 */ |
24174 | 24176 | ||
@@ -24179,7 +24181,7 @@ index 0e2f2a4..4331db2 100644 | |||
24179 | rdmsrl(MSR_IA32_SYSENTER_ESP, sysenter_esp); | 24181 | rdmsrl(MSR_IA32_SYSENTER_ESP, sysenter_esp); |
24180 | vmcs_writel(HOST_IA32_SYSENTER_ESP, sysenter_esp); /* 22.2.3 */ | 24182 | vmcs_writel(HOST_IA32_SYSENTER_ESP, sysenter_esp); /* 22.2.3 */ |
24181 | vmx->loaded_vmcs->cpu = cpu; | 24183 | vmx->loaded_vmcs->cpu = cpu; |
24182 | @@ -2779,8 +2787,11 @@ static __init int hardware_setup(void) | 24184 | @@ -2935,8 +2943,11 @@ static __init int hardware_setup(void) |
24183 | if (!cpu_has_vmx_flexpriority()) | 24185 | if (!cpu_has_vmx_flexpriority()) |
24184 | flexpriority_enabled = 0; | 24186 | flexpriority_enabled = 0; |
24185 | 24187 | ||
@@ -24193,22 +24195,27 @@ index 0e2f2a4..4331db2 100644 | |||
24193 | 24195 | ||
24194 | if (enable_ept && !cpu_has_vmx_ept_2m_page()) | 24196 | if (enable_ept && !cpu_has_vmx_ept_2m_page()) |
24195 | kvm_disable_largepages(); | 24197 | kvm_disable_largepages(); |
24196 | @@ -2792,10 +2803,12 @@ static __init int hardware_setup(void) | 24198 | @@ -2947,13 +2958,15 @@ static __init int hardware_setup(void) |
24197 | !cpu_has_vmx_virtual_intr_delivery()) | 24199 | if (!cpu_has_vmx_apicv()) |
24198 | enable_apicv_reg_vid = 0; | 24200 | enable_apicv = 0; |
24199 | 24201 | ||
24200 | + pax_open_kernel(); | 24202 | + pax_open_kernel(); |
24201 | if (enable_apicv_reg_vid) | 24203 | if (enable_apicv) |
24202 | - kvm_x86_ops->update_cr8_intercept = NULL; | 24204 | - kvm_x86_ops->update_cr8_intercept = NULL; |
24203 | + *(void **)&kvm_x86_ops->update_cr8_intercept = NULL; | 24205 | + *(void **)&kvm_x86_ops->update_cr8_intercept = NULL; |
24204 | else | 24206 | else { |
24205 | - kvm_x86_ops->hwapic_irr_update = NULL; | 24207 | - kvm_x86_ops->hwapic_irr_update = NULL; |
24208 | - kvm_x86_ops->deliver_posted_interrupt = NULL; | ||
24209 | - kvm_x86_ops->sync_pir_to_irr = vmx_sync_pir_to_irr_dummy; | ||
24206 | + *(void **)&kvm_x86_ops->hwapic_irr_update = NULL; | 24210 | + *(void **)&kvm_x86_ops->hwapic_irr_update = NULL; |
24211 | + *(void **)&kvm_x86_ops->deliver_posted_interrupt = NULL; | ||
24212 | + *(void **)&kvm_x86_ops->sync_pir_to_irr = vmx_sync_pir_to_irr_dummy; | ||
24213 | } | ||
24207 | + pax_close_kernel(); | 24214 | + pax_close_kernel(); |
24208 | 24215 | ||
24209 | if (nested) | 24216 | if (nested) |
24210 | nested_vmx_setup_ctls_msrs(); | 24217 | nested_vmx_setup_ctls_msrs(); |
24211 | @@ -3890,7 +3903,10 @@ static void vmx_set_constant_host_state(void) | 24218 | @@ -4076,7 +4089,10 @@ static void vmx_set_constant_host_state(struct vcpu_vmx *vmx) |
24212 | 24219 | ||
24213 | vmcs_writel(HOST_CR0, read_cr0() & ~X86_CR0_TS); /* 22.2.3 */ | 24220 | vmcs_writel(HOST_CR0, read_cr0() & ~X86_CR0_TS); /* 22.2.3 */ |
24214 | vmcs_writel(HOST_CR4, read_cr4()); /* 22.2.3, 22.2.5 */ | 24221 | vmcs_writel(HOST_CR4, read_cr4()); /* 22.2.3, 22.2.5 */ |
@@ -24219,16 +24226,16 @@ index 0e2f2a4..4331db2 100644 | |||
24219 | 24226 | ||
24220 | vmcs_write16(HOST_CS_SELECTOR, __KERNEL_CS); /* 22.2.4 */ | 24227 | vmcs_write16(HOST_CS_SELECTOR, __KERNEL_CS); /* 22.2.4 */ |
24221 | #ifdef CONFIG_X86_64 | 24228 | #ifdef CONFIG_X86_64 |
24222 | @@ -3911,7 +3927,7 @@ static void vmx_set_constant_host_state(void) | 24229 | @@ -4098,7 +4114,7 @@ static void vmx_set_constant_host_state(struct vcpu_vmx *vmx) |
24223 | native_store_idt(&dt); | ||
24224 | vmcs_writel(HOST_IDTR_BASE, dt.address); /* 22.2.4 */ | 24230 | vmcs_writel(HOST_IDTR_BASE, dt.address); /* 22.2.4 */ |
24231 | vmx->host_idt_base = dt.address; | ||
24225 | 24232 | ||
24226 | - vmcs_writel(HOST_RIP, vmx_return); /* 22.2.5 */ | 24233 | - vmcs_writel(HOST_RIP, vmx_return); /* 22.2.5 */ |
24227 | + vmcs_writel(HOST_RIP, ktla_ktva(vmx_return)); /* 22.2.5 */ | 24234 | + vmcs_writel(HOST_RIP, ktla_ktva(vmx_return)); /* 22.2.5 */ |
24228 | 24235 | ||
24229 | rdmsr(MSR_IA32_SYSENTER_CS, low32, high32); | 24236 | rdmsr(MSR_IA32_SYSENTER_CS, low32, high32); |
24230 | vmcs_write32(HOST_IA32_SYSENTER_CS, low32); | 24237 | vmcs_write32(HOST_IA32_SYSENTER_CS, low32); |
24231 | @@ -6587,6 +6603,12 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu) | 24238 | @@ -7030,6 +7046,12 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu) |
24232 | "jmp 2f \n\t" | 24239 | "jmp 2f \n\t" |
24233 | "1: " __ex(ASM_VMX_VMRESUME) "\n\t" | 24240 | "1: " __ex(ASM_VMX_VMRESUME) "\n\t" |
24234 | "2: " | 24241 | "2: " |
@@ -24241,7 +24248,7 @@ index 0e2f2a4..4331db2 100644 | |||
24241 | /* Save guest registers, load host registers, keep flags */ | 24248 | /* Save guest registers, load host registers, keep flags */ |
24242 | "mov %0, %c[wordsize](%%" _ASM_SP ") \n\t" | 24249 | "mov %0, %c[wordsize](%%" _ASM_SP ") \n\t" |
24243 | "pop %0 \n\t" | 24250 | "pop %0 \n\t" |
24244 | @@ -6639,6 +6661,11 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu) | 24251 | @@ -7082,6 +7104,11 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu) |
24245 | #endif | 24252 | #endif |
24246 | [cr2]"i"(offsetof(struct vcpu_vmx, vcpu.arch.cr2)), | 24253 | [cr2]"i"(offsetof(struct vcpu_vmx, vcpu.arch.cr2)), |
24247 | [wordsize]"i"(sizeof(ulong)) | 24254 | [wordsize]"i"(sizeof(ulong)) |
@@ -24253,7 +24260,7 @@ index 0e2f2a4..4331db2 100644 | |||
24253 | : "cc", "memory" | 24260 | : "cc", "memory" |
24254 | #ifdef CONFIG_X86_64 | 24261 | #ifdef CONFIG_X86_64 |
24255 | , "rax", "rbx", "rdi", "rsi" | 24262 | , "rax", "rbx", "rdi", "rsi" |
24256 | @@ -6652,7 +6679,7 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu) | 24263 | @@ -7095,7 +7122,7 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu) |
24257 | if (debugctlmsr) | 24264 | if (debugctlmsr) |
24258 | update_debugctlmsr(debugctlmsr); | 24265 | update_debugctlmsr(debugctlmsr); |
24259 | 24266 | ||
@@ -24262,7 +24269,7 @@ index 0e2f2a4..4331db2 100644 | |||
24262 | /* | 24269 | /* |
24263 | * The sysexit path does not restore ds/es, so we must set them to | 24270 | * The sysexit path does not restore ds/es, so we must set them to |
24264 | * a reasonable value ourselves. | 24271 | * a reasonable value ourselves. |
24265 | @@ -6661,8 +6688,18 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu) | 24272 | @@ -7104,8 +7131,18 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu) |
24266 | * may be executed in interrupt context, which saves and restore segments | 24273 | * may be executed in interrupt context, which saves and restore segments |
24267 | * around it, nullifying its effect. | 24274 | * around it, nullifying its effect. |
24268 | */ | 24275 | */ |
@@ -24284,10 +24291,10 @@ index 0e2f2a4..4331db2 100644 | |||
24284 | 24291 | ||
24285 | vcpu->arch.regs_avail = ~((1 << VCPU_REGS_RIP) | (1 << VCPU_REGS_RSP) | 24292 | vcpu->arch.regs_avail = ~((1 << VCPU_REGS_RIP) | (1 << VCPU_REGS_RSP) |
24286 | diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c | 24293 | diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c |
24287 | index 8563b45..272f1fe 100644 | 24294 | index e8ba99c..ee9d7d9 100644 |
24288 | --- a/arch/x86/kvm/x86.c | 24295 | --- a/arch/x86/kvm/x86.c |
24289 | +++ b/arch/x86/kvm/x86.c | 24296 | +++ b/arch/x86/kvm/x86.c |
24290 | @@ -1685,8 +1685,8 @@ static int xen_hvm_config(struct kvm_vcpu *vcpu, u64 data) | 24297 | @@ -1725,8 +1725,8 @@ static int xen_hvm_config(struct kvm_vcpu *vcpu, u64 data) |
24291 | { | 24298 | { |
24292 | struct kvm *kvm = vcpu->kvm; | 24299 | struct kvm *kvm = vcpu->kvm; |
24293 | int lm = is_long_mode(vcpu); | 24300 | int lm = is_long_mode(vcpu); |
@@ -24298,7 +24305,7 @@ index 8563b45..272f1fe 100644 | |||
24298 | u8 blob_size = lm ? kvm->arch.xen_hvm_config.blob_size_64 | 24305 | u8 blob_size = lm ? kvm->arch.xen_hvm_config.blob_size_64 |
24299 | : kvm->arch.xen_hvm_config.blob_size_32; | 24306 | : kvm->arch.xen_hvm_config.blob_size_32; |
24300 | u32 page_num = data & ~PAGE_MASK; | 24307 | u32 page_num = data & ~PAGE_MASK; |
24301 | @@ -2566,6 +2566,8 @@ long kvm_arch_dev_ioctl(struct file *filp, | 24308 | @@ -2609,6 +2609,8 @@ long kvm_arch_dev_ioctl(struct file *filp, |
24302 | if (n < msr_list.nmsrs) | 24309 | if (n < msr_list.nmsrs) |
24303 | goto out; | 24310 | goto out; |
24304 | r = -EFAULT; | 24311 | r = -EFAULT; |
@@ -24307,16 +24314,7 @@ index 8563b45..272f1fe 100644 | |||
24307 | if (copy_to_user(user_msr_list->indices, &msrs_to_save, | 24314 | if (copy_to_user(user_msr_list->indices, &msrs_to_save, |
24308 | num_msrs_to_save * sizeof(u32))) | 24315 | num_msrs_to_save * sizeof(u32))) |
24309 | goto out; | 24316 | goto out; |
24310 | @@ -2695,7 +2697,7 @@ static int kvm_vcpu_ioctl_set_lapic(struct kvm_vcpu *vcpu, | 24317 | @@ -5297,7 +5299,7 @@ static struct notifier_block pvclock_gtod_notifier = { |
24311 | static int kvm_vcpu_ioctl_interrupt(struct kvm_vcpu *vcpu, | ||
24312 | struct kvm_interrupt *irq) | ||
24313 | { | ||
24314 | - if (irq->irq < 0 || irq->irq >= KVM_NR_INTERRUPTS) | ||
24315 | + if (irq->irq >= KVM_NR_INTERRUPTS) | ||
24316 | return -EINVAL; | ||
24317 | if (irqchip_in_kernel(vcpu->kvm)) | ||
24318 | return -ENXIO; | ||
24319 | @@ -5246,7 +5248,7 @@ static struct notifier_block pvclock_gtod_notifier = { | ||
24320 | }; | 24318 | }; |
24321 | #endif | 24319 | #endif |
24322 | 24320 | ||
@@ -24826,7 +24824,7 @@ index f5cc9eb..51fa319 100644 | |||
24826 | CFI_ENDPROC | 24824 | CFI_ENDPROC |
24827 | ENDPROC(atomic64_inc_not_zero_cx8) | 24825 | ENDPROC(atomic64_inc_not_zero_cx8) |
24828 | diff --git a/arch/x86/lib/checksum_32.S b/arch/x86/lib/checksum_32.S | 24826 | diff --git a/arch/x86/lib/checksum_32.S b/arch/x86/lib/checksum_32.S |
24829 | index 2af5df3..62b1a5a 100644 | 24827 | index e78b8ee..7e173a8 100644 |
24830 | --- a/arch/x86/lib/checksum_32.S | 24828 | --- a/arch/x86/lib/checksum_32.S |
24831 | +++ b/arch/x86/lib/checksum_32.S | 24829 | +++ b/arch/x86/lib/checksum_32.S |
24832 | @@ -29,7 +29,8 @@ | 24830 | @@ -29,7 +29,8 @@ |
@@ -25447,7 +25445,7 @@ index 25b7ae8..169fafc 100644 | |||
25447 | } | 25445 | } |
25448 | EXPORT_SYMBOL(csum_partial_copy_to_user); | 25446 | EXPORT_SYMBOL(csum_partial_copy_to_user); |
25449 | diff --git a/arch/x86/lib/getuser.S b/arch/x86/lib/getuser.S | 25447 | diff --git a/arch/x86/lib/getuser.S b/arch/x86/lib/getuser.S |
25450 | index a451235..79fb5cf 100644 | 25448 | index a451235..1daa956 100644 |
25451 | --- a/arch/x86/lib/getuser.S | 25449 | --- a/arch/x86/lib/getuser.S |
25452 | +++ b/arch/x86/lib/getuser.S | 25450 | +++ b/arch/x86/lib/getuser.S |
25453 | @@ -33,17 +33,40 @@ | 25451 | @@ -33,17 +33,40 @@ |
@@ -25573,8 +25571,14 @@ index a451235..79fb5cf 100644 | |||
25573 | ret | 25571 | ret |
25574 | #else | 25572 | #else |
25575 | add $7,%_ASM_AX | 25573 | add $7,%_ASM_AX |
25576 | @@ -102,6 +163,7 @@ ENTRY(__get_user_8) | 25574 | @@ -98,10 +159,11 @@ ENTRY(__get_user_8) |
25577 | 5: movl -3(%_ASM_AX),%ecx | 25575 | cmp TI_addr_limit(%_ASM_DX),%_ASM_AX |
25576 | jae bad_get_user_8 | ||
25577 | ASM_STAC | ||
25578 | -4: movl -7(%_ASM_AX),%edx | ||
25579 | -5: movl -3(%_ASM_AX),%ecx | ||
25580 | +4: __copyuser_seg movl -7(%_ASM_AX),%edx | ||
25581 | +5: __copyuser_seg movl -3(%_ASM_AX),%ecx | ||
25578 | xor %eax,%eax | 25582 | xor %eax,%eax |
25579 | ASM_CLAC | 25583 | ASM_CLAC |
25580 | + pax_force_retaddr | 25584 | + pax_force_retaddr |
@@ -25644,7 +25648,7 @@ index 05a95e7..326f2fa 100644 | |||
25644 | CFI_ENDPROC | 25648 | CFI_ENDPROC |
25645 | ENDPROC(__iowrite32_copy) | 25649 | ENDPROC(__iowrite32_copy) |
25646 | diff --git a/arch/x86/lib/memcpy_64.S b/arch/x86/lib/memcpy_64.S | 25650 | diff --git a/arch/x86/lib/memcpy_64.S b/arch/x86/lib/memcpy_64.S |
25647 | index 1c273be..da9cc0e 100644 | 25651 | index 56313a3..aa84a79 100644 |
25648 | --- a/arch/x86/lib/memcpy_64.S | 25652 | --- a/arch/x86/lib/memcpy_64.S |
25649 | +++ b/arch/x86/lib/memcpy_64.S | 25653 | +++ b/arch/x86/lib/memcpy_64.S |
25650 | @@ -33,6 +33,7 @@ | 25654 | @@ -33,6 +33,7 @@ |
@@ -25735,7 +25739,7 @@ index 1c273be..da9cc0e 100644 | |||
25735 | CFI_ENDPROC | 25739 | CFI_ENDPROC |
25736 | ENDPROC(memcpy) | 25740 | ENDPROC(memcpy) |
25737 | diff --git a/arch/x86/lib/memmove_64.S b/arch/x86/lib/memmove_64.S | 25741 | diff --git a/arch/x86/lib/memmove_64.S b/arch/x86/lib/memmove_64.S |
25738 | index ee16461..c39c199 100644 | 25742 | index 65268a6..c9518d1 100644 |
25739 | --- a/arch/x86/lib/memmove_64.S | 25743 | --- a/arch/x86/lib/memmove_64.S |
25740 | +++ b/arch/x86/lib/memmove_64.S | 25744 | +++ b/arch/x86/lib/memmove_64.S |
25741 | @@ -61,13 +61,13 @@ ENTRY(memmove) | 25745 | @@ -61,13 +61,13 @@ ENTRY(memmove) |
@@ -26552,7 +26556,7 @@ index a63efd6..ccecad8 100644 | |||
26552 | ret | 26556 | ret |
26553 | CFI_ENDPROC | 26557 | CFI_ENDPROC |
26554 | diff --git a/arch/x86/lib/usercopy_32.c b/arch/x86/lib/usercopy_32.c | 26558 | diff --git a/arch/x86/lib/usercopy_32.c b/arch/x86/lib/usercopy_32.c |
26555 | index f0312d7..9c39d63 100644 | 26559 | index 3eb18ac..6890bc3 100644 |
26556 | --- a/arch/x86/lib/usercopy_32.c | 26560 | --- a/arch/x86/lib/usercopy_32.c |
26557 | +++ b/arch/x86/lib/usercopy_32.c | 26561 | +++ b/arch/x86/lib/usercopy_32.c |
26558 | @@ -42,11 +42,13 @@ do { \ | 26562 | @@ -42,11 +42,13 @@ do { \ |
@@ -27070,7 +27074,7 @@ index f0312d7..9c39d63 100644 | |||
27070 | clac(); | 27074 | clac(); |
27071 | return n; | 27075 | return n; |
27072 | } | 27076 | } |
27073 | @@ -632,66 +743,51 @@ unsigned long __copy_from_user_ll_nocache_nozero(void *to, const void __user *fr | 27077 | @@ -632,60 +743,38 @@ unsigned long __copy_from_user_ll_nocache_nozero(void *to, const void __user *fr |
27074 | if (n > 64 && cpu_has_xmm2) | 27078 | if (n > 64 && cpu_has_xmm2) |
27075 | n = __copy_user_intel_nocache(to, from, n); | 27079 | n = __copy_user_intel_nocache(to, from, n); |
27076 | else | 27080 | else |
@@ -27100,15 +27104,28 @@ index f0312d7..9c39d63 100644 | |||
27100 | - */ | 27104 | - */ |
27101 | -unsigned long | 27105 | -unsigned long |
27102 | -copy_to_user(void __user *to, const void *from, unsigned long n) | 27106 | -copy_to_user(void __user *to, const void *from, unsigned long n) |
27103 | +void copy_from_user_overflow(void) | 27107 | +#ifdef CONFIG_PAX_MEMORY_UDEREF |
27108 | +void __set_fs(mm_segment_t x) | ||
27104 | { | 27109 | { |
27105 | - if (access_ok(VERIFY_WRITE, to, n)) | 27110 | - if (access_ok(VERIFY_WRITE, to, n)) |
27106 | - n = __copy_to_user(to, from, n); | 27111 | - n = __copy_to_user(to, from, n); |
27107 | - return n; | 27112 | - return n; |
27108 | + WARN(1, "Buffer overflow detected!\n"); | 27113 | + switch (x.seg) { |
27114 | + case 0: | ||
27115 | + loadsegment(gs, 0); | ||
27116 | + break; | ||
27117 | + case TASK_SIZE_MAX: | ||
27118 | + loadsegment(gs, __USER_DS); | ||
27119 | + break; | ||
27120 | + case -1UL: | ||
27121 | + loadsegment(gs, __KERNEL_DS); | ||
27122 | + break; | ||
27123 | + default: | ||
27124 | + BUG(); | ||
27125 | + } | ||
27109 | } | 27126 | } |
27110 | -EXPORT_SYMBOL(copy_to_user); | 27127 | -EXPORT_SYMBOL(copy_to_user); |
27111 | +EXPORT_SYMBOL(copy_from_user_overflow); | 27128 | +EXPORT_SYMBOL(__set_fs); |
27112 | 27129 | ||
27113 | -/** | 27130 | -/** |
27114 | - * copy_from_user: - Copy a block of data from user space. | 27131 | - * copy_from_user: - Copy a block of data from user space. |
@@ -27128,50 +27145,21 @@ index f0312d7..9c39d63 100644 | |||
27128 | - */ | 27145 | - */ |
27129 | -unsigned long | 27146 | -unsigned long |
27130 | -_copy_from_user(void *to, const void __user *from, unsigned long n) | 27147 | -_copy_from_user(void *to, const void __user *from, unsigned long n) |
27131 | +void copy_to_user_overflow(void) | 27148 | +void set_fs(mm_segment_t x) |
27132 | { | 27149 | { |
27133 | - if (access_ok(VERIFY_READ, from, n)) | 27150 | - if (access_ok(VERIFY_READ, from, n)) |
27134 | - n = __copy_from_user(to, from, n); | 27151 | - n = __copy_from_user(to, from, n); |
27135 | - else | 27152 | - else |
27136 | - memset(to, 0, n); | 27153 | - memset(to, 0, n); |
27137 | - return n; | 27154 | - return n; |
27138 | + WARN(1, "Buffer overflow detected!\n"); | ||
27139 | } | ||
27140 | -EXPORT_SYMBOL(_copy_from_user); | ||
27141 | +EXPORT_SYMBOL(copy_to_user_overflow); | ||
27142 | |||
27143 | -void copy_from_user_overflow(void) | ||
27144 | +#ifdef CONFIG_PAX_MEMORY_UDEREF | ||
27145 | +void __set_fs(mm_segment_t x) | ||
27146 | { | ||
27147 | - WARN(1, "Buffer overflow detected!\n"); | ||
27148 | + switch (x.seg) { | ||
27149 | + case 0: | ||
27150 | + loadsegment(gs, 0); | ||
27151 | + break; | ||
27152 | + case TASK_SIZE_MAX: | ||
27153 | + loadsegment(gs, __USER_DS); | ||
27154 | + break; | ||
27155 | + case -1UL: | ||
27156 | + loadsegment(gs, __KERNEL_DS); | ||
27157 | + break; | ||
27158 | + default: | ||
27159 | + BUG(); | ||
27160 | + } | ||
27161 | + return; | ||
27162 | } | ||
27163 | -EXPORT_SYMBOL(copy_from_user_overflow); | ||
27164 | +EXPORT_SYMBOL(__set_fs); | ||
27165 | + | ||
27166 | +void set_fs(mm_segment_t x) | ||
27167 | +{ | ||
27168 | + current_thread_info()->addr_limit = x; | 27155 | + current_thread_info()->addr_limit = x; |
27169 | + __set_fs(x); | 27156 | + __set_fs(x); |
27170 | +} | 27157 | } |
27158 | -EXPORT_SYMBOL(_copy_from_user); | ||
27171 | +EXPORT_SYMBOL(set_fs); | 27159 | +EXPORT_SYMBOL(set_fs); |
27172 | +#endif | 27160 | +#endif |
27173 | diff --git a/arch/x86/lib/usercopy_64.c b/arch/x86/lib/usercopy_64.c | 27161 | diff --git a/arch/x86/lib/usercopy_64.c b/arch/x86/lib/usercopy_64.c |
27174 | index 906fea3..ee8a097 100644 | 27162 | index 906fea3..5646695 100644 |
27175 | --- a/arch/x86/lib/usercopy_64.c | 27163 | --- a/arch/x86/lib/usercopy_64.c |
27176 | +++ b/arch/x86/lib/usercopy_64.c | 27164 | +++ b/arch/x86/lib/usercopy_64.c |
27177 | @@ -39,7 +39,7 @@ unsigned long __clear_user(void __user *addr, unsigned long size) | 27165 | @@ -39,7 +39,7 @@ unsigned long __clear_user(void __user *addr, unsigned long size) |
@@ -27209,22 +27197,6 @@ index 906fea3..ee8a097 100644 | |||
27209 | { | 27197 | { |
27210 | char c; | 27198 | char c; |
27211 | unsigned zero_len; | 27199 | unsigned zero_len; |
27212 | @@ -87,3 +86,15 @@ copy_user_handle_tail(char *to, char *from, unsigned len, unsigned zerorest) | ||
27213 | clac(); | ||
27214 | return len; | ||
27215 | } | ||
27216 | + | ||
27217 | +void copy_from_user_overflow(void) | ||
27218 | +{ | ||
27219 | + WARN(1, "Buffer overflow detected!\n"); | ||
27220 | +} | ||
27221 | +EXPORT_SYMBOL(copy_from_user_overflow); | ||
27222 | + | ||
27223 | +void copy_to_user_overflow(void) | ||
27224 | +{ | ||
27225 | + WARN(1, "Buffer overflow detected!\n"); | ||
27226 | +} | ||
27227 | +EXPORT_SYMBOL(copy_to_user_overflow); | ||
27228 | diff --git a/arch/x86/mm/extable.c b/arch/x86/mm/extable.c | 27200 | diff --git a/arch/x86/mm/extable.c b/arch/x86/mm/extable.c |
27229 | index 903ec1e..c4166b2 100644 | 27201 | index 903ec1e..c4166b2 100644 |
27230 | --- a/arch/x86/mm/extable.c | 27202 | --- a/arch/x86/mm/extable.c |
@@ -27280,13 +27252,13 @@ index 903ec1e..c4166b2 100644 | |||
27280 | } | 27252 | } |
27281 | 27253 | ||
27282 | diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c | 27254 | diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c |
27283 | index 0e88336..2bb9777 100644 | 27255 | index 654be4a..d36985f 100644 |
27284 | --- a/arch/x86/mm/fault.c | 27256 | --- a/arch/x86/mm/fault.c |
27285 | +++ b/arch/x86/mm/fault.c | 27257 | +++ b/arch/x86/mm/fault.c |
27286 | @@ -13,12 +13,19 @@ | 27258 | @@ -14,11 +14,18 @@ |
27287 | #include <linux/perf_event.h> /* perf_sw_event */ | ||
27288 | #include <linux/hugetlb.h> /* hstate_index_to_shift */ | 27259 | #include <linux/hugetlb.h> /* hstate_index_to_shift */ |
27289 | #include <linux/prefetch.h> /* prefetchw */ | 27260 | #include <linux/prefetch.h> /* prefetchw */ |
27261 | #include <linux/context_tracking.h> /* exception_enter(), ... */ | ||
27290 | +#include <linux/unistd.h> | 27262 | +#include <linux/unistd.h> |
27291 | +#include <linux/compiler.h> | 27263 | +#include <linux/compiler.h> |
27292 | 27264 | ||
@@ -27294,7 +27266,6 @@ index 0e88336..2bb9777 100644 | |||
27294 | #include <asm/pgalloc.h> /* pgd_*(), ... */ | 27266 | #include <asm/pgalloc.h> /* pgd_*(), ... */ |
27295 | #include <asm/kmemcheck.h> /* kmemcheck_*(), ... */ | 27267 | #include <asm/kmemcheck.h> /* kmemcheck_*(), ... */ |
27296 | #include <asm/fixmap.h> /* VSYSCALL_START */ | 27268 | #include <asm/fixmap.h> /* VSYSCALL_START */ |
27297 | #include <asm/context_tracking.h> /* exception_enter(), ... */ | ||
27298 | +#include <asm/tlbflush.h> | 27269 | +#include <asm/tlbflush.h> |
27299 | + | 27270 | + |
27300 | +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF) | 27271 | +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF) |
@@ -27636,7 +27607,7 @@ index 0e88336..2bb9777 100644 | |||
27636 | return false; | 27607 | return false; |
27637 | 27608 | ||
27638 | return true; | 27609 | return true; |
27639 | @@ -1008,19 +1203,34 @@ __do_page_fault(struct pt_regs *regs, unsigned long error_code) | 27610 | @@ -1008,18 +1203,33 @@ __do_page_fault(struct pt_regs *regs, unsigned long error_code) |
27640 | { | 27611 | { |
27641 | struct vm_area_struct *vma; | 27612 | struct vm_area_struct *vma; |
27642 | struct task_struct *tsk; | 27613 | struct task_struct *tsk; |
@@ -27647,7 +27618,11 @@ index 0e88336..2bb9777 100644 | |||
27647 | unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE | | 27618 | unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE | |
27648 | (write ? FAULT_FLAG_WRITE : 0); | 27619 | (write ? FAULT_FLAG_WRITE : 0); |
27649 | 27620 | ||
27650 | + /* Get the faulting address: */ | 27621 | - tsk = current; |
27622 | - mm = tsk->mm; | ||
27623 | - | ||
27624 | /* Get the faulting address: */ | ||
27625 | - address = read_cr2(); | ||
27651 | + unsigned long address = read_cr2(); | 27626 | + unsigned long address = read_cr2(); |
27652 | + | 27627 | + |
27653 | +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF) | 27628 | +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF) |
@@ -27666,15 +27641,11 @@ index 0e88336..2bb9777 100644 | |||
27666 | + } | 27641 | + } |
27667 | +#endif | 27642 | +#endif |
27668 | + | 27643 | + |
27669 | tsk = current; | 27644 | + tsk = current; |
27670 | mm = tsk->mm; | 27645 | + mm = tsk->mm; |
27671 | 27646 | ||
27672 | - /* Get the faulting address: */ | ||
27673 | - address = read_cr2(); | ||
27674 | - | ||
27675 | /* | 27647 | /* |
27676 | * Detect and handle instructions that would cause a page fault for | 27648 | * Detect and handle instructions that would cause a page fault for |
27677 | * both a tracked kernel page and a userspace page. | ||
27678 | @@ -1080,7 +1290,7 @@ __do_page_fault(struct pt_regs *regs, unsigned long error_code) | 27649 | @@ -1080,7 +1290,7 @@ __do_page_fault(struct pt_regs *regs, unsigned long error_code) |
27679 | * User-mode registers count as a user access even for any | 27650 | * User-mode registers count as a user access even for any |
27680 | * potential system fault or CPU buglet: | 27651 | * potential system fault or CPU buglet: |
@@ -27732,9 +27703,9 @@ index 0e88336..2bb9777 100644 | |||
27732 | if (unlikely(expand_stack(vma, address))) { | 27703 | if (unlikely(expand_stack(vma, address))) { |
27733 | bad_area(regs, error_code, address); | 27704 | bad_area(regs, error_code, address); |
27734 | return; | 27705 | return; |
27735 | @@ -1228,3 +1449,292 @@ do_page_fault(struct pt_regs *regs, unsigned long error_code) | 27706 | @@ -1230,3 +1451,292 @@ do_page_fault(struct pt_regs *regs, unsigned long error_code) |
27736 | __do_page_fault(regs, error_code); | 27707 | __do_page_fault(regs, error_code); |
27737 | exception_exit(regs); | 27708 | exception_exit(prev_state); |
27738 | } | 27709 | } |
27739 | + | 27710 | + |
27740 | +#if defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC) | 27711 | +#if defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC) |
@@ -28039,7 +28010,7 @@ index dd74e46..7d26398 100644 | |||
28039 | return 0; | 28010 | return 0; |
28040 | 28011 | ||
28041 | diff --git a/arch/x86/mm/highmem_32.c b/arch/x86/mm/highmem_32.c | 28012 | diff --git a/arch/x86/mm/highmem_32.c b/arch/x86/mm/highmem_32.c |
28042 | index 6f31ee5..8ee4164 100644 | 28013 | index 252b8f5..4dcfdc1 100644 |
28043 | --- a/arch/x86/mm/highmem_32.c | 28014 | --- a/arch/x86/mm/highmem_32.c |
28044 | +++ b/arch/x86/mm/highmem_32.c | 28015 | +++ b/arch/x86/mm/highmem_32.c |
28045 | @@ -44,7 +44,11 @@ void *kmap_atomic_prot(struct page *page, pgprot_t prot) | 28016 | @@ -44,7 +44,11 @@ void *kmap_atomic_prot(struct page *page, pgprot_t prot) |
@@ -28163,7 +28134,7 @@ index ae1aa71..d9bea75 100644 | |||
28163 | 28134 | ||
28164 | #endif /*HAVE_ARCH_HUGETLB_UNMAPPED_AREA*/ | 28135 | #endif /*HAVE_ARCH_HUGETLB_UNMAPPED_AREA*/ |
28165 | diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c | 28136 | diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c |
28166 | index 0c13708..ca05f23 100644 | 28137 | index 1f34e92..d252637 100644 |
28167 | --- a/arch/x86/mm/init.c | 28138 | --- a/arch/x86/mm/init.c |
28168 | +++ b/arch/x86/mm/init.c | 28139 | +++ b/arch/x86/mm/init.c |
28169 | @@ -4,6 +4,7 @@ | 28140 | @@ -4,6 +4,7 @@ |
@@ -28183,7 +28154,7 @@ index 0c13708..ca05f23 100644 | |||
28183 | 28154 | ||
28184 | #include "mm_internal.h" | 28155 | #include "mm_internal.h" |
28185 | 28156 | ||
28186 | @@ -448,7 +451,15 @@ void __init init_mem_mapping(void) | 28157 | @@ -465,7 +468,15 @@ void __init init_mem_mapping(void) |
28187 | early_ioremap_page_table_range_init(); | 28158 | early_ioremap_page_table_range_init(); |
28188 | #endif | 28159 | #endif |
28189 | 28160 | ||
@@ -28199,7 +28170,7 @@ index 0c13708..ca05f23 100644 | |||
28199 | __flush_tlb_all(); | 28170 | __flush_tlb_all(); |
28200 | 28171 | ||
28201 | early_memtest(0, max_pfn_mapped << PAGE_SHIFT); | 28172 | early_memtest(0, max_pfn_mapped << PAGE_SHIFT); |
28202 | @@ -464,10 +475,40 @@ void __init init_mem_mapping(void) | 28173 | @@ -481,10 +492,40 @@ void __init init_mem_mapping(void) |
28203 | * Access has to be given to non-kernel-ram areas as well, these contain the PCI | 28174 | * Access has to be given to non-kernel-ram areas as well, these contain the PCI |
28204 | * mmio resources as well as potential bios/acpi data regions. | 28175 | * mmio resources as well as potential bios/acpi data regions. |
28205 | */ | 28176 | */ |
@@ -28215,10 +28186,10 @@ index 0c13708..ca05f23 100644 | |||
28215 | +#ifdef CONFIG_GRKERNSEC_KMEM | 28186 | +#ifdef CONFIG_GRKERNSEC_KMEM |
28216 | + /* allow BDA */ | 28187 | + /* allow BDA */ |
28217 | + if (!pagenr) | 28188 | + if (!pagenr) |
28218 | + return 1; | 28189 | return 1; |
28219 | + /* allow EBDA */ | 28190 | + /* allow EBDA */ |
28220 | + if (pagenr >= ebda_start && pagenr < ebda_end) | 28191 | + if (pagenr >= ebda_start && pagenr < ebda_end) |
28221 | return 1; | 28192 | + return 1; |
28222 | + /* if tboot is in use, allow access to its hardcoded serial log range */ | 28193 | + /* if tboot is in use, allow access to its hardcoded serial log range */ |
28223 | + if (tboot_enabled() && ((0x60000 >> PAGE_SHIFT) <= pagenr) && (pagenr < (0x68000 >> PAGE_SHIFT))) | 28194 | + if (tboot_enabled() && ((0x60000 >> PAGE_SHIFT) <= pagenr) && (pagenr < (0x68000 >> PAGE_SHIFT))) |
28224 | + return 1; | 28195 | + return 1; |
@@ -28241,7 +28212,7 @@ index 0c13708..ca05f23 100644 | |||
28241 | if (iomem_is_exclusive(pagenr << PAGE_SHIFT)) | 28212 | if (iomem_is_exclusive(pagenr << PAGE_SHIFT)) |
28242 | return 0; | 28213 | return 0; |
28243 | if (!page_is_ram(pagenr)) | 28214 | if (!page_is_ram(pagenr)) |
28244 | @@ -524,8 +565,117 @@ void free_init_pages(char *what, unsigned long begin, unsigned long end) | 28215 | @@ -538,8 +579,117 @@ void free_init_pages(char *what, unsigned long begin, unsigned long end) |
28245 | #endif | 28216 | #endif |
28246 | } | 28217 | } |
28247 | 28218 | ||
@@ -28360,7 +28331,7 @@ index 0c13708..ca05f23 100644 | |||
28360 | (unsigned long)(&__init_begin), | 28331 | (unsigned long)(&__init_begin), |
28361 | (unsigned long)(&__init_end)); | 28332 | (unsigned long)(&__init_end)); |
28362 | diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c | 28333 | diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c |
28363 | index 2d19001..e549d98 100644 | 28334 | index 3ac7e31..89611b7 100644 |
28364 | --- a/arch/x86/mm/init_32.c | 28335 | --- a/arch/x86/mm/init_32.c |
28365 | +++ b/arch/x86/mm/init_32.c | 28336 | +++ b/arch/x86/mm/init_32.c |
28366 | @@ -62,33 +62,6 @@ static noinline int do_test_wp_bit(void); | 28337 | @@ -62,33 +62,6 @@ static noinline int do_test_wp_bit(void); |
@@ -28550,7 +28521,7 @@ index 2d19001..e549d98 100644 | |||
28550 | prot = PAGE_KERNEL_EXEC; | 28521 | prot = PAGE_KERNEL_EXEC; |
28551 | 28522 | ||
28552 | pages_4k++; | 28523 | pages_4k++; |
28553 | @@ -482,7 +486,7 @@ void __init native_pagetable_init(void) | 28524 | @@ -474,7 +478,7 @@ void __init native_pagetable_init(void) |
28554 | 28525 | ||
28555 | pud = pud_offset(pgd, va); | 28526 | pud = pud_offset(pgd, va); |
28556 | pmd = pmd_offset(pud, va); | 28527 | pmd = pmd_offset(pud, va); |
@@ -28559,7 +28530,7 @@ index 2d19001..e549d98 100644 | |||
28559 | break; | 28530 | break; |
28560 | 28531 | ||
28561 | /* should not be large page here */ | 28532 | /* should not be large page here */ |
28562 | @@ -540,12 +544,10 @@ void __init early_ioremap_page_table_range_init(void) | 28533 | @@ -532,12 +536,10 @@ void __init early_ioremap_page_table_range_init(void) |
28563 | 28534 | ||
28564 | static void __init pagetable_init(void) | 28535 | static void __init pagetable_init(void) |
28565 | { | 28536 | { |
@@ -28574,7 +28545,7 @@ index 2d19001..e549d98 100644 | |||
28574 | EXPORT_SYMBOL_GPL(__supported_pte_mask); | 28545 | EXPORT_SYMBOL_GPL(__supported_pte_mask); |
28575 | 28546 | ||
28576 | /* user-defined highmem size */ | 28547 | /* user-defined highmem size */ |
28577 | @@ -780,7 +782,7 @@ void __init mem_init(void) | 28548 | @@ -772,7 +774,7 @@ void __init mem_init(void) |
28578 | after_bootmem = 1; | 28549 | after_bootmem = 1; |
28579 | 28550 | ||
28580 | codesize = (unsigned long) &_etext - (unsigned long) &_text; | 28551 | codesize = (unsigned long) &_etext - (unsigned long) &_text; |
@@ -28583,7 +28554,7 @@ index 2d19001..e549d98 100644 | |||
28583 | initsize = (unsigned long) &__init_end - (unsigned long) &__init_begin; | 28554 | initsize = (unsigned long) &__init_end - (unsigned long) &__init_begin; |
28584 | 28555 | ||
28585 | printk(KERN_INFO "Memory: %luk/%luk available (%dk kernel code, " | 28556 | printk(KERN_INFO "Memory: %luk/%luk available (%dk kernel code, " |
28586 | @@ -821,10 +823,10 @@ void __init mem_init(void) | 28557 | @@ -813,10 +815,10 @@ void __init mem_init(void) |
28587 | ((unsigned long)&__init_end - | 28558 | ((unsigned long)&__init_end - |
28588 | (unsigned long)&__init_begin) >> 10, | 28559 | (unsigned long)&__init_begin) >> 10, |
28589 | 28560 | ||
@@ -28597,7 +28568,7 @@ index 2d19001..e549d98 100644 | |||
28597 | ((unsigned long)&_etext - (unsigned long)&_text) >> 10); | 28568 | ((unsigned long)&_etext - (unsigned long)&_text) >> 10); |
28598 | 28569 | ||
28599 | /* | 28570 | /* |
28600 | @@ -914,6 +916,7 @@ void set_kernel_text_rw(void) | 28571 | @@ -906,6 +908,7 @@ void set_kernel_text_rw(void) |
28601 | if (!kernel_set_to_readonly) | 28572 | if (!kernel_set_to_readonly) |
28602 | return; | 28573 | return; |
28603 | 28574 | ||
@@ -28605,7 +28576,7 @@ index 2d19001..e549d98 100644 | |||
28605 | pr_debug("Set kernel text: %lx - %lx for read write\n", | 28576 | pr_debug("Set kernel text: %lx - %lx for read write\n", |
28606 | start, start+size); | 28577 | start, start+size); |
28607 | 28578 | ||
28608 | @@ -928,6 +931,7 @@ void set_kernel_text_ro(void) | 28579 | @@ -920,6 +923,7 @@ void set_kernel_text_ro(void) |
28609 | if (!kernel_set_to_readonly) | 28580 | if (!kernel_set_to_readonly) |
28610 | return; | 28581 | return; |
28611 | 28582 | ||
@@ -28613,7 +28584,7 @@ index 2d19001..e549d98 100644 | |||
28613 | pr_debug("Set kernel text: %lx - %lx for read only\n", | 28584 | pr_debug("Set kernel text: %lx - %lx for read only\n", |
28614 | start, start+size); | 28585 | start, start+size); |
28615 | 28586 | ||
28616 | @@ -956,6 +960,7 @@ void mark_rodata_ro(void) | 28587 | @@ -948,6 +952,7 @@ void mark_rodata_ro(void) |
28617 | unsigned long start = PFN_ALIGN(_text); | 28588 | unsigned long start = PFN_ALIGN(_text); |
28618 | unsigned long size = PFN_ALIGN(_etext) - start; | 28589 | unsigned long size = PFN_ALIGN(_etext) - start; |
28619 | 28590 | ||
@@ -28622,10 +28593,10 @@ index 2d19001..e549d98 100644 | |||
28622 | printk(KERN_INFO "Write protecting the kernel text: %luk\n", | 28593 | printk(KERN_INFO "Write protecting the kernel text: %luk\n", |
28623 | size >> 10); | 28594 | size >> 10); |
28624 | diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c | 28595 | diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c |
28625 | index 474e28f..f016b6e 100644 | 28596 | index bb00c46..f31d2f0 100644 |
28626 | --- a/arch/x86/mm/init_64.c | 28597 | --- a/arch/x86/mm/init_64.c |
28627 | +++ b/arch/x86/mm/init_64.c | 28598 | +++ b/arch/x86/mm/init_64.c |
28628 | @@ -150,7 +150,7 @@ early_param("gbpages", parse_direct_gbpages_on); | 28599 | @@ -151,7 +151,7 @@ early_param("gbpages", parse_direct_gbpages_on); |
28629 | * around without checking the pgd every time. | 28600 | * around without checking the pgd every time. |
28630 | */ | 28601 | */ |
28631 | 28602 | ||
@@ -28634,7 +28605,7 @@ index 474e28f..f016b6e 100644 | |||
28634 | EXPORT_SYMBOL_GPL(__supported_pte_mask); | 28605 | EXPORT_SYMBOL_GPL(__supported_pte_mask); |
28635 | 28606 | ||
28636 | int force_personality32; | 28607 | int force_personality32; |
28637 | @@ -183,12 +183,22 @@ void sync_global_pgds(unsigned long start, unsigned long end) | 28608 | @@ -184,12 +184,22 @@ void sync_global_pgds(unsigned long start, unsigned long end) |
28638 | 28609 | ||
28639 | for (address = start; address <= end; address += PGDIR_SIZE) { | 28610 | for (address = start; address <= end; address += PGDIR_SIZE) { |
28640 | const pgd_t *pgd_ref = pgd_offset_k(address); | 28611 | const pgd_t *pgd_ref = pgd_offset_k(address); |
@@ -28657,7 +28628,7 @@ index 474e28f..f016b6e 100644 | |||
28657 | list_for_each_entry(page, &pgd_list, lru) { | 28628 | list_for_each_entry(page, &pgd_list, lru) { |
28658 | pgd_t *pgd; | 28629 | pgd_t *pgd; |
28659 | spinlock_t *pgt_lock; | 28630 | spinlock_t *pgt_lock; |
28660 | @@ -197,6 +207,7 @@ void sync_global_pgds(unsigned long start, unsigned long end) | 28631 | @@ -198,6 +208,7 @@ void sync_global_pgds(unsigned long start, unsigned long end) |
28661 | /* the pgt_lock only for Xen */ | 28632 | /* the pgt_lock only for Xen */ |
28662 | pgt_lock = &pgd_page_get_mm(page)->page_table_lock; | 28633 | pgt_lock = &pgd_page_get_mm(page)->page_table_lock; |
28663 | spin_lock(pgt_lock); | 28634 | spin_lock(pgt_lock); |
@@ -28665,7 +28636,7 @@ index 474e28f..f016b6e 100644 | |||
28665 | 28636 | ||
28666 | if (pgd_none(*pgd)) | 28637 | if (pgd_none(*pgd)) |
28667 | set_pgd(pgd, *pgd_ref); | 28638 | set_pgd(pgd, *pgd_ref); |
28668 | @@ -204,7 +215,10 @@ void sync_global_pgds(unsigned long start, unsigned long end) | 28639 | @@ -205,7 +216,10 @@ void sync_global_pgds(unsigned long start, unsigned long end) |
28669 | BUG_ON(pgd_page_vaddr(*pgd) | 28640 | BUG_ON(pgd_page_vaddr(*pgd) |
28670 | != pgd_page_vaddr(*pgd_ref)); | 28641 | != pgd_page_vaddr(*pgd_ref)); |
28671 | 28642 | ||
@@ -28676,7 +28647,7 @@ index 474e28f..f016b6e 100644 | |||
28676 | } | 28647 | } |
28677 | spin_unlock(&pgd_lock); | 28648 | spin_unlock(&pgd_lock); |
28678 | } | 28649 | } |
28679 | @@ -237,7 +251,7 @@ static pud_t *fill_pud(pgd_t *pgd, unsigned long vaddr) | 28650 | @@ -238,7 +252,7 @@ static pud_t *fill_pud(pgd_t *pgd, unsigned long vaddr) |
28680 | { | 28651 | { |
28681 | if (pgd_none(*pgd)) { | 28652 | if (pgd_none(*pgd)) { |
28682 | pud_t *pud = (pud_t *)spp_getpage(); | 28653 | pud_t *pud = (pud_t *)spp_getpage(); |
@@ -28685,7 +28656,7 @@ index 474e28f..f016b6e 100644 | |||
28685 | if (pud != pud_offset(pgd, 0)) | 28656 | if (pud != pud_offset(pgd, 0)) |
28686 | printk(KERN_ERR "PAGETABLE BUG #00! %p <-> %p\n", | 28657 | printk(KERN_ERR "PAGETABLE BUG #00! %p <-> %p\n", |
28687 | pud, pud_offset(pgd, 0)); | 28658 | pud, pud_offset(pgd, 0)); |
28688 | @@ -249,7 +263,7 @@ static pmd_t *fill_pmd(pud_t *pud, unsigned long vaddr) | 28659 | @@ -250,7 +264,7 @@ static pmd_t *fill_pmd(pud_t *pud, unsigned long vaddr) |
28689 | { | 28660 | { |
28690 | if (pud_none(*pud)) { | 28661 | if (pud_none(*pud)) { |
28691 | pmd_t *pmd = (pmd_t *) spp_getpage(); | 28662 | pmd_t *pmd = (pmd_t *) spp_getpage(); |
@@ -28694,7 +28665,7 @@ index 474e28f..f016b6e 100644 | |||
28694 | if (pmd != pmd_offset(pud, 0)) | 28665 | if (pmd != pmd_offset(pud, 0)) |
28695 | printk(KERN_ERR "PAGETABLE BUG #01! %p <-> %p\n", | 28666 | printk(KERN_ERR "PAGETABLE BUG #01! %p <-> %p\n", |
28696 | pmd, pmd_offset(pud, 0)); | 28667 | pmd, pmd_offset(pud, 0)); |
28697 | @@ -278,7 +292,9 @@ void set_pte_vaddr_pud(pud_t *pud_page, unsigned long vaddr, pte_t new_pte) | 28668 | @@ -279,7 +293,9 @@ void set_pte_vaddr_pud(pud_t *pud_page, unsigned long vaddr, pte_t new_pte) |
28698 | pmd = fill_pmd(pud, vaddr); | 28669 | pmd = fill_pmd(pud, vaddr); |
28699 | pte = fill_pte(pmd, vaddr); | 28670 | pte = fill_pte(pmd, vaddr); |
28700 | 28671 | ||
@@ -28704,7 +28675,7 @@ index 474e28f..f016b6e 100644 | |||
28704 | 28675 | ||
28705 | /* | 28676 | /* |
28706 | * It's enough to flush this one mapping. | 28677 | * It's enough to flush this one mapping. |
28707 | @@ -337,14 +353,12 @@ static void __init __init_extra_mapping(unsigned long phys, unsigned long size, | 28678 | @@ -338,14 +354,12 @@ static void __init __init_extra_mapping(unsigned long phys, unsigned long size, |
28708 | pgd = pgd_offset_k((unsigned long)__va(phys)); | 28679 | pgd = pgd_offset_k((unsigned long)__va(phys)); |
28709 | if (pgd_none(*pgd)) { | 28680 | if (pgd_none(*pgd)) { |
28710 | pud = (pud_t *) spp_getpage(); | 28681 | pud = (pud_t *) spp_getpage(); |
@@ -28721,7 +28692,7 @@ index 474e28f..f016b6e 100644 | |||
28721 | } | 28692 | } |
28722 | pmd = pmd_offset(pud, phys); | 28693 | pmd = pmd_offset(pud, phys); |
28723 | BUG_ON(!pmd_none(*pmd)); | 28694 | BUG_ON(!pmd_none(*pmd)); |
28724 | @@ -585,7 +599,7 @@ phys_pud_init(pud_t *pud_page, unsigned long addr, unsigned long end, | 28695 | @@ -586,7 +600,7 @@ phys_pud_init(pud_t *pud_page, unsigned long addr, unsigned long end, |
28725 | prot); | 28696 | prot); |
28726 | 28697 | ||
28727 | spin_lock(&init_mm.page_table_lock); | 28698 | spin_lock(&init_mm.page_table_lock); |
@@ -28730,7 +28701,7 @@ index 474e28f..f016b6e 100644 | |||
28730 | spin_unlock(&init_mm.page_table_lock); | 28701 | spin_unlock(&init_mm.page_table_lock); |
28731 | } | 28702 | } |
28732 | __flush_tlb_all(); | 28703 | __flush_tlb_all(); |
28733 | @@ -626,7 +640,7 @@ kernel_physical_mapping_init(unsigned long start, | 28704 | @@ -627,7 +641,7 @@ kernel_physical_mapping_init(unsigned long start, |
28734 | page_size_mask); | 28705 | page_size_mask); |
28735 | 28706 | ||
28736 | spin_lock(&init_mm.page_table_lock); | 28707 | spin_lock(&init_mm.page_table_lock); |
@@ -28739,7 +28710,7 @@ index 474e28f..f016b6e 100644 | |||
28739 | spin_unlock(&init_mm.page_table_lock); | 28710 | spin_unlock(&init_mm.page_table_lock); |
28740 | pgd_changed = true; | 28711 | pgd_changed = true; |
28741 | } | 28712 | } |
28742 | @@ -1224,8 +1238,8 @@ int kern_addr_valid(unsigned long addr) | 28713 | @@ -1221,8 +1235,8 @@ int kern_addr_valid(unsigned long addr) |
28743 | static struct vm_area_struct gate_vma = { | 28714 | static struct vm_area_struct gate_vma = { |
28744 | .vm_start = VSYSCALL_START, | 28715 | .vm_start = VSYSCALL_START, |
28745 | .vm_end = VSYSCALL_START + (VSYSCALL_MAPPED_PAGES * PAGE_SIZE), | 28716 | .vm_end = VSYSCALL_START + (VSYSCALL_MAPPED_PAGES * PAGE_SIZE), |
@@ -28750,7 +28721,7 @@ index 474e28f..f016b6e 100644 | |||
28750 | }; | 28721 | }; |
28751 | 28722 | ||
28752 | struct vm_area_struct *get_gate_vma(struct mm_struct *mm) | 28723 | struct vm_area_struct *get_gate_vma(struct mm_struct *mm) |
28753 | @@ -1259,7 +1273,7 @@ int in_gate_area_no_mm(unsigned long addr) | 28724 | @@ -1256,7 +1270,7 @@ int in_gate_area_no_mm(unsigned long addr) |
28754 | 28725 | ||
28755 | const char *arch_vma_name(struct vm_area_struct *vma) | 28726 | const char *arch_vma_name(struct vm_area_struct *vma) |
28756 | { | 28727 | { |
@@ -28760,7 +28731,7 @@ index 474e28f..f016b6e 100644 | |||
28760 | if (vma == &gate_vma) | 28731 | if (vma == &gate_vma) |
28761 | return "[vsyscall]"; | 28732 | return "[vsyscall]"; |
28762 | diff --git a/arch/x86/mm/iomap_32.c b/arch/x86/mm/iomap_32.c | 28733 | diff --git a/arch/x86/mm/iomap_32.c b/arch/x86/mm/iomap_32.c |
28763 | index 7b179b4..6bd1777 100644 | 28734 | index 7b179b4..6bd17777 100644 |
28764 | --- a/arch/x86/mm/iomap_32.c | 28735 | --- a/arch/x86/mm/iomap_32.c |
28765 | +++ b/arch/x86/mm/iomap_32.c | 28736 | +++ b/arch/x86/mm/iomap_32.c |
28766 | @@ -64,7 +64,11 @@ void *kmap_atomic_prot_pfn(unsigned long pfn, pgprot_t prot) | 28737 | @@ -64,7 +64,11 @@ void *kmap_atomic_prot_pfn(unsigned long pfn, pgprot_t prot) |
@@ -28776,7 +28747,7 @@ index 7b179b4..6bd1777 100644 | |||
28776 | 28747 | ||
28777 | return (void *)vaddr; | 28748 | return (void *)vaddr; |
28778 | diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c | 28749 | diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c |
28779 | index 78fe3f1..73b95e2 100644 | 28750 | index 9a1e658..da003f3 100644 |
28780 | --- a/arch/x86/mm/ioremap.c | 28751 | --- a/arch/x86/mm/ioremap.c |
28781 | +++ b/arch/x86/mm/ioremap.c | 28752 | +++ b/arch/x86/mm/ioremap.c |
28782 | @@ -97,7 +97,7 @@ static void __iomem *__ioremap_caller(resource_size_t phys_addr, | 28753 | @@ -97,7 +97,7 @@ static void __iomem *__ioremap_caller(resource_size_t phys_addr, |
@@ -28797,7 +28768,7 @@ index 78fe3f1..73b95e2 100644 | |||
28797 | { | 28768 | { |
28798 | struct vm_struct *p, *o; | 28769 | struct vm_struct *p, *o; |
28799 | 28770 | ||
28800 | @@ -315,6 +315,9 @@ void *xlate_dev_mem_ptr(unsigned long phys) | 28771 | @@ -310,6 +310,9 @@ void *xlate_dev_mem_ptr(unsigned long phys) |
28801 | 28772 | ||
28802 | /* If page is RAM, we can use __va. Otherwise ioremap and unmap. */ | 28773 | /* If page is RAM, we can use __va. Otherwise ioremap and unmap. */ |
28803 | if (page_is_ram(start >> PAGE_SHIFT)) | 28774 | if (page_is_ram(start >> PAGE_SHIFT)) |
@@ -28807,7 +28778,7 @@ index 78fe3f1..73b95e2 100644 | |||
28807 | return __va(phys); | 28778 | return __va(phys); |
28808 | 28779 | ||
28809 | addr = (void __force *)ioremap_cache(start, PAGE_SIZE); | 28780 | addr = (void __force *)ioremap_cache(start, PAGE_SIZE); |
28810 | @@ -327,6 +330,9 @@ void *xlate_dev_mem_ptr(unsigned long phys) | 28781 | @@ -322,6 +325,9 @@ void *xlate_dev_mem_ptr(unsigned long phys) |
28811 | void unxlate_dev_mem_ptr(unsigned long phys, void *addr) | 28782 | void unxlate_dev_mem_ptr(unsigned long phys, void *addr) |
28812 | { | 28783 | { |
28813 | if (page_is_ram(phys >> PAGE_SHIFT)) | 28784 | if (page_is_ram(phys >> PAGE_SHIFT)) |
@@ -28817,7 +28788,7 @@ index 78fe3f1..73b95e2 100644 | |||
28817 | return; | 28788 | return; |
28818 | 28789 | ||
28819 | iounmap((void __iomem *)((unsigned long)addr & PAGE_MASK)); | 28790 | iounmap((void __iomem *)((unsigned long)addr & PAGE_MASK)); |
28820 | @@ -344,7 +350,7 @@ static int __init early_ioremap_debug_setup(char *str) | 28791 | @@ -339,7 +345,7 @@ static int __init early_ioremap_debug_setup(char *str) |
28821 | early_param("early_ioremap_debug", early_ioremap_debug_setup); | 28792 | early_param("early_ioremap_debug", early_ioremap_debug_setup); |
28822 | 28793 | ||
28823 | static __initdata int after_paging_init; | 28794 | static __initdata int after_paging_init; |
@@ -28826,7 +28797,7 @@ index 78fe3f1..73b95e2 100644 | |||
28826 | 28797 | ||
28827 | static inline pmd_t * __init early_ioremap_pmd(unsigned long addr) | 28798 | static inline pmd_t * __init early_ioremap_pmd(unsigned long addr) |
28828 | { | 28799 | { |
28829 | @@ -381,8 +387,7 @@ void __init early_ioremap_init(void) | 28800 | @@ -376,8 +382,7 @@ void __init early_ioremap_init(void) |
28830 | slot_virt[i] = __fix_to_virt(FIX_BTMAP_BEGIN - NR_FIX_BTMAPS*i); | 28801 | slot_virt[i] = __fix_to_virt(FIX_BTMAP_BEGIN - NR_FIX_BTMAPS*i); |
28831 | 28802 | ||
28832 | pmd = early_ioremap_pmd(fix_to_virt(FIX_BTMAP_BEGIN)); | 28803 | pmd = early_ioremap_pmd(fix_to_virt(FIX_BTMAP_BEGIN)); |
@@ -28987,10 +28958,10 @@ index dc0b727..f612039 100644 | |||
28987 | might_sleep(); | 28958 | might_sleep(); |
28988 | if (is_enabled()) /* recheck and proper locking in *_core() */ | 28959 | if (is_enabled()) /* recheck and proper locking in *_core() */ |
28989 | diff --git a/arch/x86/mm/numa.c b/arch/x86/mm/numa.c | 28960 | diff --git a/arch/x86/mm/numa.c b/arch/x86/mm/numa.c |
28990 | index 72fe01e..f1a8daa 100644 | 28961 | index a71c4e2..301ae44 100644 |
28991 | --- a/arch/x86/mm/numa.c | 28962 | --- a/arch/x86/mm/numa.c |
28992 | +++ b/arch/x86/mm/numa.c | 28963 | +++ b/arch/x86/mm/numa.c |
28993 | @@ -477,7 +477,7 @@ static bool __init numa_meminfo_cover_memory(const struct numa_meminfo *mi) | 28964 | @@ -474,7 +474,7 @@ static bool __init numa_meminfo_cover_memory(const struct numa_meminfo *mi) |
28994 | return true; | 28965 | return true; |
28995 | } | 28966 | } |
28996 | 28967 | ||
@@ -29000,7 +28971,7 @@ index 72fe01e..f1a8daa 100644 | |||
29000 | unsigned long uninitialized_var(pfn_align); | 28971 | unsigned long uninitialized_var(pfn_align); |
29001 | int i, nid; | 28972 | int i, nid; |
29002 | diff --git a/arch/x86/mm/pageattr-test.c b/arch/x86/mm/pageattr-test.c | 28973 | diff --git a/arch/x86/mm/pageattr-test.c b/arch/x86/mm/pageattr-test.c |
29003 | index 0e38951..4ca8458 100644 | 28974 | index d0b1773..4c3327c 100644 |
29004 | --- a/arch/x86/mm/pageattr-test.c | 28975 | --- a/arch/x86/mm/pageattr-test.c |
29005 | +++ b/arch/x86/mm/pageattr-test.c | 28976 | +++ b/arch/x86/mm/pageattr-test.c |
29006 | @@ -36,7 +36,7 @@ enum { | 28977 | @@ -36,7 +36,7 @@ enum { |
@@ -29013,7 +28984,7 @@ index 0e38951..4ca8458 100644 | |||
29013 | 28984 | ||
29014 | struct split_state { | 28985 | struct split_state { |
29015 | diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c | 28986 | diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c |
29016 | index fb4e73e..43f7238 100644 | 28987 | index bb32480..aef8278 100644 |
29017 | --- a/arch/x86/mm/pageattr.c | 28988 | --- a/arch/x86/mm/pageattr.c |
29018 | +++ b/arch/x86/mm/pageattr.c | 28989 | +++ b/arch/x86/mm/pageattr.c |
29019 | @@ -261,7 +261,7 @@ static inline pgprot_t static_protections(pgprot_t prot, unsigned long address, | 28990 | @@ -261,7 +261,7 @@ static inline pgprot_t static_protections(pgprot_t prot, unsigned long address, |
@@ -29151,6 +29122,19 @@ index 6574388..87e9bef 100644 | |||
29151 | cattr_name(want_flags), | 29122 | cattr_name(want_flags), |
29152 | (unsigned long long)paddr, | 29123 | (unsigned long long)paddr, |
29153 | (unsigned long long)(paddr + size - 1), | 29124 | (unsigned long long)(paddr + size - 1), |
29125 | diff --git a/arch/x86/mm/pat_rbtree.c b/arch/x86/mm/pat_rbtree.c | ||
29126 | index 415f6c4..d319983 100644 | ||
29127 | --- a/arch/x86/mm/pat_rbtree.c | ||
29128 | +++ b/arch/x86/mm/pat_rbtree.c | ||
29129 | @@ -160,7 +160,7 @@ success: | ||
29130 | |||
29131 | failure: | ||
29132 | printk(KERN_INFO "%s:%d conflicting memory types " | ||
29133 | - "%Lx-%Lx %s<->%s\n", current->comm, current->pid, start, | ||
29134 | + "%Lx-%Lx %s<->%s\n", current->comm, task_pid_nr(current), start, | ||
29135 | end, cattr_name(found_type), cattr_name(match->type)); | ||
29136 | return -EBUSY; | ||
29137 | } | ||
29154 | diff --git a/arch/x86/mm/pf_in.c b/arch/x86/mm/pf_in.c | 29138 | diff --git a/arch/x86/mm/pf_in.c b/arch/x86/mm/pf_in.c |
29155 | index 9f0614d..92ae64a 100644 | 29139 | index 9f0614d..92ae64a 100644 |
29156 | --- a/arch/x86/mm/pf_in.c | 29140 | --- a/arch/x86/mm/pf_in.c |
@@ -29216,7 +29200,7 @@ index 17fda6a..489c74a 100644 | |||
29216 | +void __shadow_user_pgds(pgd_t *dst, const pgd_t *src) | 29200 | +void __shadow_user_pgds(pgd_t *dst, const pgd_t *src) |
29217 | +{ | 29201 | +{ |
29218 | + unsigned int count = USER_PGD_PTRS; | 29202 | + unsigned int count = USER_PGD_PTRS; |
29219 | + | 29203 | |
29220 | + while (count--) | 29204 | + while (count--) |
29221 | + *dst++ = __pgd((pgd_val(*src++) | (_PAGE_NX & __supported_pte_mask)) & ~_PAGE_USER); | 29205 | + *dst++ = __pgd((pgd_val(*src++) | (_PAGE_NX & __supported_pte_mask)) & ~_PAGE_USER); |
29222 | +} | 29206 | +} |
@@ -29229,7 +29213,7 @@ index 17fda6a..489c74a 100644 | |||
29229 | + | 29213 | + |
29230 | + while (count--) { | 29214 | + while (count--) { |
29231 | + pgd_t pgd; | 29215 | + pgd_t pgd; |
29232 | 29216 | + | |
29233 | +#ifdef CONFIG_X86_64 | 29217 | +#ifdef CONFIG_X86_64 |
29234 | + pgd = __pgd(pgd_val(*src++) | _PAGE_USER); | 29218 | + pgd = __pgd(pgd_val(*src++) | _PAGE_USER); |
29235 | +#else | 29219 | +#else |
@@ -29664,7 +29648,7 @@ index 877b9a1..a8ecf42 100644 | |||
29664 | + pax_force_retaddr | 29648 | + pax_force_retaddr |
29665 | ret | 29649 | ret |
29666 | diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c | 29650 | diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c |
29667 | index 3cbe4538..003d011 100644 | 29651 | index f66b540..3e88dfb 100644 |
29668 | --- a/arch/x86/net/bpf_jit_comp.c | 29652 | --- a/arch/x86/net/bpf_jit_comp.c |
29669 | +++ b/arch/x86/net/bpf_jit_comp.c | 29653 | +++ b/arch/x86/net/bpf_jit_comp.c |
29670 | @@ -12,6 +12,7 @@ | 29654 | @@ -12,6 +12,7 @@ |
@@ -29936,9 +29920,9 @@ index 3cbe4538..003d011 100644 | |||
29936 | } | 29920 | } |
29937 | oldproglen = proglen; | 29921 | oldproglen = proglen; |
29938 | } | 29922 | } |
29939 | @@ -737,7 +856,10 @@ cond_branch: f_offset = addrs[i + filter[i].jf] - addrs[i]; | 29923 | @@ -732,7 +851,10 @@ cond_branch: f_offset = addrs[i + filter[i].jf] - addrs[i]; |
29924 | if (image) { | ||
29940 | bpf_flush_icache(image, image + proglen); | 29925 | bpf_flush_icache(image, image + proglen); |
29941 | |||
29942 | fp->bpf_func = (void *)image; | 29926 | fp->bpf_func = (void *)image; |
29943 | - } | 29927 | - } |
29944 | + } else | 29928 | + } else |
@@ -29948,7 +29932,7 @@ index 3cbe4538..003d011 100644 | |||
29948 | out: | 29932 | out: |
29949 | kfree(addrs); | 29933 | kfree(addrs); |
29950 | return; | 29934 | return; |
29951 | @@ -745,18 +867,20 @@ out: | 29935 | @@ -740,18 +862,20 @@ out: |
29952 | 29936 | ||
29953 | static void jit_free_defer(struct work_struct *arg) | 29937 | static void jit_free_defer(struct work_struct *arg) |
29954 | { | 29938 | { |
@@ -30514,10 +30498,10 @@ index 40e4469..0592924 100644 | |||
30514 | 30498 | ||
30515 | local_irq_restore(efi_rt_eflags); | 30499 | local_irq_restore(efi_rt_eflags); |
30516 | diff --git a/arch/x86/platform/efi/efi_64.c b/arch/x86/platform/efi/efi_64.c | 30500 | diff --git a/arch/x86/platform/efi/efi_64.c b/arch/x86/platform/efi/efi_64.c |
30517 | index 2b20038..eaf558f 100644 | 30501 | index 39a0e7f1..ecc2f1e 100644 |
30518 | --- a/arch/x86/platform/efi/efi_64.c | 30502 | --- a/arch/x86/platform/efi/efi_64.c |
30519 | +++ b/arch/x86/platform/efi/efi_64.c | 30503 | +++ b/arch/x86/platform/efi/efi_64.c |
30520 | @@ -75,6 +75,11 @@ void __init efi_call_phys_prelog(void) | 30504 | @@ -76,6 +76,11 @@ void __init efi_call_phys_prelog(void) |
30521 | vaddress = (unsigned long)__va(pgd * PGDIR_SIZE); | 30505 | vaddress = (unsigned long)__va(pgd * PGDIR_SIZE); |
30522 | set_pgd(pgd_offset_k(pgd * PGDIR_SIZE), *pgd_offset_k(vaddress)); | 30506 | set_pgd(pgd_offset_k(pgd * PGDIR_SIZE), *pgd_offset_k(vaddress)); |
30523 | } | 30507 | } |
@@ -30529,7 +30513,7 @@ index 2b20038..eaf558f 100644 | |||
30529 | __flush_tlb_all(); | 30513 | __flush_tlb_all(); |
30530 | } | 30514 | } |
30531 | 30515 | ||
30532 | @@ -88,6 +93,11 @@ void __init efi_call_phys_epilog(void) | 30516 | @@ -89,6 +94,11 @@ void __init efi_call_phys_epilog(void) |
30533 | for (pgd = 0; pgd < n_pgds; pgd++) | 30517 | for (pgd = 0; pgd < n_pgds; pgd++) |
30534 | set_pgd(pgd_offset_k(pgd * PGDIR_SIZE), save_pgd[pgd]); | 30518 | set_pgd(pgd_offset_k(pgd * PGDIR_SIZE), save_pgd[pgd]); |
30535 | kfree(save_pgd); | 30519 | kfree(save_pgd); |
@@ -30738,7 +30722,7 @@ index 4c07cca..2c8427d 100644 | |||
30738 | ret | 30722 | ret |
30739 | ENDPROC(efi_call6) | 30723 | ENDPROC(efi_call6) |
30740 | diff --git a/arch/x86/platform/mrst/mrst.c b/arch/x86/platform/mrst/mrst.c | 30724 | diff --git a/arch/x86/platform/mrst/mrst.c b/arch/x86/platform/mrst/mrst.c |
30741 | index e31bcd8..f12dc46 100644 | 30725 | index a0a0a43..a48e233 100644 |
30742 | --- a/arch/x86/platform/mrst/mrst.c | 30726 | --- a/arch/x86/platform/mrst/mrst.c |
30743 | +++ b/arch/x86/platform/mrst/mrst.c | 30727 | +++ b/arch/x86/platform/mrst/mrst.c |
30744 | @@ -78,13 +78,15 @@ struct sfi_rtc_table_entry sfi_mrtc_array[SFI_MRTC_MAX]; | 30728 | @@ -78,13 +78,15 @@ struct sfi_rtc_table_entry sfi_mrtc_array[SFI_MRTC_MAX]; |
@@ -30773,23 +30757,30 @@ index d6ee929..3637cb5 100644 | |||
30773 | .getproplen = olpc_dt_getproplen, | 30757 | .getproplen = olpc_dt_getproplen, |
30774 | .getproperty = olpc_dt_getproperty, | 30758 | .getproperty = olpc_dt_getproperty, |
30775 | diff --git a/arch/x86/power/cpu.c b/arch/x86/power/cpu.c | 30759 | diff --git a/arch/x86/power/cpu.c b/arch/x86/power/cpu.c |
30776 | index 3c68768..07e82b8 100644 | 30760 | index 1cf5b30..fd45732 100644 |
30777 | --- a/arch/x86/power/cpu.c | 30761 | --- a/arch/x86/power/cpu.c |
30778 | +++ b/arch/x86/power/cpu.c | 30762 | +++ b/arch/x86/power/cpu.c |
30779 | @@ -134,7 +134,7 @@ static void do_fpu_end(void) | 30763 | @@ -137,11 +137,8 @@ static void do_fpu_end(void) |
30780 | static void fix_processor_context(void) | 30764 | static void fix_processor_context(void) |
30781 | { | 30765 | { |
30782 | int cpu = smp_processor_id(); | 30766 | int cpu = smp_processor_id(); |
30783 | - struct tss_struct *t = &per_cpu(init_tss, cpu); | 30767 | - struct tss_struct *t = &per_cpu(init_tss, cpu); |
30768 | -#ifdef CONFIG_X86_64 | ||
30769 | - struct desc_struct *desc = get_cpu_gdt_table(cpu); | ||
30770 | - tss_desc tss; | ||
30771 | -#endif | ||
30784 | + struct tss_struct *t = init_tss + cpu; | 30772 | + struct tss_struct *t = init_tss + cpu; |
30785 | 30773 | + | |
30786 | set_tss_desc(cpu, t); /* | 30774 | set_tss_desc(cpu, t); /* |
30787 | * This just modifies memory; should not be | 30775 | * This just modifies memory; should not be |
30788 | @@ -144,8 +144,6 @@ static void fix_processor_context(void) | 30776 | * necessary. But... This is necessary, because |
30777 | @@ -150,10 +147,6 @@ static void fix_processor_context(void) | ||
30789 | */ | 30778 | */ |
30790 | 30779 | ||
30791 | #ifdef CONFIG_X86_64 | 30780 | #ifdef CONFIG_X86_64 |
30792 | - get_cpu_gdt_table(cpu)[GDT_ENTRY_TSS].type = 9; | 30781 | - memcpy(&tss, &desc[GDT_ENTRY_TSS], sizeof(tss_desc)); |
30782 | - tss.type = 0x9; /* The available 64-bit TSS (see AMD vol 2, pg 91 */ | ||
30783 | - write_gdt_entry(desc, GDT_ENTRY_TSS, &tss, DESC_TSS); | ||
30793 | - | 30784 | - |
30794 | syscall_init(); /* This sets MSR_*STAR and related */ | 30785 | syscall_init(); /* This sets MSR_*STAR and related */ |
30795 | #endif | 30786 | #endif |
@@ -30907,25 +30898,40 @@ index bb360dc..3e5945f 100644 | |||
30907 | movl %eax, %cr0 | 30898 | movl %eax, %cr0 |
30908 | 30899 | ||
30909 | /* | 30900 | /* |
30901 | diff --git a/arch/x86/tools/Makefile b/arch/x86/tools/Makefile | ||
30902 | index e812034..c747134 100644 | ||
30903 | --- a/arch/x86/tools/Makefile | ||
30904 | +++ b/arch/x86/tools/Makefile | ||
30905 | @@ -37,7 +37,7 @@ $(obj)/test_get_len.o: $(srctree)/arch/x86/lib/insn.c $(srctree)/arch/x86/lib/in | ||
30906 | |||
30907 | $(obj)/insn_sanity.o: $(srctree)/arch/x86/lib/insn.c $(srctree)/arch/x86/lib/inat.c $(srctree)/arch/x86/include/asm/inat_types.h $(srctree)/arch/x86/include/asm/inat.h $(srctree)/arch/x86/include/asm/insn.h $(objtree)/arch/x86/lib/inat-tables.c | ||
30908 | |||
30909 | -HOST_EXTRACFLAGS += -I$(srctree)/tools/include | ||
30910 | +HOST_EXTRACFLAGS += -I$(srctree)/tools/include -ggdb | ||
30911 | hostprogs-y += relocs | ||
30912 | relocs-objs := relocs_32.o relocs_64.o relocs_common.o | ||
30913 | relocs: $(obj)/relocs | ||
30910 | diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c | 30914 | diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c |
30911 | index 79d67bd..c7e1b90 100644 | 30915 | index f7bab68..b6d9886 100644 |
30912 | --- a/arch/x86/tools/relocs.c | 30916 | --- a/arch/x86/tools/relocs.c |
30913 | +++ b/arch/x86/tools/relocs.c | 30917 | +++ b/arch/x86/tools/relocs.c |
30914 | @@ -12,10 +12,13 @@ | 30918 | @@ -1,5 +1,7 @@ |
30915 | #include <regex.h> | 30919 | /* This is included from relocs_32/64.c */ |
30916 | #include <tools/le_byteshift.h> | ||
30917 | 30920 | ||
30918 | +#include "../../../include/generated/autoconf.h" | 30921 | +#include "../../../include/generated/autoconf.h" |
30919 | + | 30922 | + |
30920 | static void die(char *fmt, ...); | 30923 | #define ElfW(type) _ElfW(ELF_BITS, type) |
30924 | #define _ElfW(bits, type) __ElfW(bits, type) | ||
30925 | #define __ElfW(bits, type) Elf##bits##_##type | ||
30926 | @@ -11,6 +13,7 @@ | ||
30927 | #define Elf_Sym ElfW(Sym) | ||
30928 | |||
30929 | static Elf_Ehdr ehdr; | ||
30930 | +static Elf_Phdr *phdr; | ||
30921 | 30931 | ||
30922 | #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) | 30932 | struct relocs { |
30923 | static Elf32_Ehdr ehdr; | 30933 | uint32_t *offset; |
30924 | +static Elf32_Phdr *phdr; | 30934 | @@ -383,9 +386,39 @@ static void read_ehdr(FILE *fp) |
30925 | static unsigned long reloc_count, reloc_idx; | ||
30926 | static unsigned long *relocs; | ||
30927 | static unsigned long reloc16_count, reloc16_idx; | ||
30928 | @@ -330,9 +333,39 @@ static void read_ehdr(FILE *fp) | ||
30929 | } | 30935 | } |
30930 | } | 30936 | } |
30931 | 30937 | ||
@@ -30933,7 +30939,7 @@ index 79d67bd..c7e1b90 100644 | |||
30933 | +{ | 30939 | +{ |
30934 | + unsigned int i; | 30940 | + unsigned int i; |
30935 | + | 30941 | + |
30936 | + phdr = calloc(ehdr.e_phnum, sizeof(Elf32_Phdr)); | 30942 | + phdr = calloc(ehdr.e_phnum, sizeof(Elf_Phdr)); |
30937 | + if (!phdr) { | 30943 | + if (!phdr) { |
30938 | + die("Unable to allocate %d program headers\n", | 30944 | + die("Unable to allocate %d program headers\n", |
30939 | + ehdr.e_phnum); | 30945 | + ehdr.e_phnum); |
@@ -30947,14 +30953,14 @@ index 79d67bd..c7e1b90 100644 | |||
30947 | + strerror(errno)); | 30953 | + strerror(errno)); |
30948 | + } | 30954 | + } |
30949 | + for(i = 0; i < ehdr.e_phnum; i++) { | 30955 | + for(i = 0; i < ehdr.e_phnum; i++) { |
30950 | + phdr[i].p_type = elf32_to_cpu(phdr[i].p_type); | 30956 | + phdr[i].p_type = elf_word_to_cpu(phdr[i].p_type); |
30951 | + phdr[i].p_offset = elf32_to_cpu(phdr[i].p_offset); | 30957 | + phdr[i].p_offset = elf_off_to_cpu(phdr[i].p_offset); |
30952 | + phdr[i].p_vaddr = elf32_to_cpu(phdr[i].p_vaddr); | 30958 | + phdr[i].p_vaddr = elf_addr_to_cpu(phdr[i].p_vaddr); |
30953 | + phdr[i].p_paddr = elf32_to_cpu(phdr[i].p_paddr); | 30959 | + phdr[i].p_paddr = elf_addr_to_cpu(phdr[i].p_paddr); |
30954 | + phdr[i].p_filesz = elf32_to_cpu(phdr[i].p_filesz); | 30960 | + phdr[i].p_filesz = elf_word_to_cpu(phdr[i].p_filesz); |
30955 | + phdr[i].p_memsz = elf32_to_cpu(phdr[i].p_memsz); | 30961 | + phdr[i].p_memsz = elf_word_to_cpu(phdr[i].p_memsz); |
30956 | + phdr[i].p_flags = elf32_to_cpu(phdr[i].p_flags); | 30962 | + phdr[i].p_flags = elf_word_to_cpu(phdr[i].p_flags); |
30957 | + phdr[i].p_align = elf32_to_cpu(phdr[i].p_align); | 30963 | + phdr[i].p_align = elf_word_to_cpu(phdr[i].p_align); |
30958 | + } | 30964 | + } |
30959 | + | 30965 | + |
30960 | +} | 30966 | +} |
@@ -30963,10 +30969,10 @@ index 79d67bd..c7e1b90 100644 | |||
30963 | { | 30969 | { |
30964 | - int i; | 30970 | - int i; |
30965 | + unsigned int i; | 30971 | + unsigned int i; |
30966 | Elf32_Shdr shdr; | 30972 | Elf_Shdr shdr; |
30967 | 30973 | ||
30968 | secs = calloc(ehdr.e_shnum, sizeof(struct section)); | 30974 | secs = calloc(ehdr.e_shnum, sizeof(struct section)); |
30969 | @@ -367,7 +400,7 @@ static void read_shdrs(FILE *fp) | 30975 | @@ -420,7 +453,7 @@ static void read_shdrs(FILE *fp) |
30970 | 30976 | ||
30971 | static void read_strtabs(FILE *fp) | 30977 | static void read_strtabs(FILE *fp) |
30972 | { | 30978 | { |
@@ -30975,7 +30981,7 @@ index 79d67bd..c7e1b90 100644 | |||
30975 | for (i = 0; i < ehdr.e_shnum; i++) { | 30981 | for (i = 0; i < ehdr.e_shnum; i++) { |
30976 | struct section *sec = &secs[i]; | 30982 | struct section *sec = &secs[i]; |
30977 | if (sec->shdr.sh_type != SHT_STRTAB) { | 30983 | if (sec->shdr.sh_type != SHT_STRTAB) { |
30978 | @@ -392,7 +425,7 @@ static void read_strtabs(FILE *fp) | 30984 | @@ -445,7 +478,7 @@ static void read_strtabs(FILE *fp) |
30979 | 30985 | ||
30980 | static void read_symtabs(FILE *fp) | 30986 | static void read_symtabs(FILE *fp) |
30981 | { | 30987 | { |
@@ -30984,7 +30990,7 @@ index 79d67bd..c7e1b90 100644 | |||
30984 | for (i = 0; i < ehdr.e_shnum; i++) { | 30990 | for (i = 0; i < ehdr.e_shnum; i++) { |
30985 | struct section *sec = &secs[i]; | 30991 | struct section *sec = &secs[i]; |
30986 | if (sec->shdr.sh_type != SHT_SYMTAB) { | 30992 | if (sec->shdr.sh_type != SHT_SYMTAB) { |
30987 | @@ -423,9 +456,11 @@ static void read_symtabs(FILE *fp) | 30993 | @@ -476,9 +509,11 @@ static void read_symtabs(FILE *fp) |
30988 | } | 30994 | } |
30989 | 30995 | ||
30990 | 30996 | ||
@@ -30997,8 +31003,8 @@ index 79d67bd..c7e1b90 100644 | |||
30997 | + | 31003 | + |
30998 | for (i = 0; i < ehdr.e_shnum; i++) { | 31004 | for (i = 0; i < ehdr.e_shnum; i++) { |
30999 | struct section *sec = &secs[i]; | 31005 | struct section *sec = &secs[i]; |
31000 | if (sec->shdr.sh_type != SHT_REL) { | 31006 | if (sec->shdr.sh_type != SHT_REL_TYPE) { |
31001 | @@ -445,9 +480,22 @@ static void read_relocs(FILE *fp) | 31007 | @@ -498,9 +533,22 @@ static void read_relocs(FILE *fp) |
31002 | die("Cannot read symbol table: %s\n", | 31008 | die("Cannot read symbol table: %s\n", |
31003 | strerror(errno)); | 31009 | strerror(errno)); |
31004 | } | 31010 | } |
@@ -31015,21 +31021,23 @@ index 79d67bd..c7e1b90 100644 | |||
31015 | + } | 31021 | + } |
31016 | +#endif | 31022 | +#endif |
31017 | + | 31023 | + |
31018 | for (j = 0; j < sec->shdr.sh_size/sizeof(Elf32_Rel); j++) { | 31024 | for (j = 0; j < sec->shdr.sh_size/sizeof(Elf_Rel); j++) { |
31019 | Elf32_Rel *rel = &sec->reltab[j]; | 31025 | Elf_Rel *rel = &sec->reltab[j]; |
31020 | - rel->r_offset = elf32_to_cpu(rel->r_offset); | 31026 | - rel->r_offset = elf_addr_to_cpu(rel->r_offset); |
31021 | + rel->r_offset = elf32_to_cpu(rel->r_offset) + base; | 31027 | + rel->r_offset = elf_addr_to_cpu(rel->r_offset) + base; |
31022 | rel->r_info = elf32_to_cpu(rel->r_info); | 31028 | rel->r_info = elf_xword_to_cpu(rel->r_info); |
31023 | } | 31029 | #if (SHT_REL_TYPE == SHT_RELA) |
31024 | } | 31030 | rel->r_addend = elf_xword_to_cpu(rel->r_addend); |
31025 | @@ -456,13 +504,13 @@ static void read_relocs(FILE *fp) | 31031 | @@ -512,7 +560,7 @@ static void read_relocs(FILE *fp) |
31026 | 31032 | ||
31027 | static void print_absolute_symbols(void) | 31033 | static void print_absolute_symbols(void) |
31028 | { | 31034 | { |
31029 | - int i; | 31035 | - int i; |
31030 | + unsigned int i; | 31036 | + unsigned int i; |
31031 | printf("Absolute symbols\n"); | 31037 | const char *format; |
31032 | printf(" Num: Value Size Type Bind Visibility Name\n"); | 31038 | |
31039 | if (ELF_BITS == 64) | ||
31040 | @@ -525,7 +573,7 @@ static void print_absolute_symbols(void) | ||
31033 | for (i = 0; i < ehdr.e_shnum; i++) { | 31041 | for (i = 0; i < ehdr.e_shnum; i++) { |
31034 | struct section *sec = &secs[i]; | 31042 | struct section *sec = &secs[i]; |
31035 | char *sym_strtab; | 31043 | char *sym_strtab; |
@@ -31038,76 +31046,76 @@ index 79d67bd..c7e1b90 100644 | |||
31038 | 31046 | ||
31039 | if (sec->shdr.sh_type != SHT_SYMTAB) { | 31047 | if (sec->shdr.sh_type != SHT_SYMTAB) { |
31040 | continue; | 31048 | continue; |
31041 | @@ -489,14 +537,14 @@ static void print_absolute_symbols(void) | 31049 | @@ -552,7 +600,7 @@ static void print_absolute_symbols(void) |
31042 | 31050 | ||
31043 | static void print_absolute_relocs(void) | 31051 | static void print_absolute_relocs(void) |
31044 | { | 31052 | { |
31045 | - int i, printed = 0; | 31053 | - int i, printed = 0; |
31046 | + unsigned int i, printed = 0; | 31054 | + unsigned int i, printed = 0; |
31055 | const char *format; | ||
31047 | 31056 | ||
31048 | for (i = 0; i < ehdr.e_shnum; i++) { | 31057 | if (ELF_BITS == 64) |
31049 | struct section *sec = &secs[i]; | 31058 | @@ -565,7 +613,7 @@ static void print_absolute_relocs(void) |
31050 | struct section *sec_applies, *sec_symtab; | 31059 | struct section *sec_applies, *sec_symtab; |
31051 | char *sym_strtab; | 31060 | char *sym_strtab; |
31052 | Elf32_Sym *sh_symtab; | 31061 | Elf_Sym *sh_symtab; |
31053 | - int j; | 31062 | - int j; |
31054 | + unsigned int j; | 31063 | + unsigned int j; |
31055 | if (sec->shdr.sh_type != SHT_REL) { | 31064 | if (sec->shdr.sh_type != SHT_REL_TYPE) { |
31056 | continue; | 31065 | continue; |
31057 | } | 31066 | } |
31058 | @@ -558,13 +606,13 @@ static void print_absolute_relocs(void) | 31067 | @@ -642,13 +690,13 @@ static void add_reloc(struct relocs *r, uint32_t offset) |
31059 | static void walk_relocs(void (*visit)(Elf32_Rel *rel, Elf32_Sym *sym), | 31068 | static void walk_relocs(int (*process)(struct section *sec, Elf_Rel *rel, |
31060 | int use_real_mode) | 31069 | Elf_Sym *sym, const char *symname)) |
31061 | { | 31070 | { |
31062 | - int i; | 31071 | - int i; |
31063 | + unsigned int i; | 31072 | + unsigned int i; |
31064 | /* Walk through the relocations */ | 31073 | /* Walk through the relocations */ |
31065 | for (i = 0; i < ehdr.e_shnum; i++) { | 31074 | for (i = 0; i < ehdr.e_shnum; i++) { |
31066 | char *sym_strtab; | 31075 | char *sym_strtab; |
31067 | Elf32_Sym *sh_symtab; | 31076 | Elf_Sym *sh_symtab; |
31068 | struct section *sec_applies, *sec_symtab; | 31077 | struct section *sec_applies, *sec_symtab; |
31069 | - int j; | 31078 | - int j; |
31070 | + unsigned int j; | 31079 | + unsigned int j; |
31071 | struct section *sec = &secs[i]; | 31080 | struct section *sec = &secs[i]; |
31072 | 31081 | ||
31073 | if (sec->shdr.sh_type != SHT_REL) { | 31082 | if (sec->shdr.sh_type != SHT_REL_TYPE) { |
31074 | @@ -588,6 +636,24 @@ static void walk_relocs(void (*visit)(Elf32_Rel *rel, Elf32_Sym *sym), | 31083 | @@ -812,6 +860,23 @@ static int do_reloc32(struct section *sec, Elf_Rel *rel, Elf_Sym *sym, |
31075 | sym = &sh_symtab[ELF32_R_SYM(rel->r_info)]; | 31084 | { |
31076 | r_type = ELF32_R_TYPE(rel->r_info); | 31085 | unsigned r_type = ELF32_R_TYPE(rel->r_info); |
31077 | 31086 | int shn_abs = (sym->st_shndx == SHN_ABS) && !is_reloc(S_REL, symname); | |
31078 | + if (!use_real_mode) { | 31087 | + char *sym_strtab = sec->link->link->strtab; |
31079 | + /* Don't relocate actual per-cpu variables, they are absolute indices, not addresses */ | ||
31080 | + if (!strcmp(sec_name(sym->st_shndx), ".data..percpu") && strcmp(sym_name(sym_strtab, sym), "__per_cpu_load")) | ||
31081 | + continue; | ||
31082 | + | 31088 | + |
31083 | +#if defined(CONFIG_PAX_KERNEXEC) && defined(CONFIG_X86_32) | 31089 | + /* Don't relocate actual per-cpu variables, they are absolute indices, not addresses */ |
31084 | + /* Don't relocate actual code, they are relocated implicitly by the base address of KERNEL_CS */ | 31090 | + if (!strcmp(sec_name(sym->st_shndx), ".data..percpu") && strcmp(sym_name(sym_strtab, sym), "__per_cpu_load")) |
31085 | + if (!strcmp(sec_name(sym->st_shndx), ".text.end") && !strcmp(sym_name(sym_strtab, sym), "_etext")) | 31091 | + return 0; |
31086 | + continue; | ||
31087 | + if (!strcmp(sec_name(sym->st_shndx), ".init.text")) | ||
31088 | + continue; | ||
31089 | + if (!strcmp(sec_name(sym->st_shndx), ".exit.text")) | ||
31090 | + continue; | ||
31091 | + if (!strcmp(sec_name(sym->st_shndx), ".text") && strcmp(sym_name(sym_strtab, sym), "__LOAD_PHYSICAL_ADDR")) | ||
31092 | + continue; | ||
31093 | +#endif | ||
31094 | + } | ||
31095 | + | 31092 | + |
31096 | shn_abs = sym->st_shndx == SHN_ABS; | 31093 | +#ifdef CONFIG_PAX_KERNEXEC |
31094 | + /* Don't relocate actual code, they are relocated implicitly by the base address of KERNEL_CS */ | ||
31095 | + if (!strcmp(sec_name(sym->st_shndx), ".text.end") && !strcmp(sym_name(sym_strtab, sym), "_etext")) | ||
31096 | + return 0; | ||
31097 | + if (!strcmp(sec_name(sym->st_shndx), ".init.text")) | ||
31098 | + return 0; | ||
31099 | + if (!strcmp(sec_name(sym->st_shndx), ".exit.text")) | ||
31100 | + return 0; | ||
31101 | + if (!strcmp(sec_name(sym->st_shndx), ".text") && strcmp(sym_name(sym_strtab, sym), "__LOAD_PHYSICAL_ADDR")) | ||
31102 | + return 0; | ||
31103 | +#endif | ||
31097 | 31104 | ||
31098 | switch (r_type) { | 31105 | switch (r_type) { |
31099 | @@ -681,7 +747,7 @@ static int write32(unsigned int v, FILE *f) | 31106 | case R_386_NONE: |
31107 | @@ -950,7 +1015,7 @@ static int write32_as_text(uint32_t v, FILE *f) | ||
31100 | 31108 | ||
31101 | static void emit_relocs(int as_text, int use_real_mode) | 31109 | static void emit_relocs(int as_text, int use_real_mode) |
31102 | { | 31110 | { |
31103 | - int i; | 31111 | - int i; |
31104 | + unsigned int i; | 31112 | + unsigned int i; |
31105 | /* Count how many relocations I have and allocate space for them. */ | 31113 | int (*write_reloc)(uint32_t, FILE *) = write32; |
31106 | reloc_count = 0; | 31114 | int (*do_reloc)(struct section *sec, Elf_Rel *rel, Elf_Sym *sym, |
31107 | walk_relocs(count_reloc, use_real_mode); | 31115 | const char *symname); |
31108 | @@ -808,10 +874,11 @@ int main(int argc, char **argv) | 31116 | @@ -1026,10 +1091,11 @@ void process(FILE *fp, int use_real_mode, int as_text, |
31109 | fname, strerror(errno)); | 31117 | { |
31110 | } | 31118 | regex_init(use_real_mode); |
31111 | read_ehdr(fp); | 31119 | read_ehdr(fp); |
31112 | + read_phdrs(fp); | 31120 | + read_phdrs(fp); |
31113 | read_shdrs(fp); | 31121 | read_shdrs(fp); |
@@ -31115,9 +31123,22 @@ index 79d67bd..c7e1b90 100644 | |||
31115 | read_symtabs(fp); | 31123 | read_symtabs(fp); |
31116 | - read_relocs(fp); | 31124 | - read_relocs(fp); |
31117 | + read_relocs(fp, use_real_mode); | 31125 | + read_relocs(fp, use_real_mode); |
31126 | if (ELF_BITS == 64) | ||
31127 | percpu_init(); | ||
31118 | if (show_absolute_syms) { | 31128 | if (show_absolute_syms) { |
31119 | print_absolute_symbols(); | 31129 | diff --git a/arch/x86/um/tls_32.c b/arch/x86/um/tls_32.c |
31120 | goto out; | 31130 | index 80ffa5b..a33bd15 100644 |
31131 | --- a/arch/x86/um/tls_32.c | ||
31132 | +++ b/arch/x86/um/tls_32.c | ||
31133 | @@ -260,7 +260,7 @@ out: | ||
31134 | if (unlikely(task == current && | ||
31135 | !t->arch.tls_array[idx - GDT_ENTRY_TLS_MIN].flushed)) { | ||
31136 | printk(KERN_ERR "get_tls_entry: task with pid %d got here " | ||
31137 | - "without flushed TLS.", current->pid); | ||
31138 | + "without flushed TLS.", task_pid_nr(current)); | ||
31139 | } | ||
31140 | |||
31141 | return 0; | ||
31121 | diff --git a/arch/x86/vdso/Makefile b/arch/x86/vdso/Makefile | 31142 | diff --git a/arch/x86/vdso/Makefile b/arch/x86/vdso/Makefile |
31122 | index fd14be1..e3c79c0 100644 | 31143 | index fd14be1..e3c79c0 100644 |
31123 | --- a/arch/x86/vdso/Makefile | 31144 | --- a/arch/x86/vdso/Makefile |
@@ -31291,10 +31312,10 @@ index 431e875..cbb23f3 100644 | |||
31291 | -} | 31312 | -} |
31292 | -__setup("vdso=", vdso_setup); | 31313 | -__setup("vdso=", vdso_setup); |
31293 | diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c | 31314 | diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c |
31294 | index cf95e19..17e9f50 100644 | 31315 | index a492be2..08678da 100644 |
31295 | --- a/arch/x86/xen/enlighten.c | 31316 | --- a/arch/x86/xen/enlighten.c |
31296 | +++ b/arch/x86/xen/enlighten.c | 31317 | +++ b/arch/x86/xen/enlighten.c |
31297 | @@ -100,8 +100,6 @@ EXPORT_SYMBOL_GPL(xen_start_info); | 31318 | @@ -123,8 +123,6 @@ EXPORT_SYMBOL_GPL(xen_start_info); |
31298 | 31319 | ||
31299 | struct shared_info xen_dummy_shared_info; | 31320 | struct shared_info xen_dummy_shared_info; |
31300 | 31321 | ||
@@ -31303,7 +31324,7 @@ index cf95e19..17e9f50 100644 | |||
31303 | RESERVE_BRK(shared_info_page_brk, PAGE_SIZE); | 31324 | RESERVE_BRK(shared_info_page_brk, PAGE_SIZE); |
31304 | __read_mostly int xen_have_vector_callback; | 31325 | __read_mostly int xen_have_vector_callback; |
31305 | EXPORT_SYMBOL_GPL(xen_have_vector_callback); | 31326 | EXPORT_SYMBOL_GPL(xen_have_vector_callback); |
31306 | @@ -511,8 +509,7 @@ static void xen_load_gdt(const struct desc_ptr *dtr) | 31327 | @@ -542,8 +540,7 @@ static void xen_load_gdt(const struct desc_ptr *dtr) |
31307 | { | 31328 | { |
31308 | unsigned long va = dtr->address; | 31329 | unsigned long va = dtr->address; |
31309 | unsigned int size = dtr->size + 1; | 31330 | unsigned int size = dtr->size + 1; |
@@ -31313,7 +31334,7 @@ index cf95e19..17e9f50 100644 | |||
31313 | int f; | 31334 | int f; |
31314 | 31335 | ||
31315 | /* | 31336 | /* |
31316 | @@ -560,8 +557,7 @@ static void __init xen_load_gdt_boot(const struct desc_ptr *dtr) | 31337 | @@ -591,8 +588,7 @@ static void __init xen_load_gdt_boot(const struct desc_ptr *dtr) |
31317 | { | 31338 | { |
31318 | unsigned long va = dtr->address; | 31339 | unsigned long va = dtr->address; |
31319 | unsigned int size = dtr->size + 1; | 31340 | unsigned int size = dtr->size + 1; |
@@ -31323,7 +31344,7 @@ index cf95e19..17e9f50 100644 | |||
31323 | int f; | 31344 | int f; |
31324 | 31345 | ||
31325 | /* | 31346 | /* |
31326 | @@ -569,7 +565,7 @@ static void __init xen_load_gdt_boot(const struct desc_ptr *dtr) | 31347 | @@ -600,7 +596,7 @@ static void __init xen_load_gdt_boot(const struct desc_ptr *dtr) |
31327 | * 8-byte entries, or 16 4k pages.. | 31348 | * 8-byte entries, or 16 4k pages.. |
31328 | */ | 31349 | */ |
31329 | 31350 | ||
@@ -31332,7 +31353,7 @@ index cf95e19..17e9f50 100644 | |||
31332 | BUG_ON(va & ~PAGE_MASK); | 31353 | BUG_ON(va & ~PAGE_MASK); |
31333 | 31354 | ||
31334 | for (f = 0; va < dtr->address + size; va += PAGE_SIZE, f++) { | 31355 | for (f = 0; va < dtr->address + size; va += PAGE_SIZE, f++) { |
31335 | @@ -954,7 +950,7 @@ static u32 xen_safe_apic_wait_icr_idle(void) | 31356 | @@ -985,7 +981,7 @@ static u32 xen_safe_apic_wait_icr_idle(void) |
31336 | return 0; | 31357 | return 0; |
31337 | } | 31358 | } |
31338 | 31359 | ||
@@ -31341,7 +31362,7 @@ index cf95e19..17e9f50 100644 | |||
31341 | { | 31362 | { |
31342 | apic->read = xen_apic_read; | 31363 | apic->read = xen_apic_read; |
31343 | apic->write = xen_apic_write; | 31364 | apic->write = xen_apic_write; |
31344 | @@ -1260,30 +1256,30 @@ static const struct pv_apic_ops xen_apic_ops __initconst = { | 31365 | @@ -1290,30 +1286,30 @@ static const struct pv_apic_ops xen_apic_ops __initconst = { |
31345 | #endif | 31366 | #endif |
31346 | }; | 31367 | }; |
31347 | 31368 | ||
@@ -31379,7 +31400,7 @@ index cf95e19..17e9f50 100644 | |||
31379 | { | 31400 | { |
31380 | if (pm_power_off) | 31401 | if (pm_power_off) |
31381 | pm_power_off(); | 31402 | pm_power_off(); |
31382 | @@ -1385,7 +1381,17 @@ asmlinkage void __init xen_start_kernel(void) | 31403 | @@ -1464,7 +1460,17 @@ asmlinkage void __init xen_start_kernel(void) |
31383 | __userpte_alloc_gfp &= ~__GFP_HIGHMEM; | 31404 | __userpte_alloc_gfp &= ~__GFP_HIGHMEM; |
31384 | 31405 | ||
31385 | /* Work out if we support NX */ | 31406 | /* Work out if we support NX */ |
@@ -31398,7 +31419,7 @@ index cf95e19..17e9f50 100644 | |||
31398 | 31419 | ||
31399 | xen_setup_features(); | 31420 | xen_setup_features(); |
31400 | 31421 | ||
31401 | @@ -1416,13 +1422,6 @@ asmlinkage void __init xen_start_kernel(void) | 31422 | @@ -1495,13 +1501,6 @@ asmlinkage void __init xen_start_kernel(void) |
31402 | 31423 | ||
31403 | machine_ops = xen_machine_ops; | 31424 | machine_ops = xen_machine_ops; |
31404 | 31425 | ||
@@ -31412,7 +31433,7 @@ index cf95e19..17e9f50 100644 | |||
31412 | xen_smp_init(); | 31433 | xen_smp_init(); |
31413 | 31434 | ||
31414 | #ifdef CONFIG_ACPI_NUMA | 31435 | #ifdef CONFIG_ACPI_NUMA |
31415 | @@ -1616,7 +1615,7 @@ static int __cpuinit xen_hvm_cpu_notify(struct notifier_block *self, | 31436 | @@ -1700,7 +1699,7 @@ static int __cpuinit xen_hvm_cpu_notify(struct notifier_block *self, |
31416 | return NOTIFY_OK; | 31437 | return NOTIFY_OK; |
31417 | } | 31438 | } |
31418 | 31439 | ||
@@ -31422,7 +31443,7 @@ index cf95e19..17e9f50 100644 | |||
31422 | }; | 31443 | }; |
31423 | 31444 | ||
31424 | diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c | 31445 | diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c |
31425 | index e006c18..b9a7d6c 100644 | 31446 | index fdc3ba2..3daee39 100644 |
31426 | --- a/arch/x86/xen/mmu.c | 31447 | --- a/arch/x86/xen/mmu.c |
31427 | +++ b/arch/x86/xen/mmu.c | 31448 | +++ b/arch/x86/xen/mmu.c |
31428 | @@ -1894,6 +1894,9 @@ void __init xen_setup_kernel_pagetable(pgd_t *pgd, unsigned long max_pfn) | 31449 | @@ -1894,6 +1894,9 @@ void __init xen_setup_kernel_pagetable(pgd_t *pgd, unsigned long max_pfn) |
@@ -31448,7 +31469,7 @@ index e006c18..b9a7d6c 100644 | |||
31448 | set_page_prot(level2_kernel_pgt, PAGE_KERNEL_RO); | 31469 | set_page_prot(level2_kernel_pgt, PAGE_KERNEL_RO); |
31449 | set_page_prot(level2_fixmap_pgt, PAGE_KERNEL_RO); | 31470 | set_page_prot(level2_fixmap_pgt, PAGE_KERNEL_RO); |
31450 | 31471 | ||
31451 | @@ -2110,6 +2117,7 @@ static void __init xen_post_allocator_init(void) | 31472 | @@ -2108,6 +2115,7 @@ static void __init xen_post_allocator_init(void) |
31452 | pv_mmu_ops.set_pud = xen_set_pud; | 31473 | pv_mmu_ops.set_pud = xen_set_pud; |
31453 | #if PAGETABLE_LEVELS == 4 | 31474 | #if PAGETABLE_LEVELS == 4 |
31454 | pv_mmu_ops.set_pgd = xen_set_pgd; | 31475 | pv_mmu_ops.set_pgd = xen_set_pgd; |
@@ -31456,7 +31477,7 @@ index e006c18..b9a7d6c 100644 | |||
31456 | #endif | 31477 | #endif |
31457 | 31478 | ||
31458 | /* This will work as long as patching hasn't happened yet | 31479 | /* This will work as long as patching hasn't happened yet |
31459 | @@ -2188,6 +2196,7 @@ static const struct pv_mmu_ops xen_mmu_ops __initconst = { | 31480 | @@ -2186,6 +2194,7 @@ static const struct pv_mmu_ops xen_mmu_ops __initconst = { |
31460 | .pud_val = PV_CALLEE_SAVE(xen_pud_val), | 31481 | .pud_val = PV_CALLEE_SAVE(xen_pud_val), |
31461 | .make_pud = PV_CALLEE_SAVE(xen_make_pud), | 31482 | .make_pud = PV_CALLEE_SAVE(xen_make_pud), |
31462 | .set_pgd = xen_set_pgd_hyper, | 31483 | .set_pgd = xen_set_pgd_hyper, |
@@ -31465,10 +31486,10 @@ index e006c18..b9a7d6c 100644 | |||
31465 | .alloc_pud = xen_alloc_pmd_init, | 31486 | .alloc_pud = xen_alloc_pmd_init, |
31466 | .release_pud = xen_release_pmd_init, | 31487 | .release_pud = xen_release_pmd_init, |
31467 | diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c | 31488 | diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c |
31468 | index 96c4e85..284fded 100644 | 31489 | index d99cae8..18401e1 100644 |
31469 | --- a/arch/x86/xen/smp.c | 31490 | --- a/arch/x86/xen/smp.c |
31470 | +++ b/arch/x86/xen/smp.c | 31491 | +++ b/arch/x86/xen/smp.c |
31471 | @@ -230,11 +230,6 @@ static void __init xen_smp_prepare_boot_cpu(void) | 31492 | @@ -240,11 +240,6 @@ static void __init xen_smp_prepare_boot_cpu(void) |
31472 | { | 31493 | { |
31473 | BUG_ON(smp_processor_id() != 0); | 31494 | BUG_ON(smp_processor_id() != 0); |
31474 | native_smp_prepare_boot_cpu(); | 31495 | native_smp_prepare_boot_cpu(); |
@@ -31480,7 +31501,7 @@ index 96c4e85..284fded 100644 | |||
31480 | xen_filter_cpu_maps(); | 31501 | xen_filter_cpu_maps(); |
31481 | xen_setup_vcpu_info_placement(); | 31502 | xen_setup_vcpu_info_placement(); |
31482 | } | 31503 | } |
31483 | @@ -304,7 +299,7 @@ cpu_initialize_context(unsigned int cpu, struct task_struct *idle) | 31504 | @@ -314,7 +309,7 @@ cpu_initialize_context(unsigned int cpu, struct task_struct *idle) |
31484 | ctxt->user_regs.ss = __KERNEL_DS; | 31505 | ctxt->user_regs.ss = __KERNEL_DS; |
31485 | #ifdef CONFIG_X86_32 | 31506 | #ifdef CONFIG_X86_32 |
31486 | ctxt->user_regs.fs = __KERNEL_PERCPU; | 31507 | ctxt->user_regs.fs = __KERNEL_PERCPU; |
@@ -31489,7 +31510,7 @@ index 96c4e85..284fded 100644 | |||
31489 | #else | 31510 | #else |
31490 | ctxt->gs_base_kernel = per_cpu_offset(cpu); | 31511 | ctxt->gs_base_kernel = per_cpu_offset(cpu); |
31491 | #endif | 31512 | #endif |
31492 | @@ -314,8 +309,8 @@ cpu_initialize_context(unsigned int cpu, struct task_struct *idle) | 31513 | @@ -324,8 +319,8 @@ cpu_initialize_context(unsigned int cpu, struct task_struct *idle) |
31493 | 31514 | ||
31494 | { | 31515 | { |
31495 | ctxt->user_regs.eflags = 0x1000; /* IOPL_RING1 */ | 31516 | ctxt->user_regs.eflags = 0x1000; /* IOPL_RING1 */ |
@@ -31500,7 +31521,7 @@ index 96c4e85..284fded 100644 | |||
31500 | 31521 | ||
31501 | xen_copy_trap_info(ctxt->trap_ctxt); | 31522 | xen_copy_trap_info(ctxt->trap_ctxt); |
31502 | 31523 | ||
31503 | @@ -360,13 +355,12 @@ static int __cpuinit xen_cpu_up(unsigned int cpu, struct task_struct *idle) | 31524 | @@ -370,13 +365,12 @@ static int __cpuinit xen_cpu_up(unsigned int cpu, struct task_struct *idle) |
31504 | int rc; | 31525 | int rc; |
31505 | 31526 | ||
31506 | per_cpu(current_task, cpu) = idle; | 31527 | per_cpu(current_task, cpu) = idle; |
@@ -31516,7 +31537,7 @@ index 96c4e85..284fded 100644 | |||
31516 | #endif | 31537 | #endif |
31517 | xen_setup_runstate_info(cpu); | 31538 | xen_setup_runstate_info(cpu); |
31518 | xen_setup_timer(cpu); | 31539 | xen_setup_timer(cpu); |
31519 | @@ -642,7 +636,7 @@ static const struct smp_ops xen_smp_ops __initconst = { | 31540 | @@ -651,7 +645,7 @@ static const struct smp_ops xen_smp_ops __initconst = { |
31520 | 31541 | ||
31521 | void __init xen_smp_init(void) | 31542 | void __init xen_smp_init(void) |
31522 | { | 31543 | { |
@@ -31647,7 +31668,7 @@ index af00795..2bb8105 100644 | |||
31647 | #define XCHAL_ICACHE_SIZE 32768 /* I-cache size in bytes or 0 */ | 31668 | #define XCHAL_ICACHE_SIZE 32768 /* I-cache size in bytes or 0 */ |
31648 | #define XCHAL_DCACHE_SIZE 32768 /* D-cache size in bytes or 0 */ | 31669 | #define XCHAL_DCACHE_SIZE 32768 /* D-cache size in bytes or 0 */ |
31649 | diff --git a/block/blk-iopoll.c b/block/blk-iopoll.c | 31670 | diff --git a/block/blk-iopoll.c b/block/blk-iopoll.c |
31650 | index 58916af..eb9dbcf 100644 | 31671 | index 58916af..eb9dbcf6 100644 |
31651 | --- a/block/blk-iopoll.c | 31672 | --- a/block/blk-iopoll.c |
31652 | +++ b/block/blk-iopoll.c | 31673 | +++ b/block/blk-iopoll.c |
31653 | @@ -77,7 +77,7 @@ void blk_iopoll_complete(struct blk_iopoll *iopoll) | 31674 | @@ -77,7 +77,7 @@ void blk_iopoll_complete(struct blk_iopoll *iopoll) |
@@ -31748,7 +31769,7 @@ index 7c668c8..db3521c 100644 | |||
31748 | err = -EFAULT; | 31769 | err = -EFAULT; |
31749 | goto out; | 31770 | goto out; |
31750 | diff --git a/block/genhd.c b/block/genhd.c | 31771 | diff --git a/block/genhd.c b/block/genhd.c |
31751 | index 5098a64..d15a9e8 100644 | 31772 | index cdeb527..10aa34db 100644 |
31752 | --- a/block/genhd.c | 31773 | --- a/block/genhd.c |
31753 | +++ b/block/genhd.c | 31774 | +++ b/block/genhd.c |
31754 | @@ -467,21 +467,24 @@ static char *bdevt_str(dev_t devt, char *buf) | 31775 | @@ -467,21 +467,24 @@ static char *bdevt_str(dev_t devt, char *buf) |
@@ -31780,33 +31801,35 @@ index 5098a64..d15a9e8 100644 | |||
31780 | 31801 | ||
31781 | EXPORT_SYMBOL(blk_unregister_region); | 31802 | EXPORT_SYMBOL(blk_unregister_region); |
31782 | diff --git a/block/partitions/efi.c b/block/partitions/efi.c | 31803 | diff --git a/block/partitions/efi.c b/block/partitions/efi.c |
31783 | index ff5804e..a88acad 100644 | 31804 | index c85fc89..51e690b 100644 |
31784 | --- a/block/partitions/efi.c | 31805 | --- a/block/partitions/efi.c |
31785 | +++ b/block/partitions/efi.c | 31806 | +++ b/block/partitions/efi.c |
31786 | @@ -234,14 +234,14 @@ static gpt_entry *alloc_read_gpt_entries(struct parsed_partitions *state, | 31807 | @@ -234,14 +234,14 @@ static gpt_entry *alloc_read_gpt_entries(struct parsed_partitions *state, |
31787 | if (!gpt) | 31808 | if (!gpt) |
31788 | return NULL; | 31809 | return NULL; |
31789 | 31810 | ||
31790 | - count = le32_to_cpu(gpt->num_partition_entries) * | ||
31791 | - le32_to_cpu(gpt->sizeof_partition_entry); | ||
31792 | - if (!count) | ||
31793 | + if (!le32_to_cpu(gpt->num_partition_entries)) | 31811 | + if (!le32_to_cpu(gpt->num_partition_entries)) |
31794 | return NULL; | 31812 | + return NULL; |
31795 | - pte = kzalloc(count, GFP_KERNEL); | ||
31796 | + pte = kcalloc(le32_to_cpu(gpt->num_partition_entries), le32_to_cpu(gpt->sizeof_partition_entry), GFP_KERNEL); | 31813 | + pte = kcalloc(le32_to_cpu(gpt->num_partition_entries), le32_to_cpu(gpt->sizeof_partition_entry), GFP_KERNEL); |
31797 | if (!pte) | 31814 | + if (!pte) |
31798 | return NULL; | 31815 | + return NULL; |
31799 | 31816 | + | |
31800 | + count = le32_to_cpu(gpt->num_partition_entries) * | 31817 | count = le32_to_cpu(gpt->num_partition_entries) * |
31801 | + le32_to_cpu(gpt->sizeof_partition_entry); | 31818 | le32_to_cpu(gpt->sizeof_partition_entry); |
31819 | - if (!count) | ||
31820 | - return NULL; | ||
31821 | - pte = kmalloc(count, GFP_KERNEL); | ||
31822 | - if (!pte) | ||
31823 | - return NULL; | ||
31824 | - | ||
31802 | if (read_lba(state, le64_to_cpu(gpt->partition_entry_lba), | 31825 | if (read_lba(state, le64_to_cpu(gpt->partition_entry_lba), |
31803 | (u8 *) pte, | 31826 | (u8 *) pte, |
31804 | count) < count) { | 31827 | count) < count) { |
31805 | diff --git a/block/scsi_ioctl.c b/block/scsi_ioctl.c | 31828 | diff --git a/block/scsi_ioctl.c b/block/scsi_ioctl.c |
31806 | index 9a87daa..fb17486 100644 | 31829 | index a5ffcc9..3cedc9c 100644 |
31807 | --- a/block/scsi_ioctl.c | 31830 | --- a/block/scsi_ioctl.c |
31808 | +++ b/block/scsi_ioctl.c | 31831 | +++ b/block/scsi_ioctl.c |
31809 | @@ -223,8 +223,20 @@ EXPORT_SYMBOL(blk_verify_command); | 31832 | @@ -224,8 +224,20 @@ EXPORT_SYMBOL(blk_verify_command); |
31810 | static int blk_fill_sghdr_rq(struct request_queue *q, struct request *rq, | 31833 | static int blk_fill_sghdr_rq(struct request_queue *q, struct request *rq, |
31811 | struct sg_io_hdr *hdr, fmode_t mode) | 31834 | struct sg_io_hdr *hdr, fmode_t mode) |
31812 | { | 31835 | { |
@@ -31828,7 +31851,7 @@ index 9a87daa..fb17486 100644 | |||
31828 | if (blk_verify_command(rq->cmd, mode & FMODE_WRITE)) | 31851 | if (blk_verify_command(rq->cmd, mode & FMODE_WRITE)) |
31829 | return -EPERM; | 31852 | return -EPERM; |
31830 | 31853 | ||
31831 | @@ -433,6 +445,8 @@ int sg_scsi_ioctl(struct request_queue *q, struct gendisk *disk, fmode_t mode, | 31854 | @@ -434,6 +446,8 @@ int sg_scsi_ioctl(struct request_queue *q, struct gendisk *disk, fmode_t mode, |
31832 | int err; | 31855 | int err; |
31833 | unsigned int in_len, out_len, bytes, opcode, cmdlen; | 31856 | unsigned int in_len, out_len, bytes, opcode, cmdlen; |
31834 | char *buffer = NULL, sense[SCSI_SENSE_BUFFERSIZE]; | 31857 | char *buffer = NULL, sense[SCSI_SENSE_BUFFERSIZE]; |
@@ -31837,7 +31860,7 @@ index 9a87daa..fb17486 100644 | |||
31837 | 31860 | ||
31838 | if (!sic) | 31861 | if (!sic) |
31839 | return -EINVAL; | 31862 | return -EINVAL; |
31840 | @@ -466,9 +480,18 @@ int sg_scsi_ioctl(struct request_queue *q, struct gendisk *disk, fmode_t mode, | 31863 | @@ -467,9 +481,18 @@ int sg_scsi_ioctl(struct request_queue *q, struct gendisk *disk, fmode_t mode, |
31841 | */ | 31864 | */ |
31842 | err = -EFAULT; | 31865 | err = -EFAULT; |
31843 | rq->cmd_len = cmdlen; | 31866 | rq->cmd_len = cmdlen; |
@@ -31917,7 +31940,7 @@ index f220d64..d359ad6 100644 | |||
31917 | struct apei_exec_context { | 31940 | struct apei_exec_context { |
31918 | u32 ip; | 31941 | u32 ip; |
31919 | diff --git a/drivers/acpi/apei/cper.c b/drivers/acpi/apei/cper.c | 31942 | diff --git a/drivers/acpi/apei/cper.c b/drivers/acpi/apei/cper.c |
31920 | index fefc2ca..12a535d 100644 | 31943 | index 33dc6a0..4b24b47 100644 |
31921 | --- a/drivers/acpi/apei/cper.c | 31944 | --- a/drivers/acpi/apei/cper.c |
31922 | +++ b/drivers/acpi/apei/cper.c | 31945 | +++ b/drivers/acpi/apei/cper.c |
31923 | @@ -39,12 +39,12 @@ | 31946 | @@ -39,12 +39,12 @@ |
@@ -32030,10 +32053,10 @@ index 7586544..636a2f0 100644 | |||
32030 | if (err) | 32053 | if (err) |
32031 | return err; | 32054 | return err; |
32032 | diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c | 32055 | diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c |
32033 | index ee255c6..747c68b 100644 | 32056 | index eb133c7..f571552 100644 |
32034 | --- a/drivers/acpi/processor_idle.c | 32057 | --- a/drivers/acpi/processor_idle.c |
32035 | +++ b/drivers/acpi/processor_idle.c | 32058 | +++ b/drivers/acpi/processor_idle.c |
32036 | @@ -986,7 +986,7 @@ static int acpi_processor_setup_cpuidle_states(struct acpi_processor *pr) | 32059 | @@ -994,7 +994,7 @@ static int acpi_processor_setup_cpuidle_states(struct acpi_processor *pr) |
32037 | { | 32060 | { |
32038 | int i, count = CPUIDLE_DRIVER_STATE_START; | 32061 | int i, count = CPUIDLE_DRIVER_STATE_START; |
32039 | struct acpi_processor_cx *cx; | 32062 | struct acpi_processor_cx *cx; |
@@ -32043,10 +32066,10 @@ index ee255c6..747c68b 100644 | |||
32043 | 32066 | ||
32044 | if (!pr->flags.power_setup_done) | 32067 | if (!pr->flags.power_setup_done) |
32045 | diff --git a/drivers/acpi/sysfs.c b/drivers/acpi/sysfs.c | 32068 | diff --git a/drivers/acpi/sysfs.c b/drivers/acpi/sysfs.c |
32046 | index 41c0504..f8c0836 100644 | 32069 | index fcae5fa..e9f71ea 100644 |
32047 | --- a/drivers/acpi/sysfs.c | 32070 | --- a/drivers/acpi/sysfs.c |
32048 | +++ b/drivers/acpi/sysfs.c | 32071 | +++ b/drivers/acpi/sysfs.c |
32049 | @@ -420,11 +420,11 @@ static u32 num_counters; | 32072 | @@ -423,11 +423,11 @@ static u32 num_counters; |
32050 | static struct attribute **all_attrs; | 32073 | static struct attribute **all_attrs; |
32051 | static u32 acpi_gpe_count; | 32074 | static u32 acpi_gpe_count; |
32052 | 32075 | ||
@@ -32061,7 +32084,7 @@ index 41c0504..f8c0836 100644 | |||
32061 | static void delete_gpe_attr_array(void) | 32084 | static void delete_gpe_attr_array(void) |
32062 | { | 32085 | { |
32063 | diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c | 32086 | diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c |
32064 | index 09f6047..3b3dab4 100644 | 32087 | index 7b9bdd8..37638ca 100644 |
32065 | --- a/drivers/ata/libahci.c | 32088 | --- a/drivers/ata/libahci.c |
32066 | +++ b/drivers/ata/libahci.c | 32089 | +++ b/drivers/ata/libahci.c |
32067 | @@ -1230,7 +1230,7 @@ int ahci_kick_engine(struct ata_port *ap) | 32090 | @@ -1230,7 +1230,7 @@ int ahci_kick_engine(struct ata_port *ap) |
@@ -32074,7 +32097,7 @@ index 09f6047..3b3dab4 100644 | |||
32074 | unsigned long timeout_msec) | 32097 | unsigned long timeout_msec) |
32075 | { | 32098 | { |
32076 | diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c | 32099 | diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c |
32077 | index 8038ee3..a19a6e6 100644 | 32100 | index adf002a..39bb8f9 100644 |
32078 | --- a/drivers/ata/libata-core.c | 32101 | --- a/drivers/ata/libata-core.c |
32079 | +++ b/drivers/ata/libata-core.c | 32102 | +++ b/drivers/ata/libata-core.c |
32080 | @@ -4792,7 +4792,7 @@ void ata_qc_free(struct ata_queued_cmd *qc) | 32103 | @@ -4792,7 +4792,7 @@ void ata_qc_free(struct ata_queued_cmd *qc) |
@@ -32115,20 +32138,20 @@ index 8038ee3..a19a6e6 100644 | |||
32115 | } | 32138 | } |
32116 | 32139 | ||
32117 | diff --git a/drivers/ata/pata_arasan_cf.c b/drivers/ata/pata_arasan_cf.c | 32140 | diff --git a/drivers/ata/pata_arasan_cf.c b/drivers/ata/pata_arasan_cf.c |
32118 | index 405022d..fb70e53 100644 | 32141 | index 7638121..357a965 100644 |
32119 | --- a/drivers/ata/pata_arasan_cf.c | 32142 | --- a/drivers/ata/pata_arasan_cf.c |
32120 | +++ b/drivers/ata/pata_arasan_cf.c | 32143 | +++ b/drivers/ata/pata_arasan_cf.c |
32121 | @@ -864,7 +864,9 @@ static int arasan_cf_probe(struct platform_device *pdev) | 32144 | @@ -865,7 +865,9 @@ static int arasan_cf_probe(struct platform_device *pdev) |
32122 | /* Handle platform specific quirks */ | 32145 | /* Handle platform specific quirks */ |
32123 | if (pdata->quirk) { | 32146 | if (quirk) { |
32124 | if (pdata->quirk & CF_BROKEN_PIO) { | 32147 | if (quirk & CF_BROKEN_PIO) { |
32125 | - ap->ops->set_piomode = NULL; | 32148 | - ap->ops->set_piomode = NULL; |
32126 | + pax_open_kernel(); | 32149 | + pax_open_kernel(); |
32127 | + *(void **)&ap->ops->set_piomode = NULL; | 32150 | + *(void **)&ap->ops->set_piomode = NULL; |
32128 | + pax_close_kernel(); | 32151 | + pax_close_kernel(); |
32129 | ap->pio_mask = 0; | 32152 | ap->pio_mask = 0; |
32130 | } | 32153 | } |
32131 | if (pdata->quirk & CF_BROKEN_MWDMA) | 32154 | if (quirk & CF_BROKEN_MWDMA) |
32132 | diff --git a/drivers/atm/adummy.c b/drivers/atm/adummy.c | 32155 | diff --git a/drivers/atm/adummy.c b/drivers/atm/adummy.c |
32133 | index f9b983a..887b9d8 100644 | 32156 | index f9b983a..887b9d8 100644 |
32134 | --- a/drivers/atm/adummy.c | 32157 | --- a/drivers/atm/adummy.c |
@@ -32382,7 +32405,7 @@ index 204814e..cede831 100644 | |||
32382 | fore200e->tx_sat++; | 32405 | fore200e->tx_sat++; |
32383 | DPRINTK(2, "tx queue of device %s is saturated, PDU dropped - heartbeat is %08x\n", | 32406 | DPRINTK(2, "tx queue of device %s is saturated, PDU dropped - heartbeat is %08x\n", |
32384 | diff --git a/drivers/atm/he.c b/drivers/atm/he.c | 32407 | diff --git a/drivers/atm/he.c b/drivers/atm/he.c |
32385 | index d689126..e78e412 100644 | 32408 | index 507362a..a845e57 100644 |
32386 | --- a/drivers/atm/he.c | 32409 | --- a/drivers/atm/he.c |
32387 | +++ b/drivers/atm/he.c | 32410 | +++ b/drivers/atm/he.c |
32388 | @@ -1698,7 +1698,7 @@ he_service_rbrq(struct he_dev *he_dev, int group) | 32411 | @@ -1698,7 +1698,7 @@ he_service_rbrq(struct he_dev *he_dev, int group) |
@@ -33139,7 +33162,7 @@ index d78b204..ecc1929 100644 | |||
33139 | fn(cont, dev, &ic->classdev); | 33162 | fn(cont, dev, &ic->classdev); |
33140 | else | 33163 | else |
33141 | diff --git a/drivers/base/bus.c b/drivers/base/bus.c | 33164 | diff --git a/drivers/base/bus.c b/drivers/base/bus.c |
33142 | index 519865b..e540db3 100644 | 33165 | index d414331..b4dd4ba 100644 |
33143 | --- a/drivers/base/bus.c | 33166 | --- a/drivers/base/bus.c |
33144 | +++ b/drivers/base/bus.c | 33167 | +++ b/drivers/base/bus.c |
33145 | @@ -1163,7 +1163,7 @@ int subsys_interface_register(struct subsys_interface *sif) | 33168 | @@ -1163,7 +1163,7 @@ int subsys_interface_register(struct subsys_interface *sif) |
@@ -33161,10 +33184,10 @@ index 519865b..e540db3 100644 | |||
33161 | subsys_dev_iter_init(&iter, subsys, NULL, NULL); | 33184 | subsys_dev_iter_init(&iter, subsys, NULL, NULL); |
33162 | while ((dev = subsys_dev_iter_next(&iter))) | 33185 | while ((dev = subsys_dev_iter_next(&iter))) |
33163 | diff --git a/drivers/base/devtmpfs.c b/drivers/base/devtmpfs.c | 33186 | diff --git a/drivers/base/devtmpfs.c b/drivers/base/devtmpfs.c |
33164 | index 01fc5b0..917801f 100644 | 33187 | index 7413d06..79155fa 100644 |
33165 | --- a/drivers/base/devtmpfs.c | 33188 | --- a/drivers/base/devtmpfs.c |
33166 | +++ b/drivers/base/devtmpfs.c | 33189 | +++ b/drivers/base/devtmpfs.c |
33167 | @@ -348,7 +348,7 @@ int devtmpfs_mount(const char *mntdir) | 33190 | @@ -354,7 +354,7 @@ int devtmpfs_mount(const char *mntdir) |
33168 | if (!thread) | 33191 | if (!thread) |
33169 | return 0; | 33192 | return 0; |
33170 | 33193 | ||
@@ -33173,7 +33196,7 @@ index 01fc5b0..917801f 100644 | |||
33173 | if (err) | 33196 | if (err) |
33174 | printk(KERN_INFO "devtmpfs: error mounting %i\n", err); | 33197 | printk(KERN_INFO "devtmpfs: error mounting %i\n", err); |
33175 | else | 33198 | else |
33176 | @@ -373,11 +373,11 @@ static int devtmpfsd(void *p) | 33199 | @@ -380,11 +380,11 @@ static int devtmpfsd(void *p) |
33177 | *err = sys_unshare(CLONE_NEWNS); | 33200 | *err = sys_unshare(CLONE_NEWNS); |
33178 | if (*err) | 33201 | if (*err) |
33179 | goto out; | 33202 | goto out; |
@@ -33189,10 +33212,10 @@ index 01fc5b0..917801f 100644 | |||
33189 | while (1) { | 33212 | while (1) { |
33190 | spin_lock(&req_lock); | 33213 | spin_lock(&req_lock); |
33191 | diff --git a/drivers/base/node.c b/drivers/base/node.c | 33214 | diff --git a/drivers/base/node.c b/drivers/base/node.c |
33192 | index fac124a..66bd4ab 100644 | 33215 | index 7616a77c..8f57f51 100644 |
33193 | --- a/drivers/base/node.c | 33216 | --- a/drivers/base/node.c |
33194 | +++ b/drivers/base/node.c | 33217 | +++ b/drivers/base/node.c |
33195 | @@ -625,7 +625,7 @@ static ssize_t print_nodes_state(enum node_states state, char *buf) | 33218 | @@ -626,7 +626,7 @@ static ssize_t print_nodes_state(enum node_states state, char *buf) |
33196 | struct node_attr { | 33219 | struct node_attr { |
33197 | struct device_attribute attr; | 33220 | struct device_attribute attr; |
33198 | enum node_states state; | 33221 | enum node_states state; |
@@ -33202,7 +33225,7 @@ index fac124a..66bd4ab 100644 | |||
33202 | static ssize_t show_node_state(struct device *dev, | 33225 | static ssize_t show_node_state(struct device *dev, |
33203 | struct device_attribute *attr, char *buf) | 33226 | struct device_attribute *attr, char *buf) |
33204 | diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c | 33227 | diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c |
33205 | index 9a6b05a..2fc8fb9 100644 | 33228 | index 7072404..76dcebd 100644 |
33206 | --- a/drivers/base/power/domain.c | 33229 | --- a/drivers/base/power/domain.c |
33207 | +++ b/drivers/base/power/domain.c | 33230 | +++ b/drivers/base/power/domain.c |
33208 | @@ -1850,7 +1850,7 @@ int pm_genpd_attach_cpuidle(struct generic_pm_domain *genpd, int state) | 33231 | @@ -1850,7 +1850,7 @@ int pm_genpd_attach_cpuidle(struct generic_pm_domain *genpd, int state) |
@@ -33298,10 +33321,10 @@ index e8d11b6..7b1b36f 100644 | |||
33298 | } | 33321 | } |
33299 | EXPORT_SYMBOL_GPL(unregister_syscore_ops); | 33322 | EXPORT_SYMBOL_GPL(unregister_syscore_ops); |
33300 | diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c | 33323 | diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c |
33301 | index dadea48..a1f3835 100644 | 33324 | index 62b6c2c..4a11354 100644 |
33302 | --- a/drivers/block/cciss.c | 33325 | --- a/drivers/block/cciss.c |
33303 | +++ b/drivers/block/cciss.c | 33326 | +++ b/drivers/block/cciss.c |
33304 | @@ -1184,6 +1184,8 @@ static int cciss_ioctl32_passthru(struct block_device *bdev, fmode_t mode, | 33327 | @@ -1189,6 +1189,8 @@ static int cciss_ioctl32_passthru(struct block_device *bdev, fmode_t mode, |
33305 | int err; | 33328 | int err; |
33306 | u32 cp; | 33329 | u32 cp; |
33307 | 33330 | ||
@@ -33310,7 +33333,7 @@ index dadea48..a1f3835 100644 | |||
33310 | err = 0; | 33333 | err = 0; |
33311 | err |= | 33334 | err |= |
33312 | copy_from_user(&arg64.LUN_info, &arg32->LUN_info, | 33335 | copy_from_user(&arg64.LUN_info, &arg32->LUN_info, |
33313 | @@ -3005,7 +3007,7 @@ static void start_io(ctlr_info_t *h) | 33336 | @@ -3010,7 +3012,7 @@ static void start_io(ctlr_info_t *h) |
33314 | while (!list_empty(&h->reqQ)) { | 33337 | while (!list_empty(&h->reqQ)) { |
33315 | c = list_entry(h->reqQ.next, CommandList_struct, list); | 33338 | c = list_entry(h->reqQ.next, CommandList_struct, list); |
33316 | /* can't do anything if fifo is full */ | 33339 | /* can't do anything if fifo is full */ |
@@ -33319,7 +33342,7 @@ index dadea48..a1f3835 100644 | |||
33319 | dev_warn(&h->pdev->dev, "fifo full\n"); | 33342 | dev_warn(&h->pdev->dev, "fifo full\n"); |
33320 | break; | 33343 | break; |
33321 | } | 33344 | } |
33322 | @@ -3015,7 +3017,7 @@ static void start_io(ctlr_info_t *h) | 33345 | @@ -3020,7 +3022,7 @@ static void start_io(ctlr_info_t *h) |
33323 | h->Qdepth--; | 33346 | h->Qdepth--; |
33324 | 33347 | ||
33325 | /* Tell the controller execute command */ | 33348 | /* Tell the controller execute command */ |
@@ -33328,7 +33351,7 @@ index dadea48..a1f3835 100644 | |||
33328 | 33351 | ||
33329 | /* Put job onto the completed Q */ | 33352 | /* Put job onto the completed Q */ |
33330 | addQ(&h->cmpQ, c); | 33353 | addQ(&h->cmpQ, c); |
33331 | @@ -3441,17 +3443,17 @@ startio: | 33354 | @@ -3446,17 +3448,17 @@ startio: |
33332 | 33355 | ||
33333 | static inline unsigned long get_next_completion(ctlr_info_t *h) | 33356 | static inline unsigned long get_next_completion(ctlr_info_t *h) |
33334 | { | 33357 | { |
@@ -33349,7 +33372,7 @@ index dadea48..a1f3835 100644 | |||
33349 | (h->interrupts_enabled == 0)); | 33372 | (h->interrupts_enabled == 0)); |
33350 | } | 33373 | } |
33351 | 33374 | ||
33352 | @@ -3484,7 +3486,7 @@ static inline u32 next_command(ctlr_info_t *h) | 33375 | @@ -3489,7 +3491,7 @@ static inline u32 next_command(ctlr_info_t *h) |
33353 | u32 a; | 33376 | u32 a; |
33354 | 33377 | ||
33355 | if (unlikely(!(h->transMethod & CFGTBL_Trans_Performant))) | 33378 | if (unlikely(!(h->transMethod & CFGTBL_Trans_Performant))) |
@@ -33358,7 +33381,7 @@ index dadea48..a1f3835 100644 | |||
33358 | 33381 | ||
33359 | if ((*(h->reply_pool_head) & 1) == (h->reply_pool_wraparound)) { | 33382 | if ((*(h->reply_pool_head) & 1) == (h->reply_pool_wraparound)) { |
33360 | a = *(h->reply_pool_head); /* Next cmd in ring buffer */ | 33383 | a = *(h->reply_pool_head); /* Next cmd in ring buffer */ |
33361 | @@ -4041,7 +4043,7 @@ static void cciss_put_controller_into_performant_mode(ctlr_info_t *h) | 33384 | @@ -4046,7 +4048,7 @@ static void cciss_put_controller_into_performant_mode(ctlr_info_t *h) |
33362 | trans_support & CFGTBL_Trans_use_short_tags); | 33385 | trans_support & CFGTBL_Trans_use_short_tags); |
33363 | 33386 | ||
33364 | /* Change the access methods to the performant access methods */ | 33387 | /* Change the access methods to the performant access methods */ |
@@ -33367,7 +33390,7 @@ index dadea48..a1f3835 100644 | |||
33367 | h->transMethod = CFGTBL_Trans_Performant; | 33390 | h->transMethod = CFGTBL_Trans_Performant; |
33368 | 33391 | ||
33369 | return; | 33392 | return; |
33370 | @@ -4310,7 +4312,7 @@ static int cciss_pci_init(ctlr_info_t *h) | 33393 | @@ -4319,7 +4321,7 @@ static int cciss_pci_init(ctlr_info_t *h) |
33371 | if (prod_index < 0) | 33394 | if (prod_index < 0) |
33372 | return -ENODEV; | 33395 | return -ENODEV; |
33373 | h->product_name = products[prod_index].product_name; | 33396 | h->product_name = products[prod_index].product_name; |
@@ -33376,7 +33399,7 @@ index dadea48..a1f3835 100644 | |||
33376 | 33399 | ||
33377 | if (cciss_board_disabled(h)) { | 33400 | if (cciss_board_disabled(h)) { |
33378 | dev_warn(&h->pdev->dev, "controller appears to be disabled\n"); | 33401 | dev_warn(&h->pdev->dev, "controller appears to be disabled\n"); |
33379 | @@ -5032,7 +5034,7 @@ reinit_after_soft_reset: | 33402 | @@ -5051,7 +5053,7 @@ reinit_after_soft_reset: |
33380 | } | 33403 | } |
33381 | 33404 | ||
33382 | /* make sure the board interrupts are off */ | 33405 | /* make sure the board interrupts are off */ |
@@ -33385,7 +33408,7 @@ index dadea48..a1f3835 100644 | |||
33385 | rc = cciss_request_irq(h, do_cciss_msix_intr, do_cciss_intx); | 33408 | rc = cciss_request_irq(h, do_cciss_msix_intr, do_cciss_intx); |
33386 | if (rc) | 33409 | if (rc) |
33387 | goto clean2; | 33410 | goto clean2; |
33388 | @@ -5082,7 +5084,7 @@ reinit_after_soft_reset: | 33411 | @@ -5101,7 +5103,7 @@ reinit_after_soft_reset: |
33389 | * fake ones to scoop up any residual completions. | 33412 | * fake ones to scoop up any residual completions. |
33390 | */ | 33413 | */ |
33391 | spin_lock_irqsave(&h->lock, flags); | 33414 | spin_lock_irqsave(&h->lock, flags); |
@@ -33394,7 +33417,7 @@ index dadea48..a1f3835 100644 | |||
33394 | spin_unlock_irqrestore(&h->lock, flags); | 33417 | spin_unlock_irqrestore(&h->lock, flags); |
33395 | free_irq(h->intr[h->intr_mode], h); | 33418 | free_irq(h->intr[h->intr_mode], h); |
33396 | rc = cciss_request_irq(h, cciss_msix_discard_completions, | 33419 | rc = cciss_request_irq(h, cciss_msix_discard_completions, |
33397 | @@ -5102,9 +5104,9 @@ reinit_after_soft_reset: | 33420 | @@ -5121,9 +5123,9 @@ reinit_after_soft_reset: |
33398 | dev_info(&h->pdev->dev, "Board READY.\n"); | 33421 | dev_info(&h->pdev->dev, "Board READY.\n"); |
33399 | dev_info(&h->pdev->dev, | 33422 | dev_info(&h->pdev->dev, |
33400 | "Waiting for stale completions to drain.\n"); | 33423 | "Waiting for stale completions to drain.\n"); |
@@ -33406,7 +33429,7 @@ index dadea48..a1f3835 100644 | |||
33406 | 33429 | ||
33407 | rc = controller_reset_failed(h->cfgtable); | 33430 | rc = controller_reset_failed(h->cfgtable); |
33408 | if (rc) | 33431 | if (rc) |
33409 | @@ -5127,7 +5129,7 @@ reinit_after_soft_reset: | 33432 | @@ -5146,7 +5148,7 @@ reinit_after_soft_reset: |
33410 | cciss_scsi_setup(h); | 33433 | cciss_scsi_setup(h); |
33411 | 33434 | ||
33412 | /* Turn the interrupts on so we can service requests */ | 33435 | /* Turn the interrupts on so we can service requests */ |
@@ -33415,7 +33438,7 @@ index dadea48..a1f3835 100644 | |||
33415 | 33438 | ||
33416 | /* Get the firmware version */ | 33439 | /* Get the firmware version */ |
33417 | inq_buff = kzalloc(sizeof(InquiryData_struct), GFP_KERNEL); | 33440 | inq_buff = kzalloc(sizeof(InquiryData_struct), GFP_KERNEL); |
33418 | @@ -5199,7 +5201,7 @@ static void cciss_shutdown(struct pci_dev *pdev) | 33441 | @@ -5218,7 +5220,7 @@ static void cciss_shutdown(struct pci_dev *pdev) |
33419 | kfree(flush_buf); | 33442 | kfree(flush_buf); |
33420 | if (return_code != IO_OK) | 33443 | if (return_code != IO_OK) |
33421 | dev_warn(&h->pdev->dev, "Error flushing cache\n"); | 33444 | dev_warn(&h->pdev->dev, "Error flushing cache\n"); |
@@ -33438,7 +33461,7 @@ index 7fda30e..eb5dfe0 100644 | |||
33438 | /* queue and queue Info */ | 33461 | /* queue and queue Info */ |
33439 | struct list_head reqQ; | 33462 | struct list_head reqQ; |
33440 | diff --git a/drivers/block/cpqarray.c b/drivers/block/cpqarray.c | 33463 | diff --git a/drivers/block/cpqarray.c b/drivers/block/cpqarray.c |
33441 | index 3f08713..87d4b4a 100644 | 33464 | index 639d26b..fd6ad1f 100644 |
33442 | --- a/drivers/block/cpqarray.c | 33465 | --- a/drivers/block/cpqarray.c |
33443 | +++ b/drivers/block/cpqarray.c | 33466 | +++ b/drivers/block/cpqarray.c |
33444 | @@ -404,7 +404,7 @@ static int cpqarray_register_ctlr(int i, struct pci_dev *pdev) | 33467 | @@ -404,7 +404,7 @@ static int cpqarray_register_ctlr(int i, struct pci_dev *pdev) |
@@ -33477,7 +33500,7 @@ index 3f08713..87d4b4a 100644 | |||
33477 | hba[ctlr]->ctlr = ctlr; | 33500 | hba[ctlr]->ctlr = ctlr; |
33478 | hba[ctlr]->board_id = board_id; | 33501 | hba[ctlr]->board_id = board_id; |
33479 | hba[ctlr]->pci_dev = NULL; /* not PCI */ | 33502 | hba[ctlr]->pci_dev = NULL; /* not PCI */ |
33480 | @@ -980,7 +980,7 @@ static void start_io(ctlr_info_t *h) | 33503 | @@ -978,7 +978,7 @@ static void start_io(ctlr_info_t *h) |
33481 | 33504 | ||
33482 | while((c = h->reqQ) != NULL) { | 33505 | while((c = h->reqQ) != NULL) { |
33483 | /* Can't do anything if we're busy */ | 33506 | /* Can't do anything if we're busy */ |
@@ -33486,7 +33509,7 @@ index 3f08713..87d4b4a 100644 | |||
33486 | return; | 33509 | return; |
33487 | 33510 | ||
33488 | /* Get the first entry from the request Q */ | 33511 | /* Get the first entry from the request Q */ |
33489 | @@ -988,7 +988,7 @@ static void start_io(ctlr_info_t *h) | 33512 | @@ -986,7 +986,7 @@ static void start_io(ctlr_info_t *h) |
33490 | h->Qdepth--; | 33513 | h->Qdepth--; |
33491 | 33514 | ||
33492 | /* Tell the controller to do our bidding */ | 33515 | /* Tell the controller to do our bidding */ |
@@ -33495,7 +33518,7 @@ index 3f08713..87d4b4a 100644 | |||
33495 | 33518 | ||
33496 | /* Get onto the completion Q */ | 33519 | /* Get onto the completion Q */ |
33497 | addQ(&h->cmpQ, c); | 33520 | addQ(&h->cmpQ, c); |
33498 | @@ -1050,7 +1050,7 @@ static irqreturn_t do_ida_intr(int irq, void *dev_id) | 33521 | @@ -1048,7 +1048,7 @@ static irqreturn_t do_ida_intr(int irq, void *dev_id) |
33499 | unsigned long flags; | 33522 | unsigned long flags; |
33500 | __u32 a,a1; | 33523 | __u32 a,a1; |
33501 | 33524 | ||
@@ -33504,7 +33527,7 @@ index 3f08713..87d4b4a 100644 | |||
33504 | /* Is this interrupt for us? */ | 33527 | /* Is this interrupt for us? */ |
33505 | if (istat == 0) | 33528 | if (istat == 0) |
33506 | return IRQ_NONE; | 33529 | return IRQ_NONE; |
33507 | @@ -1061,7 +1061,7 @@ static irqreturn_t do_ida_intr(int irq, void *dev_id) | 33530 | @@ -1059,7 +1059,7 @@ static irqreturn_t do_ida_intr(int irq, void *dev_id) |
33508 | */ | 33531 | */ |
33509 | spin_lock_irqsave(IDA_LOCK(h->ctlr), flags); | 33532 | spin_lock_irqsave(IDA_LOCK(h->ctlr), flags); |
33510 | if (istat & FIFO_NOT_EMPTY) { | 33533 | if (istat & FIFO_NOT_EMPTY) { |
@@ -33513,7 +33536,7 @@ index 3f08713..87d4b4a 100644 | |||
33513 | a1 = a; a &= ~3; | 33536 | a1 = a; a &= ~3; |
33514 | if ((c = h->cmpQ) == NULL) | 33537 | if ((c = h->cmpQ) == NULL) |
33515 | { | 33538 | { |
33516 | @@ -1195,6 +1195,7 @@ out_passthru: | 33539 | @@ -1193,6 +1193,7 @@ out_passthru: |
33517 | ida_pci_info_struct pciinfo; | 33540 | ida_pci_info_struct pciinfo; |
33518 | 33541 | ||
33519 | if (!arg) return -EINVAL; | 33542 | if (!arg) return -EINVAL; |
@@ -33521,7 +33544,7 @@ index 3f08713..87d4b4a 100644 | |||
33521 | pciinfo.bus = host->pci_dev->bus->number; | 33544 | pciinfo.bus = host->pci_dev->bus->number; |
33522 | pciinfo.dev_fn = host->pci_dev->devfn; | 33545 | pciinfo.dev_fn = host->pci_dev->devfn; |
33523 | pciinfo.board_id = host->board_id; | 33546 | pciinfo.board_id = host->board_id; |
33524 | @@ -1449,11 +1450,11 @@ static int sendcmd( | 33547 | @@ -1447,11 +1448,11 @@ static int sendcmd( |
33525 | /* | 33548 | /* |
33526 | * Disable interrupt | 33549 | * Disable interrupt |
33527 | */ | 33550 | */ |
@@ -33535,7 +33558,7 @@ index 3f08713..87d4b4a 100644 | |||
33535 | if (temp != 0) { | 33558 | if (temp != 0) { |
33536 | break; | 33559 | break; |
33537 | } | 33560 | } |
33538 | @@ -1466,7 +1467,7 @@ DBG( | 33561 | @@ -1464,7 +1465,7 @@ DBG( |
33539 | /* | 33562 | /* |
33540 | * Send the cmd | 33563 | * Send the cmd |
33541 | */ | 33564 | */ |
@@ -33544,7 +33567,7 @@ index 3f08713..87d4b4a 100644 | |||
33544 | complete = pollcomplete(ctlr); | 33567 | complete = pollcomplete(ctlr); |
33545 | 33568 | ||
33546 | pci_unmap_single(info_p->pci_dev, (dma_addr_t) c->req.sg[0].addr, | 33569 | pci_unmap_single(info_p->pci_dev, (dma_addr_t) c->req.sg[0].addr, |
33547 | @@ -1549,9 +1550,9 @@ static int revalidate_allvol(ctlr_info_t *host) | 33570 | @@ -1547,9 +1548,9 @@ static int revalidate_allvol(ctlr_info_t *host) |
33548 | * we check the new geometry. Then turn interrupts back on when | 33571 | * we check the new geometry. Then turn interrupts back on when |
33549 | * we're done. | 33572 | * we're done. |
33550 | */ | 33573 | */ |
@@ -33556,7 +33579,7 @@ index 3f08713..87d4b4a 100644 | |||
33556 | 33579 | ||
33557 | for(i=0; i<NWD; i++) { | 33580 | for(i=0; i<NWD; i++) { |
33558 | struct gendisk *disk = ida_gendisk[ctlr][i]; | 33581 | struct gendisk *disk = ida_gendisk[ctlr][i]; |
33559 | @@ -1591,7 +1592,7 @@ static int pollcomplete(int ctlr) | 33582 | @@ -1589,7 +1590,7 @@ static int pollcomplete(int ctlr) |
33560 | /* Wait (up to 2 seconds) for a command to complete */ | 33583 | /* Wait (up to 2 seconds) for a command to complete */ |
33561 | 33584 | ||
33562 | for (i = 200000; i > 0; i--) { | 33585 | for (i = 200000; i > 0; i--) { |
@@ -33579,7 +33602,7 @@ index be73e9d..7fbf140 100644 | |||
33579 | cmdlist_t *reqQ; | 33602 | cmdlist_t *reqQ; |
33580 | cmdlist_t *cmpQ; | 33603 | cmdlist_t *cmpQ; |
33581 | diff --git a/drivers/block/drbd/drbd_int.h b/drivers/block/drbd/drbd_int.h | 33604 | diff --git a/drivers/block/drbd/drbd_int.h b/drivers/block/drbd/drbd_int.h |
33582 | index 6b51afa..17e1191 100644 | 33605 | index f943aac..99bfd19 100644 |
33583 | --- a/drivers/block/drbd/drbd_int.h | 33606 | --- a/drivers/block/drbd/drbd_int.h |
33584 | +++ b/drivers/block/drbd/drbd_int.h | 33607 | +++ b/drivers/block/drbd/drbd_int.h |
33585 | @@ -582,7 +582,7 @@ struct drbd_epoch { | 33608 | @@ -582,7 +582,7 @@ struct drbd_epoch { |
@@ -33591,16 +33614,16 @@ index 6b51afa..17e1191 100644 | |||
33591 | atomic_t active; /* increased on every req. added, and dec on every finished. */ | 33614 | atomic_t active; /* increased on every req. added, and dec on every finished. */ |
33592 | unsigned long flags; | 33615 | unsigned long flags; |
33593 | }; | 33616 | }; |
33594 | @@ -1011,7 +1011,7 @@ struct drbd_conf { | 33617 | @@ -1021,7 +1021,7 @@ struct drbd_conf { |
33618 | unsigned int al_tr_number; | ||
33595 | int al_tr_cycle; | 33619 | int al_tr_cycle; |
33596 | int al_tr_pos; /* position of the next transaction in the journal */ | ||
33597 | wait_queue_head_t seq_wait; | 33620 | wait_queue_head_t seq_wait; |
33598 | - atomic_t packet_seq; | 33621 | - atomic_t packet_seq; |
33599 | + atomic_unchecked_t packet_seq; | 33622 | + atomic_unchecked_t packet_seq; |
33600 | unsigned int peer_seq; | 33623 | unsigned int peer_seq; |
33601 | spinlock_t peer_seq_lock; | 33624 | spinlock_t peer_seq_lock; |
33602 | unsigned int minor; | 33625 | unsigned int minor; |
33603 | @@ -1527,7 +1527,7 @@ static inline int drbd_setsockopt(struct socket *sock, int level, int optname, | 33626 | @@ -1562,7 +1562,7 @@ static inline int drbd_setsockopt(struct socket *sock, int level, int optname, |
33604 | char __user *uoptval; | 33627 | char __user *uoptval; |
33605 | int err; | 33628 | int err; |
33606 | 33629 | ||
@@ -33610,7 +33633,7 @@ index 6b51afa..17e1191 100644 | |||
33610 | set_fs(KERNEL_DS); | 33633 | set_fs(KERNEL_DS); |
33611 | if (level == SOL_SOCKET) | 33634 | if (level == SOL_SOCKET) |
33612 | diff --git a/drivers/block/drbd/drbd_main.c b/drivers/block/drbd/drbd_main.c | 33635 | diff --git a/drivers/block/drbd/drbd_main.c b/drivers/block/drbd/drbd_main.c |
33613 | index 54d03d4..332f311 100644 | 33636 | index a5dca6a..bb27967 100644 |
33614 | --- a/drivers/block/drbd/drbd_main.c | 33637 | --- a/drivers/block/drbd/drbd_main.c |
33615 | +++ b/drivers/block/drbd/drbd_main.c | 33638 | +++ b/drivers/block/drbd/drbd_main.c |
33616 | @@ -1317,7 +1317,7 @@ static int _drbd_send_ack(struct drbd_conf *mdev, enum drbd_packet cmd, | 33639 | @@ -1317,7 +1317,7 @@ static int _drbd_send_ack(struct drbd_conf *mdev, enum drbd_packet cmd, |
@@ -33643,10 +33666,10 @@ index 54d03d4..332f311 100644 | |||
33643 | 33666 | ||
33644 | idr_destroy(&tconn->volumes); | 33667 | idr_destroy(&tconn->volumes); |
33645 | diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c | 33668 | diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c |
33646 | index 2f5fffd..b22a1ae 100644 | 33669 | index 4222aff..1f79506 100644 |
33647 | --- a/drivers/block/drbd/drbd_receiver.c | 33670 | --- a/drivers/block/drbd/drbd_receiver.c |
33648 | +++ b/drivers/block/drbd/drbd_receiver.c | 33671 | +++ b/drivers/block/drbd/drbd_receiver.c |
33649 | @@ -833,7 +833,7 @@ int drbd_connected(struct drbd_conf *mdev) | 33672 | @@ -834,7 +834,7 @@ int drbd_connected(struct drbd_conf *mdev) |
33650 | { | 33673 | { |
33651 | int err; | 33674 | int err; |
33652 | 33675 | ||
@@ -33655,7 +33678,7 @@ index 2f5fffd..b22a1ae 100644 | |||
33655 | mdev->peer_seq = 0; | 33678 | mdev->peer_seq = 0; |
33656 | 33679 | ||
33657 | mdev->state_mutex = mdev->tconn->agreed_pro_version < 100 ? | 33680 | mdev->state_mutex = mdev->tconn->agreed_pro_version < 100 ? |
33658 | @@ -1191,7 +1191,7 @@ static enum finish_epoch drbd_may_finish_epoch(struct drbd_tconn *tconn, | 33681 | @@ -1193,7 +1193,7 @@ static enum finish_epoch drbd_may_finish_epoch(struct drbd_tconn *tconn, |
33659 | do { | 33682 | do { |
33660 | next_epoch = NULL; | 33683 | next_epoch = NULL; |
33661 | 33684 | ||
@@ -33664,7 +33687,7 @@ index 2f5fffd..b22a1ae 100644 | |||
33664 | 33687 | ||
33665 | switch (ev & ~EV_CLEANUP) { | 33688 | switch (ev & ~EV_CLEANUP) { |
33666 | case EV_PUT: | 33689 | case EV_PUT: |
33667 | @@ -1231,7 +1231,7 @@ static enum finish_epoch drbd_may_finish_epoch(struct drbd_tconn *tconn, | 33690 | @@ -1233,7 +1233,7 @@ static enum finish_epoch drbd_may_finish_epoch(struct drbd_tconn *tconn, |
33668 | rv = FE_DESTROYED; | 33691 | rv = FE_DESTROYED; |
33669 | } else { | 33692 | } else { |
33670 | epoch->flags = 0; | 33693 | epoch->flags = 0; |
@@ -33673,7 +33696,7 @@ index 2f5fffd..b22a1ae 100644 | |||
33673 | /* atomic_set(&epoch->active, 0); is already zero */ | 33696 | /* atomic_set(&epoch->active, 0); is already zero */ |
33674 | if (rv == FE_STILL_LIVE) | 33697 | if (rv == FE_STILL_LIVE) |
33675 | rv = FE_RECYCLED; | 33698 | rv = FE_RECYCLED; |
33676 | @@ -1449,7 +1449,7 @@ static int receive_Barrier(struct drbd_tconn *tconn, struct packet_info *pi) | 33699 | @@ -1451,7 +1451,7 @@ static int receive_Barrier(struct drbd_tconn *tconn, struct packet_info *pi) |
33677 | conn_wait_active_ee_empty(tconn); | 33700 | conn_wait_active_ee_empty(tconn); |
33678 | drbd_flush(tconn); | 33701 | drbd_flush(tconn); |
33679 | 33702 | ||
@@ -33682,7 +33705,7 @@ index 2f5fffd..b22a1ae 100644 | |||
33682 | epoch = kmalloc(sizeof(struct drbd_epoch), GFP_NOIO); | 33705 | epoch = kmalloc(sizeof(struct drbd_epoch), GFP_NOIO); |
33683 | if (epoch) | 33706 | if (epoch) |
33684 | break; | 33707 | break; |
33685 | @@ -1462,11 +1462,11 @@ static int receive_Barrier(struct drbd_tconn *tconn, struct packet_info *pi) | 33708 | @@ -1464,11 +1464,11 @@ static int receive_Barrier(struct drbd_tconn *tconn, struct packet_info *pi) |
33686 | } | 33709 | } |
33687 | 33710 | ||
33688 | epoch->flags = 0; | 33711 | epoch->flags = 0; |
@@ -33696,7 +33719,7 @@ index 2f5fffd..b22a1ae 100644 | |||
33696 | list_add(&epoch->list, &tconn->current_epoch->list); | 33719 | list_add(&epoch->list, &tconn->current_epoch->list); |
33697 | tconn->current_epoch = epoch; | 33720 | tconn->current_epoch = epoch; |
33698 | tconn->epochs++; | 33721 | tconn->epochs++; |
33699 | @@ -2170,7 +2170,7 @@ static int receive_Data(struct drbd_tconn *tconn, struct packet_info *pi) | 33722 | @@ -2172,7 +2172,7 @@ static int receive_Data(struct drbd_tconn *tconn, struct packet_info *pi) |
33700 | 33723 | ||
33701 | err = wait_for_and_update_peer_seq(mdev, peer_seq); | 33724 | err = wait_for_and_update_peer_seq(mdev, peer_seq); |
33702 | drbd_send_ack_dp(mdev, P_NEG_ACK, p, pi->size); | 33725 | drbd_send_ack_dp(mdev, P_NEG_ACK, p, pi->size); |
@@ -33705,7 +33728,7 @@ index 2f5fffd..b22a1ae 100644 | |||
33705 | err2 = drbd_drain_block(mdev, pi->size); | 33728 | err2 = drbd_drain_block(mdev, pi->size); |
33706 | if (!err) | 33729 | if (!err) |
33707 | err = err2; | 33730 | err = err2; |
33708 | @@ -2204,7 +2204,7 @@ static int receive_Data(struct drbd_tconn *tconn, struct packet_info *pi) | 33731 | @@ -2206,7 +2206,7 @@ static int receive_Data(struct drbd_tconn *tconn, struct packet_info *pi) |
33709 | 33732 | ||
33710 | spin_lock(&tconn->epoch_lock); | 33733 | spin_lock(&tconn->epoch_lock); |
33711 | peer_req->epoch = tconn->current_epoch; | 33734 | peer_req->epoch = tconn->current_epoch; |
@@ -33714,7 +33737,7 @@ index 2f5fffd..b22a1ae 100644 | |||
33714 | atomic_inc(&peer_req->epoch->active); | 33737 | atomic_inc(&peer_req->epoch->active); |
33715 | spin_unlock(&tconn->epoch_lock); | 33738 | spin_unlock(&tconn->epoch_lock); |
33716 | 33739 | ||
33717 | @@ -4345,7 +4345,7 @@ struct data_cmd { | 33740 | @@ -4347,7 +4347,7 @@ struct data_cmd { |
33718 | int expect_payload; | 33741 | int expect_payload; |
33719 | size_t pkt_size; | 33742 | size_t pkt_size; |
33720 | int (*fn)(struct drbd_tconn *, struct packet_info *); | 33743 | int (*fn)(struct drbd_tconn *, struct packet_info *); |
@@ -33723,7 +33746,7 @@ index 2f5fffd..b22a1ae 100644 | |||
33723 | 33746 | ||
33724 | static struct data_cmd drbd_cmd_handler[] = { | 33747 | static struct data_cmd drbd_cmd_handler[] = { |
33725 | [P_DATA] = { 1, sizeof(struct p_data), receive_Data }, | 33748 | [P_DATA] = { 1, sizeof(struct p_data), receive_Data }, |
33726 | @@ -4465,7 +4465,7 @@ static void conn_disconnect(struct drbd_tconn *tconn) | 33749 | @@ -4467,7 +4467,7 @@ static void conn_disconnect(struct drbd_tconn *tconn) |
33727 | if (!list_empty(&tconn->current_epoch->list)) | 33750 | if (!list_empty(&tconn->current_epoch->list)) |
33728 | conn_err(tconn, "ASSERTION FAILED: tconn->current_epoch->list not empty\n"); | 33751 | conn_err(tconn, "ASSERTION FAILED: tconn->current_epoch->list not empty\n"); |
33729 | /* ok, no more ee's on the fly, it is safe to reset the epoch_size */ | 33752 | /* ok, no more ee's on the fly, it is safe to reset the epoch_size */ |
@@ -33732,7 +33755,7 @@ index 2f5fffd..b22a1ae 100644 | |||
33732 | tconn->send.seen_any_write_yet = false; | 33755 | tconn->send.seen_any_write_yet = false; |
33733 | 33756 | ||
33734 | conn_info(tconn, "Connection closed\n"); | 33757 | conn_info(tconn, "Connection closed\n"); |
33735 | @@ -5221,7 +5221,7 @@ static int tconn_finish_peer_reqs(struct drbd_tconn *tconn) | 33758 | @@ -5223,7 +5223,7 @@ static int tconn_finish_peer_reqs(struct drbd_tconn *tconn) |
33736 | struct asender_cmd { | 33759 | struct asender_cmd { |
33737 | size_t pkt_size; | 33760 | size_t pkt_size; |
33738 | int (*fn)(struct drbd_tconn *tconn, struct packet_info *); | 33761 | int (*fn)(struct drbd_tconn *tconn, struct packet_info *); |
@@ -33742,28 +33765,28 @@ index 2f5fffd..b22a1ae 100644 | |||
33742 | static struct asender_cmd asender_tbl[] = { | 33765 | static struct asender_cmd asender_tbl[] = { |
33743 | [P_PING] = { 0, got_Ping }, | 33766 | [P_PING] = { 0, got_Ping }, |
33744 | diff --git a/drivers/block/loop.c b/drivers/block/loop.c | 33767 | diff --git a/drivers/block/loop.c b/drivers/block/loop.c |
33745 | index dfe7583..83768bb 100644 | 33768 | index d92d50f..a7e9d97 100644 |
33746 | --- a/drivers/block/loop.c | 33769 | --- a/drivers/block/loop.c |
33747 | +++ b/drivers/block/loop.c | 33770 | +++ b/drivers/block/loop.c |
33748 | @@ -231,7 +231,7 @@ static int __do_lo_send_write(struct file *file, | 33771 | @@ -232,7 +232,7 @@ static int __do_lo_send_write(struct file *file, |
33749 | mm_segment_t old_fs = get_fs(); | ||
33750 | 33772 | ||
33773 | file_start_write(file); | ||
33751 | set_fs(get_ds()); | 33774 | set_fs(get_ds()); |
33752 | - bw = file->f_op->write(file, buf, len, &pos); | 33775 | - bw = file->f_op->write(file, buf, len, &pos); |
33753 | + bw = file->f_op->write(file, (const char __force_user *)buf, len, &pos); | 33776 | + bw = file->f_op->write(file, (const char __force_user *)buf, len, &pos); |
33754 | set_fs(old_fs); | 33777 | set_fs(old_fs); |
33778 | file_end_write(file); | ||
33755 | if (likely(bw == len)) | 33779 | if (likely(bw == len)) |
33756 | return 0; | ||
33757 | diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c | 33780 | diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c |
33758 | index 2e7de7a..ed86dc0 100644 | 33781 | index f5d0ea1..c62380a 100644 |
33759 | --- a/drivers/block/pktcdvd.c | 33782 | --- a/drivers/block/pktcdvd.c |
33760 | +++ b/drivers/block/pktcdvd.c | 33783 | +++ b/drivers/block/pktcdvd.c |
33761 | @@ -83,7 +83,7 @@ | 33784 | @@ -84,7 +84,7 @@ |
33762 | |||
33763 | #define MAX_SPEED 0xffff | 33785 | #define MAX_SPEED 0xffff |
33764 | 33786 | ||
33765 | -#define ZONE(sector, pd) (((sector) + (pd)->offset) & ~((pd)->settings.size - 1)) | 33787 | #define ZONE(sector, pd) (((sector) + (pd)->offset) & \ |
33766 | +#define ZONE(sector, pd) (((sector) + (pd)->offset) & ~((pd)->settings.size - 1UL)) | 33788 | - ~(sector_t)((pd)->settings.size - 1)) |
33789 | + ~(sector_t)((pd)->settings.size - 1UL)) | ||
33767 | 33790 | ||
33768 | static DEFINE_MUTEX(pktcdvd_mutex); | 33791 | static DEFINE_MUTEX(pktcdvd_mutex); |
33769 | static struct pktcdvd_device *pkt_devs[MAX_WRITERS]; | 33792 | static struct pktcdvd_device *pkt_devs[MAX_WRITERS]; |
@@ -33820,7 +33843,7 @@ index 8a3aff7..d7538c2 100644 | |||
33820 | return 1; | 33843 | return 1; |
33821 | 33844 | ||
33822 | diff --git a/drivers/cdrom/gdrom.c b/drivers/cdrom/gdrom.c | 33845 | diff --git a/drivers/cdrom/gdrom.c b/drivers/cdrom/gdrom.c |
33823 | index d59cdcb..11afddf 100644 | 33846 | index 4afcb65..a68a32d 100644 |
33824 | --- a/drivers/cdrom/gdrom.c | 33847 | --- a/drivers/cdrom/gdrom.c |
33825 | +++ b/drivers/cdrom/gdrom.c | 33848 | +++ b/drivers/cdrom/gdrom.c |
33826 | @@ -491,7 +491,6 @@ static struct cdrom_device_ops gdrom_ops = { | 33849 | @@ -491,7 +491,6 @@ static struct cdrom_device_ops gdrom_ops = { |
@@ -33889,10 +33912,10 @@ index 2e04433..771f2cc 100644 | |||
33889 | kfree(segment); | 33912 | kfree(segment); |
33890 | return -EFAULT; | 33913 | return -EFAULT; |
33891 | diff --git a/drivers/char/genrtc.c b/drivers/char/genrtc.c | 33914 | diff --git a/drivers/char/genrtc.c b/drivers/char/genrtc.c |
33892 | index 21cb980..f15107c 100644 | 33915 | index 4f94375..413694e 100644 |
33893 | --- a/drivers/char/genrtc.c | 33916 | --- a/drivers/char/genrtc.c |
33894 | +++ b/drivers/char/genrtc.c | 33917 | +++ b/drivers/char/genrtc.c |
33895 | @@ -272,6 +272,7 @@ static int gen_rtc_ioctl(struct file *file, | 33918 | @@ -273,6 +273,7 @@ static int gen_rtc_ioctl(struct file *file, |
33896 | switch (cmd) { | 33919 | switch (cmd) { |
33897 | 33920 | ||
33898 | case RTC_PLL_GET: | 33921 | case RTC_PLL_GET: |
@@ -33927,7 +33950,7 @@ index 86fe45c..c0ea948 100644 | |||
33927 | } | 33950 | } |
33928 | 33951 | ||
33929 | diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c | 33952 | diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c |
33930 | index 053201b..8335cce 100644 | 33953 | index 4445fa1..7c6de37 100644 |
33931 | --- a/drivers/char/ipmi/ipmi_msghandler.c | 33954 | --- a/drivers/char/ipmi/ipmi_msghandler.c |
33932 | +++ b/drivers/char/ipmi/ipmi_msghandler.c | 33955 | +++ b/drivers/char/ipmi/ipmi_msghandler.c |
33933 | @@ -420,7 +420,7 @@ struct ipmi_smi { | 33956 | @@ -420,7 +420,7 @@ struct ipmi_smi { |
@@ -33951,7 +33974,7 @@ index 053201b..8335cce 100644 | |||
33951 | 33974 | ||
33952 | static int is_lan_addr(struct ipmi_addr *addr) | 33975 | static int is_lan_addr(struct ipmi_addr *addr) |
33953 | { | 33976 | { |
33954 | @@ -2884,7 +2884,7 @@ int ipmi_register_smi(struct ipmi_smi_handlers *handlers, | 33977 | @@ -2883,7 +2883,7 @@ int ipmi_register_smi(struct ipmi_smi_handlers *handlers, |
33955 | INIT_LIST_HEAD(&intf->cmd_rcvrs); | 33978 | INIT_LIST_HEAD(&intf->cmd_rcvrs); |
33956 | init_waitqueue_head(&intf->waitq); | 33979 | init_waitqueue_head(&intf->waitq); |
33957 | for (i = 0; i < IPMI_NUM_STATS; i++) | 33980 | for (i = 0; i < IPMI_NUM_STATS; i++) |
@@ -33961,7 +33984,7 @@ index 053201b..8335cce 100644 | |||
33961 | intf->proc_dir = NULL; | 33984 | intf->proc_dir = NULL; |
33962 | 33985 | ||
33963 | diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c | 33986 | diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c |
33964 | index 0ac9b45..6179fb5 100644 | 33987 | index af4b23f..79806fc 100644 |
33965 | --- a/drivers/char/ipmi/ipmi_si_intf.c | 33988 | --- a/drivers/char/ipmi/ipmi_si_intf.c |
33966 | +++ b/drivers/char/ipmi/ipmi_si_intf.c | 33989 | +++ b/drivers/char/ipmi/ipmi_si_intf.c |
33967 | @@ -275,7 +275,7 @@ struct smi_info { | 33990 | @@ -275,7 +275,7 @@ struct smi_info { |
@@ -33985,7 +34008,7 @@ index 0ac9b45..6179fb5 100644 | |||
33985 | 34008 | ||
33986 | #define SI_MAX_PARMS 4 | 34009 | #define SI_MAX_PARMS 4 |
33987 | 34010 | ||
33988 | @@ -3254,7 +3254,7 @@ static int try_smi_init(struct smi_info *new_smi) | 34011 | @@ -3258,7 +3258,7 @@ static int try_smi_init(struct smi_info *new_smi) |
33989 | atomic_set(&new_smi->req_events, 0); | 34012 | atomic_set(&new_smi->req_events, 0); |
33990 | new_smi->run_to_completion = 0; | 34013 | new_smi->run_to_completion = 0; |
33991 | for (i = 0; i < SI_NUM_STATS; i++) | 34014 | for (i = 0; i < SI_NUM_STATS; i++) |
@@ -33995,7 +34018,7 @@ index 0ac9b45..6179fb5 100644 | |||
33995 | new_smi->interrupt_disabled = 1; | 34018 | new_smi->interrupt_disabled = 1; |
33996 | atomic_set(&new_smi->stop_operation, 0); | 34019 | atomic_set(&new_smi->stop_operation, 0); |
33997 | diff --git a/drivers/char/mem.c b/drivers/char/mem.c | 34020 | diff --git a/drivers/char/mem.c b/drivers/char/mem.c |
33998 | index 2c644af..4b7aede 100644 | 34021 | index 1ccbe94..6ad651a 100644 |
33999 | --- a/drivers/char/mem.c | 34022 | --- a/drivers/char/mem.c |
34000 | +++ b/drivers/char/mem.c | 34023 | +++ b/drivers/char/mem.c |
34001 | @@ -18,6 +18,7 @@ | 34024 | @@ -18,6 +18,7 @@ |
@@ -34006,7 +34029,7 @@ index 2c644af..4b7aede 100644 | |||
34006 | #include <linux/ptrace.h> | 34029 | #include <linux/ptrace.h> |
34007 | #include <linux/device.h> | 34030 | #include <linux/device.h> |
34008 | #include <linux/highmem.h> | 34031 | #include <linux/highmem.h> |
34009 | @@ -37,6 +38,10 @@ | 34032 | @@ -38,6 +39,10 @@ |
34010 | 34033 | ||
34011 | #define DEVPORT_MINOR 4 | 34034 | #define DEVPORT_MINOR 4 |
34012 | 34035 | ||
@@ -34017,7 +34040,7 @@ index 2c644af..4b7aede 100644 | |||
34017 | static inline unsigned long size_inside_page(unsigned long start, | 34040 | static inline unsigned long size_inside_page(unsigned long start, |
34018 | unsigned long size) | 34041 | unsigned long size) |
34019 | { | 34042 | { |
34020 | @@ -68,9 +73,13 @@ static inline int range_is_allowed(unsigned long pfn, unsigned long size) | 34043 | @@ -69,9 +74,13 @@ static inline int range_is_allowed(unsigned long pfn, unsigned long size) |
34021 | 34044 | ||
34022 | while (cursor < to) { | 34045 | while (cursor < to) { |
34023 | if (!devmem_is_allowed(pfn)) { | 34046 | if (!devmem_is_allowed(pfn)) { |
@@ -34031,7 +34054,7 @@ index 2c644af..4b7aede 100644 | |||
34031 | return 0; | 34054 | return 0; |
34032 | } | 34055 | } |
34033 | cursor += PAGE_SIZE; | 34056 | cursor += PAGE_SIZE; |
34034 | @@ -78,6 +87,11 @@ static inline int range_is_allowed(unsigned long pfn, unsigned long size) | 34057 | @@ -79,6 +88,11 @@ static inline int range_is_allowed(unsigned long pfn, unsigned long size) |
34035 | } | 34058 | } |
34036 | return 1; | 34059 | return 1; |
34037 | } | 34060 | } |
@@ -34043,7 +34066,7 @@ index 2c644af..4b7aede 100644 | |||
34043 | #else | 34066 | #else |
34044 | static inline int range_is_allowed(unsigned long pfn, unsigned long size) | 34067 | static inline int range_is_allowed(unsigned long pfn, unsigned long size) |
34045 | { | 34068 | { |
34046 | @@ -120,6 +134,7 @@ static ssize_t read_mem(struct file *file, char __user *buf, | 34069 | @@ -121,6 +135,7 @@ static ssize_t read_mem(struct file *file, char __user *buf, |
34047 | 34070 | ||
34048 | while (count > 0) { | 34071 | while (count > 0) { |
34049 | unsigned long remaining; | 34072 | unsigned long remaining; |
@@ -34051,7 +34074,7 @@ index 2c644af..4b7aede 100644 | |||
34051 | 34074 | ||
34052 | sz = size_inside_page(p, count); | 34075 | sz = size_inside_page(p, count); |
34053 | 34076 | ||
34054 | @@ -135,7 +150,23 @@ static ssize_t read_mem(struct file *file, char __user *buf, | 34077 | @@ -136,7 +151,23 @@ static ssize_t read_mem(struct file *file, char __user *buf, |
34055 | if (!ptr) | 34078 | if (!ptr) |
34056 | return -EFAULT; | 34079 | return -EFAULT; |
34057 | 34080 | ||
@@ -34076,7 +34099,7 @@ index 2c644af..4b7aede 100644 | |||
34076 | unxlate_dev_mem_ptr(p, ptr); | 34099 | unxlate_dev_mem_ptr(p, ptr); |
34077 | if (remaining) | 34100 | if (remaining) |
34078 | return -EFAULT; | 34101 | return -EFAULT; |
34079 | @@ -378,7 +409,7 @@ static ssize_t read_oldmem(struct file *file, char __user *buf, | 34102 | @@ -379,7 +410,7 @@ static ssize_t read_oldmem(struct file *file, char __user *buf, |
34080 | else | 34103 | else |
34081 | csize = count; | 34104 | csize = count; |
34082 | 34105 | ||
@@ -34085,7 +34108,7 @@ index 2c644af..4b7aede 100644 | |||
34085 | if (rc < 0) | 34108 | if (rc < 0) |
34086 | return rc; | 34109 | return rc; |
34087 | buf += csize; | 34110 | buf += csize; |
34088 | @@ -398,9 +429,8 @@ static ssize_t read_kmem(struct file *file, char __user *buf, | 34111 | @@ -399,9 +430,8 @@ static ssize_t read_kmem(struct file *file, char __user *buf, |
34089 | size_t count, loff_t *ppos) | 34112 | size_t count, loff_t *ppos) |
34090 | { | 34113 | { |
34091 | unsigned long p = *ppos; | 34114 | unsigned long p = *ppos; |
@@ -34096,7 +34119,7 @@ index 2c644af..4b7aede 100644 | |||
34096 | 34119 | ||
34097 | read = 0; | 34120 | read = 0; |
34098 | if (p < (unsigned long) high_memory) { | 34121 | if (p < (unsigned long) high_memory) { |
34099 | @@ -422,6 +452,8 @@ static ssize_t read_kmem(struct file *file, char __user *buf, | 34122 | @@ -423,6 +453,8 @@ static ssize_t read_kmem(struct file *file, char __user *buf, |
34100 | } | 34123 | } |
34101 | #endif | 34124 | #endif |
34102 | while (low_count > 0) { | 34125 | while (low_count > 0) { |
@@ -34105,7 +34128,7 @@ index 2c644af..4b7aede 100644 | |||
34105 | sz = size_inside_page(p, low_count); | 34128 | sz = size_inside_page(p, low_count); |
34106 | 34129 | ||
34107 | /* | 34130 | /* |
34108 | @@ -431,7 +463,22 @@ static ssize_t read_kmem(struct file *file, char __user *buf, | 34131 | @@ -432,7 +464,22 @@ static ssize_t read_kmem(struct file *file, char __user *buf, |
34109 | */ | 34132 | */ |
34110 | kbuf = xlate_dev_kmem_ptr((char *)p); | 34133 | kbuf = xlate_dev_kmem_ptr((char *)p); |
34111 | 34134 | ||
@@ -34129,7 +34152,7 @@ index 2c644af..4b7aede 100644 | |||
34129 | return -EFAULT; | 34152 | return -EFAULT; |
34130 | buf += sz; | 34153 | buf += sz; |
34131 | p += sz; | 34154 | p += sz; |
34132 | @@ -833,6 +880,9 @@ static const struct memdev { | 34155 | @@ -869,6 +916,9 @@ static const struct memdev { |
34133 | #ifdef CONFIG_CRASH_DUMP | 34156 | #ifdef CONFIG_CRASH_DUMP |
34134 | [12] = { "oldmem", 0, &oldmem_fops, NULL }, | 34157 | [12] = { "oldmem", 0, &oldmem_fops, NULL }, |
34135 | #endif | 34158 | #endif |
@@ -34139,7 +34162,7 @@ index 2c644af..4b7aede 100644 | |||
34139 | }; | 34162 | }; |
34140 | 34163 | ||
34141 | static int memory_open(struct inode *inode, struct file *filp) | 34164 | static int memory_open(struct inode *inode, struct file *filp) |
34142 | @@ -904,7 +954,7 @@ static int __init chr_dev_init(void) | 34165 | @@ -940,7 +990,7 @@ static int __init chr_dev_init(void) |
34143 | continue; | 34166 | continue; |
34144 | 34167 | ||
34145 | device_create(mem_class, NULL, MKDEV(MEM_MAJOR, minor), | 34168 | device_create(mem_class, NULL, MKDEV(MEM_MAJOR, minor), |
@@ -34149,7 +34172,7 @@ index 2c644af..4b7aede 100644 | |||
34149 | 34172 | ||
34150 | return tty_init(); | 34173 | return tty_init(); |
34151 | diff --git a/drivers/char/mwave/tp3780i.c b/drivers/char/mwave/tp3780i.c | 34174 | diff --git a/drivers/char/mwave/tp3780i.c b/drivers/char/mwave/tp3780i.c |
34152 | index c689697..04e6d6a 100644 | 34175 | index c689697..04e6d6a2 100644 |
34153 | --- a/drivers/char/mwave/tp3780i.c | 34176 | --- a/drivers/char/mwave/tp3780i.c |
34154 | +++ b/drivers/char/mwave/tp3780i.c | 34177 | +++ b/drivers/char/mwave/tp3780i.c |
34155 | @@ -479,6 +479,7 @@ int tp3780I_QueryAbilities(THINKPAD_BD_DATA * pBDData, MW_ABILITIES * pAbilities | 34178 | @@ -479,6 +479,7 @@ int tp3780I_QueryAbilities(THINKPAD_BD_DATA * pBDData, MW_ABILITIES * pAbilities |
@@ -34249,7 +34272,7 @@ index 5c5cc00..ac9edb7 100644 | |||
34249 | 34272 | ||
34250 | if (cmd != SIOCWANDEV) | 34273 | if (cmd != SIOCWANDEV) |
34251 | diff --git a/drivers/char/random.c b/drivers/char/random.c | 34274 | diff --git a/drivers/char/random.c b/drivers/char/random.c |
34252 | index eccd7cc..98038d5 100644 | 34275 | index 35487e8..dac8bd1 100644 |
34253 | --- a/drivers/char/random.c | 34276 | --- a/drivers/char/random.c |
34254 | +++ b/drivers/char/random.c | 34277 | +++ b/drivers/char/random.c |
34255 | @@ -272,8 +272,13 @@ | 34278 | @@ -272,8 +272,13 @@ |
@@ -34415,7 +34438,7 @@ index 84ddc55..1d32f1e 100644 | |||
34415 | return 0; | 34438 | return 0; |
34416 | } | 34439 | } |
34417 | diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c | 34440 | diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c |
34418 | index ce5f3fc..e2d3e55 100644 | 34441 | index 1b456fe..2510242 100644 |
34419 | --- a/drivers/char/virtio_console.c | 34442 | --- a/drivers/char/virtio_console.c |
34420 | +++ b/drivers/char/virtio_console.c | 34443 | +++ b/drivers/char/virtio_console.c |
34421 | @@ -679,7 +679,7 @@ static ssize_t fill_readbuf(struct port *port, char *out_buf, size_t out_count, | 34444 | @@ -679,7 +679,7 @@ static ssize_t fill_readbuf(struct port *port, char *out_buf, size_t out_count, |
@@ -34436,11 +34459,49 @@ index ce5f3fc..e2d3e55 100644 | |||
34436 | } | 34459 | } |
34437 | 34460 | ||
34438 | static int wait_port_writable(struct port *port, bool nonblock) | 34461 | static int wait_port_writable(struct port *port, bool nonblock) |
34462 | diff --git a/drivers/clk/clk-composite.c b/drivers/clk/clk-composite.c | ||
34463 | index a33f46f..a720eed 100644 | ||
34464 | --- a/drivers/clk/clk-composite.c | ||
34465 | +++ b/drivers/clk/clk-composite.c | ||
34466 | @@ -122,7 +122,7 @@ struct clk *clk_register_composite(struct device *dev, const char *name, | ||
34467 | struct clk *clk; | ||
34468 | struct clk_init_data init; | ||
34469 | struct clk_composite *composite; | ||
34470 | - struct clk_ops *clk_composite_ops; | ||
34471 | + clk_ops_no_const *clk_composite_ops; | ||
34472 | |||
34473 | composite = kzalloc(sizeof(*composite), GFP_KERNEL); | ||
34474 | if (!composite) { | ||
34475 | diff --git a/drivers/clk/socfpga/clk.c b/drivers/clk/socfpga/clk.c | ||
34476 | index bd11315..7f87098 100644 | ||
34477 | --- a/drivers/clk/socfpga/clk.c | ||
34478 | +++ b/drivers/clk/socfpga/clk.c | ||
34479 | @@ -22,6 +22,7 @@ | ||
34480 | #include <linux/clk-provider.h> | ||
34481 | #include <linux/io.h> | ||
34482 | #include <linux/of.h> | ||
34483 | +#include <asm/pgtable.h> | ||
34484 | |||
34485 | /* Clock Manager offsets */ | ||
34486 | #define CLKMGR_CTRL 0x0 | ||
34487 | @@ -135,8 +136,10 @@ static __init struct clk *socfpga_clk_init(struct device_node *node, | ||
34488 | if (strcmp(clk_name, "main_pll") || strcmp(clk_name, "periph_pll") || | ||
34489 | strcmp(clk_name, "sdram_pll")) { | ||
34490 | socfpga_clk->hw.bit_idx = SOCFPGA_PLL_EXT_ENA; | ||
34491 | - clk_pll_ops.enable = clk_gate_ops.enable; | ||
34492 | - clk_pll_ops.disable = clk_gate_ops.disable; | ||
34493 | + pax_open_kernel(); | ||
34494 | + *(void **)&clk_pll_ops.enable = clk_gate_ops.enable; | ||
34495 | + *(void **)&clk_pll_ops.disable = clk_gate_ops.disable; | ||
34496 | + pax_close_kernel(); | ||
34497 | } | ||
34498 | |||
34499 | clk = clk_register(NULL, &socfpga_clk->hw.hw); | ||
34439 | diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c | 34500 | diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c |
34440 | index d7ad425..3e3f81f 100644 | 34501 | index a2b2541..bc1e7ff 100644 |
34441 | --- a/drivers/clocksource/arm_arch_timer.c | 34502 | --- a/drivers/clocksource/arm_arch_timer.c |
34442 | +++ b/drivers/clocksource/arm_arch_timer.c | 34503 | +++ b/drivers/clocksource/arm_arch_timer.c |
34443 | @@ -262,7 +262,7 @@ static int __cpuinit arch_timer_cpu_notify(struct notifier_block *self, | 34504 | @@ -264,7 +264,7 @@ static int __cpuinit arch_timer_cpu_notify(struct notifier_block *self, |
34444 | return NOTIFY_OK; | 34505 | return NOTIFY_OK; |
34445 | } | 34506 | } |
34446 | 34507 | ||
@@ -34463,7 +34524,7 @@ index ade7513..069445f 100644 | |||
34463 | }; | 34524 | }; |
34464 | 34525 | ||
34465 | diff --git a/drivers/cpufreq/acpi-cpufreq.c b/drivers/cpufreq/acpi-cpufreq.c | 34526 | diff --git a/drivers/cpufreq/acpi-cpufreq.c b/drivers/cpufreq/acpi-cpufreq.c |
34466 | index bb5939b..d9accb7 100644 | 34527 | index edc089e..bc7c0bc 100644 |
34467 | --- a/drivers/cpufreq/acpi-cpufreq.c | 34528 | --- a/drivers/cpufreq/acpi-cpufreq.c |
34468 | +++ b/drivers/cpufreq/acpi-cpufreq.c | 34529 | +++ b/drivers/cpufreq/acpi-cpufreq.c |
34469 | @@ -172,7 +172,7 @@ static ssize_t show_global_boost(struct kobject *kobj, | 34530 | @@ -172,7 +172,7 @@ static ssize_t show_global_boost(struct kobject *kobj, |
@@ -34475,7 +34536,7 @@ index bb5939b..d9accb7 100644 | |||
34475 | show_global_boost, | 34536 | show_global_boost, |
34476 | store_global_boost); | 34537 | store_global_boost); |
34477 | 34538 | ||
34478 | @@ -712,8 +712,11 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy) | 34539 | @@ -705,8 +705,11 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy) |
34479 | data->acpi_data = per_cpu_ptr(acpi_perf_data, cpu); | 34540 | data->acpi_data = per_cpu_ptr(acpi_perf_data, cpu); |
34480 | per_cpu(acfreq_data, cpu) = data; | 34541 | per_cpu(acfreq_data, cpu) = data; |
34481 | 34542 | ||
@@ -34489,7 +34550,7 @@ index bb5939b..d9accb7 100644 | |||
34489 | 34550 | ||
34490 | result = acpi_processor_register_performance(data->acpi_data, cpu); | 34551 | result = acpi_processor_register_performance(data->acpi_data, cpu); |
34491 | if (result) | 34552 | if (result) |
34492 | @@ -839,7 +842,9 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy) | 34553 | @@ -832,7 +835,9 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy) |
34493 | policy->cur = acpi_cpufreq_guess_freq(data, policy->cpu); | 34554 | policy->cur = acpi_cpufreq_guess_freq(data, policy->cpu); |
34494 | break; | 34555 | break; |
34495 | case ACPI_ADR_SPACE_FIXED_HARDWARE: | 34556 | case ACPI_ADR_SPACE_FIXED_HARDWARE: |
@@ -34500,7 +34561,7 @@ index bb5939b..d9accb7 100644 | |||
34500 | policy->cur = get_cur_freq_on_cpu(cpu); | 34561 | policy->cur = get_cur_freq_on_cpu(cpu); |
34501 | break; | 34562 | break; |
34502 | default: | 34563 | default: |
34503 | @@ -850,8 +855,11 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy) | 34564 | @@ -843,8 +848,11 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy) |
34504 | acpi_processor_notify_smm(THIS_MODULE); | 34565 | acpi_processor_notify_smm(THIS_MODULE); |
34505 | 34566 | ||
34506 | /* Check for APERF/MPERF support in hardware */ | 34567 | /* Check for APERF/MPERF support in hardware */ |
@@ -34515,10 +34576,10 @@ index bb5939b..d9accb7 100644 | |||
34515 | pr_debug("CPU%u - ACPI performance management activated.\n", cpu); | 34576 | pr_debug("CPU%u - ACPI performance management activated.\n", cpu); |
34516 | for (i = 0; i < perf->state_count; i++) | 34577 | for (i = 0; i < perf->state_count; i++) |
34517 | diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c | 34578 | diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c |
34518 | index b02824d..51e44aa 100644 | 34579 | index 178fe7a..5ee8501 100644 |
34519 | --- a/drivers/cpufreq/cpufreq.c | 34580 | --- a/drivers/cpufreq/cpufreq.c |
34520 | +++ b/drivers/cpufreq/cpufreq.c | 34581 | +++ b/drivers/cpufreq/cpufreq.c |
34521 | @@ -1813,7 +1813,7 @@ static int __cpuinit cpufreq_cpu_callback(struct notifier_block *nfb, | 34582 | @@ -1853,7 +1853,7 @@ static int __cpuinit cpufreq_cpu_callback(struct notifier_block *nfb, |
34522 | return NOTIFY_OK; | 34583 | return NOTIFY_OK; |
34523 | } | 34584 | } |
34524 | 34585 | ||
@@ -34527,7 +34588,7 @@ index b02824d..51e44aa 100644 | |||
34527 | .notifier_call = cpufreq_cpu_callback, | 34588 | .notifier_call = cpufreq_cpu_callback, |
34528 | }; | 34589 | }; |
34529 | 34590 | ||
34530 | @@ -1845,8 +1845,11 @@ int cpufreq_register_driver(struct cpufreq_driver *driver_data) | 34591 | @@ -1885,8 +1885,11 @@ int cpufreq_register_driver(struct cpufreq_driver *driver_data) |
34531 | 34592 | ||
34532 | pr_debug("trying to register driver %s\n", driver_data->name); | 34593 | pr_debug("trying to register driver %s\n", driver_data->name); |
34533 | 34594 | ||
@@ -34539,36 +34600,77 @@ index b02824d..51e44aa 100644 | |||
34539 | + pax_close_kernel(); | 34600 | + pax_close_kernel(); |
34540 | + } | 34601 | + } |
34541 | 34602 | ||
34542 | spin_lock_irqsave(&cpufreq_driver_lock, flags); | 34603 | write_lock_irqsave(&cpufreq_driver_lock, flags); |
34543 | if (cpufreq_driver) { | 34604 | if (cpufreq_driver) { |
34544 | diff --git a/drivers/cpufreq/cpufreq_governor.c b/drivers/cpufreq/cpufreq_governor.c | 34605 | diff --git a/drivers/cpufreq/cpufreq_governor.c b/drivers/cpufreq/cpufreq_governor.c |
34545 | index 5a76086..0f4d394 100644 | 34606 | index 5af40ad..ddf907b 100644 |
34546 | --- a/drivers/cpufreq/cpufreq_governor.c | 34607 | --- a/drivers/cpufreq/cpufreq_governor.c |
34547 | +++ b/drivers/cpufreq/cpufreq_governor.c | 34608 | +++ b/drivers/cpufreq/cpufreq_governor.c |
34548 | @@ -201,8 +201,8 @@ int cpufreq_governor_dbs(struct dbs_data *dbs_data, | 34609 | @@ -235,7 +235,7 @@ int cpufreq_governor_dbs(struct cpufreq_policy *policy, |
34549 | { | 34610 | struct dbs_data *dbs_data; |
34550 | struct od_cpu_dbs_info_s *od_dbs_info = NULL; | 34611 | struct od_cpu_dbs_info_s *od_dbs_info = NULL; |
34551 | struct cs_cpu_dbs_info_s *cs_dbs_info = NULL; | 34612 | struct cs_cpu_dbs_info_s *cs_dbs_info = NULL; |
34552 | - struct cs_ops *cs_ops = NULL; | ||
34553 | - struct od_ops *od_ops = NULL; | 34613 | - struct od_ops *od_ops = NULL; |
34554 | + const struct cs_ops *cs_ops = NULL; | ||
34555 | + const struct od_ops *od_ops = NULL; | 34614 | + const struct od_ops *od_ops = NULL; |
34556 | struct od_dbs_tuners *od_tuners = dbs_data->tuners; | 34615 | struct od_dbs_tuners *od_tuners = NULL; |
34557 | struct cs_dbs_tuners *cs_tuners = dbs_data->tuners; | 34616 | struct cs_dbs_tuners *cs_tuners = NULL; |
34558 | struct cpu_dbs_common_info *cpu_cdbs; | 34617 | struct cpu_dbs_common_info *cpu_cdbs; |
34618 | @@ -298,7 +298,7 @@ int cpufreq_governor_dbs(struct cpufreq_policy *policy, | ||
34619 | |||
34620 | if ((cdata->governor == GOV_CONSERVATIVE) && | ||
34621 | (!policy->governor->initialized)) { | ||
34622 | - struct cs_ops *cs_ops = dbs_data->cdata->gov_ops; | ||
34623 | + const struct cs_ops *cs_ops = dbs_data->cdata->gov_ops; | ||
34624 | |||
34625 | cpufreq_register_notifier(cs_ops->notifier_block, | ||
34626 | CPUFREQ_TRANSITION_NOTIFIER); | ||
34627 | @@ -315,7 +315,7 @@ int cpufreq_governor_dbs(struct cpufreq_policy *policy, | ||
34628 | |||
34629 | if ((dbs_data->cdata->governor == GOV_CONSERVATIVE) && | ||
34630 | (policy->governor->initialized == 1)) { | ||
34631 | - struct cs_ops *cs_ops = dbs_data->cdata->gov_ops; | ||
34632 | + const struct cs_ops *cs_ops = dbs_data->cdata->gov_ops; | ||
34633 | |||
34634 | cpufreq_unregister_notifier(cs_ops->notifier_block, | ||
34635 | CPUFREQ_TRANSITION_NOTIFIER); | ||
34559 | diff --git a/drivers/cpufreq/cpufreq_governor.h b/drivers/cpufreq/cpufreq_governor.h | 34636 | diff --git a/drivers/cpufreq/cpufreq_governor.h b/drivers/cpufreq/cpufreq_governor.h |
34560 | index cc4bd2f..ad142bc 100644 | 34637 | index e16a961..0e68927 100644 |
34561 | --- a/drivers/cpufreq/cpufreq_governor.h | 34638 | --- a/drivers/cpufreq/cpufreq_governor.h |
34562 | +++ b/drivers/cpufreq/cpufreq_governor.h | 34639 | +++ b/drivers/cpufreq/cpufreq_governor.h |
34563 | @@ -142,7 +142,7 @@ struct dbs_data { | 34640 | @@ -204,7 +204,7 @@ struct common_dbs_data { |
34564 | void (*gov_check_cpu)(int cpu, unsigned int load); | 34641 | void (*exit)(struct dbs_data *dbs_data); |
34565 | 34642 | ||
34566 | /* Governor specific ops, see below */ | 34643 | /* Governor specific ops, see below */ |
34567 | - void *gov_ops; | 34644 | - void *gov_ops; |
34568 | + const void *gov_ops; | 34645 | + const void *gov_ops; |
34569 | }; | 34646 | }; |
34570 | 34647 | ||
34571 | /* Governor specific ops, will be passed to dbs_data->gov_ops */ | 34648 | /* Governer Per policy data */ |
34649 | diff --git a/drivers/cpufreq/cpufreq_ondemand.c b/drivers/cpufreq/cpufreq_ondemand.c | ||
34650 | index 93eb5cb..f8ab572 100644 | ||
34651 | --- a/drivers/cpufreq/cpufreq_ondemand.c | ||
34652 | +++ b/drivers/cpufreq/cpufreq_ondemand.c | ||
34653 | @@ -615,14 +615,18 @@ void od_register_powersave_bias_handler(unsigned int (*f) | ||
34654 | (struct cpufreq_policy *, unsigned int, unsigned int), | ||
34655 | unsigned int powersave_bias) | ||
34656 | { | ||
34657 | - od_ops.powersave_bias_target = f; | ||
34658 | + pax_open_kernel(); | ||
34659 | + *(void **)&od_ops.powersave_bias_target = f; | ||
34660 | + pax_close_kernel(); | ||
34661 | od_set_powersave_bias(powersave_bias); | ||
34662 | } | ||
34663 | EXPORT_SYMBOL_GPL(od_register_powersave_bias_handler); | ||
34664 | |||
34665 | void od_unregister_powersave_bias_handler(void) | ||
34666 | { | ||
34667 | - od_ops.powersave_bias_target = generic_powersave_bias_target; | ||
34668 | + pax_open_kernel(); | ||
34669 | + *(void **)&od_ops.powersave_bias_target = generic_powersave_bias_target; | ||
34670 | + pax_close_kernel(); | ||
34671 | od_set_powersave_bias(0); | ||
34672 | } | ||
34673 | EXPORT_SYMBOL_GPL(od_unregister_powersave_bias_handler); | ||
34572 | diff --git a/drivers/cpufreq/cpufreq_stats.c b/drivers/cpufreq/cpufreq_stats.c | 34674 | diff --git a/drivers/cpufreq/cpufreq_stats.c b/drivers/cpufreq/cpufreq_stats.c |
34573 | index bfd6273..e39dd63 100644 | 34675 | index bfd6273..e39dd63 100644 |
34574 | --- a/drivers/cpufreq/cpufreq_stats.c | 34676 | --- a/drivers/cpufreq/cpufreq_stats.c |
@@ -34583,10 +34685,10 @@ index bfd6273..e39dd63 100644 | |||
34583 | .priority = 1, | 34685 | .priority = 1, |
34584 | }; | 34686 | }; |
34585 | diff --git a/drivers/cpufreq/p4-clockmod.c b/drivers/cpufreq/p4-clockmod.c | 34687 | diff --git a/drivers/cpufreq/p4-clockmod.c b/drivers/cpufreq/p4-clockmod.c |
34586 | index 827629c9..0bc6a03 100644 | 34688 | index 421ef37..e708530c 100644 |
34587 | --- a/drivers/cpufreq/p4-clockmod.c | 34689 | --- a/drivers/cpufreq/p4-clockmod.c |
34588 | +++ b/drivers/cpufreq/p4-clockmod.c | 34690 | +++ b/drivers/cpufreq/p4-clockmod.c |
34589 | @@ -167,10 +167,14 @@ static unsigned int cpufreq_p4_get_frequency(struct cpuinfo_x86 *c) | 34691 | @@ -160,10 +160,14 @@ static unsigned int cpufreq_p4_get_frequency(struct cpuinfo_x86 *c) |
34590 | case 0x0F: /* Core Duo */ | 34692 | case 0x0F: /* Core Duo */ |
34591 | case 0x16: /* Celeron Core */ | 34693 | case 0x16: /* Celeron Core */ |
34592 | case 0x1C: /* Atom */ | 34694 | case 0x1C: /* Atom */ |
@@ -34603,7 +34705,7 @@ index 827629c9..0bc6a03 100644 | |||
34603 | /* fall through */ | 34705 | /* fall through */ |
34604 | case 0x09: /* Pentium M (Banias) */ | 34706 | case 0x09: /* Pentium M (Banias) */ |
34605 | return speedstep_get_frequency(SPEEDSTEP_CPU_PM); | 34707 | return speedstep_get_frequency(SPEEDSTEP_CPU_PM); |
34606 | @@ -182,7 +186,9 @@ static unsigned int cpufreq_p4_get_frequency(struct cpuinfo_x86 *c) | 34708 | @@ -175,7 +179,9 @@ static unsigned int cpufreq_p4_get_frequency(struct cpuinfo_x86 *c) |
34607 | 34709 | ||
34608 | /* on P-4s, the TSC runs with constant frequency independent whether | 34710 | /* on P-4s, the TSC runs with constant frequency independent whether |
34609 | * throttling is active or not. */ | 34711 | * throttling is active or not. */ |
@@ -34614,8 +34716,117 @@ index 827629c9..0bc6a03 100644 | |||
34614 | 34716 | ||
34615 | if (speedstep_detect_processor() == SPEEDSTEP_CPU_P4M) { | 34717 | if (speedstep_detect_processor() == SPEEDSTEP_CPU_P4M) { |
34616 | printk(KERN_WARNING PFX "Warning: Pentium 4-M detected. " | 34718 | printk(KERN_WARNING PFX "Warning: Pentium 4-M detected. " |
34719 | diff --git a/drivers/cpufreq/sparc-us3-cpufreq.c b/drivers/cpufreq/sparc-us3-cpufreq.c | ||
34720 | index c71ee14..7c2e183 100644 | ||
34721 | --- a/drivers/cpufreq/sparc-us3-cpufreq.c | ||
34722 | +++ b/drivers/cpufreq/sparc-us3-cpufreq.c | ||
34723 | @@ -18,14 +18,12 @@ | ||
34724 | #include <asm/head.h> | ||
34725 | #include <asm/timer.h> | ||
34726 | |||
34727 | -static struct cpufreq_driver *cpufreq_us3_driver; | ||
34728 | - | ||
34729 | struct us3_freq_percpu_info { | ||
34730 | struct cpufreq_frequency_table table[4]; | ||
34731 | }; | ||
34732 | |||
34733 | /* Indexed by cpu number. */ | ||
34734 | -static struct us3_freq_percpu_info *us3_freq_table; | ||
34735 | +static struct us3_freq_percpu_info us3_freq_table[NR_CPUS]; | ||
34736 | |||
34737 | /* UltraSPARC-III has three dividers: 1, 2, and 32. These are controlled | ||
34738 | * in the Safari config register. | ||
34739 | @@ -186,12 +184,25 @@ static int __init us3_freq_cpu_init(struct cpufreq_policy *policy) | ||
34740 | |||
34741 | static int us3_freq_cpu_exit(struct cpufreq_policy *policy) | ||
34742 | { | ||
34743 | - if (cpufreq_us3_driver) | ||
34744 | - us3_set_cpu_divider_index(policy, 0); | ||
34745 | + us3_set_cpu_divider_index(policy->cpu, 0); | ||
34746 | |||
34747 | return 0; | ||
34748 | } | ||
34749 | |||
34750 | +static int __init us3_freq_init(void); | ||
34751 | +static void __exit us3_freq_exit(void); | ||
34752 | + | ||
34753 | +static struct cpufreq_driver cpufreq_us3_driver = { | ||
34754 | + .init = us3_freq_cpu_init, | ||
34755 | + .verify = us3_freq_verify, | ||
34756 | + .target = us3_freq_target, | ||
34757 | + .get = us3_freq_get, | ||
34758 | + .exit = us3_freq_cpu_exit, | ||
34759 | + .owner = THIS_MODULE, | ||
34760 | + .name = "UltraSPARC-III", | ||
34761 | + | ||
34762 | +}; | ||
34763 | + | ||
34764 | static int __init us3_freq_init(void) | ||
34765 | { | ||
34766 | unsigned long manuf, impl, ver; | ||
34767 | @@ -208,57 +219,15 @@ static int __init us3_freq_init(void) | ||
34768 | (impl == CHEETAH_IMPL || | ||
34769 | impl == CHEETAH_PLUS_IMPL || | ||
34770 | impl == JAGUAR_IMPL || | ||
34771 | - impl == PANTHER_IMPL)) { | ||
34772 | - struct cpufreq_driver *driver; | ||
34773 | - | ||
34774 | - ret = -ENOMEM; | ||
34775 | - driver = kzalloc(sizeof(struct cpufreq_driver), GFP_KERNEL); | ||
34776 | - if (!driver) | ||
34777 | - goto err_out; | ||
34778 | - | ||
34779 | - us3_freq_table = kzalloc( | ||
34780 | - (NR_CPUS * sizeof(struct us3_freq_percpu_info)), | ||
34781 | - GFP_KERNEL); | ||
34782 | - if (!us3_freq_table) | ||
34783 | - goto err_out; | ||
34784 | - | ||
34785 | - driver->init = us3_freq_cpu_init; | ||
34786 | - driver->verify = us3_freq_verify; | ||
34787 | - driver->target = us3_freq_target; | ||
34788 | - driver->get = us3_freq_get; | ||
34789 | - driver->exit = us3_freq_cpu_exit; | ||
34790 | - driver->owner = THIS_MODULE, | ||
34791 | - strcpy(driver->name, "UltraSPARC-III"); | ||
34792 | - | ||
34793 | - cpufreq_us3_driver = driver; | ||
34794 | - ret = cpufreq_register_driver(driver); | ||
34795 | - if (ret) | ||
34796 | - goto err_out; | ||
34797 | - | ||
34798 | - return 0; | ||
34799 | - | ||
34800 | -err_out: | ||
34801 | - if (driver) { | ||
34802 | - kfree(driver); | ||
34803 | - cpufreq_us3_driver = NULL; | ||
34804 | - } | ||
34805 | - kfree(us3_freq_table); | ||
34806 | - us3_freq_table = NULL; | ||
34807 | - return ret; | ||
34808 | - } | ||
34809 | + impl == PANTHER_IMPL)) | ||
34810 | + return cpufreq_register_driver(&cpufreq_us3_driver); | ||
34811 | |||
34812 | return -ENODEV; | ||
34813 | } | ||
34814 | |||
34815 | static void __exit us3_freq_exit(void) | ||
34816 | { | ||
34817 | - if (cpufreq_us3_driver) { | ||
34818 | - cpufreq_unregister_driver(cpufreq_us3_driver); | ||
34819 | - kfree(cpufreq_us3_driver); | ||
34820 | - cpufreq_us3_driver = NULL; | ||
34821 | - kfree(us3_freq_table); | ||
34822 | - us3_freq_table = NULL; | ||
34823 | - } | ||
34824 | + cpufreq_unregister_driver(&cpufreq_us3_driver); | ||
34825 | } | ||
34826 | |||
34827 | MODULE_AUTHOR("David S. Miller <davem@redhat.com>"); | ||
34617 | diff --git a/drivers/cpufreq/speedstep-centrino.c b/drivers/cpufreq/speedstep-centrino.c | 34828 | diff --git a/drivers/cpufreq/speedstep-centrino.c b/drivers/cpufreq/speedstep-centrino.c |
34618 | index 3a953d5..f5993f6 100644 | 34829 | index 618e6f4..e89d915 100644 |
34619 | --- a/drivers/cpufreq/speedstep-centrino.c | 34830 | --- a/drivers/cpufreq/speedstep-centrino.c |
34620 | +++ b/drivers/cpufreq/speedstep-centrino.c | 34831 | +++ b/drivers/cpufreq/speedstep-centrino.c |
34621 | @@ -353,8 +353,11 @@ static int centrino_cpu_init(struct cpufreq_policy *policy) | 34832 | @@ -353,8 +353,11 @@ static int centrino_cpu_init(struct cpufreq_policy *policy) |
@@ -34633,10 +34844,10 @@ index 3a953d5..f5993f6 100644 | |||
34633 | if (policy->cpu != 0) | 34844 | if (policy->cpu != 0) |
34634 | return -ENODEV; | 34845 | return -ENODEV; |
34635 | diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c | 34846 | diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c |
34636 | index eba6929..0f53baf 100644 | 34847 | index c3a93fe..e808f24 100644 |
34637 | --- a/drivers/cpuidle/cpuidle.c | 34848 | --- a/drivers/cpuidle/cpuidle.c |
34638 | +++ b/drivers/cpuidle/cpuidle.c | 34849 | +++ b/drivers/cpuidle/cpuidle.c |
34639 | @@ -277,7 +277,7 @@ static int poll_idle(struct cpuidle_device *dev, | 34850 | @@ -254,7 +254,7 @@ static int poll_idle(struct cpuidle_device *dev, |
34640 | 34851 | ||
34641 | static void poll_idle_init(struct cpuidle_driver *drv) | 34852 | static void poll_idle_init(struct cpuidle_driver *drv) |
34642 | { | 34853 | { |
@@ -34724,45 +34935,11 @@ index b70709b..1d8d02a 100644 | |||
34724 | .notifier_call = sh_dmae_nmi_handler, | 34935 | .notifier_call = sh_dmae_nmi_handler, |
34725 | 34936 | ||
34726 | /* Run before NMI debug handler and KGDB */ | 34937 | /* Run before NMI debug handler and KGDB */ |
34727 | diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c | ||
34728 | index 27e86d9..89e1090 100644 | ||
34729 | --- a/drivers/edac/edac_mc.c | ||
34730 | +++ b/drivers/edac/edac_mc.c | ||
34731 | @@ -48,6 +48,8 @@ static LIST_HEAD(mc_devices); | ||
34732 | */ | ||
34733 | static void const *edac_mc_owner; | ||
34734 | |||
34735 | +static struct bus_type mc_bus[EDAC_MAX_MCS]; | ||
34736 | + | ||
34737 | unsigned edac_dimm_info_location(struct dimm_info *dimm, char *buf, | ||
34738 | unsigned len) | ||
34739 | { | ||
34740 | @@ -723,6 +725,11 @@ int edac_mc_add_mc(struct mem_ctl_info *mci) | ||
34741 | int ret = -EINVAL; | ||
34742 | edac_dbg(0, "\n"); | ||
34743 | |||
34744 | + if (mci->mc_idx >= EDAC_MAX_MCS) { | ||
34745 | + pr_warn_once("Too many memory controllers: %d\n", mci->mc_idx); | ||
34746 | + return -ENODEV; | ||
34747 | + } | ||
34748 | + | ||
34749 | #ifdef CONFIG_EDAC_DEBUG | ||
34750 | if (edac_debug_level >= 3) | ||
34751 | edac_mc_dump_mci(mci); | ||
34752 | @@ -762,6 +769,8 @@ int edac_mc_add_mc(struct mem_ctl_info *mci) | ||
34753 | /* set load time so that error rate can be tracked */ | ||
34754 | mci->start_time = jiffies; | ||
34755 | |||
34756 | + mci->bus = &mc_bus[mci->mc_idx]; | ||
34757 | + | ||
34758 | if (edac_create_sysfs_mci_device(mci)) { | ||
34759 | edac_mc_printk(mci, KERN_WARNING, | ||
34760 | "failed to create sysfs device\n"); | ||
34761 | diff --git a/drivers/edac/edac_mc_sysfs.c b/drivers/edac/edac_mc_sysfs.c | 34938 | diff --git a/drivers/edac/edac_mc_sysfs.c b/drivers/edac/edac_mc_sysfs.c |
34762 | index 769d92e..8baa11a 100644 | 34939 | index c4d700a..0b57abd 100644 |
34763 | --- a/drivers/edac/edac_mc_sysfs.c | 34940 | --- a/drivers/edac/edac_mc_sysfs.c |
34764 | +++ b/drivers/edac/edac_mc_sysfs.c | 34941 | +++ b/drivers/edac/edac_mc_sysfs.c |
34765 | @@ -148,7 +148,7 @@ static const char *edac_caps[] = { | 34942 | @@ -148,7 +148,7 @@ static const char * const edac_caps[] = { |
34766 | struct dev_ch_attribute { | 34943 | struct dev_ch_attribute { |
34767 | struct device_attribute attr; | 34944 | struct device_attribute attr; |
34768 | int channel; | 34945 | int channel; |
@@ -34771,60 +34948,7 @@ index 769d92e..8baa11a 100644 | |||
34771 | 34948 | ||
34772 | #define DEVICE_CHANNEL(_name, _mode, _show, _store, _var) \ | 34949 | #define DEVICE_CHANNEL(_name, _mode, _show, _store, _var) \ |
34773 | struct dev_ch_attribute dev_attr_legacy_##_name = \ | 34950 | struct dev_ch_attribute dev_attr_legacy_##_name = \ |
34774 | @@ -370,7 +370,7 @@ static int edac_create_csrow_object(struct mem_ctl_info *mci, | 34951 | @@ -1005,14 +1005,16 @@ int edac_create_sysfs_mci_device(struct mem_ctl_info *mci) |
34775 | return -ENODEV; | ||
34776 | |||
34777 | csrow->dev.type = &csrow_attr_type; | ||
34778 | - csrow->dev.bus = &mci->bus; | ||
34779 | + csrow->dev.bus = mci->bus; | ||
34780 | device_initialize(&csrow->dev); | ||
34781 | csrow->dev.parent = &mci->dev; | ||
34782 | csrow->mci = mci; | ||
34783 | @@ -605,7 +605,7 @@ static int edac_create_dimm_object(struct mem_ctl_info *mci, | ||
34784 | dimm->mci = mci; | ||
34785 | |||
34786 | dimm->dev.type = &dimm_attr_type; | ||
34787 | - dimm->dev.bus = &mci->bus; | ||
34788 | + dimm->dev.bus = mci->bus; | ||
34789 | device_initialize(&dimm->dev); | ||
34790 | |||
34791 | dimm->dev.parent = &mci->dev; | ||
34792 | @@ -975,11 +975,13 @@ int edac_create_sysfs_mci_device(struct mem_ctl_info *mci) | ||
34793 | * The memory controller needs its own bus, in order to avoid | ||
34794 | * namespace conflicts at /sys/bus/edac. | ||
34795 | */ | ||
34796 | - mci->bus.name = kasprintf(GFP_KERNEL, "mc%d", mci->mc_idx); | ||
34797 | - if (!mci->bus.name) | ||
34798 | + mci->bus->name = kasprintf(GFP_KERNEL, "mc%d", mci->mc_idx); | ||
34799 | + if (!mci->bus->name) | ||
34800 | return -ENOMEM; | ||
34801 | - edac_dbg(0, "creating bus %s\n", mci->bus.name); | ||
34802 | - err = bus_register(&mci->bus); | ||
34803 | + | ||
34804 | + edac_dbg(0, "creating bus %s\n", mci->bus->name); | ||
34805 | + | ||
34806 | + err = bus_register(mci->bus); | ||
34807 | if (err < 0) | ||
34808 | return err; | ||
34809 | |||
34810 | @@ -988,7 +990,7 @@ int edac_create_sysfs_mci_device(struct mem_ctl_info *mci) | ||
34811 | device_initialize(&mci->dev); | ||
34812 | |||
34813 | mci->dev.parent = mci_pdev; | ||
34814 | - mci->dev.bus = &mci->bus; | ||
34815 | + mci->dev.bus = mci->bus; | ||
34816 | dev_set_name(&mci->dev, "mc%d", mci->mc_idx); | ||
34817 | dev_set_drvdata(&mci->dev, mci); | ||
34818 | pm_runtime_forbid(&mci->dev); | ||
34819 | @@ -997,20 +999,22 @@ int edac_create_sysfs_mci_device(struct mem_ctl_info *mci) | ||
34820 | err = device_add(&mci->dev); | ||
34821 | if (err < 0) { | ||
34822 | edac_dbg(1, "failure: create device %s\n", dev_name(&mci->dev)); | ||
34823 | - bus_unregister(&mci->bus); | ||
34824 | - kfree(mci->bus.name); | ||
34825 | + bus_unregister(mci->bus); | ||
34826 | + kfree(mci->bus->name); | ||
34827 | return err; | ||
34828 | } | 34952 | } |
34829 | 34953 | ||
34830 | if (mci->set_sdram_scrub_rate || mci->get_sdram_scrub_rate) { | 34954 | if (mci->set_sdram_scrub_rate || mci->get_sdram_scrub_rate) { |
@@ -34845,28 +34969,6 @@ index 769d92e..8baa11a 100644 | |||
34845 | err = device_create_file(&mci->dev, | 34969 | err = device_create_file(&mci->dev, |
34846 | &dev_attr_sdram_scrub_rate); | 34970 | &dev_attr_sdram_scrub_rate); |
34847 | if (err) { | 34971 | if (err) { |
34848 | @@ -1064,8 +1068,8 @@ fail: | ||
34849 | } | ||
34850 | fail2: | ||
34851 | device_unregister(&mci->dev); | ||
34852 | - bus_unregister(&mci->bus); | ||
34853 | - kfree(mci->bus.name); | ||
34854 | + bus_unregister(mci->bus); | ||
34855 | + kfree(mci->bus->name); | ||
34856 | return err; | ||
34857 | } | ||
34858 | |||
34859 | @@ -1098,8 +1102,8 @@ void edac_unregister_sysfs(struct mem_ctl_info *mci) | ||
34860 | { | ||
34861 | edac_dbg(1, "Unregistering device %s\n", dev_name(&mci->dev)); | ||
34862 | device_unregister(&mci->dev); | ||
34863 | - bus_unregister(&mci->bus); | ||
34864 | - kfree(mci->bus.name); | ||
34865 | + bus_unregister(mci->bus); | ||
34866 | + kfree(mci->bus->name); | ||
34867 | } | ||
34868 | |||
34869 | static void mc_attr_release(struct device *dev) | ||
34870 | diff --git a/drivers/edac/edac_pci_sysfs.c b/drivers/edac/edac_pci_sysfs.c | 34972 | diff --git a/drivers/edac/edac_pci_sysfs.c b/drivers/edac/edac_pci_sysfs.c |
34871 | index e8658e4..22746d6 100644 | 34973 | index e8658e4..22746d6 100644 |
34872 | --- a/drivers/edac/edac_pci_sysfs.c | 34974 | --- a/drivers/edac/edac_pci_sysfs.c |
@@ -34963,19 +35065,6 @@ index e8658e4..22746d6 100644 | |||
34963 | panic("EDAC: PCI Parity Error"); | 35065 | panic("EDAC: PCI Parity Error"); |
34964 | } | 35066 | } |
34965 | } | 35067 | } |
34966 | diff --git a/drivers/edac/i5100_edac.c b/drivers/edac/i5100_edac.c | ||
34967 | index 1b63517..157b934 100644 | ||
34968 | --- a/drivers/edac/i5100_edac.c | ||
34969 | +++ b/drivers/edac/i5100_edac.c | ||
34970 | @@ -974,7 +974,7 @@ static int i5100_setup_debugfs(struct mem_ctl_info *mci) | ||
34971 | if (!i5100_debugfs) | ||
34972 | return -ENODEV; | ||
34973 | |||
34974 | - priv->debugfs = debugfs_create_dir(mci->bus.name, i5100_debugfs); | ||
34975 | + priv->debugfs = debugfs_create_dir(mci->bus->name, i5100_debugfs); | ||
34976 | |||
34977 | if (!priv->debugfs) | ||
34978 | return -ENOMEM; | ||
34979 | diff --git a/drivers/edac/mce_amd.h b/drivers/edac/mce_amd.h | 35068 | diff --git a/drivers/edac/mce_amd.h b/drivers/edac/mce_amd.h |
34980 | index 51b7e3a..aa8a3e8 100644 | 35069 | index 51b7e3a..aa8a3e8 100644 |
34981 | --- a/drivers/edac/mce_amd.h | 35070 | --- a/drivers/edac/mce_amd.h |
@@ -35002,22 +35091,8 @@ index 57ea7f4..789e3c3 100644 | |||
35002 | 35091 | ||
35003 | card->driver->update_phy_reg(card, 4, | 35092 | card->driver->update_phy_reg(card, 4, |
35004 | PHY_LINK_ACTIVE | PHY_CONTENDER, 0); | 35093 | PHY_LINK_ACTIVE | PHY_CONTENDER, 0); |
35005 | diff --git a/drivers/firewire/core-cdev.c b/drivers/firewire/core-cdev.c | ||
35006 | index 27ac423..13573e8 100644 | ||
35007 | --- a/drivers/firewire/core-cdev.c | ||
35008 | +++ b/drivers/firewire/core-cdev.c | ||
35009 | @@ -1366,8 +1366,7 @@ static int init_iso_resource(struct client *client, | ||
35010 | int ret; | ||
35011 | |||
35012 | if ((request->channels == 0 && request->bandwidth == 0) || | ||
35013 | - request->bandwidth > BANDWIDTH_AVAILABLE_INITIAL || | ||
35014 | - request->bandwidth < 0) | ||
35015 | + request->bandwidth > BANDWIDTH_AVAILABLE_INITIAL) | ||
35016 | return -EINVAL; | ||
35017 | |||
35018 | r = kmalloc(sizeof(*r), GFP_KERNEL); | ||
35019 | diff --git a/drivers/firewire/core-device.c b/drivers/firewire/core-device.c | 35094 | diff --git a/drivers/firewire/core-device.c b/drivers/firewire/core-device.c |
35020 | index 03ce7d9..b70f5da 100644 | 35095 | index 664a6ff..af13580 100644 |
35021 | --- a/drivers/firewire/core-device.c | 35096 | --- a/drivers/firewire/core-device.c |
35022 | +++ b/drivers/firewire/core-device.c | 35097 | +++ b/drivers/firewire/core-device.c |
35023 | @@ -232,7 +232,7 @@ EXPORT_SYMBOL(fw_device_enable_phys_dma); | 35098 | @@ -232,7 +232,7 @@ EXPORT_SYMBOL(fw_device_enable_phys_dma); |
@@ -35067,10 +35142,10 @@ index 94a58a0..f5eba42 100644 | |||
35067 | container_of(_dev_attr, struct dmi_device_attribute, dev_attr) | 35142 | container_of(_dev_attr, struct dmi_device_attribute, dev_attr) |
35068 | 35143 | ||
35069 | diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c | 35144 | diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c |
35070 | index 4cd392d..4b629e1 100644 | 35145 | index b95159b..841ae55 100644 |
35071 | --- a/drivers/firmware/dmi_scan.c | 35146 | --- a/drivers/firmware/dmi_scan.c |
35072 | +++ b/drivers/firmware/dmi_scan.c | 35147 | +++ b/drivers/firmware/dmi_scan.c |
35073 | @@ -490,11 +490,6 @@ void __init dmi_scan_machine(void) | 35148 | @@ -497,11 +497,6 @@ void __init dmi_scan_machine(void) |
35074 | } | 35149 | } |
35075 | } | 35150 | } |
35076 | else { | 35151 | else { |
@@ -35082,7 +35157,7 @@ index 4cd392d..4b629e1 100644 | |||
35082 | p = dmi_ioremap(0xF0000, 0x10000); | 35157 | p = dmi_ioremap(0xF0000, 0x10000); |
35083 | if (p == NULL) | 35158 | if (p == NULL) |
35084 | goto error; | 35159 | goto error; |
35085 | @@ -769,7 +764,7 @@ int dmi_walk(void (*decode)(const struct dmi_header *, void *), | 35160 | @@ -786,7 +781,7 @@ int dmi_walk(void (*decode)(const struct dmi_header *, void *), |
35086 | if (buf == NULL) | 35161 | if (buf == NULL) |
35087 | return -1; | 35162 | return -1; |
35088 | 35163 | ||
@@ -35091,22 +35166,39 @@ index 4cd392d..4b629e1 100644 | |||
35091 | 35166 | ||
35092 | iounmap(buf); | 35167 | iounmap(buf); |
35093 | return 0; | 35168 | return 0; |
35094 | diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c | 35169 | diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c |
35095 | index f4baa11..7970c3a 100644 | 35170 | index 5145fa3..0d3babd 100644 |
35096 | --- a/drivers/firmware/efivars.c | 35171 | --- a/drivers/firmware/efi/efi.c |
35097 | +++ b/drivers/firmware/efivars.c | 35172 | +++ b/drivers/firmware/efi/efi.c |
35098 | @@ -139,7 +139,7 @@ struct efivar_attribute { | 35173 | @@ -65,14 +65,16 @@ static struct attribute_group efi_subsys_attr_group = { |
35099 | }; | 35174 | }; |
35100 | 35175 | ||
35101 | static struct efivars __efivars; | 35176 | static struct efivars generic_efivars; |
35102 | -static struct efivar_operations ops; | 35177 | -static struct efivar_operations generic_ops; |
35103 | +static efivar_operations_no_const ops __read_only; | 35178 | +static efivar_operations_no_const generic_ops __read_only; |
35179 | |||
35180 | static int generic_ops_register(void) | ||
35181 | { | ||
35182 | - generic_ops.get_variable = efi.get_variable; | ||
35183 | - generic_ops.set_variable = efi.set_variable; | ||
35184 | - generic_ops.get_next_variable = efi.get_next_variable; | ||
35185 | - generic_ops.query_variable_store = efi_query_variable_store; | ||
35186 | + pax_open_kernel(); | ||
35187 | + *(void **)&generic_ops.get_variable = efi.get_variable; | ||
35188 | + *(void **)&generic_ops.set_variable = efi.set_variable; | ||
35189 | + *(void **)&generic_ops.get_next_variable = efi.get_next_variable; | ||
35190 | + *(void **)&generic_ops.query_variable_store = efi_query_variable_store; | ||
35191 | + pax_close_kernel(); | ||
35104 | 35192 | ||
35105 | #define PSTORE_EFI_ATTRIBUTES \ | 35193 | return efivars_register(&generic_efivars, &generic_ops, efi_kobj); |
35106 | (EFI_VARIABLE_NON_VOLATILE | \ | 35194 | } |
35107 | @@ -1844,7 +1844,7 @@ efivar_create_sysfs_entry(struct efivars *efivars, | 35195 | diff --git a/drivers/firmware/efi/efivars.c b/drivers/firmware/efi/efivars.c |
35196 | index 8bd1bb6..c48b0c6 100644 | ||
35197 | --- a/drivers/firmware/efi/efivars.c | ||
35198 | +++ b/drivers/firmware/efi/efivars.c | ||
35199 | @@ -452,7 +452,7 @@ efivar_create_sysfs_entry(struct efivar_entry *new_var) | ||
35108 | static int | 35200 | static int |
35109 | create_efivars_bin_attributes(struct efivars *efivars) | 35201 | create_efivars_bin_attributes(void) |
35110 | { | 35202 | { |
35111 | - struct bin_attribute *attr; | 35203 | - struct bin_attribute *attr; |
35112 | + bin_attribute_no_const *attr; | 35204 | + bin_attribute_no_const *attr; |
@@ -35129,7 +35221,7 @@ index 2a90ba6..07f3733 100644 | |||
35129 | ret = sysfs_create_bin_file(firmware_kobj, &memconsole_bin_attr); | 35221 | ret = sysfs_create_bin_file(firmware_kobj, &memconsole_bin_attr); |
35130 | 35222 | ||
35131 | diff --git a/drivers/gpio/gpio-ich.c b/drivers/gpio/gpio-ich.c | 35223 | diff --git a/drivers/gpio/gpio-ich.c b/drivers/gpio/gpio-ich.c |
35132 | index de3c317..b7cd029 100644 | 35224 | index e16d932..f0206ef 100644 |
35133 | --- a/drivers/gpio/gpio-ich.c | 35225 | --- a/drivers/gpio/gpio-ich.c |
35134 | +++ b/drivers/gpio/gpio-ich.c | 35226 | +++ b/drivers/gpio/gpio-ich.c |
35135 | @@ -69,7 +69,7 @@ struct ichx_desc { | 35227 | @@ -69,7 +69,7 @@ struct ichx_desc { |
@@ -35155,10 +35247,10 @@ index 9902732..64b62dd 100644 | |||
35155 | return -EINVAL; | 35247 | return -EINVAL; |
35156 | } | 35248 | } |
35157 | diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c | 35249 | diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c |
35158 | index 7b2d378..cc947ea 100644 | 35250 | index ed1334e..ee0dd42 100644 |
35159 | --- a/drivers/gpu/drm/drm_crtc_helper.c | 35251 | --- a/drivers/gpu/drm/drm_crtc_helper.c |
35160 | +++ b/drivers/gpu/drm/drm_crtc_helper.c | 35252 | +++ b/drivers/gpu/drm/drm_crtc_helper.c |
35161 | @@ -319,7 +319,7 @@ static bool drm_encoder_crtc_ok(struct drm_encoder *encoder, | 35253 | @@ -321,7 +321,7 @@ static bool drm_encoder_crtc_ok(struct drm_encoder *encoder, |
35162 | struct drm_crtc *tmp; | 35254 | struct drm_crtc *tmp; |
35163 | int crtc_mask = 1; | 35255 | int crtc_mask = 1; |
35164 | 35256 | ||
@@ -35168,7 +35260,7 @@ index 7b2d378..cc947ea 100644 | |||
35168 | dev = crtc->dev; | 35260 | dev = crtc->dev; |
35169 | 35261 | ||
35170 | diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c | 35262 | diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c |
35171 | index 25f91cd..a376f55 100644 | 35263 | index 9cc247f..36aa285 100644 |
35172 | --- a/drivers/gpu/drm/drm_drv.c | 35264 | --- a/drivers/gpu/drm/drm_drv.c |
35173 | +++ b/drivers/gpu/drm/drm_drv.c | 35265 | +++ b/drivers/gpu/drm/drm_drv.c |
35174 | @@ -306,7 +306,7 @@ module_exit(drm_core_exit); | 35266 | @@ -306,7 +306,7 @@ module_exit(drm_core_exit); |
@@ -35183,7 +35275,7 @@ index 25f91cd..a376f55 100644 | |||
35183 | @@ -376,7 +376,7 @@ long drm_ioctl(struct file *filp, | 35275 | @@ -376,7 +376,7 @@ long drm_ioctl(struct file *filp, |
35184 | struct drm_file *file_priv = filp->private_data; | 35276 | struct drm_file *file_priv = filp->private_data; |
35185 | struct drm_device *dev; | 35277 | struct drm_device *dev; |
35186 | struct drm_ioctl_desc *ioctl; | 35278 | const struct drm_ioctl_desc *ioctl = NULL; |
35187 | - drm_ioctl_t *func; | 35279 | - drm_ioctl_t *func; |
35188 | + drm_ioctl_no_const_t func; | 35280 | + drm_ioctl_no_const_t func; |
35189 | unsigned int nr = DRM_IOCTL_NR(cmd); | 35281 | unsigned int nr = DRM_IOCTL_NR(cmd); |
@@ -35197,29 +35289,7 @@ index 25f91cd..a376f55 100644 | |||
35197 | + atomic_inc_unchecked(&dev->counts[_DRM_STAT_IOCTLS]); | 35289 | + atomic_inc_unchecked(&dev->counts[_DRM_STAT_IOCTLS]); |
35198 | ++file_priv->ioctl_count; | 35290 | ++file_priv->ioctl_count; |
35199 | 35291 | ||
35200 | DRM_DEBUG("pid=%d, cmd=0x%02x, nr=0x%02x, dev 0x%lx, auth=%d\n", | 35292 | if ((nr >= DRM_CORE_IOCTL_COUNT) && |
35201 | diff --git a/drivers/gpu/drm/drm_encoder_slave.c b/drivers/gpu/drm/drm_encoder_slave.c | ||
35202 | index 48c52f7..0cfb60f 100644 | ||
35203 | --- a/drivers/gpu/drm/drm_encoder_slave.c | ||
35204 | +++ b/drivers/gpu/drm/drm_encoder_slave.c | ||
35205 | @@ -54,16 +54,12 @@ int drm_i2c_encoder_init(struct drm_device *dev, | ||
35206 | struct i2c_adapter *adap, | ||
35207 | const struct i2c_board_info *info) | ||
35208 | { | ||
35209 | - char modalias[sizeof(I2C_MODULE_PREFIX) | ||
35210 | - + I2C_NAME_SIZE]; | ||
35211 | struct module *module = NULL; | ||
35212 | struct i2c_client *client; | ||
35213 | struct drm_i2c_encoder_driver *encoder_drv; | ||
35214 | int err = 0; | ||
35215 | |||
35216 | - snprintf(modalias, sizeof(modalias), | ||
35217 | - "%s%s", I2C_MODULE_PREFIX, info->type); | ||
35218 | - request_module(modalias); | ||
35219 | + request_module("%s%s", I2C_MODULE_PREFIX, info->type); | ||
35220 | |||
35221 | client = i2c_new_device(adap, info); | ||
35222 | if (!client) { | ||
35223 | diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c | 35293 | diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c |
35224 | index 429e07d..e681a2c 100644 | 35294 | index 429e07d..e681a2c 100644 |
35225 | --- a/drivers/gpu/drm/drm_fops.c | 35295 | --- a/drivers/gpu/drm/drm_fops.c |
@@ -35486,7 +35556,7 @@ index d752c96..fe08455 100644 | |||
35486 | if (drm_lock_free(&master->lock, lock->context)) { | 35556 | if (drm_lock_free(&master->lock, lock->context)) { |
35487 | /* FIXME: Should really bail out here. */ | 35557 | /* FIXME: Should really bail out here. */ |
35488 | diff --git a/drivers/gpu/drm/drm_stub.c b/drivers/gpu/drm/drm_stub.c | 35558 | diff --git a/drivers/gpu/drm/drm_stub.c b/drivers/gpu/drm/drm_stub.c |
35489 | index 7d30802..42c6cbb 100644 | 35559 | index 16f3ec5..b28f9ca 100644 |
35490 | --- a/drivers/gpu/drm/drm_stub.c | 35560 | --- a/drivers/gpu/drm/drm_stub.c |
35491 | +++ b/drivers/gpu/drm/drm_stub.c | 35561 | +++ b/drivers/gpu/drm/drm_stub.c |
35492 | @@ -501,7 +501,7 @@ void drm_unplug_dev(struct drm_device *dev) | 35562 | @@ -501,7 +501,7 @@ void drm_unplug_dev(struct drm_device *dev) |
@@ -35553,7 +35623,7 @@ index 6e0acad..93c8289 100644 | |||
35553 | int front_offset; | 35623 | int front_offset; |
35554 | } drm_i810_private_t; | 35624 | } drm_i810_private_t; |
35555 | diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c | 35625 | diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c |
35556 | index 7299ea4..5314487 100644 | 35626 | index e913d32..4d9b351 100644 |
35557 | --- a/drivers/gpu/drm/i915/i915_debugfs.c | 35627 | --- a/drivers/gpu/drm/i915/i915_debugfs.c |
35558 | +++ b/drivers/gpu/drm/i915/i915_debugfs.c | 35628 | +++ b/drivers/gpu/drm/i915/i915_debugfs.c |
35559 | @@ -499,7 +499,7 @@ static int i915_interrupt_info(struct seq_file *m, void *data) | 35629 | @@ -499,7 +499,7 @@ static int i915_interrupt_info(struct seq_file *m, void *data) |
@@ -35566,7 +35636,7 @@ index 7299ea4..5314487 100644 | |||
35566 | if (IS_GEN6(dev) || IS_GEN7(dev)) { | 35636 | if (IS_GEN6(dev) || IS_GEN7(dev)) { |
35567 | seq_printf(m, | 35637 | seq_printf(m, |
35568 | diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c | 35638 | diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c |
35569 | index 4fa6beb..f930fec 100644 | 35639 | index 3b315ba..aac280f 100644 |
35570 | --- a/drivers/gpu/drm/i915/i915_dma.c | 35640 | --- a/drivers/gpu/drm/i915/i915_dma.c |
35571 | +++ b/drivers/gpu/drm/i915/i915_dma.c | 35641 | +++ b/drivers/gpu/drm/i915/i915_dma.c |
35572 | @@ -1259,7 +1259,7 @@ static bool i915_switcheroo_can_switch(struct pci_dev *pdev) | 35642 | @@ -1259,7 +1259,7 @@ static bool i915_switcheroo_can_switch(struct pci_dev *pdev) |
@@ -35579,10 +35649,10 @@ index 4fa6beb..f930fec 100644 | |||
35579 | return can_switch; | 35649 | return can_switch; |
35580 | } | 35650 | } |
35581 | diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h | 35651 | diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h |
35582 | index ef99b1c..09ce7fb 100644 | 35652 | index 9669a0b..bb65176 100644 |
35583 | --- a/drivers/gpu/drm/i915/i915_drv.h | 35653 | --- a/drivers/gpu/drm/i915/i915_drv.h |
35584 | +++ b/drivers/gpu/drm/i915/i915_drv.h | 35654 | +++ b/drivers/gpu/drm/i915/i915_drv.h |
35585 | @@ -893,7 +893,7 @@ typedef struct drm_i915_private { | 35655 | @@ -915,7 +915,7 @@ typedef struct drm_i915_private { |
35586 | drm_dma_handle_t *status_page_dmah; | 35656 | drm_dma_handle_t *status_page_dmah; |
35587 | struct resource mch_res; | 35657 | struct resource mch_res; |
35588 | 35658 | ||
@@ -35591,7 +35661,7 @@ index ef99b1c..09ce7fb 100644 | |||
35591 | 35661 | ||
35592 | /* protects the irq masks */ | 35662 | /* protects the irq masks */ |
35593 | spinlock_t irq_lock; | 35663 | spinlock_t irq_lock; |
35594 | @@ -1775,7 +1775,7 @@ extern struct i2c_adapter *intel_gmbus_get_adapter( | 35664 | @@ -1811,7 +1811,7 @@ extern struct i2c_adapter *intel_gmbus_get_adapter( |
35595 | struct drm_i915_private *dev_priv, unsigned port); | 35665 | struct drm_i915_private *dev_priv, unsigned port); |
35596 | extern void intel_gmbus_set_speed(struct i2c_adapter *adapter, int speed); | 35666 | extern void intel_gmbus_set_speed(struct i2c_adapter *adapter, int speed); |
35597 | extern void intel_gmbus_force_bit(struct i2c_adapter *adapter, bool force_bit); | 35667 | extern void intel_gmbus_force_bit(struct i2c_adapter *adapter, bool force_bit); |
@@ -35601,10 +35671,10 @@ index ef99b1c..09ce7fb 100644 | |||
35601 | return container_of(adapter, struct intel_gmbus, adapter)->force_bit; | 35671 | return container_of(adapter, struct intel_gmbus, adapter)->force_bit; |
35602 | } | 35672 | } |
35603 | diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c | 35673 | diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c |
35604 | index 9a48e1a..f0cbc3e 100644 | 35674 | index 117ce38..eefd237 100644 |
35605 | --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c | 35675 | --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c |
35606 | +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c | 35676 | +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c |
35607 | @@ -729,9 +729,9 @@ i915_gem_check_execbuffer(struct drm_i915_gem_execbuffer2 *exec) | 35677 | @@ -727,9 +727,9 @@ i915_gem_check_execbuffer(struct drm_i915_gem_execbuffer2 *exec) |
35608 | 35678 | ||
35609 | static int | 35679 | static int |
35610 | validate_exec_list(struct drm_i915_gem_exec_object2 *exec, | 35680 | validate_exec_list(struct drm_i915_gem_exec_object2 *exec, |
@@ -35616,15 +35686,6 @@ index 9a48e1a..f0cbc3e 100644 | |||
35616 | int relocs_total = 0; | 35686 | int relocs_total = 0; |
35617 | int relocs_max = INT_MAX / sizeof(struct drm_i915_gem_relocation_entry); | 35687 | int relocs_max = INT_MAX / sizeof(struct drm_i915_gem_relocation_entry); |
35618 | 35688 | ||
35619 | @@ -1195,7 +1195,7 @@ i915_gem_execbuffer2(struct drm_device *dev, void *data, | ||
35620 | return -ENOMEM; | ||
35621 | } | ||
35622 | ret = copy_from_user(exec2_list, | ||
35623 | - (struct drm_i915_relocation_entry __user *) | ||
35624 | + (struct drm_i915_gem_exec_object2 __user *) | ||
35625 | (uintptr_t) args->buffers_ptr, | ||
35626 | sizeof(*exec2_list) * args->buffer_count); | ||
35627 | if (ret != 0) { | ||
35628 | diff --git a/drivers/gpu/drm/i915/i915_ioc32.c b/drivers/gpu/drm/i915/i915_ioc32.c | 35689 | diff --git a/drivers/gpu/drm/i915/i915_ioc32.c b/drivers/gpu/drm/i915/i915_ioc32.c |
35629 | index 3c59584..500f2e9 100644 | 35690 | index 3c59584..500f2e9 100644 |
35630 | --- a/drivers/gpu/drm/i915/i915_ioc32.c | 35691 | --- a/drivers/gpu/drm/i915/i915_ioc32.c |
@@ -35661,10 +35722,10 @@ index 3c59584..500f2e9 100644 | |||
35661 | 35722 | ||
35662 | return ret; | 35723 | return ret; |
35663 | diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c | 35724 | diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c |
35664 | index 3c7bb04..182e049 100644 | 35725 | index e5e32869..1678f36 100644 |
35665 | --- a/drivers/gpu/drm/i915/i915_irq.c | 35726 | --- a/drivers/gpu/drm/i915/i915_irq.c |
35666 | +++ b/drivers/gpu/drm/i915/i915_irq.c | 35727 | +++ b/drivers/gpu/drm/i915/i915_irq.c |
35667 | @@ -549,7 +549,7 @@ static irqreturn_t valleyview_irq_handler(int irq, void *arg) | 35728 | @@ -670,7 +670,7 @@ static irqreturn_t valleyview_irq_handler(int irq, void *arg) |
35668 | int pipe; | 35729 | int pipe; |
35669 | u32 pipe_stats[I915_MAX_PIPES]; | 35730 | u32 pipe_stats[I915_MAX_PIPES]; |
35670 | 35731 | ||
@@ -35673,7 +35734,7 @@ index 3c7bb04..182e049 100644 | |||
35673 | 35734 | ||
35674 | while (true) { | 35735 | while (true) { |
35675 | iir = I915_READ(VLV_IIR); | 35736 | iir = I915_READ(VLV_IIR); |
35676 | @@ -705,7 +705,7 @@ static irqreturn_t ivybridge_irq_handler(int irq, void *arg) | 35737 | @@ -835,7 +835,7 @@ static irqreturn_t ivybridge_irq_handler(int irq, void *arg) |
35677 | irqreturn_t ret = IRQ_NONE; | 35738 | irqreturn_t ret = IRQ_NONE; |
35678 | int i; | 35739 | int i; |
35679 | 35740 | ||
@@ -35682,7 +35743,7 @@ index 3c7bb04..182e049 100644 | |||
35682 | 35743 | ||
35683 | /* disable master interrupt before clearing iir */ | 35744 | /* disable master interrupt before clearing iir */ |
35684 | de_ier = I915_READ(DEIER); | 35745 | de_ier = I915_READ(DEIER); |
35685 | @@ -791,7 +791,7 @@ static irqreturn_t ironlake_irq_handler(int irq, void *arg) | 35746 | @@ -925,7 +925,7 @@ static irqreturn_t ironlake_irq_handler(int irq, void *arg) |
35686 | int ret = IRQ_NONE; | 35747 | int ret = IRQ_NONE; |
35687 | u32 de_iir, gt_iir, de_ier, pm_iir, sde_ier; | 35748 | u32 de_iir, gt_iir, de_ier, pm_iir, sde_ier; |
35688 | 35749 | ||
@@ -35691,7 +35752,7 @@ index 3c7bb04..182e049 100644 | |||
35691 | 35752 | ||
35692 | /* disable master interrupt before clearing iir */ | 35753 | /* disable master interrupt before clearing iir */ |
35693 | de_ier = I915_READ(DEIER); | 35754 | de_ier = I915_READ(DEIER); |
35694 | @@ -1886,7 +1886,7 @@ static void ironlake_irq_preinstall(struct drm_device *dev) | 35755 | @@ -2089,7 +2089,7 @@ static void ironlake_irq_preinstall(struct drm_device *dev) |
35695 | { | 35756 | { |
35696 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; | 35757 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; |
35697 | 35758 | ||
@@ -35700,7 +35761,7 @@ index 3c7bb04..182e049 100644 | |||
35700 | 35761 | ||
35701 | I915_WRITE(HWSTAM, 0xeffe); | 35762 | I915_WRITE(HWSTAM, 0xeffe); |
35702 | 35763 | ||
35703 | @@ -1912,7 +1912,7 @@ static void valleyview_irq_preinstall(struct drm_device *dev) | 35764 | @@ -2124,7 +2124,7 @@ static void valleyview_irq_preinstall(struct drm_device *dev) |
35704 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; | 35765 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; |
35705 | int pipe; | 35766 | int pipe; |
35706 | 35767 | ||
@@ -35709,7 +35770,7 @@ index 3c7bb04..182e049 100644 | |||
35709 | 35770 | ||
35710 | /* VLV magic */ | 35771 | /* VLV magic */ |
35711 | I915_WRITE(VLV_IMR, 0); | 35772 | I915_WRITE(VLV_IMR, 0); |
35712 | @@ -2208,7 +2208,7 @@ static void i8xx_irq_preinstall(struct drm_device * dev) | 35773 | @@ -2411,7 +2411,7 @@ static void i8xx_irq_preinstall(struct drm_device * dev) |
35713 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; | 35774 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; |
35714 | int pipe; | 35775 | int pipe; |
35715 | 35776 | ||
@@ -35718,7 +35779,7 @@ index 3c7bb04..182e049 100644 | |||
35718 | 35779 | ||
35719 | for_each_pipe(pipe) | 35780 | for_each_pipe(pipe) |
35720 | I915_WRITE(PIPESTAT(pipe), 0); | 35781 | I915_WRITE(PIPESTAT(pipe), 0); |
35721 | @@ -2259,7 +2259,7 @@ static irqreturn_t i8xx_irq_handler(int irq, void *arg) | 35782 | @@ -2490,7 +2490,7 @@ static irqreturn_t i8xx_irq_handler(int irq, void *arg) |
35722 | I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT | | 35783 | I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT | |
35723 | I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT; | 35784 | I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT; |
35724 | 35785 | ||
@@ -35727,7 +35788,7 @@ index 3c7bb04..182e049 100644 | |||
35727 | 35788 | ||
35728 | iir = I915_READ16(IIR); | 35789 | iir = I915_READ16(IIR); |
35729 | if (iir == 0) | 35790 | if (iir == 0) |
35730 | @@ -2344,7 +2344,7 @@ static void i915_irq_preinstall(struct drm_device * dev) | 35791 | @@ -2565,7 +2565,7 @@ static void i915_irq_preinstall(struct drm_device * dev) |
35731 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; | 35792 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; |
35732 | int pipe; | 35793 | int pipe; |
35733 | 35794 | ||
@@ -35736,8 +35797,8 @@ index 3c7bb04..182e049 100644 | |||
35736 | 35797 | ||
35737 | if (I915_HAS_HOTPLUG(dev)) { | 35798 | if (I915_HAS_HOTPLUG(dev)) { |
35738 | I915_WRITE(PORT_HOTPLUG_EN, 0); | 35799 | I915_WRITE(PORT_HOTPLUG_EN, 0); |
35739 | @@ -2448,7 +2448,7 @@ static irqreturn_t i915_irq_handler(int irq, void *arg) | 35800 | @@ -2664,7 +2664,7 @@ static irqreturn_t i915_irq_handler(int irq, void *arg) |
35740 | }; | 35801 | I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT; |
35741 | int pipe, ret = IRQ_NONE; | 35802 | int pipe, ret = IRQ_NONE; |
35742 | 35803 | ||
35743 | - atomic_inc(&dev_priv->irq_received); | 35804 | - atomic_inc(&dev_priv->irq_received); |
@@ -35745,7 +35806,7 @@ index 3c7bb04..182e049 100644 | |||
35745 | 35806 | ||
35746 | iir = I915_READ(IIR); | 35807 | iir = I915_READ(IIR); |
35747 | do { | 35808 | do { |
35748 | @@ -2574,7 +2574,7 @@ static void i965_irq_preinstall(struct drm_device * dev) | 35809 | @@ -2791,7 +2791,7 @@ static void i965_irq_preinstall(struct drm_device * dev) |
35749 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; | 35810 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; |
35750 | int pipe; | 35811 | int pipe; |
35751 | 35812 | ||
@@ -35754,9 +35815,9 @@ index 3c7bb04..182e049 100644 | |||
35754 | 35815 | ||
35755 | I915_WRITE(PORT_HOTPLUG_EN, 0); | 35816 | I915_WRITE(PORT_HOTPLUG_EN, 0); |
35756 | I915_WRITE(PORT_HOTPLUG_STAT, I915_READ(PORT_HOTPLUG_STAT)); | 35817 | I915_WRITE(PORT_HOTPLUG_STAT, I915_READ(PORT_HOTPLUG_STAT)); |
35757 | @@ -2690,7 +2690,7 @@ static irqreturn_t i965_irq_handler(int irq, void *arg) | 35818 | @@ -2898,7 +2898,7 @@ static irqreturn_t i965_irq_handler(int irq, void *arg) |
35758 | int irq_received; | 35819 | I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT | |
35759 | int ret = IRQ_NONE, pipe; | 35820 | I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT; |
35760 | 35821 | ||
35761 | - atomic_inc(&dev_priv->irq_received); | 35822 | - atomic_inc(&dev_priv->irq_received); |
35762 | + atomic_inc_unchecked(&dev_priv->irq_received); | 35823 | + atomic_inc_unchecked(&dev_priv->irq_received); |
@@ -35764,10 +35825,10 @@ index 3c7bb04..182e049 100644 | |||
35764 | iir = I915_READ(IIR); | 35825 | iir = I915_READ(IIR); |
35765 | 35826 | ||
35766 | diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c | 35827 | diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c |
35767 | index 2ab65b4..acbd821 100644 | 35828 | index 56746dc..b5a214f 100644 |
35768 | --- a/drivers/gpu/drm/i915/intel_display.c | 35829 | --- a/drivers/gpu/drm/i915/intel_display.c |
35769 | +++ b/drivers/gpu/drm/i915/intel_display.c | 35830 | +++ b/drivers/gpu/drm/i915/intel_display.c |
35770 | @@ -8742,13 +8742,13 @@ struct intel_quirk { | 35831 | @@ -8919,13 +8919,13 @@ struct intel_quirk { |
35771 | int subsystem_vendor; | 35832 | int subsystem_vendor; |
35772 | int subsystem_device; | 35833 | int subsystem_device; |
35773 | void (*hook)(struct drm_device *dev); | 35834 | void (*hook)(struct drm_device *dev); |
@@ -35783,7 +35844,7 @@ index 2ab65b4..acbd821 100644 | |||
35783 | 35844 | ||
35784 | static int intel_dmi_reverse_brightness(const struct dmi_system_id *id) | 35845 | static int intel_dmi_reverse_brightness(const struct dmi_system_id *id) |
35785 | { | 35846 | { |
35786 | @@ -8756,18 +8756,20 @@ static int intel_dmi_reverse_brightness(const struct dmi_system_id *id) | 35847 | @@ -8933,18 +8933,20 @@ static int intel_dmi_reverse_brightness(const struct dmi_system_id *id) |
35787 | return 1; | 35848 | return 1; |
35788 | } | 35849 | } |
35789 | 35850 | ||
@@ -35906,7 +35967,7 @@ index 598c281..60d590e 100644 | |||
35906 | 35967 | ||
35907 | *sequence = cur_fence; | 35968 | *sequence = cur_fence; |
35908 | diff --git a/drivers/gpu/drm/nouveau/nouveau_bios.c b/drivers/gpu/drm/nouveau/nouveau_bios.c | 35969 | diff --git a/drivers/gpu/drm/nouveau/nouveau_bios.c b/drivers/gpu/drm/nouveau/nouveau_bios.c |
35909 | index 50a6dd0..ea66ed8 100644 | 35970 | index 6aa2137..fe8dc55 100644 |
35910 | --- a/drivers/gpu/drm/nouveau/nouveau_bios.c | 35971 | --- a/drivers/gpu/drm/nouveau/nouveau_bios.c |
35911 | +++ b/drivers/gpu/drm/nouveau/nouveau_bios.c | 35972 | +++ b/drivers/gpu/drm/nouveau/nouveau_bios.c |
35912 | @@ -965,7 +965,7 @@ static int parse_bit_tmds_tbl_entry(struct drm_device *dev, struct nvbios *bios, | 35973 | @@ -965,7 +965,7 @@ static int parse_bit_tmds_tbl_entry(struct drm_device *dev, struct nvbios *bios, |
@@ -35919,10 +35980,10 @@ index 50a6dd0..ea66ed8 100644 | |||
35919 | #define BIT_TABLE(id, funcid) ((struct bit_table){ id, parse_bit_##funcid##_tbl_entry }) | 35980 | #define BIT_TABLE(id, funcid) ((struct bit_table){ id, parse_bit_##funcid##_tbl_entry }) |
35920 | 35981 | ||
35921 | diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.h b/drivers/gpu/drm/nouveau/nouveau_drm.h | 35982 | diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.h b/drivers/gpu/drm/nouveau/nouveau_drm.h |
35922 | index 9c39baf..30a22be 100644 | 35983 | index f2b30f8..d0f9a95 100644 |
35923 | --- a/drivers/gpu/drm/nouveau/nouveau_drm.h | 35984 | --- a/drivers/gpu/drm/nouveau/nouveau_drm.h |
35924 | +++ b/drivers/gpu/drm/nouveau/nouveau_drm.h | 35985 | +++ b/drivers/gpu/drm/nouveau/nouveau_drm.h |
35925 | @@ -81,7 +81,7 @@ struct nouveau_drm { | 35986 | @@ -92,7 +92,7 @@ struct nouveau_drm { |
35926 | struct drm_global_reference mem_global_ref; | 35987 | struct drm_global_reference mem_global_ref; |
35927 | struct ttm_bo_global_ref bo_global_ref; | 35988 | struct ttm_bo_global_ref bo_global_ref; |
35928 | struct ttm_bo_device bdev; | 35989 | struct ttm_bo_device bdev; |
@@ -35979,6 +36040,71 @@ index 25d3495..d81aaf6 100644 | |||
35979 | spin_unlock(&dev->count_lock); | 36040 | spin_unlock(&dev->count_lock); |
35980 | return can_switch; | 36041 | return can_switch; |
35981 | } | 36042 | } |
36043 | diff --git a/drivers/gpu/drm/qxl/qxl_ttm.c b/drivers/gpu/drm/qxl/qxl_ttm.c | ||
36044 | index 489cb8c..0b8d0d3 100644 | ||
36045 | --- a/drivers/gpu/drm/qxl/qxl_ttm.c | ||
36046 | +++ b/drivers/gpu/drm/qxl/qxl_ttm.c | ||
36047 | @@ -103,7 +103,7 @@ static void qxl_ttm_global_fini(struct qxl_device *qdev) | ||
36048 | } | ||
36049 | } | ||
36050 | |||
36051 | -static struct vm_operations_struct qxl_ttm_vm_ops; | ||
36052 | +static vm_operations_struct_no_const qxl_ttm_vm_ops __read_only; | ||
36053 | static const struct vm_operations_struct *ttm_vm_ops; | ||
36054 | |||
36055 | static int qxl_ttm_fault(struct vm_area_struct *vma, struct vm_fault *vmf) | ||
36056 | @@ -147,8 +147,10 @@ int qxl_mmap(struct file *filp, struct vm_area_struct *vma) | ||
36057 | return r; | ||
36058 | if (unlikely(ttm_vm_ops == NULL)) { | ||
36059 | ttm_vm_ops = vma->vm_ops; | ||
36060 | + pax_open_kernel(); | ||
36061 | qxl_ttm_vm_ops = *ttm_vm_ops; | ||
36062 | qxl_ttm_vm_ops.fault = &qxl_ttm_fault; | ||
36063 | + pax_close_kernel(); | ||
36064 | } | ||
36065 | vma->vm_ops = &qxl_ttm_vm_ops; | ||
36066 | return 0; | ||
36067 | @@ -556,25 +558,23 @@ static int qxl_mm_dump_table(struct seq_file *m, void *data) | ||
36068 | static int qxl_ttm_debugfs_init(struct qxl_device *qdev) | ||
36069 | { | ||
36070 | #if defined(CONFIG_DEBUG_FS) | ||
36071 | - static struct drm_info_list qxl_mem_types_list[QXL_DEBUGFS_MEM_TYPES]; | ||
36072 | - static char qxl_mem_types_names[QXL_DEBUGFS_MEM_TYPES][32]; | ||
36073 | - unsigned i; | ||
36074 | + static struct drm_info_list qxl_mem_types_list[QXL_DEBUGFS_MEM_TYPES] = { | ||
36075 | + { | ||
36076 | + .name = "qxl_mem_mm", | ||
36077 | + .show = &qxl_mm_dump_table, | ||
36078 | + }, | ||
36079 | + { | ||
36080 | + .name = "qxl_surf_mm", | ||
36081 | + .show = &qxl_mm_dump_table, | ||
36082 | + } | ||
36083 | + }; | ||
36084 | |||
36085 | - for (i = 0; i < QXL_DEBUGFS_MEM_TYPES; i++) { | ||
36086 | - if (i == 0) | ||
36087 | - sprintf(qxl_mem_types_names[i], "qxl_mem_mm"); | ||
36088 | - else | ||
36089 | - sprintf(qxl_mem_types_names[i], "qxl_surf_mm"); | ||
36090 | - qxl_mem_types_list[i].name = qxl_mem_types_names[i]; | ||
36091 | - qxl_mem_types_list[i].show = &qxl_mm_dump_table; | ||
36092 | - qxl_mem_types_list[i].driver_features = 0; | ||
36093 | - if (i == 0) | ||
36094 | - qxl_mem_types_list[i].data = qdev->mman.bdev.man[TTM_PL_VRAM].priv; | ||
36095 | - else | ||
36096 | - qxl_mem_types_list[i].data = qdev->mman.bdev.man[TTM_PL_PRIV0].priv; | ||
36097 | + pax_open_kernel(); | ||
36098 | + *(void **)&qxl_mem_types_list[0].data = qdev->mman.bdev.man[TTM_PL_VRAM].priv; | ||
36099 | + *(void **)&qxl_mem_types_list[1].data = qdev->mman.bdev.man[TTM_PL_PRIV0].priv; | ||
36100 | + pax_close_kernel(); | ||
36101 | |||
36102 | - } | ||
36103 | - return qxl_debugfs_add_files(qdev, qxl_mem_types_list, i); | ||
36104 | + return qxl_debugfs_add_files(qdev, qxl_mem_types_list, QXL_DEBUGFS_MEM_TYPES); | ||
36105 | #else | ||
36106 | return 0; | ||
36107 | #endif | ||
35982 | diff --git a/drivers/gpu/drm/r128/r128_cce.c b/drivers/gpu/drm/r128/r128_cce.c | 36108 | diff --git a/drivers/gpu/drm/r128/r128_cce.c b/drivers/gpu/drm/r128/r128_cce.c |
35983 | index d4660cf..70dbe65 100644 | 36109 | index d4660cf..70dbe65 100644 |
35984 | --- a/drivers/gpu/drm/r128/r128_cce.c | 36110 | --- a/drivers/gpu/drm/r128/r128_cce.c |
@@ -36109,10 +36235,10 @@ index 5a82b6b..9e69c73 100644 | |||
36109 | if (regcomp | 36235 | if (regcomp |
36110 | (&mask_rex, "(0x[0-9a-fA-F]*) *([_a-zA-Z0-9]*)", REG_EXTENDED)) { | 36236 | (&mask_rex, "(0x[0-9a-fA-F]*) *([_a-zA-Z0-9]*)", REG_EXTENDED)) { |
36111 | diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c | 36237 | diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c |
36112 | index 5073665..31d15a6 100644 | 36238 | index b0dc0b6..a9bfe9c 100644 |
36113 | --- a/drivers/gpu/drm/radeon/radeon_device.c | 36239 | --- a/drivers/gpu/drm/radeon/radeon_device.c |
36114 | +++ b/drivers/gpu/drm/radeon/radeon_device.c | 36240 | +++ b/drivers/gpu/drm/radeon/radeon_device.c |
36115 | @@ -976,7 +976,7 @@ static bool radeon_switcheroo_can_switch(struct pci_dev *pdev) | 36241 | @@ -1014,7 +1014,7 @@ static bool radeon_switcheroo_can_switch(struct pci_dev *pdev) |
36116 | bool can_switch; | 36242 | bool can_switch; |
36117 | 36243 | ||
36118 | spin_lock(&dev->count_lock); | 36244 | spin_lock(&dev->count_lock); |
@@ -36225,7 +36351,7 @@ index 4d20910..6726b6d 100644 | |||
36225 | DRM_DEBUG("pid=%d\n", DRM_CURRENTPID); | 36351 | DRM_DEBUG("pid=%d\n", DRM_CURRENTPID); |
36226 | 36352 | ||
36227 | diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c | 36353 | diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c |
36228 | index 6c0ce89..66f6d65 100644 | 36354 | index 6c0ce89..57a2529 100644 |
36229 | --- a/drivers/gpu/drm/radeon/radeon_ttm.c | 36355 | --- a/drivers/gpu/drm/radeon/radeon_ttm.c |
36230 | +++ b/drivers/gpu/drm/radeon/radeon_ttm.c | 36356 | +++ b/drivers/gpu/drm/radeon/radeon_ttm.c |
36231 | @@ -782,7 +782,7 @@ void radeon_ttm_set_active_vram_size(struct radeon_device *rdev, u64 size) | 36357 | @@ -782,7 +782,7 @@ void radeon_ttm_set_active_vram_size(struct radeon_device *rdev, u64 size) |
@@ -36248,59 +36374,74 @@ index 6c0ce89..66f6d65 100644 | |||
36248 | } | 36374 | } |
36249 | vma->vm_ops = &radeon_ttm_vm_ops; | 36375 | vma->vm_ops = &radeon_ttm_vm_ops; |
36250 | return 0; | 36376 | return 0; |
36251 | @@ -862,28 +864,33 @@ static int radeon_ttm_debugfs_init(struct radeon_device *rdev) | 36377 | @@ -853,38 +855,33 @@ static int radeon_mm_dump_table(struct seq_file *m, void *data) |
36252 | sprintf(radeon_mem_types_names[i], "radeon_vram_mm"); | 36378 | static int radeon_ttm_debugfs_init(struct radeon_device *rdev) |
36253 | else | 36379 | { |
36254 | sprintf(radeon_mem_types_names[i], "radeon_gtt_mm"); | 36380 | #if defined(CONFIG_DEBUG_FS) |
36381 | - static struct drm_info_list radeon_mem_types_list[RADEON_DEBUGFS_MEM_TYPES+2]; | ||
36382 | - static char radeon_mem_types_names[RADEON_DEBUGFS_MEM_TYPES+2][32]; | ||
36383 | + static struct drm_info_list radeon_mem_types_list[RADEON_DEBUGFS_MEM_TYPES+2] = { | ||
36384 | + { | ||
36385 | + .name = "radeon_vram_mm", | ||
36386 | + .show = &radeon_mm_dump_table, | ||
36387 | + }, | ||
36388 | + { | ||
36389 | + .name = "radeon_gtt_mm", | ||
36390 | + .show = &radeon_mm_dump_table, | ||
36391 | + }, | ||
36392 | + { | ||
36393 | + .name = "ttm_page_pool", | ||
36394 | + .show = &ttm_page_alloc_debugfs, | ||
36395 | + }, | ||
36396 | + { | ||
36397 | + .name = "ttm_dma_page_pool", | ||
36398 | + .show = &ttm_dma_page_alloc_debugfs, | ||
36399 | + }, | ||
36400 | + }; | ||
36401 | unsigned i; | ||
36402 | |||
36403 | - for (i = 0; i < RADEON_DEBUGFS_MEM_TYPES; i++) { | ||
36404 | - if (i == 0) | ||
36405 | - sprintf(radeon_mem_types_names[i], "radeon_vram_mm"); | ||
36406 | - else | ||
36407 | - sprintf(radeon_mem_types_names[i], "radeon_gtt_mm"); | ||
36255 | - radeon_mem_types_list[i].name = radeon_mem_types_names[i]; | 36408 | - radeon_mem_types_list[i].name = radeon_mem_types_names[i]; |
36256 | - radeon_mem_types_list[i].show = &radeon_mm_dump_table; | 36409 | - radeon_mem_types_list[i].show = &radeon_mm_dump_table; |
36257 | - radeon_mem_types_list[i].driver_features = 0; | 36410 | - radeon_mem_types_list[i].driver_features = 0; |
36258 | + pax_open_kernel(); | 36411 | - if (i == 0) |
36259 | + *(const char **)&radeon_mem_types_list[i].name = radeon_mem_types_names[i]; | ||
36260 | + *(void **)&radeon_mem_types_list[i].show = &radeon_mm_dump_table; | ||
36261 | + *(u32 *)&radeon_mem_types_list[i].driver_features = 0; | ||
36262 | if (i == 0) | ||
36263 | - radeon_mem_types_list[i].data = rdev->mman.bdev.man[TTM_PL_VRAM].priv; | 36412 | - radeon_mem_types_list[i].data = rdev->mman.bdev.man[TTM_PL_VRAM].priv; |
36264 | + *(void **)&radeon_mem_types_list[i].data = rdev->mman.bdev.man[TTM_PL_VRAM].priv; | 36413 | - else |
36265 | else | ||
36266 | - radeon_mem_types_list[i].data = rdev->mman.bdev.man[TTM_PL_TT].priv; | 36414 | - radeon_mem_types_list[i].data = rdev->mman.bdev.man[TTM_PL_TT].priv; |
36267 | - | 36415 | - |
36268 | + *(void **)&radeon_mem_types_list[i].data = rdev->mman.bdev.man[TTM_PL_TT].priv; | 36416 | - } |
36269 | + pax_close_kernel(); | 36417 | - /* Add ttm page pool to debugfs */ |
36270 | } | 36418 | - sprintf(radeon_mem_types_names[i], "ttm_page_pool"); |
36271 | /* Add ttm page pool to debugfs */ | ||
36272 | sprintf(radeon_mem_types_names[i], "ttm_page_pool"); | ||
36273 | - radeon_mem_types_list[i].name = radeon_mem_types_names[i]; | 36419 | - radeon_mem_types_list[i].name = radeon_mem_types_names[i]; |
36274 | - radeon_mem_types_list[i].show = &ttm_page_alloc_debugfs; | 36420 | - radeon_mem_types_list[i].show = &ttm_page_alloc_debugfs; |
36275 | - radeon_mem_types_list[i].driver_features = 0; | 36421 | - radeon_mem_types_list[i].driver_features = 0; |
36276 | - radeon_mem_types_list[i++].data = NULL; | 36422 | - radeon_mem_types_list[i++].data = NULL; |
36277 | + pax_open_kernel(); | 36423 | + pax_open_kernel(); |
36278 | + *(const char **)&radeon_mem_types_list[i].name = radeon_mem_types_names[i]; | 36424 | + *(void **)&radeon_mem_types_list[0].data = rdev->mman.bdev.man[TTM_PL_VRAM].priv; |
36279 | + *(void **)&radeon_mem_types_list[i].show = &ttm_page_alloc_debugfs; | 36425 | + *(void **)&radeon_mem_types_list[1].data = rdev->mman.bdev.man[TTM_PL_TT].priv; |
36280 | + *(u32 *)&radeon_mem_types_list[i].driver_features = 0; | ||
36281 | + *(void **)&radeon_mem_types_list[i++].data = NULL; | ||
36282 | + pax_close_kernel(); | 36426 | + pax_close_kernel(); |
36283 | #ifdef CONFIG_SWIOTLB | 36427 | #ifdef CONFIG_SWIOTLB |
36284 | if (swiotlb_nr_tbl()) { | 36428 | - if (swiotlb_nr_tbl()) { |
36285 | sprintf(radeon_mem_types_names[i], "ttm_dma_page_pool"); | 36429 | - sprintf(radeon_mem_types_names[i], "ttm_dma_page_pool"); |
36286 | - radeon_mem_types_list[i].name = radeon_mem_types_names[i]; | 36430 | - radeon_mem_types_list[i].name = radeon_mem_types_names[i]; |
36287 | - radeon_mem_types_list[i].show = &ttm_dma_page_alloc_debugfs; | 36431 | - radeon_mem_types_list[i].show = &ttm_dma_page_alloc_debugfs; |
36288 | - radeon_mem_types_list[i].driver_features = 0; | 36432 | - radeon_mem_types_list[i].driver_features = 0; |
36289 | - radeon_mem_types_list[i++].data = NULL; | 36433 | - radeon_mem_types_list[i++].data = NULL; |
36290 | + pax_open_kernel(); | 36434 | - } |
36291 | + *(const char **)&radeon_mem_types_list[i].name = radeon_mem_types_names[i]; | 36435 | + if (swiotlb_nr_tbl()) |
36292 | + *(void **)&radeon_mem_types_list[i].show = &ttm_dma_page_alloc_debugfs; | 36436 | + i++; |
36293 | + *(u32 *)&radeon_mem_types_list[i].driver_features = 0; | ||
36294 | + *(void **)&radeon_mem_types_list[i++].data = NULL; | ||
36295 | + pax_close_kernel(); | ||
36296 | } | ||
36297 | #endif | 36437 | #endif |
36298 | return radeon_debugfs_add_files(rdev, radeon_mem_types_list, i); | 36438 | return radeon_debugfs_add_files(rdev, radeon_mem_types_list, i); |
36439 | |||
36299 | diff --git a/drivers/gpu/drm/radeon/rs690.c b/drivers/gpu/drm/radeon/rs690.c | 36440 | diff --git a/drivers/gpu/drm/radeon/rs690.c b/drivers/gpu/drm/radeon/rs690.c |
36300 | index fad6633..4ff94de 100644 | 36441 | index 55880d5..9e95342 100644 |
36301 | --- a/drivers/gpu/drm/radeon/rs690.c | 36442 | --- a/drivers/gpu/drm/radeon/rs690.c |
36302 | +++ b/drivers/gpu/drm/radeon/rs690.c | 36443 | +++ b/drivers/gpu/drm/radeon/rs690.c |
36303 | @@ -304,9 +304,11 @@ static void rs690_crtc_bandwidth_compute(struct radeon_device *rdev, | 36444 | @@ -327,9 +327,11 @@ static void rs690_crtc_bandwidth_compute(struct radeon_device *rdev, |
36304 | if (rdev->pm.max_bandwidth.full > rdev->pm.sideport_bandwidth.full && | 36445 | if (rdev->pm.max_bandwidth.full > rdev->pm.sideport_bandwidth.full && |
36305 | rdev->pm.sideport_bandwidth.full) | 36446 | rdev->pm.sideport_bandwidth.full) |
36306 | rdev->pm.max_bandwidth = rdev->pm.sideport_bandwidth; | 36447 | rdev->pm.max_bandwidth = rdev->pm.sideport_bandwidth; |
@@ -36352,7 +36493,7 @@ index bd2a3b4..122d9ad 100644 | |||
36352 | int shrink_pages = sc->nr_to_scan; | 36493 | int shrink_pages = sc->nr_to_scan; |
36353 | 36494 | ||
36354 | diff --git a/drivers/gpu/drm/udl/udl_fb.c b/drivers/gpu/drm/udl/udl_fb.c | 36495 | diff --git a/drivers/gpu/drm/udl/udl_fb.c b/drivers/gpu/drm/udl/udl_fb.c |
36355 | index 9f4be3d..cbc9fcc 100644 | 36496 | index dc0c065..58a0782 100644 |
36356 | --- a/drivers/gpu/drm/udl/udl_fb.c | 36497 | --- a/drivers/gpu/drm/udl/udl_fb.c |
36357 | +++ b/drivers/gpu/drm/udl/udl_fb.c | 36498 | +++ b/drivers/gpu/drm/udl/udl_fb.c |
36358 | @@ -367,7 +367,6 @@ static int udl_fb_release(struct fb_info *info, int user) | 36499 | @@ -367,7 +367,6 @@ static int udl_fb_release(struct fb_info *info, int user) |
@@ -36569,11 +36710,24 @@ index 8a8725c2..afed796 100644 | |||
36569 | else { | 36710 | else { |
36570 | marker = list_first_entry(&queue->head, | 36711 | marker = list_first_entry(&queue->head, |
36571 | struct vmw_marker, head); | 36712 | struct vmw_marker, head); |
36713 | diff --git a/drivers/gpu/host1x/drm/dc.c b/drivers/gpu/host1x/drm/dc.c | ||
36714 | index 8c04943..4370ed9 100644 | ||
36715 | --- a/drivers/gpu/host1x/drm/dc.c | ||
36716 | +++ b/drivers/gpu/host1x/drm/dc.c | ||
36717 | @@ -999,7 +999,7 @@ static int tegra_dc_debugfs_init(struct tegra_dc *dc, struct drm_minor *minor) | ||
36718 | } | ||
36719 | |||
36720 | for (i = 0; i < ARRAY_SIZE(debugfs_files); i++) | ||
36721 | - dc->debugfs_files[i].data = dc; | ||
36722 | + *(void **)&dc->debugfs_files[i].data = dc; | ||
36723 | |||
36724 | err = drm_debugfs_create_files(dc->debugfs_files, | ||
36725 | ARRAY_SIZE(debugfs_files), | ||
36572 | diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c | 36726 | diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c |
36573 | index e6dbf09..3dd2540 100644 | 36727 | index 402f486..f862d7e 100644 |
36574 | --- a/drivers/hid/hid-core.c | 36728 | --- a/drivers/hid/hid-core.c |
36575 | +++ b/drivers/hid/hid-core.c | 36729 | +++ b/drivers/hid/hid-core.c |
36576 | @@ -2268,7 +2268,7 @@ EXPORT_SYMBOL_GPL(hid_ignore); | 36730 | @@ -2275,7 +2275,7 @@ EXPORT_SYMBOL_GPL(hid_ignore); |
36577 | 36731 | ||
36578 | int hid_add_device(struct hid_device *hdev) | 36732 | int hid_add_device(struct hid_device *hdev) |
36579 | { | 36733 | { |
@@ -36582,7 +36736,7 @@ index e6dbf09..3dd2540 100644 | |||
36582 | int ret; | 36736 | int ret; |
36583 | 36737 | ||
36584 | if (WARN_ON(hdev->status & HID_STAT_ADDED)) | 36738 | if (WARN_ON(hdev->status & HID_STAT_ADDED)) |
36585 | @@ -2302,7 +2302,7 @@ int hid_add_device(struct hid_device *hdev) | 36739 | @@ -2309,7 +2309,7 @@ int hid_add_device(struct hid_device *hdev) |
36586 | /* XXX hack, any other cleaner solution after the driver core | 36740 | /* XXX hack, any other cleaner solution after the driver core |
36587 | * is converted to allow more than 20 bytes as the device name? */ | 36741 | * is converted to allow more than 20 bytes as the device name? */ |
36588 | dev_set_name(&hdev->dev, "%04X:%04X:%04X.%04X", hdev->bus, | 36742 | dev_set_name(&hdev->dev, "%04X:%04X:%04X.%04X", hdev->bus, |
@@ -36620,7 +36774,7 @@ index 0b122f8..b1d8160 100644 | |||
36620 | ret = create_gpadl_header(kbuffer, size, &msginfo, &msgcount); | 36774 | ret = create_gpadl_header(kbuffer, size, &msginfo, &msgcount); |
36621 | if (ret) | 36775 | if (ret) |
36622 | diff --git a/drivers/hv/hv.c b/drivers/hv/hv.c | 36776 | diff --git a/drivers/hv/hv.c b/drivers/hv/hv.c |
36623 | index 7311589..861e9ef 100644 | 36777 | index ae49237..380d4c9 100644 |
36624 | --- a/drivers/hv/hv.c | 36778 | --- a/drivers/hv/hv.c |
36625 | +++ b/drivers/hv/hv.c | 36779 | +++ b/drivers/hv/hv.c |
36626 | @@ -112,7 +112,7 @@ static u64 do_hypercall(u64 control, void *input, void *output) | 36780 | @@ -112,7 +112,7 @@ static u64 do_hypercall(u64 control, void *input, void *output) |
@@ -36685,7 +36839,7 @@ index 6351aba..dc4aaf4 100644 | |||
36685 | int res = 0; | 36839 | int res = 0; |
36686 | 36840 | ||
36687 | diff --git a/drivers/hwmon/applesmc.c b/drivers/hwmon/applesmc.c | 36841 | diff --git a/drivers/hwmon/applesmc.c b/drivers/hwmon/applesmc.c |
36688 | index b41baff..4953e4d 100644 | 36842 | index 62c2e32..8f2859a 100644 |
36689 | --- a/drivers/hwmon/applesmc.c | 36843 | --- a/drivers/hwmon/applesmc.c |
36690 | +++ b/drivers/hwmon/applesmc.c | 36844 | +++ b/drivers/hwmon/applesmc.c |
36691 | @@ -1084,7 +1084,7 @@ static int applesmc_create_nodes(struct applesmc_node_group *groups, int num) | 36845 | @@ -1084,7 +1084,7 @@ static int applesmc_create_nodes(struct applesmc_node_group *groups, int num) |
@@ -36726,10 +36880,10 @@ index b25c643..a13460d 100644 | |||
36726 | { | 36880 | { |
36727 | sysfs_attr_init(&attr->attr); | 36881 | sysfs_attr_init(&attr->attr); |
36728 | diff --git a/drivers/hwmon/coretemp.c b/drivers/hwmon/coretemp.c | 36882 | diff --git a/drivers/hwmon/coretemp.c b/drivers/hwmon/coretemp.c |
36729 | index 3f1e297..a6cafb5 100644 | 36883 | index 658ce3a..0d0c2f3 100644 |
36730 | --- a/drivers/hwmon/coretemp.c | 36884 | --- a/drivers/hwmon/coretemp.c |
36731 | +++ b/drivers/hwmon/coretemp.c | 36885 | +++ b/drivers/hwmon/coretemp.c |
36732 | @@ -791,7 +791,7 @@ static int __cpuinit coretemp_cpu_callback(struct notifier_block *nfb, | 36886 | @@ -790,7 +790,7 @@ static int __cpuinit coretemp_cpu_callback(struct notifier_block *nfb, |
36733 | return NOTIFY_OK; | 36887 | return NOTIFY_OK; |
36734 | } | 36888 | } |
36735 | 36889 | ||
@@ -36739,10 +36893,10 @@ index 3f1e297..a6cafb5 100644 | |||
36739 | }; | 36893 | }; |
36740 | 36894 | ||
36741 | diff --git a/drivers/hwmon/ibmaem.c b/drivers/hwmon/ibmaem.c | 36895 | diff --git a/drivers/hwmon/ibmaem.c b/drivers/hwmon/ibmaem.c |
36742 | index a14f634..2916ee2 100644 | 36896 | index 1429f6e..ee03d59 100644 |
36743 | --- a/drivers/hwmon/ibmaem.c | 36897 | --- a/drivers/hwmon/ibmaem.c |
36744 | +++ b/drivers/hwmon/ibmaem.c | 36898 | +++ b/drivers/hwmon/ibmaem.c |
36745 | @@ -925,7 +925,7 @@ static int aem_register_sensors(struct aem_data *data, | 36899 | @@ -926,7 +926,7 @@ static int aem_register_sensors(struct aem_data *data, |
36746 | struct aem_rw_sensor_template *rw) | 36900 | struct aem_rw_sensor_template *rw) |
36747 | { | 36901 | { |
36748 | struct device *dev = &data->pdev->dev; | 36902 | struct device *dev = &data->pdev->dev; |
@@ -36751,6 +36905,19 @@ index a14f634..2916ee2 100644 | |||
36751 | int err; | 36905 | int err; |
36752 | 36906 | ||
36753 | /* Set up read-only sensors */ | 36907 | /* Set up read-only sensors */ |
36908 | diff --git a/drivers/hwmon/iio_hwmon.c b/drivers/hwmon/iio_hwmon.c | ||
36909 | index 52b77af..aed1ddf 100644 | ||
36910 | --- a/drivers/hwmon/iio_hwmon.c | ||
36911 | +++ b/drivers/hwmon/iio_hwmon.c | ||
36912 | @@ -73,7 +73,7 @@ static int iio_hwmon_probe(struct platform_device *pdev) | ||
36913 | { | ||
36914 | struct device *dev = &pdev->dev; | ||
36915 | struct iio_hwmon_state *st; | ||
36916 | - struct sensor_device_attribute *a; | ||
36917 | + sensor_device_attribute_no_const *a; | ||
36918 | int ret, i; | ||
36919 | int in_i = 1, temp_i = 1, curr_i = 1; | ||
36920 | enum iio_chan_type type; | ||
36754 | diff --git a/drivers/hwmon/pmbus/pmbus_core.c b/drivers/hwmon/pmbus/pmbus_core.c | 36921 | diff --git a/drivers/hwmon/pmbus/pmbus_core.c b/drivers/hwmon/pmbus/pmbus_core.c |
36755 | index 9add6092..ee7ba3f 100644 | 36922 | index 9add6092..ee7ba3f 100644 |
36756 | --- a/drivers/hwmon/pmbus/pmbus_core.c | 36923 | --- a/drivers/hwmon/pmbus/pmbus_core.c |
@@ -36866,7 +37033,7 @@ index 76f157b..9c0db1b 100644 | |||
36866 | }; | 37033 | }; |
36867 | 37034 | ||
36868 | diff --git a/drivers/i2c/busses/i2c-amd756-s4882.c b/drivers/i2c/busses/i2c-amd756-s4882.c | 37035 | diff --git a/drivers/i2c/busses/i2c-amd756-s4882.c b/drivers/i2c/busses/i2c-amd756-s4882.c |
36869 | index 378fcb5..5e91fa8 100644 | 37036 | index 07f01ac..d79ad3d 100644 |
36870 | --- a/drivers/i2c/busses/i2c-amd756-s4882.c | 37037 | --- a/drivers/i2c/busses/i2c-amd756-s4882.c |
36871 | +++ b/drivers/i2c/busses/i2c-amd756-s4882.c | 37038 | +++ b/drivers/i2c/busses/i2c-amd756-s4882.c |
36872 | @@ -43,7 +43,7 @@ | 37039 | @@ -43,7 +43,7 @@ |
@@ -36879,7 +37046,7 @@ index 378fcb5..5e91fa8 100644 | |||
36879 | /* Wrapper access functions for multiplexed SMBus */ | 37046 | /* Wrapper access functions for multiplexed SMBus */ |
36880 | static DEFINE_MUTEX(amd756_lock); | 37047 | static DEFINE_MUTEX(amd756_lock); |
36881 | diff --git a/drivers/i2c/busses/i2c-nforce2-s4985.c b/drivers/i2c/busses/i2c-nforce2-s4985.c | 37048 | diff --git a/drivers/i2c/busses/i2c-nforce2-s4985.c b/drivers/i2c/busses/i2c-nforce2-s4985.c |
36882 | index 29015eb..af2d8e9 100644 | 37049 | index 2ca268d..c6acbdf 100644 |
36883 | --- a/drivers/i2c/busses/i2c-nforce2-s4985.c | 37050 | --- a/drivers/i2c/busses/i2c-nforce2-s4985.c |
36884 | +++ b/drivers/i2c/busses/i2c-nforce2-s4985.c | 37051 | +++ b/drivers/i2c/busses/i2c-nforce2-s4985.c |
36885 | @@ -41,7 +41,7 @@ | 37052 | @@ -41,7 +41,7 @@ |
@@ -36905,7 +37072,7 @@ index c3ccdea..5b3dc1a 100644 | |||
36905 | if (IS_ERR(rdwr_pa[i].buf)) { | 37072 | if (IS_ERR(rdwr_pa[i].buf)) { |
36906 | res = PTR_ERR(rdwr_pa[i].buf); | 37073 | res = PTR_ERR(rdwr_pa[i].buf); |
36907 | diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c | 37074 | diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c |
36908 | index 8126824..55a2798 100644 | 37075 | index 2ff6204..218c16e 100644 |
36909 | --- a/drivers/ide/ide-cd.c | 37076 | --- a/drivers/ide/ide-cd.c |
36910 | +++ b/drivers/ide/ide-cd.c | 37077 | +++ b/drivers/ide/ide-cd.c |
36911 | @@ -768,7 +768,7 @@ static void cdrom_do_block_pc(ide_drive_t *drive, struct request *rq) | 37078 | @@ -768,7 +768,7 @@ static void cdrom_do_block_pc(ide_drive_t *drive, struct request *rq) |
@@ -36918,7 +37085,7 @@ index 8126824..55a2798 100644 | |||
36918 | } | 37085 | } |
36919 | } | 37086 | } |
36920 | diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c | 37087 | diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c |
36921 | index 8848f16..f8e6dd8 100644 | 37088 | index e145931..08bfc59 100644 |
36922 | --- a/drivers/iio/industrialio-core.c | 37089 | --- a/drivers/iio/industrialio-core.c |
36923 | +++ b/drivers/iio/industrialio-core.c | 37090 | +++ b/drivers/iio/industrialio-core.c |
36924 | @@ -506,7 +506,7 @@ static ssize_t iio_write_channel_info(struct device *dev, | 37091 | @@ -506,7 +506,7 @@ static ssize_t iio_write_channel_info(struct device *dev, |
@@ -37145,10 +37312,10 @@ index 9f5ad7c..588cd84 100644 | |||
37145 | } | 37312 | } |
37146 | } | 37313 | } |
37147 | diff --git a/drivers/infiniband/hw/cxgb4/mem.c b/drivers/infiniband/hw/cxgb4/mem.c | 37314 | diff --git a/drivers/infiniband/hw/cxgb4/mem.c b/drivers/infiniband/hw/cxgb4/mem.c |
37148 | index 903a92d..9262548 100644 | 37315 | index 4cb8eb2..146bf60 100644 |
37149 | --- a/drivers/infiniband/hw/cxgb4/mem.c | 37316 | --- a/drivers/infiniband/hw/cxgb4/mem.c |
37150 | +++ b/drivers/infiniband/hw/cxgb4/mem.c | 37317 | +++ b/drivers/infiniband/hw/cxgb4/mem.c |
37151 | @@ -122,7 +122,7 @@ static int write_tpt_entry(struct c4iw_rdev *rdev, u32 reset_tpt_entry, | 37318 | @@ -249,7 +249,7 @@ static int write_tpt_entry(struct c4iw_rdev *rdev, u32 reset_tpt_entry, |
37152 | int err; | 37319 | int err; |
37153 | struct fw_ri_tpte tpt; | 37320 | struct fw_ri_tpte tpt; |
37154 | u32 stag_idx; | 37321 | u32 stag_idx; |
@@ -37157,7 +37324,7 @@ index 903a92d..9262548 100644 | |||
37157 | 37324 | ||
37158 | if (c4iw_fatal_error(rdev)) | 37325 | if (c4iw_fatal_error(rdev)) |
37159 | return -EIO; | 37326 | return -EIO; |
37160 | @@ -139,7 +139,7 @@ static int write_tpt_entry(struct c4iw_rdev *rdev, u32 reset_tpt_entry, | 37327 | @@ -266,7 +266,7 @@ static int write_tpt_entry(struct c4iw_rdev *rdev, u32 reset_tpt_entry, |
37161 | if (rdev->stats.stag.cur > rdev->stats.stag.max) | 37328 | if (rdev->stats.stag.cur > rdev->stats.stag.max) |
37162 | rdev->stats.stag.max = rdev->stats.stag.cur; | 37329 | rdev->stats.stag.max = rdev->stats.stag.cur; |
37163 | mutex_unlock(&rdev->stats.lock); | 37330 | mutex_unlock(&rdev->stats.lock); |
@@ -37561,7 +37728,7 @@ index 4166452..fc952c3 100644 | |||
37561 | } | 37728 | } |
37562 | 37729 | ||
37563 | diff --git a/drivers/infiniband/hw/nes/nes_nic.c b/drivers/infiniband/hw/nes/nes_nic.c | 37730 | diff --git a/drivers/infiniband/hw/nes/nes_nic.c b/drivers/infiniband/hw/nes/nes_nic.c |
37564 | index 85cf4d1..05d8e71 100644 | 37731 | index 49eb511..a774366 100644 |
37565 | --- a/drivers/infiniband/hw/nes/nes_nic.c | 37732 | --- a/drivers/infiniband/hw/nes/nes_nic.c |
37566 | +++ b/drivers/infiniband/hw/nes/nes_nic.c | 37733 | +++ b/drivers/infiniband/hw/nes/nes_nic.c |
37567 | @@ -1273,39 +1273,39 @@ static void nes_netdev_get_ethtool_stats(struct net_device *netdev, | 37734 | @@ -1273,39 +1273,39 @@ static void nes_netdev_get_ethtool_stats(struct net_device *netdev, |
@@ -37797,10 +37964,10 @@ index 25fc597..558bf3b3 100644 | |||
37797 | serio->dev.release = serio_release_port; | 37964 | serio->dev.release = serio_release_port; |
37798 | serio->dev.groups = serio_device_attr_groups; | 37965 | serio->dev.groups = serio_device_attr_groups; |
37799 | diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c | 37966 | diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c |
37800 | index b972d43..8943713 100644 | 37967 | index d8f98b1..f62a640 100644 |
37801 | --- a/drivers/iommu/iommu.c | 37968 | --- a/drivers/iommu/iommu.c |
37802 | +++ b/drivers/iommu/iommu.c | 37969 | +++ b/drivers/iommu/iommu.c |
37803 | @@ -554,7 +554,7 @@ static struct notifier_block iommu_bus_nb = { | 37970 | @@ -583,7 +583,7 @@ static struct notifier_block iommu_bus_nb = { |
37804 | static void iommu_bus_init(struct bus_type *bus, struct iommu_ops *ops) | 37971 | static void iommu_bus_init(struct bus_type *bus, struct iommu_ops *ops) |
37805 | { | 37972 | { |
37806 | bus_register_notifier(bus, &iommu_bus_nb); | 37973 | bus_register_notifier(bus, &iommu_bus_nb); |
@@ -37840,10 +38007,10 @@ index dcfea4e..f4226b2 100644 | |||
37840 | 38007 | ||
37841 | bool setup_remapped_irq(int irq, struct irq_cfg *cfg, struct irq_chip *chip) | 38008 | bool setup_remapped_irq(int irq, struct irq_cfg *cfg, struct irq_chip *chip) |
37842 | diff --git a/drivers/irqchip/irq-gic.c b/drivers/irqchip/irq-gic.c | 38009 | diff --git a/drivers/irqchip/irq-gic.c b/drivers/irqchip/irq-gic.c |
37843 | index fc6aebf..762c5f5 100644 | 38010 | index 19ceaa6..3625818 100644 |
37844 | --- a/drivers/irqchip/irq-gic.c | 38011 | --- a/drivers/irqchip/irq-gic.c |
37845 | +++ b/drivers/irqchip/irq-gic.c | 38012 | +++ b/drivers/irqchip/irq-gic.c |
37846 | @@ -83,7 +83,7 @@ static u8 gic_cpu_map[NR_GIC_CPU_IF] __read_mostly; | 38013 | @@ -84,7 +84,7 @@ static u8 gic_cpu_map[NR_GIC_CPU_IF] __read_mostly; |
37847 | * Supported arch specific GIC irq extension. | 38014 | * Supported arch specific GIC irq extension. |
37848 | * Default make them NULL. | 38015 | * Default make them NULL. |
37849 | */ | 38016 | */ |
@@ -37852,7 +38019,7 @@ index fc6aebf..762c5f5 100644 | |||
37852 | .irq_eoi = NULL, | 38019 | .irq_eoi = NULL, |
37853 | .irq_mask = NULL, | 38020 | .irq_mask = NULL, |
37854 | .irq_unmask = NULL, | 38021 | .irq_unmask = NULL, |
37855 | @@ -332,7 +332,7 @@ static void gic_handle_cascade_irq(unsigned int irq, struct irq_desc *desc) | 38022 | @@ -333,7 +333,7 @@ static void gic_handle_cascade_irq(unsigned int irq, struct irq_desc *desc) |
37856 | chained_irq_exit(chip, desc); | 38023 | chained_irq_exit(chip, desc); |
37857 | } | 38024 | } |
37858 | 38025 | ||
@@ -37862,7 +38029,7 @@ index fc6aebf..762c5f5 100644 | |||
37862 | .irq_mask = gic_mask_irq, | 38029 | .irq_mask = gic_mask_irq, |
37863 | .irq_unmask = gic_unmask_irq, | 38030 | .irq_unmask = gic_unmask_irq, |
37864 | diff --git a/drivers/isdn/capi/capi.c b/drivers/isdn/capi/capi.c | 38031 | diff --git a/drivers/isdn/capi/capi.c b/drivers/isdn/capi/capi.c |
37865 | index 89562a8..218999b 100644 | 38032 | index ac6f72b..81150f2 100644 |
37866 | --- a/drivers/isdn/capi/capi.c | 38033 | --- a/drivers/isdn/capi/capi.c |
37867 | +++ b/drivers/isdn/capi/capi.c | 38034 | +++ b/drivers/isdn/capi/capi.c |
37868 | @@ -81,8 +81,8 @@ struct capiminor { | 38035 | @@ -81,8 +81,8 @@ struct capiminor { |
@@ -37902,39 +38069,8 @@ index 89562a8..218999b 100644 | |||
37902 | capimsg_setu32(skb->data, 8, mp->ncci); /* NCCI */ | 38069 | capimsg_setu32(skb->data, 8, mp->ncci); /* NCCI */ |
37903 | capimsg_setu32(skb->data, 12, (u32)(long)skb->data);/* Data32 */ | 38070 | capimsg_setu32(skb->data, 12, (u32)(long)skb->data);/* Data32 */ |
37904 | capimsg_setu16(skb->data, 16, len); /* Data length */ | 38071 | capimsg_setu16(skb->data, 16, len); /* Data length */ |
37905 | diff --git a/drivers/isdn/capi/kcapi.c b/drivers/isdn/capi/kcapi.c | ||
37906 | index 9b1b274..c123709 100644 | ||
37907 | --- a/drivers/isdn/capi/kcapi.c | ||
37908 | +++ b/drivers/isdn/capi/kcapi.c | ||
37909 | @@ -93,7 +93,7 @@ capi_ctr_put(struct capi_ctr *ctr) | ||
37910 | |||
37911 | static inline struct capi_ctr *get_capi_ctr_by_nr(u16 contr) | ||
37912 | { | ||
37913 | - if (contr - 1 >= CAPI_MAXCONTR) | ||
37914 | + if (contr < 1 || contr - 1 >= CAPI_MAXCONTR) | ||
37915 | return NULL; | ||
37916 | |||
37917 | return capi_controller[contr - 1]; | ||
37918 | @@ -103,7 +103,7 @@ static inline struct capi20_appl *__get_capi_appl_by_nr(u16 applid) | ||
37919 | { | ||
37920 | lockdep_assert_held(&capi_controller_lock); | ||
37921 | |||
37922 | - if (applid - 1 >= CAPI_MAXAPPL) | ||
37923 | + if (applid < 1 || applid - 1 >= CAPI_MAXAPPL) | ||
37924 | return NULL; | ||
37925 | |||
37926 | return capi_applications[applid - 1]; | ||
37927 | @@ -111,7 +111,7 @@ static inline struct capi20_appl *__get_capi_appl_by_nr(u16 applid) | ||
37928 | |||
37929 | static inline struct capi20_appl *get_capi_appl_by_nr(u16 applid) | ||
37930 | { | ||
37931 | - if (applid - 1 >= CAPI_MAXAPPL) | ||
37932 | + if (applid < 1 || applid - 1 >= CAPI_MAXAPPL) | ||
37933 | return NULL; | ||
37934 | |||
37935 | return rcu_dereference(capi_applications[applid - 1]); | ||
37936 | diff --git a/drivers/isdn/gigaset/interface.c b/drivers/isdn/gigaset/interface.c | 38072 | diff --git a/drivers/isdn/gigaset/interface.c b/drivers/isdn/gigaset/interface.c |
37937 | index e2b5396..c5486dc 100644 | 38073 | index 600c79b..3752bab 100644 |
37938 | --- a/drivers/isdn/gigaset/interface.c | 38074 | --- a/drivers/isdn/gigaset/interface.c |
37939 | +++ b/drivers/isdn/gigaset/interface.c | 38075 | +++ b/drivers/isdn/gigaset/interface.c |
37940 | @@ -130,9 +130,9 @@ static int if_open(struct tty_struct *tty, struct file *filp) | 38076 | @@ -130,9 +130,9 @@ static int if_open(struct tty_struct *tty, struct file *filp) |
@@ -37962,7 +38098,7 @@ index e2b5396..c5486dc 100644 | |||
37962 | 38098 | ||
37963 | mutex_unlock(&cs->mutex); | 38099 | mutex_unlock(&cs->mutex); |
37964 | diff --git a/drivers/isdn/hardware/avm/b1.c b/drivers/isdn/hardware/avm/b1.c | 38100 | diff --git a/drivers/isdn/hardware/avm/b1.c b/drivers/isdn/hardware/avm/b1.c |
37965 | index 821f7ac..28d4030 100644 | 38101 | index 4d9b195..455075c 100644 |
37966 | --- a/drivers/isdn/hardware/avm/b1.c | 38102 | --- a/drivers/isdn/hardware/avm/b1.c |
37967 | +++ b/drivers/isdn/hardware/avm/b1.c | 38103 | +++ b/drivers/isdn/hardware/avm/b1.c |
37968 | @@ -176,7 +176,7 @@ int b1_load_t4file(avmcard *card, capiloaddatapart *t4file) | 38104 | @@ -176,7 +176,7 @@ int b1_load_t4file(avmcard *card, capiloaddatapart *t4file) |
@@ -37984,10 +38120,10 @@ index 821f7ac..28d4030 100644 | |||
37984 | } else { | 38120 | } else { |
37985 | memcpy(buf, dp, left); | 38121 | memcpy(buf, dp, left); |
37986 | diff --git a/drivers/isdn/i4l/isdn_tty.c b/drivers/isdn/i4l/isdn_tty.c | 38122 | diff --git a/drivers/isdn/i4l/isdn_tty.c b/drivers/isdn/i4l/isdn_tty.c |
37987 | index ebaebdf..acd4405 100644 | 38123 | index 3c5f249..5fac4d0 100644 |
37988 | --- a/drivers/isdn/i4l/isdn_tty.c | 38124 | --- a/drivers/isdn/i4l/isdn_tty.c |
37989 | +++ b/drivers/isdn/i4l/isdn_tty.c | 38125 | +++ b/drivers/isdn/i4l/isdn_tty.c |
37990 | @@ -1511,9 +1511,9 @@ isdn_tty_open(struct tty_struct *tty, struct file *filp) | 38126 | @@ -1508,9 +1508,9 @@ isdn_tty_open(struct tty_struct *tty, struct file *filp) |
37991 | 38127 | ||
37992 | #ifdef ISDN_DEBUG_MODEM_OPEN | 38128 | #ifdef ISDN_DEBUG_MODEM_OPEN |
37993 | printk(KERN_DEBUG "isdn_tty_open %s, count = %d\n", tty->name, | 38129 | printk(KERN_DEBUG "isdn_tty_open %s, count = %d\n", tty->name, |
@@ -37999,7 +38135,7 @@ index ebaebdf..acd4405 100644 | |||
37999 | port->tty = tty; | 38135 | port->tty = tty; |
38000 | /* | 38136 | /* |
38001 | * Start up serial port | 38137 | * Start up serial port |
38002 | @@ -1557,7 +1557,7 @@ isdn_tty_close(struct tty_struct *tty, struct file *filp) | 38138 | @@ -1554,7 +1554,7 @@ isdn_tty_close(struct tty_struct *tty, struct file *filp) |
38003 | #endif | 38139 | #endif |
38004 | return; | 38140 | return; |
38005 | } | 38141 | } |
@@ -38008,7 +38144,7 @@ index ebaebdf..acd4405 100644 | |||
38008 | /* | 38144 | /* |
38009 | * Uh, oh. tty->count is 1, which means that the tty | 38145 | * Uh, oh. tty->count is 1, which means that the tty |
38010 | * structure will be freed. Info->count should always | 38146 | * structure will be freed. Info->count should always |
38011 | @@ -1566,15 +1566,15 @@ isdn_tty_close(struct tty_struct *tty, struct file *filp) | 38147 | @@ -1563,15 +1563,15 @@ isdn_tty_close(struct tty_struct *tty, struct file *filp) |
38012 | * serial port won't be shutdown. | 38148 | * serial port won't be shutdown. |
38013 | */ | 38149 | */ |
38014 | printk(KERN_ERR "isdn_tty_close: bad port count; tty->count is 1, " | 38150 | printk(KERN_ERR "isdn_tty_close: bad port count; tty->count is 1, " |
@@ -38030,7 +38166,7 @@ index ebaebdf..acd4405 100644 | |||
38030 | #ifdef ISDN_DEBUG_MODEM_OPEN | 38166 | #ifdef ISDN_DEBUG_MODEM_OPEN |
38031 | printk(KERN_DEBUG "isdn_tty_close after info->count != 0\n"); | 38167 | printk(KERN_DEBUG "isdn_tty_close after info->count != 0\n"); |
38032 | #endif | 38168 | #endif |
38033 | @@ -1628,7 +1628,7 @@ isdn_tty_hangup(struct tty_struct *tty) | 38169 | @@ -1625,7 +1625,7 @@ isdn_tty_hangup(struct tty_struct *tty) |
38034 | if (isdn_tty_paranoia_check(info, tty->name, "isdn_tty_hangup")) | 38170 | if (isdn_tty_paranoia_check(info, tty->name, "isdn_tty_hangup")) |
38035 | return; | 38171 | return; |
38036 | isdn_tty_shutdown(info); | 38172 | isdn_tty_shutdown(info); |
@@ -38039,7 +38175,7 @@ index ebaebdf..acd4405 100644 | |||
38039 | port->flags &= ~ASYNC_NORMAL_ACTIVE; | 38175 | port->flags &= ~ASYNC_NORMAL_ACTIVE; |
38040 | port->tty = NULL; | 38176 | port->tty = NULL; |
38041 | wake_up_interruptible(&port->open_wait); | 38177 | wake_up_interruptible(&port->open_wait); |
38042 | @@ -1973,7 +1973,7 @@ isdn_tty_find_icall(int di, int ch, setup_parm *setup) | 38178 | @@ -1970,7 +1970,7 @@ isdn_tty_find_icall(int di, int ch, setup_parm *setup) |
38043 | for (i = 0; i < ISDN_MAX_CHANNELS; i++) { | 38179 | for (i = 0; i < ISDN_MAX_CHANNELS; i++) { |
38044 | modem_info *info = &dev->mdm.info[i]; | 38180 | modem_info *info = &dev->mdm.info[i]; |
38045 | 38181 | ||
@@ -38088,28 +38224,28 @@ index 64e204e..c6bf189 100644 | |||
38088 | .callback = ss4200_led_dmi_callback, | 38224 | .callback = ss4200_led_dmi_callback, |
38089 | .ident = "Intel SS4200-E", | 38225 | .ident = "Intel SS4200-E", |
38090 | diff --git a/drivers/lguest/core.c b/drivers/lguest/core.c | 38226 | diff --git a/drivers/lguest/core.c b/drivers/lguest/core.c |
38091 | index a5ebc00..3de3364 100644 | 38227 | index 0bf1e4e..b4bf44e 100644 |
38092 | --- a/drivers/lguest/core.c | 38228 | --- a/drivers/lguest/core.c |
38093 | +++ b/drivers/lguest/core.c | 38229 | +++ b/drivers/lguest/core.c |
38094 | @@ -92,9 +92,17 @@ static __init int map_switcher(void) | 38230 | @@ -97,9 +97,17 @@ static __init int map_switcher(void) |
38095 | * it's worked so far. The end address needs +1 because __get_vm_area | 38231 | * The end address needs +1 because __get_vm_area allocates an |
38096 | * allocates an extra guard page, so we need space for that. | 38232 | * extra guard page, so we need space for that. |
38097 | */ | 38233 | */ |
38098 | + | 38234 | + |
38099 | +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC) | 38235 | +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC) |
38100 | + switcher_vma = __get_vm_area(TOTAL_SWITCHER_PAGES * PAGE_SIZE, | 38236 | + switcher_vma = __get_vm_area(TOTAL_SWITCHER_PAGES * PAGE_SIZE, |
38101 | + VM_ALLOC | VM_KERNEXEC, SWITCHER_ADDR, SWITCHER_ADDR | 38237 | + VM_ALLOC | VM_KERNEXEC, switcher_addr, switcher_addr |
38102 | + + (TOTAL_SWITCHER_PAGES+1) * PAGE_SIZE); | 38238 | + + (TOTAL_SWITCHER_PAGES+1) * PAGE_SIZE); |
38103 | +#else | 38239 | +#else |
38104 | switcher_vma = __get_vm_area(TOTAL_SWITCHER_PAGES * PAGE_SIZE, | 38240 | switcher_vma = __get_vm_area(TOTAL_SWITCHER_PAGES * PAGE_SIZE, |
38105 | VM_ALLOC, SWITCHER_ADDR, SWITCHER_ADDR | 38241 | VM_ALLOC, switcher_addr, switcher_addr |
38106 | + (TOTAL_SWITCHER_PAGES+1) * PAGE_SIZE); | 38242 | + (TOTAL_SWITCHER_PAGES+1) * PAGE_SIZE); |
38107 | +#endif | 38243 | +#endif |
38108 | + | 38244 | + |
38109 | if (!switcher_vma) { | 38245 | if (!switcher_vma) { |
38110 | err = -ENOMEM; | 38246 | err = -ENOMEM; |
38111 | printk("lguest: could not map switcher pages high\n"); | 38247 | printk("lguest: could not map switcher pages high\n"); |
38112 | @@ -119,7 +127,7 @@ static __init int map_switcher(void) | 38248 | @@ -124,7 +132,7 @@ static __init int map_switcher(void) |
38113 | * Now the Switcher is mapped at the right address, we can't fail! | 38249 | * Now the Switcher is mapped at the right address, we can't fail! |
38114 | * Copy in the compiled-in Switcher code (from x86/switcher_32.S). | 38250 | * Copy in the compiled-in Switcher code (from x86/switcher_32.S). |
38115 | */ | 38251 | */ |
@@ -38119,10 +38255,10 @@ index a5ebc00..3de3364 100644 | |||
38119 | 38255 | ||
38120 | printk(KERN_INFO "lguest: mapped switcher at %p\n", | 38256 | printk(KERN_INFO "lguest: mapped switcher at %p\n", |
38121 | diff --git a/drivers/lguest/page_tables.c b/drivers/lguest/page_tables.c | 38257 | diff --git a/drivers/lguest/page_tables.c b/drivers/lguest/page_tables.c |
38122 | index 3b62be16..e33134a 100644 | 38258 | index 5b9ac32..2ef4f26 100644 |
38123 | --- a/drivers/lguest/page_tables.c | 38259 | --- a/drivers/lguest/page_tables.c |
38124 | +++ b/drivers/lguest/page_tables.c | 38260 | +++ b/drivers/lguest/page_tables.c |
38125 | @@ -532,7 +532,7 @@ void pin_page(struct lg_cpu *cpu, unsigned long vaddr) | 38261 | @@ -559,7 +559,7 @@ void pin_page(struct lg_cpu *cpu, unsigned long vaddr) |
38126 | /*:*/ | 38262 | /*:*/ |
38127 | 38263 | ||
38128 | #ifdef CONFIG_X86_PAE | 38264 | #ifdef CONFIG_X86_PAE |
@@ -38132,19 +38268,19 @@ index 3b62be16..e33134a 100644 | |||
38132 | /* If the entry's not present, there's nothing to release. */ | 38268 | /* If the entry's not present, there's nothing to release. */ |
38133 | if (pmd_flags(*spmd) & _PAGE_PRESENT) { | 38269 | if (pmd_flags(*spmd) & _PAGE_PRESENT) { |
38134 | diff --git a/drivers/lguest/x86/core.c b/drivers/lguest/x86/core.c | 38270 | diff --git a/drivers/lguest/x86/core.c b/drivers/lguest/x86/core.c |
38135 | index 4af12e1..0e89afe 100644 | 38271 | index f0a3347..f6608b2 100644 |
38136 | --- a/drivers/lguest/x86/core.c | 38272 | --- a/drivers/lguest/x86/core.c |
38137 | +++ b/drivers/lguest/x86/core.c | 38273 | +++ b/drivers/lguest/x86/core.c |
38138 | @@ -59,7 +59,7 @@ static struct { | 38274 | @@ -59,7 +59,7 @@ static struct { |
38139 | /* Offset from where switcher.S was compiled to where we've copied it */ | 38275 | /* Offset from where switcher.S was compiled to where we've copied it */ |
38140 | static unsigned long switcher_offset(void) | 38276 | static unsigned long switcher_offset(void) |
38141 | { | 38277 | { |
38142 | - return SWITCHER_ADDR - (unsigned long)start_switcher_text; | 38278 | - return switcher_addr - (unsigned long)start_switcher_text; |
38143 | + return SWITCHER_ADDR - (unsigned long)ktla_ktva(start_switcher_text); | 38279 | + return switcher_addr - (unsigned long)ktla_ktva(start_switcher_text); |
38144 | } | 38280 | } |
38145 | 38281 | ||
38146 | /* This cpu's struct lguest_pages. */ | 38282 | /* This cpu's struct lguest_pages (after the Switcher text page) */ |
38147 | @@ -100,7 +100,13 @@ static void copy_in_guest_info(struct lg_cpu *cpu, struct lguest_pages *pages) | 38283 | @@ -99,7 +99,13 @@ static void copy_in_guest_info(struct lg_cpu *cpu, struct lguest_pages *pages) |
38148 | * These copies are pretty cheap, so we do them unconditionally: */ | 38284 | * These copies are pretty cheap, so we do them unconditionally: */ |
38149 | /* Save the current Host top-level page directory. | 38285 | /* Save the current Host top-level page directory. |
38150 | */ | 38286 | */ |
@@ -38158,7 +38294,7 @@ index 4af12e1..0e89afe 100644 | |||
38158 | /* | 38294 | /* |
38159 | * Set up the Guest's page tables to see this CPU's pages (and no | 38295 | * Set up the Guest's page tables to see this CPU's pages (and no |
38160 | * other CPU's pages). | 38296 | * other CPU's pages). |
38161 | @@ -476,7 +482,7 @@ void __init lguest_arch_host_init(void) | 38297 | @@ -475,7 +481,7 @@ void __init lguest_arch_host_init(void) |
38162 | * compiled-in switcher code and the high-mapped copy we just made. | 38298 | * compiled-in switcher code and the high-mapped copy we just made. |
38163 | */ | 38299 | */ |
38164 | for (i = 0; i < IDT_ENTRIES; i++) | 38300 | for (i = 0; i < IDT_ENTRIES; i++) |
@@ -38167,7 +38303,7 @@ index 4af12e1..0e89afe 100644 | |||
38167 | 38303 | ||
38168 | /* | 38304 | /* |
38169 | * Set up the Switcher's per-cpu areas. | 38305 | * Set up the Switcher's per-cpu areas. |
38170 | @@ -559,7 +565,7 @@ void __init lguest_arch_host_init(void) | 38306 | @@ -558,7 +564,7 @@ void __init lguest_arch_host_init(void) |
38171 | * it will be undisturbed when we switch. To change %cs and jump we | 38307 | * it will be undisturbed when we switch. To change %cs and jump we |
38172 | * need this structure to feed to Intel's "lcall" instruction. | 38308 | * need this structure to feed to Intel's "lcall" instruction. |
38173 | */ | 38309 | */ |
@@ -38238,8 +38374,21 @@ index 40634b0..4f5855e 100644 | |||
38238 | 38374 | ||
38239 | // Every interrupt can come to us here | 38375 | // Every interrupt can come to us here |
38240 | // But we must truly tell each apart. | 38376 | // But we must truly tell each apart. |
38377 | diff --git a/drivers/md/bcache/closure.h b/drivers/md/bcache/closure.h | ||
38378 | index 0003992..854bbce 100644 | ||
38379 | --- a/drivers/md/bcache/closure.h | ||
38380 | +++ b/drivers/md/bcache/closure.h | ||
38381 | @@ -622,7 +622,7 @@ static inline void closure_wake_up(struct closure_waitlist *list) | ||
38382 | static inline void set_closure_fn(struct closure *cl, closure_fn *fn, | ||
38383 | struct workqueue_struct *wq) | ||
38384 | { | ||
38385 | - BUG_ON(object_is_on_stack(cl)); | ||
38386 | + BUG_ON(object_starts_on_stack(cl)); | ||
38387 | closure_set_ip(cl); | ||
38388 | cl->fn = fn; | ||
38389 | cl->wq = wq; | ||
38241 | diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c | 38390 | diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c |
38242 | index 4fd9d6a..834fa03 100644 | 38391 | index 5a2c754..0fa55db 100644 |
38243 | --- a/drivers/md/bitmap.c | 38392 | --- a/drivers/md/bitmap.c |
38244 | +++ b/drivers/md/bitmap.c | 38393 | +++ b/drivers/md/bitmap.c |
38245 | @@ -1779,7 +1779,7 @@ void bitmap_status(struct seq_file *seq, struct bitmap *bitmap) | 38394 | @@ -1779,7 +1779,7 @@ void bitmap_status(struct seq_file *seq, struct bitmap *bitmap) |
@@ -38265,7 +38414,7 @@ index aa04f02..2a1309e 100644 | |||
38265 | DMWARN("name not supplied when creating device"); | 38414 | DMWARN("name not supplied when creating device"); |
38266 | return -EINVAL; | 38415 | return -EINVAL; |
38267 | diff --git a/drivers/md/dm-raid1.c b/drivers/md/dm-raid1.c | 38416 | diff --git a/drivers/md/dm-raid1.c b/drivers/md/dm-raid1.c |
38268 | index d053098..05cc375 100644 | 38417 | index 699b5be..eac0a15 100644 |
38269 | --- a/drivers/md/dm-raid1.c | 38418 | --- a/drivers/md/dm-raid1.c |
38270 | +++ b/drivers/md/dm-raid1.c | 38419 | +++ b/drivers/md/dm-raid1.c |
38271 | @@ -40,7 +40,7 @@ enum dm_raid1_error { | 38420 | @@ -40,7 +40,7 @@ enum dm_raid1_error { |
@@ -38341,7 +38490,7 @@ index d053098..05cc375 100644 | |||
38341 | 38490 | ||
38342 | return (test_bit(DM_RAID1_FLUSH_ERROR, &(m->error_type))) ? 'F' : | 38491 | return (test_bit(DM_RAID1_FLUSH_ERROR, &(m->error_type))) ? 'F' : |
38343 | diff --git a/drivers/md/dm-stripe.c b/drivers/md/dm-stripe.c | 38492 | diff --git a/drivers/md/dm-stripe.c b/drivers/md/dm-stripe.c |
38344 | index 7b8b2b9..9c7d145 100644 | 38493 | index d907ca6..cfb8384 100644 |
38345 | --- a/drivers/md/dm-stripe.c | 38494 | --- a/drivers/md/dm-stripe.c |
38346 | +++ b/drivers/md/dm-stripe.c | 38495 | +++ b/drivers/md/dm-stripe.c |
38347 | @@ -20,7 +20,7 @@ struct stripe { | 38496 | @@ -20,7 +20,7 @@ struct stripe { |
@@ -38396,7 +38545,7 @@ index 1ff252a..ee384c1 100644 | |||
38396 | "start=%llu, len=%llu, dev_size=%llu", | 38545 | "start=%llu, len=%llu, dev_size=%llu", |
38397 | dm_device_name(ti->table->md), bdevname(bdev, b), | 38546 | dm_device_name(ti->table->md), bdevname(bdev, b), |
38398 | diff --git a/drivers/md/dm-thin-metadata.c b/drivers/md/dm-thin-metadata.c | 38547 | diff --git a/drivers/md/dm-thin-metadata.c b/drivers/md/dm-thin-metadata.c |
38399 | index 00cee02..b89a29d 100644 | 38548 | index 60bce43..9b997d0 100644 |
38400 | --- a/drivers/md/dm-thin-metadata.c | 38549 | --- a/drivers/md/dm-thin-metadata.c |
38401 | +++ b/drivers/md/dm-thin-metadata.c | 38550 | +++ b/drivers/md/dm-thin-metadata.c |
38402 | @@ -397,7 +397,7 @@ static void __setup_btree_details(struct dm_pool_metadata *pmd) | 38551 | @@ -397,7 +397,7 @@ static void __setup_btree_details(struct dm_pool_metadata *pmd) |
@@ -38418,7 +38567,7 @@ index 00cee02..b89a29d 100644 | |||
38418 | pmd->bl_info.value_type.inc = data_block_inc; | 38567 | pmd->bl_info.value_type.inc = data_block_inc; |
38419 | pmd->bl_info.value_type.dec = data_block_dec; | 38568 | pmd->bl_info.value_type.dec = data_block_dec; |
38420 | diff --git a/drivers/md/dm.c b/drivers/md/dm.c | 38569 | diff --git a/drivers/md/dm.c b/drivers/md/dm.c |
38421 | index 9a0bdad..4df9543 100644 | 38570 | index d5370a9..8761bbc 100644 |
38422 | --- a/drivers/md/dm.c | 38571 | --- a/drivers/md/dm.c |
38423 | +++ b/drivers/md/dm.c | 38572 | +++ b/drivers/md/dm.c |
38424 | @@ -169,9 +169,9 @@ struct mapped_device { | 38573 | @@ -169,9 +169,9 @@ struct mapped_device { |
@@ -38433,7 +38582,7 @@ index 9a0bdad..4df9543 100644 | |||
38433 | struct list_head uevent_list; | 38582 | struct list_head uevent_list; |
38434 | spinlock_t uevent_lock; /* Protect access to uevent_list */ | 38583 | spinlock_t uevent_lock; /* Protect access to uevent_list */ |
38435 | 38584 | ||
38436 | @@ -1879,8 +1879,8 @@ static struct mapped_device *alloc_dev(int minor) | 38585 | @@ -1877,8 +1877,8 @@ static struct mapped_device *alloc_dev(int minor) |
38437 | rwlock_init(&md->map_lock); | 38586 | rwlock_init(&md->map_lock); |
38438 | atomic_set(&md->holders, 1); | 38587 | atomic_set(&md->holders, 1); |
38439 | atomic_set(&md->open_count, 0); | 38588 | atomic_set(&md->open_count, 0); |
@@ -38444,7 +38593,7 @@ index 9a0bdad..4df9543 100644 | |||
38444 | INIT_LIST_HEAD(&md->uevent_list); | 38593 | INIT_LIST_HEAD(&md->uevent_list); |
38445 | spin_lock_init(&md->uevent_lock); | 38594 | spin_lock_init(&md->uevent_lock); |
38446 | 38595 | ||
38447 | @@ -2028,7 +2028,7 @@ static void event_callback(void *context) | 38596 | @@ -2026,7 +2026,7 @@ static void event_callback(void *context) |
38448 | 38597 | ||
38449 | dm_send_uevents(&uevents, &disk_to_dev(md->disk)->kobj); | 38598 | dm_send_uevents(&uevents, &disk_to_dev(md->disk)->kobj); |
38450 | 38599 | ||
@@ -38453,7 +38602,7 @@ index 9a0bdad..4df9543 100644 | |||
38453 | wake_up(&md->eventq); | 38602 | wake_up(&md->eventq); |
38454 | } | 38603 | } |
38455 | 38604 | ||
38456 | @@ -2685,18 +2685,18 @@ int dm_kobject_uevent(struct mapped_device *md, enum kobject_action action, | 38605 | @@ -2683,18 +2683,18 @@ int dm_kobject_uevent(struct mapped_device *md, enum kobject_action action, |
38457 | 38606 | ||
38458 | uint32_t dm_next_uevent_seq(struct mapped_device *md) | 38607 | uint32_t dm_next_uevent_seq(struct mapped_device *md) |
38459 | { | 38608 | { |
@@ -38476,10 +38625,10 @@ index 9a0bdad..4df9543 100644 | |||
38476 | 38625 | ||
38477 | void dm_uevent_add(struct mapped_device *md, struct list_head *elist) | 38626 | void dm_uevent_add(struct mapped_device *md, struct list_head *elist) |
38478 | diff --git a/drivers/md/md.c b/drivers/md/md.c | 38627 | diff --git a/drivers/md/md.c b/drivers/md/md.c |
38479 | index a4a93b9..4747b63 100644 | 38628 | index 9b82377..6b6922d 100644 |
38480 | --- a/drivers/md/md.c | 38629 | --- a/drivers/md/md.c |
38481 | +++ b/drivers/md/md.c | 38630 | +++ b/drivers/md/md.c |
38482 | @@ -240,10 +240,10 @@ EXPORT_SYMBOL_GPL(md_trim_bio); | 38631 | @@ -234,10 +234,10 @@ EXPORT_SYMBOL_GPL(md_trim_bio); |
38483 | * start build, activate spare | 38632 | * start build, activate spare |
38484 | */ | 38633 | */ |
38485 | static DECLARE_WAIT_QUEUE_HEAD(md_event_waiters); | 38634 | static DECLARE_WAIT_QUEUE_HEAD(md_event_waiters); |
@@ -38492,7 +38641,7 @@ index a4a93b9..4747b63 100644 | |||
38492 | wake_up(&md_event_waiters); | 38641 | wake_up(&md_event_waiters); |
38493 | } | 38642 | } |
38494 | EXPORT_SYMBOL_GPL(md_new_event); | 38643 | EXPORT_SYMBOL_GPL(md_new_event); |
38495 | @@ -253,7 +253,7 @@ EXPORT_SYMBOL_GPL(md_new_event); | 38644 | @@ -247,7 +247,7 @@ EXPORT_SYMBOL_GPL(md_new_event); |
38496 | */ | 38645 | */ |
38497 | static void md_new_event_inintr(struct mddev *mddev) | 38646 | static void md_new_event_inintr(struct mddev *mddev) |
38498 | { | 38647 | { |
@@ -38501,7 +38650,7 @@ index a4a93b9..4747b63 100644 | |||
38501 | wake_up(&md_event_waiters); | 38650 | wake_up(&md_event_waiters); |
38502 | } | 38651 | } |
38503 | 38652 | ||
38504 | @@ -1507,7 +1507,7 @@ static int super_1_load(struct md_rdev *rdev, struct md_rdev *refdev, int minor_ | 38653 | @@ -1501,7 +1501,7 @@ static int super_1_load(struct md_rdev *rdev, struct md_rdev *refdev, int minor_ |
38505 | if ((le32_to_cpu(sb->feature_map) & MD_FEATURE_RESHAPE_ACTIVE) && | 38654 | if ((le32_to_cpu(sb->feature_map) & MD_FEATURE_RESHAPE_ACTIVE) && |
38506 | (le32_to_cpu(sb->feature_map) & MD_FEATURE_NEW_OFFSET)) | 38655 | (le32_to_cpu(sb->feature_map) & MD_FEATURE_NEW_OFFSET)) |
38507 | rdev->new_data_offset += (s32)le32_to_cpu(sb->new_offset); | 38656 | rdev->new_data_offset += (s32)le32_to_cpu(sb->new_offset); |
@@ -38510,7 +38659,7 @@ index a4a93b9..4747b63 100644 | |||
38510 | 38659 | ||
38511 | rdev->sb_size = le32_to_cpu(sb->max_dev) * 2 + 256; | 38660 | rdev->sb_size = le32_to_cpu(sb->max_dev) * 2 + 256; |
38512 | bmask = queue_logical_block_size(rdev->bdev->bd_disk->queue)-1; | 38661 | bmask = queue_logical_block_size(rdev->bdev->bd_disk->queue)-1; |
38513 | @@ -1751,7 +1751,7 @@ static void super_1_sync(struct mddev *mddev, struct md_rdev *rdev) | 38662 | @@ -1745,7 +1745,7 @@ static void super_1_sync(struct mddev *mddev, struct md_rdev *rdev) |
38514 | else | 38663 | else |
38515 | sb->resync_offset = cpu_to_le64(0); | 38664 | sb->resync_offset = cpu_to_le64(0); |
38516 | 38665 | ||
@@ -38519,7 +38668,7 @@ index a4a93b9..4747b63 100644 | |||
38519 | 38668 | ||
38520 | sb->raid_disks = cpu_to_le32(mddev->raid_disks); | 38669 | sb->raid_disks = cpu_to_le32(mddev->raid_disks); |
38521 | sb->size = cpu_to_le64(mddev->dev_sectors); | 38670 | sb->size = cpu_to_le64(mddev->dev_sectors); |
38522 | @@ -2751,7 +2751,7 @@ __ATTR(state, S_IRUGO|S_IWUSR, state_show, state_store); | 38671 | @@ -2750,7 +2750,7 @@ __ATTR(state, S_IRUGO|S_IWUSR, state_show, state_store); |
38523 | static ssize_t | 38672 | static ssize_t |
38524 | errors_show(struct md_rdev *rdev, char *page) | 38673 | errors_show(struct md_rdev *rdev, char *page) |
38525 | { | 38674 | { |
@@ -38528,7 +38677,7 @@ index a4a93b9..4747b63 100644 | |||
38528 | } | 38677 | } |
38529 | 38678 | ||
38530 | static ssize_t | 38679 | static ssize_t |
38531 | @@ -2760,7 +2760,7 @@ errors_store(struct md_rdev *rdev, const char *buf, size_t len) | 38680 | @@ -2759,7 +2759,7 @@ errors_store(struct md_rdev *rdev, const char *buf, size_t len) |
38532 | char *e; | 38681 | char *e; |
38533 | unsigned long n = simple_strtoul(buf, &e, 10); | 38682 | unsigned long n = simple_strtoul(buf, &e, 10); |
38534 | if (*buf && (*e == 0 || *e == '\n')) { | 38683 | if (*buf && (*e == 0 || *e == '\n')) { |
@@ -38537,7 +38686,7 @@ index a4a93b9..4747b63 100644 | |||
38537 | return len; | 38686 | return len; |
38538 | } | 38687 | } |
38539 | return -EINVAL; | 38688 | return -EINVAL; |
38540 | @@ -3210,8 +3210,8 @@ int md_rdev_init(struct md_rdev *rdev) | 38689 | @@ -3207,8 +3207,8 @@ int md_rdev_init(struct md_rdev *rdev) |
38541 | rdev->sb_loaded = 0; | 38690 | rdev->sb_loaded = 0; |
38542 | rdev->bb_page = NULL; | 38691 | rdev->bb_page = NULL; |
38543 | atomic_set(&rdev->nr_pending, 0); | 38692 | atomic_set(&rdev->nr_pending, 0); |
@@ -38548,7 +38697,7 @@ index a4a93b9..4747b63 100644 | |||
38548 | 38697 | ||
38549 | INIT_LIST_HEAD(&rdev->same_set); | 38698 | INIT_LIST_HEAD(&rdev->same_set); |
38550 | init_waitqueue_head(&rdev->blocked_wait); | 38699 | init_waitqueue_head(&rdev->blocked_wait); |
38551 | @@ -6994,7 +6994,7 @@ static int md_seq_show(struct seq_file *seq, void *v) | 38700 | @@ -7009,7 +7009,7 @@ static int md_seq_show(struct seq_file *seq, void *v) |
38552 | 38701 | ||
38553 | spin_unlock(&pers_lock); | 38702 | spin_unlock(&pers_lock); |
38554 | seq_printf(seq, "\n"); | 38703 | seq_printf(seq, "\n"); |
@@ -38557,7 +38706,7 @@ index a4a93b9..4747b63 100644 | |||
38557 | return 0; | 38706 | return 0; |
38558 | } | 38707 | } |
38559 | if (v == (void*)2) { | 38708 | if (v == (void*)2) { |
38560 | @@ -7097,7 +7097,7 @@ static int md_seq_open(struct inode *inode, struct file *file) | 38709 | @@ -7112,7 +7112,7 @@ static int md_seq_open(struct inode *inode, struct file *file) |
38561 | return error; | 38710 | return error; |
38562 | 38711 | ||
38563 | seq = file->private_data; | 38712 | seq = file->private_data; |
@@ -38566,7 +38715,7 @@ index a4a93b9..4747b63 100644 | |||
38566 | return error; | 38715 | return error; |
38567 | } | 38716 | } |
38568 | 38717 | ||
38569 | @@ -7111,7 +7111,7 @@ static unsigned int mdstat_poll(struct file *filp, poll_table *wait) | 38718 | @@ -7126,7 +7126,7 @@ static unsigned int mdstat_poll(struct file *filp, poll_table *wait) |
38570 | /* always allow read */ | 38719 | /* always allow read */ |
38571 | mask = POLLIN | POLLRDNORM; | 38720 | mask = POLLIN | POLLRDNORM; |
38572 | 38721 | ||
@@ -38575,7 +38724,7 @@ index a4a93b9..4747b63 100644 | |||
38575 | mask |= POLLERR | POLLPRI; | 38724 | mask |= POLLERR | POLLPRI; |
38576 | return mask; | 38725 | return mask; |
38577 | } | 38726 | } |
38578 | @@ -7155,7 +7155,7 @@ static int is_mddev_idle(struct mddev *mddev, int init) | 38727 | @@ -7170,7 +7170,7 @@ static int is_mddev_idle(struct mddev *mddev, int init) |
38579 | struct gendisk *disk = rdev->bdev->bd_contains->bd_disk; | 38728 | struct gendisk *disk = rdev->bdev->bd_contains->bd_disk; |
38580 | curr_events = (int)part_stat_read(&disk->part0, sectors[0]) + | 38729 | curr_events = (int)part_stat_read(&disk->part0, sectors[0]) + |
38581 | (int)part_stat_read(&disk->part0, sectors[1]) - | 38730 | (int)part_stat_read(&disk->part0, sectors[1]) - |
@@ -38585,7 +38734,7 @@ index a4a93b9..4747b63 100644 | |||
38585 | * as sync_io is counted when a request starts, and | 38734 | * as sync_io is counted when a request starts, and |
38586 | * disk_stats is counted when it completes. | 38735 | * disk_stats is counted when it completes. |
38587 | diff --git a/drivers/md/md.h b/drivers/md/md.h | 38736 | diff --git a/drivers/md/md.h b/drivers/md/md.h |
38588 | index d90fb1a..4174a2b 100644 | 38737 | index 653f992b6..6af6c40 100644 |
38589 | --- a/drivers/md/md.h | 38738 | --- a/drivers/md/md.h |
38590 | +++ b/drivers/md/md.h | 38739 | +++ b/drivers/md/md.h |
38591 | @@ -94,13 +94,13 @@ struct md_rdev { | 38740 | @@ -94,13 +94,13 @@ struct md_rdev { |
@@ -38614,22 +38763,22 @@ index d90fb1a..4174a2b 100644 | |||
38614 | 38763 | ||
38615 | struct md_personality | 38764 | struct md_personality |
38616 | diff --git a/drivers/md/persistent-data/dm-space-map.h b/drivers/md/persistent-data/dm-space-map.h | 38765 | diff --git a/drivers/md/persistent-data/dm-space-map.h b/drivers/md/persistent-data/dm-space-map.h |
38617 | index 1cbfc6b..56e1dbb 100644 | 38766 | index 3e6d115..ffecdeb 100644 |
38618 | --- a/drivers/md/persistent-data/dm-space-map.h | 38767 | --- a/drivers/md/persistent-data/dm-space-map.h |
38619 | +++ b/drivers/md/persistent-data/dm-space-map.h | 38768 | +++ b/drivers/md/persistent-data/dm-space-map.h |
38620 | @@ -60,6 +60,7 @@ struct dm_space_map { | 38769 | @@ -71,6 +71,7 @@ struct dm_space_map { |
38621 | int (*root_size)(struct dm_space_map *sm, size_t *result); | 38770 | dm_sm_threshold_fn fn, |
38622 | int (*copy_root)(struct dm_space_map *sm, void *copy_to_here_le, size_t len); | 38771 | void *context); |
38623 | }; | 38772 | }; |
38624 | +typedef struct dm_space_map __no_const dm_space_map_no_const; | 38773 | +typedef struct dm_space_map __no_const dm_space_map_no_const; |
38625 | 38774 | ||
38626 | /*----------------------------------------------------------------*/ | 38775 | /*----------------------------------------------------------------*/ |
38627 | 38776 | ||
38628 | diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c | 38777 | diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c |
38629 | index 7116798..c81390c 100644 | 38778 | index 6e17f81..140f717 100644 |
38630 | --- a/drivers/md/raid1.c | 38779 | --- a/drivers/md/raid1.c |
38631 | +++ b/drivers/md/raid1.c | 38780 | +++ b/drivers/md/raid1.c |
38632 | @@ -1836,7 +1836,7 @@ static int fix_sync_read_error(struct r1bio *r1_bio) | 38781 | @@ -1822,7 +1822,7 @@ static int fix_sync_read_error(struct r1bio *r1_bio) |
38633 | if (r1_sync_page_io(rdev, sect, s, | 38782 | if (r1_sync_page_io(rdev, sect, s, |
38634 | bio->bi_io_vec[idx].bv_page, | 38783 | bio->bi_io_vec[idx].bv_page, |
38635 | READ) != 0) | 38784 | READ) != 0) |
@@ -38638,7 +38787,7 @@ index 7116798..c81390c 100644 | |||
38638 | } | 38787 | } |
38639 | sectors -= s; | 38788 | sectors -= s; |
38640 | sect += s; | 38789 | sect += s; |
38641 | @@ -2058,7 +2058,7 @@ static void fix_read_error(struct r1conf *conf, int read_disk, | 38790 | @@ -2042,7 +2042,7 @@ static void fix_read_error(struct r1conf *conf, int read_disk, |
38642 | test_bit(In_sync, &rdev->flags)) { | 38791 | test_bit(In_sync, &rdev->flags)) { |
38643 | if (r1_sync_page_io(rdev, sect, s, | 38792 | if (r1_sync_page_io(rdev, sect, s, |
38644 | conf->tmppage, READ)) { | 38793 | conf->tmppage, READ)) { |
@@ -38648,10 +38797,10 @@ index 7116798..c81390c 100644 | |||
38648 | "md/raid1:%s: read error corrected " | 38797 | "md/raid1:%s: read error corrected " |
38649 | "(%d sectors at %llu on %s)\n", | 38798 | "(%d sectors at %llu on %s)\n", |
38650 | diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c | 38799 | diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c |
38651 | index e4ea992..d234520 100644 | 38800 | index d61eb7e..adfd00a 100644 |
38652 | --- a/drivers/md/raid10.c | 38801 | --- a/drivers/md/raid10.c |
38653 | +++ b/drivers/md/raid10.c | 38802 | +++ b/drivers/md/raid10.c |
38654 | @@ -1942,7 +1942,7 @@ static void end_sync_read(struct bio *bio, int error) | 38803 | @@ -1940,7 +1940,7 @@ static void end_sync_read(struct bio *bio, int error) |
38655 | /* The write handler will notice the lack of | 38804 | /* The write handler will notice the lack of |
38656 | * R10BIO_Uptodate and record any errors etc | 38805 | * R10BIO_Uptodate and record any errors etc |
38657 | */ | 38806 | */ |
@@ -38660,7 +38809,7 @@ index e4ea992..d234520 100644 | |||
38660 | &conf->mirrors[d].rdev->corrected_errors); | 38809 | &conf->mirrors[d].rdev->corrected_errors); |
38661 | 38810 | ||
38662 | /* for reconstruct, we always reschedule after a read. | 38811 | /* for reconstruct, we always reschedule after a read. |
38663 | @@ -2291,7 +2291,7 @@ static void check_decay_read_errors(struct mddev *mddev, struct md_rdev *rdev) | 38812 | @@ -2292,7 +2292,7 @@ static void check_decay_read_errors(struct mddev *mddev, struct md_rdev *rdev) |
38664 | { | 38813 | { |
38665 | struct timespec cur_time_mon; | 38814 | struct timespec cur_time_mon; |
38666 | unsigned long hours_since_last; | 38815 | unsigned long hours_since_last; |
@@ -38669,7 +38818,7 @@ index e4ea992..d234520 100644 | |||
38669 | 38818 | ||
38670 | ktime_get_ts(&cur_time_mon); | 38819 | ktime_get_ts(&cur_time_mon); |
38671 | 38820 | ||
38672 | @@ -2313,9 +2313,9 @@ static void check_decay_read_errors(struct mddev *mddev, struct md_rdev *rdev) | 38821 | @@ -2314,9 +2314,9 @@ static void check_decay_read_errors(struct mddev *mddev, struct md_rdev *rdev) |
38673 | * overflowing the shift of read_errors by hours_since_last. | 38822 | * overflowing the shift of read_errors by hours_since_last. |
38674 | */ | 38823 | */ |
38675 | if (hours_since_last >= 8 * sizeof(read_errors)) | 38824 | if (hours_since_last >= 8 * sizeof(read_errors)) |
@@ -38681,7 +38830,7 @@ index e4ea992..d234520 100644 | |||
38681 | } | 38830 | } |
38682 | 38831 | ||
38683 | static int r10_sync_page_io(struct md_rdev *rdev, sector_t sector, | 38832 | static int r10_sync_page_io(struct md_rdev *rdev, sector_t sector, |
38684 | @@ -2369,8 +2369,8 @@ static void fix_read_error(struct r10conf *conf, struct mddev *mddev, struct r10 | 38833 | @@ -2370,8 +2370,8 @@ static void fix_read_error(struct r10conf *conf, struct mddev *mddev, struct r10 |
38685 | return; | 38834 | return; |
38686 | 38835 | ||
38687 | check_decay_read_errors(mddev, rdev); | 38836 | check_decay_read_errors(mddev, rdev); |
@@ -38692,7 +38841,7 @@ index e4ea992..d234520 100644 | |||
38692 | char b[BDEVNAME_SIZE]; | 38841 | char b[BDEVNAME_SIZE]; |
38693 | bdevname(rdev->bdev, b); | 38842 | bdevname(rdev->bdev, b); |
38694 | 38843 | ||
38695 | @@ -2378,7 +2378,7 @@ static void fix_read_error(struct r10conf *conf, struct mddev *mddev, struct r10 | 38844 | @@ -2379,7 +2379,7 @@ static void fix_read_error(struct r10conf *conf, struct mddev *mddev, struct r10 |
38696 | "md/raid10:%s: %s: Raid device exceeded " | 38845 | "md/raid10:%s: %s: Raid device exceeded " |
38697 | "read_error threshold [cur %d:max %d]\n", | 38846 | "read_error threshold [cur %d:max %d]\n", |
38698 | mdname(mddev), b, | 38847 | mdname(mddev), b, |
@@ -38701,7 +38850,7 @@ index e4ea992..d234520 100644 | |||
38701 | printk(KERN_NOTICE | 38850 | printk(KERN_NOTICE |
38702 | "md/raid10:%s: %s: Failing raid device\n", | 38851 | "md/raid10:%s: %s: Failing raid device\n", |
38703 | mdname(mddev), b); | 38852 | mdname(mddev), b); |
38704 | @@ -2533,7 +2533,7 @@ static void fix_read_error(struct r10conf *conf, struct mddev *mddev, struct r10 | 38853 | @@ -2534,7 +2534,7 @@ static void fix_read_error(struct r10conf *conf, struct mddev *mddev, struct r10 |
38705 | sect + | 38854 | sect + |
38706 | choose_data_offset(r10_bio, rdev)), | 38855 | choose_data_offset(r10_bio, rdev)), |
38707 | bdevname(rdev->bdev, b)); | 38856 | bdevname(rdev->bdev, b)); |
@@ -38711,10 +38860,10 @@ index e4ea992..d234520 100644 | |||
38711 | 38860 | ||
38712 | rdev_dec_pending(rdev, mddev); | 38861 | rdev_dec_pending(rdev, mddev); |
38713 | diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c | 38862 | diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c |
38714 | index 251ab64..ed23a18 100644 | 38863 | index 05e4a10..48fbe37 100644 |
38715 | --- a/drivers/md/raid5.c | 38864 | --- a/drivers/md/raid5.c |
38716 | +++ b/drivers/md/raid5.c | 38865 | +++ b/drivers/md/raid5.c |
38717 | @@ -1763,21 +1763,21 @@ static void raid5_end_read_request(struct bio * bi, int error) | 38866 | @@ -1764,21 +1764,21 @@ static void raid5_end_read_request(struct bio * bi, int error) |
38718 | mdname(conf->mddev), STRIPE_SECTORS, | 38867 | mdname(conf->mddev), STRIPE_SECTORS, |
38719 | (unsigned long long)s, | 38868 | (unsigned long long)s, |
38720 | bdevname(rdev->bdev, b)); | 38869 | bdevname(rdev->bdev, b)); |
@@ -38740,7 +38889,7 @@ index 251ab64..ed23a18 100644 | |||
38740 | if (test_bit(R5_ReadRepl, &sh->dev[i].flags)) | 38889 | if (test_bit(R5_ReadRepl, &sh->dev[i].flags)) |
38741 | printk_ratelimited( | 38890 | printk_ratelimited( |
38742 | KERN_WARNING | 38891 | KERN_WARNING |
38743 | @@ -1805,7 +1805,7 @@ static void raid5_end_read_request(struct bio * bi, int error) | 38892 | @@ -1806,7 +1806,7 @@ static void raid5_end_read_request(struct bio * bi, int error) |
38744 | mdname(conf->mddev), | 38893 | mdname(conf->mddev), |
38745 | (unsigned long long)s, | 38894 | (unsigned long long)s, |
38746 | bdn); | 38895 | bdn); |
@@ -38776,7 +38925,7 @@ index 9b6c3bb..baeb5c7 100644 | |||
38776 | #if IS_ENABLED(CONFIG_DVB_DIB3000MB) | 38925 | #if IS_ENABLED(CONFIG_DVB_DIB3000MB) |
38777 | extern struct dvb_frontend* dib3000mb_attach(const struct dib3000_config* config, | 38926 | extern struct dvb_frontend* dib3000mb_attach(const struct dib3000_config* config, |
38778 | diff --git a/drivers/media/pci/cx88/cx88-video.c b/drivers/media/pci/cx88/cx88-video.c | 38927 | diff --git a/drivers/media/pci/cx88/cx88-video.c b/drivers/media/pci/cx88/cx88-video.c |
38779 | index bc78354..42c9459 100644 | 38928 | index c7a9be1..683f6f8 100644 |
38780 | --- a/drivers/media/pci/cx88/cx88-video.c | 38929 | --- a/drivers/media/pci/cx88/cx88-video.c |
38781 | +++ b/drivers/media/pci/cx88/cx88-video.c | 38930 | +++ b/drivers/media/pci/cx88/cx88-video.c |
38782 | @@ -50,9 +50,9 @@ MODULE_VERSION(CX88_VERSION); | 38931 | @@ -50,9 +50,9 @@ MODULE_VERSION(CX88_VERSION); |
@@ -38792,22 +38941,8 @@ index bc78354..42c9459 100644 | |||
38792 | 38941 | ||
38793 | module_param_array(video_nr, int, NULL, 0444); | 38942 | module_param_array(video_nr, int, NULL, 0444); |
38794 | module_param_array(vbi_nr, int, NULL, 0444); | 38943 | module_param_array(vbi_nr, int, NULL, 0444); |
38795 | diff --git a/drivers/media/pci/saa7134/saa7134-alsa.c b/drivers/media/pci/saa7134/saa7134-alsa.c | ||
38796 | index 10460fd..dbcdfbf 100644 | ||
38797 | --- a/drivers/media/pci/saa7134/saa7134-alsa.c | ||
38798 | +++ b/drivers/media/pci/saa7134/saa7134-alsa.c | ||
38799 | @@ -172,7 +172,9 @@ static void saa7134_irq_alsa_done(struct saa7134_dev *dev, | ||
38800 | dprintk("irq: overrun [full=%d/%d] - Blocks in %d\n",dev->dmasound.read_count, | ||
38801 | dev->dmasound.bufsize, dev->dmasound.blocks); | ||
38802 | spin_unlock(&dev->slock); | ||
38803 | + snd_pcm_stream_lock(dev->dmasound.substream); | ||
38804 | snd_pcm_stop(dev->dmasound.substream,SNDRV_PCM_STATE_XRUN); | ||
38805 | + snd_pcm_stream_unlock(dev->dmasound.substream); | ||
38806 | return; | ||
38807 | } | ||
38808 | |||
38809 | diff --git a/drivers/media/platform/omap/omap_vout.c b/drivers/media/platform/omap/omap_vout.c | 38944 | diff --git a/drivers/media/platform/omap/omap_vout.c b/drivers/media/platform/omap/omap_vout.c |
38810 | index 96c4a17..1305a79 100644 | 38945 | index d338b19..aae4f9e 100644 |
38811 | --- a/drivers/media/platform/omap/omap_vout.c | 38946 | --- a/drivers/media/platform/omap/omap_vout.c |
38812 | +++ b/drivers/media/platform/omap/omap_vout.c | 38947 | +++ b/drivers/media/platform/omap/omap_vout.c |
38813 | @@ -63,7 +63,6 @@ enum omap_vout_channels { | 38948 | @@ -63,7 +63,6 @@ enum omap_vout_channels { |
@@ -38818,7 +38953,7 @@ index 96c4a17..1305a79 100644 | |||
38818 | /* Variables configurable through module params*/ | 38953 | /* Variables configurable through module params*/ |
38819 | static u32 video1_numbuffers = 3; | 38954 | static u32 video1_numbuffers = 3; |
38820 | static u32 video2_numbuffers = 3; | 38955 | static u32 video2_numbuffers = 3; |
38821 | @@ -1012,6 +1011,12 @@ static int omap_vout_open(struct file *file) | 38956 | @@ -1015,6 +1014,12 @@ static int omap_vout_open(struct file *file) |
38822 | { | 38957 | { |
38823 | struct videobuf_queue *q; | 38958 | struct videobuf_queue *q; |
38824 | struct omap_vout_device *vout = NULL; | 38959 | struct omap_vout_device *vout = NULL; |
@@ -38831,7 +38966,7 @@ index 96c4a17..1305a79 100644 | |||
38831 | 38966 | ||
38832 | vout = video_drvdata(file); | 38967 | vout = video_drvdata(file); |
38833 | v4l2_dbg(1, debug, &vout->vid_dev->v4l2_dev, "Entering %s\n", __func__); | 38968 | v4l2_dbg(1, debug, &vout->vid_dev->v4l2_dev, "Entering %s\n", __func__); |
38834 | @@ -1029,10 +1034,6 @@ static int omap_vout_open(struct file *file) | 38969 | @@ -1032,10 +1037,6 @@ static int omap_vout_open(struct file *file) |
38835 | vout->type = V4L2_BUF_TYPE_VIDEO_OUTPUT; | 38970 | vout->type = V4L2_BUF_TYPE_VIDEO_OUTPUT; |
38836 | 38971 | ||
38837 | q = &vout->vbq; | 38972 | q = &vout->vbq; |
@@ -38882,7 +39017,7 @@ index b713403..53cb5ad 100644 | |||
38882 | if (done && done != layer->shadow_buf) | 39017 | if (done && done != layer->shadow_buf) |
38883 | vb2_buffer_done(&done->vb, VB2_BUF_STATE_DONE); | 39018 | vb2_buffer_done(&done->vb, VB2_BUF_STATE_DONE); |
38884 | diff --git a/drivers/media/platform/s5p-tv/mixer_video.c b/drivers/media/platform/s5p-tv/mixer_video.c | 39019 | diff --git a/drivers/media/platform/s5p-tv/mixer_video.c b/drivers/media/platform/s5p-tv/mixer_video.c |
38885 | index 82142a2..6de47e8 100644 | 39020 | index ef0efdf..8c78eb6 100644 |
38886 | --- a/drivers/media/platform/s5p-tv/mixer_video.c | 39021 | --- a/drivers/media/platform/s5p-tv/mixer_video.c |
38887 | +++ b/drivers/media/platform/s5p-tv/mixer_video.c | 39022 | +++ b/drivers/media/platform/s5p-tv/mixer_video.c |
38888 | @@ -209,7 +209,7 @@ static void mxr_layer_default_geo(struct mxr_layer *layer) | 39023 | @@ -209,7 +209,7 @@ static void mxr_layer_default_geo(struct mxr_layer *layer) |
@@ -38936,7 +39071,7 @@ index 82142a2..6de47e8 100644 | |||
38936 | 39071 | ||
38937 | /* retrieve update selection rectangle */ | 39072 | /* retrieve update selection rectangle */ |
38938 | res.left = target->x_offset; | 39073 | res.left = target->x_offset; |
38939 | @@ -938,13 +938,13 @@ static int start_streaming(struct vb2_queue *vq, unsigned int count) | 39074 | @@ -954,13 +954,13 @@ static int start_streaming(struct vb2_queue *vq, unsigned int count) |
38940 | mxr_output_get(mdev); | 39075 | mxr_output_get(mdev); |
38941 | 39076 | ||
38942 | mxr_layer_update_output(layer); | 39077 | mxr_layer_update_output(layer); |
@@ -38952,7 +39087,7 @@ index 82142a2..6de47e8 100644 | |||
38952 | mxr_streamer_get(mdev); | 39087 | mxr_streamer_get(mdev); |
38953 | 39088 | ||
38954 | return 0; | 39089 | return 0; |
38955 | @@ -1014,7 +1014,7 @@ static int stop_streaming(struct vb2_queue *vq) | 39090 | @@ -1030,7 +1030,7 @@ static int stop_streaming(struct vb2_queue *vq) |
38956 | spin_unlock_irqrestore(&layer->enq_slock, flags); | 39091 | spin_unlock_irqrestore(&layer->enq_slock, flags); |
38957 | 39092 | ||
38958 | /* disabling layer in hardware */ | 39093 | /* disabling layer in hardware */ |
@@ -38961,7 +39096,7 @@ index 82142a2..6de47e8 100644 | |||
38961 | /* remove one streamer */ | 39096 | /* remove one streamer */ |
38962 | mxr_streamer_put(mdev); | 39097 | mxr_streamer_put(mdev); |
38963 | /* allow changes in output configuration */ | 39098 | /* allow changes in output configuration */ |
38964 | @@ -1053,8 +1053,8 @@ void mxr_base_layer_unregister(struct mxr_layer *layer) | 39099 | @@ -1069,8 +1069,8 @@ void mxr_base_layer_unregister(struct mxr_layer *layer) |
38965 | 39100 | ||
38966 | void mxr_layer_release(struct mxr_layer *layer) | 39101 | void mxr_layer_release(struct mxr_layer *layer) |
38967 | { | 39102 | { |
@@ -38972,7 +39107,7 @@ index 82142a2..6de47e8 100644 | |||
38972 | } | 39107 | } |
38973 | 39108 | ||
38974 | void mxr_base_layer_release(struct mxr_layer *layer) | 39109 | void mxr_base_layer_release(struct mxr_layer *layer) |
38975 | @@ -1080,7 +1080,7 @@ struct mxr_layer *mxr_base_layer_create(struct mxr_device *mdev, | 39110 | @@ -1096,7 +1096,7 @@ struct mxr_layer *mxr_base_layer_create(struct mxr_device *mdev, |
38976 | 39111 | ||
38977 | layer->mdev = mdev; | 39112 | layer->mdev = mdev; |
38978 | layer->idx = idx; | 39113 | layer->idx = idx; |
@@ -38995,10 +39130,10 @@ index 3d13a63..da31bf1 100644 | |||
38995 | .buffer_set = mxr_vp_buffer_set, | 39130 | .buffer_set = mxr_vp_buffer_set, |
38996 | .stream_set = mxr_vp_stream_set, | 39131 | .stream_set = mxr_vp_stream_set, |
38997 | diff --git a/drivers/media/radio/radio-cadet.c b/drivers/media/radio/radio-cadet.c | 39132 | diff --git a/drivers/media/radio/radio-cadet.c b/drivers/media/radio/radio-cadet.c |
38998 | index 643d80a..56bb96b 100644 | 39133 | index 545c04c..a14bded 100644 |
38999 | --- a/drivers/media/radio/radio-cadet.c | 39134 | --- a/drivers/media/radio/radio-cadet.c |
39000 | +++ b/drivers/media/radio/radio-cadet.c | 39135 | +++ b/drivers/media/radio/radio-cadet.c |
39001 | @@ -302,6 +302,8 @@ static ssize_t cadet_read(struct file *file, char __user *data, size_t count, lo | 39136 | @@ -324,6 +324,8 @@ static ssize_t cadet_read(struct file *file, char __user *data, size_t count, lo |
39002 | unsigned char readbuf[RDS_BUFFER]; | 39137 | unsigned char readbuf[RDS_BUFFER]; |
39003 | int i = 0; | 39138 | int i = 0; |
39004 | 39139 | ||
@@ -39007,7 +39142,7 @@ index 643d80a..56bb96b 100644 | |||
39007 | mutex_lock(&dev->lock); | 39142 | mutex_lock(&dev->lock); |
39008 | if (dev->rdsstat == 0) | 39143 | if (dev->rdsstat == 0) |
39009 | cadet_start_rds(dev); | 39144 | cadet_start_rds(dev); |
39010 | @@ -317,7 +319,7 @@ static ssize_t cadet_read(struct file *file, char __user *data, size_t count, lo | 39145 | @@ -339,7 +341,7 @@ static ssize_t cadet_read(struct file *file, char __user *data, size_t count, lo |
39011 | while (i < count && dev->rdsin != dev->rdsout) | 39146 | while (i < count && dev->rdsin != dev->rdsout) |
39012 | readbuf[i++] = dev->rdsbuf[dev->rdsout++]; | 39147 | readbuf[i++] = dev->rdsbuf[dev->rdsout++]; |
39013 | 39148 | ||
@@ -39030,10 +39165,10 @@ index 3940bb0..fb3952a 100644 | |||
39030 | static int dib7070_set_param_override(struct dvb_frontend *fe) | 39165 | static int dib7070_set_param_override(struct dvb_frontend *fe) |
39031 | { | 39166 | { |
39032 | diff --git a/drivers/media/usb/dvb-usb/dw2102.c b/drivers/media/usb/dvb-usb/dw2102.c | 39167 | diff --git a/drivers/media/usb/dvb-usb/dw2102.c b/drivers/media/usb/dvb-usb/dw2102.c |
39033 | index 9578a67..31aa652 100644 | 39168 | index 6e237b6..dc25556 100644 |
39034 | --- a/drivers/media/usb/dvb-usb/dw2102.c | 39169 | --- a/drivers/media/usb/dvb-usb/dw2102.c |
39035 | +++ b/drivers/media/usb/dvb-usb/dw2102.c | 39170 | +++ b/drivers/media/usb/dvb-usb/dw2102.c |
39036 | @@ -115,7 +115,7 @@ struct su3000_state { | 39171 | @@ -118,7 +118,7 @@ struct su3000_state { |
39037 | 39172 | ||
39038 | struct s6x0_state { | 39173 | struct s6x0_state { |
39039 | int (*old_set_voltage)(struct dvb_frontend *f, fe_sec_voltage_t v); | 39174 | int (*old_set_voltage)(struct dvb_frontend *f, fe_sec_voltage_t v); |
@@ -39043,7 +39178,7 @@ index 9578a67..31aa652 100644 | |||
39043 | /* debug */ | 39178 | /* debug */ |
39044 | static int dvb_usb_dw2102_debug; | 39179 | static int dvb_usb_dw2102_debug; |
39045 | diff --git a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c b/drivers/media/v4l2-core/v4l2-compat-ioctl32.c | 39180 | diff --git a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c b/drivers/media/v4l2-core/v4l2-compat-ioctl32.c |
39046 | index 7157af3..139e91a 100644 | 39181 | index f129551..ecf6514 100644 |
39047 | --- a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c | 39182 | --- a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c |
39048 | +++ b/drivers/media/v4l2-core/v4l2-compat-ioctl32.c | 39183 | +++ b/drivers/media/v4l2-core/v4l2-compat-ioctl32.c |
39049 | @@ -326,7 +326,7 @@ struct v4l2_buffer32 { | 39184 | @@ -326,7 +326,7 @@ struct v4l2_buffer32 { |
@@ -39074,40 +39209,10 @@ index 7157af3..139e91a 100644 | |||
39074 | return 0; | 39209 | return 0; |
39075 | } | 39210 | } |
39076 | diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c | 39211 | diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c |
39077 | index aa6e7c7..cb5de87 100644 | 39212 | index 7658586..1079260 100644 |
39078 | --- a/drivers/media/v4l2-core/v4l2-ioctl.c | 39213 | --- a/drivers/media/v4l2-core/v4l2-ioctl.c |
39079 | +++ b/drivers/media/v4l2-core/v4l2-ioctl.c | 39214 | +++ b/drivers/media/v4l2-core/v4l2-ioctl.c |
39080 | @@ -236,7 +236,7 @@ static void v4l_print_format(const void *arg, bool write_only) | 39215 | @@ -1995,7 +1995,8 @@ struct v4l2_ioctl_info { |
39081 | const struct v4l2_vbi_format *vbi; | ||
39082 | const struct v4l2_sliced_vbi_format *sliced; | ||
39083 | const struct v4l2_window *win; | ||
39084 | - const struct v4l2_clip *clip; | ||
39085 | + const struct v4l2_clip __user *pclip; | ||
39086 | unsigned i; | ||
39087 | |||
39088 | pr_cont("type=%s", prt_names(p->type, v4l2_type_names)); | ||
39089 | @@ -284,12 +284,16 @@ static void v4l_print_format(const void *arg, bool write_only) | ||
39090 | win->w.left, win->w.top, | ||
39091 | prt_names(win->field, v4l2_field_names), | ||
39092 | win->chromakey, win->bitmap, win->global_alpha); | ||
39093 | - clip = win->clips; | ||
39094 | + pclip = win->clips; | ||
39095 | for (i = 0; i < win->clipcount; i++) { | ||
39096 | + struct v4l2_clip clip; | ||
39097 | + | ||
39098 | + if (copy_from_user(&clip, pclip, sizeof clip)) | ||
39099 | + break; | ||
39100 | printk(KERN_DEBUG "clip %u: wxh=%dx%d, x,y=%d,%d\n", | ||
39101 | - i, clip->c.width, clip->c.height, | ||
39102 | - clip->c.left, clip->c.top); | ||
39103 | - clip = clip->next; | ||
39104 | + i, clip.c.width, clip.c.height, | ||
39105 | + clip.c.left, clip.c.top); | ||
39106 | + pclip = clip.next; | ||
39107 | } | ||
39108 | break; | ||
39109 | case V4L2_BUF_TYPE_VBI_CAPTURE: | ||
39110 | @@ -1923,7 +1927,8 @@ struct v4l2_ioctl_info { | ||
39111 | struct file *file, void *fh, void *p); | 39216 | struct file *file, void *fh, void *p); |
39112 | } u; | 39217 | } u; |
39113 | void (*debug)(const void *arg, bool write_only); | 39218 | void (*debug)(const void *arg, bool write_only); |
@@ -39117,7 +39222,7 @@ index aa6e7c7..cb5de87 100644 | |||
39117 | 39222 | ||
39118 | /* This control needs a priority check */ | 39223 | /* This control needs a priority check */ |
39119 | #define INFO_FL_PRIO (1 << 0) | 39224 | #define INFO_FL_PRIO (1 << 0) |
39120 | @@ -2108,7 +2113,7 @@ static long __video_do_ioctl(struct file *file, | 39225 | @@ -2177,7 +2178,7 @@ static long __video_do_ioctl(struct file *file, |
39121 | struct video_device *vfd = video_devdata(file); | 39226 | struct video_device *vfd = video_devdata(file); |
39122 | const struct v4l2_ioctl_ops *ops = vfd->ioctl_ops; | 39227 | const struct v4l2_ioctl_ops *ops = vfd->ioctl_ops; |
39123 | bool write_only = false; | 39228 | bool write_only = false; |
@@ -39126,7 +39231,7 @@ index aa6e7c7..cb5de87 100644 | |||
39126 | const struct v4l2_ioctl_info *info; | 39231 | const struct v4l2_ioctl_info *info; |
39127 | void *fh = file->private_data; | 39232 | void *fh = file->private_data; |
39128 | struct v4l2_fh *vfh = NULL; | 39233 | struct v4l2_fh *vfh = NULL; |
39129 | @@ -2193,7 +2198,7 @@ done: | 39234 | @@ -2251,7 +2252,7 @@ done: |
39130 | } | 39235 | } |
39131 | 39236 | ||
39132 | static int check_array_args(unsigned int cmd, void *parg, size_t *array_size, | 39237 | static int check_array_args(unsigned int cmd, void *parg, size_t *array_size, |
@@ -39135,7 +39240,7 @@ index aa6e7c7..cb5de87 100644 | |||
39135 | { | 39240 | { |
39136 | int ret = 0; | 39241 | int ret = 0; |
39137 | 39242 | ||
39138 | @@ -2209,7 +2214,7 @@ static int check_array_args(unsigned int cmd, void *parg, size_t *array_size, | 39243 | @@ -2267,7 +2268,7 @@ static int check_array_args(unsigned int cmd, void *parg, size_t *array_size, |
39139 | ret = -EINVAL; | 39244 | ret = -EINVAL; |
39140 | break; | 39245 | break; |
39141 | } | 39246 | } |
@@ -39144,7 +39249,7 @@ index aa6e7c7..cb5de87 100644 | |||
39144 | *kernel_ptr = (void *)&buf->m.planes; | 39249 | *kernel_ptr = (void *)&buf->m.planes; |
39145 | *array_size = sizeof(struct v4l2_plane) * buf->length; | 39250 | *array_size = sizeof(struct v4l2_plane) * buf->length; |
39146 | ret = 1; | 39251 | ret = 1; |
39147 | @@ -2244,7 +2249,7 @@ static int check_array_args(unsigned int cmd, void *parg, size_t *array_size, | 39252 | @@ -2302,7 +2303,7 @@ static int check_array_args(unsigned int cmd, void *parg, size_t *array_size, |
39148 | ret = -EINVAL; | 39253 | ret = -EINVAL; |
39149 | break; | 39254 | break; |
39150 | } | 39255 | } |
@@ -39154,7 +39259,7 @@ index aa6e7c7..cb5de87 100644 | |||
39154 | *array_size = sizeof(struct v4l2_ext_control) | 39259 | *array_size = sizeof(struct v4l2_ext_control) |
39155 | * ctrls->count; | 39260 | * ctrls->count; |
39156 | diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c | 39261 | diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c |
39157 | index fb69baa..3aeea2e 100644 | 39262 | index 767ff4d..c69d259 100644 |
39158 | --- a/drivers/message/fusion/mptbase.c | 39263 | --- a/drivers/message/fusion/mptbase.c |
39159 | +++ b/drivers/message/fusion/mptbase.c | 39264 | +++ b/drivers/message/fusion/mptbase.c |
39160 | @@ -6755,8 +6755,13 @@ static int mpt_iocinfo_proc_show(struct seq_file *m, void *v) | 39265 | @@ -6755,8 +6755,13 @@ static int mpt_iocinfo_proc_show(struct seq_file *m, void *v) |
@@ -39184,7 +39289,7 @@ index fb69baa..3aeea2e 100644 | |||
39184 | seq_printf(m, " {CurRepSz=%d} x {CurRepDepth=%d} = %d bytes ^= 0x%x\n", | 39289 | seq_printf(m, " {CurRepSz=%d} x {CurRepDepth=%d} = %d bytes ^= 0x%x\n", |
39185 | ioc->reply_sz, ioc->reply_depth, ioc->reply_sz*ioc->reply_depth, sz); | 39290 | ioc->reply_sz, ioc->reply_depth, ioc->reply_sz*ioc->reply_depth, sz); |
39186 | diff --git a/drivers/message/fusion/mptsas.c b/drivers/message/fusion/mptsas.c | 39291 | diff --git a/drivers/message/fusion/mptsas.c b/drivers/message/fusion/mptsas.c |
39187 | index fa43c39..daeb158 100644 | 39292 | index dd239bd..689c4f7 100644 |
39188 | --- a/drivers/message/fusion/mptsas.c | 39293 | --- a/drivers/message/fusion/mptsas.c |
39189 | +++ b/drivers/message/fusion/mptsas.c | 39294 | +++ b/drivers/message/fusion/mptsas.c |
39190 | @@ -446,6 +446,23 @@ mptsas_is_end_device(struct mptsas_devinfo * attached) | 39295 | @@ -446,6 +446,23 @@ mptsas_is_end_device(struct mptsas_devinfo * attached) |
@@ -39236,7 +39341,7 @@ index fa43c39..daeb158 100644 | |||
39236 | mptsas_get_port(struct mptsas_phyinfo *phy_info) | 39341 | mptsas_get_port(struct mptsas_phyinfo *phy_info) |
39237 | { | 39342 | { |
39238 | diff --git a/drivers/message/fusion/mptscsih.c b/drivers/message/fusion/mptscsih.c | 39343 | diff --git a/drivers/message/fusion/mptscsih.c b/drivers/message/fusion/mptscsih.c |
39239 | index 164afa7..b6b2e74 100644 | 39344 | index 727819c..ad74694 100644 |
39240 | --- a/drivers/message/fusion/mptscsih.c | 39345 | --- a/drivers/message/fusion/mptscsih.c |
39241 | +++ b/drivers/message/fusion/mptscsih.c | 39346 | +++ b/drivers/message/fusion/mptscsih.c |
39242 | @@ -1271,15 +1271,16 @@ mptscsih_info(struct Scsi_Host *SChost) | 39347 | @@ -1271,15 +1271,16 @@ mptscsih_info(struct Scsi_Host *SChost) |
@@ -39265,7 +39370,7 @@ index 164afa7..b6b2e74 100644 | |||
39265 | return h->info_kbuf; | 39370 | return h->info_kbuf; |
39266 | } | 39371 | } |
39267 | diff --git a/drivers/message/i2o/i2o_proc.c b/drivers/message/i2o/i2o_proc.c | 39372 | diff --git a/drivers/message/i2o/i2o_proc.c b/drivers/message/i2o/i2o_proc.c |
39268 | index 8001aa6..b137580 100644 | 39373 | index b7d87cd..9890039 100644 |
39269 | --- a/drivers/message/i2o/i2o_proc.c | 39374 | --- a/drivers/message/i2o/i2o_proc.c |
39270 | +++ b/drivers/message/i2o/i2o_proc.c | 39375 | +++ b/drivers/message/i2o/i2o_proc.c |
39271 | @@ -255,12 +255,6 @@ static char *scsi_devices[] = { | 39376 | @@ -255,12 +255,6 @@ static char *scsi_devices[] = { |
@@ -39522,7 +39627,7 @@ index 36f5d52..32311c3 100644 | |||
39522 | if (memcmp(before, after, BREAK_INSTR_SIZE)) { | 39627 | if (memcmp(before, after, BREAK_INSTR_SIZE)) { |
39523 | printk(KERN_CRIT "kgdbts: ERROR kgdb corrupted memory\n"); | 39628 | printk(KERN_CRIT "kgdbts: ERROR kgdb corrupted memory\n"); |
39524 | diff --git a/drivers/misc/lis3lv02d/lis3lv02d.c b/drivers/misc/lis3lv02d/lis3lv02d.c | 39629 | diff --git a/drivers/misc/lis3lv02d/lis3lv02d.c b/drivers/misc/lis3lv02d/lis3lv02d.c |
39525 | index 4a87e5c..76bdf5c 100644 | 39630 | index 4cd4a3d..b48cbc7 100644 |
39526 | --- a/drivers/misc/lis3lv02d/lis3lv02d.c | 39631 | --- a/drivers/misc/lis3lv02d/lis3lv02d.c |
39527 | +++ b/drivers/misc/lis3lv02d/lis3lv02d.c | 39632 | +++ b/drivers/misc/lis3lv02d/lis3lv02d.c |
39528 | @@ -498,7 +498,7 @@ static irqreturn_t lis302dl_interrupt(int irq, void *data) | 39633 | @@ -498,7 +498,7 @@ static irqreturn_t lis302dl_interrupt(int irq, void *data) |
@@ -39543,7 +39648,7 @@ index 4a87e5c..76bdf5c 100644 | |||
39543 | return 0; | 39648 | return 0; |
39544 | } | 39649 | } |
39545 | 39650 | ||
39546 | @@ -617,7 +617,7 @@ static ssize_t lis3lv02d_misc_read(struct file *file, char __user *buf, | 39651 | @@ -616,7 +616,7 @@ static ssize_t lis3lv02d_misc_read(struct file *file, char __user *buf, |
39547 | add_wait_queue(&lis3->misc_wait, &wait); | 39652 | add_wait_queue(&lis3->misc_wait, &wait); |
39548 | while (true) { | 39653 | while (true) { |
39549 | set_current_state(TASK_INTERRUPTIBLE); | 39654 | set_current_state(TASK_INTERRUPTIBLE); |
@@ -39552,7 +39657,7 @@ index 4a87e5c..76bdf5c 100644 | |||
39552 | if (data) | 39657 | if (data) |
39553 | break; | 39658 | break; |
39554 | 39659 | ||
39555 | @@ -658,7 +658,7 @@ static unsigned int lis3lv02d_misc_poll(struct file *file, poll_table *wait) | 39660 | @@ -657,7 +657,7 @@ static unsigned int lis3lv02d_misc_poll(struct file *file, poll_table *wait) |
39556 | struct lis3lv02d, miscdev); | 39661 | struct lis3lv02d, miscdev); |
39557 | 39662 | ||
39558 | poll_wait(file, &lis3->misc_wait, wait); | 39663 | poll_wait(file, &lis3->misc_wait, wait); |
@@ -39590,7 +39695,7 @@ index 2f30bad..c4c13d0 100644 | |||
39590 | mcs_op_statistics[op].max = nsec; | 39695 | mcs_op_statistics[op].max = nsec; |
39591 | } | 39696 | } |
39592 | diff --git a/drivers/misc/sgi-gru/gruprocfs.c b/drivers/misc/sgi-gru/gruprocfs.c | 39697 | diff --git a/drivers/misc/sgi-gru/gruprocfs.c b/drivers/misc/sgi-gru/gruprocfs.c |
39593 | index 950dbe9..eeef0f8 100644 | 39698 | index 797d796..ae8f01e 100644 |
39594 | --- a/drivers/misc/sgi-gru/gruprocfs.c | 39699 | --- a/drivers/misc/sgi-gru/gruprocfs.c |
39595 | +++ b/drivers/misc/sgi-gru/gruprocfs.c | 39700 | +++ b/drivers/misc/sgi-gru/gruprocfs.c |
39596 | @@ -32,9 +32,9 @@ | 39701 | @@ -32,9 +32,9 @@ |
@@ -39675,31 +39780,6 @@ index 5c3ce24..4915ccb 100644 | |||
39675 | - atomic_long_t flush_tlb_gru; | 39780 | - atomic_long_t flush_tlb_gru; |
39676 | - atomic_long_t flush_tlb_gru_tgh; | 39781 | - atomic_long_t flush_tlb_gru_tgh; |
39677 | - atomic_long_t flush_tlb_gru_zero_asid; | 39782 | - atomic_long_t flush_tlb_gru_zero_asid; |
39678 | - | ||
39679 | - atomic_long_t copy_gpa; | ||
39680 | - atomic_long_t read_gpa; | ||
39681 | - | ||
39682 | - atomic_long_t mesq_receive; | ||
39683 | - atomic_long_t mesq_receive_none; | ||
39684 | - atomic_long_t mesq_send; | ||
39685 | - atomic_long_t mesq_send_failed; | ||
39686 | - atomic_long_t mesq_noop; | ||
39687 | - atomic_long_t mesq_send_unexpected_error; | ||
39688 | - atomic_long_t mesq_send_lb_overflow; | ||
39689 | - atomic_long_t mesq_send_qlimit_reached; | ||
39690 | - atomic_long_t mesq_send_amo_nacked; | ||
39691 | - atomic_long_t mesq_send_put_nacked; | ||
39692 | - atomic_long_t mesq_page_overflow; | ||
39693 | - atomic_long_t mesq_qf_locked; | ||
39694 | - atomic_long_t mesq_qf_noop_not_full; | ||
39695 | - atomic_long_t mesq_qf_switch_head_failed; | ||
39696 | - atomic_long_t mesq_qf_unexpected_error; | ||
39697 | - atomic_long_t mesq_noop_unexpected_error; | ||
39698 | - atomic_long_t mesq_noop_lb_overflow; | ||
39699 | - atomic_long_t mesq_noop_qlimit_reached; | ||
39700 | - atomic_long_t mesq_noop_amo_nacked; | ||
39701 | - atomic_long_t mesq_noop_put_nacked; | ||
39702 | - atomic_long_t mesq_noop_page_overflow; | ||
39703 | + atomic_long_unchecked_t vdata_alloc; | 39783 | + atomic_long_unchecked_t vdata_alloc; |
39704 | + atomic_long_unchecked_t vdata_free; | 39784 | + atomic_long_unchecked_t vdata_free; |
39705 | + atomic_long_unchecked_t gts_alloc; | 39785 | + atomic_long_unchecked_t gts_alloc; |
@@ -39751,10 +39831,33 @@ index 5c3ce24..4915ccb 100644 | |||
39751 | + atomic_long_unchecked_t flush_tlb_gru; | 39831 | + atomic_long_unchecked_t flush_tlb_gru; |
39752 | + atomic_long_unchecked_t flush_tlb_gru_tgh; | 39832 | + atomic_long_unchecked_t flush_tlb_gru_tgh; |
39753 | + atomic_long_unchecked_t flush_tlb_gru_zero_asid; | 39833 | + atomic_long_unchecked_t flush_tlb_gru_zero_asid; |
39754 | + | 39834 | |
39835 | - atomic_long_t copy_gpa; | ||
39836 | - atomic_long_t read_gpa; | ||
39755 | + atomic_long_unchecked_t copy_gpa; | 39837 | + atomic_long_unchecked_t copy_gpa; |
39756 | + atomic_long_unchecked_t read_gpa; | 39838 | + atomic_long_unchecked_t read_gpa; |
39757 | + | 39839 | |
39840 | - atomic_long_t mesq_receive; | ||
39841 | - atomic_long_t mesq_receive_none; | ||
39842 | - atomic_long_t mesq_send; | ||
39843 | - atomic_long_t mesq_send_failed; | ||
39844 | - atomic_long_t mesq_noop; | ||
39845 | - atomic_long_t mesq_send_unexpected_error; | ||
39846 | - atomic_long_t mesq_send_lb_overflow; | ||
39847 | - atomic_long_t mesq_send_qlimit_reached; | ||
39848 | - atomic_long_t mesq_send_amo_nacked; | ||
39849 | - atomic_long_t mesq_send_put_nacked; | ||
39850 | - atomic_long_t mesq_page_overflow; | ||
39851 | - atomic_long_t mesq_qf_locked; | ||
39852 | - atomic_long_t mesq_qf_noop_not_full; | ||
39853 | - atomic_long_t mesq_qf_switch_head_failed; | ||
39854 | - atomic_long_t mesq_qf_unexpected_error; | ||
39855 | - atomic_long_t mesq_noop_unexpected_error; | ||
39856 | - atomic_long_t mesq_noop_lb_overflow; | ||
39857 | - atomic_long_t mesq_noop_qlimit_reached; | ||
39858 | - atomic_long_t mesq_noop_amo_nacked; | ||
39859 | - atomic_long_t mesq_noop_put_nacked; | ||
39860 | - atomic_long_t mesq_noop_page_overflow; | ||
39758 | + atomic_long_unchecked_t mesq_receive; | 39861 | + atomic_long_unchecked_t mesq_receive; |
39759 | + atomic_long_unchecked_t mesq_receive_none; | 39862 | + atomic_long_unchecked_t mesq_receive_none; |
39760 | + atomic_long_unchecked_t mesq_send; | 39863 | + atomic_long_unchecked_t mesq_send; |
@@ -39869,21 +39972,21 @@ index 49f04bc..65660c2 100644 | |||
39869 | /* | 39972 | /* |
39870 | * dma onto stack is unsafe/nonportable, but callers to this | 39973 | * dma onto stack is unsafe/nonportable, but callers to this |
39871 | diff --git a/drivers/mmc/host/dw_mmc.h b/drivers/mmc/host/dw_mmc.h | 39974 | diff --git a/drivers/mmc/host/dw_mmc.h b/drivers/mmc/host/dw_mmc.h |
39872 | index 53b8fd9..615b462 100644 | 39975 | index 0b74189..818358f 100644 |
39873 | --- a/drivers/mmc/host/dw_mmc.h | 39976 | --- a/drivers/mmc/host/dw_mmc.h |
39874 | +++ b/drivers/mmc/host/dw_mmc.h | 39977 | +++ b/drivers/mmc/host/dw_mmc.h |
39875 | @@ -205,5 +205,5 @@ struct dw_mci_drv_data { | 39978 | @@ -202,5 +202,5 @@ struct dw_mci_drv_data { |
39979 | void (*prepare_command)(struct dw_mci *host, u32 *cmdr); | ||
39980 | void (*set_ios)(struct dw_mci *host, struct mmc_ios *ios); | ||
39876 | int (*parse_dt)(struct dw_mci *host); | 39981 | int (*parse_dt)(struct dw_mci *host); |
39877 | int (*setup_bus)(struct dw_mci *host, | ||
39878 | struct device_node *slot_np, u8 bus_width); | ||
39879 | -}; | 39982 | -}; |
39880 | +} __do_const; | 39983 | +} __do_const; |
39881 | #endif /* _DW_MMC_H_ */ | 39984 | #endif /* _DW_MMC_H_ */ |
39882 | diff --git a/drivers/mmc/host/sdhci-s3c.c b/drivers/mmc/host/sdhci-s3c.c | 39985 | diff --git a/drivers/mmc/host/sdhci-s3c.c b/drivers/mmc/host/sdhci-s3c.c |
39883 | index 7363efe..681558e 100644 | 39986 | index c6f6246..60760a8 100644 |
39884 | --- a/drivers/mmc/host/sdhci-s3c.c | 39987 | --- a/drivers/mmc/host/sdhci-s3c.c |
39885 | +++ b/drivers/mmc/host/sdhci-s3c.c | 39988 | +++ b/drivers/mmc/host/sdhci-s3c.c |
39886 | @@ -720,9 +720,11 @@ static int sdhci_s3c_probe(struct platform_device *pdev) | 39989 | @@ -664,9 +664,11 @@ static int sdhci_s3c_probe(struct platform_device *pdev) |
39887 | * we can use overriding functions instead of default. | 39990 | * we can use overriding functions instead of default. |
39888 | */ | 39991 | */ |
39889 | if (host->quirks & SDHCI_QUIRK_NONSTANDARD_CLOCK) { | 39992 | if (host->quirks & SDHCI_QUIRK_NONSTANDARD_CLOCK) { |
@@ -39898,19 +40001,6 @@ index 7363efe..681558e 100644 | |||
39898 | } | 40001 | } |
39899 | 40002 | ||
39900 | /* It supports additional host capabilities if needed */ | 40003 | /* It supports additional host capabilities if needed */ |
39901 | diff --git a/drivers/mtd/devices/doc2000.c b/drivers/mtd/devices/doc2000.c | ||
39902 | index a4eb8b5..8c0628f 100644 | ||
39903 | --- a/drivers/mtd/devices/doc2000.c | ||
39904 | +++ b/drivers/mtd/devices/doc2000.c | ||
39905 | @@ -753,7 +753,7 @@ static int doc_write(struct mtd_info *mtd, loff_t to, size_t len, | ||
39906 | |||
39907 | /* The ECC will not be calculated correctly if less than 512 is written */ | ||
39908 | /* DBB- | ||
39909 | - if (len != 0x200 && eccbuf) | ||
39910 | + if (len != 0x200) | ||
39911 | printk(KERN_WARNING | ||
39912 | "ECC needs a full sector write (adr: %lx size %lx)\n", | ||
39913 | (long) to, (long) len); | ||
39914 | diff --git a/drivers/mtd/nand/denali.c b/drivers/mtd/nand/denali.c | 40004 | diff --git a/drivers/mtd/nand/denali.c b/drivers/mtd/nand/denali.c |
39915 | index 0c8bb6b..6f35deb 100644 | 40005 | index 0c8bb6b..6f35deb 100644 |
39916 | --- a/drivers/mtd/nand/denali.c | 40006 | --- a/drivers/mtd/nand/denali.c |
@@ -39936,7 +40026,7 @@ index 51b9d6a..52af9a7 100644 | |||
39936 | #include <linux/mtd/nand.h> | 40026 | #include <linux/mtd/nand.h> |
39937 | #include <linux/mtd/nftl.h> | 40027 | #include <linux/mtd/nftl.h> |
39938 | diff --git a/drivers/mtd/sm_ftl.c b/drivers/mtd/sm_ftl.c | 40028 | diff --git a/drivers/mtd/sm_ftl.c b/drivers/mtd/sm_ftl.c |
39939 | index 8dd6ba5..419cc1d 100644 | 40029 | index f9d5615..99dd95f 100644 |
39940 | --- a/drivers/mtd/sm_ftl.c | 40030 | --- a/drivers/mtd/sm_ftl.c |
39941 | +++ b/drivers/mtd/sm_ftl.c | 40031 | +++ b/drivers/mtd/sm_ftl.c |
39942 | @@ -56,7 +56,7 @@ ssize_t sm_attr_show(struct device *dev, struct device_attribute *attr, | 40032 | @@ -56,7 +56,7 @@ ssize_t sm_attr_show(struct device *dev, struct device_attribute *attr, |
@@ -39949,10 +40039,10 @@ index 8dd6ba5..419cc1d 100644 | |||
39949 | struct sm_sysfs_attribute *vendor_attribute; | 40039 | struct sm_sysfs_attribute *vendor_attribute; |
39950 | 40040 | ||
39951 | diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c | 40041 | diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c |
39952 | index dbbea0e..3f4a0b1 100644 | 40042 | index f975696..4597e21 100644 |
39953 | --- a/drivers/net/bonding/bond_main.c | 40043 | --- a/drivers/net/bonding/bond_main.c |
39954 | +++ b/drivers/net/bonding/bond_main.c | 40044 | +++ b/drivers/net/bonding/bond_main.c |
39955 | @@ -4822,7 +4822,7 @@ static unsigned int bond_get_num_tx_queues(void) | 40045 | @@ -4870,7 +4870,7 @@ static unsigned int bond_get_num_tx_queues(void) |
39956 | return tx_queues; | 40046 | return tx_queues; |
39957 | } | 40047 | } |
39958 | 40048 | ||
@@ -39961,7 +40051,7 @@ index dbbea0e..3f4a0b1 100644 | |||
39961 | .kind = "bond", | 40051 | .kind = "bond", |
39962 | .priv_size = sizeof(struct bonding), | 40052 | .priv_size = sizeof(struct bonding), |
39963 | .setup = bond_setup, | 40053 | .setup = bond_setup, |
39964 | @@ -4947,8 +4947,8 @@ static void __exit bonding_exit(void) | 40054 | @@ -4995,8 +4995,8 @@ static void __exit bonding_exit(void) |
39965 | 40055 | ||
39966 | bond_destroy_debugfs(); | 40056 | bond_destroy_debugfs(); |
39967 | 40057 | ||
@@ -39971,28 +40061,6 @@ index dbbea0e..3f4a0b1 100644 | |||
39971 | 40061 | ||
39972 | #ifdef CONFIG_NET_POLL_CONTROLLER | 40062 | #ifdef CONFIG_NET_POLL_CONTROLLER |
39973 | /* | 40063 | /* |
39974 | diff --git a/drivers/net/dummy.c b/drivers/net/dummy.c | ||
39975 | index 42aa54a..b710c6b 100644 | ||
39976 | --- a/drivers/net/dummy.c | ||
39977 | +++ b/drivers/net/dummy.c | ||
39978 | @@ -185,6 +185,8 @@ static int __init dummy_init_module(void) | ||
39979 | |||
39980 | rtnl_lock(); | ||
39981 | err = __rtnl_link_register(&dummy_link_ops); | ||
39982 | + if (err < 0) | ||
39983 | + goto out; | ||
39984 | |||
39985 | for (i = 0; i < numdummies && !err; i++) { | ||
39986 | err = dummy_init_one(); | ||
39987 | @@ -192,6 +194,8 @@ static int __init dummy_init_module(void) | ||
39988 | } | ||
39989 | if (err < 0) | ||
39990 | __rtnl_link_unregister(&dummy_link_ops); | ||
39991 | + | ||
39992 | +out: | ||
39993 | rtnl_unlock(); | ||
39994 | |||
39995 | return err; | ||
39996 | diff --git a/drivers/net/ethernet/8390/ax88796.c b/drivers/net/ethernet/8390/ax88796.c | 40064 | diff --git a/drivers/net/ethernet/8390/ax88796.c b/drivers/net/ethernet/8390/ax88796.c |
39997 | index e1d2643..7f4133b 100644 | 40065 | index e1d2643..7f4133b 100644 |
39998 | --- a/drivers/net/ethernet/8390/ax88796.c | 40066 | --- a/drivers/net/ethernet/8390/ax88796.c |
@@ -40010,117 +40078,11 @@ index e1d2643..7f4133b 100644 | |||
40010 | } | 40078 | } |
40011 | 40079 | ||
40012 | if (!request_mem_region(mem->start, mem_size, pdev->name)) { | 40080 | if (!request_mem_region(mem->start, mem_size, pdev->name)) { |
40013 | diff --git a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c | ||
40014 | index ac25f05..35c9d1a 100644 | ||
40015 | --- a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c | ||
40016 | +++ b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c | ||
40017 | @@ -1667,8 +1667,8 @@ check_sum: | ||
40018 | return 0; | ||
40019 | } | ||
40020 | |||
40021 | -static void atl1e_tx_map(struct atl1e_adapter *adapter, | ||
40022 | - struct sk_buff *skb, struct atl1e_tpd_desc *tpd) | ||
40023 | +static int atl1e_tx_map(struct atl1e_adapter *adapter, | ||
40024 | + struct sk_buff *skb, struct atl1e_tpd_desc *tpd) | ||
40025 | { | ||
40026 | struct atl1e_tpd_desc *use_tpd = NULL; | ||
40027 | struct atl1e_tx_buffer *tx_buffer = NULL; | ||
40028 | @@ -1679,6 +1679,8 @@ static void atl1e_tx_map(struct atl1e_adapter *adapter, | ||
40029 | u16 nr_frags; | ||
40030 | u16 f; | ||
40031 | int segment; | ||
40032 | + int ring_start = adapter->tx_ring.next_to_use; | ||
40033 | + int ring_end; | ||
40034 | |||
40035 | nr_frags = skb_shinfo(skb)->nr_frags; | ||
40036 | segment = (tpd->word3 >> TPD_SEGMENT_EN_SHIFT) & TPD_SEGMENT_EN_MASK; | ||
40037 | @@ -1691,6 +1693,9 @@ static void atl1e_tx_map(struct atl1e_adapter *adapter, | ||
40038 | tx_buffer->length = map_len; | ||
40039 | tx_buffer->dma = pci_map_single(adapter->pdev, | ||
40040 | skb->data, hdr_len, PCI_DMA_TODEVICE); | ||
40041 | + if (dma_mapping_error(&adapter->pdev->dev, tx_buffer->dma)) | ||
40042 | + return -ENOSPC; | ||
40043 | + | ||
40044 | ATL1E_SET_PCIMAP_TYPE(tx_buffer, ATL1E_TX_PCIMAP_SINGLE); | ||
40045 | mapped_len += map_len; | ||
40046 | use_tpd->buffer_addr = cpu_to_le64(tx_buffer->dma); | ||
40047 | @@ -1717,6 +1722,22 @@ static void atl1e_tx_map(struct atl1e_adapter *adapter, | ||
40048 | tx_buffer->dma = | ||
40049 | pci_map_single(adapter->pdev, skb->data + mapped_len, | ||
40050 | map_len, PCI_DMA_TODEVICE); | ||
40051 | + | ||
40052 | + if (dma_mapping_error(&adapter->pdev->dev, tx_buffer->dma)) { | ||
40053 | + /* We need to unwind the mappings we've done */ | ||
40054 | + ring_end = adapter->tx_ring.next_to_use; | ||
40055 | + adapter->tx_ring.next_to_use = ring_start; | ||
40056 | + while (adapter->tx_ring.next_to_use != ring_end) { | ||
40057 | + tpd = atl1e_get_tpd(adapter); | ||
40058 | + tx_buffer = atl1e_get_tx_buffer(adapter, tpd); | ||
40059 | + pci_unmap_single(adapter->pdev, tx_buffer->dma, | ||
40060 | + tx_buffer->length, PCI_DMA_TODEVICE); | ||
40061 | + } | ||
40062 | + /* Reset the tx rings next pointer */ | ||
40063 | + adapter->tx_ring.next_to_use = ring_start; | ||
40064 | + return -ENOSPC; | ||
40065 | + } | ||
40066 | + | ||
40067 | ATL1E_SET_PCIMAP_TYPE(tx_buffer, ATL1E_TX_PCIMAP_SINGLE); | ||
40068 | mapped_len += map_len; | ||
40069 | use_tpd->buffer_addr = cpu_to_le64(tx_buffer->dma); | ||
40070 | @@ -1752,6 +1773,23 @@ static void atl1e_tx_map(struct atl1e_adapter *adapter, | ||
40071 | (i * MAX_TX_BUF_LEN), | ||
40072 | tx_buffer->length, | ||
40073 | DMA_TO_DEVICE); | ||
40074 | + | ||
40075 | + if (dma_mapping_error(&adapter->pdev->dev, tx_buffer->dma)) { | ||
40076 | + /* We need to unwind the mappings we've done */ | ||
40077 | + ring_end = adapter->tx_ring.next_to_use; | ||
40078 | + adapter->tx_ring.next_to_use = ring_start; | ||
40079 | + while (adapter->tx_ring.next_to_use != ring_end) { | ||
40080 | + tpd = atl1e_get_tpd(adapter); | ||
40081 | + tx_buffer = atl1e_get_tx_buffer(adapter, tpd); | ||
40082 | + dma_unmap_page(&adapter->pdev->dev, tx_buffer->dma, | ||
40083 | + tx_buffer->length, DMA_TO_DEVICE); | ||
40084 | + } | ||
40085 | + | ||
40086 | + /* Reset the ring next to use pointer */ | ||
40087 | + adapter->tx_ring.next_to_use = ring_start; | ||
40088 | + return -ENOSPC; | ||
40089 | + } | ||
40090 | + | ||
40091 | ATL1E_SET_PCIMAP_TYPE(tx_buffer, ATL1E_TX_PCIMAP_PAGE); | ||
40092 | use_tpd->buffer_addr = cpu_to_le64(tx_buffer->dma); | ||
40093 | use_tpd->word2 = (use_tpd->word2 & (~TPD_BUFLEN_MASK)) | | ||
40094 | @@ -1769,6 +1807,7 @@ static void atl1e_tx_map(struct atl1e_adapter *adapter, | ||
40095 | /* The last buffer info contain the skb address, | ||
40096 | so it will be free after unmap */ | ||
40097 | tx_buffer->skb = skb; | ||
40098 | + return 0; | ||
40099 | } | ||
40100 | |||
40101 | static void atl1e_tx_queue(struct atl1e_adapter *adapter, u16 count, | ||
40102 | @@ -1836,10 +1875,15 @@ static netdev_tx_t atl1e_xmit_frame(struct sk_buff *skb, | ||
40103 | return NETDEV_TX_OK; | ||
40104 | } | ||
40105 | |||
40106 | - atl1e_tx_map(adapter, skb, tpd); | ||
40107 | + if (atl1e_tx_map(adapter, skb, tpd)) { | ||
40108 | + dev_kfree_skb_any(skb); | ||
40109 | + goto out; | ||
40110 | + } | ||
40111 | + | ||
40112 | atl1e_tx_queue(adapter, tpd_req, tpd); | ||
40113 | |||
40114 | netdev->trans_start = jiffies; /* NETIF_F_LLTX driver :( */ | ||
40115 | +out: | ||
40116 | spin_unlock_irqrestore(&adapter->tx_lock, flags); | ||
40117 | return NETDEV_TX_OK; | ||
40118 | } | ||
40119 | diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h | 40081 | diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h |
40120 | index aee7671..3ca2651 100644 | 40082 | index 151675d..0139a9d 100644 |
40121 | --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h | 40083 | --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h |
40122 | +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h | 40084 | +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h |
40123 | @@ -1093,7 +1093,7 @@ static inline u8 bnx2x_get_path_func_num(struct bnx2x *bp) | 40085 | @@ -1112,7 +1112,7 @@ static inline u8 bnx2x_get_path_func_num(struct bnx2x *bp) |
40124 | static inline void bnx2x_init_bp_objs(struct bnx2x *bp) | 40086 | static inline void bnx2x_init_bp_objs(struct bnx2x *bp) |
40125 | { | 40087 | { |
40126 | /* RX_MODE controlling object */ | 40088 | /* RX_MODE controlling object */ |
@@ -40130,7 +40092,7 @@ index aee7671..3ca2651 100644 | |||
40130 | /* multicast configuration controlling object */ | 40092 | /* multicast configuration controlling object */ |
40131 | bnx2x_init_mcast_obj(bp, &bp->mcast_obj, bp->fp->cl_id, bp->fp->cid, | 40093 | bnx2x_init_mcast_obj(bp, &bp->mcast_obj, bp->fp->cl_id, bp->fp->cid, |
40132 | diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c | 40094 | diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c |
40133 | index edfa67a..d6c52ae 100644 | 40095 | index ce1a916..10b52b0 100644 |
40134 | --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c | 40096 | --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c |
40135 | +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c | 40097 | +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c |
40136 | @@ -960,6 +960,9 @@ static int bnx2x_set_dump(struct net_device *dev, struct ethtool_dump *val) | 40098 | @@ -960,6 +960,9 @@ static int bnx2x_set_dump(struct net_device *dev, struct ethtool_dump *val) |
@@ -40153,10 +40115,10 @@ index edfa67a..d6c52ae 100644 | |||
40153 | * cause false alarms by reading never written registers. We | 40115 | * cause false alarms by reading never written registers. We |
40154 | * will re-enable parity attentions right after the dump. | 40116 | * will re-enable parity attentions right after the dump. |
40155 | diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 40117 | diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c |
40156 | index c50696b..cf96f52 100644 | 40118 | index b4c9dea..2a9927f 100644 |
40157 | --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 40119 | --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c |
40158 | +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 40120 | +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c |
40159 | @@ -11394,6 +11394,8 @@ static int bnx2x_init_bp(struct bnx2x *bp) | 40121 | @@ -11497,6 +11497,8 @@ static int bnx2x_init_bp(struct bnx2x *bp) |
40160 | bp->min_msix_vec_cnt = 2; | 40122 | bp->min_msix_vec_cnt = 2; |
40161 | BNX2X_DEV_INFO("bp->min_msix_vec_cnt %d", bp->min_msix_vec_cnt); | 40123 | BNX2X_DEV_INFO("bp->min_msix_vec_cnt %d", bp->min_msix_vec_cnt); |
40162 | 40124 | ||
@@ -40166,10 +40128,10 @@ index c50696b..cf96f52 100644 | |||
40166 | } | 40128 | } |
40167 | 40129 | ||
40168 | diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c | 40130 | diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c |
40169 | index 7306416..5fb7fb5 100644 | 40131 | index 32a9609..0b1c53a 100644 |
40170 | --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c | 40132 | --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c |
40171 | +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c | 40133 | +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c |
40172 | @@ -2381,15 +2381,14 @@ int bnx2x_config_rx_mode(struct bnx2x *bp, | 40134 | @@ -2387,15 +2387,14 @@ int bnx2x_config_rx_mode(struct bnx2x *bp, |
40173 | return rc; | 40135 | return rc; |
40174 | } | 40136 | } |
40175 | 40137 | ||
@@ -40191,10 +40153,10 @@ index 7306416..5fb7fb5 100644 | |||
40191 | } | 40153 | } |
40192 | 40154 | ||
40193 | diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h | 40155 | diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h |
40194 | index ff90760..08d8aed 100644 | 40156 | index 43c00bc..dd1d03d 100644 |
40195 | --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h | 40157 | --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h |
40196 | +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h | 40158 | +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h |
40197 | @@ -1306,8 +1306,7 @@ int bnx2x_vlan_mac_move(struct bnx2x *bp, | 40159 | @@ -1321,8 +1321,7 @@ int bnx2x_vlan_mac_move(struct bnx2x *bp, |
40198 | 40160 | ||
40199 | /********************* RX MODE ****************/ | 40161 | /********************* RX MODE ****************/ |
40200 | 40162 | ||
@@ -40205,7 +40167,7 @@ index ff90760..08d8aed 100644 | |||
40205 | /** | 40167 | /** |
40206 | * bnx2x_config_rx_mode - Send and RX_MODE ramrod according to the provided parameters. | 40168 | * bnx2x_config_rx_mode - Send and RX_MODE ramrod according to the provided parameters. |
40207 | diff --git a/drivers/net/ethernet/broadcom/tg3.h b/drivers/net/ethernet/broadcom/tg3.h | 40169 | diff --git a/drivers/net/ethernet/broadcom/tg3.h b/drivers/net/ethernet/broadcom/tg3.h |
40208 | index 25309bf..fcfd54c 100644 | 40170 | index ff6e30e..87e8452 100644 |
40209 | --- a/drivers/net/ethernet/broadcom/tg3.h | 40171 | --- a/drivers/net/ethernet/broadcom/tg3.h |
40210 | +++ b/drivers/net/ethernet/broadcom/tg3.h | 40172 | +++ b/drivers/net/ethernet/broadcom/tg3.h |
40211 | @@ -147,6 +147,7 @@ | 40173 | @@ -147,6 +147,7 @@ |
@@ -40216,24 +40178,11 @@ index 25309bf..fcfd54c 100644 | |||
40216 | #define CHIPREV_ID_5750_C2 0x4202 | 40178 | #define CHIPREV_ID_5750_C2 0x4202 |
40217 | #define CHIPREV_ID_5752_A0_HW 0x5000 | 40179 | #define CHIPREV_ID_5752_A0_HW 0x5000 |
40218 | #define CHIPREV_ID_5752_A0 0x6000 | 40180 | #define CHIPREV_ID_5752_A0 0x6000 |
40219 | diff --git a/drivers/net/ethernet/brocade/bna/bnad_debugfs.c b/drivers/net/ethernet/brocade/bna/bnad_debugfs.c | ||
40220 | index 6e8bc9d..94d957d 100644 | ||
40221 | --- a/drivers/net/ethernet/brocade/bna/bnad_debugfs.c | ||
40222 | +++ b/drivers/net/ethernet/brocade/bna/bnad_debugfs.c | ||
40223 | @@ -244,7 +244,7 @@ bnad_debugfs_lseek(struct file *file, loff_t offset, int orig) | ||
40224 | file->f_pos += offset; | ||
40225 | break; | ||
40226 | case 2: | ||
40227 | - file->f_pos = debug->buffer_len - offset; | ||
40228 | + file->f_pos = debug->buffer_len + offset; | ||
40229 | break; | ||
40230 | default: | ||
40231 | return -EINVAL; | ||
40232 | diff --git a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c | 40181 | diff --git a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c |
40233 | index 2b5e621..32187b8 100644 | 40182 | index 71497e8..b650951 100644 |
40234 | --- a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c | 40183 | --- a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c |
40235 | +++ b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c | 40184 | +++ b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c |
40236 | @@ -3036,7 +3036,9 @@ static void t3_io_resume(struct pci_dev *pdev) | 40185 | @@ -3037,7 +3037,9 @@ static void t3_io_resume(struct pci_dev *pdev) |
40237 | CH_ALERT(adapter, "adapter recovering, PEX ERR 0x%x\n", | 40186 | CH_ALERT(adapter, "adapter recovering, PEX ERR 0x%x\n", |
40238 | t3_read_reg(adapter, A_PCIE_PEX_ERR)); | 40187 | t3_read_reg(adapter, A_PCIE_PEX_ERR)); |
40239 | 40188 | ||
@@ -40279,10 +40228,10 @@ index 4c83003..2a2a5b9 100644 | |||
40279 | break; | 40228 | break; |
40280 | } | 40229 | } |
40281 | diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c | 40230 | diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c |
40282 | index 2886c9b..db71673 100644 | 40231 | index 6e43426..1bd8365 100644 |
40283 | --- a/drivers/net/ethernet/emulex/benet/be_main.c | 40232 | --- a/drivers/net/ethernet/emulex/benet/be_main.c |
40284 | +++ b/drivers/net/ethernet/emulex/benet/be_main.c | 40233 | +++ b/drivers/net/ethernet/emulex/benet/be_main.c |
40285 | @@ -455,7 +455,7 @@ static void accumulate_16bit_val(u32 *acc, u16 val) | 40234 | @@ -469,7 +469,7 @@ static void accumulate_16bit_val(u32 *acc, u16 val) |
40286 | 40235 | ||
40287 | if (wrapped) | 40236 | if (wrapped) |
40288 | newacc += 65536; | 40237 | newacc += 65536; |
@@ -40290,9 +40239,9 @@ index 2886c9b..db71673 100644 | |||
40290 | + ACCESS_ONCE_RW(*acc) = newacc; | 40239 | + ACCESS_ONCE_RW(*acc) = newacc; |
40291 | } | 40240 | } |
40292 | 40241 | ||
40293 | void be_parse_stats(struct be_adapter *adapter) | 40242 | void populate_erx_stats(struct be_adapter *adapter, |
40294 | diff --git a/drivers/net/ethernet/faraday/ftgmac100.c b/drivers/net/ethernet/faraday/ftgmac100.c | 40243 | diff --git a/drivers/net/ethernet/faraday/ftgmac100.c b/drivers/net/ethernet/faraday/ftgmac100.c |
40295 | index 7c361d1..57e3ff1 100644 | 40244 | index 21b85fb..b49e5fc 100644 |
40296 | --- a/drivers/net/ethernet/faraday/ftgmac100.c | 40245 | --- a/drivers/net/ethernet/faraday/ftgmac100.c |
40297 | +++ b/drivers/net/ethernet/faraday/ftgmac100.c | 40246 | +++ b/drivers/net/ethernet/faraday/ftgmac100.c |
40298 | @@ -31,6 +31,8 @@ | 40247 | @@ -31,6 +31,8 @@ |
@@ -40305,7 +40254,7 @@ index 7c361d1..57e3ff1 100644 | |||
40305 | 40254 | ||
40306 | #include "ftgmac100.h" | 40255 | #include "ftgmac100.h" |
40307 | diff --git a/drivers/net/ethernet/faraday/ftmac100.c b/drivers/net/ethernet/faraday/ftmac100.c | 40256 | diff --git a/drivers/net/ethernet/faraday/ftmac100.c b/drivers/net/ethernet/faraday/ftmac100.c |
40308 | index b5ea8fb..bd25e9a 100644 | 40257 | index a6eda8d..935d273 100644 |
40309 | --- a/drivers/net/ethernet/faraday/ftmac100.c | 40258 | --- a/drivers/net/ethernet/faraday/ftmac100.c |
40310 | +++ b/drivers/net/ethernet/faraday/ftmac100.c | 40259 | +++ b/drivers/net/ethernet/faraday/ftmac100.c |
40311 | @@ -31,6 +31,8 @@ | 40260 | @@ -31,6 +31,8 @@ |
@@ -40356,11 +40305,11 @@ index fbe5363..266b4e3 100644 | |||
40356 | __vxge_hw_mempool_create(vpath->hldev, | 40305 | __vxge_hw_mempool_create(vpath->hldev, |
40357 | fifo->config->memblock_size, | 40306 | fifo->config->memblock_size, |
40358 | diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c | 40307 | diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c |
40359 | index 5c033f2..7bbb0d8 100644 | 40308 | index 5e7fb1d..f8d1810 100644 |
40360 | --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c | 40309 | --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c |
40361 | +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c | 40310 | +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c |
40362 | @@ -1894,7 +1894,9 @@ int qlcnic_83xx_config_default_opmode(struct qlcnic_adapter *adapter) | 40311 | @@ -1948,7 +1948,9 @@ int qlcnic_83xx_config_default_opmode(struct qlcnic_adapter *adapter) |
40363 | op_mode = QLCRDX(ahw, QLC_83XX_DRV_OP_MODE); | 40312 | op_mode = QLC_83XX_DEFAULT_OPMODE; |
40364 | 40313 | ||
40365 | if (op_mode == QLC_83XX_DEFAULT_OPMODE) { | 40314 | if (op_mode == QLC_83XX_DEFAULT_OPMODE) { |
40366 | - adapter->nic_ops->init_driver = qlcnic_83xx_init_default_driver; | 40315 | - adapter->nic_ops->init_driver = qlcnic_83xx_init_default_driver; |
@@ -40400,10 +40349,10 @@ index b0c3de9..fc5857e 100644 | |||
40400 | return -EIO; | 40349 | return -EIO; |
40401 | } | 40350 | } |
40402 | diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c | 40351 | diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c |
40403 | index 54fd2ef..33c8a4f 100644 | 40352 | index 393f961..d343034 100644 |
40404 | --- a/drivers/net/ethernet/realtek/r8169.c | 40353 | --- a/drivers/net/ethernet/realtek/r8169.c |
40405 | +++ b/drivers/net/ethernet/realtek/r8169.c | 40354 | +++ b/drivers/net/ethernet/realtek/r8169.c |
40406 | @@ -740,22 +740,22 @@ struct rtl8169_private { | 40355 | @@ -753,22 +753,22 @@ struct rtl8169_private { |
40407 | struct mdio_ops { | 40356 | struct mdio_ops { |
40408 | void (*write)(struct rtl8169_private *, int, int); | 40357 | void (*write)(struct rtl8169_private *, int, int); |
40409 | int (*read)(struct rtl8169_private *, int); | 40358 | int (*read)(struct rtl8169_private *, int); |
@@ -40430,66 +40379,11 @@ index 54fd2ef..33c8a4f 100644 | |||
40430 | 40379 | ||
40431 | int (*set_speed)(struct net_device *, u8 aneg, u16 sp, u8 dpx, u32 adv); | 40380 | int (*set_speed)(struct net_device *, u8 aneg, u16 sp, u8 dpx, u32 adv); |
40432 | int (*get_settings)(struct net_device *, struct ethtool_cmd *); | 40381 | int (*get_settings)(struct net_device *, struct ethtool_cmd *); |
40433 | diff --git a/drivers/net/ethernet/renesas/sh_eth.c b/drivers/net/ethernet/renesas/sh_eth.c | ||
40434 | index 8791999..68caa85 100644 | ||
40435 | --- a/drivers/net/ethernet/renesas/sh_eth.c | ||
40436 | +++ b/drivers/net/ethernet/renesas/sh_eth.c | ||
40437 | @@ -172,8 +172,9 @@ static struct sh_eth_cpu_data sh_eth_my_cpu_data = { | ||
40438 | .rmcr_value = 0x00000001, | ||
40439 | |||
40440 | .tx_check = EESR_FTC | EESR_CND | EESR_DLC | EESR_CD | EESR_RTO, | ||
40441 | - .eesr_err_check = EESR_TWB | EESR_TABT | EESR_RABT | EESR_RDE | | ||
40442 | - EESR_RFRMER | EESR_TFE | EESR_TDE | EESR_ECI, | ||
40443 | + .eesr_err_check = EESR_TWB | EESR_TABT | EESR_RABT | EESR_RFE | | ||
40444 | + EESR_RDE | EESR_RFRMER | EESR_TFE | EESR_TDE | | ||
40445 | + EESR_ECI, | ||
40446 | .tx_error_check = EESR_TWB | EESR_TABT | EESR_TDE | EESR_TFE, | ||
40447 | |||
40448 | .apr = 1, | ||
40449 | @@ -286,9 +287,9 @@ static struct sh_eth_cpu_data sh_eth_my_cpu_data_giga = { | ||
40450 | .eesipr_value = DMAC_M_RFRMER | DMAC_M_ECI | 0x003fffff, | ||
40451 | |||
40452 | .tx_check = EESR_TC1 | EESR_FTC, | ||
40453 | - .eesr_err_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_RABT | \ | ||
40454 | - EESR_RDE | EESR_RFRMER | EESR_TFE | EESR_TDE | \ | ||
40455 | - EESR_ECI, | ||
40456 | + .eesr_err_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_RABT | | ||
40457 | + EESR_RFE | EESR_RDE | EESR_RFRMER | EESR_TFE | | ||
40458 | + EESR_TDE | EESR_ECI, | ||
40459 | .tx_error_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_TDE | \ | ||
40460 | EESR_TFE, | ||
40461 | .fdr_value = 0x0000072f, | ||
40462 | @@ -505,9 +506,9 @@ static struct sh_eth_cpu_data sh_eth_my_cpu_data = { | ||
40463 | .eesipr_value = DMAC_M_RFRMER | DMAC_M_ECI | 0x003fffff, | ||
40464 | |||
40465 | .tx_check = EESR_TC1 | EESR_FTC, | ||
40466 | - .eesr_err_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_RABT | \ | ||
40467 | - EESR_RDE | EESR_RFRMER | EESR_TFE | EESR_TDE | \ | ||
40468 | - EESR_ECI, | ||
40469 | + .eesr_err_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_RABT | | ||
40470 | + EESR_RFE | EESR_RDE | EESR_RFRMER | EESR_TFE | | ||
40471 | + EESR_TDE | EESR_ECI, | ||
40472 | .tx_error_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_TDE | \ | ||
40473 | EESR_TFE, | ||
40474 | |||
40475 | diff --git a/drivers/net/ethernet/renesas/sh_eth.h b/drivers/net/ethernet/renesas/sh_eth.h | ||
40476 | index 828be45..832be11 100644 | ||
40477 | --- a/drivers/net/ethernet/renesas/sh_eth.h | ||
40478 | +++ b/drivers/net/ethernet/renesas/sh_eth.h | ||
40479 | @@ -472,7 +472,7 @@ enum EESR_BIT { | ||
40480 | |||
40481 | #define DEFAULT_TX_CHECK (EESR_FTC | EESR_CND | EESR_DLC | EESR_CD | \ | ||
40482 | EESR_RTO) | ||
40483 | -#define DEFAULT_EESR_ERR_CHECK (EESR_TWB | EESR_TABT | EESR_RABT | \ | ||
40484 | +#define DEFAULT_EESR_ERR_CHECK (EESR_TWB | EESR_TABT | EESR_RABT | EESR_RFE | \ | ||
40485 | EESR_RDE | EESR_RFRMER | EESR_ADE | \ | ||
40486 | EESR_TFE | EESR_TDE | EESR_ECI) | ||
40487 | #define DEFAULT_TX_ERROR_CHECK (EESR_TWB | EESR_TABT | EESR_ADE | EESR_TDE | \ | ||
40488 | diff --git a/drivers/net/ethernet/sfc/ptp.c b/drivers/net/ethernet/sfc/ptp.c | 40382 | diff --git a/drivers/net/ethernet/sfc/ptp.c b/drivers/net/ethernet/sfc/ptp.c |
40489 | index 3f93624..cf01144 100644 | 40383 | index 9a95abf..36df7f9 100644 |
40490 | --- a/drivers/net/ethernet/sfc/ptp.c | 40384 | --- a/drivers/net/ethernet/sfc/ptp.c |
40491 | +++ b/drivers/net/ethernet/sfc/ptp.c | 40385 | +++ b/drivers/net/ethernet/sfc/ptp.c |
40492 | @@ -553,7 +553,7 @@ static int efx_ptp_synchronize(struct efx_nic *efx, unsigned int num_readings) | 40386 | @@ -535,7 +535,7 @@ static int efx_ptp_synchronize(struct efx_nic *efx, unsigned int num_readings) |
40493 | (u32)((u64)ptp->start.dma_addr >> 32)); | 40387 | (u32)((u64)ptp->start.dma_addr >> 32)); |
40494 | 40388 | ||
40495 | /* Clear flag that signals MC ready */ | 40389 | /* Clear flag that signals MC ready */ |
@@ -40513,19 +40407,6 @@ index 50617c5..b13724c 100644 | |||
40513 | } | 40407 | } |
40514 | 40408 | ||
40515 | /* To mask all all interrupts.*/ | 40409 | /* To mask all all interrupts.*/ |
40516 | diff --git a/drivers/net/ethernet/sun/sunvnet.c b/drivers/net/ethernet/sun/sunvnet.c | ||
40517 | index 1df0ff3..3df5684 100644 | ||
40518 | --- a/drivers/net/ethernet/sun/sunvnet.c | ||
40519 | +++ b/drivers/net/ethernet/sun/sunvnet.c | ||
40520 | @@ -1239,6 +1239,8 @@ static int vnet_port_remove(struct vio_dev *vdev) | ||
40521 | dev_set_drvdata(&vdev->dev, NULL); | ||
40522 | |||
40523 | kfree(port); | ||
40524 | + | ||
40525 | + unregister_netdev(vp->dev); | ||
40526 | } | ||
40527 | return 0; | ||
40528 | } | ||
40529 | diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h | 40410 | diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h |
40530 | index e6fe0d8..2b7d752 100644 | 40411 | index e6fe0d8..2b7d752 100644 |
40531 | --- a/drivers/net/hyperv/hyperv_net.h | 40412 | --- a/drivers/net/hyperv/hyperv_net.h |
@@ -40562,10 +40443,10 @@ index 0775f0a..d4fb316 100644 | |||
40562 | /* Ignore return since this msg is optional. */ | 40443 | /* Ignore return since this msg is optional. */ |
40563 | rndis_filter_send_request(dev, request); | 40444 | rndis_filter_send_request(dev, request); |
40564 | diff --git a/drivers/net/ieee802154/fakehard.c b/drivers/net/ieee802154/fakehard.c | 40445 | diff --git a/drivers/net/ieee802154/fakehard.c b/drivers/net/ieee802154/fakehard.c |
40565 | index 8f1c256..a2991d1 100644 | 40446 | index bf0d55e..82bcfbd1 100644 |
40566 | --- a/drivers/net/ieee802154/fakehard.c | 40447 | --- a/drivers/net/ieee802154/fakehard.c |
40567 | +++ b/drivers/net/ieee802154/fakehard.c | 40448 | +++ b/drivers/net/ieee802154/fakehard.c |
40568 | @@ -385,7 +385,7 @@ static int ieee802154fake_probe(struct platform_device *pdev) | 40449 | @@ -364,7 +364,7 @@ static int ieee802154fake_probe(struct platform_device *pdev) |
40569 | phy->transmit_power = 0xbf; | 40450 | phy->transmit_power = 0xbf; |
40570 | 40451 | ||
40571 | dev->netdev_ops = &fake_ops; | 40452 | dev->netdev_ops = &fake_ops; |
@@ -40574,34 +40455,11 @@ index 8f1c256..a2991d1 100644 | |||
40574 | 40455 | ||
40575 | priv = netdev_priv(dev); | 40456 | priv = netdev_priv(dev); |
40576 | priv->phy = phy; | 40457 | priv->phy = phy; |
40577 | diff --git a/drivers/net/ifb.c b/drivers/net/ifb.c | ||
40578 | index 8216438..c51944d 100644 | ||
40579 | --- a/drivers/net/ifb.c | ||
40580 | +++ b/drivers/net/ifb.c | ||
40581 | @@ -290,11 +290,17 @@ static int __init ifb_init_module(void) | ||
40582 | |||
40583 | rtnl_lock(); | ||
40584 | err = __rtnl_link_register(&ifb_link_ops); | ||
40585 | + if (err < 0) | ||
40586 | + goto out; | ||
40587 | |||
40588 | - for (i = 0; i < numifbs && !err; i++) | ||
40589 | + for (i = 0; i < numifbs && !err; i++) { | ||
40590 | err = ifb_init_one(i); | ||
40591 | + cond_resched(); | ||
40592 | + } | ||
40593 | if (err) | ||
40594 | __rtnl_link_unregister(&ifb_link_ops); | ||
40595 | + | ||
40596 | +out: | ||
40597 | rtnl_unlock(); | ||
40598 | |||
40599 | return err; | ||
40600 | diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c | 40458 | diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c |
40601 | index 011062e..ada88e9 100644 | 40459 | index 6e91931..2b0ebe7 100644 |
40602 | --- a/drivers/net/macvlan.c | 40460 | --- a/drivers/net/macvlan.c |
40603 | +++ b/drivers/net/macvlan.c | 40461 | +++ b/drivers/net/macvlan.c |
40604 | @@ -892,13 +892,15 @@ static const struct nla_policy macvlan_policy[IFLA_MACVLAN_MAX + 1] = { | 40462 | @@ -905,13 +905,15 @@ static const struct nla_policy macvlan_policy[IFLA_MACVLAN_MAX + 1] = { |
40605 | int macvlan_link_register(struct rtnl_link_ops *ops) | 40463 | int macvlan_link_register(struct rtnl_link_ops *ops) |
40606 | { | 40464 | { |
40607 | /* common fields */ | 40465 | /* common fields */ |
@@ -40624,7 +40482,7 @@ index 011062e..ada88e9 100644 | |||
40624 | 40482 | ||
40625 | return rtnl_link_register(ops); | 40483 | return rtnl_link_register(ops); |
40626 | }; | 40484 | }; |
40627 | @@ -954,7 +956,7 @@ static int macvlan_device_event(struct notifier_block *unused, | 40485 | @@ -967,7 +969,7 @@ static int macvlan_device_event(struct notifier_block *unused, |
40628 | return NOTIFY_DONE; | 40486 | return NOTIFY_DONE; |
40629 | } | 40487 | } |
40630 | 40488 | ||
@@ -40634,121 +40492,10 @@ index 011062e..ada88e9 100644 | |||
40634 | }; | 40492 | }; |
40635 | 40493 | ||
40636 | diff --git a/drivers/net/macvtap.c b/drivers/net/macvtap.c | 40494 | diff --git a/drivers/net/macvtap.c b/drivers/net/macvtap.c |
40637 | index acf6450..d880503 100644 | 40495 | index 523d6b2..5e16aa1 100644 |
40638 | --- a/drivers/net/macvtap.c | 40496 | --- a/drivers/net/macvtap.c |
40639 | +++ b/drivers/net/macvtap.c | 40497 | +++ b/drivers/net/macvtap.c |
40640 | @@ -525,8 +525,10 @@ static int zerocopy_sg_from_iovec(struct sk_buff *skb, const struct iovec *from, | 40498 | @@ -1110,7 +1110,7 @@ static int macvtap_device_event(struct notifier_block *unused, |
40641 | return -EMSGSIZE; | ||
40642 | num_pages = get_user_pages_fast(base, size, 0, &page[i]); | ||
40643 | if (num_pages != size) { | ||
40644 | - for (i = 0; i < num_pages; i++) | ||
40645 | - put_page(page[i]); | ||
40646 | + int j; | ||
40647 | + | ||
40648 | + for (j = 0; j < num_pages; j++) | ||
40649 | + put_page(page[i + j]); | ||
40650 | return -EFAULT; | ||
40651 | } | ||
40652 | truesize = size * PAGE_SIZE; | ||
40653 | @@ -632,6 +634,28 @@ static int macvtap_skb_to_vnet_hdr(const struct sk_buff *skb, | ||
40654 | return 0; | ||
40655 | } | ||
40656 | |||
40657 | +static unsigned long iov_pages(const struct iovec *iv, int offset, | ||
40658 | + unsigned long nr_segs) | ||
40659 | +{ | ||
40660 | + unsigned long seg, base; | ||
40661 | + int pages = 0, len, size; | ||
40662 | + | ||
40663 | + while (nr_segs && (offset >= iv->iov_len)) { | ||
40664 | + offset -= iv->iov_len; | ||
40665 | + ++iv; | ||
40666 | + --nr_segs; | ||
40667 | + } | ||
40668 | + | ||
40669 | + for (seg = 0; seg < nr_segs; seg++) { | ||
40670 | + base = (unsigned long)iv[seg].iov_base + offset; | ||
40671 | + len = iv[seg].iov_len - offset; | ||
40672 | + size = ((base & ~PAGE_MASK) + len + ~PAGE_MASK) >> PAGE_SHIFT; | ||
40673 | + pages += size; | ||
40674 | + offset = 0; | ||
40675 | + } | ||
40676 | + | ||
40677 | + return pages; | ||
40678 | +} | ||
40679 | |||
40680 | /* Get packet from user space buffer */ | ||
40681 | static ssize_t macvtap_get_user(struct macvtap_queue *q, struct msghdr *m, | ||
40682 | @@ -647,6 +671,7 @@ static ssize_t macvtap_get_user(struct macvtap_queue *q, struct msghdr *m, | ||
40683 | int copylen = 0; | ||
40684 | bool zerocopy = false; | ||
40685 | struct flow_keys keys; | ||
40686 | + size_t linear; | ||
40687 | |||
40688 | if (q->flags & IFF_VNET_HDR) { | ||
40689 | vnet_hdr_len = q->vnet_hdr_sz; | ||
40690 | @@ -678,42 +703,35 @@ static ssize_t macvtap_get_user(struct macvtap_queue *q, struct msghdr *m, | ||
40691 | if (unlikely(count > UIO_MAXIOV)) | ||
40692 | goto err; | ||
40693 | |||
40694 | - if (m && m->msg_control && sock_flag(&q->sk, SOCK_ZEROCOPY)) | ||
40695 | - zerocopy = true; | ||
40696 | + if (m && m->msg_control && sock_flag(&q->sk, SOCK_ZEROCOPY)) { | ||
40697 | + copylen = vnet_hdr.hdr_len ? vnet_hdr.hdr_len : GOODCOPY_LEN; | ||
40698 | + linear = copylen; | ||
40699 | + if (iov_pages(iv, vnet_hdr_len + copylen, count) | ||
40700 | + <= MAX_SKB_FRAGS) | ||
40701 | + zerocopy = true; | ||
40702 | + } | ||
40703 | |||
40704 | - if (zerocopy) { | ||
40705 | - /* Userspace may produce vectors with count greater than | ||
40706 | - * MAX_SKB_FRAGS, so we need to linearize parts of the skb | ||
40707 | - * to let the rest of data to be fit in the frags. | ||
40708 | - */ | ||
40709 | - if (count > MAX_SKB_FRAGS) { | ||
40710 | - copylen = iov_length(iv, count - MAX_SKB_FRAGS); | ||
40711 | - if (copylen < vnet_hdr_len) | ||
40712 | - copylen = 0; | ||
40713 | - else | ||
40714 | - copylen -= vnet_hdr_len; | ||
40715 | - } | ||
40716 | - /* There are 256 bytes to be copied in skb, so there is enough | ||
40717 | - * room for skb expand head in case it is used. | ||
40718 | - * The rest buffer is mapped from userspace. | ||
40719 | - */ | ||
40720 | - if (copylen < vnet_hdr.hdr_len) | ||
40721 | - copylen = vnet_hdr.hdr_len; | ||
40722 | - if (!copylen) | ||
40723 | - copylen = GOODCOPY_LEN; | ||
40724 | - } else | ||
40725 | + if (!zerocopy) { | ||
40726 | copylen = len; | ||
40727 | + linear = vnet_hdr.hdr_len; | ||
40728 | + } | ||
40729 | |||
40730 | skb = macvtap_alloc_skb(&q->sk, NET_IP_ALIGN, copylen, | ||
40731 | - vnet_hdr.hdr_len, noblock, &err); | ||
40732 | + linear, noblock, &err); | ||
40733 | if (!skb) | ||
40734 | goto err; | ||
40735 | |||
40736 | if (zerocopy) | ||
40737 | err = zerocopy_sg_from_iovec(skb, iv, vnet_hdr_len, count); | ||
40738 | - else | ||
40739 | + else { | ||
40740 | err = skb_copy_datagram_from_iovec(skb, 0, iv, vnet_hdr_len, | ||
40741 | len); | ||
40742 | + if (!err && m && m->msg_control) { | ||
40743 | + struct ubuf_info *uarg = m->msg_control; | ||
40744 | + uarg->callback(uarg, false); | ||
40745 | + } | ||
40746 | + } | ||
40747 | + | ||
40748 | if (err) | ||
40749 | goto err_kfree; | ||
40750 | |||
40751 | @@ -1099,7 +1117,7 @@ static int macvtap_device_event(struct notifier_block *unused, | ||
40752 | return NOTIFY_DONE; | 40499 | return NOTIFY_DONE; |
40753 | } | 40500 | } |
40754 | 40501 | ||
@@ -40805,10 +40552,10 @@ index 1252d9c..80e660b 100644 | |||
40805 | 40552 | ||
40806 | /* We've got a compressed packet; read the change byte */ | 40553 | /* We've got a compressed packet; read the change byte */ |
40807 | diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c | 40554 | diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c |
40808 | index 0017b67..ab8f595 100644 | 40555 | index b305105..8ead6df 100644 |
40809 | --- a/drivers/net/team/team.c | 40556 | --- a/drivers/net/team/team.c |
40810 | +++ b/drivers/net/team/team.c | 40557 | +++ b/drivers/net/team/team.c |
40811 | @@ -2668,7 +2668,7 @@ static int team_device_event(struct notifier_block *unused, | 40558 | @@ -2682,7 +2682,7 @@ static int team_device_event(struct notifier_block *unused, |
40812 | return NOTIFY_DONE; | 40559 | return NOTIFY_DONE; |
40813 | } | 40560 | } |
40814 | 40561 | ||
@@ -40818,125 +40565,10 @@ index 0017b67..ab8f595 100644 | |||
40818 | }; | 40565 | }; |
40819 | 40566 | ||
40820 | diff --git a/drivers/net/tun.c b/drivers/net/tun.c | 40567 | diff --git a/drivers/net/tun.c b/drivers/net/tun.c |
40821 | index 8ad822e..9bf0655 100644 | 40568 | index 2491eb2..694b2ec 100644 |
40822 | --- a/drivers/net/tun.c | 40569 | --- a/drivers/net/tun.c |
40823 | +++ b/drivers/net/tun.c | 40570 | +++ b/drivers/net/tun.c |
40824 | @@ -1013,8 +1013,10 @@ static int zerocopy_sg_from_iovec(struct sk_buff *skb, const struct iovec *from, | 40571 | @@ -1869,7 +1869,7 @@ unlock: |
40825 | return -EMSGSIZE; | ||
40826 | num_pages = get_user_pages_fast(base, size, 0, &page[i]); | ||
40827 | if (num_pages != size) { | ||
40828 | - for (i = 0; i < num_pages; i++) | ||
40829 | - put_page(page[i]); | ||
40830 | + int j; | ||
40831 | + | ||
40832 | + for (j = 0; j < num_pages; j++) | ||
40833 | + put_page(page[i + j]); | ||
40834 | return -EFAULT; | ||
40835 | } | ||
40836 | truesize = size * PAGE_SIZE; | ||
40837 | @@ -1038,6 +1040,29 @@ static int zerocopy_sg_from_iovec(struct sk_buff *skb, const struct iovec *from, | ||
40838 | return 0; | ||
40839 | } | ||
40840 | |||
40841 | +static unsigned long iov_pages(const struct iovec *iv, int offset, | ||
40842 | + unsigned long nr_segs) | ||
40843 | +{ | ||
40844 | + unsigned long seg, base; | ||
40845 | + int pages = 0, len, size; | ||
40846 | + | ||
40847 | + while (nr_segs && (offset >= iv->iov_len)) { | ||
40848 | + offset -= iv->iov_len; | ||
40849 | + ++iv; | ||
40850 | + --nr_segs; | ||
40851 | + } | ||
40852 | + | ||
40853 | + for (seg = 0; seg < nr_segs; seg++) { | ||
40854 | + base = (unsigned long)iv[seg].iov_base + offset; | ||
40855 | + len = iv[seg].iov_len - offset; | ||
40856 | + size = ((base & ~PAGE_MASK) + len + ~PAGE_MASK) >> PAGE_SHIFT; | ||
40857 | + pages += size; | ||
40858 | + offset = 0; | ||
40859 | + } | ||
40860 | + | ||
40861 | + return pages; | ||
40862 | +} | ||
40863 | + | ||
40864 | /* Get packet from user space buffer */ | ||
40865 | static ssize_t tun_get_user(struct tun_struct *tun, struct tun_file *tfile, | ||
40866 | void *msg_control, const struct iovec *iv, | ||
40867 | @@ -1045,7 +1070,7 @@ static ssize_t tun_get_user(struct tun_struct *tun, struct tun_file *tfile, | ||
40868 | { | ||
40869 | struct tun_pi pi = { 0, cpu_to_be16(ETH_P_IP) }; | ||
40870 | struct sk_buff *skb; | ||
40871 | - size_t len = total_len, align = NET_SKB_PAD; | ||
40872 | + size_t len = total_len, align = NET_SKB_PAD, linear; | ||
40873 | struct virtio_net_hdr gso = { 0 }; | ||
40874 | int offset = 0; | ||
40875 | int copylen; | ||
40876 | @@ -1086,34 +1111,23 @@ static ssize_t tun_get_user(struct tun_struct *tun, struct tun_file *tfile, | ||
40877 | return -EINVAL; | ||
40878 | } | ||
40879 | |||
40880 | - if (msg_control) | ||
40881 | - zerocopy = true; | ||
40882 | - | ||
40883 | - if (zerocopy) { | ||
40884 | - /* Userspace may produce vectors with count greater than | ||
40885 | - * MAX_SKB_FRAGS, so we need to linearize parts of the skb | ||
40886 | - * to let the rest of data to be fit in the frags. | ||
40887 | - */ | ||
40888 | - if (count > MAX_SKB_FRAGS) { | ||
40889 | - copylen = iov_length(iv, count - MAX_SKB_FRAGS); | ||
40890 | - if (copylen < offset) | ||
40891 | - copylen = 0; | ||
40892 | - else | ||
40893 | - copylen -= offset; | ||
40894 | - } else | ||
40895 | - copylen = 0; | ||
40896 | - /* There are 256 bytes to be copied in skb, so there is enough | ||
40897 | - * room for skb expand head in case it is used. | ||
40898 | + if (msg_control) { | ||
40899 | + /* There are 256 bytes to be copied in skb, so there is | ||
40900 | + * enough room for skb expand head in case it is used. | ||
40901 | * The rest of the buffer is mapped from userspace. | ||
40902 | */ | ||
40903 | - if (copylen < gso.hdr_len) | ||
40904 | - copylen = gso.hdr_len; | ||
40905 | - if (!copylen) | ||
40906 | - copylen = GOODCOPY_LEN; | ||
40907 | - } else | ||
40908 | + copylen = gso.hdr_len ? gso.hdr_len : GOODCOPY_LEN; | ||
40909 | + linear = copylen; | ||
40910 | + if (iov_pages(iv, offset + copylen, count) <= MAX_SKB_FRAGS) | ||
40911 | + zerocopy = true; | ||
40912 | + } | ||
40913 | + | ||
40914 | + if (!zerocopy) { | ||
40915 | copylen = len; | ||
40916 | + linear = gso.hdr_len; | ||
40917 | + } | ||
40918 | |||
40919 | - skb = tun_alloc_skb(tfile, align, copylen, gso.hdr_len, noblock); | ||
40920 | + skb = tun_alloc_skb(tfile, align, copylen, linear, noblock); | ||
40921 | if (IS_ERR(skb)) { | ||
40922 | if (PTR_ERR(skb) != -EAGAIN) | ||
40923 | tun->dev->stats.rx_dropped++; | ||
40924 | @@ -1122,8 +1136,13 @@ static ssize_t tun_get_user(struct tun_struct *tun, struct tun_file *tfile, | ||
40925 | |||
40926 | if (zerocopy) | ||
40927 | err = zerocopy_sg_from_iovec(skb, iv, offset, count); | ||
40928 | - else | ||
40929 | + else { | ||
40930 | err = skb_copy_datagram_from_iovec(skb, 0, iv, offset, len); | ||
40931 | + if (!err && msg_control) { | ||
40932 | + struct ubuf_info *uarg = msg_control; | ||
40933 | + uarg->callback(uarg, false); | ||
40934 | + } | ||
40935 | + } | ||
40936 | |||
40937 | if (err) { | ||
40938 | tun->dev->stats.rx_dropped++; | ||
40939 | @@ -1859,7 +1878,7 @@ unlock: | ||
40940 | } | 40572 | } |
40941 | 40573 | ||
40942 | static long __tun_chr_ioctl(struct file *file, unsigned int cmd, | 40574 | static long __tun_chr_ioctl(struct file *file, unsigned int cmd, |
@@ -40945,7 +40577,7 @@ index 8ad822e..9bf0655 100644 | |||
40945 | { | 40577 | { |
40946 | struct tun_file *tfile = file->private_data; | 40578 | struct tun_file *tfile = file->private_data; |
40947 | struct tun_struct *tun; | 40579 | struct tun_struct *tun; |
40948 | @@ -1871,6 +1890,9 @@ static long __tun_chr_ioctl(struct file *file, unsigned int cmd, | 40580 | @@ -1881,6 +1881,9 @@ static long __tun_chr_ioctl(struct file *file, unsigned int cmd, |
40949 | int vnet_hdr_sz; | 40581 | int vnet_hdr_sz; |
40950 | int ret; | 40582 | int ret; |
40951 | 40583 | ||
@@ -40956,7 +40588,7 @@ index 8ad822e..9bf0655 100644 | |||
40956 | if (copy_from_user(&ifr, argp, ifreq_len)) | 40588 | if (copy_from_user(&ifr, argp, ifreq_len)) |
40957 | return -EFAULT; | 40589 | return -EFAULT; |
40958 | diff --git a/drivers/net/usb/hso.c b/drivers/net/usb/hso.c | 40590 | diff --git a/drivers/net/usb/hso.c b/drivers/net/usb/hso.c |
40959 | index e2dd324..be92fcf 100644 | 40591 | index cba1d46..f703766 100644 |
40960 | --- a/drivers/net/usb/hso.c | 40592 | --- a/drivers/net/usb/hso.c |
40961 | +++ b/drivers/net/usb/hso.c | 40593 | +++ b/drivers/net/usb/hso.c |
40962 | @@ -71,7 +71,7 @@ | 40594 | @@ -71,7 +71,7 @@ |
@@ -41037,7 +40669,7 @@ index e2dd324..be92fcf 100644 | |||
41037 | /* Setup and send a ctrl req read on | 40669 | /* Setup and send a ctrl req read on |
41038 | * port i */ | 40670 | * port i */ |
41039 | if (!serial->rx_urb_filled[0]) { | 40671 | if (!serial->rx_urb_filled[0]) { |
41040 | @@ -3066,7 +3065,7 @@ static int hso_resume(struct usb_interface *iface) | 40672 | @@ -3057,7 +3056,7 @@ static int hso_resume(struct usb_interface *iface) |
41041 | /* Start all serial ports */ | 40673 | /* Start all serial ports */ |
41042 | for (i = 0; i < HSO_SERIAL_TTY_MINORS; i++) { | 40674 | for (i = 0; i < HSO_SERIAL_TTY_MINORS; i++) { |
41043 | if (serial_table[i] && (serial_table[i]->interface == iface)) { | 40675 | if (serial_table[i] && (serial_table[i]->interface == iface)) { |
@@ -41047,10 +40679,10 @@ index e2dd324..be92fcf 100644 | |||
41047 | hso_start_serial_device(serial_table[i], GFP_NOIO); | 40679 | hso_start_serial_device(serial_table[i], GFP_NOIO); |
41048 | hso_kick_transmit(dev2ser(serial_table[i])); | 40680 | hso_kick_transmit(dev2ser(serial_table[i])); |
41049 | diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c | 40681 | diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c |
41050 | index a4fe5f1..6c9e77f 100644 | 40682 | index 57325f3..36b181f 100644 |
41051 | --- a/drivers/net/vxlan.c | 40683 | --- a/drivers/net/vxlan.c |
41052 | +++ b/drivers/net/vxlan.c | 40684 | +++ b/drivers/net/vxlan.c |
41053 | @@ -1454,7 +1454,7 @@ nla_put_failure: | 40685 | @@ -1579,7 +1579,7 @@ nla_put_failure: |
41054 | return -EMSGSIZE; | 40686 | return -EMSGSIZE; |
41055 | } | 40687 | } |
41056 | 40688 | ||
@@ -41060,7 +40692,7 @@ index a4fe5f1..6c9e77f 100644 | |||
41060 | .maxtype = IFLA_VXLAN_MAX, | 40692 | .maxtype = IFLA_VXLAN_MAX, |
41061 | .policy = vxlan_policy, | 40693 | .policy = vxlan_policy, |
41062 | diff --git a/drivers/net/wireless/at76c50x-usb.c b/drivers/net/wireless/at76c50x-usb.c | 40694 | diff --git a/drivers/net/wireless/at76c50x-usb.c b/drivers/net/wireless/at76c50x-usb.c |
41063 | index 5ac5f7a..5f82012 100644 | 40695 | index 34c8a33..3261fdc 100644 |
41064 | --- a/drivers/net/wireless/at76c50x-usb.c | 40696 | --- a/drivers/net/wireless/at76c50x-usb.c |
41065 | +++ b/drivers/net/wireless/at76c50x-usb.c | 40697 | +++ b/drivers/net/wireless/at76c50x-usb.c |
41066 | @@ -353,7 +353,7 @@ static int at76_dfu_get_state(struct usb_device *udev, u8 *state) | 40698 | @@ -353,7 +353,7 @@ static int at76_dfu_get_state(struct usb_device *udev, u8 *state) |
@@ -41278,10 +40910,10 @@ index 301bf72..3f5654f 100644 | |||
41278 | 40910 | ||
41279 | static u16 ar9003_calc_ptr_chksum(struct ar9003_txc *ads) | 40911 | static u16 ar9003_calc_ptr_chksum(struct ar9003_txc *ads) |
41280 | diff --git a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h | 40912 | diff --git a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h |
41281 | index 784e81c..349e01e 100644 | 40913 | index ae30343..a117806 100644 |
41282 | --- a/drivers/net/wireless/ath/ath9k/hw.h | 40914 | --- a/drivers/net/wireless/ath/ath9k/hw.h |
41283 | +++ b/drivers/net/wireless/ath/ath9k/hw.h | 40915 | +++ b/drivers/net/wireless/ath/ath9k/hw.h |
41284 | @@ -653,7 +653,7 @@ struct ath_hw_private_ops { | 40916 | @@ -652,7 +652,7 @@ struct ath_hw_private_ops { |
41285 | 40917 | ||
41286 | /* ANI */ | 40918 | /* ANI */ |
41287 | void (*ani_cache_ini_regs)(struct ath_hw *ah); | 40919 | void (*ani_cache_ini_regs)(struct ath_hw *ah); |
@@ -41290,7 +40922,7 @@ index 784e81c..349e01e 100644 | |||
41290 | 40922 | ||
41291 | /** | 40923 | /** |
41292 | * struct ath_spec_scan - parameters for Atheros spectral scan | 40924 | * struct ath_spec_scan - parameters for Atheros spectral scan |
41293 | @@ -722,7 +722,7 @@ struct ath_hw_ops { | 40925 | @@ -721,7 +721,7 @@ struct ath_hw_ops { |
41294 | struct ath_spec_scan *param); | 40926 | struct ath_spec_scan *param); |
41295 | void (*spectral_scan_trigger)(struct ath_hw *ah); | 40927 | void (*spectral_scan_trigger)(struct ath_hw *ah); |
41296 | void (*spectral_scan_wait)(struct ath_hw *ah); | 40928 | void (*spectral_scan_wait)(struct ath_hw *ah); |
@@ -41300,7 +40932,7 @@ index 784e81c..349e01e 100644 | |||
41300 | struct ath_nf_limits { | 40932 | struct ath_nf_limits { |
41301 | s16 max; | 40933 | s16 max; |
41302 | diff --git a/drivers/net/wireless/iwlegacy/3945-mac.c b/drivers/net/wireless/iwlegacy/3945-mac.c | 40934 | diff --git a/drivers/net/wireless/iwlegacy/3945-mac.c b/drivers/net/wireless/iwlegacy/3945-mac.c |
41303 | index c353b5f..62aaca2 100644 | 40935 | index b37a582..680835d 100644 |
41304 | --- a/drivers/net/wireless/iwlegacy/3945-mac.c | 40936 | --- a/drivers/net/wireless/iwlegacy/3945-mac.c |
41305 | +++ b/drivers/net/wireless/iwlegacy/3945-mac.c | 40937 | +++ b/drivers/net/wireless/iwlegacy/3945-mac.c |
41306 | @@ -3639,7 +3639,9 @@ il3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | 40938 | @@ -3639,7 +3639,9 @@ il3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) |
@@ -41315,7 +40947,7 @@ index c353b5f..62aaca2 100644 | |||
41315 | 40947 | ||
41316 | D_INFO("*** LOAD DRIVER ***\n"); | 40948 | D_INFO("*** LOAD DRIVER ***\n"); |
41317 | diff --git a/drivers/net/wireless/iwlwifi/dvm/debugfs.c b/drivers/net/wireless/iwlwifi/dvm/debugfs.c | 40949 | diff --git a/drivers/net/wireless/iwlwifi/dvm/debugfs.c b/drivers/net/wireless/iwlwifi/dvm/debugfs.c |
41318 | index 81d4071..f2071ea 100644 | 40950 | index d532948..e0d8bb1 100644 |
41319 | --- a/drivers/net/wireless/iwlwifi/dvm/debugfs.c | 40951 | --- a/drivers/net/wireless/iwlwifi/dvm/debugfs.c |
41320 | +++ b/drivers/net/wireless/iwlwifi/dvm/debugfs.c | 40952 | +++ b/drivers/net/wireless/iwlwifi/dvm/debugfs.c |
41321 | @@ -203,7 +203,7 @@ static ssize_t iwl_dbgfs_sram_write(struct file *file, | 40953 | @@ -203,7 +203,7 @@ static ssize_t iwl_dbgfs_sram_write(struct file *file, |
@@ -41354,6 +40986,21 @@ index 81d4071..f2071ea 100644 | |||
41354 | int value; | 40986 | int value; |
41355 | 40987 | ||
41356 | memset(buf, 0, sizeof(buf)); | 40988 | memset(buf, 0, sizeof(buf)); |
40989 | @@ -698,10 +698,10 @@ DEBUGFS_READ_FILE_OPS(temperature); | ||
40990 | DEBUGFS_READ_WRITE_FILE_OPS(sleep_level_override); | ||
40991 | DEBUGFS_READ_FILE_OPS(current_sleep_command); | ||
40992 | |||
40993 | -static const char *fmt_value = " %-30s %10u\n"; | ||
40994 | -static const char *fmt_hex = " %-30s 0x%02X\n"; | ||
40995 | -static const char *fmt_table = " %-30s %10u %10u %10u %10u\n"; | ||
40996 | -static const char *fmt_header = | ||
40997 | +static const char fmt_value[] = " %-30s %10u\n"; | ||
40998 | +static const char fmt_hex[] = " %-30s 0x%02X\n"; | ||
40999 | +static const char fmt_table[] = " %-30s %10u %10u %10u %10u\n"; | ||
41000 | +static const char fmt_header[] = | ||
41001 | "%-32s current cumulative delta max\n"; | ||
41002 | |||
41003 | static int iwl_statistics_flag(struct iwl_priv *priv, char *buf, int bufsz) | ||
41357 | @@ -1871,7 +1871,7 @@ static ssize_t iwl_dbgfs_clear_ucode_statistics_write(struct file *file, | 41004 | @@ -1871,7 +1871,7 @@ static ssize_t iwl_dbgfs_clear_ucode_statistics_write(struct file *file, |
41358 | { | 41005 | { |
41359 | struct iwl_priv *priv = file->private_data; | 41006 | struct iwl_priv *priv = file->private_data; |
@@ -41417,7 +41064,7 @@ index 81d4071..f2071ea 100644 | |||
41417 | 41064 | ||
41418 | memset(buf, 0, sizeof(buf)); | 41065 | memset(buf, 0, sizeof(buf)); |
41419 | buf_size = min(count, sizeof(buf) - 1); | 41066 | buf_size = min(count, sizeof(buf) - 1); |
41420 | @@ -2256,7 +2256,7 @@ static ssize_t iwl_dbgfs_log_event_write(struct file *file, | 41067 | @@ -2254,7 +2254,7 @@ static ssize_t iwl_dbgfs_log_event_write(struct file *file, |
41421 | struct iwl_priv *priv = file->private_data; | 41068 | struct iwl_priv *priv = file->private_data; |
41422 | u32 event_log_flag; | 41069 | u32 event_log_flag; |
41423 | char buf[8]; | 41070 | char buf[8]; |
@@ -41426,7 +41073,7 @@ index 81d4071..f2071ea 100644 | |||
41426 | 41073 | ||
41427 | /* check that the interface is up */ | 41074 | /* check that the interface is up */ |
41428 | if (!iwl_is_ready(priv)) | 41075 | if (!iwl_is_ready(priv)) |
41429 | @@ -2310,7 +2310,7 @@ static ssize_t iwl_dbgfs_calib_disabled_write(struct file *file, | 41076 | @@ -2308,7 +2308,7 @@ static ssize_t iwl_dbgfs_calib_disabled_write(struct file *file, |
41430 | struct iwl_priv *priv = file->private_data; | 41077 | struct iwl_priv *priv = file->private_data; |
41431 | char buf[8]; | 41078 | char buf[8]; |
41432 | u32 calib_disabled; | 41079 | u32 calib_disabled; |
@@ -41436,10 +41083,10 @@ index 81d4071..f2071ea 100644 | |||
41436 | memset(buf, 0, sizeof(buf)); | 41083 | memset(buf, 0, sizeof(buf)); |
41437 | buf_size = min(count, sizeof(buf) - 1); | 41084 | buf_size = min(count, sizeof(buf) - 1); |
41438 | diff --git a/drivers/net/wireless/iwlwifi/pcie/trans.c b/drivers/net/wireless/iwlwifi/pcie/trans.c | 41085 | diff --git a/drivers/net/wireless/iwlwifi/pcie/trans.c b/drivers/net/wireless/iwlwifi/pcie/trans.c |
41439 | index 12c4f31..484d948 100644 | 41086 | index 50ba0a4..29424e7 100644 |
41440 | --- a/drivers/net/wireless/iwlwifi/pcie/trans.c | 41087 | --- a/drivers/net/wireless/iwlwifi/pcie/trans.c |
41441 | +++ b/drivers/net/wireless/iwlwifi/pcie/trans.c | 41088 | +++ b/drivers/net/wireless/iwlwifi/pcie/trans.c |
41442 | @@ -1328,7 +1328,7 @@ static ssize_t iwl_dbgfs_interrupt_write(struct file *file, | 41089 | @@ -1329,7 +1329,7 @@ static ssize_t iwl_dbgfs_interrupt_write(struct file *file, |
41443 | struct isr_statistics *isr_stats = &trans_pcie->isr_stats; | 41090 | struct isr_statistics *isr_stats = &trans_pcie->isr_stats; |
41444 | 41091 | ||
41445 | char buf[8]; | 41092 | char buf[8]; |
@@ -41448,7 +41095,7 @@ index 12c4f31..484d948 100644 | |||
41448 | u32 reset_flag; | 41095 | u32 reset_flag; |
41449 | 41096 | ||
41450 | memset(buf, 0, sizeof(buf)); | 41097 | memset(buf, 0, sizeof(buf)); |
41451 | @@ -1349,7 +1349,7 @@ static ssize_t iwl_dbgfs_csr_write(struct file *file, | 41098 | @@ -1350,7 +1350,7 @@ static ssize_t iwl_dbgfs_csr_write(struct file *file, |
41452 | { | 41099 | { |
41453 | struct iwl_trans *trans = file->private_data; | 41100 | struct iwl_trans *trans = file->private_data; |
41454 | char buf[8]; | 41101 | char buf[8]; |
@@ -41458,10 +41105,10 @@ index 12c4f31..484d948 100644 | |||
41458 | 41105 | ||
41459 | memset(buf, 0, sizeof(buf)); | 41106 | memset(buf, 0, sizeof(buf)); |
41460 | diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c | 41107 | diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c |
41461 | index 2b49f48..14fc244 100644 | 41108 | index cb34c78..9fec0dc 100644 |
41462 | --- a/drivers/net/wireless/mac80211_hwsim.c | 41109 | --- a/drivers/net/wireless/mac80211_hwsim.c |
41463 | +++ b/drivers/net/wireless/mac80211_hwsim.c | 41110 | +++ b/drivers/net/wireless/mac80211_hwsim.c |
41464 | @@ -2143,25 +2143,19 @@ static int __init init_mac80211_hwsim(void) | 41111 | @@ -2195,25 +2195,19 @@ static int __init init_mac80211_hwsim(void) |
41465 | 41112 | ||
41466 | if (channels > 1) { | 41113 | if (channels > 1) { |
41467 | hwsim_if_comb.num_different_channels = channels; | 41114 | hwsim_if_comb.num_different_channels = channels; |
@@ -41500,48 +41147,8 @@ index 2b49f48..14fc244 100644 | |||
41500 | } | 41147 | } |
41501 | 41148 | ||
41502 | spin_lock_init(&hwsim_radio_lock); | 41149 | spin_lock_init(&hwsim_radio_lock); |
41503 | diff --git a/drivers/net/wireless/mwifiex/debugfs.c b/drivers/net/wireless/mwifiex/debugfs.c | ||
41504 | index 753b568..a5f9875 100644 | ||
41505 | --- a/drivers/net/wireless/mwifiex/debugfs.c | ||
41506 | +++ b/drivers/net/wireless/mwifiex/debugfs.c | ||
41507 | @@ -26,10 +26,17 @@ | ||
41508 | static struct dentry *mwifiex_dfs_dir; | ||
41509 | |||
41510 | static char *bss_modes[] = { | ||
41511 | - "Unknown", | ||
41512 | - "Ad-hoc", | ||
41513 | - "Managed", | ||
41514 | - "Auto" | ||
41515 | + "UNSPECIFIED", | ||
41516 | + "ADHOC", | ||
41517 | + "STATION", | ||
41518 | + "AP", | ||
41519 | + "AP_VLAN", | ||
41520 | + "WDS", | ||
41521 | + "MONITOR", | ||
41522 | + "MESH_POINT", | ||
41523 | + "P2P_CLIENT", | ||
41524 | + "P2P_GO", | ||
41525 | + "P2P_DEVICE", | ||
41526 | }; | ||
41527 | |||
41528 | /* size/addr for mwifiex_debug_info */ | ||
41529 | @@ -200,7 +207,12 @@ mwifiex_info_read(struct file *file, char __user *ubuf, | ||
41530 | p += sprintf(p, "driver_version = %s", fmt); | ||
41531 | p += sprintf(p, "\nverext = %s", priv->version_str); | ||
41532 | p += sprintf(p, "\ninterface_name=\"%s\"\n", netdev->name); | ||
41533 | - p += sprintf(p, "bss_mode=\"%s\"\n", bss_modes[info.bss_mode]); | ||
41534 | + | ||
41535 | + if (info.bss_mode >= ARRAY_SIZE(bss_modes)) | ||
41536 | + p += sprintf(p, "bss_mode=\"%d\"\n", info.bss_mode); | ||
41537 | + else | ||
41538 | + p += sprintf(p, "bss_mode=\"%s\"\n", bss_modes[info.bss_mode]); | ||
41539 | + | ||
41540 | p += sprintf(p, "media_state=\"%s\"\n", | ||
41541 | (!priv->media_connected ? "Disconnected" : "Connected")); | ||
41542 | p += sprintf(p, "mac_address=\"%pM\"\n", netdev->dev_addr); | ||
41543 | diff --git a/drivers/net/wireless/rndis_wlan.c b/drivers/net/wireless/rndis_wlan.c | 41150 | diff --git a/drivers/net/wireless/rndis_wlan.c b/drivers/net/wireless/rndis_wlan.c |
41544 | index 525fd75..6c9f791 100644 | 41151 | index 8169a85..7fa3b47 100644 |
41545 | --- a/drivers/net/wireless/rndis_wlan.c | 41152 | --- a/drivers/net/wireless/rndis_wlan.c |
41546 | +++ b/drivers/net/wireless/rndis_wlan.c | 41153 | +++ b/drivers/net/wireless/rndis_wlan.c |
41547 | @@ -1238,7 +1238,7 @@ static int set_rts_threshold(struct usbnet *usbdev, u32 rts_threshold) | 41154 | @@ -1238,7 +1238,7 @@ static int set_rts_threshold(struct usbnet *usbdev, u32 rts_threshold) |
@@ -41554,10 +41161,10 @@ index 525fd75..6c9f791 100644 | |||
41554 | 41161 | ||
41555 | tmp = cpu_to_le32(rts_threshold); | 41162 | tmp = cpu_to_le32(rts_threshold); |
41556 | diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h | 41163 | diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h |
41557 | index 086abb4..8279c30 100644 | 41164 | index 7510723..5ba37f5 100644 |
41558 | --- a/drivers/net/wireless/rt2x00/rt2x00.h | 41165 | --- a/drivers/net/wireless/rt2x00/rt2x00.h |
41559 | +++ b/drivers/net/wireless/rt2x00/rt2x00.h | 41166 | +++ b/drivers/net/wireless/rt2x00/rt2x00.h |
41560 | @@ -396,7 +396,7 @@ struct rt2x00_intf { | 41167 | @@ -386,7 +386,7 @@ struct rt2x00_intf { |
41561 | * for hardware which doesn't support hardware | 41168 | * for hardware which doesn't support hardware |
41562 | * sequence counting. | 41169 | * sequence counting. |
41563 | */ | 41170 | */ |
@@ -41567,10 +41174,10 @@ index 086abb4..8279c30 100644 | |||
41567 | 41174 | ||
41568 | static inline struct rt2x00_intf* vif_to_intf(struct ieee80211_vif *vif) | 41175 | static inline struct rt2x00_intf* vif_to_intf(struct ieee80211_vif *vif) |
41569 | diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.c b/drivers/net/wireless/rt2x00/rt2x00queue.c | 41176 | diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.c b/drivers/net/wireless/rt2x00/rt2x00queue.c |
41570 | index 4d91795..62fccff 100644 | 41177 | index 2c12311..7b77f24 100644 |
41571 | --- a/drivers/net/wireless/rt2x00/rt2x00queue.c | 41178 | --- a/drivers/net/wireless/rt2x00/rt2x00queue.c |
41572 | +++ b/drivers/net/wireless/rt2x00/rt2x00queue.c | 41179 | +++ b/drivers/net/wireless/rt2x00/rt2x00queue.c |
41573 | @@ -251,9 +251,9 @@ static void rt2x00queue_create_tx_descriptor_seq(struct rt2x00_dev *rt2x00dev, | 41180 | @@ -252,9 +252,9 @@ static void rt2x00queue_create_tx_descriptor_seq(struct rt2x00_dev *rt2x00dev, |
41574 | * sequence counter given by mac80211. | 41181 | * sequence counter given by mac80211. |
41575 | */ | 41182 | */ |
41576 | if (test_bit(ENTRY_TXD_FIRST_FRAGMENT, &txdesc->flags)) | 41183 | if (test_bit(ENTRY_TXD_FIRST_FRAGMENT, &txdesc->flags)) |
@@ -41583,10 +41190,10 @@ index 4d91795..62fccff 100644 | |||
41583 | hdr->seq_ctrl &= cpu_to_le16(IEEE80211_SCTL_FRAG); | 41190 | hdr->seq_ctrl &= cpu_to_le16(IEEE80211_SCTL_FRAG); |
41584 | hdr->seq_ctrl |= cpu_to_le16(seqno); | 41191 | hdr->seq_ctrl |= cpu_to_le16(seqno); |
41585 | diff --git a/drivers/net/wireless/ti/wl1251/sdio.c b/drivers/net/wireless/ti/wl1251/sdio.c | 41192 | diff --git a/drivers/net/wireless/ti/wl1251/sdio.c b/drivers/net/wireless/ti/wl1251/sdio.c |
41586 | index e57ee48..541cf6c 100644 | 41193 | index e2b3d9c..67a5184 100644 |
41587 | --- a/drivers/net/wireless/ti/wl1251/sdio.c | 41194 | --- a/drivers/net/wireless/ti/wl1251/sdio.c |
41588 | +++ b/drivers/net/wireless/ti/wl1251/sdio.c | 41195 | +++ b/drivers/net/wireless/ti/wl1251/sdio.c |
41589 | @@ -269,13 +269,17 @@ static int wl1251_sdio_probe(struct sdio_func *func, | 41196 | @@ -271,13 +271,17 @@ static int wl1251_sdio_probe(struct sdio_func *func, |
41590 | 41197 | ||
41591 | irq_set_irq_type(wl->irq, IRQ_TYPE_EDGE_RISING); | 41198 | irq_set_irq_type(wl->irq, IRQ_TYPE_EDGE_RISING); |
41592 | 41199 | ||
@@ -41609,7 +41216,7 @@ index e57ee48..541cf6c 100644 | |||
41609 | wl1251_info("using SDIO interrupt"); | 41216 | wl1251_info("using SDIO interrupt"); |
41610 | } | 41217 | } |
41611 | diff --git a/drivers/net/wireless/ti/wl12xx/main.c b/drivers/net/wireless/ti/wl12xx/main.c | 41218 | diff --git a/drivers/net/wireless/ti/wl12xx/main.c b/drivers/net/wireless/ti/wl12xx/main.c |
41612 | index 09694e3..24ccec7 100644 | 41219 | index 1c627da..69f7d17 100644 |
41613 | --- a/drivers/net/wireless/ti/wl12xx/main.c | 41220 | --- a/drivers/net/wireless/ti/wl12xx/main.c |
41614 | +++ b/drivers/net/wireless/ti/wl12xx/main.c | 41221 | +++ b/drivers/net/wireless/ti/wl12xx/main.c |
41615 | @@ -656,7 +656,9 @@ static int wl12xx_identify_chip(struct wl1271 *wl) | 41222 | @@ -656,7 +656,9 @@ static int wl12xx_identify_chip(struct wl1271 *wl) |
@@ -41635,10 +41242,10 @@ index 09694e3..24ccec7 100644 | |||
41635 | wlcore_set_min_fw_ver(wl, WL127X_CHIP_VER, | 41242 | wlcore_set_min_fw_ver(wl, WL127X_CHIP_VER, |
41636 | WL127X_IFTYPE_SR_VER, WL127X_MAJOR_SR_VER, | 41243 | WL127X_IFTYPE_SR_VER, WL127X_MAJOR_SR_VER, |
41637 | diff --git a/drivers/net/wireless/ti/wl18xx/main.c b/drivers/net/wireless/ti/wl18xx/main.c | 41244 | diff --git a/drivers/net/wireless/ti/wl18xx/main.c b/drivers/net/wireless/ti/wl18xx/main.c |
41638 | index da3ef1b..4790b95 100644 | 41245 | index 9fa692d..b31fee0 100644 |
41639 | --- a/drivers/net/wireless/ti/wl18xx/main.c | 41246 | --- a/drivers/net/wireless/ti/wl18xx/main.c |
41640 | +++ b/drivers/net/wireless/ti/wl18xx/main.c | 41247 | +++ b/drivers/net/wireless/ti/wl18xx/main.c |
41641 | @@ -1664,8 +1664,10 @@ static int wl18xx_setup(struct wl1271 *wl) | 41248 | @@ -1687,8 +1687,10 @@ static int wl18xx_setup(struct wl1271 *wl) |
41642 | } | 41249 | } |
41643 | 41250 | ||
41644 | if (!checksum_param) { | 41251 | if (!checksum_param) { |
@@ -41811,7 +41418,7 @@ index 93404f7..4a313d8 100644 | |||
41811 | }; | 41418 | }; |
41812 | 41419 | ||
41813 | diff --git a/drivers/parport/procfs.c b/drivers/parport/procfs.c | 41420 | diff --git a/drivers/parport/procfs.c b/drivers/parport/procfs.c |
41814 | index 3f56bc0..707d642 100644 | 41421 | index 92ed045..62d39bd7 100644 |
41815 | --- a/drivers/parport/procfs.c | 41422 | --- a/drivers/parport/procfs.c |
41816 | +++ b/drivers/parport/procfs.c | 41423 | +++ b/drivers/parport/procfs.c |
41817 | @@ -64,7 +64,7 @@ static int do_active_device(ctl_table *table, int write, | 41424 | @@ -64,7 +64,7 @@ static int do_active_device(ctl_table *table, int write, |
@@ -41942,10 +41549,10 @@ index 76ba8a1..20ca857 100644 | |||
41942 | 41549 | ||
41943 | /* initialize our int15 lock */ | 41550 | /* initialize our int15 lock */ |
41944 | diff --git a/drivers/pci/hotplug/pci_hotplug_core.c b/drivers/pci/hotplug/pci_hotplug_core.c | 41551 | diff --git a/drivers/pci/hotplug/pci_hotplug_core.c b/drivers/pci/hotplug/pci_hotplug_core.c |
41945 | index 202f4a9..8ee47d0 100644 | 41552 | index ec20f74..c1d961e 100644 |
41946 | --- a/drivers/pci/hotplug/pci_hotplug_core.c | 41553 | --- a/drivers/pci/hotplug/pci_hotplug_core.c |
41947 | +++ b/drivers/pci/hotplug/pci_hotplug_core.c | 41554 | +++ b/drivers/pci/hotplug/pci_hotplug_core.c |
41948 | @@ -448,8 +448,10 @@ int __pci_hp_register(struct hotplug_slot *slot, struct pci_bus *bus, | 41555 | @@ -441,8 +441,10 @@ int __pci_hp_register(struct hotplug_slot *slot, struct pci_bus *bus, |
41949 | return -EINVAL; | 41556 | return -EINVAL; |
41950 | } | 41557 | } |
41951 | 41558 | ||
@@ -41972,7 +41579,7 @@ index 7d72c5e..edce02c 100644 | |||
41972 | int retval = -ENOMEM; | 41579 | int retval = -ENOMEM; |
41973 | 41580 | ||
41974 | diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c | 41581 | diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c |
41975 | index 9c6e9bb..2916736 100644 | 41582 | index 5b4a9d9..cd5ac1f 100644 |
41976 | --- a/drivers/pci/pci-sysfs.c | 41583 | --- a/drivers/pci/pci-sysfs.c |
41977 | +++ b/drivers/pci/pci-sysfs.c | 41584 | +++ b/drivers/pci/pci-sysfs.c |
41978 | @@ -1071,7 +1071,7 @@ static int pci_create_attr(struct pci_dev *pdev, int num, int write_combine) | 41585 | @@ -1071,7 +1071,7 @@ static int pci_create_attr(struct pci_dev *pdev, int num, int write_combine) |
@@ -42003,10 +41610,10 @@ index 9c6e9bb..2916736 100644 | |||
42003 | if (!sysfs_initialized) | 41610 | if (!sysfs_initialized) |
42004 | return -EACCES; | 41611 | return -EACCES; |
42005 | diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h | 41612 | diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h |
42006 | index 7346ee6..41520eb 100644 | 41613 | index d1182c4..2a138ec 100644 |
42007 | --- a/drivers/pci/pci.h | 41614 | --- a/drivers/pci/pci.h |
42008 | +++ b/drivers/pci/pci.h | 41615 | +++ b/drivers/pci/pci.h |
42009 | @@ -93,7 +93,7 @@ struct pci_vpd_ops { | 41616 | @@ -92,7 +92,7 @@ struct pci_vpd_ops { |
42010 | struct pci_vpd { | 41617 | struct pci_vpd { |
42011 | unsigned int len; | 41618 | unsigned int len; |
42012 | const struct pci_vpd_ops *ops; | 41619 | const struct pci_vpd_ops *ops; |
@@ -42014,7 +41621,7 @@ index 7346ee6..41520eb 100644 | |||
42014 | + bin_attribute_no_const *attr; /* descriptor for sysfs VPD entry */ | 41621 | + bin_attribute_no_const *attr; /* descriptor for sysfs VPD entry */ |
42015 | }; | 41622 | }; |
42016 | 41623 | ||
42017 | extern int pci_vpd_pci22_init(struct pci_dev *dev); | 41624 | int pci_vpd_pci22_init(struct pci_dev *dev); |
42018 | diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c | 41625 | diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c |
42019 | index d320df6..ca9a8f6 100644 | 41626 | index d320df6..ca9a8f6 100644 |
42020 | --- a/drivers/pci/pcie/aspm.c | 41627 | --- a/drivers/pci/pcie/aspm.c |
@@ -42033,7 +41640,7 @@ index d320df6..ca9a8f6 100644 | |||
42033 | #define ASPM_STATE_ALL (ASPM_STATE_L0S | ASPM_STATE_L1) | 41640 | #define ASPM_STATE_ALL (ASPM_STATE_L0S | ASPM_STATE_L1) |
42034 | 41641 | ||
42035 | diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c | 41642 | diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c |
42036 | index 9c8b3bd..899c8fa 100644 | 41643 | index ea37072..10e58e56 100644 |
42037 | --- a/drivers/pci/probe.c | 41644 | --- a/drivers/pci/probe.c |
42038 | +++ b/drivers/pci/probe.c | 41645 | +++ b/drivers/pci/probe.c |
42039 | @@ -173,7 +173,7 @@ int __pci_read_base(struct pci_dev *dev, enum pci_bar_type type, | 41646 | @@ -173,7 +173,7 @@ int __pci_read_base(struct pci_dev *dev, enum pci_bar_type type, |
@@ -42046,10 +41653,10 @@ index 9c8b3bd..899c8fa 100644 | |||
42046 | /* No printks while decoding is disabled! */ | 41653 | /* No printks while decoding is disabled! */ |
42047 | if (!dev->mmio_always_on) { | 41654 | if (!dev->mmio_always_on) { |
42048 | diff --git a/drivers/pci/proc.c b/drivers/pci/proc.c | 41655 | diff --git a/drivers/pci/proc.c b/drivers/pci/proc.c |
42049 | index 0b00947..64f7c0a 100644 | 41656 | index 0812608..b04018c4 100644 |
42050 | --- a/drivers/pci/proc.c | 41657 | --- a/drivers/pci/proc.c |
42051 | +++ b/drivers/pci/proc.c | 41658 | +++ b/drivers/pci/proc.c |
42052 | @@ -465,7 +465,16 @@ static const struct file_operations proc_bus_pci_dev_operations = { | 41659 | @@ -453,7 +453,16 @@ static const struct file_operations proc_bus_pci_dev_operations = { |
42053 | static int __init pci_proc_init(void) | 41660 | static int __init pci_proc_init(void) |
42054 | { | 41661 | { |
42055 | struct pci_dev *dev = NULL; | 41662 | struct pci_dev *dev = NULL; |
@@ -42105,10 +41712,10 @@ index 6b22938..bc9700e 100644 | |||
42105 | 41712 | ||
42106 | /* disable hardware control by fn key */ | 41713 | /* disable hardware control by fn key */ |
42107 | diff --git a/drivers/platform/x86/sony-laptop.c b/drivers/platform/x86/sony-laptop.c | 41714 | diff --git a/drivers/platform/x86/sony-laptop.c b/drivers/platform/x86/sony-laptop.c |
42108 | index 14d4dce..b129917 100644 | 41715 | index 2ac045f..39c443d 100644 |
42109 | --- a/drivers/platform/x86/sony-laptop.c | 41716 | --- a/drivers/platform/x86/sony-laptop.c |
42110 | +++ b/drivers/platform/x86/sony-laptop.c | 41717 | +++ b/drivers/platform/x86/sony-laptop.c |
42111 | @@ -2465,7 +2465,7 @@ static void sony_nc_gfx_switch_cleanup(struct platform_device *pd) | 41718 | @@ -2483,7 +2483,7 @@ static void sony_nc_gfx_switch_cleanup(struct platform_device *pd) |
42112 | } | 41719 | } |
42113 | 41720 | ||
42114 | /* High speed charging function */ | 41721 | /* High speed charging function */ |
@@ -42118,7 +41725,7 @@ index 14d4dce..b129917 100644 | |||
42118 | static ssize_t sony_nc_highspeed_charging_store(struct device *dev, | 41725 | static ssize_t sony_nc_highspeed_charging_store(struct device *dev, |
42119 | struct device_attribute *attr, | 41726 | struct device_attribute *attr, |
42120 | diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c | 41727 | diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c |
42121 | index edec135..59a24a3 100644 | 41728 | index 54d31c0..3f896d3 100644 |
42122 | --- a/drivers/platform/x86/thinkpad_acpi.c | 41729 | --- a/drivers/platform/x86/thinkpad_acpi.c |
42123 | +++ b/drivers/platform/x86/thinkpad_acpi.c | 41730 | +++ b/drivers/platform/x86/thinkpad_acpi.c |
42124 | @@ -2093,7 +2093,7 @@ static int hotkey_mask_get(void) | 41731 | @@ -2093,7 +2093,7 @@ static int hotkey_mask_get(void) |
@@ -42332,12 +41939,12 @@ index 3e6db1c..1fbbdae 100644 | |||
42332 | 41939 | ||
42333 | /* check if the resource is reserved */ | 41940 | /* check if the resource is reserved */ |
42334 | diff --git a/drivers/power/pda_power.c b/drivers/power/pda_power.c | 41941 | diff --git a/drivers/power/pda_power.c b/drivers/power/pda_power.c |
42335 | index 7df7c5f..bd48c47 100644 | 41942 | index 0c52e2a..3421ab7 100644 |
42336 | --- a/drivers/power/pda_power.c | 41943 | --- a/drivers/power/pda_power.c |
42337 | +++ b/drivers/power/pda_power.c | 41944 | +++ b/drivers/power/pda_power.c |
42338 | @@ -37,7 +37,11 @@ static int polling; | 41945 | @@ -37,7 +37,11 @@ static int polling; |
42339 | 41946 | ||
42340 | #ifdef CONFIG_USB_OTG_UTILS | 41947 | #if IS_ENABLED(CONFIG_USB_PHY) |
42341 | static struct usb_phy *transceiver; | 41948 | static struct usb_phy *transceiver; |
42342 | -static struct notifier_block otg_nb; | 41949 | -static struct notifier_block otg_nb; |
42343 | +static int otg_handle_notification(struct notifier_block *nb, | 41950 | +static int otg_handle_notification(struct notifier_block *nb, |
@@ -42350,7 +41957,7 @@ index 7df7c5f..bd48c47 100644 | |||
42350 | static struct regulator *ac_draw; | 41957 | static struct regulator *ac_draw; |
42351 | @@ -369,7 +373,6 @@ static int pda_power_probe(struct platform_device *pdev) | 41958 | @@ -369,7 +373,6 @@ static int pda_power_probe(struct platform_device *pdev) |
42352 | 41959 | ||
42353 | #ifdef CONFIG_USB_OTG_UTILS | 41960 | #if IS_ENABLED(CONFIG_USB_PHY) |
42354 | if (!IS_ERR_OR_NULL(transceiver) && pdata->use_otg_notifier) { | 41961 | if (!IS_ERR_OR_NULL(transceiver) && pdata->use_otg_notifier) { |
42355 | - otg_nb.notifier_call = otg_handle_notification; | 41962 | - otg_nb.notifier_call = otg_handle_notification; |
42356 | ret = usb_register_notifier(transceiver, &otg_nb); | 41963 | ret = usb_register_notifier(transceiver, &otg_nb); |
@@ -42376,7 +41983,7 @@ index cc439fd..8fa30df 100644 | |||
42376 | 41983 | ||
42377 | #endif /* CONFIG_SYSFS */ | 41984 | #endif /* CONFIG_SYSFS */ |
42378 | diff --git a/drivers/power/power_supply_core.c b/drivers/power/power_supply_core.c | 41985 | diff --git a/drivers/power/power_supply_core.c b/drivers/power/power_supply_core.c |
42379 | index 5deac43..608c5ff 100644 | 41986 | index 1c517c3..ffa2f17 100644 |
42380 | --- a/drivers/power/power_supply_core.c | 41987 | --- a/drivers/power/power_supply_core.c |
42381 | +++ b/drivers/power/power_supply_core.c | 41988 | +++ b/drivers/power/power_supply_core.c |
42382 | @@ -24,7 +24,10 @@ | 41989 | @@ -24,7 +24,10 @@ |
@@ -42389,9 +41996,9 @@ index 5deac43..608c5ff 100644 | |||
42389 | + .groups = power_supply_attr_groups, | 41996 | + .groups = power_supply_attr_groups, |
42390 | +}; | 41997 | +}; |
42391 | 41998 | ||
42392 | static int __power_supply_changed_work(struct device *dev, void *data) | 41999 | static bool __power_supply_is_supplied_by(struct power_supply *supplier, |
42393 | { | 42000 | struct power_supply *supply) |
42394 | @@ -393,7 +396,7 @@ static int __init power_supply_class_init(void) | 42001 | @@ -554,7 +557,7 @@ static int __init power_supply_class_init(void) |
42395 | return PTR_ERR(power_supply_class); | 42002 | return PTR_ERR(power_supply_class); |
42396 | 42003 | ||
42397 | power_supply_class->dev_uevent = power_supply_uevent; | 42004 | power_supply_class->dev_uevent = power_supply_uevent; |
@@ -42425,7 +42032,7 @@ index 29178f7..c65f324 100644 | |||
42425 | __power_supply_attrs[i] = &power_supply_attrs[i].attr; | 42032 | __power_supply_attrs[i] = &power_supply_attrs[i].attr; |
42426 | } | 42033 | } |
42427 | diff --git a/drivers/regulator/max8660.c b/drivers/regulator/max8660.c | 42034 | diff --git a/drivers/regulator/max8660.c b/drivers/regulator/max8660.c |
42428 | index 4d7c635..9860196 100644 | 42035 | index d428ef9..fdc0357 100644 |
42429 | --- a/drivers/regulator/max8660.c | 42036 | --- a/drivers/regulator/max8660.c |
42430 | +++ b/drivers/regulator/max8660.c | 42037 | +++ b/drivers/regulator/max8660.c |
42431 | @@ -333,8 +333,10 @@ static int max8660_probe(struct i2c_client *client, | 42038 | @@ -333,8 +333,10 @@ static int max8660_probe(struct i2c_client *client, |
@@ -42442,7 +42049,7 @@ index 4d7c635..9860196 100644 | |||
42442 | 42049 | ||
42443 | /* | 42050 | /* |
42444 | diff --git a/drivers/regulator/max8973-regulator.c b/drivers/regulator/max8973-regulator.c | 42051 | diff --git a/drivers/regulator/max8973-regulator.c b/drivers/regulator/max8973-regulator.c |
42445 | index 9a8ea91..c483dd9 100644 | 42052 | index adb1414..c13e0ce 100644 |
42446 | --- a/drivers/regulator/max8973-regulator.c | 42053 | --- a/drivers/regulator/max8973-regulator.c |
42447 | +++ b/drivers/regulator/max8973-regulator.c | 42054 | +++ b/drivers/regulator/max8973-regulator.c |
42448 | @@ -401,9 +401,11 @@ static int max8973_probe(struct i2c_client *client, | 42055 | @@ -401,9 +401,11 @@ static int max8973_probe(struct i2c_client *client, |
@@ -42461,10 +42068,10 @@ index 9a8ea91..c483dd9 100644 | |||
42461 | 42068 | ||
42462 | max->enable_external_control = pdata->enable_ext_control; | 42069 | max->enable_external_control = pdata->enable_ext_control; |
42463 | diff --git a/drivers/regulator/mc13892-regulator.c b/drivers/regulator/mc13892-regulator.c | 42070 | diff --git a/drivers/regulator/mc13892-regulator.c b/drivers/regulator/mc13892-regulator.c |
42464 | index 9891aec..beb3083 100644 | 42071 | index b716283..3cc4349 100644 |
42465 | --- a/drivers/regulator/mc13892-regulator.c | 42072 | --- a/drivers/regulator/mc13892-regulator.c |
42466 | +++ b/drivers/regulator/mc13892-regulator.c | 42073 | +++ b/drivers/regulator/mc13892-regulator.c |
42467 | @@ -583,10 +583,12 @@ static int mc13892_regulator_probe(struct platform_device *pdev) | 42074 | @@ -582,10 +582,12 @@ static int mc13892_regulator_probe(struct platform_device *pdev) |
42468 | } | 42075 | } |
42469 | mc13xxx_unlock(mc13892); | 42076 | mc13xxx_unlock(mc13892); |
42470 | 42077 | ||
@@ -42478,9 +42085,9 @@ index 9891aec..beb3083 100644 | |||
42478 | + pax_close_kernel(); | 42085 | + pax_close_kernel(); |
42479 | 42086 | ||
42480 | mc13xxx_data = mc13xxx_parse_regulators_dt(pdev, mc13892_regulators, | 42087 | mc13xxx_data = mc13xxx_parse_regulators_dt(pdev, mc13892_regulators, |
42481 | ARRAY_SIZE(mc13892_regulators), | 42088 | ARRAY_SIZE(mc13892_regulators)); |
42482 | diff --git a/drivers/rtc/rtc-cmos.c b/drivers/rtc/rtc-cmos.c | 42089 | diff --git a/drivers/rtc/rtc-cmos.c b/drivers/rtc/rtc-cmos.c |
42483 | index cc5bea9..689f7d9 100644 | 42090 | index f1cb706..4c7832a 100644 |
42484 | --- a/drivers/rtc/rtc-cmos.c | 42091 | --- a/drivers/rtc/rtc-cmos.c |
42485 | +++ b/drivers/rtc/rtc-cmos.c | 42092 | +++ b/drivers/rtc/rtc-cmos.c |
42486 | @@ -724,7 +724,9 @@ cmos_do_probe(struct device *dev, struct resource *ports, int rtc_irq) | 42093 | @@ -724,7 +724,9 @@ cmos_do_probe(struct device *dev, struct resource *ports, int rtc_irq) |
@@ -42516,10 +42123,10 @@ index d049393..bb20be0 100644 | |||
42516 | 42123 | ||
42517 | case RTC_PIE_ON: | 42124 | case RTC_PIE_ON: |
42518 | diff --git a/drivers/rtc/rtc-ds1307.c b/drivers/rtc/rtc-ds1307.c | 42125 | diff --git a/drivers/rtc/rtc-ds1307.c b/drivers/rtc/rtc-ds1307.c |
42519 | index 970a236..3613169 100644 | 42126 | index b53992a..776df84 100644 |
42520 | --- a/drivers/rtc/rtc-ds1307.c | 42127 | --- a/drivers/rtc/rtc-ds1307.c |
42521 | +++ b/drivers/rtc/rtc-ds1307.c | 42128 | +++ b/drivers/rtc/rtc-ds1307.c |
42522 | @@ -106,7 +106,7 @@ struct ds1307 { | 42129 | @@ -107,7 +107,7 @@ struct ds1307 { |
42523 | u8 offset; /* register's offset */ | 42130 | u8 offset; /* register's offset */ |
42524 | u8 regs[11]; | 42131 | u8 regs[11]; |
42525 | u16 nvram_offset; | 42132 | u16 nvram_offset; |
@@ -42578,32 +42185,6 @@ index 23a90e7..9cf04ee 100644 | |||
42578 | 42185 | ||
42579 | /* | 42186 | /* |
42580 | * Queue element to wait for room in request queue. FIFO order is | 42187 | * Queue element to wait for room in request queue. FIFO order is |
42581 | diff --git a/drivers/scsi/bfa/bfad_debugfs.c b/drivers/scsi/bfa/bfad_debugfs.c | ||
42582 | index 439c012..b63d534 100644 | ||
42583 | --- a/drivers/scsi/bfa/bfad_debugfs.c | ||
42584 | +++ b/drivers/scsi/bfa/bfad_debugfs.c | ||
42585 | @@ -186,7 +186,7 @@ bfad_debugfs_lseek(struct file *file, loff_t offset, int orig) | ||
42586 | file->f_pos += offset; | ||
42587 | break; | ||
42588 | case 2: | ||
42589 | - file->f_pos = debug->buffer_len - offset; | ||
42590 | + file->f_pos = debug->buffer_len + offset; | ||
42591 | break; | ||
42592 | default: | ||
42593 | return -EINVAL; | ||
42594 | diff --git a/drivers/scsi/fnic/fnic_debugfs.c b/drivers/scsi/fnic/fnic_debugfs.c | ||
42595 | index adc1f7f..85e1ffd 100644 | ||
42596 | --- a/drivers/scsi/fnic/fnic_debugfs.c | ||
42597 | +++ b/drivers/scsi/fnic/fnic_debugfs.c | ||
42598 | @@ -174,7 +174,7 @@ static loff_t fnic_trace_debugfs_lseek(struct file *file, | ||
42599 | pos = file->f_pos + offset; | ||
42600 | break; | ||
42601 | case 2: | ||
42602 | - pos = fnic_dbg_prt->buffer_len - offset; | ||
42603 | + pos = fnic_dbg_prt->buffer_len + offset; | ||
42604 | } | ||
42605 | return (pos < 0 || pos > fnic_dbg_prt->buffer_len) ? | ||
42606 | -EINVAL : (file->f_pos = pos); | ||
42607 | diff --git a/drivers/scsi/hosts.c b/drivers/scsi/hosts.c | 42188 | diff --git a/drivers/scsi/hosts.c b/drivers/scsi/hosts.c |
42608 | index df0c3c7..b00e1d0 100644 | 42189 | index df0c3c7..b00e1d0 100644 |
42609 | --- a/drivers/scsi/hosts.c | 42190 | --- a/drivers/scsi/hosts.c |
@@ -42767,7 +42348,7 @@ index 9816479..c5d4e97 100644 | |||
42767 | /* queue and queue Info */ | 42348 | /* queue and queue Info */ |
42768 | struct list_head reqQ; | 42349 | struct list_head reqQ; |
42769 | diff --git a/drivers/scsi/libfc/fc_exch.c b/drivers/scsi/libfc/fc_exch.c | 42350 | diff --git a/drivers/scsi/libfc/fc_exch.c b/drivers/scsi/libfc/fc_exch.c |
42770 | index c772d8d..35c362c 100644 | 42351 | index 8b928c6..9c76300 100644 |
42771 | --- a/drivers/scsi/libfc/fc_exch.c | 42352 | --- a/drivers/scsi/libfc/fc_exch.c |
42772 | +++ b/drivers/scsi/libfc/fc_exch.c | 42353 | +++ b/drivers/scsi/libfc/fc_exch.c |
42773 | @@ -100,12 +100,12 @@ struct fc_exch_mgr { | 42354 | @@ -100,12 +100,12 @@ struct fc_exch_mgr { |
@@ -42789,7 +42370,7 @@ index c772d8d..35c362c 100644 | |||
42789 | } stats; | 42370 | } stats; |
42790 | }; | 42371 | }; |
42791 | 42372 | ||
42792 | @@ -725,7 +725,7 @@ static struct fc_exch *fc_exch_em_alloc(struct fc_lport *lport, | 42373 | @@ -736,7 +736,7 @@ static struct fc_exch *fc_exch_em_alloc(struct fc_lport *lport, |
42793 | /* allocate memory for exchange */ | 42374 | /* allocate memory for exchange */ |
42794 | ep = mempool_alloc(mp->ep_pool, GFP_ATOMIC); | 42375 | ep = mempool_alloc(mp->ep_pool, GFP_ATOMIC); |
42795 | if (!ep) { | 42376 | if (!ep) { |
@@ -42798,7 +42379,7 @@ index c772d8d..35c362c 100644 | |||
42798 | goto out; | 42379 | goto out; |
42799 | } | 42380 | } |
42800 | memset(ep, 0, sizeof(*ep)); | 42381 | memset(ep, 0, sizeof(*ep)); |
42801 | @@ -786,7 +786,7 @@ out: | 42382 | @@ -797,7 +797,7 @@ out: |
42802 | return ep; | 42383 | return ep; |
42803 | err: | 42384 | err: |
42804 | spin_unlock_bh(&pool->lock); | 42385 | spin_unlock_bh(&pool->lock); |
@@ -42807,7 +42388,7 @@ index c772d8d..35c362c 100644 | |||
42807 | mempool_free(ep, mp->ep_pool); | 42388 | mempool_free(ep, mp->ep_pool); |
42808 | return NULL; | 42389 | return NULL; |
42809 | } | 42390 | } |
42810 | @@ -929,7 +929,7 @@ static enum fc_pf_rjt_reason fc_seq_lookup_recip(struct fc_lport *lport, | 42391 | @@ -940,7 +940,7 @@ static enum fc_pf_rjt_reason fc_seq_lookup_recip(struct fc_lport *lport, |
42811 | xid = ntohs(fh->fh_ox_id); /* we originated exch */ | 42392 | xid = ntohs(fh->fh_ox_id); /* we originated exch */ |
42812 | ep = fc_exch_find(mp, xid); | 42393 | ep = fc_exch_find(mp, xid); |
42813 | if (!ep) { | 42394 | if (!ep) { |
@@ -42816,7 +42397,7 @@ index c772d8d..35c362c 100644 | |||
42816 | reject = FC_RJT_OX_ID; | 42397 | reject = FC_RJT_OX_ID; |
42817 | goto out; | 42398 | goto out; |
42818 | } | 42399 | } |
42819 | @@ -959,7 +959,7 @@ static enum fc_pf_rjt_reason fc_seq_lookup_recip(struct fc_lport *lport, | 42400 | @@ -970,7 +970,7 @@ static enum fc_pf_rjt_reason fc_seq_lookup_recip(struct fc_lport *lport, |
42820 | ep = fc_exch_find(mp, xid); | 42401 | ep = fc_exch_find(mp, xid); |
42821 | if ((f_ctl & FC_FC_FIRST_SEQ) && fc_sof_is_init(fr_sof(fp))) { | 42402 | if ((f_ctl & FC_FC_FIRST_SEQ) && fc_sof_is_init(fr_sof(fp))) { |
42822 | if (ep) { | 42403 | if (ep) { |
@@ -42825,7 +42406,7 @@ index c772d8d..35c362c 100644 | |||
42825 | reject = FC_RJT_RX_ID; | 42406 | reject = FC_RJT_RX_ID; |
42826 | goto rel; | 42407 | goto rel; |
42827 | } | 42408 | } |
42828 | @@ -970,7 +970,7 @@ static enum fc_pf_rjt_reason fc_seq_lookup_recip(struct fc_lport *lport, | 42409 | @@ -981,7 +981,7 @@ static enum fc_pf_rjt_reason fc_seq_lookup_recip(struct fc_lport *lport, |
42829 | } | 42410 | } |
42830 | xid = ep->xid; /* get our XID */ | 42411 | xid = ep->xid; /* get our XID */ |
42831 | } else if (!ep) { | 42412 | } else if (!ep) { |
@@ -42834,7 +42415,7 @@ index c772d8d..35c362c 100644 | |||
42834 | reject = FC_RJT_RX_ID; /* XID not found */ | 42415 | reject = FC_RJT_RX_ID; /* XID not found */ |
42835 | goto out; | 42416 | goto out; |
42836 | } | 42417 | } |
42837 | @@ -987,7 +987,7 @@ static enum fc_pf_rjt_reason fc_seq_lookup_recip(struct fc_lport *lport, | 42418 | @@ -998,7 +998,7 @@ static enum fc_pf_rjt_reason fc_seq_lookup_recip(struct fc_lport *lport, |
42838 | } else { | 42419 | } else { |
42839 | sp = &ep->seq; | 42420 | sp = &ep->seq; |
42840 | if (sp->id != fh->fh_seq_id) { | 42421 | if (sp->id != fh->fh_seq_id) { |
@@ -42843,7 +42424,7 @@ index c772d8d..35c362c 100644 | |||
42843 | if (f_ctl & FC_FC_END_SEQ) { | 42424 | if (f_ctl & FC_FC_END_SEQ) { |
42844 | /* | 42425 | /* |
42845 | * Update sequence_id based on incoming last | 42426 | * Update sequence_id based on incoming last |
42846 | @@ -1437,22 +1437,22 @@ static void fc_exch_recv_seq_resp(struct fc_exch_mgr *mp, struct fc_frame *fp) | 42427 | @@ -1448,22 +1448,22 @@ static void fc_exch_recv_seq_resp(struct fc_exch_mgr *mp, struct fc_frame *fp) |
42847 | 42428 | ||
42848 | ep = fc_exch_find(mp, ntohs(fh->fh_ox_id)); | 42429 | ep = fc_exch_find(mp, ntohs(fh->fh_ox_id)); |
42849 | if (!ep) { | 42430 | if (!ep) { |
@@ -42870,7 +42451,7 @@ index c772d8d..35c362c 100644 | |||
42870 | goto rel; | 42451 | goto rel; |
42871 | } | 42452 | } |
42872 | sof = fr_sof(fp); | 42453 | sof = fr_sof(fp); |
42873 | @@ -1461,7 +1461,7 @@ static void fc_exch_recv_seq_resp(struct fc_exch_mgr *mp, struct fc_frame *fp) | 42454 | @@ -1472,7 +1472,7 @@ static void fc_exch_recv_seq_resp(struct fc_exch_mgr *mp, struct fc_frame *fp) |
42874 | sp->ssb_stat |= SSB_ST_RESP; | 42455 | sp->ssb_stat |= SSB_ST_RESP; |
42875 | sp->id = fh->fh_seq_id; | 42456 | sp->id = fh->fh_seq_id; |
42876 | } else if (sp->id != fh->fh_seq_id) { | 42457 | } else if (sp->id != fh->fh_seq_id) { |
@@ -42879,7 +42460,7 @@ index c772d8d..35c362c 100644 | |||
42879 | goto rel; | 42460 | goto rel; |
42880 | } | 42461 | } |
42881 | 42462 | ||
42882 | @@ -1525,9 +1525,9 @@ static void fc_exch_recv_resp(struct fc_exch_mgr *mp, struct fc_frame *fp) | 42463 | @@ -1536,9 +1536,9 @@ static void fc_exch_recv_resp(struct fc_exch_mgr *mp, struct fc_frame *fp) |
42883 | sp = fc_seq_lookup_orig(mp, fp); /* doesn't hold sequence */ | 42464 | sp = fc_seq_lookup_orig(mp, fp); /* doesn't hold sequence */ |
42884 | 42465 | ||
42885 | if (!sp) | 42466 | if (!sp) |
@@ -42891,7 +42472,7 @@ index c772d8d..35c362c 100644 | |||
42891 | 42472 | ||
42892 | fc_frame_free(fp); | 42473 | fc_frame_free(fp); |
42893 | } | 42474 | } |
42894 | @@ -2174,13 +2174,13 @@ void fc_exch_update_stats(struct fc_lport *lport) | 42475 | @@ -2185,13 +2185,13 @@ void fc_exch_update_stats(struct fc_lport *lport) |
42895 | 42476 | ||
42896 | list_for_each_entry(ema, &lport->ema_list, ema_list) { | 42477 | list_for_each_entry(ema, &lport->ema_list, ema_list) { |
42897 | mp = ema->mp; | 42478 | mp = ema->mp; |
@@ -42912,7 +42493,7 @@ index c772d8d..35c362c 100644 | |||
42912 | } | 42493 | } |
42913 | EXPORT_SYMBOL(fc_exch_update_stats); | 42494 | EXPORT_SYMBOL(fc_exch_update_stats); |
42914 | diff --git a/drivers/scsi/libsas/sas_ata.c b/drivers/scsi/libsas/sas_ata.c | 42495 | diff --git a/drivers/scsi/libsas/sas_ata.c b/drivers/scsi/libsas/sas_ata.c |
42915 | index bdb81cd..d3c7c2c 100644 | 42496 | index 161c98e..6d563b3 100644 |
42916 | --- a/drivers/scsi/libsas/sas_ata.c | 42497 | --- a/drivers/scsi/libsas/sas_ata.c |
42917 | +++ b/drivers/scsi/libsas/sas_ata.c | 42498 | +++ b/drivers/scsi/libsas/sas_ata.c |
42918 | @@ -554,7 +554,7 @@ static struct ata_port_operations sas_sata_ops = { | 42499 | @@ -554,7 +554,7 @@ static struct ata_port_operations sas_sata_ops = { |
@@ -42925,10 +42506,10 @@ index bdb81cd..d3c7c2c 100644 | |||
42925 | .qc_issue = sas_ata_qc_issue, | 42506 | .qc_issue = sas_ata_qc_issue, |
42926 | .qc_fill_rtf = sas_ata_qc_fill_rtf, | 42507 | .qc_fill_rtf = sas_ata_qc_fill_rtf, |
42927 | diff --git a/drivers/scsi/lpfc/lpfc.h b/drivers/scsi/lpfc/lpfc.h | 42508 | diff --git a/drivers/scsi/lpfc/lpfc.h b/drivers/scsi/lpfc/lpfc.h |
42928 | index 7706c99..3b4fc0c 100644 | 42509 | index bcc56ca..6f4174a 100644 |
42929 | --- a/drivers/scsi/lpfc/lpfc.h | 42510 | --- a/drivers/scsi/lpfc/lpfc.h |
42930 | +++ b/drivers/scsi/lpfc/lpfc.h | 42511 | +++ b/drivers/scsi/lpfc/lpfc.h |
42931 | @@ -424,7 +424,7 @@ struct lpfc_vport { | 42512 | @@ -431,7 +431,7 @@ struct lpfc_vport { |
42932 | struct dentry *debug_nodelist; | 42513 | struct dentry *debug_nodelist; |
42933 | struct dentry *vport_debugfs_root; | 42514 | struct dentry *vport_debugfs_root; |
42934 | struct lpfc_debugfs_trc *disc_trc; | 42515 | struct lpfc_debugfs_trc *disc_trc; |
@@ -42937,7 +42518,7 @@ index 7706c99..3b4fc0c 100644 | |||
42937 | #endif | 42518 | #endif |
42938 | uint8_t stat_data_enabled; | 42519 | uint8_t stat_data_enabled; |
42939 | uint8_t stat_data_blocked; | 42520 | uint8_t stat_data_blocked; |
42940 | @@ -853,8 +853,8 @@ struct lpfc_hba { | 42521 | @@ -865,8 +865,8 @@ struct lpfc_hba { |
42941 | struct timer_list fabric_block_timer; | 42522 | struct timer_list fabric_block_timer; |
42942 | unsigned long bit_flags; | 42523 | unsigned long bit_flags; |
42943 | #define FABRIC_COMANDS_BLOCKED 0 | 42524 | #define FABRIC_COMANDS_BLOCKED 0 |
@@ -42948,7 +42529,7 @@ index 7706c99..3b4fc0c 100644 | |||
42948 | unsigned long last_rsrc_error_time; | 42529 | unsigned long last_rsrc_error_time; |
42949 | unsigned long last_ramp_down_time; | 42530 | unsigned long last_ramp_down_time; |
42950 | unsigned long last_ramp_up_time; | 42531 | unsigned long last_ramp_up_time; |
42951 | @@ -890,7 +890,7 @@ struct lpfc_hba { | 42532 | @@ -902,7 +902,7 @@ struct lpfc_hba { |
42952 | 42533 | ||
42953 | struct dentry *debug_slow_ring_trc; | 42534 | struct dentry *debug_slow_ring_trc; |
42954 | struct lpfc_debugfs_trc *slow_ring_trc; | 42535 | struct lpfc_debugfs_trc *slow_ring_trc; |
@@ -42958,7 +42539,7 @@ index 7706c99..3b4fc0c 100644 | |||
42958 | struct dentry *idiag_root; | 42539 | struct dentry *idiag_root; |
42959 | struct dentry *idiag_pci_cfg; | 42540 | struct dentry *idiag_pci_cfg; |
42960 | diff --git a/drivers/scsi/lpfc/lpfc_debugfs.c b/drivers/scsi/lpfc/lpfc_debugfs.c | 42541 | diff --git a/drivers/scsi/lpfc/lpfc_debugfs.c b/drivers/scsi/lpfc/lpfc_debugfs.c |
42961 | index f63f5ff..32549a4 100644 | 42542 | index f525ecb..32549a4 100644 |
42962 | --- a/drivers/scsi/lpfc/lpfc_debugfs.c | 42543 | --- a/drivers/scsi/lpfc/lpfc_debugfs.c |
42963 | +++ b/drivers/scsi/lpfc/lpfc_debugfs.c | 42544 | +++ b/drivers/scsi/lpfc/lpfc_debugfs.c |
42964 | @@ -106,7 +106,7 @@ MODULE_PARM_DESC(lpfc_debugfs_mask_disc_trc, | 42545 | @@ -106,7 +106,7 @@ MODULE_PARM_DESC(lpfc_debugfs_mask_disc_trc, |
@@ -43022,15 +42603,6 @@ index f63f5ff..32549a4 100644 | |||
43022 | dtp->jif = jiffies; | 42603 | dtp->jif = jiffies; |
43023 | #endif | 42604 | #endif |
43024 | return; | 42605 | return; |
43025 | @@ -1178,7 +1178,7 @@ lpfc_debugfs_lseek(struct file *file, loff_t off, int whence) | ||
43026 | pos = file->f_pos + off; | ||
43027 | break; | ||
43028 | case 2: | ||
43029 | - pos = debug->len - off; | ||
43030 | + pos = debug->len + off; | ||
43031 | } | ||
43032 | return (pos < 0 || pos > debug->len) ? -EINVAL : (file->f_pos = pos); | ||
43033 | } | ||
43034 | @@ -4182,7 +4182,7 @@ lpfc_debugfs_initialize(struct lpfc_vport *vport) | 42606 | @@ -4182,7 +4182,7 @@ lpfc_debugfs_initialize(struct lpfc_vport *vport) |
43035 | "slow_ring buffer\n"); | 42607 | "slow_ring buffer\n"); |
43036 | goto debug_failed; | 42608 | goto debug_failed; |
@@ -43050,10 +42622,10 @@ index f63f5ff..32549a4 100644 | |||
43050 | snprintf(name, sizeof(name), "discovery_trace"); | 42622 | snprintf(name, sizeof(name), "discovery_trace"); |
43051 | vport->debug_disc_trc = | 42623 | vport->debug_disc_trc = |
43052 | diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c | 42624 | diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c |
43053 | index 314b4f6..7005d10 100644 | 42625 | index cb465b2..2e7b25f 100644 |
43054 | --- a/drivers/scsi/lpfc/lpfc_init.c | 42626 | --- a/drivers/scsi/lpfc/lpfc_init.c |
43055 | +++ b/drivers/scsi/lpfc/lpfc_init.c | 42627 | +++ b/drivers/scsi/lpfc/lpfc_init.c |
43056 | @@ -10551,8 +10551,10 @@ lpfc_init(void) | 42628 | @@ -10950,8 +10950,10 @@ lpfc_init(void) |
43057 | "misc_register returned with status %d", error); | 42629 | "misc_register returned with status %d", error); |
43058 | 42630 | ||
43059 | if (lpfc_enable_npiv) { | 42631 | if (lpfc_enable_npiv) { |
@@ -43067,10 +42639,10 @@ index 314b4f6..7005d10 100644 | |||
43067 | lpfc_transport_template = | 42639 | lpfc_transport_template = |
43068 | fc_attach_transport(&lpfc_transport_functions); | 42640 | fc_attach_transport(&lpfc_transport_functions); |
43069 | diff --git a/drivers/scsi/lpfc/lpfc_scsi.c b/drivers/scsi/lpfc/lpfc_scsi.c | 42641 | diff --git a/drivers/scsi/lpfc/lpfc_scsi.c b/drivers/scsi/lpfc/lpfc_scsi.c |
43070 | index 98af07c..7625fb5 100644 | 42642 | index 8523b278e..ce1d812 100644 |
43071 | --- a/drivers/scsi/lpfc/lpfc_scsi.c | 42643 | --- a/drivers/scsi/lpfc/lpfc_scsi.c |
43072 | +++ b/drivers/scsi/lpfc/lpfc_scsi.c | 42644 | +++ b/drivers/scsi/lpfc/lpfc_scsi.c |
43073 | @@ -325,7 +325,7 @@ lpfc_rampdown_queue_depth(struct lpfc_hba *phba) | 42645 | @@ -331,7 +331,7 @@ lpfc_rampdown_queue_depth(struct lpfc_hba *phba) |
43074 | uint32_t evt_posted; | 42646 | uint32_t evt_posted; |
43075 | 42647 | ||
43076 | spin_lock_irqsave(&phba->hbalock, flags); | 42648 | spin_lock_irqsave(&phba->hbalock, flags); |
@@ -43079,7 +42651,7 @@ index 98af07c..7625fb5 100644 | |||
43079 | phba->last_rsrc_error_time = jiffies; | 42651 | phba->last_rsrc_error_time = jiffies; |
43080 | 42652 | ||
43081 | if ((phba->last_ramp_down_time + QUEUE_RAMP_DOWN_INTERVAL) > jiffies) { | 42653 | if ((phba->last_ramp_down_time + QUEUE_RAMP_DOWN_INTERVAL) > jiffies) { |
43082 | @@ -366,7 +366,7 @@ lpfc_rampup_queue_depth(struct lpfc_vport *vport, | 42654 | @@ -372,7 +372,7 @@ lpfc_rampup_queue_depth(struct lpfc_vport *vport, |
43083 | unsigned long flags; | 42655 | unsigned long flags; |
43084 | struct lpfc_hba *phba = vport->phba; | 42656 | struct lpfc_hba *phba = vport->phba; |
43085 | uint32_t evt_posted; | 42657 | uint32_t evt_posted; |
@@ -43088,7 +42660,7 @@ index 98af07c..7625fb5 100644 | |||
43088 | 42660 | ||
43089 | if (vport->cfg_lun_queue_depth <= queue_depth) | 42661 | if (vport->cfg_lun_queue_depth <= queue_depth) |
43090 | return; | 42662 | return; |
43091 | @@ -410,8 +410,8 @@ lpfc_ramp_down_queue_handler(struct lpfc_hba *phba) | 42663 | @@ -416,8 +416,8 @@ lpfc_ramp_down_queue_handler(struct lpfc_hba *phba) |
43092 | unsigned long num_rsrc_err, num_cmd_success; | 42664 | unsigned long num_rsrc_err, num_cmd_success; |
43093 | int i; | 42665 | int i; |
43094 | 42666 | ||
@@ -43099,7 +42671,7 @@ index 98af07c..7625fb5 100644 | |||
43099 | 42671 | ||
43100 | /* | 42672 | /* |
43101 | * The error and success command counters are global per | 42673 | * The error and success command counters are global per |
43102 | @@ -439,8 +439,8 @@ lpfc_ramp_down_queue_handler(struct lpfc_hba *phba) | 42674 | @@ -445,8 +445,8 @@ lpfc_ramp_down_queue_handler(struct lpfc_hba *phba) |
43103 | } | 42675 | } |
43104 | } | 42676 | } |
43105 | lpfc_destroy_vport_work_array(phba, vports); | 42677 | lpfc_destroy_vport_work_array(phba, vports); |
@@ -43110,7 +42682,7 @@ index 98af07c..7625fb5 100644 | |||
43110 | } | 42682 | } |
43111 | 42683 | ||
43112 | /** | 42684 | /** |
43113 | @@ -474,8 +474,8 @@ lpfc_ramp_up_queue_handler(struct lpfc_hba *phba) | 42685 | @@ -480,8 +480,8 @@ lpfc_ramp_up_queue_handler(struct lpfc_hba *phba) |
43114 | } | 42686 | } |
43115 | } | 42687 | } |
43116 | lpfc_destroy_vport_work_array(phba, vports); | 42688 | lpfc_destroy_vport_work_array(phba, vports); |
@@ -43121,133 +42693,8 @@ index 98af07c..7625fb5 100644 | |||
43121 | } | 42693 | } |
43122 | 42694 | ||
43123 | /** | 42695 | /** |
43124 | diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c | ||
43125 | index 9d53540..e5a5746 100644 | ||
43126 | --- a/drivers/scsi/megaraid/megaraid_sas_base.c | ||
43127 | +++ b/drivers/scsi/megaraid/megaraid_sas_base.c | ||
43128 | @@ -4852,10 +4852,12 @@ megasas_mgmt_fw_ioctl(struct megasas_instance *instance, | ||
43129 | sense, sense_handle); | ||
43130 | } | ||
43131 | |||
43132 | - for (i = 0; i < ioc->sge_count && kbuff_arr[i]; i++) { | ||
43133 | - dma_free_coherent(&instance->pdev->dev, | ||
43134 | - kern_sge32[i].length, | ||
43135 | - kbuff_arr[i], kern_sge32[i].phys_addr); | ||
43136 | + for (i = 0; i < ioc->sge_count; i++) { | ||
43137 | + if (kbuff_arr[i]) | ||
43138 | + dma_free_coherent(&instance->pdev->dev, | ||
43139 | + kern_sge32[i].length, | ||
43140 | + kbuff_arr[i], | ||
43141 | + kern_sge32[i].phys_addr); | ||
43142 | } | ||
43143 | |||
43144 | megasas_return_cmd(instance, cmd); | ||
43145 | diff --git a/drivers/scsi/mpt3sas/mpt3sas_scsih.c b/drivers/scsi/mpt3sas/mpt3sas_scsih.c | ||
43146 | index dcbf7c8..f8c4b85 100644 | ||
43147 | --- a/drivers/scsi/mpt3sas/mpt3sas_scsih.c | ||
43148 | +++ b/drivers/scsi/mpt3sas/mpt3sas_scsih.c | ||
43149 | @@ -1273,6 +1273,7 @@ _scsih_slave_alloc(struct scsi_device *sdev) | ||
43150 | struct MPT3SAS_DEVICE *sas_device_priv_data; | ||
43151 | struct scsi_target *starget; | ||
43152 | struct _raid_device *raid_device; | ||
43153 | + struct _sas_device *sas_device; | ||
43154 | unsigned long flags; | ||
43155 | |||
43156 | sas_device_priv_data = kzalloc(sizeof(struct scsi_device), GFP_KERNEL); | ||
43157 | @@ -1301,6 +1302,19 @@ _scsih_slave_alloc(struct scsi_device *sdev) | ||
43158 | spin_unlock_irqrestore(&ioc->raid_device_lock, flags); | ||
43159 | } | ||
43160 | |||
43161 | + if (!(sas_target_priv_data->flags & MPT_TARGET_FLAGS_VOLUME)) { | ||
43162 | + spin_lock_irqsave(&ioc->sas_device_lock, flags); | ||
43163 | + sas_device = mpt3sas_scsih_sas_device_find_by_sas_address(ioc, | ||
43164 | + sas_target_priv_data->sas_address); | ||
43165 | + if (sas_device && (sas_device->starget == NULL)) { | ||
43166 | + sdev_printk(KERN_INFO, sdev, | ||
43167 | + "%s : sas_device->starget set to starget @ %d\n", | ||
43168 | + __func__, __LINE__); | ||
43169 | + sas_device->starget = starget; | ||
43170 | + } | ||
43171 | + spin_unlock_irqrestore(&ioc->sas_device_lock, flags); | ||
43172 | + } | ||
43173 | + | ||
43174 | return 0; | ||
43175 | } | ||
43176 | |||
43177 | @@ -6392,7 +6406,7 @@ _scsih_search_responding_sas_devices(struct MPT3SAS_ADAPTER *ioc) | ||
43178 | handle))) { | ||
43179 | ioc_status = le16_to_cpu(mpi_reply.IOCStatus) & | ||
43180 | MPI2_IOCSTATUS_MASK; | ||
43181 | - if (ioc_status == MPI2_IOCSTATUS_CONFIG_INVALID_PAGE) | ||
43182 | + if (ioc_status != MPI2_IOCSTATUS_SUCCESS) | ||
43183 | break; | ||
43184 | handle = le16_to_cpu(sas_device_pg0.DevHandle); | ||
43185 | device_info = le32_to_cpu(sas_device_pg0.DeviceInfo); | ||
43186 | @@ -6494,7 +6508,7 @@ _scsih_search_responding_raid_devices(struct MPT3SAS_ADAPTER *ioc) | ||
43187 | &volume_pg1, MPI2_RAID_VOLUME_PGAD_FORM_GET_NEXT_HANDLE, handle))) { | ||
43188 | ioc_status = le16_to_cpu(mpi_reply.IOCStatus) & | ||
43189 | MPI2_IOCSTATUS_MASK; | ||
43190 | - if (ioc_status == MPI2_IOCSTATUS_CONFIG_INVALID_PAGE) | ||
43191 | + if (ioc_status != MPI2_IOCSTATUS_SUCCESS) | ||
43192 | break; | ||
43193 | handle = le16_to_cpu(volume_pg1.DevHandle); | ||
43194 | |||
43195 | @@ -6518,7 +6532,7 @@ _scsih_search_responding_raid_devices(struct MPT3SAS_ADAPTER *ioc) | ||
43196 | phys_disk_num))) { | ||
43197 | ioc_status = le16_to_cpu(mpi_reply.IOCStatus) & | ||
43198 | MPI2_IOCSTATUS_MASK; | ||
43199 | - if (ioc_status == MPI2_IOCSTATUS_CONFIG_INVALID_PAGE) | ||
43200 | + if (ioc_status != MPI2_IOCSTATUS_SUCCESS) | ||
43201 | break; | ||
43202 | phys_disk_num = pd_pg0.PhysDiskNum; | ||
43203 | handle = le16_to_cpu(pd_pg0.DevHandle); | ||
43204 | @@ -6597,7 +6611,7 @@ _scsih_search_responding_expanders(struct MPT3SAS_ADAPTER *ioc) | ||
43205 | |||
43206 | ioc_status = le16_to_cpu(mpi_reply.IOCStatus) & | ||
43207 | MPI2_IOCSTATUS_MASK; | ||
43208 | - if (ioc_status == MPI2_IOCSTATUS_CONFIG_INVALID_PAGE) | ||
43209 | + if (ioc_status != MPI2_IOCSTATUS_SUCCESS) | ||
43210 | break; | ||
43211 | |||
43212 | handle = le16_to_cpu(expander_pg0.DevHandle); | ||
43213 | @@ -6742,8 +6756,6 @@ _scsih_scan_for_devices_after_reset(struct MPT3SAS_ADAPTER *ioc) | ||
43214 | MPI2_SAS_EXPAND_PGAD_FORM_GET_NEXT_HNDL, handle))) { | ||
43215 | ioc_status = le16_to_cpu(mpi_reply.IOCStatus) & | ||
43216 | MPI2_IOCSTATUS_MASK; | ||
43217 | - if (ioc_status == MPI2_IOCSTATUS_CONFIG_INVALID_PAGE) | ||
43218 | - break; | ||
43219 | if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { | ||
43220 | pr_info(MPT3SAS_FMT "\tbreak from expander scan: " \ | ||
43221 | "ioc_status(0x%04x), loginfo(0x%08x)\n", | ||
43222 | @@ -6787,8 +6799,6 @@ _scsih_scan_for_devices_after_reset(struct MPT3SAS_ADAPTER *ioc) | ||
43223 | phys_disk_num))) { | ||
43224 | ioc_status = le16_to_cpu(mpi_reply.IOCStatus) & | ||
43225 | MPI2_IOCSTATUS_MASK; | ||
43226 | - if (ioc_status == MPI2_IOCSTATUS_CONFIG_INVALID_PAGE) | ||
43227 | - break; | ||
43228 | if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { | ||
43229 | pr_info(MPT3SAS_FMT "\tbreak from phys disk scan: "\ | ||
43230 | "ioc_status(0x%04x), loginfo(0x%08x)\n", | ||
43231 | @@ -6854,8 +6864,6 @@ _scsih_scan_for_devices_after_reset(struct MPT3SAS_ADAPTER *ioc) | ||
43232 | &volume_pg1, MPI2_RAID_VOLUME_PGAD_FORM_GET_NEXT_HANDLE, handle))) { | ||
43233 | ioc_status = le16_to_cpu(mpi_reply.IOCStatus) & | ||
43234 | MPI2_IOCSTATUS_MASK; | ||
43235 | - if (ioc_status == MPI2_IOCSTATUS_CONFIG_INVALID_PAGE) | ||
43236 | - break; | ||
43237 | if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { | ||
43238 | pr_info(MPT3SAS_FMT "\tbreak from volume scan: " \ | ||
43239 | "ioc_status(0x%04x), loginfo(0x%08x)\n", | ||
43240 | @@ -6914,8 +6922,6 @@ _scsih_scan_for_devices_after_reset(struct MPT3SAS_ADAPTER *ioc) | ||
43241 | handle))) { | ||
43242 | ioc_status = le16_to_cpu(mpi_reply.IOCStatus) & | ||
43243 | MPI2_IOCSTATUS_MASK; | ||
43244 | - if (ioc_status == MPI2_IOCSTATUS_CONFIG_INVALID_PAGE) | ||
43245 | - break; | ||
43246 | if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { | ||
43247 | pr_info(MPT3SAS_FMT "\tbreak from end device scan:"\ | ||
43248 | " ioc_status(0x%04x), loginfo(0x%08x)\n", | ||
43249 | diff --git a/drivers/scsi/pmcraid.c b/drivers/scsi/pmcraid.c | 42696 | diff --git a/drivers/scsi/pmcraid.c b/drivers/scsi/pmcraid.c |
43250 | index b46f5e9..c4c4ccb 100644 | 42697 | index 8e1b737..50ff510 100644 |
43251 | --- a/drivers/scsi/pmcraid.c | 42698 | --- a/drivers/scsi/pmcraid.c |
43252 | +++ b/drivers/scsi/pmcraid.c | 42699 | +++ b/drivers/scsi/pmcraid.c |
43253 | @@ -200,8 +200,8 @@ static int pmcraid_slave_alloc(struct scsi_device *scsi_dev) | 42700 | @@ -200,8 +200,8 @@ static int pmcraid_slave_alloc(struct scsi_device *scsi_dev) |
@@ -43282,7 +42729,7 @@ index b46f5e9..c4c4ccb 100644 | |||
43282 | pinstance->num_hrrq; | 42729 | pinstance->num_hrrq; |
43283 | cmd->cmd_done = pmcraid_io_done; | 42730 | cmd->cmd_done = pmcraid_io_done; |
43284 | 42731 | ||
43285 | @@ -3859,7 +3859,7 @@ static long pmcraid_ioctl_passthrough( | 42732 | @@ -3846,7 +3846,7 @@ static long pmcraid_ioctl_passthrough( |
43286 | * block of scsi_cmd which is re-used (e.g. cancel/abort), which uses | 42733 | * block of scsi_cmd which is re-used (e.g. cancel/abort), which uses |
43287 | * hrrq_id assigned here in queuecommand | 42734 | * hrrq_id assigned here in queuecommand |
43288 | */ | 42735 | */ |
@@ -43291,7 +42738,7 @@ index b46f5e9..c4c4ccb 100644 | |||
43291 | pinstance->num_hrrq; | 42738 | pinstance->num_hrrq; |
43292 | 42739 | ||
43293 | if (request_size) { | 42740 | if (request_size) { |
43294 | @@ -4497,7 +4497,7 @@ static void pmcraid_worker_function(struct work_struct *workp) | 42741 | @@ -4483,7 +4483,7 @@ static void pmcraid_worker_function(struct work_struct *workp) |
43295 | 42742 | ||
43296 | pinstance = container_of(workp, struct pmcraid_instance, worker_q); | 42743 | pinstance = container_of(workp, struct pmcraid_instance, worker_q); |
43297 | /* add resources only after host is added into system */ | 42744 | /* add resources only after host is added into system */ |
@@ -43300,7 +42747,7 @@ index b46f5e9..c4c4ccb 100644 | |||
43300 | return; | 42747 | return; |
43301 | 42748 | ||
43302 | fw_version = be16_to_cpu(pinstance->inq_data->fw_version); | 42749 | fw_version = be16_to_cpu(pinstance->inq_data->fw_version); |
43303 | @@ -5324,8 +5324,8 @@ static int pmcraid_init_instance(struct pci_dev *pdev, struct Scsi_Host *host, | 42750 | @@ -5310,8 +5310,8 @@ static int pmcraid_init_instance(struct pci_dev *pdev, struct Scsi_Host *host, |
43304 | init_waitqueue_head(&pinstance->reset_wait_q); | 42751 | init_waitqueue_head(&pinstance->reset_wait_q); |
43305 | 42752 | ||
43306 | atomic_set(&pinstance->outstanding_cmds, 0); | 42753 | atomic_set(&pinstance->outstanding_cmds, 0); |
@@ -43311,7 +42758,7 @@ index b46f5e9..c4c4ccb 100644 | |||
43311 | 42758 | ||
43312 | INIT_LIST_HEAD(&pinstance->free_res_q); | 42759 | INIT_LIST_HEAD(&pinstance->free_res_q); |
43313 | INIT_LIST_HEAD(&pinstance->used_res_q); | 42760 | INIT_LIST_HEAD(&pinstance->used_res_q); |
43314 | @@ -6038,7 +6038,7 @@ static int pmcraid_probe(struct pci_dev *pdev, | 42761 | @@ -6024,7 +6024,7 @@ static int pmcraid_probe(struct pci_dev *pdev, |
43315 | /* Schedule worker thread to handle CCN and take care of adding and | 42762 | /* Schedule worker thread to handle CCN and take care of adding and |
43316 | * removing devices to OS | 42763 | * removing devices to OS |
43317 | */ | 42764 | */ |
@@ -43354,10 +42801,10 @@ index e1d150f..6c6df44 100644 | |||
43354 | /* To indicate add/delete/modify during CCN */ | 42801 | /* To indicate add/delete/modify during CCN */ |
43355 | u8 change_detected; | 42802 | u8 change_detected; |
43356 | diff --git a/drivers/scsi/qla2xxx/qla_attr.c b/drivers/scsi/qla2xxx/qla_attr.c | 42803 | diff --git a/drivers/scsi/qla2xxx/qla_attr.c b/drivers/scsi/qla2xxx/qla_attr.c |
43357 | index b3db9dc..c3b1756 100644 | 42804 | index bf60c63..74d4dce 100644 |
43358 | --- a/drivers/scsi/qla2xxx/qla_attr.c | 42805 | --- a/drivers/scsi/qla2xxx/qla_attr.c |
43359 | +++ b/drivers/scsi/qla2xxx/qla_attr.c | 42806 | +++ b/drivers/scsi/qla2xxx/qla_attr.c |
43360 | @@ -1971,7 +1971,7 @@ qla24xx_vport_disable(struct fc_vport *fc_vport, bool disable) | 42807 | @@ -2001,7 +2001,7 @@ qla24xx_vport_disable(struct fc_vport *fc_vport, bool disable) |
43361 | return 0; | 42808 | return 0; |
43362 | } | 42809 | } |
43363 | 42810 | ||
@@ -43366,7 +42813,7 @@ index b3db9dc..c3b1756 100644 | |||
43366 | 42813 | ||
43367 | .show_host_node_name = 1, | 42814 | .show_host_node_name = 1, |
43368 | .show_host_port_name = 1, | 42815 | .show_host_port_name = 1, |
43369 | @@ -2018,7 +2018,7 @@ struct fc_function_template qla2xxx_transport_functions = { | 42816 | @@ -2048,7 +2048,7 @@ struct fc_function_template qla2xxx_transport_functions = { |
43370 | .bsg_timeout = qla24xx_bsg_timeout, | 42817 | .bsg_timeout = qla24xx_bsg_timeout, |
43371 | }; | 42818 | }; |
43372 | 42819 | ||
@@ -43376,10 +42823,10 @@ index b3db9dc..c3b1756 100644 | |||
43376 | .show_host_node_name = 1, | 42823 | .show_host_node_name = 1, |
43377 | .show_host_port_name = 1, | 42824 | .show_host_port_name = 1, |
43378 | diff --git a/drivers/scsi/qla2xxx/qla_gbl.h b/drivers/scsi/qla2xxx/qla_gbl.h | 42825 | diff --git a/drivers/scsi/qla2xxx/qla_gbl.h b/drivers/scsi/qla2xxx/qla_gbl.h |
43379 | index b310fa9..b9b3944 100644 | 42826 | index 026bfde..90c4018 100644 |
43380 | --- a/drivers/scsi/qla2xxx/qla_gbl.h | 42827 | --- a/drivers/scsi/qla2xxx/qla_gbl.h |
43381 | +++ b/drivers/scsi/qla2xxx/qla_gbl.h | 42828 | +++ b/drivers/scsi/qla2xxx/qla_gbl.h |
43382 | @@ -523,8 +523,8 @@ extern void qla2x00_get_sym_node_name(scsi_qla_host_t *, uint8_t *); | 42829 | @@ -528,8 +528,8 @@ extern void qla2x00_get_sym_node_name(scsi_qla_host_t *, uint8_t *); |
43383 | struct device_attribute; | 42830 | struct device_attribute; |
43384 | extern struct device_attribute *qla2x00_host_attrs[]; | 42831 | extern struct device_attribute *qla2x00_host_attrs[]; |
43385 | struct fc_function_template; | 42832 | struct fc_function_template; |
@@ -43391,10 +42838,10 @@ index b310fa9..b9b3944 100644 | |||
43391 | extern void qla2x00_free_sysfs_attr(scsi_qla_host_t *); | 42838 | extern void qla2x00_free_sysfs_attr(scsi_qla_host_t *); |
43392 | extern void qla2x00_init_host_attr(scsi_qla_host_t *); | 42839 | extern void qla2x00_init_host_attr(scsi_qla_host_t *); |
43393 | diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c | 42840 | diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c |
43394 | index 2c6dd3d..e5ecd82 100644 | 42841 | index ad72c1d..afc9a98 100644 |
43395 | --- a/drivers/scsi/qla2xxx/qla_os.c | 42842 | --- a/drivers/scsi/qla2xxx/qla_os.c |
43396 | +++ b/drivers/scsi/qla2xxx/qla_os.c | 42843 | +++ b/drivers/scsi/qla2xxx/qla_os.c |
43397 | @@ -1554,8 +1554,10 @@ qla2x00_config_dma_addressing(struct qla_hw_data *ha) | 42844 | @@ -1571,8 +1571,10 @@ qla2x00_config_dma_addressing(struct qla_hw_data *ha) |
43398 | !pci_set_consistent_dma_mask(ha->pdev, DMA_BIT_MASK(64))) { | 42845 | !pci_set_consistent_dma_mask(ha->pdev, DMA_BIT_MASK(64))) { |
43399 | /* Ok, a 64bit DMA mask is applicable. */ | 42846 | /* Ok, a 64bit DMA mask is applicable. */ |
43400 | ha->flags.enable_64bit_addressing = 1; | 42847 | ha->flags.enable_64bit_addressing = 1; |
@@ -43408,10 +42855,10 @@ index 2c6dd3d..e5ecd82 100644 | |||
43408 | } | 42855 | } |
43409 | } | 42856 | } |
43410 | diff --git a/drivers/scsi/qla4xxx/ql4_def.h b/drivers/scsi/qla4xxx/ql4_def.h | 42857 | diff --git a/drivers/scsi/qla4xxx/ql4_def.h b/drivers/scsi/qla4xxx/ql4_def.h |
43411 | index 129f5dd..ade53e8 100644 | 42858 | index ddf16a8..80f4dd0 100644 |
43412 | --- a/drivers/scsi/qla4xxx/ql4_def.h | 42859 | --- a/drivers/scsi/qla4xxx/ql4_def.h |
43413 | +++ b/drivers/scsi/qla4xxx/ql4_def.h | 42860 | +++ b/drivers/scsi/qla4xxx/ql4_def.h |
43414 | @@ -275,7 +275,7 @@ struct ddb_entry { | 42861 | @@ -291,7 +291,7 @@ struct ddb_entry { |
43415 | * (4000 only) */ | 42862 | * (4000 only) */ |
43416 | atomic_t relogin_timer; /* Max Time to wait for | 42863 | atomic_t relogin_timer; /* Max Time to wait for |
43417 | * relogin to complete */ | 42864 | * relogin to complete */ |
@@ -43421,10 +42868,10 @@ index 129f5dd..ade53e8 100644 | |||
43421 | uint32_t default_time2wait; /* Default Min time between | 42868 | uint32_t default_time2wait; /* Default Min time between |
43422 | * relogins (+aens) */ | 42869 | * relogins (+aens) */ |
43423 | diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c | 42870 | diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c |
43424 | index 6142729..b6a85c9 100644 | 42871 | index 4d231c1..2892c37 100644 |
43425 | --- a/drivers/scsi/qla4xxx/ql4_os.c | 42872 | --- a/drivers/scsi/qla4xxx/ql4_os.c |
43426 | +++ b/drivers/scsi/qla4xxx/ql4_os.c | 42873 | +++ b/drivers/scsi/qla4xxx/ql4_os.c |
43427 | @@ -2622,12 +2622,12 @@ static void qla4xxx_check_relogin_flash_ddb(struct iscsi_cls_session *cls_sess) | 42874 | @@ -2971,12 +2971,12 @@ static void qla4xxx_check_relogin_flash_ddb(struct iscsi_cls_session *cls_sess) |
43428 | */ | 42875 | */ |
43429 | if (!iscsi_is_session_online(cls_sess)) { | 42876 | if (!iscsi_is_session_online(cls_sess)) { |
43430 | /* Reset retry relogin timer */ | 42877 | /* Reset retry relogin timer */ |
@@ -43439,7 +42886,7 @@ index 6142729..b6a85c9 100644 | |||
43439 | ddb_entry->default_time2wait + 4)); | 42886 | ddb_entry->default_time2wait + 4)); |
43440 | set_bit(DPC_RELOGIN_DEVICE, &ha->dpc_flags); | 42887 | set_bit(DPC_RELOGIN_DEVICE, &ha->dpc_flags); |
43441 | atomic_set(&ddb_entry->retry_relogin_timer, | 42888 | atomic_set(&ddb_entry->retry_relogin_timer, |
43442 | @@ -4742,7 +4742,7 @@ static void qla4xxx_setup_flash_ddb_entry(struct scsi_qla_host *ha, | 42889 | @@ -5081,7 +5081,7 @@ static void qla4xxx_setup_flash_ddb_entry(struct scsi_qla_host *ha, |
43443 | 42890 | ||
43444 | atomic_set(&ddb_entry->retry_relogin_timer, INVALID_ENTRY); | 42891 | atomic_set(&ddb_entry->retry_relogin_timer, INVALID_ENTRY); |
43445 | atomic_set(&ddb_entry->relogin_timer, 0); | 42892 | atomic_set(&ddb_entry->relogin_timer, 0); |
@@ -43449,7 +42896,7 @@ index 6142729..b6a85c9 100644 | |||
43449 | ddb_entry->default_relogin_timeout = | 42896 | ddb_entry->default_relogin_timeout = |
43450 | (def_timeout > LOGIN_TOV) && (def_timeout < LOGIN_TOV * 10) ? | 42897 | (def_timeout > LOGIN_TOV) && (def_timeout < LOGIN_TOV * 10) ? |
43451 | diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c | 42898 | diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c |
43452 | index 2c0d0ec..4e8681a 100644 | 42899 | index 3b1ea34..1583a72 100644 |
43453 | --- a/drivers/scsi/scsi.c | 42900 | --- a/drivers/scsi/scsi.c |
43454 | +++ b/drivers/scsi/scsi.c | 42901 | +++ b/drivers/scsi/scsi.c |
43455 | @@ -661,7 +661,7 @@ int scsi_dispatch_cmd(struct scsi_cmnd *cmd) | 42902 | @@ -661,7 +661,7 @@ int scsi_dispatch_cmd(struct scsi_cmnd *cmd) |
@@ -43462,10 +42909,10 @@ index 2c0d0ec..4e8681a 100644 | |||
43462 | /* check if the device is still usable */ | 42909 | /* check if the device is still usable */ |
43463 | if (unlikely(cmd->device->sdev_state == SDEV_DEL)) { | 42910 | if (unlikely(cmd->device->sdev_state == SDEV_DEL)) { |
43464 | diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c | 42911 | diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c |
43465 | index c31187d..0ead8c3 100644 | 42912 | index 86d5220..f22c51a 100644 |
43466 | --- a/drivers/scsi/scsi_lib.c | 42913 | --- a/drivers/scsi/scsi_lib.c |
43467 | +++ b/drivers/scsi/scsi_lib.c | 42914 | +++ b/drivers/scsi/scsi_lib.c |
43468 | @@ -1459,7 +1459,7 @@ static void scsi_kill_request(struct request *req, struct request_queue *q) | 42915 | @@ -1458,7 +1458,7 @@ static void scsi_kill_request(struct request *req, struct request_queue *q) |
43469 | shost = sdev->host; | 42916 | shost = sdev->host; |
43470 | scsi_init_cmd_errh(cmd); | 42917 | scsi_init_cmd_errh(cmd); |
43471 | cmd->result = DID_NO_CONNECT << 16; | 42918 | cmd->result = DID_NO_CONNECT << 16; |
@@ -43474,7 +42921,7 @@ index c31187d..0ead8c3 100644 | |||
43474 | 42921 | ||
43475 | /* | 42922 | /* |
43476 | * SCSI request completion path will do scsi_device_unbusy(), | 42923 | * SCSI request completion path will do scsi_device_unbusy(), |
43477 | @@ -1485,9 +1485,9 @@ static void scsi_softirq_done(struct request *rq) | 42924 | @@ -1484,9 +1484,9 @@ static void scsi_softirq_done(struct request *rq) |
43478 | 42925 | ||
43479 | INIT_LIST_HEAD(&cmd->eh_entry); | 42926 | INIT_LIST_HEAD(&cmd->eh_entry); |
43480 | 42927 | ||
@@ -43513,10 +42960,10 @@ index 84a1fdf..693b0d6 100644 | |||
43513 | /* | 42960 | /* |
43514 | * TODO: need to fixup sg_tablesize, max_segment_size, | 42961 | * TODO: need to fixup sg_tablesize, max_segment_size, |
43515 | diff --git a/drivers/scsi/scsi_transport_fc.c b/drivers/scsi/scsi_transport_fc.c | 42962 | diff --git a/drivers/scsi/scsi_transport_fc.c b/drivers/scsi/scsi_transport_fc.c |
43516 | index e894ca7..de9d7660 100644 | 42963 | index e106c27..11a380e 100644 |
43517 | --- a/drivers/scsi/scsi_transport_fc.c | 42964 | --- a/drivers/scsi/scsi_transport_fc.c |
43518 | +++ b/drivers/scsi/scsi_transport_fc.c | 42965 | +++ b/drivers/scsi/scsi_transport_fc.c |
43519 | @@ -498,7 +498,7 @@ static DECLARE_TRANSPORT_CLASS(fc_vport_class, | 42966 | @@ -497,7 +497,7 @@ static DECLARE_TRANSPORT_CLASS(fc_vport_class, |
43520 | * Netlink Infrastructure | 42967 | * Netlink Infrastructure |
43521 | */ | 42968 | */ |
43522 | 42969 | ||
@@ -43525,7 +42972,7 @@ index e894ca7..de9d7660 100644 | |||
43525 | 42972 | ||
43526 | /** | 42973 | /** |
43527 | * fc_get_event_number - Obtain the next sequential FC event number | 42974 | * fc_get_event_number - Obtain the next sequential FC event number |
43528 | @@ -511,7 +511,7 @@ static atomic_t fc_event_seq; | 42975 | @@ -510,7 +510,7 @@ static atomic_t fc_event_seq; |
43529 | u32 | 42976 | u32 |
43530 | fc_get_event_number(void) | 42977 | fc_get_event_number(void) |
43531 | { | 42978 | { |
@@ -43534,7 +42981,7 @@ index e894ca7..de9d7660 100644 | |||
43534 | } | 42981 | } |
43535 | EXPORT_SYMBOL(fc_get_event_number); | 42982 | EXPORT_SYMBOL(fc_get_event_number); |
43536 | 42983 | ||
43537 | @@ -659,7 +659,7 @@ static __init int fc_transport_init(void) | 42984 | @@ -654,7 +654,7 @@ static __init int fc_transport_init(void) |
43538 | { | 42985 | { |
43539 | int error; | 42986 | int error; |
43540 | 42987 | ||
@@ -43543,7 +42990,7 @@ index e894ca7..de9d7660 100644 | |||
43543 | 42990 | ||
43544 | error = transport_class_register(&fc_host_class); | 42991 | error = transport_class_register(&fc_host_class); |
43545 | if (error) | 42992 | if (error) |
43546 | @@ -849,7 +849,7 @@ static int fc_str_to_dev_loss(const char *buf, unsigned long *val) | 42993 | @@ -844,7 +844,7 @@ static int fc_str_to_dev_loss(const char *buf, unsigned long *val) |
43547 | char *cp; | 42994 | char *cp; |
43548 | 42995 | ||
43549 | *val = simple_strtoul(buf, &cp, 0); | 42996 | *val = simple_strtoul(buf, &cp, 0); |
@@ -43553,10 +43000,10 @@ index e894ca7..de9d7660 100644 | |||
43553 | /* | 43000 | /* |
43554 | * Check for overflow; dev_loss_tmo is u32 | 43001 | * Check for overflow; dev_loss_tmo is u32 |
43555 | diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c | 43002 | diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c |
43556 | index 0a74b97..fa8d648 100644 | 43003 | index 133926b..903000d 100644 |
43557 | --- a/drivers/scsi/scsi_transport_iscsi.c | 43004 | --- a/drivers/scsi/scsi_transport_iscsi.c |
43558 | +++ b/drivers/scsi/scsi_transport_iscsi.c | 43005 | +++ b/drivers/scsi/scsi_transport_iscsi.c |
43559 | @@ -79,7 +79,7 @@ struct iscsi_internal { | 43006 | @@ -80,7 +80,7 @@ struct iscsi_internal { |
43560 | struct transport_container session_cont; | 43007 | struct transport_container session_cont; |
43561 | }; | 43008 | }; |
43562 | 43009 | ||
@@ -43565,7 +43012,7 @@ index 0a74b97..fa8d648 100644 | |||
43565 | static struct workqueue_struct *iscsi_eh_timer_workq; | 43012 | static struct workqueue_struct *iscsi_eh_timer_workq; |
43566 | 43013 | ||
43567 | static DEFINE_IDA(iscsi_sess_ida); | 43014 | static DEFINE_IDA(iscsi_sess_ida); |
43568 | @@ -1064,7 +1064,7 @@ int iscsi_add_session(struct iscsi_cls_session *session, unsigned int target_id) | 43015 | @@ -1738,7 +1738,7 @@ int iscsi_add_session(struct iscsi_cls_session *session, unsigned int target_id) |
43569 | int err; | 43016 | int err; |
43570 | 43017 | ||
43571 | ihost = shost->shost_data; | 43018 | ihost = shost->shost_data; |
@@ -43574,7 +43021,7 @@ index 0a74b97..fa8d648 100644 | |||
43574 | 43021 | ||
43575 | if (target_id == ISCSI_MAX_TARGET) { | 43022 | if (target_id == ISCSI_MAX_TARGET) { |
43576 | id = ida_simple_get(&iscsi_sess_ida, 0, 0, GFP_KERNEL); | 43023 | id = ida_simple_get(&iscsi_sess_ida, 0, 0, GFP_KERNEL); |
43577 | @@ -2955,7 +2955,7 @@ static __init int iscsi_transport_init(void) | 43024 | @@ -3944,7 +3944,7 @@ static __init int iscsi_transport_init(void) |
43578 | printk(KERN_INFO "Loading iSCSI transport class v%s.\n", | 43025 | printk(KERN_INFO "Loading iSCSI transport class v%s.\n", |
43579 | ISCSI_TRANSPORT_VERSION); | 43026 | ISCSI_TRANSPORT_VERSION); |
43580 | 43027 | ||
@@ -43615,10 +43062,10 @@ index f379c7f..e8fc69c 100644 | |||
43615 | 43062 | ||
43616 | transport_setup_device(&rport->dev); | 43063 | transport_setup_device(&rport->dev); |
43617 | diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c | 43064 | diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c |
43618 | index 0f0370f..7e076c4 100644 | 43065 | index 1b1125e..31a2019 100644 |
43619 | --- a/drivers/scsi/sd.c | 43066 | --- a/drivers/scsi/sd.c |
43620 | +++ b/drivers/scsi/sd.c | 43067 | +++ b/drivers/scsi/sd.c |
43621 | @@ -2929,7 +2929,7 @@ static int sd_probe(struct device *dev) | 43068 | @@ -2936,7 +2936,7 @@ static int sd_probe(struct device *dev) |
43622 | sdkp->disk = gd; | 43069 | sdkp->disk = gd; |
43623 | sdkp->index = index; | 43070 | sdkp->index = index; |
43624 | atomic_set(&sdkp->openers, 0); | 43071 | atomic_set(&sdkp->openers, 0); |
@@ -43628,10 +43075,10 @@ index 0f0370f..7e076c4 100644 | |||
43628 | if (!sdp->request_queue->rq_timeout) { | 43075 | if (!sdp->request_queue->rq_timeout) { |
43629 | if (sdp->type != TYPE_MOD) | 43076 | if (sdp->type != TYPE_MOD) |
43630 | diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c | 43077 | diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c |
43631 | index 9f0c465..47194ee 100644 | 43078 | index df5e961..df6b97f 100644 |
43632 | --- a/drivers/scsi/sg.c | 43079 | --- a/drivers/scsi/sg.c |
43633 | +++ b/drivers/scsi/sg.c | 43080 | +++ b/drivers/scsi/sg.c |
43634 | @@ -1101,7 +1101,7 @@ sg_ioctl(struct file *filp, unsigned int cmd_in, unsigned long arg) | 43081 | @@ -1102,7 +1102,7 @@ sg_ioctl(struct file *filp, unsigned int cmd_in, unsigned long arg) |
43635 | sdp->disk->disk_name, | 43082 | sdp->disk->disk_name, |
43636 | MKDEV(SCSI_GENERIC_MAJOR, sdp->index), | 43083 | MKDEV(SCSI_GENERIC_MAJOR, sdp->index), |
43637 | NULL, | 43084 | NULL, |
@@ -43641,10 +43088,10 @@ index 9f0c465..47194ee 100644 | |||
43641 | return blk_trace_startstop(sdp->device->request_queue, 1); | 43088 | return blk_trace_startstop(sdp->device->request_queue, 1); |
43642 | case BLKTRACESTOP: | 43089 | case BLKTRACESTOP: |
43643 | diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c | 43090 | diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c |
43644 | index 004b10f..7c98d51 100644 | 43091 | index 32b7bb1..2f1c4bd 100644 |
43645 | --- a/drivers/spi/spi.c | 43092 | --- a/drivers/spi/spi.c |
43646 | +++ b/drivers/spi/spi.c | 43093 | +++ b/drivers/spi/spi.c |
43647 | @@ -1620,7 +1620,7 @@ int spi_bus_unlock(struct spi_master *master) | 43094 | @@ -1631,7 +1631,7 @@ int spi_bus_unlock(struct spi_master *master) |
43648 | EXPORT_SYMBOL_GPL(spi_bus_unlock); | 43095 | EXPORT_SYMBOL_GPL(spi_bus_unlock); |
43649 | 43096 | ||
43650 | /* portable code must never pass more than 32 bytes */ | 43097 | /* portable code must never pass more than 32 bytes */ |
@@ -43653,19 +43100,19 @@ index 004b10f..7c98d51 100644 | |||
43653 | 43100 | ||
43654 | static u8 *buf; | 43101 | static u8 *buf; |
43655 | 43102 | ||
43656 | diff --git a/drivers/staging/iio/iio_hwmon.c b/drivers/staging/iio/iio_hwmon.c | 43103 | diff --git a/drivers/staging/media/solo6x10/solo6x10-core.c b/drivers/staging/media/solo6x10/solo6x10-core.c |
43657 | index 93af756..a4bc5bf 100644 | 43104 | index 3675020..e80d92c 100644 |
43658 | --- a/drivers/staging/iio/iio_hwmon.c | 43105 | --- a/drivers/staging/media/solo6x10/solo6x10-core.c |
43659 | +++ b/drivers/staging/iio/iio_hwmon.c | 43106 | +++ b/drivers/staging/media/solo6x10/solo6x10-core.c |
43660 | @@ -67,7 +67,7 @@ static int iio_hwmon_probe(struct platform_device *pdev) | 43107 | @@ -434,7 +434,7 @@ static void solo_device_release(struct device *dev) |
43108 | |||
43109 | static int solo_sysfs_init(struct solo_dev *solo_dev) | ||
43661 | { | 43110 | { |
43662 | struct device *dev = &pdev->dev; | 43111 | - struct bin_attribute *sdram_attr = &solo_dev->sdram_attr; |
43663 | struct iio_hwmon_state *st; | 43112 | + bin_attribute_no_const *sdram_attr = &solo_dev->sdram_attr; |
43664 | - struct sensor_device_attribute *a; | 43113 | struct device *dev = &solo_dev->dev; |
43665 | + sensor_device_attribute_no_const *a; | 43114 | const char *driver; |
43666 | int ret, i; | 43115 | int i; |
43667 | int in_i = 1, temp_i = 1, curr_i = 1; | ||
43668 | enum iio_chan_type type; | ||
43669 | diff --git a/drivers/staging/octeon/ethernet-rx.c b/drivers/staging/octeon/ethernet-rx.c | 43116 | diff --git a/drivers/staging/octeon/ethernet-rx.c b/drivers/staging/octeon/ethernet-rx.c |
43670 | index 34afc16..ffe44dd 100644 | 43117 | index 34afc16..ffe44dd 100644 |
43671 | --- a/drivers/staging/octeon/ethernet-rx.c | 43118 | --- a/drivers/staging/octeon/ethernet-rx.c |
@@ -43745,7 +43192,7 @@ index 1f5088b..0e59820 100644 | |||
43745 | 43192 | ||
43746 | return 0; | 43193 | return 0; |
43747 | diff --git a/drivers/staging/usbip/vhci.h b/drivers/staging/usbip/vhci.h | 43194 | diff --git a/drivers/staging/usbip/vhci.h b/drivers/staging/usbip/vhci.h |
43748 | index 5dddc4d..34fcb2f 100644 | 43195 | index a863a98..d272795 100644 |
43749 | --- a/drivers/staging/usbip/vhci.h | 43196 | --- a/drivers/staging/usbip/vhci.h |
43750 | +++ b/drivers/staging/usbip/vhci.h | 43197 | +++ b/drivers/staging/usbip/vhci.h |
43751 | @@ -83,7 +83,7 @@ struct vhci_hcd { | 43198 | @@ -83,7 +83,7 @@ struct vhci_hcd { |
@@ -43758,7 +43205,7 @@ index 5dddc4d..34fcb2f 100644 | |||
43758 | /* | 43205 | /* |
43759 | * NOTE: | 43206 | * NOTE: |
43760 | diff --git a/drivers/staging/usbip/vhci_hcd.c b/drivers/staging/usbip/vhci_hcd.c | 43207 | diff --git a/drivers/staging/usbip/vhci_hcd.c b/drivers/staging/usbip/vhci_hcd.c |
43761 | index f1ca084..7b5c0c3 100644 | 43208 | index d7974cb..d78076b 100644 |
43762 | --- a/drivers/staging/usbip/vhci_hcd.c | 43209 | --- a/drivers/staging/usbip/vhci_hcd.c |
43763 | +++ b/drivers/staging/usbip/vhci_hcd.c | 43210 | +++ b/drivers/staging/usbip/vhci_hcd.c |
43764 | @@ -441,7 +441,7 @@ static void vhci_tx_urb(struct urb *urb) | 43211 | @@ -441,7 +441,7 @@ static void vhci_tx_urb(struct urb *urb) |
@@ -43789,10 +43236,10 @@ index f1ca084..7b5c0c3 100644 | |||
43789 | 43236 | ||
43790 | hcd->power_budget = 0; /* no limit */ | 43237 | hcd->power_budget = 0; /* no limit */ |
43791 | diff --git a/drivers/staging/usbip/vhci_rx.c b/drivers/staging/usbip/vhci_rx.c | 43238 | diff --git a/drivers/staging/usbip/vhci_rx.c b/drivers/staging/usbip/vhci_rx.c |
43792 | index faf8e60..c46f8ab 100644 | 43239 | index d07fcb5..358e1e1 100644 |
43793 | --- a/drivers/staging/usbip/vhci_rx.c | 43240 | --- a/drivers/staging/usbip/vhci_rx.c |
43794 | +++ b/drivers/staging/usbip/vhci_rx.c | 43241 | +++ b/drivers/staging/usbip/vhci_rx.c |
43795 | @@ -76,7 +76,7 @@ static void vhci_recv_ret_submit(struct vhci_device *vdev, | 43242 | @@ -80,7 +80,7 @@ static void vhci_recv_ret_submit(struct vhci_device *vdev, |
43796 | if (!urb) { | 43243 | if (!urb) { |
43797 | pr_err("cannot find a urb of seqnum %u\n", pdu->base.seqnum); | 43244 | pr_err("cannot find a urb of seqnum %u\n", pdu->base.seqnum); |
43798 | pr_info("max seqnum %d\n", | 43245 | pr_info("max seqnum %d\n", |
@@ -43802,10 +43249,10 @@ index faf8e60..c46f8ab 100644 | |||
43802 | return; | 43249 | return; |
43803 | } | 43250 | } |
43804 | diff --git a/drivers/staging/vt6655/hostap.c b/drivers/staging/vt6655/hostap.c | 43251 | diff --git a/drivers/staging/vt6655/hostap.c b/drivers/staging/vt6655/hostap.c |
43805 | index 5f13890..36a044b 100644 | 43252 | index 8417c2f..ef5ebd6 100644 |
43806 | --- a/drivers/staging/vt6655/hostap.c | 43253 | --- a/drivers/staging/vt6655/hostap.c |
43807 | +++ b/drivers/staging/vt6655/hostap.c | 43254 | +++ b/drivers/staging/vt6655/hostap.c |
43808 | @@ -73,14 +73,13 @@ static int msglevel =MSG_LEVEL_INFO; | 43255 | @@ -69,14 +69,13 @@ static int msglevel = MSG_LEVEL_INFO; |
43809 | * | 43256 | * |
43810 | */ | 43257 | */ |
43811 | 43258 | ||
@@ -43813,17 +43260,17 @@ index 5f13890..36a044b 100644 | |||
43813 | + | 43260 | + |
43814 | static int hostap_enable_hostapd(PSDevice pDevice, int rtnl_locked) | 43261 | static int hostap_enable_hostapd(PSDevice pDevice, int rtnl_locked) |
43815 | { | 43262 | { |
43816 | PSDevice apdev_priv; | 43263 | PSDevice apdev_priv; |
43817 | struct net_device *dev = pDevice->dev; | 43264 | struct net_device *dev = pDevice->dev; |
43818 | int ret; | 43265 | int ret; |
43819 | - const struct net_device_ops apdev_netdev_ops = { | 43266 | - const struct net_device_ops apdev_netdev_ops = { |
43820 | - .ndo_start_xmit = pDevice->tx_80211, | 43267 | - .ndo_start_xmit = pDevice->tx_80211, |
43821 | - }; | 43268 | - }; |
43822 | 43269 | ||
43823 | DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "%s: Enabling hostapd mode\n", dev->name); | 43270 | DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "%s: Enabling hostapd mode\n", dev->name); |
43824 | 43271 | ||
43825 | @@ -92,6 +91,8 @@ static int hostap_enable_hostapd(PSDevice pDevice, int rtnl_locked) | 43272 | @@ -88,6 +87,8 @@ static int hostap_enable_hostapd(PSDevice pDevice, int rtnl_locked) |
43826 | *apdev_priv = *pDevice; | 43273 | *apdev_priv = *pDevice; |
43827 | memcpy(pDevice->apdev->dev_addr, dev->dev_addr, ETH_ALEN); | 43274 | memcpy(pDevice->apdev->dev_addr, dev->dev_addr, ETH_ALEN); |
43828 | 43275 | ||
43829 | + /* only half broken now */ | 43276 | + /* only half broken now */ |
@@ -43832,7 +43279,7 @@ index 5f13890..36a044b 100644 | |||
43832 | 43279 | ||
43833 | pDevice->apdev->type = ARPHRD_IEEE80211; | 43280 | pDevice->apdev->type = ARPHRD_IEEE80211; |
43834 | diff --git a/drivers/staging/vt6656/hostap.c b/drivers/staging/vt6656/hostap.c | 43281 | diff --git a/drivers/staging/vt6656/hostap.c b/drivers/staging/vt6656/hostap.c |
43835 | index a94e66f..31984d0 100644 | 43282 | index c699a30..b90a5fd 100644 |
43836 | --- a/drivers/staging/vt6656/hostap.c | 43283 | --- a/drivers/staging/vt6656/hostap.c |
43837 | +++ b/drivers/staging/vt6656/hostap.c | 43284 | +++ b/drivers/staging/vt6656/hostap.c |
43838 | @@ -60,14 +60,13 @@ static int msglevel =MSG_LEVEL_INFO; | 43285 | @@ -60,14 +60,13 @@ static int msglevel =MSG_LEVEL_INFO; |
@@ -43862,10 +43309,10 @@ index a94e66f..31984d0 100644 | |||
43862 | 43309 | ||
43863 | pDevice->apdev->type = ARPHRD_IEEE80211; | 43310 | pDevice->apdev->type = ARPHRD_IEEE80211; |
43864 | diff --git a/drivers/staging/zcache/tmem.c b/drivers/staging/zcache/tmem.c | 43311 | diff --git a/drivers/staging/zcache/tmem.c b/drivers/staging/zcache/tmem.c |
43865 | index a2b7e03..9ff4bbd 100644 | 43312 | index d7e51e4..d07eaab 100644 |
43866 | --- a/drivers/staging/zcache/tmem.c | 43313 | --- a/drivers/staging/zcache/tmem.c |
43867 | +++ b/drivers/staging/zcache/tmem.c | 43314 | +++ b/drivers/staging/zcache/tmem.c |
43868 | @@ -50,7 +50,7 @@ | 43315 | @@ -51,7 +51,7 @@ |
43869 | * A tmem host implementation must use this function to register callbacks | 43316 | * A tmem host implementation must use this function to register callbacks |
43870 | * for memory allocation. | 43317 | * for memory allocation. |
43871 | */ | 43318 | */ |
@@ -43874,7 +43321,7 @@ index a2b7e03..9ff4bbd 100644 | |||
43874 | 43321 | ||
43875 | static void tmem_objnode_tree_init(void); | 43322 | static void tmem_objnode_tree_init(void); |
43876 | 43323 | ||
43877 | @@ -64,7 +64,7 @@ void tmem_register_hostops(struct tmem_hostops *m) | 43324 | @@ -65,7 +65,7 @@ void tmem_register_hostops(struct tmem_hostops *m) |
43878 | * A tmem host implementation must use this function to register | 43325 | * A tmem host implementation must use this function to register |
43879 | * callbacks for a page-accessible memory (PAM) implementation. | 43326 | * callbacks for a page-accessible memory (PAM) implementation. |
43880 | */ | 43327 | */ |
@@ -43884,7 +43331,7 @@ index a2b7e03..9ff4bbd 100644 | |||
43884 | void tmem_register_pamops(struct tmem_pamops *m) | 43331 | void tmem_register_pamops(struct tmem_pamops *m) |
43885 | { | 43332 | { |
43886 | diff --git a/drivers/staging/zcache/tmem.h b/drivers/staging/zcache/tmem.h | 43333 | diff --git a/drivers/staging/zcache/tmem.h b/drivers/staging/zcache/tmem.h |
43887 | index adbe5a8..d387359 100644 | 43334 | index d128ce2..a43980c 100644 |
43888 | --- a/drivers/staging/zcache/tmem.h | 43335 | --- a/drivers/staging/zcache/tmem.h |
43889 | +++ b/drivers/staging/zcache/tmem.h | 43336 | +++ b/drivers/staging/zcache/tmem.h |
43890 | @@ -226,6 +226,7 @@ struct tmem_pamops { | 43337 | @@ -226,6 +226,7 @@ struct tmem_pamops { |
@@ -43904,10 +43351,10 @@ index adbe5a8..d387359 100644 | |||
43904 | 43351 | ||
43905 | /* core tmem accessor functions */ | 43352 | /* core tmem accessor functions */ |
43906 | diff --git a/drivers/target/target_core_device.c b/drivers/target/target_core_device.c | 43353 | diff --git a/drivers/target/target_core_device.c b/drivers/target/target_core_device.c |
43907 | index 2e4d655..fd72e68 100644 | 43354 | index 4630481..c26782a 100644 |
43908 | --- a/drivers/target/target_core_device.c | 43355 | --- a/drivers/target/target_core_device.c |
43909 | +++ b/drivers/target/target_core_device.c | 43356 | +++ b/drivers/target/target_core_device.c |
43910 | @@ -1414,7 +1414,7 @@ struct se_device *target_alloc_device(struct se_hba *hba, const char *name) | 43357 | @@ -1400,7 +1400,7 @@ struct se_device *target_alloc_device(struct se_hba *hba, const char *name) |
43911 | spin_lock_init(&dev->se_port_lock); | 43358 | spin_lock_init(&dev->se_port_lock); |
43912 | spin_lock_init(&dev->se_tmr_lock); | 43359 | spin_lock_init(&dev->se_tmr_lock); |
43913 | spin_lock_init(&dev->qf_cmd_lock); | 43360 | spin_lock_init(&dev->qf_cmd_lock); |
@@ -43917,10 +43364,10 @@ index 2e4d655..fd72e68 100644 | |||
43917 | spin_lock_init(&dev->t10_wwn.t10_vpd_lock); | 43364 | spin_lock_init(&dev->t10_wwn.t10_vpd_lock); |
43918 | INIT_LIST_HEAD(&dev->t10_pr.registration_list); | 43365 | INIT_LIST_HEAD(&dev->t10_pr.registration_list); |
43919 | diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c | 43366 | diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c |
43920 | index fc9a5a0..1d5975e 100644 | 43367 | index 21e3158..43c6004 100644 |
43921 | --- a/drivers/target/target_core_transport.c | 43368 | --- a/drivers/target/target_core_transport.c |
43922 | +++ b/drivers/target/target_core_transport.c | 43369 | +++ b/drivers/target/target_core_transport.c |
43923 | @@ -1081,7 +1081,7 @@ transport_check_alloc_task_attr(struct se_cmd *cmd) | 43370 | @@ -1080,7 +1080,7 @@ transport_check_alloc_task_attr(struct se_cmd *cmd) |
43924 | * Used to determine when ORDERED commands should go from | 43371 | * Used to determine when ORDERED commands should go from |
43925 | * Dormant to Active status. | 43372 | * Dormant to Active status. |
43926 | */ | 43373 | */ |
@@ -43930,10 +43377,10 @@ index fc9a5a0..1d5975e 100644 | |||
43930 | pr_debug("Allocated se_ordered_id: %u for Task Attr: 0x%02x on %s\n", | 43377 | pr_debug("Allocated se_ordered_id: %u for Task Attr: 0x%02x on %s\n", |
43931 | cmd->se_ordered_id, cmd->sam_task_attr, | 43378 | cmd->se_ordered_id, cmd->sam_task_attr, |
43932 | diff --git a/drivers/tty/cyclades.c b/drivers/tty/cyclades.c | 43379 | diff --git a/drivers/tty/cyclades.c b/drivers/tty/cyclades.c |
43933 | index 345bd0e..61d5375 100644 | 43380 | index 33f83fe..d80f8e1 100644 |
43934 | --- a/drivers/tty/cyclades.c | 43381 | --- a/drivers/tty/cyclades.c |
43935 | +++ b/drivers/tty/cyclades.c | 43382 | +++ b/drivers/tty/cyclades.c |
43936 | @@ -1576,10 +1576,10 @@ static int cy_open(struct tty_struct *tty, struct file *filp) | 43383 | @@ -1570,10 +1570,10 @@ static int cy_open(struct tty_struct *tty, struct file *filp) |
43937 | printk(KERN_DEBUG "cyc:cy_open ttyC%d, count = %d\n", info->line, | 43384 | printk(KERN_DEBUG "cyc:cy_open ttyC%d, count = %d\n", info->line, |
43938 | info->port.count); | 43385 | info->port.count); |
43939 | #endif | 43386 | #endif |
@@ -43946,7 +43393,7 @@ index 345bd0e..61d5375 100644 | |||
43946 | #endif | 43393 | #endif |
43947 | 43394 | ||
43948 | /* | 43395 | /* |
43949 | @@ -3978,7 +3978,7 @@ static int cyclades_proc_show(struct seq_file *m, void *v) | 43396 | @@ -3972,7 +3972,7 @@ static int cyclades_proc_show(struct seq_file *m, void *v) |
43950 | for (j = 0; j < cy_card[i].nports; j++) { | 43397 | for (j = 0; j < cy_card[i].nports; j++) { |
43951 | info = &cy_card[i].ports[j]; | 43398 | info = &cy_card[i].ports[j]; |
43952 | 43399 | ||
@@ -44228,10 +43675,10 @@ index 8fd72ff..34a0bed 100644 | |||
44228 | ipwireless_disassociate_network_ttys(network, | 43675 | ipwireless_disassociate_network_ttys(network, |
44229 | ttyj->channel_idx); | 43676 | ttyj->channel_idx); |
44230 | diff --git a/drivers/tty/moxa.c b/drivers/tty/moxa.c | 43677 | diff --git a/drivers/tty/moxa.c b/drivers/tty/moxa.c |
44231 | index adeac25..787a0a1 100644 | 43678 | index 1deaca4..c8582d4 100644 |
44232 | --- a/drivers/tty/moxa.c | 43679 | --- a/drivers/tty/moxa.c |
44233 | +++ b/drivers/tty/moxa.c | 43680 | +++ b/drivers/tty/moxa.c |
44234 | @@ -1193,7 +1193,7 @@ static int moxa_open(struct tty_struct *tty, struct file *filp) | 43681 | @@ -1189,7 +1189,7 @@ static int moxa_open(struct tty_struct *tty, struct file *filp) |
44235 | } | 43682 | } |
44236 | 43683 | ||
44237 | ch = &brd->ports[port % MAX_PORTS_PER_BOARD]; | 43684 | ch = &brd->ports[port % MAX_PORTS_PER_BOARD]; |
@@ -44241,10 +43688,10 @@ index adeac25..787a0a1 100644 | |||
44241 | tty_port_tty_set(&ch->port, tty); | 43688 | tty_port_tty_set(&ch->port, tty); |
44242 | mutex_lock(&ch->port.mutex); | 43689 | mutex_lock(&ch->port.mutex); |
44243 | diff --git a/drivers/tty/n_gsm.c b/drivers/tty/n_gsm.c | 43690 | diff --git a/drivers/tty/n_gsm.c b/drivers/tty/n_gsm.c |
44244 | index 4a43ef5d7..aa71f27 100644 | 43691 | index 6422390..49003ac8 100644 |
44245 | --- a/drivers/tty/n_gsm.c | 43692 | --- a/drivers/tty/n_gsm.c |
44246 | +++ b/drivers/tty/n_gsm.c | 43693 | +++ b/drivers/tty/n_gsm.c |
44247 | @@ -1636,7 +1636,7 @@ static struct gsm_dlci *gsm_dlci_alloc(struct gsm_mux *gsm, int addr) | 43694 | @@ -1632,7 +1632,7 @@ static struct gsm_dlci *gsm_dlci_alloc(struct gsm_mux *gsm, int addr) |
44248 | spin_lock_init(&dlci->lock); | 43695 | spin_lock_init(&dlci->lock); |
44249 | mutex_init(&dlci->mutex); | 43696 | mutex_init(&dlci->mutex); |
44250 | dlci->fifo = &dlci->_fifo; | 43697 | dlci->fifo = &dlci->_fifo; |
@@ -44253,7 +43700,7 @@ index 4a43ef5d7..aa71f27 100644 | |||
44253 | kfree(dlci); | 43700 | kfree(dlci); |
44254 | return NULL; | 43701 | return NULL; |
44255 | } | 43702 | } |
44256 | @@ -2936,7 +2936,7 @@ static int gsmtty_open(struct tty_struct *tty, struct file *filp) | 43703 | @@ -2932,7 +2932,7 @@ static int gsmtty_open(struct tty_struct *tty, struct file *filp) |
44257 | struct gsm_dlci *dlci = tty->driver_data; | 43704 | struct gsm_dlci *dlci = tty->driver_data; |
44258 | struct tty_port *port = &dlci->port; | 43705 | struct tty_port *port = &dlci->port; |
44259 | 43706 | ||
@@ -44263,10 +43710,10 @@ index 4a43ef5d7..aa71f27 100644 | |||
44263 | dlci_get(dlci->gsm->dlci[0]); | 43710 | dlci_get(dlci->gsm->dlci[0]); |
44264 | mux_get(dlci->gsm); | 43711 | mux_get(dlci->gsm); |
44265 | diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c | 43712 | diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c |
44266 | index 1f8cba6..47b06c2 100644 | 43713 | index 6c7fe90..9241dab 100644 |
44267 | --- a/drivers/tty/n_tty.c | 43714 | --- a/drivers/tty/n_tty.c |
44268 | +++ b/drivers/tty/n_tty.c | 43715 | +++ b/drivers/tty/n_tty.c |
44269 | @@ -2205,6 +2205,7 @@ void n_tty_inherit_ops(struct tty_ldisc_ops *ops) | 43716 | @@ -2203,6 +2203,7 @@ void n_tty_inherit_ops(struct tty_ldisc_ops *ops) |
44270 | { | 43717 | { |
44271 | *ops = tty_ldisc_N_TTY; | 43718 | *ops = tty_ldisc_N_TTY; |
44272 | ops->owner = NULL; | 43719 | ops->owner = NULL; |
@@ -44276,10 +43723,10 @@ index 1f8cba6..47b06c2 100644 | |||
44276 | } | 43723 | } |
44277 | EXPORT_SYMBOL_GPL(n_tty_inherit_ops); | 43724 | EXPORT_SYMBOL_GPL(n_tty_inherit_ops); |
44278 | diff --git a/drivers/tty/pty.c b/drivers/tty/pty.c | 43725 | diff --git a/drivers/tty/pty.c b/drivers/tty/pty.c |
44279 | index 74a5e8b..40c36a7 100644 | 43726 | index abfd990..5ab5da9 100644 |
44280 | --- a/drivers/tty/pty.c | 43727 | --- a/drivers/tty/pty.c |
44281 | +++ b/drivers/tty/pty.c | 43728 | +++ b/drivers/tty/pty.c |
44282 | @@ -797,8 +797,10 @@ static void __init unix98_pty_init(void) | 43729 | @@ -796,8 +796,10 @@ static void __init unix98_pty_init(void) |
44283 | panic("Couldn't register Unix98 pts driver"); | 43730 | panic("Couldn't register Unix98 pts driver"); |
44284 | 43731 | ||
44285 | /* Now create the /dev/ptmx special device */ | 43732 | /* Now create the /dev/ptmx special device */ |
@@ -44292,10 +43739,10 @@ index 74a5e8b..40c36a7 100644 | |||
44292 | cdev_init(&ptmx_cdev, &ptmx_fops); | 43739 | cdev_init(&ptmx_cdev, &ptmx_fops); |
44293 | if (cdev_add(&ptmx_cdev, MKDEV(TTYAUX_MAJOR, 2), 1) || | 43740 | if (cdev_add(&ptmx_cdev, MKDEV(TTYAUX_MAJOR, 2), 1) || |
44294 | diff --git a/drivers/tty/rocket.c b/drivers/tty/rocket.c | 43741 | diff --git a/drivers/tty/rocket.c b/drivers/tty/rocket.c |
44295 | index 1d27003..959f452 100644 | 43742 | index 354564e..fe50d9a 100644 |
44296 | --- a/drivers/tty/rocket.c | 43743 | --- a/drivers/tty/rocket.c |
44297 | +++ b/drivers/tty/rocket.c | 43744 | +++ b/drivers/tty/rocket.c |
44298 | @@ -923,7 +923,7 @@ static int rp_open(struct tty_struct *tty, struct file *filp) | 43745 | @@ -914,7 +914,7 @@ static int rp_open(struct tty_struct *tty, struct file *filp) |
44299 | tty->driver_data = info; | 43746 | tty->driver_data = info; |
44300 | tty_port_tty_set(port, tty); | 43747 | tty_port_tty_set(port, tty); |
44301 | 43748 | ||
@@ -44304,7 +43751,7 @@ index 1d27003..959f452 100644 | |||
44304 | atomic_inc(&rp_num_ports_open); | 43751 | atomic_inc(&rp_num_ports_open); |
44305 | 43752 | ||
44306 | #ifdef ROCKET_DEBUG_OPEN | 43753 | #ifdef ROCKET_DEBUG_OPEN |
44307 | @@ -932,7 +932,7 @@ static int rp_open(struct tty_struct *tty, struct file *filp) | 43754 | @@ -923,7 +923,7 @@ static int rp_open(struct tty_struct *tty, struct file *filp) |
44308 | #endif | 43755 | #endif |
44309 | } | 43756 | } |
44310 | #ifdef ROCKET_DEBUG_OPEN | 43757 | #ifdef ROCKET_DEBUG_OPEN |
@@ -44313,7 +43760,7 @@ index 1d27003..959f452 100644 | |||
44313 | #endif | 43760 | #endif |
44314 | 43761 | ||
44315 | /* | 43762 | /* |
44316 | @@ -1527,7 +1527,7 @@ static void rp_hangup(struct tty_struct *tty) | 43763 | @@ -1515,7 +1515,7 @@ static void rp_hangup(struct tty_struct *tty) |
44317 | spin_unlock_irqrestore(&info->port.lock, flags); | 43764 | spin_unlock_irqrestore(&info->port.lock, flags); |
44318 | return; | 43765 | return; |
44319 | } | 43766 | } |
@@ -44429,10 +43876,10 @@ index 1002054..dd644a8 100644 | |||
44429 | /* This is only available if kgdboc is a built in for early debugging */ | 43876 | /* This is only available if kgdboc is a built in for early debugging */ |
44430 | static int __init kgdboc_early_init(char *opt) | 43877 | static int __init kgdboc_early_init(char *opt) |
44431 | diff --git a/drivers/tty/serial/samsung.c b/drivers/tty/serial/samsung.c | 43878 | diff --git a/drivers/tty/serial/samsung.c b/drivers/tty/serial/samsung.c |
44432 | index 2769a38..f3dbe48 100644 | 43879 | index 0c8a9fa..234a95f 100644 |
44433 | --- a/drivers/tty/serial/samsung.c | 43880 | --- a/drivers/tty/serial/samsung.c |
44434 | +++ b/drivers/tty/serial/samsung.c | 43881 | +++ b/drivers/tty/serial/samsung.c |
44435 | @@ -451,11 +451,16 @@ static void s3c24xx_serial_shutdown(struct uart_port *port) | 43882 | @@ -453,11 +453,16 @@ static void s3c24xx_serial_shutdown(struct uart_port *port) |
44436 | } | 43883 | } |
44437 | } | 43884 | } |
44438 | 43885 | ||
@@ -44449,7 +43896,7 @@ index 2769a38..f3dbe48 100644 | |||
44449 | dbg("s3c24xx_serial_startup: port=%p (%08lx,%p)\n", | 43896 | dbg("s3c24xx_serial_startup: port=%p (%08lx,%p)\n", |
44450 | port->mapbase, port->membase); | 43897 | port->mapbase, port->membase); |
44451 | 43898 | ||
44452 | @@ -1120,10 +1125,6 @@ static int s3c24xx_serial_init_port(struct s3c24xx_uart_port *ourport, | 43899 | @@ -1124,10 +1129,6 @@ static int s3c24xx_serial_init_port(struct s3c24xx_uart_port *ourport, |
44453 | /* setup info for port */ | 43900 | /* setup info for port */ |
44454 | port->dev = &platdev->dev; | 43901 | port->dev = &platdev->dev; |
44455 | 43902 | ||
@@ -44461,7 +43908,7 @@ index 2769a38..f3dbe48 100644 | |||
44461 | 43908 | ||
44462 | if (cfg->uart_flags & UPF_CONS_FLOW) { | 43909 | if (cfg->uart_flags & UPF_CONS_FLOW) { |
44463 | diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c | 43910 | diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c |
44464 | index 8fbb6d2..822a9e6 100644 | 43911 | index f87dbfd..42ad4b1 100644 |
44465 | --- a/drivers/tty/serial/serial_core.c | 43912 | --- a/drivers/tty/serial/serial_core.c |
44466 | +++ b/drivers/tty/serial/serial_core.c | 43913 | +++ b/drivers/tty/serial/serial_core.c |
44467 | @@ -1454,7 +1454,7 @@ static void uart_hangup(struct tty_struct *tty) | 43914 | @@ -1454,7 +1454,7 @@ static void uart_hangup(struct tty_struct *tty) |
@@ -44501,10 +43948,10 @@ index 8fbb6d2..822a9e6 100644 | |||
44501 | goto end; | 43948 | goto end; |
44502 | } | 43949 | } |
44503 | diff --git a/drivers/tty/synclink.c b/drivers/tty/synclink.c | 43950 | diff --git a/drivers/tty/synclink.c b/drivers/tty/synclink.c |
44504 | index 8983276..72a4090 100644 | 43951 | index 8eaf1ab..85c030d 100644 |
44505 | --- a/drivers/tty/synclink.c | 43952 | --- a/drivers/tty/synclink.c |
44506 | +++ b/drivers/tty/synclink.c | 43953 | +++ b/drivers/tty/synclink.c |
44507 | @@ -3093,7 +3093,7 @@ static void mgsl_close(struct tty_struct *tty, struct file * filp) | 43954 | @@ -3090,7 +3090,7 @@ static void mgsl_close(struct tty_struct *tty, struct file * filp) |
44508 | 43955 | ||
44509 | if (debug_level >= DEBUG_LEVEL_INFO) | 43956 | if (debug_level >= DEBUG_LEVEL_INFO) |
44510 | printk("%s(%d):mgsl_close(%s) entry, count=%d\n", | 43957 | printk("%s(%d):mgsl_close(%s) entry, count=%d\n", |
@@ -44513,7 +43960,7 @@ index 8983276..72a4090 100644 | |||
44513 | 43960 | ||
44514 | if (tty_port_close_start(&info->port, tty, filp) == 0) | 43961 | if (tty_port_close_start(&info->port, tty, filp) == 0) |
44515 | goto cleanup; | 43962 | goto cleanup; |
44516 | @@ -3111,7 +3111,7 @@ static void mgsl_close(struct tty_struct *tty, struct file * filp) | 43963 | @@ -3108,7 +3108,7 @@ static void mgsl_close(struct tty_struct *tty, struct file * filp) |
44517 | cleanup: | 43964 | cleanup: |
44518 | if (debug_level >= DEBUG_LEVEL_INFO) | 43965 | if (debug_level >= DEBUG_LEVEL_INFO) |
44519 | printk("%s(%d):mgsl_close(%s) exit, count=%d\n", __FILE__,__LINE__, | 43966 | printk("%s(%d):mgsl_close(%s) exit, count=%d\n", __FILE__,__LINE__, |
@@ -44522,7 +43969,7 @@ index 8983276..72a4090 100644 | |||
44522 | 43969 | ||
44523 | } /* end of mgsl_close() */ | 43970 | } /* end of mgsl_close() */ |
44524 | 43971 | ||
44525 | @@ -3210,8 +3210,8 @@ static void mgsl_hangup(struct tty_struct *tty) | 43972 | @@ -3207,8 +3207,8 @@ static void mgsl_hangup(struct tty_struct *tty) |
44526 | 43973 | ||
44527 | mgsl_flush_buffer(tty); | 43974 | mgsl_flush_buffer(tty); |
44528 | shutdown(info); | 43975 | shutdown(info); |
@@ -44533,7 +43980,7 @@ index 8983276..72a4090 100644 | |||
44533 | info->port.flags &= ~ASYNC_NORMAL_ACTIVE; | 43980 | info->port.flags &= ~ASYNC_NORMAL_ACTIVE; |
44534 | info->port.tty = NULL; | 43981 | info->port.tty = NULL; |
44535 | 43982 | ||
44536 | @@ -3300,12 +3300,12 @@ static int block_til_ready(struct tty_struct *tty, struct file * filp, | 43983 | @@ -3297,12 +3297,12 @@ static int block_til_ready(struct tty_struct *tty, struct file * filp, |
44537 | 43984 | ||
44538 | if (debug_level >= DEBUG_LEVEL_INFO) | 43985 | if (debug_level >= DEBUG_LEVEL_INFO) |
44539 | printk("%s(%d):block_til_ready before block on %s count=%d\n", | 43986 | printk("%s(%d):block_til_ready before block on %s count=%d\n", |
@@ -44548,7 +43995,7 @@ index 8983276..72a4090 100644 | |||
44548 | } | 43995 | } |
44549 | spin_unlock_irqrestore(&info->irq_spinlock, flags); | 43996 | spin_unlock_irqrestore(&info->irq_spinlock, flags); |
44550 | port->blocked_open++; | 43997 | port->blocked_open++; |
44551 | @@ -3334,7 +3334,7 @@ static int block_til_ready(struct tty_struct *tty, struct file * filp, | 43998 | @@ -3331,7 +3331,7 @@ static int block_til_ready(struct tty_struct *tty, struct file * filp, |
44552 | 43999 | ||
44553 | if (debug_level >= DEBUG_LEVEL_INFO) | 44000 | if (debug_level >= DEBUG_LEVEL_INFO) |
44554 | printk("%s(%d):block_til_ready blocking on %s count=%d\n", | 44001 | printk("%s(%d):block_til_ready blocking on %s count=%d\n", |
@@ -44557,7 +44004,7 @@ index 8983276..72a4090 100644 | |||
44557 | 44004 | ||
44558 | tty_unlock(tty); | 44005 | tty_unlock(tty); |
44559 | schedule(); | 44006 | schedule(); |
44560 | @@ -3346,12 +3346,12 @@ static int block_til_ready(struct tty_struct *tty, struct file * filp, | 44007 | @@ -3343,12 +3343,12 @@ static int block_til_ready(struct tty_struct *tty, struct file * filp, |
44561 | 44008 | ||
44562 | /* FIXME: Racy on hangup during close wait */ | 44009 | /* FIXME: Racy on hangup during close wait */ |
44563 | if (extra_count) | 44010 | if (extra_count) |
@@ -44572,7 +44019,7 @@ index 8983276..72a4090 100644 | |||
44572 | 44019 | ||
44573 | if (!retval) | 44020 | if (!retval) |
44574 | port->flags |= ASYNC_NORMAL_ACTIVE; | 44021 | port->flags |= ASYNC_NORMAL_ACTIVE; |
44575 | @@ -3403,7 +3403,7 @@ static int mgsl_open(struct tty_struct *tty, struct file * filp) | 44022 | @@ -3400,7 +3400,7 @@ static int mgsl_open(struct tty_struct *tty, struct file * filp) |
44576 | 44023 | ||
44577 | if (debug_level >= DEBUG_LEVEL_INFO) | 44024 | if (debug_level >= DEBUG_LEVEL_INFO) |
44578 | printk("%s(%d):mgsl_open(%s), old ref count = %d\n", | 44025 | printk("%s(%d):mgsl_open(%s), old ref count = %d\n", |
@@ -44581,7 +44028,7 @@ index 8983276..72a4090 100644 | |||
44581 | 44028 | ||
44582 | /* If port is closing, signal caller to try again */ | 44029 | /* If port is closing, signal caller to try again */ |
44583 | if (tty_hung_up_p(filp) || info->port.flags & ASYNC_CLOSING){ | 44030 | if (tty_hung_up_p(filp) || info->port.flags & ASYNC_CLOSING){ |
44584 | @@ -3422,10 +3422,10 @@ static int mgsl_open(struct tty_struct *tty, struct file * filp) | 44031 | @@ -3419,10 +3419,10 @@ static int mgsl_open(struct tty_struct *tty, struct file * filp) |
44585 | spin_unlock_irqrestore(&info->netlock, flags); | 44032 | spin_unlock_irqrestore(&info->netlock, flags); |
44586 | goto cleanup; | 44033 | goto cleanup; |
44587 | } | 44034 | } |
@@ -44594,7 +44041,7 @@ index 8983276..72a4090 100644 | |||
44594 | /* 1st open on this device, init hardware */ | 44041 | /* 1st open on this device, init hardware */ |
44595 | retval = startup(info); | 44042 | retval = startup(info); |
44596 | if (retval < 0) | 44043 | if (retval < 0) |
44597 | @@ -3449,8 +3449,8 @@ cleanup: | 44044 | @@ -3446,8 +3446,8 @@ cleanup: |
44598 | if (retval) { | 44045 | if (retval) { |
44599 | if (tty->count == 1) | 44046 | if (tty->count == 1) |
44600 | info->port.tty = NULL; /* tty layer will release tty struct */ | 44047 | info->port.tty = NULL; /* tty layer will release tty struct */ |
@@ -44605,7 +44052,7 @@ index 8983276..72a4090 100644 | |||
44605 | } | 44052 | } |
44606 | 44053 | ||
44607 | return retval; | 44054 | return retval; |
44608 | @@ -7668,7 +7668,7 @@ static int hdlcdev_attach(struct net_device *dev, unsigned short encoding, | 44055 | @@ -7665,7 +7665,7 @@ static int hdlcdev_attach(struct net_device *dev, unsigned short encoding, |
44609 | unsigned short new_crctype; | 44056 | unsigned short new_crctype; |
44610 | 44057 | ||
44611 | /* return error if TTY interface open */ | 44058 | /* return error if TTY interface open */ |
@@ -44614,7 +44061,7 @@ index 8983276..72a4090 100644 | |||
44614 | return -EBUSY; | 44061 | return -EBUSY; |
44615 | 44062 | ||
44616 | switch (encoding) | 44063 | switch (encoding) |
44617 | @@ -7763,7 +7763,7 @@ static int hdlcdev_open(struct net_device *dev) | 44064 | @@ -7760,7 +7760,7 @@ static int hdlcdev_open(struct net_device *dev) |
44618 | 44065 | ||
44619 | /* arbitrate between network and tty opens */ | 44066 | /* arbitrate between network and tty opens */ |
44620 | spin_lock_irqsave(&info->netlock, flags); | 44067 | spin_lock_irqsave(&info->netlock, flags); |
@@ -44623,7 +44070,7 @@ index 8983276..72a4090 100644 | |||
44623 | printk(KERN_WARNING "%s: hdlc_open returning busy\n", dev->name); | 44070 | printk(KERN_WARNING "%s: hdlc_open returning busy\n", dev->name); |
44624 | spin_unlock_irqrestore(&info->netlock, flags); | 44071 | spin_unlock_irqrestore(&info->netlock, flags); |
44625 | return -EBUSY; | 44072 | return -EBUSY; |
44626 | @@ -7849,7 +7849,7 @@ static int hdlcdev_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) | 44073 | @@ -7846,7 +7846,7 @@ static int hdlcdev_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) |
44627 | printk("%s:hdlcdev_ioctl(%s)\n",__FILE__,dev->name); | 44074 | printk("%s:hdlcdev_ioctl(%s)\n",__FILE__,dev->name); |
44628 | 44075 | ||
44629 | /* return error if TTY interface open */ | 44076 | /* return error if TTY interface open */ |
@@ -44633,7 +44080,7 @@ index 8983276..72a4090 100644 | |||
44633 | 44080 | ||
44634 | if (cmd != SIOCWANDEV) | 44081 | if (cmd != SIOCWANDEV) |
44635 | diff --git a/drivers/tty/synclink_gt.c b/drivers/tty/synclink_gt.c | 44082 | diff --git a/drivers/tty/synclink_gt.c b/drivers/tty/synclink_gt.c |
44636 | index aa9eece..d8baaec 100644 | 44083 | index 1abf946..1ee34fc 100644 |
44637 | --- a/drivers/tty/synclink_gt.c | 44084 | --- a/drivers/tty/synclink_gt.c |
44638 | +++ b/drivers/tty/synclink_gt.c | 44085 | +++ b/drivers/tty/synclink_gt.c |
44639 | @@ -670,7 +670,7 @@ static int open(struct tty_struct *tty, struct file *filp) | 44086 | @@ -670,7 +670,7 @@ static int open(struct tty_struct *tty, struct file *filp) |
@@ -44751,7 +44198,7 @@ index aa9eece..d8baaec 100644 | |||
44751 | 44198 | ||
44752 | if (!retval) | 44199 | if (!retval) |
44753 | diff --git a/drivers/tty/synclinkmp.c b/drivers/tty/synclinkmp.c | 44200 | diff --git a/drivers/tty/synclinkmp.c b/drivers/tty/synclinkmp.c |
44754 | index 6d5780c..aa4d8cd 100644 | 44201 | index ff17138..e38b41e 100644 |
44755 | --- a/drivers/tty/synclinkmp.c | 44202 | --- a/drivers/tty/synclinkmp.c |
44756 | +++ b/drivers/tty/synclinkmp.c | 44203 | +++ b/drivers/tty/synclinkmp.c |
44757 | @@ -750,7 +750,7 @@ static int open(struct tty_struct *tty, struct file *filp) | 44204 | @@ -750,7 +750,7 @@ static int open(struct tty_struct *tty, struct file *filp) |
@@ -44890,10 +44337,10 @@ index 6d5780c..aa4d8cd 100644 | |||
44890 | if (!retval) | 44337 | if (!retval) |
44891 | port->flags |= ASYNC_NORMAL_ACTIVE; | 44338 | port->flags |= ASYNC_NORMAL_ACTIVE; |
44892 | diff --git a/drivers/tty/sysrq.c b/drivers/tty/sysrq.c | 44339 | diff --git a/drivers/tty/sysrq.c b/drivers/tty/sysrq.c |
44893 | index 3687f0c..6b9b808 100644 | 44340 | index b51c154..17d55d1 100644 |
44894 | --- a/drivers/tty/sysrq.c | 44341 | --- a/drivers/tty/sysrq.c |
44895 | +++ b/drivers/tty/sysrq.c | 44342 | +++ b/drivers/tty/sysrq.c |
44896 | @@ -995,7 +995,7 @@ EXPORT_SYMBOL(unregister_sysrq_key); | 44343 | @@ -1022,7 +1022,7 @@ EXPORT_SYMBOL(unregister_sysrq_key); |
44897 | static ssize_t write_sysrq_trigger(struct file *file, const char __user *buf, | 44344 | static ssize_t write_sysrq_trigger(struct file *file, const char __user *buf, |
44898 | size_t count, loff_t *ppos) | 44345 | size_t count, loff_t *ppos) |
44899 | { | 44346 | { |
@@ -44903,10 +44350,10 @@ index 3687f0c..6b9b808 100644 | |||
44903 | 44350 | ||
44904 | if (get_user(c, buf)) | 44351 | if (get_user(c, buf)) |
44905 | diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c | 44352 | diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c |
44906 | index a9cd0b9..47b9336 100644 | 44353 | index 4476682..d77e748 100644 |
44907 | --- a/drivers/tty/tty_io.c | 44354 | --- a/drivers/tty/tty_io.c |
44908 | +++ b/drivers/tty/tty_io.c | 44355 | +++ b/drivers/tty/tty_io.c |
44909 | @@ -3398,7 +3398,7 @@ EXPORT_SYMBOL_GPL(get_current_tty); | 44356 | @@ -3466,7 +3466,7 @@ EXPORT_SYMBOL_GPL(get_current_tty); |
44910 | 44357 | ||
44911 | void tty_default_fops(struct file_operations *fops) | 44358 | void tty_default_fops(struct file_operations *fops) |
44912 | { | 44359 | { |
@@ -44916,19 +44363,10 @@ index a9cd0b9..47b9336 100644 | |||
44916 | 44363 | ||
44917 | /* | 44364 | /* |
44918 | diff --git a/drivers/tty/tty_ldisc.c b/drivers/tty/tty_ldisc.c | 44365 | diff --git a/drivers/tty/tty_ldisc.c b/drivers/tty/tty_ldisc.c |
44919 | index d794087..e4f49e5 100644 | 44366 | index 1afe192..73d2c20 100644 |
44920 | --- a/drivers/tty/tty_ldisc.c | 44367 | --- a/drivers/tty/tty_ldisc.c |
44921 | +++ b/drivers/tty/tty_ldisc.c | 44368 | +++ b/drivers/tty/tty_ldisc.c |
44922 | @@ -56,7 +56,7 @@ static void put_ldisc(struct tty_ldisc *ld) | 44369 | @@ -66,7 +66,7 @@ int tty_register_ldisc(int disc, struct tty_ldisc_ops *new_ldisc) |
44923 | if (atomic_dec_and_test(&ld->users)) { | ||
44924 | struct tty_ldisc_ops *ldo = ld->ops; | ||
44925 | |||
44926 | - ldo->refcount--; | ||
44927 | + atomic_dec(&ldo->refcount); | ||
44928 | module_put(ldo->owner); | ||
44929 | raw_spin_unlock_irqrestore(&tty_ldisc_lock, flags); | ||
44930 | |||
44931 | @@ -93,7 +93,7 @@ int tty_register_ldisc(int disc, struct tty_ldisc_ops *new_ldisc) | ||
44932 | raw_spin_lock_irqsave(&tty_ldisc_lock, flags); | 44370 | raw_spin_lock_irqsave(&tty_ldisc_lock, flags); |
44933 | tty_ldiscs[disc] = new_ldisc; | 44371 | tty_ldiscs[disc] = new_ldisc; |
44934 | new_ldisc->num = disc; | 44372 | new_ldisc->num = disc; |
@@ -44937,7 +44375,7 @@ index d794087..e4f49e5 100644 | |||
44937 | raw_spin_unlock_irqrestore(&tty_ldisc_lock, flags); | 44375 | raw_spin_unlock_irqrestore(&tty_ldisc_lock, flags); |
44938 | 44376 | ||
44939 | return ret; | 44377 | return ret; |
44940 | @@ -121,7 +121,7 @@ int tty_unregister_ldisc(int disc) | 44378 | @@ -94,7 +94,7 @@ int tty_unregister_ldisc(int disc) |
44941 | return -EINVAL; | 44379 | return -EINVAL; |
44942 | 44380 | ||
44943 | raw_spin_lock_irqsave(&tty_ldisc_lock, flags); | 44381 | raw_spin_lock_irqsave(&tty_ldisc_lock, flags); |
@@ -44946,7 +44384,7 @@ index d794087..e4f49e5 100644 | |||
44946 | ret = -EBUSY; | 44384 | ret = -EBUSY; |
44947 | else | 44385 | else |
44948 | tty_ldiscs[disc] = NULL; | 44386 | tty_ldiscs[disc] = NULL; |
44949 | @@ -142,7 +142,7 @@ static struct tty_ldisc_ops *get_ldops(int disc) | 44387 | @@ -115,7 +115,7 @@ static struct tty_ldisc_ops *get_ldops(int disc) |
44950 | if (ldops) { | 44388 | if (ldops) { |
44951 | ret = ERR_PTR(-EAGAIN); | 44389 | ret = ERR_PTR(-EAGAIN); |
44952 | if (try_module_get(ldops->owner)) { | 44390 | if (try_module_get(ldops->owner)) { |
@@ -44955,7 +44393,7 @@ index d794087..e4f49e5 100644 | |||
44955 | ret = ldops; | 44393 | ret = ldops; |
44956 | } | 44394 | } |
44957 | } | 44395 | } |
44958 | @@ -155,7 +155,7 @@ static void put_ldops(struct tty_ldisc_ops *ldops) | 44396 | @@ -128,7 +128,7 @@ static void put_ldops(struct tty_ldisc_ops *ldops) |
44959 | unsigned long flags; | 44397 | unsigned long flags; |
44960 | 44398 | ||
44961 | raw_spin_lock_irqsave(&tty_ldisc_lock, flags); | 44399 | raw_spin_lock_irqsave(&tty_ldisc_lock, flags); |
@@ -44964,20 +44402,29 @@ index d794087..e4f49e5 100644 | |||
44964 | module_put(ldops->owner); | 44402 | module_put(ldops->owner); |
44965 | raw_spin_unlock_irqrestore(&tty_ldisc_lock, flags); | 44403 | raw_spin_unlock_irqrestore(&tty_ldisc_lock, flags); |
44966 | } | 44404 | } |
44405 | @@ -196,7 +196,7 @@ static inline void tty_ldisc_put(struct tty_ldisc *ld) | ||
44406 | /* unreleased reader reference(s) will cause this WARN */ | ||
44407 | WARN_ON(!atomic_dec_and_test(&ld->users)); | ||
44408 | |||
44409 | - ld->ops->refcount--; | ||
44410 | + atomic_dec(&ld->ops->refcount); | ||
44411 | module_put(ld->ops->owner); | ||
44412 | kfree(ld); | ||
44413 | raw_spin_unlock_irqrestore(&tty_ldisc_lock, flags); | ||
44967 | diff --git a/drivers/tty/tty_port.c b/drivers/tty/tty_port.c | 44414 | diff --git a/drivers/tty/tty_port.c b/drivers/tty/tty_port.c |
44968 | index b7ff59d..7c6105e 100644 | 44415 | index 121aeb9..0d2c4b9 100644 |
44969 | --- a/drivers/tty/tty_port.c | 44416 | --- a/drivers/tty/tty_port.c |
44970 | +++ b/drivers/tty/tty_port.c | 44417 | +++ b/drivers/tty/tty_port.c |
44971 | @@ -218,7 +218,7 @@ void tty_port_hangup(struct tty_port *port) | 44418 | @@ -232,7 +232,7 @@ void tty_port_hangup(struct tty_port *port) |
44972 | unsigned long flags; | 44419 | unsigned long flags; |
44973 | 44420 | ||
44974 | spin_lock_irqsave(&port->lock, flags); | 44421 | spin_lock_irqsave(&port->lock, flags); |
44975 | - port->count = 0; | 44422 | - port->count = 0; |
44976 | + atomic_set(&port->count, 0); | 44423 | + atomic_set(&port->count, 0); |
44977 | port->flags &= ~ASYNC_NORMAL_ACTIVE; | 44424 | port->flags &= ~ASYNC_NORMAL_ACTIVE; |
44978 | if (port->tty) { | 44425 | tty = port->tty; |
44979 | set_bit(TTY_IO_ERROR, &port->tty->flags); | 44426 | if (tty) |
44980 | @@ -344,7 +344,7 @@ int tty_port_block_til_ready(struct tty_port *port, | 44427 | @@ -391,7 +391,7 @@ int tty_port_block_til_ready(struct tty_port *port, |
44981 | /* The port lock protects the port counts */ | 44428 | /* The port lock protects the port counts */ |
44982 | spin_lock_irqsave(&port->lock, flags); | 44429 | spin_lock_irqsave(&port->lock, flags); |
44983 | if (!tty_hung_up_p(filp)) | 44430 | if (!tty_hung_up_p(filp)) |
@@ -44986,7 +44433,7 @@ index b7ff59d..7c6105e 100644 | |||
44986 | port->blocked_open++; | 44433 | port->blocked_open++; |
44987 | spin_unlock_irqrestore(&port->lock, flags); | 44434 | spin_unlock_irqrestore(&port->lock, flags); |
44988 | 44435 | ||
44989 | @@ -386,7 +386,7 @@ int tty_port_block_til_ready(struct tty_port *port, | 44436 | @@ -433,7 +433,7 @@ int tty_port_block_til_ready(struct tty_port *port, |
44990 | we must not mess that up further */ | 44437 | we must not mess that up further */ |
44991 | spin_lock_irqsave(&port->lock, flags); | 44438 | spin_lock_irqsave(&port->lock, flags); |
44992 | if (!tty_hung_up_p(filp)) | 44439 | if (!tty_hung_up_p(filp)) |
@@ -44995,7 +44442,7 @@ index b7ff59d..7c6105e 100644 | |||
44995 | port->blocked_open--; | 44442 | port->blocked_open--; |
44996 | if (retval == 0) | 44443 | if (retval == 0) |
44997 | port->flags |= ASYNC_NORMAL_ACTIVE; | 44444 | port->flags |= ASYNC_NORMAL_ACTIVE; |
44998 | @@ -406,19 +406,19 @@ int tty_port_close_start(struct tty_port *port, | 44445 | @@ -467,19 +467,19 @@ int tty_port_close_start(struct tty_port *port, |
44999 | return 0; | 44446 | return 0; |
45000 | } | 44447 | } |
45001 | 44448 | ||
@@ -45022,7 +44469,7 @@ index b7ff59d..7c6105e 100644 | |||
45022 | spin_unlock_irqrestore(&port->lock, flags); | 44469 | spin_unlock_irqrestore(&port->lock, flags); |
45023 | if (port->ops->drop) | 44470 | if (port->ops->drop) |
45024 | port->ops->drop(port); | 44471 | port->ops->drop(port); |
45025 | @@ -516,7 +516,7 @@ int tty_port_open(struct tty_port *port, struct tty_struct *tty, | 44472 | @@ -565,7 +565,7 @@ int tty_port_open(struct tty_port *port, struct tty_struct *tty, |
45026 | { | 44473 | { |
45027 | spin_lock_irq(&port->lock); | 44474 | spin_lock_irq(&port->lock); |
45028 | if (!tty_hung_up_p(filp)) | 44475 | if (!tty_hung_up_p(filp)) |
@@ -45201,7 +44648,7 @@ index 8a7eb77..c00402f 100644 | |||
45201 | pos += tmp; | 44648 | pos += tmp; |
45202 | 44649 | ||
45203 | diff --git a/drivers/usb/atm/usbatm.c b/drivers/usb/atm/usbatm.c | 44650 | diff --git a/drivers/usb/atm/usbatm.c b/drivers/usb/atm/usbatm.c |
45204 | index 35f10bf..6a38a0b 100644 | 44651 | index d3527dd..26effa2 100644 |
45205 | --- a/drivers/usb/atm/usbatm.c | 44652 | --- a/drivers/usb/atm/usbatm.c |
45206 | +++ b/drivers/usb/atm/usbatm.c | 44653 | +++ b/drivers/usb/atm/usbatm.c |
45207 | @@ -333,7 +333,7 @@ static void usbatm_extract_one_cell(struct usbatm_data *instance, unsigned char | 44654 | @@ -333,7 +333,7 @@ static void usbatm_extract_one_cell(struct usbatm_data *instance, unsigned char |
@@ -45315,7 +44762,7 @@ index 2a3bbdf..91d72cf 100644 | |||
45315 | file->f_version = event_count; | 44762 | file->f_version = event_count; |
45316 | return POLLIN | POLLRDNORM; | 44763 | return POLLIN | POLLRDNORM; |
45317 | diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c | 44764 | diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c |
45318 | index f9ec44c..eb5779f 100644 | 44765 | index d53547d..6a22d02 100644 |
45319 | --- a/drivers/usb/core/hcd.c | 44766 | --- a/drivers/usb/core/hcd.c |
45320 | +++ b/drivers/usb/core/hcd.c | 44767 | +++ b/drivers/usb/core/hcd.c |
45321 | @@ -1526,7 +1526,7 @@ int usb_hcd_submit_urb (struct urb *urb, gfp_t mem_flags) | 44768 | @@ -1526,7 +1526,7 @@ int usb_hcd_submit_urb (struct urb *urb, gfp_t mem_flags) |
@@ -45350,7 +44797,7 @@ index 444d30e..f15c850 100644 | |||
45350 | __u16 size, int timeout) | 44797 | __u16 size, int timeout) |
45351 | { | 44798 | { |
45352 | diff --git a/drivers/usb/core/sysfs.c b/drivers/usb/core/sysfs.c | 44799 | diff --git a/drivers/usb/core/sysfs.c b/drivers/usb/core/sysfs.c |
45353 | index 3f81a3d..a3aa993 100644 | 44800 | index aa38db4..0a08682 100644 |
45354 | --- a/drivers/usb/core/sysfs.c | 44801 | --- a/drivers/usb/core/sysfs.c |
45355 | +++ b/drivers/usb/core/sysfs.c | 44802 | +++ b/drivers/usb/core/sysfs.c |
45356 | @@ -239,7 +239,7 @@ show_urbnum(struct device *dev, struct device_attribute *attr, char *buf) | 44803 | @@ -239,7 +239,7 @@ show_urbnum(struct device *dev, struct device_attribute *attr, char *buf) |
@@ -45363,10 +44810,10 @@ index 3f81a3d..a3aa993 100644 | |||
45363 | static DEVICE_ATTR(urbnum, S_IRUGO, show_urbnum, NULL); | 44810 | static DEVICE_ATTR(urbnum, S_IRUGO, show_urbnum, NULL); |
45364 | 44811 | ||
45365 | diff --git a/drivers/usb/core/usb.c b/drivers/usb/core/usb.c | 44812 | diff --git a/drivers/usb/core/usb.c b/drivers/usb/core/usb.c |
45366 | index f81b925..78d22ec 100644 | 44813 | index b10da72..43aa0b2 100644 |
45367 | --- a/drivers/usb/core/usb.c | 44814 | --- a/drivers/usb/core/usb.c |
45368 | +++ b/drivers/usb/core/usb.c | 44815 | +++ b/drivers/usb/core/usb.c |
45369 | @@ -388,7 +388,7 @@ struct usb_device *usb_alloc_dev(struct usb_device *parent, | 44816 | @@ -389,7 +389,7 @@ struct usb_device *usb_alloc_dev(struct usb_device *parent, |
45370 | set_dev_node(&dev->dev, dev_to_node(bus->controller)); | 44817 | set_dev_node(&dev->dev, dev_to_node(bus->controller)); |
45371 | dev->state = USB_STATE_ATTACHED; | 44818 | dev->state = USB_STATE_ATTACHED; |
45372 | dev->lpm_disable_count = 1; | 44819 | dev->lpm_disable_count = 1; |
@@ -45532,132 +44979,6 @@ index 5f3bcd3..bfca43f 100644 | |||
45532 | usb_autopm_put_interface(serial->interface); | 44979 | usb_autopm_put_interface(serial->interface); |
45533 | error_get_interface: | 44980 | error_get_interface: |
45534 | usb_serial_put(serial); | 44981 | usb_serial_put(serial); |
45535 | diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c | ||
45536 | index 4747d1c..3850e92 100644 | ||
45537 | --- a/drivers/usb/serial/cp210x.c | ||
45538 | +++ b/drivers/usb/serial/cp210x.c | ||
45539 | @@ -53,6 +53,7 @@ static const struct usb_device_id id_table[] = { | ||
45540 | { USB_DEVICE(0x0489, 0xE000) }, /* Pirelli Broadband S.p.A, DP-L10 SIP/GSM Mobile */ | ||
45541 | { USB_DEVICE(0x0489, 0xE003) }, /* Pirelli Broadband S.p.A, DP-L10 SIP/GSM Mobile */ | ||
45542 | { USB_DEVICE(0x0745, 0x1000) }, /* CipherLab USB CCD Barcode Scanner 1000 */ | ||
45543 | + { USB_DEVICE(0x0846, 0x1100) }, /* NetGear Managed Switch M4100 series, M5300 series, M7100 series */ | ||
45544 | { USB_DEVICE(0x08e6, 0x5501) }, /* Gemalto Prox-PU/CU contactless smartcard reader */ | ||
45545 | { USB_DEVICE(0x08FD, 0x000A) }, /* Digianswer A/S , ZigBee/802.15.4 MAC Device */ | ||
45546 | { USB_DEVICE(0x0BED, 0x1100) }, /* MEI (TM) Cashflow-SC Bill/Voucher Acceptor */ | ||
45547 | @@ -118,6 +119,8 @@ static const struct usb_device_id id_table[] = { | ||
45548 | { USB_DEVICE(0x10C4, 0x85F8) }, /* Virtenio Preon32 */ | ||
45549 | { USB_DEVICE(0x10C4, 0x8664) }, /* AC-Services CAN-IF */ | ||
45550 | { USB_DEVICE(0x10C4, 0x8665) }, /* AC-Services OBD-IF */ | ||
45551 | + { USB_DEVICE(0x10C4, 0x88A4) }, /* MMB Networks ZigBee USB Device */ | ||
45552 | + { USB_DEVICE(0x10C4, 0x88A5) }, /* Planet Innovation Ingeni ZigBee USB Device */ | ||
45553 | { USB_DEVICE(0x10C4, 0xEA60) }, /* Silicon Labs factory default */ | ||
45554 | { USB_DEVICE(0x10C4, 0xEA61) }, /* Silicon Labs factory default */ | ||
45555 | { USB_DEVICE(0x10C4, 0xEA70) }, /* Silicon Labs factory default */ | ||
45556 | @@ -148,6 +151,7 @@ static const struct usb_device_id id_table[] = { | ||
45557 | { USB_DEVICE(0x17F4, 0xAAAA) }, /* Wavesense Jazz blood glucose meter */ | ||
45558 | { USB_DEVICE(0x1843, 0x0200) }, /* Vaisala USB Instrument Cable */ | ||
45559 | { USB_DEVICE(0x18EF, 0xE00F) }, /* ELV USB-I2C-Interface */ | ||
45560 | + { USB_DEVICE(0x1ADB, 0x0001) }, /* Schweitzer Engineering C662 Cable */ | ||
45561 | { USB_DEVICE(0x1BE3, 0x07A6) }, /* WAGO 750-923 USB Service Cable */ | ||
45562 | { USB_DEVICE(0x1E29, 0x0102) }, /* Festo CPX-USB */ | ||
45563 | { USB_DEVICE(0x1E29, 0x0501) }, /* Festo CMSP */ | ||
45564 | diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c | ||
45565 | index 9162db2..b7cabbf 100644 | ||
45566 | --- a/drivers/usb/serial/option.c | ||
45567 | +++ b/drivers/usb/serial/option.c | ||
45568 | @@ -343,17 +343,12 @@ static void option_instat_callback(struct urb *urb); | ||
45569 | #define OLIVETTI_VENDOR_ID 0x0b3c | ||
45570 | #define OLIVETTI_PRODUCT_OLICARD100 0xc000 | ||
45571 | #define OLIVETTI_PRODUCT_OLICARD145 0xc003 | ||
45572 | +#define OLIVETTI_PRODUCT_OLICARD200 0xc005 | ||
45573 | |||
45574 | /* Celot products */ | ||
45575 | #define CELOT_VENDOR_ID 0x211f | ||
45576 | #define CELOT_PRODUCT_CT680M 0x6801 | ||
45577 | |||
45578 | -/* ONDA Communication vendor id */ | ||
45579 | -#define ONDA_VENDOR_ID 0x1ee8 | ||
45580 | - | ||
45581 | -/* ONDA MT825UP HSDPA 14.2 modem */ | ||
45582 | -#define ONDA_MT825UP 0x000b | ||
45583 | - | ||
45584 | /* Samsung products */ | ||
45585 | #define SAMSUNG_VENDOR_ID 0x04e8 | ||
45586 | #define SAMSUNG_PRODUCT_GT_B3730 0x6889 | ||
45587 | @@ -446,7 +441,8 @@ static void option_instat_callback(struct urb *urb); | ||
45588 | |||
45589 | /* Hyundai Petatel Inc. products */ | ||
45590 | #define PETATEL_VENDOR_ID 0x1ff4 | ||
45591 | -#define PETATEL_PRODUCT_NP10T 0x600e | ||
45592 | +#define PETATEL_PRODUCT_NP10T_600A 0x600a | ||
45593 | +#define PETATEL_PRODUCT_NP10T_600E 0x600e | ||
45594 | |||
45595 | /* TP-LINK Incorporated products */ | ||
45596 | #define TPLINK_VENDOR_ID 0x2357 | ||
45597 | @@ -786,6 +782,7 @@ static const struct usb_device_id option_ids[] = { | ||
45598 | { USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_PRODUCT_KPC650) }, | ||
45599 | { USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_PRODUCT_KPC680) }, | ||
45600 | { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */ | ||
45601 | + { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x0023)}, /* ONYX 3G device */ | ||
45602 | { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9000)}, /* SIMCom SIM5218 */ | ||
45603 | { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6280) }, /* BP3-USB & BP3-EXT HSDPA */ | ||
45604 | { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6008) }, | ||
45605 | @@ -821,7 +818,8 @@ static const struct usb_device_id option_ids[] = { | ||
45606 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0017, 0xff, 0xff, 0xff), | ||
45607 | .driver_info = (kernel_ulong_t)&net_intf3_blacklist }, | ||
45608 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0018, 0xff, 0xff, 0xff) }, | ||
45609 | - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0019, 0xff, 0xff, 0xff) }, | ||
45610 | + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0019, 0xff, 0xff, 0xff), | ||
45611 | + .driver_info = (kernel_ulong_t)&net_intf3_blacklist }, | ||
45612 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0020, 0xff, 0xff, 0xff) }, | ||
45613 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0021, 0xff, 0xff, 0xff), | ||
45614 | .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, | ||
45615 | @@ -1260,8 +1258,8 @@ static const struct usb_device_id option_ids[] = { | ||
45616 | |||
45617 | { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD100) }, | ||
45618 | { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD145) }, | ||
45619 | + { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD200) }, | ||
45620 | { USB_DEVICE(CELOT_VENDOR_ID, CELOT_PRODUCT_CT680M) }, /* CT-650 CDMA 450 1xEVDO modem */ | ||
45621 | - { USB_DEVICE(ONDA_VENDOR_ID, ONDA_MT825UP) }, /* ONDA MT825UP modem */ | ||
45622 | { USB_DEVICE_AND_INTERFACE_INFO(SAMSUNG_VENDOR_ID, SAMSUNG_PRODUCT_GT_B3730, USB_CLASS_CDC_DATA, 0x00, 0x00) }, /* Samsung GT-B3730 LTE USB modem.*/ | ||
45623 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEM600) }, | ||
45624 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEM610) }, | ||
45625 | @@ -1333,9 +1331,12 @@ static const struct usb_device_id option_ids[] = { | ||
45626 | { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_DC_4COM2, 0xff, 0x02, 0x01) }, | ||
45627 | { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_DC_4COM2, 0xff, 0x00, 0x00) }, | ||
45628 | { USB_DEVICE(CELLIENT_VENDOR_ID, CELLIENT_PRODUCT_MEN200) }, | ||
45629 | - { USB_DEVICE(PETATEL_VENDOR_ID, PETATEL_PRODUCT_NP10T) }, | ||
45630 | + { USB_DEVICE(PETATEL_VENDOR_ID, PETATEL_PRODUCT_NP10T_600A) }, | ||
45631 | + { USB_DEVICE(PETATEL_VENDOR_ID, PETATEL_PRODUCT_NP10T_600E) }, | ||
45632 | { USB_DEVICE(TPLINK_VENDOR_ID, TPLINK_PRODUCT_MA180), | ||
45633 | .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, | ||
45634 | + { USB_DEVICE(TPLINK_VENDOR_ID, 0x9000), /* TP-Link MA260 */ | ||
45635 | + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, | ||
45636 | { USB_DEVICE(CHANGHONG_VENDOR_ID, CHANGHONG_PRODUCT_CH690) }, | ||
45637 | { USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x7d01, 0xff, 0x02, 0x01) }, /* D-Link DWM-156 (variant) */ | ||
45638 | { USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x7d01, 0xff, 0x00, 0x00) }, /* D-Link DWM-156 (variant) */ | ||
45639 | @@ -1343,6 +1344,8 @@ static const struct usb_device_id option_ids[] = { | ||
45640 | { USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x7d02, 0xff, 0x00, 0x00) }, | ||
45641 | { USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x7d03, 0xff, 0x02, 0x01) }, | ||
45642 | { USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x7d03, 0xff, 0x00, 0x00) }, | ||
45643 | + { USB_DEVICE_AND_INTERFACE_INFO(0x07d1, 0x3e01, 0xff, 0xff, 0xff) }, /* D-Link DWM-152/C1 */ | ||
45644 | + { USB_DEVICE_AND_INTERFACE_INFO(0x07d1, 0x3e02, 0xff, 0xff, 0xff) }, /* D-Link DWM-156/C1 */ | ||
45645 | { } /* Terminating entry */ | ||
45646 | }; | ||
45647 | MODULE_DEVICE_TABLE(usb, option_ids); | ||
45648 | diff --git a/drivers/usb/storage/realtek_cr.c b/drivers/usb/storage/realtek_cr.c | ||
45649 | index 6c3586a..a94e621 100644 | ||
45650 | --- a/drivers/usb/storage/realtek_cr.c | ||
45651 | +++ b/drivers/usb/storage/realtek_cr.c | ||
45652 | @@ -429,7 +429,7 @@ static int rts51x_read_status(struct us_data *us, | ||
45653 | |||
45654 | buf = kmalloc(len, GFP_NOIO); | ||
45655 | if (buf == NULL) | ||
45656 | - return USB_STOR_TRANSPORT_ERROR; | ||
45657 | + return -ENOMEM; | ||
45658 | |||
45659 | US_DEBUGP("%s, lun = %d\n", __func__, lun); | ||
45660 | |||
45661 | diff --git a/drivers/usb/storage/usb.h b/drivers/usb/storage/usb.h | 44982 | diff --git a/drivers/usb/storage/usb.h b/drivers/usb/storage/usb.h |
45662 | index 75f70f0..d467e1a 100644 | 44983 | index 75f70f0..d467e1a 100644 |
45663 | --- a/drivers/usb/storage/usb.h | 44984 | --- a/drivers/usb/storage/usb.h |
@@ -45706,55 +45027,18 @@ index 6ef94bc..1b41265 100644 | |||
45706 | } | 45027 | } |
45707 | 45028 | ||
45708 | /* | 45029 | /* |
45709 | diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c | 45030 | diff --git a/drivers/vhost/vringh.c b/drivers/vhost/vringh.c |
45710 | index dfff647..3a19054 100644 | 45031 | index 5174eba..86e764a 100644 |
45711 | --- a/drivers/vhost/net.c | 45032 | --- a/drivers/vhost/vringh.c |
45712 | +++ b/drivers/vhost/net.c | 45033 | +++ b/drivers/vhost/vringh.c |
45713 | @@ -857,7 +857,7 @@ static long vhost_net_set_backend(struct vhost_net *n, unsigned index, int fd) | 45034 | @@ -800,7 +800,7 @@ static inline int getu16_kern(u16 *val, const u16 *p) |
45714 | mutex_unlock(&vq->mutex); | 45035 | |
45715 | 45036 | static inline int putu16_kern(u16 *p, u16 val) | |
45716 | if (oldubufs) { | 45037 | { |
45717 | - vhost_ubuf_put_and_wait(oldubufs); | 45038 | - ACCESS_ONCE(*p) = val; |
45718 | + vhost_ubuf_put_and_wait_and_free(oldubufs); | 45039 | + ACCESS_ONCE_RW(*p) = val; |
45719 | mutex_lock(&vq->mutex); | 45040 | return 0; |
45720 | vhost_zerocopy_signal_used(n, vq); | 45041 | } |
45721 | mutex_unlock(&vq->mutex); | ||
45722 | @@ -875,7 +875,7 @@ err_used: | ||
45723 | rcu_assign_pointer(vq->private_data, oldsock); | ||
45724 | vhost_net_enable_vq(n, vq); | ||
45725 | if (ubufs) | ||
45726 | - vhost_ubuf_put_and_wait(ubufs); | ||
45727 | + vhost_ubuf_put_and_wait_and_free(ubufs); | ||
45728 | err_ubufs: | ||
45729 | fput(sock->file); | ||
45730 | err_vq: | ||
45731 | diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c | ||
45732 | index 9759249..2e2524c 100644 | ||
45733 | --- a/drivers/vhost/vhost.c | ||
45734 | +++ b/drivers/vhost/vhost.c | ||
45735 | @@ -1581,5 +1581,11 @@ void vhost_ubuf_put_and_wait(struct vhost_ubuf_ref *ubufs) | ||
45736 | { | ||
45737 | kref_put(&ubufs->kref, vhost_zerocopy_done_signal); | ||
45738 | wait_event(ubufs->wait, !atomic_read(&ubufs->kref.refcount)); | ||
45739 | +} | ||
45740 | + | ||
45741 | +void vhost_ubuf_put_and_wait_and_free(struct vhost_ubuf_ref *ubufs) | ||
45742 | +{ | ||
45743 | + vhost_ubuf_put_and_wait(ubufs); | ||
45744 | kfree(ubufs); | ||
45745 | } | ||
45746 | + | ||
45747 | diff --git a/drivers/vhost/vhost.h b/drivers/vhost/vhost.h | ||
45748 | index 17261e2..70cbe6f 100644 | ||
45749 | --- a/drivers/vhost/vhost.h | ||
45750 | +++ b/drivers/vhost/vhost.h | ||
45751 | @@ -63,6 +63,7 @@ struct vhost_ubuf_ref { | ||
45752 | struct vhost_ubuf_ref *vhost_ubuf_alloc(struct vhost_virtqueue *, bool zcopy); | ||
45753 | void vhost_ubuf_put(struct vhost_ubuf_ref *); | ||
45754 | void vhost_ubuf_put_and_wait(struct vhost_ubuf_ref *); | ||
45755 | +void vhost_ubuf_put_and_wait_and_free(struct vhost_ubuf_ref *); | ||
45756 | |||
45757 | struct ubuf_info; | ||
45758 | 45042 | ||
45759 | diff --git a/drivers/video/aty/aty128fb.c b/drivers/video/aty/aty128fb.c | 45043 | diff --git a/drivers/video/aty/aty128fb.c b/drivers/video/aty/aty128fb.c |
45760 | index 8c55011..eed4ae1a 100644 | 45044 | index 8c55011..eed4ae1a 100644 |
@@ -45813,8 +45097,21 @@ index 95ec042..e6affdd 100644 | |||
45813 | 45097 | ||
45814 | return 0; | 45098 | return 0; |
45815 | } | 45099 | } |
45100 | diff --git a/drivers/video/backlight/backlight.c b/drivers/video/backlight/backlight.c | ||
45101 | index c74e7aa..e3c2790 100644 | ||
45102 | --- a/drivers/video/backlight/backlight.c | ||
45103 | +++ b/drivers/video/backlight/backlight.c | ||
45104 | @@ -304,7 +304,7 @@ struct backlight_device *backlight_device_register(const char *name, | ||
45105 | new_bd->dev.class = backlight_class; | ||
45106 | new_bd->dev.parent = parent; | ||
45107 | new_bd->dev.release = bl_device_release; | ||
45108 | - dev_set_name(&new_bd->dev, name); | ||
45109 | + dev_set_name(&new_bd->dev, "%s", name); | ||
45110 | dev_set_drvdata(&new_bd->dev, devdata); | ||
45111 | |||
45112 | /* Set default properties */ | ||
45816 | diff --git a/drivers/video/backlight/kb3886_bl.c b/drivers/video/backlight/kb3886_bl.c | 45113 | diff --git a/drivers/video/backlight/kb3886_bl.c b/drivers/video/backlight/kb3886_bl.c |
45817 | index 6c5ed6b..b727c88 100644 | 45114 | index bca6ccc..252107e 100644 |
45818 | --- a/drivers/video/backlight/kb3886_bl.c | 45115 | --- a/drivers/video/backlight/kb3886_bl.c |
45819 | +++ b/drivers/video/backlight/kb3886_bl.c | 45116 | +++ b/drivers/video/backlight/kb3886_bl.c |
45820 | @@ -78,7 +78,7 @@ static struct kb3886bl_machinfo *bl_machinfo; | 45117 | @@ -78,7 +78,7 @@ static struct kb3886bl_machinfo *bl_machinfo; |
@@ -45826,6 +45123,19 @@ index 6c5ed6b..b727c88 100644 | |||
45826 | { | 45123 | { |
45827 | .ident = "Sahara Touch-iT", | 45124 | .ident = "Sahara Touch-iT", |
45828 | .matches = { | 45125 | .matches = { |
45126 | diff --git a/drivers/video/backlight/lcd.c b/drivers/video/backlight/lcd.c | ||
45127 | index 34fb6bd..3649fd9 100644 | ||
45128 | --- a/drivers/video/backlight/lcd.c | ||
45129 | +++ b/drivers/video/backlight/lcd.c | ||
45130 | @@ -219,7 +219,7 @@ struct lcd_device *lcd_device_register(const char *name, struct device *parent, | ||
45131 | new_ld->dev.class = lcd_class; | ||
45132 | new_ld->dev.parent = parent; | ||
45133 | new_ld->dev.release = lcd_device_release; | ||
45134 | - dev_set_name(&new_ld->dev, name); | ||
45135 | + dev_set_name(&new_ld->dev, "%s", name); | ||
45136 | dev_set_drvdata(&new_ld->dev, devdata); | ||
45137 | |||
45138 | rc = device_register(&new_ld->dev); | ||
45829 | diff --git a/drivers/video/fb_defio.c b/drivers/video/fb_defio.c | 45139 | diff --git a/drivers/video/fb_defio.c b/drivers/video/fb_defio.c |
45830 | index 900aa4e..6d49418 100644 | 45140 | index 900aa4e..6d49418 100644 |
45831 | --- a/drivers/video/fb_defio.c | 45141 | --- a/drivers/video/fb_defio.c |
@@ -45865,7 +45175,7 @@ index 5c3960d..15cf8fc 100644 | |||
45865 | goto out1; | 45175 | goto out1; |
45866 | } | 45176 | } |
45867 | diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c | 45177 | diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c |
45868 | index 86291dc..7cc5962 100644 | 45178 | index 098bfc6..796841d 100644 |
45869 | --- a/drivers/video/fbmem.c | 45179 | --- a/drivers/video/fbmem.c |
45870 | +++ b/drivers/video/fbmem.c | 45180 | +++ b/drivers/video/fbmem.c |
45871 | @@ -428,7 +428,7 @@ static void fb_do_show_logo(struct fb_info *info, struct fb_image *image, | 45181 | @@ -428,7 +428,7 @@ static void fb_do_show_logo(struct fb_info *info, struct fb_image *image, |
@@ -48729,7 +48039,7 @@ index 0d6f2cd..6285b97 100644 | |||
48729 | ret_code = device_register(&new_dev->dev); | 48039 | ret_code = device_register(&new_dev->dev); |
48730 | if (ret_code) { | 48040 | if (ret_code) { |
48731 | diff --git a/drivers/video/s1d13xxxfb.c b/drivers/video/s1d13xxxfb.c | 48041 | diff --git a/drivers/video/s1d13xxxfb.c b/drivers/video/s1d13xxxfb.c |
48732 | index 76d9053..dec2bfd 100644 | 48042 | index 05c2dc3..ea1f391 100644 |
48733 | --- a/drivers/video/s1d13xxxfb.c | 48043 | --- a/drivers/video/s1d13xxxfb.c |
48734 | +++ b/drivers/video/s1d13xxxfb.c | 48044 | +++ b/drivers/video/s1d13xxxfb.c |
48735 | @@ -881,8 +881,10 @@ static int s1d13xxxfb_probe(struct platform_device *pdev) | 48045 | @@ -881,8 +881,10 @@ static int s1d13xxxfb_probe(struct platform_device *pdev) |
@@ -48746,10 +48056,10 @@ index 76d9053..dec2bfd 100644 | |||
48746 | FBINFO_HWACCEL_FILLRECT | FBINFO_HWACCEL_COPYAREA; | 48056 | FBINFO_HWACCEL_FILLRECT | FBINFO_HWACCEL_COPYAREA; |
48747 | break; | 48057 | break; |
48748 | diff --git a/drivers/video/smscufx.c b/drivers/video/smscufx.c | 48058 | diff --git a/drivers/video/smscufx.c b/drivers/video/smscufx.c |
48749 | index 97bd662..39fab85 100644 | 48059 | index b2b33fc..f9f4658 100644 |
48750 | --- a/drivers/video/smscufx.c | 48060 | --- a/drivers/video/smscufx.c |
48751 | +++ b/drivers/video/smscufx.c | 48061 | +++ b/drivers/video/smscufx.c |
48752 | @@ -1171,7 +1171,9 @@ static int ufx_ops_release(struct fb_info *info, int user) | 48062 | @@ -1175,7 +1175,9 @@ static int ufx_ops_release(struct fb_info *info, int user) |
48753 | fb_deferred_io_cleanup(info); | 48063 | fb_deferred_io_cleanup(info); |
48754 | kfree(info->fbdefio); | 48064 | kfree(info->fbdefio); |
48755 | info->fbdefio = NULL; | 48065 | info->fbdefio = NULL; |
@@ -48761,10 +48071,10 @@ index 97bd662..39fab85 100644 | |||
48761 | 48071 | ||
48762 | pr_debug("released /dev/fb%d user=%d count=%d", | 48072 | pr_debug("released /dev/fb%d user=%d count=%d", |
48763 | diff --git a/drivers/video/udlfb.c b/drivers/video/udlfb.c | 48073 | diff --git a/drivers/video/udlfb.c b/drivers/video/udlfb.c |
48764 | index 86d449e..8e04dc5 100644 | 48074 | index ec03e72..f578436 100644 |
48765 | --- a/drivers/video/udlfb.c | 48075 | --- a/drivers/video/udlfb.c |
48766 | +++ b/drivers/video/udlfb.c | 48076 | +++ b/drivers/video/udlfb.c |
48767 | @@ -619,11 +619,11 @@ int dlfb_handle_damage(struct dlfb_data *dev, int x, int y, | 48077 | @@ -623,11 +623,11 @@ int dlfb_handle_damage(struct dlfb_data *dev, int x, int y, |
48768 | dlfb_urb_completion(urb); | 48078 | dlfb_urb_completion(urb); |
48769 | 48079 | ||
48770 | error: | 48080 | error: |
@@ -48780,7 +48090,7 @@ index 86d449e..8e04dc5 100644 | |||
48780 | >> 10)), /* Kcycles */ | 48090 | >> 10)), /* Kcycles */ |
48781 | &dev->cpu_kcycles_used); | 48091 | &dev->cpu_kcycles_used); |
48782 | 48092 | ||
48783 | @@ -744,11 +744,11 @@ static void dlfb_dpy_deferred_io(struct fb_info *info, | 48093 | @@ -748,11 +748,11 @@ static void dlfb_dpy_deferred_io(struct fb_info *info, |
48784 | dlfb_urb_completion(urb); | 48094 | dlfb_urb_completion(urb); |
48785 | 48095 | ||
48786 | error: | 48096 | error: |
@@ -48796,7 +48106,7 @@ index 86d449e..8e04dc5 100644 | |||
48796 | >> 10)), /* Kcycles */ | 48106 | >> 10)), /* Kcycles */ |
48797 | &dev->cpu_kcycles_used); | 48107 | &dev->cpu_kcycles_used); |
48798 | } | 48108 | } |
48799 | @@ -989,7 +989,9 @@ static int dlfb_ops_release(struct fb_info *info, int user) | 48109 | @@ -993,7 +993,9 @@ static int dlfb_ops_release(struct fb_info *info, int user) |
48800 | fb_deferred_io_cleanup(info); | 48110 | fb_deferred_io_cleanup(info); |
48801 | kfree(info->fbdefio); | 48111 | kfree(info->fbdefio); |
48802 | info->fbdefio = NULL; | 48112 | info->fbdefio = NULL; |
@@ -48807,7 +48117,7 @@ index 86d449e..8e04dc5 100644 | |||
48807 | } | 48117 | } |
48808 | 48118 | ||
48809 | pr_warn("released /dev/fb%d user=%d count=%d\n", | 48119 | pr_warn("released /dev/fb%d user=%d count=%d\n", |
48810 | @@ -1372,7 +1374,7 @@ static ssize_t metrics_bytes_rendered_show(struct device *fbdev, | 48120 | @@ -1376,7 +1378,7 @@ static ssize_t metrics_bytes_rendered_show(struct device *fbdev, |
48811 | struct fb_info *fb_info = dev_get_drvdata(fbdev); | 48121 | struct fb_info *fb_info = dev_get_drvdata(fbdev); |
48812 | struct dlfb_data *dev = fb_info->par; | 48122 | struct dlfb_data *dev = fb_info->par; |
48813 | return snprintf(buf, PAGE_SIZE, "%u\n", | 48123 | return snprintf(buf, PAGE_SIZE, "%u\n", |
@@ -48816,7 +48126,7 @@ index 86d449e..8e04dc5 100644 | |||
48816 | } | 48126 | } |
48817 | 48127 | ||
48818 | static ssize_t metrics_bytes_identical_show(struct device *fbdev, | 48128 | static ssize_t metrics_bytes_identical_show(struct device *fbdev, |
48819 | @@ -1380,7 +1382,7 @@ static ssize_t metrics_bytes_identical_show(struct device *fbdev, | 48129 | @@ -1384,7 +1386,7 @@ static ssize_t metrics_bytes_identical_show(struct device *fbdev, |
48820 | struct fb_info *fb_info = dev_get_drvdata(fbdev); | 48130 | struct fb_info *fb_info = dev_get_drvdata(fbdev); |
48821 | struct dlfb_data *dev = fb_info->par; | 48131 | struct dlfb_data *dev = fb_info->par; |
48822 | return snprintf(buf, PAGE_SIZE, "%u\n", | 48132 | return snprintf(buf, PAGE_SIZE, "%u\n", |
@@ -48825,7 +48135,7 @@ index 86d449e..8e04dc5 100644 | |||
48825 | } | 48135 | } |
48826 | 48136 | ||
48827 | static ssize_t metrics_bytes_sent_show(struct device *fbdev, | 48137 | static ssize_t metrics_bytes_sent_show(struct device *fbdev, |
48828 | @@ -1388,7 +1390,7 @@ static ssize_t metrics_bytes_sent_show(struct device *fbdev, | 48138 | @@ -1392,7 +1394,7 @@ static ssize_t metrics_bytes_sent_show(struct device *fbdev, |
48829 | struct fb_info *fb_info = dev_get_drvdata(fbdev); | 48139 | struct fb_info *fb_info = dev_get_drvdata(fbdev); |
48830 | struct dlfb_data *dev = fb_info->par; | 48140 | struct dlfb_data *dev = fb_info->par; |
48831 | return snprintf(buf, PAGE_SIZE, "%u\n", | 48141 | return snprintf(buf, PAGE_SIZE, "%u\n", |
@@ -48834,7 +48144,7 @@ index 86d449e..8e04dc5 100644 | |||
48834 | } | 48144 | } |
48835 | 48145 | ||
48836 | static ssize_t metrics_cpu_kcycles_used_show(struct device *fbdev, | 48146 | static ssize_t metrics_cpu_kcycles_used_show(struct device *fbdev, |
48837 | @@ -1396,7 +1398,7 @@ static ssize_t metrics_cpu_kcycles_used_show(struct device *fbdev, | 48147 | @@ -1400,7 +1402,7 @@ static ssize_t metrics_cpu_kcycles_used_show(struct device *fbdev, |
48838 | struct fb_info *fb_info = dev_get_drvdata(fbdev); | 48148 | struct fb_info *fb_info = dev_get_drvdata(fbdev); |
48839 | struct dlfb_data *dev = fb_info->par; | 48149 | struct dlfb_data *dev = fb_info->par; |
48840 | return snprintf(buf, PAGE_SIZE, "%u\n", | 48150 | return snprintf(buf, PAGE_SIZE, "%u\n", |
@@ -48843,7 +48153,7 @@ index 86d449e..8e04dc5 100644 | |||
48843 | } | 48153 | } |
48844 | 48154 | ||
48845 | static ssize_t edid_show( | 48155 | static ssize_t edid_show( |
48846 | @@ -1456,10 +1458,10 @@ static ssize_t metrics_reset_store(struct device *fbdev, | 48156 | @@ -1460,10 +1462,10 @@ static ssize_t metrics_reset_store(struct device *fbdev, |
48847 | struct fb_info *fb_info = dev_get_drvdata(fbdev); | 48157 | struct fb_info *fb_info = dev_get_drvdata(fbdev); |
48848 | struct dlfb_data *dev = fb_info->par; | 48158 | struct dlfb_data *dev = fb_info->par; |
48849 | 48159 | ||
@@ -48859,7 +48169,7 @@ index 86d449e..8e04dc5 100644 | |||
48859 | return count; | 48169 | return count; |
48860 | } | 48170 | } |
48861 | diff --git a/drivers/video/uvesafb.c b/drivers/video/uvesafb.c | 48171 | diff --git a/drivers/video/uvesafb.c b/drivers/video/uvesafb.c |
48862 | index d428445..79a78df 100644 | 48172 | index e328a61..1b08ecb 100644 |
48863 | --- a/drivers/video/uvesafb.c | 48173 | --- a/drivers/video/uvesafb.c |
48864 | +++ b/drivers/video/uvesafb.c | 48174 | +++ b/drivers/video/uvesafb.c |
48865 | @@ -19,6 +19,7 @@ | 48175 | @@ -19,6 +19,7 @@ |
@@ -49124,10 +48434,10 @@ index fef20db..d28b1ab 100644 | |||
49124 | return -ENOMEM; | 48434 | return -ENOMEM; |
49125 | return 0; | 48435 | return 0; |
49126 | diff --git a/fs/9p/vfs_addr.c b/fs/9p/vfs_addr.c | 48436 | diff --git a/fs/9p/vfs_addr.c b/fs/9p/vfs_addr.c |
49127 | index 0ad61c6..f198bd7 100644 | 48437 | index 055562c..fdfb10d 100644 |
49128 | --- a/fs/9p/vfs_addr.c | 48438 | --- a/fs/9p/vfs_addr.c |
49129 | +++ b/fs/9p/vfs_addr.c | 48439 | +++ b/fs/9p/vfs_addr.c |
49130 | @@ -185,7 +185,7 @@ static int v9fs_vfs_writepage_locked(struct page *page) | 48440 | @@ -186,7 +186,7 @@ static int v9fs_vfs_writepage_locked(struct page *page) |
49131 | 48441 | ||
49132 | retval = v9fs_file_write_internal(inode, | 48442 | retval = v9fs_file_write_internal(inode, |
49133 | v9inode->writeback_fid, | 48443 | v9inode->writeback_fid, |
@@ -49150,10 +48460,10 @@ index d86edc8..40ff2fb 100644 | |||
49150 | p9_debug(P9_DEBUG_VFS, " %s %s\n", | 48460 | p9_debug(P9_DEBUG_VFS, " %s %s\n", |
49151 | dentry->d_name.name, IS_ERR(s) ? "<error>" : s); | 48461 | dentry->d_name.name, IS_ERR(s) ? "<error>" : s); |
49152 | diff --git a/fs/Kconfig.binfmt b/fs/Kconfig.binfmt | 48462 | diff --git a/fs/Kconfig.binfmt b/fs/Kconfig.binfmt |
49153 | index 0efd152..b5802ad 100644 | 48463 | index 370b24c..ff0be7b 100644 |
49154 | --- a/fs/Kconfig.binfmt | 48464 | --- a/fs/Kconfig.binfmt |
49155 | +++ b/fs/Kconfig.binfmt | 48465 | +++ b/fs/Kconfig.binfmt |
49156 | @@ -89,7 +89,7 @@ config HAVE_AOUT | 48466 | @@ -103,7 +103,7 @@ config HAVE_AOUT |
49157 | 48467 | ||
49158 | config BINFMT_AOUT | 48468 | config BINFMT_AOUT |
49159 | tristate "Kernel support for a.out and ECOFF binaries" | 48469 | tristate "Kernel support for a.out and ECOFF binaries" |
@@ -49163,10 +48473,10 @@ index 0efd152..b5802ad 100644 | |||
49163 | A.out (Assembler.OUTput) is a set of formats for libraries and | 48473 | A.out (Assembler.OUTput) is a set of formats for libraries and |
49164 | executables used in the earliest versions of UNIX. Linux used | 48474 | executables used in the earliest versions of UNIX. Linux used |
49165 | diff --git a/fs/aio.c b/fs/aio.c | 48475 | diff --git a/fs/aio.c b/fs/aio.c |
49166 | index 1dc8786..d3b29e8 100644 | 48476 | index 2bbcacf..8614116 100644 |
49167 | --- a/fs/aio.c | 48477 | --- a/fs/aio.c |
49168 | +++ b/fs/aio.c | 48478 | +++ b/fs/aio.c |
49169 | @@ -111,7 +111,7 @@ static int aio_setup_ring(struct kioctx *ctx) | 48479 | @@ -160,7 +160,7 @@ static int aio_setup_ring(struct kioctx *ctx) |
49170 | size += sizeof(struct io_event) * nr_events; | 48480 | size += sizeof(struct io_event) * nr_events; |
49171 | nr_pages = (size + PAGE_SIZE-1) >> PAGE_SHIFT; | 48481 | nr_pages = (size + PAGE_SIZE-1) >> PAGE_SHIFT; |
49172 | 48482 | ||
@@ -49175,39 +48485,39 @@ index 1dc8786..d3b29e8 100644 | |||
49175 | return -EINVAL; | 48485 | return -EINVAL; |
49176 | 48486 | ||
49177 | nr_events = (PAGE_SIZE * nr_pages - sizeof(struct aio_ring)) / sizeof(struct io_event); | 48487 | nr_events = (PAGE_SIZE * nr_pages - sizeof(struct aio_ring)) / sizeof(struct io_event); |
49178 | @@ -1375,18 +1375,19 @@ static ssize_t aio_fsync(struct kiocb *iocb) | 48488 | @@ -950,6 +950,7 @@ static ssize_t aio_rw_vect_retry(struct kiocb *iocb, int rw, aio_rw_op *rw_op) |
49179 | static ssize_t aio_setup_vectored_rw(int type, struct kiocb *kiocb, bool compat) | 48489 | static ssize_t aio_setup_vectored_rw(int rw, struct kiocb *kiocb, bool compat) |
49180 | { | 48490 | { |
49181 | ssize_t ret; | 48491 | ssize_t ret; |
49182 | + struct iovec iovstack; | 48492 | + struct iovec iovstack; |
49183 | 48493 | ||
49184 | #ifdef CONFIG_COMPAT | 48494 | kiocb->ki_nr_segs = kiocb->ki_nbytes; |
48495 | |||
48496 | @@ -957,17 +958,22 @@ static ssize_t aio_setup_vectored_rw(int rw, struct kiocb *kiocb, bool compat) | ||
49185 | if (compat) | 48497 | if (compat) |
49186 | ret = compat_rw_copy_check_uvector(type, | 48498 | ret = compat_rw_copy_check_uvector(rw, |
49187 | (struct compat_iovec __user *)kiocb->ki_buf, | 48499 | (struct compat_iovec __user *)kiocb->ki_buf, |
49188 | - kiocb->ki_nbytes, 1, &kiocb->ki_inline_vec, | 48500 | - kiocb->ki_nr_segs, 1, &kiocb->ki_inline_vec, |
49189 | + kiocb->ki_nbytes, 1, &iovstack, | 48501 | + kiocb->ki_nr_segs, 1, &iovstack, |
49190 | &kiocb->ki_iovec); | 48502 | &kiocb->ki_iovec); |
49191 | else | 48503 | else |
49192 | #endif | 48504 | #endif |
49193 | ret = rw_copy_check_uvector(type, | 48505 | ret = rw_copy_check_uvector(rw, |
49194 | (struct iovec __user *)kiocb->ki_buf, | 48506 | (struct iovec __user *)kiocb->ki_buf, |
49195 | - kiocb->ki_nbytes, 1, &kiocb->ki_inline_vec, | 48507 | - kiocb->ki_nr_segs, 1, &kiocb->ki_inline_vec, |
49196 | + kiocb->ki_nbytes, 1, &iovstack, | 48508 | + kiocb->ki_nr_segs, 1, &iovstack, |
49197 | &kiocb->ki_iovec); | 48509 | &kiocb->ki_iovec); |
49198 | if (ret < 0) | 48510 | if (ret < 0) |
49199 | goto out; | 48511 | return ret; |
49200 | @@ -1395,6 +1396,10 @@ static ssize_t aio_setup_vectored_rw(int type, struct kiocb *kiocb, bool compat) | ||
49201 | if (ret < 0) | ||
49202 | goto out; | ||
49203 | 48512 | ||
49204 | + if (kiocb->ki_iovec == &iovstack) { | 48513 | + if (kiocb->ki_iovec == &iovstack) { |
49205 | + kiocb->ki_inline_vec = iovstack; | 48514 | + kiocb->ki_inline_vec = iovstack; |
49206 | + kiocb->ki_iovec = &kiocb->ki_inline_vec; | 48515 | + kiocb->ki_iovec = &kiocb->ki_inline_vec; |
49207 | + } | 48516 | + } |
49208 | kiocb->ki_nr_segs = kiocb->ki_nbytes; | 48517 | + |
49209 | kiocb->ki_cur_seg = 0; | 48518 | /* ki_nbytes now reflect bytes instead of segs */ |
49210 | /* ki_nbytes/left now reflect bytes instead of segs */ | 48519 | kiocb->ki_nbytes = ret; |
48520 | return 0; | ||
49211 | diff --git a/fs/attr.c b/fs/attr.c | 48521 | diff --git a/fs/attr.c b/fs/attr.c |
49212 | index 1449adb..a2038c2 100644 | 48522 | index 1449adb..a2038c2 100644 |
49213 | --- a/fs/attr.c | 48523 | --- a/fs/attr.c |
@@ -49280,7 +48590,7 @@ index 2722387..c8dd2a7 100644 | |||
49280 | { | 48590 | { |
49281 | if (BEFS_SB(sb)->byte_order == BEFS_BYTESEX_LE) | 48591 | if (BEFS_SB(sb)->byte_order == BEFS_BYTESEX_LE) |
49282 | diff --git a/fs/befs/linuxvfs.c b/fs/befs/linuxvfs.c | 48592 | diff --git a/fs/befs/linuxvfs.c b/fs/befs/linuxvfs.c |
49283 | index 8615ee8..388ed68 100644 | 48593 | index f95dddc..b1e2c1c 100644 |
49284 | --- a/fs/befs/linuxvfs.c | 48594 | --- a/fs/befs/linuxvfs.c |
49285 | +++ b/fs/befs/linuxvfs.c | 48595 | +++ b/fs/befs/linuxvfs.c |
49286 | @@ -510,7 +510,7 @@ static void befs_put_link(struct dentry *dentry, struct nameidata *nd, void *p) | 48596 | @@ -510,7 +510,7 @@ static void befs_put_link(struct dentry *dentry, struct nameidata *nd, void *p) |
@@ -49293,7 +48603,7 @@ index 8615ee8..388ed68 100644 | |||
49293 | kfree(link); | 48603 | kfree(link); |
49294 | } | 48604 | } |
49295 | diff --git a/fs/binfmt_aout.c b/fs/binfmt_aout.c | 48605 | diff --git a/fs/binfmt_aout.c b/fs/binfmt_aout.c |
49296 | index bbc8f88..7c7ac97 100644 | 48606 | index bce8769..7fc7544 100644 |
49297 | --- a/fs/binfmt_aout.c | 48607 | --- a/fs/binfmt_aout.c |
49298 | +++ b/fs/binfmt_aout.c | 48608 | +++ b/fs/binfmt_aout.c |
49299 | @@ -16,6 +16,7 @@ | 48609 | @@ -16,6 +16,7 @@ |
@@ -49313,7 +48623,7 @@ index bbc8f88..7c7ac97 100644 | |||
49313 | fs = get_fs(); | 48623 | fs = get_fs(); |
49314 | set_fs(KERNEL_DS); | 48624 | set_fs(KERNEL_DS); |
49315 | has_dumped = 1; | 48625 | has_dumped = 1; |
49316 | @@ -70,10 +73,12 @@ static int aout_core_dump(struct coredump_params *cprm) | 48626 | @@ -69,10 +72,12 @@ static int aout_core_dump(struct coredump_params *cprm) |
49317 | 48627 | ||
49318 | /* If the size of the dump file exceeds the rlimit, then see what would happen | 48628 | /* If the size of the dump file exceeds the rlimit, then see what would happen |
49319 | if we wrote the stack, but not the data area. */ | 48629 | if we wrote the stack, but not the data area. */ |
@@ -49326,7 +48636,7 @@ index bbc8f88..7c7ac97 100644 | |||
49326 | if ((dump.u_ssize + 1) * PAGE_SIZE > cprm->limit) | 48636 | if ((dump.u_ssize + 1) * PAGE_SIZE > cprm->limit) |
49327 | dump.u_ssize = 0; | 48637 | dump.u_ssize = 0; |
49328 | 48638 | ||
49329 | @@ -234,6 +239,8 @@ static int load_aout_binary(struct linux_binprm * bprm) | 48639 | @@ -233,6 +238,8 @@ static int load_aout_binary(struct linux_binprm * bprm) |
49330 | rlim = rlimit(RLIMIT_DATA); | 48640 | rlim = rlimit(RLIMIT_DATA); |
49331 | if (rlim >= RLIM_INFINITY) | 48641 | if (rlim >= RLIM_INFINITY) |
49332 | rlim = ~0; | 48642 | rlim = ~0; |
@@ -49335,7 +48645,7 @@ index bbc8f88..7c7ac97 100644 | |||
49335 | if (ex.a_data + ex.a_bss > rlim) | 48645 | if (ex.a_data + ex.a_bss > rlim) |
49336 | return -ENOMEM; | 48646 | return -ENOMEM; |
49337 | 48647 | ||
49338 | @@ -268,6 +275,27 @@ static int load_aout_binary(struct linux_binprm * bprm) | 48648 | @@ -267,6 +274,27 @@ static int load_aout_binary(struct linux_binprm * bprm) |
49339 | 48649 | ||
49340 | install_exec_creds(bprm); | 48650 | install_exec_creds(bprm); |
49341 | 48651 | ||
@@ -49363,7 +48673,7 @@ index bbc8f88..7c7ac97 100644 | |||
49363 | if (N_MAGIC(ex) == OMAGIC) { | 48673 | if (N_MAGIC(ex) == OMAGIC) { |
49364 | unsigned long text_addr, map_size; | 48674 | unsigned long text_addr, map_size; |
49365 | loff_t pos; | 48675 | loff_t pos; |
49366 | @@ -333,7 +361,7 @@ static int load_aout_binary(struct linux_binprm * bprm) | 48676 | @@ -324,7 +352,7 @@ static int load_aout_binary(struct linux_binprm * bprm) |
49367 | } | 48677 | } |
49368 | 48678 | ||
49369 | error = vm_mmap(bprm->file, N_DATADDR(ex), ex.a_data, | 48679 | error = vm_mmap(bprm->file, N_DATADDR(ex), ex.a_data, |
@@ -49373,7 +48683,7 @@ index bbc8f88..7c7ac97 100644 | |||
49373 | fd_offset + ex.a_text); | 48683 | fd_offset + ex.a_text); |
49374 | if (error != N_DATADDR(ex)) { | 48684 | if (error != N_DATADDR(ex)) { |
49375 | diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c | 48685 | diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c |
49376 | index 86af964..5d53bf6 100644 | 48686 | index f8a0b0e..8c841c3 100644 |
49377 | --- a/fs/binfmt_elf.c | 48687 | --- a/fs/binfmt_elf.c |
49378 | +++ b/fs/binfmt_elf.c | 48688 | +++ b/fs/binfmt_elf.c |
49379 | @@ -34,6 +34,7 @@ | 48689 | @@ -34,6 +34,7 @@ |
@@ -49384,7 +48694,7 @@ index 86af964..5d53bf6 100644 | |||
49384 | #include <asm/uaccess.h> | 48694 | #include <asm/uaccess.h> |
49385 | #include <asm/param.h> | 48695 | #include <asm/param.h> |
49386 | #include <asm/page.h> | 48696 | #include <asm/page.h> |
49387 | @@ -60,6 +61,10 @@ static int elf_core_dump(struct coredump_params *cprm); | 48697 | @@ -60,6 +61,14 @@ static int elf_core_dump(struct coredump_params *cprm); |
49388 | #define elf_core_dump NULL | 48698 | #define elf_core_dump NULL |
49389 | #endif | 48699 | #endif |
49390 | 48700 | ||
@@ -49392,10 +48702,14 @@ index 86af964..5d53bf6 100644 | |||
49392 | +static void elf_handle_mprotect(struct vm_area_struct *vma, unsigned long newflags); | 48702 | +static void elf_handle_mprotect(struct vm_area_struct *vma, unsigned long newflags); |
49393 | +#endif | 48703 | +#endif |
49394 | + | 48704 | + |
48705 | +#ifdef CONFIG_GRKERNSEC_RWXMAP_LOG | ||
48706 | +static void elf_handle_mmap(struct file *file); | ||
48707 | +#endif | ||
48708 | + | ||
49395 | #if ELF_EXEC_PAGESIZE > PAGE_SIZE | 48709 | #if ELF_EXEC_PAGESIZE > PAGE_SIZE |
49396 | #define ELF_MIN_ALIGN ELF_EXEC_PAGESIZE | 48710 | #define ELF_MIN_ALIGN ELF_EXEC_PAGESIZE |
49397 | #else | 48711 | #else |
49398 | @@ -79,6 +84,11 @@ static struct linux_binfmt elf_format = { | 48712 | @@ -79,6 +88,15 @@ static struct linux_binfmt elf_format = { |
49399 | .load_binary = load_elf_binary, | 48713 | .load_binary = load_elf_binary, |
49400 | .load_shlib = load_elf_library, | 48714 | .load_shlib = load_elf_library, |
49401 | .core_dump = elf_core_dump, | 48715 | .core_dump = elf_core_dump, |
@@ -49404,10 +48718,14 @@ index 86af964..5d53bf6 100644 | |||
49404 | + .handle_mprotect= elf_handle_mprotect, | 48718 | + .handle_mprotect= elf_handle_mprotect, |
49405 | +#endif | 48719 | +#endif |
49406 | + | 48720 | + |
48721 | +#ifdef CONFIG_GRKERNSEC_RWXMAP_LOG | ||
48722 | + .handle_mmap = elf_handle_mmap, | ||
48723 | +#endif | ||
48724 | + | ||
49407 | .min_coredump = ELF_EXEC_PAGESIZE, | 48725 | .min_coredump = ELF_EXEC_PAGESIZE, |
49408 | }; | 48726 | }; |
49409 | 48727 | ||
49410 | @@ -86,6 +96,8 @@ static struct linux_binfmt elf_format = { | 48728 | @@ -86,6 +104,8 @@ static struct linux_binfmt elf_format = { |
49411 | 48729 | ||
49412 | static int set_brk(unsigned long start, unsigned long end) | 48730 | static int set_brk(unsigned long start, unsigned long end) |
49413 | { | 48731 | { |
@@ -49416,7 +48734,7 @@ index 86af964..5d53bf6 100644 | |||
49416 | start = ELF_PAGEALIGN(start); | 48734 | start = ELF_PAGEALIGN(start); |
49417 | end = ELF_PAGEALIGN(end); | 48735 | end = ELF_PAGEALIGN(end); |
49418 | if (end > start) { | 48736 | if (end > start) { |
49419 | @@ -94,7 +106,7 @@ static int set_brk(unsigned long start, unsigned long end) | 48737 | @@ -94,7 +114,7 @@ static int set_brk(unsigned long start, unsigned long end) |
49420 | if (BAD_ADDR(addr)) | 48738 | if (BAD_ADDR(addr)) |
49421 | return addr; | 48739 | return addr; |
49422 | } | 48740 | } |
@@ -49425,7 +48743,7 @@ index 86af964..5d53bf6 100644 | |||
49425 | return 0; | 48743 | return 0; |
49426 | } | 48744 | } |
49427 | 48745 | ||
49428 | @@ -155,12 +167,13 @@ create_elf_tables(struct linux_binprm *bprm, struct elfhdr *exec, | 48746 | @@ -155,12 +175,13 @@ create_elf_tables(struct linux_binprm *bprm, struct elfhdr *exec, |
49429 | elf_addr_t __user *u_rand_bytes; | 48747 | elf_addr_t __user *u_rand_bytes; |
49430 | const char *k_platform = ELF_PLATFORM; | 48748 | const char *k_platform = ELF_PLATFORM; |
49431 | const char *k_base_platform = ELF_BASE_PLATFORM; | 48749 | const char *k_base_platform = ELF_BASE_PLATFORM; |
@@ -49440,22 +48758,22 @@ index 86af964..5d53bf6 100644 | |||
49440 | 48758 | ||
49441 | /* | 48759 | /* |
49442 | * In some cases (e.g. Hyper-Threading), we want to avoid L1 | 48760 | * In some cases (e.g. Hyper-Threading), we want to avoid L1 |
49443 | @@ -202,8 +215,12 @@ create_elf_tables(struct linux_binprm *bprm, struct elfhdr *exec, | 48761 | @@ -202,8 +223,12 @@ create_elf_tables(struct linux_binprm *bprm, struct elfhdr *exec, |
49444 | * Generate 16 random bytes for userspace PRNG seeding. | 48762 | * Generate 16 random bytes for userspace PRNG seeding. |
49445 | */ | 48763 | */ |
49446 | get_random_bytes(k_rand_bytes, sizeof(k_rand_bytes)); | 48764 | get_random_bytes(k_rand_bytes, sizeof(k_rand_bytes)); |
49447 | - u_rand_bytes = (elf_addr_t __user *) | 48765 | - u_rand_bytes = (elf_addr_t __user *) |
49448 | - STACK_ALLOC(p, sizeof(k_rand_bytes)); | 48766 | - STACK_ALLOC(p, sizeof(k_rand_bytes)); |
49449 | + srandom32(k_rand_bytes[0] ^ random32()); | 48767 | + prandom_seed(k_rand_bytes[0] ^ prandom_u32()); |
49450 | + srandom32(k_rand_bytes[1] ^ random32()); | 48768 | + prandom_seed(k_rand_bytes[1] ^ prandom_u32()); |
49451 | + srandom32(k_rand_bytes[2] ^ random32()); | 48769 | + prandom_seed(k_rand_bytes[2] ^ prandom_u32()); |
49452 | + srandom32(k_rand_bytes[3] ^ random32()); | 48770 | + prandom_seed(k_rand_bytes[3] ^ prandom_u32()); |
49453 | + p = STACK_ROUND(p, sizeof(k_rand_bytes)); | 48771 | + p = STACK_ROUND(p, sizeof(k_rand_bytes)); |
49454 | + u_rand_bytes = (elf_addr_t __user *) p; | 48772 | + u_rand_bytes = (elf_addr_t __user *) p; |
49455 | if (__copy_to_user(u_rand_bytes, k_rand_bytes, sizeof(k_rand_bytes))) | 48773 | if (__copy_to_user(u_rand_bytes, k_rand_bytes, sizeof(k_rand_bytes))) |
49456 | return -EFAULT; | 48774 | return -EFAULT; |
49457 | 48775 | ||
49458 | @@ -315,9 +332,11 @@ create_elf_tables(struct linux_binprm *bprm, struct elfhdr *exec, | 48776 | @@ -318,9 +343,11 @@ create_elf_tables(struct linux_binprm *bprm, struct elfhdr *exec, |
49459 | return -EFAULT; | 48777 | return -EFAULT; |
49460 | current->mm->env_end = p; | 48778 | current->mm->env_end = p; |
49461 | 48779 | ||
@@ -49468,7 +48786,7 @@ index 86af964..5d53bf6 100644 | |||
49468 | return -EFAULT; | 48786 | return -EFAULT; |
49469 | return 0; | 48787 | return 0; |
49470 | } | 48788 | } |
49471 | @@ -385,15 +404,14 @@ static unsigned long total_mapping_size(struct elf_phdr *cmds, int nr) | 48789 | @@ -388,15 +415,14 @@ static unsigned long total_mapping_size(struct elf_phdr *cmds, int nr) |
49472 | an ELF header */ | 48790 | an ELF header */ |
49473 | 48791 | ||
49474 | static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex, | 48792 | static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex, |
@@ -49487,7 +48805,7 @@ index 86af964..5d53bf6 100644 | |||
49487 | unsigned long total_size; | 48805 | unsigned long total_size; |
49488 | int retval, i, size; | 48806 | int retval, i, size; |
49489 | 48807 | ||
49490 | @@ -439,6 +457,11 @@ static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex, | 48808 | @@ -442,6 +468,11 @@ static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex, |
49491 | goto out_close; | 48809 | goto out_close; |
49492 | } | 48810 | } |
49493 | 48811 | ||
@@ -49499,7 +48817,7 @@ index 86af964..5d53bf6 100644 | |||
49499 | eppnt = elf_phdata; | 48817 | eppnt = elf_phdata; |
49500 | for (i = 0; i < interp_elf_ex->e_phnum; i++, eppnt++) { | 48818 | for (i = 0; i < interp_elf_ex->e_phnum; i++, eppnt++) { |
49501 | if (eppnt->p_type == PT_LOAD) { | 48819 | if (eppnt->p_type == PT_LOAD) { |
49502 | @@ -462,8 +485,6 @@ static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex, | 48820 | @@ -465,8 +496,6 @@ static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex, |
49503 | map_addr = elf_map(interpreter, load_addr + vaddr, | 48821 | map_addr = elf_map(interpreter, load_addr + vaddr, |
49504 | eppnt, elf_prot, elf_type, total_size); | 48822 | eppnt, elf_prot, elf_type, total_size); |
49505 | total_size = 0; | 48823 | total_size = 0; |
@@ -49508,7 +48826,7 @@ index 86af964..5d53bf6 100644 | |||
49508 | error = map_addr; | 48826 | error = map_addr; |
49509 | if (BAD_ADDR(map_addr)) | 48827 | if (BAD_ADDR(map_addr)) |
49510 | goto out_close; | 48828 | goto out_close; |
49511 | @@ -482,8 +503,8 @@ static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex, | 48829 | @@ -485,8 +514,8 @@ static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex, |
49512 | k = load_addr + eppnt->p_vaddr; | 48830 | k = load_addr + eppnt->p_vaddr; |
49513 | if (BAD_ADDR(k) || | 48831 | if (BAD_ADDR(k) || |
49514 | eppnt->p_filesz > eppnt->p_memsz || | 48832 | eppnt->p_filesz > eppnt->p_memsz || |
@@ -49519,7 +48837,7 @@ index 86af964..5d53bf6 100644 | |||
49519 | error = -ENOMEM; | 48837 | error = -ENOMEM; |
49520 | goto out_close; | 48838 | goto out_close; |
49521 | } | 48839 | } |
49522 | @@ -535,6 +556,315 @@ out: | 48840 | @@ -538,6 +567,315 @@ out: |
49523 | return error; | 48841 | return error; |
49524 | } | 48842 | } |
49525 | 48843 | ||
@@ -49835,7 +49153,7 @@ index 86af964..5d53bf6 100644 | |||
49835 | /* | 49153 | /* |
49836 | * These are the functions used to load ELF style executables and shared | 49154 | * These are the functions used to load ELF style executables and shared |
49837 | * libraries. There is no binary dependent code anywhere else. | 49155 | * libraries. There is no binary dependent code anywhere else. |
49838 | @@ -551,6 +881,11 @@ static unsigned long randomize_stack_top(unsigned long stack_top) | 49156 | @@ -554,6 +892,11 @@ static unsigned long randomize_stack_top(unsigned long stack_top) |
49839 | { | 49157 | { |
49840 | unsigned int random_variable = 0; | 49158 | unsigned int random_variable = 0; |
49841 | 49159 | ||
@@ -49847,7 +49165,7 @@ index 86af964..5d53bf6 100644 | |||
49847 | if ((current->flags & PF_RANDOMIZE) && | 49165 | if ((current->flags & PF_RANDOMIZE) && |
49848 | !(current->personality & ADDR_NO_RANDOMIZE)) { | 49166 | !(current->personality & ADDR_NO_RANDOMIZE)) { |
49849 | random_variable = get_random_int() & STACK_RND_MASK; | 49167 | random_variable = get_random_int() & STACK_RND_MASK; |
49850 | @@ -569,7 +904,7 @@ static int load_elf_binary(struct linux_binprm *bprm) | 49168 | @@ -572,7 +915,7 @@ static int load_elf_binary(struct linux_binprm *bprm) |
49851 | unsigned long load_addr = 0, load_bias = 0; | 49169 | unsigned long load_addr = 0, load_bias = 0; |
49852 | int load_addr_set = 0; | 49170 | int load_addr_set = 0; |
49853 | char * elf_interpreter = NULL; | 49171 | char * elf_interpreter = NULL; |
@@ -49856,7 +49174,7 @@ index 86af964..5d53bf6 100644 | |||
49856 | struct elf_phdr *elf_ppnt, *elf_phdata; | 49174 | struct elf_phdr *elf_ppnt, *elf_phdata; |
49857 | unsigned long elf_bss, elf_brk; | 49175 | unsigned long elf_bss, elf_brk; |
49858 | int retval, i; | 49176 | int retval, i; |
49859 | @@ -579,12 +914,12 @@ static int load_elf_binary(struct linux_binprm *bprm) | 49177 | @@ -582,12 +925,12 @@ static int load_elf_binary(struct linux_binprm *bprm) |
49860 | unsigned long start_code, end_code, start_data, end_data; | 49178 | unsigned long start_code, end_code, start_data, end_data; |
49861 | unsigned long reloc_func_desc __maybe_unused = 0; | 49179 | unsigned long reloc_func_desc __maybe_unused = 0; |
49862 | int executable_stack = EXSTACK_DEFAULT; | 49180 | int executable_stack = EXSTACK_DEFAULT; |
@@ -49870,7 +49188,7 @@ index 86af964..5d53bf6 100644 | |||
49870 | 49188 | ||
49871 | loc = kmalloc(sizeof(*loc), GFP_KERNEL); | 49189 | loc = kmalloc(sizeof(*loc), GFP_KERNEL); |
49872 | if (!loc) { | 49190 | if (!loc) { |
49873 | @@ -720,11 +1055,81 @@ static int load_elf_binary(struct linux_binprm *bprm) | 49191 | @@ -723,11 +1066,81 @@ static int load_elf_binary(struct linux_binprm *bprm) |
49874 | goto out_free_dentry; | 49192 | goto out_free_dentry; |
49875 | 49193 | ||
49876 | /* OK, This is the point of no return */ | 49194 | /* OK, This is the point of no return */ |
@@ -49953,7 +49271,7 @@ index 86af964..5d53bf6 100644 | |||
49953 | if (elf_read_implies_exec(loc->elf_ex, executable_stack)) | 49271 | if (elf_read_implies_exec(loc->elf_ex, executable_stack)) |
49954 | current->personality |= READ_IMPLIES_EXEC; | 49272 | current->personality |= READ_IMPLIES_EXEC; |
49955 | 49273 | ||
49956 | @@ -815,6 +1220,20 @@ static int load_elf_binary(struct linux_binprm *bprm) | 49274 | @@ -819,6 +1232,20 @@ static int load_elf_binary(struct linux_binprm *bprm) |
49957 | #else | 49275 | #else |
49958 | load_bias = ELF_PAGESTART(ELF_ET_DYN_BASE - vaddr); | 49276 | load_bias = ELF_PAGESTART(ELF_ET_DYN_BASE - vaddr); |
49959 | #endif | 49277 | #endif |
@@ -49974,7 +49292,7 @@ index 86af964..5d53bf6 100644 | |||
49974 | } | 49292 | } |
49975 | 49293 | ||
49976 | error = elf_map(bprm->file, load_bias + vaddr, elf_ppnt, | 49294 | error = elf_map(bprm->file, load_bias + vaddr, elf_ppnt, |
49977 | @@ -847,9 +1266,9 @@ static int load_elf_binary(struct linux_binprm *bprm) | 49295 | @@ -851,9 +1278,9 @@ static int load_elf_binary(struct linux_binprm *bprm) |
49978 | * allowed task size. Note that p_filesz must always be | 49296 | * allowed task size. Note that p_filesz must always be |
49979 | * <= p_memsz so it is only necessary to check p_memsz. | 49297 | * <= p_memsz so it is only necessary to check p_memsz. |
49980 | */ | 49298 | */ |
@@ -49987,7 +49305,7 @@ index 86af964..5d53bf6 100644 | |||
49987 | /* set_brk can never work. Avoid overflows. */ | 49305 | /* set_brk can never work. Avoid overflows. */ |
49988 | send_sig(SIGKILL, current, 0); | 49306 | send_sig(SIGKILL, current, 0); |
49989 | retval = -EINVAL; | 49307 | retval = -EINVAL; |
49990 | @@ -888,17 +1307,45 @@ static int load_elf_binary(struct linux_binprm *bprm) | 49308 | @@ -892,17 +1319,45 @@ static int load_elf_binary(struct linux_binprm *bprm) |
49991 | goto out_free_dentry; | 49309 | goto out_free_dentry; |
49992 | } | 49310 | } |
49993 | if (likely(elf_bss != elf_brk) && unlikely(padzero(elf_bss))) { | 49311 | if (likely(elf_bss != elf_brk) && unlikely(padzero(elf_bss))) { |
@@ -50001,8 +49319,6 @@ index 86af964..5d53bf6 100644 | |||
50001 | + */ | 49319 | + */ |
50002 | } | 49320 | } |
50003 | 49321 | ||
50004 | - if (elf_interpreter) { | ||
50005 | - unsigned long interp_map_addr = 0; | ||
50006 | +#ifdef CONFIG_PAX_RANDMMAP | 49322 | +#ifdef CONFIG_PAX_RANDMMAP |
50007 | + if (current->mm->pax_flags & MF_PAX_RANDMMAP) { | 49323 | + if (current->mm->pax_flags & MF_PAX_RANDMMAP) { |
50008 | + unsigned long start, size, flags; | 49324 | + unsigned long start, size, flags; |
@@ -50012,7 +49328,7 @@ index 86af964..5d53bf6 100644 | |||
50012 | + size = PAGE_SIZE + ((pax_get_random_long() & ((1UL << 22) - 1UL)) << 4); | 49328 | + size = PAGE_SIZE + ((pax_get_random_long() & ((1UL << 22) - 1UL)) << 4); |
50013 | + flags = MAP_FIXED | MAP_PRIVATE; | 49329 | + flags = MAP_FIXED | MAP_PRIVATE; |
50014 | + vm_flags = VM_DONTEXPAND | VM_DONTDUMP; | 49330 | + vm_flags = VM_DONTEXPAND | VM_DONTDUMP; |
50015 | 49331 | + | |
50016 | + down_write(¤t->mm->mmap_sem); | 49332 | + down_write(¤t->mm->mmap_sem); |
50017 | + start = get_unmapped_area(NULL, start, PAGE_ALIGN(size), 0, flags); | 49333 | + start = get_unmapped_area(NULL, start, PAGE_ALIGN(size), 0, flags); |
50018 | + retval = -ENOMEM; | 49334 | + retval = -ENOMEM; |
@@ -50032,14 +49348,16 @@ index 86af964..5d53bf6 100644 | |||
50032 | + } | 49348 | + } |
50033 | +#endif | 49349 | +#endif |
50034 | + | 49350 | + |
50035 | + if (elf_interpreter) { | 49351 | if (elf_interpreter) { |
49352 | - unsigned long interp_map_addr = 0; | ||
49353 | - | ||
50036 | elf_entry = load_elf_interp(&loc->interp_elf_ex, | 49354 | elf_entry = load_elf_interp(&loc->interp_elf_ex, |
50037 | interpreter, | 49355 | interpreter, |
50038 | - &interp_map_addr, | 49356 | - &interp_map_addr, |
50039 | load_bias); | 49357 | load_bias); |
50040 | if (!IS_ERR((void *)elf_entry)) { | 49358 | if (!IS_ERR((void *)elf_entry)) { |
50041 | /* | 49359 | /* |
50042 | @@ -1120,7 +1567,7 @@ static bool always_dump_vma(struct vm_area_struct *vma) | 49360 | @@ -1124,7 +1579,7 @@ static bool always_dump_vma(struct vm_area_struct *vma) |
50043 | * Decide what to dump of a segment, part, all or none. | 49361 | * Decide what to dump of a segment, part, all or none. |
50044 | */ | 49362 | */ |
50045 | static unsigned long vma_dump_size(struct vm_area_struct *vma, | 49363 | static unsigned long vma_dump_size(struct vm_area_struct *vma, |
@@ -50048,7 +49366,7 @@ index 86af964..5d53bf6 100644 | |||
50048 | { | 49366 | { |
50049 | #define FILTER(type) (mm_flags & (1UL << MMF_DUMP_##type)) | 49367 | #define FILTER(type) (mm_flags & (1UL << MMF_DUMP_##type)) |
50050 | 49368 | ||
50051 | @@ -1158,7 +1605,7 @@ static unsigned long vma_dump_size(struct vm_area_struct *vma, | 49369 | @@ -1162,7 +1617,7 @@ static unsigned long vma_dump_size(struct vm_area_struct *vma, |
50052 | if (vma->vm_file == NULL) | 49370 | if (vma->vm_file == NULL) |
50053 | return 0; | 49371 | return 0; |
50054 | 49372 | ||
@@ -50057,7 +49375,7 @@ index 86af964..5d53bf6 100644 | |||
50057 | goto whole; | 49375 | goto whole; |
50058 | 49376 | ||
50059 | /* | 49377 | /* |
50060 | @@ -1383,9 +1830,9 @@ static void fill_auxv_note(struct memelfnote *note, struct mm_struct *mm) | 49378 | @@ -1387,9 +1842,9 @@ static void fill_auxv_note(struct memelfnote *note, struct mm_struct *mm) |
50061 | { | 49379 | { |
50062 | elf_addr_t *auxv = (elf_addr_t *) mm->saved_auxv; | 49380 | elf_addr_t *auxv = (elf_addr_t *) mm->saved_auxv; |
50063 | int i = 0; | 49381 | int i = 0; |
@@ -50069,7 +49387,7 @@ index 86af964..5d53bf6 100644 | |||
50069 | fill_note(note, "CORE", NT_AUXV, i * sizeof(elf_addr_t), auxv); | 49387 | fill_note(note, "CORE", NT_AUXV, i * sizeof(elf_addr_t), auxv); |
50070 | } | 49388 | } |
50071 | 49389 | ||
50072 | @@ -1394,7 +1841,7 @@ static void fill_siginfo_note(struct memelfnote *note, user_siginfo_t *csigdata, | 49390 | @@ -1398,7 +1853,7 @@ static void fill_siginfo_note(struct memelfnote *note, user_siginfo_t *csigdata, |
50073 | { | 49391 | { |
50074 | mm_segment_t old_fs = get_fs(); | 49392 | mm_segment_t old_fs = get_fs(); |
50075 | set_fs(KERNEL_DS); | 49393 | set_fs(KERNEL_DS); |
@@ -50078,7 +49396,7 @@ index 86af964..5d53bf6 100644 | |||
50078 | set_fs(old_fs); | 49396 | set_fs(old_fs); |
50079 | fill_note(note, "CORE", NT_SIGINFO, sizeof(*csigdata), csigdata); | 49397 | fill_note(note, "CORE", NT_SIGINFO, sizeof(*csigdata), csigdata); |
50080 | } | 49398 | } |
50081 | @@ -2015,14 +2462,14 @@ static void fill_extnum_info(struct elfhdr *elf, struct elf_shdr *shdr4extnum, | 49399 | @@ -2019,14 +2474,14 @@ static void fill_extnum_info(struct elfhdr *elf, struct elf_shdr *shdr4extnum, |
50082 | } | 49400 | } |
50083 | 49401 | ||
50084 | static size_t elf_core_vma_data_size(struct vm_area_struct *gate_vma, | 49402 | static size_t elf_core_vma_data_size(struct vm_area_struct *gate_vma, |
@@ -50095,7 +49413,7 @@ index 86af964..5d53bf6 100644 | |||
50095 | return size; | 49413 | return size; |
50096 | } | 49414 | } |
50097 | 49415 | ||
50098 | @@ -2116,7 +2563,7 @@ static int elf_core_dump(struct coredump_params *cprm) | 49416 | @@ -2119,7 +2574,7 @@ static int elf_core_dump(struct coredump_params *cprm) |
50099 | 49417 | ||
50100 | dataoff = offset = roundup(offset, ELF_EXEC_PAGESIZE); | 49418 | dataoff = offset = roundup(offset, ELF_EXEC_PAGESIZE); |
50101 | 49419 | ||
@@ -50104,7 +49422,7 @@ index 86af964..5d53bf6 100644 | |||
50104 | offset += elf_core_extra_data_size(); | 49422 | offset += elf_core_extra_data_size(); |
50105 | e_shoff = offset; | 49423 | e_shoff = offset; |
50106 | 49424 | ||
50107 | @@ -2130,10 +2577,12 @@ static int elf_core_dump(struct coredump_params *cprm) | 49425 | @@ -2133,10 +2588,12 @@ static int elf_core_dump(struct coredump_params *cprm) |
50108 | offset = dataoff; | 49426 | offset = dataoff; |
50109 | 49427 | ||
50110 | size += sizeof(*elf); | 49428 | size += sizeof(*elf); |
@@ -50117,7 +49435,7 @@ index 86af964..5d53bf6 100644 | |||
50117 | if (size > cprm->limit | 49435 | if (size > cprm->limit |
50118 | || !dump_write(cprm->file, phdr4note, sizeof(*phdr4note))) | 49436 | || !dump_write(cprm->file, phdr4note, sizeof(*phdr4note))) |
50119 | goto end_coredump; | 49437 | goto end_coredump; |
50120 | @@ -2147,7 +2596,7 @@ static int elf_core_dump(struct coredump_params *cprm) | 49438 | @@ -2150,7 +2607,7 @@ static int elf_core_dump(struct coredump_params *cprm) |
50121 | phdr.p_offset = offset; | 49439 | phdr.p_offset = offset; |
50122 | phdr.p_vaddr = vma->vm_start; | 49440 | phdr.p_vaddr = vma->vm_start; |
50123 | phdr.p_paddr = 0; | 49441 | phdr.p_paddr = 0; |
@@ -50126,7 +49444,7 @@ index 86af964..5d53bf6 100644 | |||
50126 | phdr.p_memsz = vma->vm_end - vma->vm_start; | 49444 | phdr.p_memsz = vma->vm_end - vma->vm_start; |
50127 | offset += phdr.p_filesz; | 49445 | offset += phdr.p_filesz; |
50128 | phdr.p_flags = vma->vm_flags & VM_READ ? PF_R : 0; | 49446 | phdr.p_flags = vma->vm_flags & VM_READ ? PF_R : 0; |
50129 | @@ -2158,6 +2607,7 @@ static int elf_core_dump(struct coredump_params *cprm) | 49447 | @@ -2161,6 +2618,7 @@ static int elf_core_dump(struct coredump_params *cprm) |
50130 | phdr.p_align = ELF_EXEC_PAGESIZE; | 49448 | phdr.p_align = ELF_EXEC_PAGESIZE; |
50131 | 49449 | ||
50132 | size += sizeof(phdr); | 49450 | size += sizeof(phdr); |
@@ -50134,7 +49452,7 @@ index 86af964..5d53bf6 100644 | |||
50134 | if (size > cprm->limit | 49452 | if (size > cprm->limit |
50135 | || !dump_write(cprm->file, &phdr, sizeof(phdr))) | 49453 | || !dump_write(cprm->file, &phdr, sizeof(phdr))) |
50136 | goto end_coredump; | 49454 | goto end_coredump; |
50137 | @@ -2182,7 +2632,7 @@ static int elf_core_dump(struct coredump_params *cprm) | 49455 | @@ -2185,7 +2643,7 @@ static int elf_core_dump(struct coredump_params *cprm) |
50138 | unsigned long addr; | 49456 | unsigned long addr; |
50139 | unsigned long end; | 49457 | unsigned long end; |
50140 | 49458 | ||
@@ -50143,7 +49461,7 @@ index 86af964..5d53bf6 100644 | |||
50143 | 49461 | ||
50144 | for (addr = vma->vm_start; addr < end; addr += PAGE_SIZE) { | 49462 | for (addr = vma->vm_start; addr < end; addr += PAGE_SIZE) { |
50145 | struct page *page; | 49463 | struct page *page; |
50146 | @@ -2191,6 +2641,7 @@ static int elf_core_dump(struct coredump_params *cprm) | 49464 | @@ -2194,6 +2652,7 @@ static int elf_core_dump(struct coredump_params *cprm) |
50147 | page = get_dump_page(addr); | 49465 | page = get_dump_page(addr); |
50148 | if (page) { | 49466 | if (page) { |
50149 | void *kaddr = kmap(page); | 49467 | void *kaddr = kmap(page); |
@@ -50151,7 +49469,7 @@ index 86af964..5d53bf6 100644 | |||
50151 | stop = ((size += PAGE_SIZE) > cprm->limit) || | 49469 | stop = ((size += PAGE_SIZE) > cprm->limit) || |
50152 | !dump_write(cprm->file, kaddr, | 49470 | !dump_write(cprm->file, kaddr, |
50153 | PAGE_SIZE); | 49471 | PAGE_SIZE); |
50154 | @@ -2208,6 +2659,7 @@ static int elf_core_dump(struct coredump_params *cprm) | 49472 | @@ -2211,6 +2670,7 @@ static int elf_core_dump(struct coredump_params *cprm) |
50155 | 49473 | ||
50156 | if (e_phnum == PN_XNUM) { | 49474 | if (e_phnum == PN_XNUM) { |
50157 | size += sizeof(*shdr4extnum); | 49475 | size += sizeof(*shdr4extnum); |
@@ -50159,7 +49477,7 @@ index 86af964..5d53bf6 100644 | |||
50159 | if (size > cprm->limit | 49477 | if (size > cprm->limit |
50160 | || !dump_write(cprm->file, shdr4extnum, | 49478 | || !dump_write(cprm->file, shdr4extnum, |
50161 | sizeof(*shdr4extnum))) | 49479 | sizeof(*shdr4extnum))) |
50162 | @@ -2228,6 +2680,97 @@ out: | 49480 | @@ -2231,6 +2691,167 @@ out: |
50163 | 49481 | ||
50164 | #endif /* CONFIG_ELF_CORE */ | 49482 | #endif /* CONFIG_ELF_CORE */ |
50165 | 49483 | ||
@@ -50227,9 +49545,9 @@ index 86af964..5d53bf6 100644 | |||
50227 | + elf_dyn dyn; | 49545 | + elf_dyn dyn; |
50228 | + | 49546 | + |
50229 | + if (sizeof(dyn) != kernel_read(vma->vm_file, elf_p.p_offset + i*sizeof(dyn), (char *)&dyn, sizeof(dyn))) | 49547 | + if (sizeof(dyn) != kernel_read(vma->vm_file, elf_p.p_offset + i*sizeof(dyn), (char *)&dyn, sizeof(dyn))) |
50230 | + return; | 49548 | + break; |
50231 | + if (dyn.d_tag == DT_NULL) | 49549 | + if (dyn.d_tag == DT_NULL) |
50232 | + return; | 49550 | + break; |
50233 | + if (dyn.d_tag == DT_TEXTREL || (dyn.d_tag == DT_FLAGS && (dyn.d_un.d_val & DF_TEXTREL))) { | 49551 | + if (dyn.d_tag == DT_TEXTREL || (dyn.d_tag == DT_FLAGS && (dyn.d_un.d_val & DF_TEXTREL))) { |
50234 | + gr_log_textrel(vma); | 49552 | + gr_log_textrel(vma); |
50235 | + if (is_textrel_rw) | 49553 | + if (is_textrel_rw) |
@@ -50237,31 +49555,101 @@ index 86af964..5d53bf6 100644 | |||
50237 | + else | 49555 | + else |
50238 | + /* PaX: disallow write access after relocs are done, hopefully noone else needs it... */ | 49556 | + /* PaX: disallow write access after relocs are done, hopefully noone else needs it... */ |
50239 | + vma->vm_flags &= ~VM_MAYWRITE; | 49557 | + vma->vm_flags &= ~VM_MAYWRITE; |
50240 | + return; | 49558 | + break; |
50241 | + } | 49559 | + } |
50242 | + i++; | 49560 | + i++; |
50243 | + } | 49561 | + } |
50244 | + return; | 49562 | + is_textrel_rw = false; |
49563 | + is_textrel_rx = false; | ||
49564 | + continue; | ||
50245 | + | 49565 | + |
50246 | + case PT_GNU_RELRO: | 49566 | + case PT_GNU_RELRO: |
50247 | + if (!is_relro) | 49567 | + if (!is_relro) |
50248 | + continue; | 49568 | + continue; |
50249 | + if ((elf_p.p_offset >> PAGE_SHIFT) == vma->vm_pgoff && ELF_PAGEALIGN(elf_p.p_memsz) == vma->vm_end - vma->vm_start) | 49569 | + if ((elf_p.p_offset >> PAGE_SHIFT) == vma->vm_pgoff && ELF_PAGEALIGN(elf_p.p_memsz) == vma->vm_end - vma->vm_start) |
50250 | + vma->vm_flags &= ~VM_MAYWRITE; | 49570 | + vma->vm_flags &= ~VM_MAYWRITE; |
50251 | + return; | 49571 | + is_relro = false; |
49572 | + continue; | ||
49573 | + | ||
49574 | +#ifdef CONFIG_PAX_PT_PAX_FLAGS | ||
49575 | + case PT_PAX_FLAGS: { | ||
49576 | + const char *msg_mprotect = "", *msg_emutramp = ""; | ||
49577 | + char *buffer_lib, *buffer_exe; | ||
49578 | + | ||
49579 | + if (elf_p.p_flags & PF_NOMPROTECT) | ||
49580 | + msg_mprotect = "MPROTECT disabled"; | ||
49581 | + | ||
49582 | +#ifdef CONFIG_PAX_EMUTRAMP | ||
49583 | + if (!(vma->vm_mm->pax_flags & MF_PAX_EMUTRAMP) && !(elf_p.p_flags & PF_NOEMUTRAMP)) | ||
49584 | + msg_emutramp = "EMUTRAMP enabled"; | ||
49585 | +#endif | ||
49586 | + | ||
49587 | + if (!msg_mprotect[0] && !msg_emutramp[0]) | ||
49588 | + continue; | ||
49589 | + | ||
49590 | + if (!printk_ratelimit()) | ||
49591 | + continue; | ||
49592 | + | ||
49593 | + buffer_lib = (char *)__get_free_page(GFP_KERNEL); | ||
49594 | + buffer_exe = (char *)__get_free_page(GFP_KERNEL); | ||
49595 | + if (buffer_lib && buffer_exe) { | ||
49596 | + char *path_lib, *path_exe; | ||
49597 | + | ||
49598 | + path_lib = pax_get_path(&vma->vm_file->f_path, buffer_lib, PAGE_SIZE); | ||
49599 | + path_exe = pax_get_path(&vma->vm_mm->exe_file->f_path, buffer_exe, PAGE_SIZE); | ||
49600 | + | ||
49601 | + pr_info("PAX: %s wants %s%s%s on %s\n", path_lib, msg_mprotect, | ||
49602 | + (msg_mprotect[0] && msg_emutramp[0] ? " and " : ""), msg_emutramp, path_exe); | ||
49603 | + | ||
49604 | + } | ||
49605 | + free_page((unsigned long)buffer_exe); | ||
49606 | + free_page((unsigned long)buffer_lib); | ||
49607 | + continue; | ||
49608 | + } | ||
49609 | +#endif | ||
49610 | + | ||
50252 | + } | 49611 | + } |
50253 | + } | 49612 | + } |
50254 | +} | 49613 | +} |
50255 | +#endif | 49614 | +#endif |
50256 | + | 49615 | + |
49616 | +#ifdef CONFIG_GRKERNSEC_RWXMAP_LOG | ||
49617 | + | ||
49618 | +extern int grsec_enable_log_rwxmaps; | ||
49619 | + | ||
49620 | +static void elf_handle_mmap(struct file *file) | ||
49621 | +{ | ||
49622 | + struct elfhdr elf_h; | ||
49623 | + struct elf_phdr elf_p; | ||
49624 | + unsigned long i; | ||
49625 | + | ||
49626 | + if (!grsec_enable_log_rwxmaps) | ||
49627 | + return; | ||
49628 | + | ||
49629 | + if (sizeof(elf_h) != kernel_read(file, 0UL, (char *)&elf_h, sizeof(elf_h)) || | ||
49630 | + memcmp(elf_h.e_ident, ELFMAG, SELFMAG) || | ||
49631 | + (elf_h.e_type != ET_DYN && elf_h.e_type != ET_EXEC) || !elf_check_arch(&elf_h) || | ||
49632 | + elf_h.e_phentsize != sizeof(struct elf_phdr) || | ||
49633 | + elf_h.e_phnum > 65536UL / sizeof(struct elf_phdr)) | ||
49634 | + return; | ||
49635 | + | ||
49636 | + for (i = 0UL; i < elf_h.e_phnum; i++) { | ||
49637 | + if (sizeof(elf_p) != kernel_read(file, elf_h.e_phoff + i*sizeof(elf_p), (char *)&elf_p, sizeof(elf_p))) | ||
49638 | + return; | ||
49639 | + if (elf_p.p_type == PT_GNU_STACK && (elf_p.p_flags & PF_X)) | ||
49640 | + gr_log_ptgnustack(file); | ||
49641 | + } | ||
49642 | +} | ||
49643 | +#endif | ||
49644 | + | ||
50257 | static int __init init_elf_binfmt(void) | 49645 | static int __init init_elf_binfmt(void) |
50258 | { | 49646 | { |
50259 | register_binfmt(&elf_format); | 49647 | register_binfmt(&elf_format); |
50260 | diff --git a/fs/binfmt_flat.c b/fs/binfmt_flat.c | 49648 | diff --git a/fs/binfmt_flat.c b/fs/binfmt_flat.c |
50261 | index 2036d21..b0430d0 100644 | 49649 | index d50bbe5..af3b649 100644 |
50262 | --- a/fs/binfmt_flat.c | 49650 | --- a/fs/binfmt_flat.c |
50263 | +++ b/fs/binfmt_flat.c | 49651 | +++ b/fs/binfmt_flat.c |
50264 | @@ -562,7 +562,9 @@ static int load_flat_file(struct linux_binprm * bprm, | 49652 | @@ -566,7 +566,9 @@ static int load_flat_file(struct linux_binprm * bprm, |
50265 | realdatastart = (unsigned long) -ENOMEM; | 49653 | realdatastart = (unsigned long) -ENOMEM; |
50266 | printk("Unable to allocate RAM for process data, errno %d\n", | 49654 | printk("Unable to allocate RAM for process data, errno %d\n", |
50267 | (int)-realdatastart); | 49655 | (int)-realdatastart); |
@@ -50271,7 +49659,7 @@ index 2036d21..b0430d0 100644 | |||
50271 | ret = realdatastart; | 49659 | ret = realdatastart; |
50272 | goto err; | 49660 | goto err; |
50273 | } | 49661 | } |
50274 | @@ -586,8 +588,10 @@ static int load_flat_file(struct linux_binprm * bprm, | 49662 | @@ -590,8 +592,10 @@ static int load_flat_file(struct linux_binprm * bprm, |
50275 | } | 49663 | } |
50276 | if (IS_ERR_VALUE(result)) { | 49664 | if (IS_ERR_VALUE(result)) { |
50277 | printk("Unable to read data+bss, errno %d\n", (int)-result); | 49665 | printk("Unable to read data+bss, errno %d\n", (int)-result); |
@@ -50282,7 +49670,7 @@ index 2036d21..b0430d0 100644 | |||
50282 | ret = result; | 49670 | ret = result; |
50283 | goto err; | 49671 | goto err; |
50284 | } | 49672 | } |
50285 | @@ -654,8 +658,10 @@ static int load_flat_file(struct linux_binprm * bprm, | 49673 | @@ -653,8 +657,10 @@ static int load_flat_file(struct linux_binprm * bprm, |
50286 | } | 49674 | } |
50287 | if (IS_ERR_VALUE(result)) { | 49675 | if (IS_ERR_VALUE(result)) { |
50288 | printk("Unable to read code+data+bss, errno %d\n",(int)-result); | 49676 | printk("Unable to read code+data+bss, errno %d\n",(int)-result); |
@@ -50294,10 +49682,10 @@ index 2036d21..b0430d0 100644 | |||
50294 | goto err; | 49682 | goto err; |
50295 | } | 49683 | } |
50296 | diff --git a/fs/bio.c b/fs/bio.c | 49684 | diff --git a/fs/bio.c b/fs/bio.c |
50297 | index b96fc6c..431d628 100644 | 49685 | index 94bbc04..6fe78a4 100644 |
50298 | --- a/fs/bio.c | 49686 | --- a/fs/bio.c |
50299 | +++ b/fs/bio.c | 49687 | +++ b/fs/bio.c |
50300 | @@ -818,7 +818,7 @@ struct bio *bio_copy_user_iov(struct request_queue *q, | 49688 | @@ -1096,7 +1096,7 @@ struct bio *bio_copy_user_iov(struct request_queue *q, |
50301 | /* | 49689 | /* |
50302 | * Overflow, abort | 49690 | * Overflow, abort |
50303 | */ | 49691 | */ |
@@ -50306,7 +49694,7 @@ index b96fc6c..431d628 100644 | |||
50306 | return ERR_PTR(-EINVAL); | 49694 | return ERR_PTR(-EINVAL); |
50307 | 49695 | ||
50308 | nr_pages += end - start; | 49696 | nr_pages += end - start; |
50309 | @@ -952,7 +952,7 @@ static struct bio *__bio_map_user_iov(struct request_queue *q, | 49697 | @@ -1230,7 +1230,7 @@ static struct bio *__bio_map_user_iov(struct request_queue *q, |
50310 | /* | 49698 | /* |
50311 | * Overflow, abort | 49699 | * Overflow, abort |
50312 | */ | 49700 | */ |
@@ -50315,46 +49703,20 @@ index b96fc6c..431d628 100644 | |||
50315 | return ERR_PTR(-EINVAL); | 49703 | return ERR_PTR(-EINVAL); |
50316 | 49704 | ||
50317 | nr_pages += end - start; | 49705 | nr_pages += end - start; |
50318 | @@ -1214,7 +1214,7 @@ static void bio_copy_kern_endio(struct bio *bio, int err) | 49706 | @@ -1492,7 +1492,7 @@ static void bio_copy_kern_endio(struct bio *bio, int err) |
50319 | const int read = bio_data_dir(bio) == READ; | 49707 | const int read = bio_data_dir(bio) == READ; |
50320 | struct bio_map_data *bmd = bio->bi_private; | 49708 | struct bio_map_data *bmd = bio->bi_private; |
50321 | int i; | 49709 | int i; |
50322 | - char *p = bmd->sgvecs[0].iov_base; | 49710 | - char *p = bmd->sgvecs[0].iov_base; |
50323 | + char *p = (char __force_kernel *)bmd->sgvecs[0].iov_base; | 49711 | + char *p = (char __force_kernel *)bmd->sgvecs[0].iov_base; |
50324 | 49712 | ||
50325 | __bio_for_each_segment(bvec, bio, i, 0) { | 49713 | bio_for_each_segment_all(bvec, bio, i) { |
50326 | char *addr = page_address(bvec->bv_page); | 49714 | char *addr = page_address(bvec->bv_page); |
50327 | diff --git a/fs/block_dev.c b/fs/block_dev.c | 49715 | diff --git a/fs/block_dev.c b/fs/block_dev.c |
50328 | index aae187a..8325c5d 100644 | 49716 | index 85f5c85..d6f0b1a 100644 |
50329 | --- a/fs/block_dev.c | 49717 | --- a/fs/block_dev.c |
50330 | +++ b/fs/block_dev.c | 49718 | +++ b/fs/block_dev.c |
50331 | @@ -57,17 +57,24 @@ static void bdev_inode_switch_bdi(struct inode *inode, | 49719 | @@ -658,7 +658,7 @@ static bool bd_may_claim(struct block_device *bdev, struct block_device *whole, |
50332 | struct backing_dev_info *dst) | ||
50333 | { | ||
50334 | struct backing_dev_info *old = inode->i_data.backing_dev_info; | ||
50335 | + bool wakeup_bdi = false; | ||
50336 | |||
50337 | if (unlikely(dst == old)) /* deadlock avoidance */ | ||
50338 | return; | ||
50339 | bdi_lock_two(&old->wb, &dst->wb); | ||
50340 | spin_lock(&inode->i_lock); | ||
50341 | inode->i_data.backing_dev_info = dst; | ||
50342 | - if (inode->i_state & I_DIRTY) | ||
50343 | + if (inode->i_state & I_DIRTY) { | ||
50344 | + if (bdi_cap_writeback_dirty(dst) && !wb_has_dirty_io(&dst->wb)) | ||
50345 | + wakeup_bdi = true; | ||
50346 | list_move(&inode->i_wb_list, &dst->wb.b_dirty); | ||
50347 | + } | ||
50348 | spin_unlock(&inode->i_lock); | ||
50349 | spin_unlock(&old->wb.list_lock); | ||
50350 | spin_unlock(&dst->wb.list_lock); | ||
50351 | + | ||
50352 | + if (wakeup_bdi) | ||
50353 | + bdi_wakeup_thread_delayed(dst); | ||
50354 | } | ||
50355 | |||
50356 | /* Kill _all_ buffers and pagecache , dirty or not.. */ | ||
50357 | @@ -652,7 +659,7 @@ static bool bd_may_claim(struct block_device *bdev, struct block_device *whole, | ||
50358 | else if (bdev->bd_contains == bdev) | 49720 | else if (bdev->bd_contains == bdev) |
50359 | return true; /* is a whole device which isn't held */ | 49721 | return true; /* is a whole device which isn't held */ |
50360 | 49722 | ||
@@ -50364,10 +49726,10 @@ index aae187a..8325c5d 100644 | |||
50364 | else if (whole->bd_holder != NULL) | 49726 | else if (whole->bd_holder != NULL) |
50365 | return false; /* is a partition of a held device */ | 49727 | return false; /* is a partition of a held device */ |
50366 | diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c | 49728 | diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c |
50367 | index 7a983f7..c73ee93 100644 | 49729 | index 7fb054b..ad36c67 100644 |
50368 | --- a/fs/btrfs/ctree.c | 49730 | --- a/fs/btrfs/ctree.c |
50369 | +++ b/fs/btrfs/ctree.c | 49731 | +++ b/fs/btrfs/ctree.c |
50370 | @@ -1036,9 +1036,12 @@ static noinline int __btrfs_cow_block(struct btrfs_trans_handle *trans, | 49732 | @@ -1076,9 +1076,12 @@ static noinline int __btrfs_cow_block(struct btrfs_trans_handle *trans, |
50371 | free_extent_buffer(buf); | 49733 | free_extent_buffer(buf); |
50372 | add_root_to_dirty_list(root); | 49734 | add_root_to_dirty_list(root); |
50373 | } else { | 49735 | } else { |
@@ -50384,10 +49746,10 @@ index 7a983f7..c73ee93 100644 | |||
50384 | 49746 | ||
50385 | WARN_ON(trans->transid != btrfs_header_generation(parent)); | 49747 | WARN_ON(trans->transid != btrfs_header_generation(parent)); |
50386 | diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c | 49748 | diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c |
50387 | index f49b62f..07834ab 100644 | 49749 | index 0f81d67..0ad55fe 100644 |
50388 | --- a/fs/btrfs/ioctl.c | 49750 | --- a/fs/btrfs/ioctl.c |
50389 | +++ b/fs/btrfs/ioctl.c | 49751 | +++ b/fs/btrfs/ioctl.c |
50390 | @@ -3077,9 +3077,12 @@ long btrfs_ioctl_space_info(struct btrfs_root *root, void __user *arg) | 49752 | @@ -3084,9 +3084,12 @@ static long btrfs_ioctl_space_info(struct btrfs_root *root, void __user *arg) |
50391 | for (i = 0; i < num_types; i++) { | 49753 | for (i = 0; i < num_types; i++) { |
50392 | struct btrfs_space_info *tmp; | 49754 | struct btrfs_space_info *tmp; |
50393 | 49755 | ||
@@ -50400,7 +49762,7 @@ index f49b62f..07834ab 100644 | |||
50400 | info = NULL; | 49762 | info = NULL; |
50401 | rcu_read_lock(); | 49763 | rcu_read_lock(); |
50402 | list_for_each_entry_rcu(tmp, &root->fs_info->space_info, | 49764 | list_for_each_entry_rcu(tmp, &root->fs_info->space_info, |
50403 | @@ -3101,10 +3104,7 @@ long btrfs_ioctl_space_info(struct btrfs_root *root, void __user *arg) | 49765 | @@ -3108,10 +3111,7 @@ static long btrfs_ioctl_space_info(struct btrfs_root *root, void __user *arg) |
50404 | memcpy(dest, &space, sizeof(space)); | 49766 | memcpy(dest, &space, sizeof(space)); |
50405 | dest++; | 49767 | dest++; |
50406 | space_args.total_spaces++; | 49768 | space_args.total_spaces++; |
@@ -50412,11 +49774,11 @@ index f49b62f..07834ab 100644 | |||
50412 | up_read(&info->groups_sem); | 49774 | up_read(&info->groups_sem); |
50413 | } | 49775 | } |
50414 | diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c | 49776 | diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c |
50415 | index f6b8859..54fe8c5 100644 | 49777 | index f0857e0..e7023c5 100644 |
50416 | --- a/fs/btrfs/super.c | 49778 | --- a/fs/btrfs/super.c |
50417 | +++ b/fs/btrfs/super.c | 49779 | +++ b/fs/btrfs/super.c |
50418 | @@ -266,7 +266,7 @@ void __btrfs_abort_transaction(struct btrfs_trans_handle *trans, | 49780 | @@ -265,7 +265,7 @@ void __btrfs_abort_transaction(struct btrfs_trans_handle *trans, |
50419 | function, line, errstr); | 49781 | function, line, errstr); |
50420 | return; | 49782 | return; |
50421 | } | 49783 | } |
50422 | - ACCESS_ONCE(trans->transaction->aborted) = errno; | 49784 | - ACCESS_ONCE(trans->transaction->aborted) = errno; |
@@ -50424,6 +49786,19 @@ index f6b8859..54fe8c5 100644 | |||
50424 | __btrfs_std_error(root->fs_info, function, line, errno, NULL); | 49786 | __btrfs_std_error(root->fs_info, function, line, errno, NULL); |
50425 | } | 49787 | } |
50426 | /* | 49788 | /* |
49789 | diff --git a/fs/buffer.c b/fs/buffer.c | ||
49790 | index d2a4d1b..df798ca 100644 | ||
49791 | --- a/fs/buffer.c | ||
49792 | +++ b/fs/buffer.c | ||
49793 | @@ -3367,7 +3367,7 @@ void __init buffer_init(void) | ||
49794 | bh_cachep = kmem_cache_create("buffer_head", | ||
49795 | sizeof(struct buffer_head), 0, | ||
49796 | (SLAB_RECLAIM_ACCOUNT|SLAB_PANIC| | ||
49797 | - SLAB_MEM_SPREAD), | ||
49798 | + SLAB_MEM_SPREAD|SLAB_NO_SANITIZE), | ||
49799 | NULL); | ||
49800 | |||
49801 | /* | ||
50427 | diff --git a/fs/cachefiles/bind.c b/fs/cachefiles/bind.c | 49802 | diff --git a/fs/cachefiles/bind.c b/fs/cachefiles/bind.c |
50428 | index 622f469..e8d2d55 100644 | 49803 | index 622f469..e8d2d55 100644 |
50429 | --- a/fs/cachefiles/bind.c | 49804 | --- a/fs/cachefiles/bind.c |
@@ -50566,10 +49941,10 @@ index eccd339..4c1d995 100644 | |||
50566 | return 0; | 49941 | return 0; |
50567 | 49942 | ||
50568 | diff --git a/fs/cachefiles/rdwr.c b/fs/cachefiles/rdwr.c | 49943 | diff --git a/fs/cachefiles/rdwr.c b/fs/cachefiles/rdwr.c |
50569 | index 4809922..aab2c39 100644 | 49944 | index 317f9ee..3d24511 100644 |
50570 | --- a/fs/cachefiles/rdwr.c | 49945 | --- a/fs/cachefiles/rdwr.c |
50571 | +++ b/fs/cachefiles/rdwr.c | 49946 | +++ b/fs/cachefiles/rdwr.c |
50572 | @@ -965,7 +965,7 @@ int cachefiles_write_page(struct fscache_storage *op, struct page *page) | 49947 | @@ -966,7 +966,7 @@ int cachefiles_write_page(struct fscache_storage *op, struct page *page) |
50573 | old_fs = get_fs(); | 49948 | old_fs = get_fs(); |
50574 | set_fs(KERNEL_DS); | 49949 | set_fs(KERNEL_DS); |
50575 | ret = file->f_op->write( | 49950 | ret = file->f_op->write( |
@@ -50577,9 +49952,9 @@ index 4809922..aab2c39 100644 | |||
50577 | + file, (const void __force_user *) data, len, &pos); | 49952 | + file, (const void __force_user *) data, len, &pos); |
50578 | set_fs(old_fs); | 49953 | set_fs(old_fs); |
50579 | kunmap(page); | 49954 | kunmap(page); |
50580 | if (ret != len) | 49955 | file_end_write(file); |
50581 | diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c | 49956 | diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c |
50582 | index 6d797f4..0ace2e5 100644 | 49957 | index f02d82b..2632cf86 100644 |
50583 | --- a/fs/ceph/dir.c | 49958 | --- a/fs/ceph/dir.c |
50584 | +++ b/fs/ceph/dir.c | 49959 | +++ b/fs/ceph/dir.c |
50585 | @@ -243,7 +243,7 @@ static int ceph_readdir(struct file *filp, void *dirent, filldir_t filldir) | 49960 | @@ -243,7 +243,7 @@ static int ceph_readdir(struct file *filp, void *dirent, filldir_t filldir) |
@@ -50592,10 +49967,10 @@ index 6d797f4..0ace2e5 100644 | |||
50592 | u32 ftype; | 49967 | u32 ftype; |
50593 | struct ceph_mds_reply_info_parsed *rinfo; | 49968 | struct ceph_mds_reply_info_parsed *rinfo; |
50594 | diff --git a/fs/cifs/cifs_debug.c b/fs/cifs/cifs_debug.c | 49969 | diff --git a/fs/cifs/cifs_debug.c b/fs/cifs/cifs_debug.c |
50595 | index d9ea6ed..1e6c8ac 100644 | 49970 | index d597483..747901b 100644 |
50596 | --- a/fs/cifs/cifs_debug.c | 49971 | --- a/fs/cifs/cifs_debug.c |
50597 | +++ b/fs/cifs/cifs_debug.c | 49972 | +++ b/fs/cifs/cifs_debug.c |
50598 | @@ -267,8 +267,8 @@ static ssize_t cifs_stats_proc_write(struct file *file, | 49973 | @@ -284,8 +284,8 @@ static ssize_t cifs_stats_proc_write(struct file *file, |
50599 | 49974 | ||
50600 | if (c == '1' || c == 'y' || c == 'Y' || c == '0') { | 49975 | if (c == '1' || c == 'y' || c == 'Y' || c == '0') { |
50601 | #ifdef CONFIG_CIFS_STATS2 | 49976 | #ifdef CONFIG_CIFS_STATS2 |
@@ -50606,7 +49981,7 @@ index d9ea6ed..1e6c8ac 100644 | |||
50606 | #endif /* CONFIG_CIFS_STATS2 */ | 49981 | #endif /* CONFIG_CIFS_STATS2 */ |
50607 | spin_lock(&cifs_tcp_ses_lock); | 49982 | spin_lock(&cifs_tcp_ses_lock); |
50608 | list_for_each(tmp1, &cifs_tcp_ses_list) { | 49983 | list_for_each(tmp1, &cifs_tcp_ses_list) { |
50609 | @@ -281,7 +281,7 @@ static ssize_t cifs_stats_proc_write(struct file *file, | 49984 | @@ -298,7 +298,7 @@ static ssize_t cifs_stats_proc_write(struct file *file, |
50610 | tcon = list_entry(tmp3, | 49985 | tcon = list_entry(tmp3, |
50611 | struct cifs_tcon, | 49986 | struct cifs_tcon, |
50612 | tcon_list); | 49987 | tcon_list); |
@@ -50615,7 +49990,7 @@ index d9ea6ed..1e6c8ac 100644 | |||
50615 | if (server->ops->clear_stats) | 49990 | if (server->ops->clear_stats) |
50616 | server->ops->clear_stats(tcon); | 49991 | server->ops->clear_stats(tcon); |
50617 | } | 49992 | } |
50618 | @@ -313,8 +313,8 @@ static int cifs_stats_proc_show(struct seq_file *m, void *v) | 49993 | @@ -330,8 +330,8 @@ static int cifs_stats_proc_show(struct seq_file *m, void *v) |
50619 | smBufAllocCount.counter, cifs_min_small); | 49994 | smBufAllocCount.counter, cifs_min_small); |
50620 | #ifdef CONFIG_CIFS_STATS2 | 49995 | #ifdef CONFIG_CIFS_STATS2 |
50621 | seq_printf(m, "Total Large %d Small %d Allocations\n", | 49996 | seq_printf(m, "Total Large %d Small %d Allocations\n", |
@@ -50626,7 +50001,7 @@ index d9ea6ed..1e6c8ac 100644 | |||
50626 | #endif /* CONFIG_CIFS_STATS2 */ | 50001 | #endif /* CONFIG_CIFS_STATS2 */ |
50627 | 50002 | ||
50628 | seq_printf(m, "Operations (MIDs): %d\n", atomic_read(&midCount)); | 50003 | seq_printf(m, "Operations (MIDs): %d\n", atomic_read(&midCount)); |
50629 | @@ -343,7 +343,7 @@ static int cifs_stats_proc_show(struct seq_file *m, void *v) | 50004 | @@ -360,7 +360,7 @@ static int cifs_stats_proc_show(struct seq_file *m, void *v) |
50630 | if (tcon->need_reconnect) | 50005 | if (tcon->need_reconnect) |
50631 | seq_puts(m, "\tDISCONNECTED "); | 50006 | seq_puts(m, "\tDISCONNECTED "); |
50632 | seq_printf(m, "\nSMBs: %d", | 50007 | seq_printf(m, "\nSMBs: %d", |
@@ -50636,11 +50011,11 @@ index d9ea6ed..1e6c8ac 100644 | |||
50636 | server->ops->print_stats(m, tcon); | 50011 | server->ops->print_stats(m, tcon); |
50637 | } | 50012 | } |
50638 | diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c | 50013 | diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c |
50639 | index 345fc89..b2acae5 100644 | 50014 | index 3752b9f..8db5569 100644 |
50640 | --- a/fs/cifs/cifsfs.c | 50015 | --- a/fs/cifs/cifsfs.c |
50641 | +++ b/fs/cifs/cifsfs.c | 50016 | +++ b/fs/cifs/cifsfs.c |
50642 | @@ -1033,7 +1033,7 @@ cifs_init_request_bufs(void) | 50017 | @@ -1035,7 +1035,7 @@ cifs_init_request_bufs(void) |
50643 | /* cERROR(1, "CIFSMaxBufSize %d 0x%x",CIFSMaxBufSize,CIFSMaxBufSize); */ | 50018 | */ |
50644 | cifs_req_cachep = kmem_cache_create("cifs_request", | 50019 | cifs_req_cachep = kmem_cache_create("cifs_request", |
50645 | CIFSMaxBufSize + max_hdr_size, 0, | 50020 | CIFSMaxBufSize + max_hdr_size, 0, |
50646 | - SLAB_HWCACHE_ALIGN, NULL); | 50021 | - SLAB_HWCACHE_ALIGN, NULL); |
@@ -50648,7 +50023,7 @@ index 345fc89..b2acae5 100644 | |||
50648 | if (cifs_req_cachep == NULL) | 50023 | if (cifs_req_cachep == NULL) |
50649 | return -ENOMEM; | 50024 | return -ENOMEM; |
50650 | 50025 | ||
50651 | @@ -1060,7 +1060,7 @@ cifs_init_request_bufs(void) | 50026 | @@ -1062,7 +1062,7 @@ cifs_init_request_bufs(void) |
50652 | efficient to alloc 1 per page off the slab compared to 17K (5page) | 50027 | efficient to alloc 1 per page off the slab compared to 17K (5page) |
50653 | alloc of large cifs buffers even when page debugging is on */ | 50028 | alloc of large cifs buffers even when page debugging is on */ |
50654 | cifs_sm_req_cachep = kmem_cache_create("cifs_small_rq", | 50029 | cifs_sm_req_cachep = kmem_cache_create("cifs_small_rq", |
@@ -50657,7 +50032,7 @@ index 345fc89..b2acae5 100644 | |||
50657 | NULL); | 50032 | NULL); |
50658 | if (cifs_sm_req_cachep == NULL) { | 50033 | if (cifs_sm_req_cachep == NULL) { |
50659 | mempool_destroy(cifs_req_poolp); | 50034 | mempool_destroy(cifs_req_poolp); |
50660 | @@ -1145,8 +1145,8 @@ init_cifs(void) | 50035 | @@ -1147,8 +1147,8 @@ init_cifs(void) |
50661 | atomic_set(&bufAllocCount, 0); | 50036 | atomic_set(&bufAllocCount, 0); |
50662 | atomic_set(&smBufAllocCount, 0); | 50037 | atomic_set(&smBufAllocCount, 0); |
50663 | #ifdef CONFIG_CIFS_STATS2 | 50038 | #ifdef CONFIG_CIFS_STATS2 |
@@ -50753,7 +50128,7 @@ index 4f07f6f..55de8ce 100644 | |||
50753 | GLOBAL_EXTERN atomic_t smBufAllocCount; | 50128 | GLOBAL_EXTERN atomic_t smBufAllocCount; |
50754 | GLOBAL_EXTERN atomic_t midCount; | 50129 | GLOBAL_EXTERN atomic_t midCount; |
50755 | diff --git a/fs/cifs/link.c b/fs/cifs/link.c | 50130 | diff --git a/fs/cifs/link.c b/fs/cifs/link.c |
50756 | index 9f6c4c4..8de307a 100644 | 50131 | index b83c3f5..6437caa 100644 |
50757 | --- a/fs/cifs/link.c | 50132 | --- a/fs/cifs/link.c |
50758 | +++ b/fs/cifs/link.c | 50133 | +++ b/fs/cifs/link.c |
50759 | @@ -616,7 +616,7 @@ symlink_exit: | 50134 | @@ -616,7 +616,7 @@ symlink_exit: |
@@ -50766,7 +50141,7 @@ index 9f6c4c4..8de307a 100644 | |||
50766 | kfree(p); | 50141 | kfree(p); |
50767 | } | 50142 | } |
50768 | diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c | 50143 | diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c |
50769 | index 1b15bf8..1ce489e 100644 | 50144 | index 1bec014..f329411 100644 |
50770 | --- a/fs/cifs/misc.c | 50145 | --- a/fs/cifs/misc.c |
50771 | +++ b/fs/cifs/misc.c | 50146 | +++ b/fs/cifs/misc.c |
50772 | @@ -169,7 +169,7 @@ cifs_buf_get(void) | 50147 | @@ -169,7 +169,7 @@ cifs_buf_get(void) |
@@ -50788,10 +50163,10 @@ index 1b15bf8..1ce489e 100644 | |||
50788 | 50163 | ||
50789 | } | 50164 | } |
50790 | diff --git a/fs/cifs/smb1ops.c b/fs/cifs/smb1ops.c | 50165 | diff --git a/fs/cifs/smb1ops.c b/fs/cifs/smb1ops.c |
50791 | index 47bc5a8..10decbe 100644 | 50166 | index 3efdb9d..e845a5e 100644 |
50792 | --- a/fs/cifs/smb1ops.c | 50167 | --- a/fs/cifs/smb1ops.c |
50793 | +++ b/fs/cifs/smb1ops.c | 50168 | +++ b/fs/cifs/smb1ops.c |
50794 | @@ -586,27 +586,27 @@ static void | 50169 | @@ -591,27 +591,27 @@ static void |
50795 | cifs_clear_stats(struct cifs_tcon *tcon) | 50170 | cifs_clear_stats(struct cifs_tcon *tcon) |
50796 | { | 50171 | { |
50797 | #ifdef CONFIG_CIFS_STATS | 50172 | #ifdef CONFIG_CIFS_STATS |
@@ -50840,7 +50215,7 @@ index 47bc5a8..10decbe 100644 | |||
50840 | #endif | 50215 | #endif |
50841 | } | 50216 | } |
50842 | 50217 | ||
50843 | @@ -615,36 +615,36 @@ cifs_print_stats(struct seq_file *m, struct cifs_tcon *tcon) | 50218 | @@ -620,36 +620,36 @@ cifs_print_stats(struct seq_file *m, struct cifs_tcon *tcon) |
50844 | { | 50219 | { |
50845 | #ifdef CONFIG_CIFS_STATS | 50220 | #ifdef CONFIG_CIFS_STATS |
50846 | seq_printf(m, " Oplocks breaks: %d", | 50221 | seq_printf(m, " Oplocks breaks: %d", |
@@ -50897,7 +50272,7 @@ index 47bc5a8..10decbe 100644 | |||
50897 | } | 50272 | } |
50898 | 50273 | ||
50899 | diff --git a/fs/cifs/smb2ops.c b/fs/cifs/smb2ops.c | 50274 | diff --git a/fs/cifs/smb2ops.c b/fs/cifs/smb2ops.c |
50900 | index bceffe7..cd1ae59 100644 | 50275 | index f2e76f3..c44fac7 100644 |
50901 | --- a/fs/cifs/smb2ops.c | 50276 | --- a/fs/cifs/smb2ops.c |
50902 | +++ b/fs/cifs/smb2ops.c | 50277 | +++ b/fs/cifs/smb2ops.c |
50903 | @@ -274,8 +274,8 @@ smb2_clear_stats(struct cifs_tcon *tcon) | 50278 | @@ -274,8 +274,8 @@ smb2_clear_stats(struct cifs_tcon *tcon) |
@@ -51019,13 +50394,13 @@ index bceffe7..cd1ae59 100644 | |||
51019 | } | 50394 | } |
51020 | 50395 | ||
51021 | diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c | 50396 | diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c |
51022 | index 41d9d07..dbb4772 100644 | 50397 | index 2b95ce2..d079d75 100644 |
51023 | --- a/fs/cifs/smb2pdu.c | 50398 | --- a/fs/cifs/smb2pdu.c |
51024 | +++ b/fs/cifs/smb2pdu.c | 50399 | +++ b/fs/cifs/smb2pdu.c |
51025 | @@ -1761,8 +1761,7 @@ SMB2_query_directory(const unsigned int xid, struct cifs_tcon *tcon, | 50400 | @@ -1760,8 +1760,7 @@ SMB2_query_directory(const unsigned int xid, struct cifs_tcon *tcon, |
51026 | default: | 50401 | default: |
51027 | cERROR(1, "info level %u isn't supported", | 50402 | cifs_dbg(VFS, "info level %u isn't supported\n", |
51028 | srch_inf->info_level); | 50403 | srch_inf->info_level); |
51029 | - rc = -EINVAL; | 50404 | - rc = -EINVAL; |
51030 | - goto qdir_exit; | 50405 | - goto qdir_exit; |
51031 | + return -EINVAL; | 50406 | + return -EINVAL; |
@@ -51081,7 +50456,7 @@ index 1da168c..8bc7ff6 100644 | |||
51081 | 50456 | ||
51082 | return hit; | 50457 | return hit; |
51083 | diff --git a/fs/compat.c b/fs/compat.c | 50458 | diff --git a/fs/compat.c b/fs/compat.c |
51084 | index d487985..c9e04b1 100644 | 50459 | index fc3b55d..7b568ae 100644 |
51085 | --- a/fs/compat.c | 50460 | --- a/fs/compat.c |
51086 | +++ b/fs/compat.c | 50461 | +++ b/fs/compat.c |
51087 | @@ -54,7 +54,7 @@ | 50462 | @@ -54,7 +54,7 @@ |
@@ -51093,7 +50468,7 @@ index d487985..c9e04b1 100644 | |||
51093 | 50468 | ||
51094 | int compat_printk(const char *fmt, ...) | 50469 | int compat_printk(const char *fmt, ...) |
51095 | { | 50470 | { |
51096 | @@ -490,7 +490,7 @@ compat_sys_io_setup(unsigned nr_reqs, u32 __user *ctx32p) | 50471 | @@ -488,7 +488,7 @@ compat_sys_io_setup(unsigned nr_reqs, u32 __user *ctx32p) |
51097 | 50472 | ||
51098 | set_fs(KERNEL_DS); | 50473 | set_fs(KERNEL_DS); |
51099 | /* The __user pointer cast is valid because of the set_fs() */ | 50474 | /* The __user pointer cast is valid because of the set_fs() */ |
@@ -51102,7 +50477,7 @@ index d487985..c9e04b1 100644 | |||
51102 | set_fs(oldfs); | 50477 | set_fs(oldfs); |
51103 | /* truncating is ok because it's a user address */ | 50478 | /* truncating is ok because it's a user address */ |
51104 | if (!ret) | 50479 | if (!ret) |
51105 | @@ -548,7 +548,7 @@ ssize_t compat_rw_copy_check_uvector(int type, | 50480 | @@ -546,7 +546,7 @@ ssize_t compat_rw_copy_check_uvector(int type, |
51106 | goto out; | 50481 | goto out; |
51107 | 50482 | ||
51108 | ret = -EINVAL; | 50483 | ret = -EINVAL; |
@@ -51111,7 +50486,7 @@ index d487985..c9e04b1 100644 | |||
51111 | goto out; | 50486 | goto out; |
51112 | if (nr_segs > fast_segs) { | 50487 | if (nr_segs > fast_segs) { |
51113 | ret = -ENOMEM; | 50488 | ret = -ENOMEM; |
51114 | @@ -835,6 +835,7 @@ struct compat_old_linux_dirent { | 50489 | @@ -833,6 +833,7 @@ struct compat_old_linux_dirent { |
51115 | 50490 | ||
51116 | struct compat_readdir_callback { | 50491 | struct compat_readdir_callback { |
51117 | struct compat_old_linux_dirent __user *dirent; | 50492 | struct compat_old_linux_dirent __user *dirent; |
@@ -51119,7 +50494,7 @@ index d487985..c9e04b1 100644 | |||
51119 | int result; | 50494 | int result; |
51120 | }; | 50495 | }; |
51121 | 50496 | ||
51122 | @@ -852,6 +853,10 @@ static int compat_fillonedir(void *__buf, const char *name, int namlen, | 50497 | @@ -850,6 +851,10 @@ static int compat_fillonedir(void *__buf, const char *name, int namlen, |
51123 | buf->result = -EOVERFLOW; | 50498 | buf->result = -EOVERFLOW; |
51124 | return -EOVERFLOW; | 50499 | return -EOVERFLOW; |
51125 | } | 50500 | } |
@@ -51130,7 +50505,7 @@ index d487985..c9e04b1 100644 | |||
51130 | buf->result++; | 50505 | buf->result++; |
51131 | dirent = buf->dirent; | 50506 | dirent = buf->dirent; |
51132 | if (!access_ok(VERIFY_WRITE, dirent, | 50507 | if (!access_ok(VERIFY_WRITE, dirent, |
51133 | @@ -882,6 +887,7 @@ asmlinkage long compat_sys_old_readdir(unsigned int fd, | 50508 | @@ -880,6 +885,7 @@ asmlinkage long compat_sys_old_readdir(unsigned int fd, |
51134 | 50509 | ||
51135 | buf.result = 0; | 50510 | buf.result = 0; |
51136 | buf.dirent = dirent; | 50511 | buf.dirent = dirent; |
@@ -51138,7 +50513,7 @@ index d487985..c9e04b1 100644 | |||
51138 | 50513 | ||
51139 | error = vfs_readdir(f.file, compat_fillonedir, &buf); | 50514 | error = vfs_readdir(f.file, compat_fillonedir, &buf); |
51140 | if (buf.result) | 50515 | if (buf.result) |
51141 | @@ -901,6 +907,7 @@ struct compat_linux_dirent { | 50516 | @@ -899,6 +905,7 @@ struct compat_linux_dirent { |
51142 | struct compat_getdents_callback { | 50517 | struct compat_getdents_callback { |
51143 | struct compat_linux_dirent __user *current_dir; | 50518 | struct compat_linux_dirent __user *current_dir; |
51144 | struct compat_linux_dirent __user *previous; | 50519 | struct compat_linux_dirent __user *previous; |
@@ -51146,7 +50521,7 @@ index d487985..c9e04b1 100644 | |||
51146 | int count; | 50521 | int count; |
51147 | int error; | 50522 | int error; |
51148 | }; | 50523 | }; |
51149 | @@ -922,6 +929,10 @@ static int compat_filldir(void *__buf, const char *name, int namlen, | 50524 | @@ -920,6 +927,10 @@ static int compat_filldir(void *__buf, const char *name, int namlen, |
51150 | buf->error = -EOVERFLOW; | 50525 | buf->error = -EOVERFLOW; |
51151 | return -EOVERFLOW; | 50526 | return -EOVERFLOW; |
51152 | } | 50527 | } |
@@ -51157,7 +50532,7 @@ index d487985..c9e04b1 100644 | |||
51157 | dirent = buf->previous; | 50532 | dirent = buf->previous; |
51158 | if (dirent) { | 50533 | if (dirent) { |
51159 | if (__put_user(offset, &dirent->d_off)) | 50534 | if (__put_user(offset, &dirent->d_off)) |
51160 | @@ -967,6 +978,7 @@ asmlinkage long compat_sys_getdents(unsigned int fd, | 50535 | @@ -965,6 +976,7 @@ asmlinkage long compat_sys_getdents(unsigned int fd, |
51161 | buf.previous = NULL; | 50536 | buf.previous = NULL; |
51162 | buf.count = count; | 50537 | buf.count = count; |
51163 | buf.error = 0; | 50538 | buf.error = 0; |
@@ -51165,7 +50540,7 @@ index d487985..c9e04b1 100644 | |||
51165 | 50540 | ||
51166 | error = vfs_readdir(f.file, compat_filldir, &buf); | 50541 | error = vfs_readdir(f.file, compat_filldir, &buf); |
51167 | if (error >= 0) | 50542 | if (error >= 0) |
51168 | @@ -987,6 +999,7 @@ asmlinkage long compat_sys_getdents(unsigned int fd, | 50543 | @@ -985,6 +997,7 @@ asmlinkage long compat_sys_getdents(unsigned int fd, |
51169 | struct compat_getdents_callback64 { | 50544 | struct compat_getdents_callback64 { |
51170 | struct linux_dirent64 __user *current_dir; | 50545 | struct linux_dirent64 __user *current_dir; |
51171 | struct linux_dirent64 __user *previous; | 50546 | struct linux_dirent64 __user *previous; |
@@ -51173,7 +50548,7 @@ index d487985..c9e04b1 100644 | |||
51173 | int count; | 50548 | int count; |
51174 | int error; | 50549 | int error; |
51175 | }; | 50550 | }; |
51176 | @@ -1003,6 +1016,10 @@ static int compat_filldir64(void * __buf, const char * name, int namlen, loff_t | 50551 | @@ -1001,6 +1014,10 @@ static int compat_filldir64(void * __buf, const char * name, int namlen, loff_t |
51177 | buf->error = -EINVAL; /* only used if we fail.. */ | 50552 | buf->error = -EINVAL; /* only used if we fail.. */ |
51178 | if (reclen > buf->count) | 50553 | if (reclen > buf->count) |
51179 | return -EINVAL; | 50554 | return -EINVAL; |
@@ -51184,7 +50559,7 @@ index d487985..c9e04b1 100644 | |||
51184 | dirent = buf->previous; | 50559 | dirent = buf->previous; |
51185 | 50560 | ||
51186 | if (dirent) { | 50561 | if (dirent) { |
51187 | @@ -1052,13 +1069,14 @@ asmlinkage long compat_sys_getdents64(unsigned int fd, | 50562 | @@ -1050,13 +1067,14 @@ asmlinkage long compat_sys_getdents64(unsigned int fd, |
51188 | buf.previous = NULL; | 50563 | buf.previous = NULL; |
51189 | buf.count = count; | 50564 | buf.count = count; |
51190 | buf.error = 0; | 50565 | buf.error = 0; |
@@ -51219,10 +50594,10 @@ index a81147e..20bf2b5 100644 | |||
51219 | 50594 | ||
51220 | /* | 50595 | /* |
51221 | diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c | 50596 | diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c |
51222 | index 3ced75f..b28d192 100644 | 50597 | index 996cdc5..15e2f33 100644 |
51223 | --- a/fs/compat_ioctl.c | 50598 | --- a/fs/compat_ioctl.c |
51224 | +++ b/fs/compat_ioctl.c | 50599 | +++ b/fs/compat_ioctl.c |
51225 | @@ -623,7 +623,7 @@ static int serial_struct_ioctl(unsigned fd, unsigned cmd, | 50600 | @@ -622,7 +622,7 @@ static int serial_struct_ioctl(unsigned fd, unsigned cmd, |
51226 | return -EFAULT; | 50601 | return -EFAULT; |
51227 | if (__get_user(udata, &ss32->iomem_base)) | 50602 | if (__get_user(udata, &ss32->iomem_base)) |
51228 | return -EFAULT; | 50603 | return -EFAULT; |
@@ -51231,7 +50606,7 @@ index 3ced75f..b28d192 100644 | |||
51231 | if (__get_user(ss.iomem_reg_shift, &ss32->iomem_reg_shift) || | 50606 | if (__get_user(ss.iomem_reg_shift, &ss32->iomem_reg_shift) || |
51232 | __get_user(ss.port_high, &ss32->port_high)) | 50607 | __get_user(ss.port_high, &ss32->port_high)) |
51233 | return -EFAULT; | 50608 | return -EFAULT; |
51234 | @@ -704,8 +704,8 @@ static int do_i2c_rdwr_ioctl(unsigned int fd, unsigned int cmd, | 50609 | @@ -703,8 +703,8 @@ static int do_i2c_rdwr_ioctl(unsigned int fd, unsigned int cmd, |
51235 | for (i = 0; i < nmsgs; i++) { | 50610 | for (i = 0; i < nmsgs; i++) { |
51236 | if (copy_in_user(&tmsgs[i].addr, &umsgs[i].addr, 3*sizeof(u16))) | 50611 | if (copy_in_user(&tmsgs[i].addr, &umsgs[i].addr, 3*sizeof(u16))) |
51237 | return -EFAULT; | 50612 | return -EFAULT; |
@@ -51242,7 +50617,7 @@ index 3ced75f..b28d192 100644 | |||
51242 | return -EFAULT; | 50617 | return -EFAULT; |
51243 | } | 50618 | } |
51244 | return sys_ioctl(fd, cmd, (unsigned long)tdata); | 50619 | return sys_ioctl(fd, cmd, (unsigned long)tdata); |
51245 | @@ -798,7 +798,7 @@ static int compat_ioctl_preallocate(struct file *file, | 50620 | @@ -797,7 +797,7 @@ static int compat_ioctl_preallocate(struct file *file, |
51246 | copy_in_user(&p->l_len, &p32->l_len, sizeof(s64)) || | 50621 | copy_in_user(&p->l_len, &p32->l_len, sizeof(s64)) || |
51247 | copy_in_user(&p->l_sysid, &p32->l_sysid, sizeof(s32)) || | 50622 | copy_in_user(&p->l_sysid, &p32->l_sysid, sizeof(s32)) || |
51248 | copy_in_user(&p->l_pid, &p32->l_pid, sizeof(u32)) || | 50623 | copy_in_user(&p->l_pid, &p32->l_pid, sizeof(u32)) || |
@@ -51251,7 +50626,7 @@ index 3ced75f..b28d192 100644 | |||
51251 | return -EFAULT; | 50626 | return -EFAULT; |
51252 | 50627 | ||
51253 | return ioctl_preallocate(file, p); | 50628 | return ioctl_preallocate(file, p); |
51254 | @@ -1620,8 +1620,8 @@ asmlinkage long compat_sys_ioctl(unsigned int fd, unsigned int cmd, | 50629 | @@ -1619,8 +1619,8 @@ asmlinkage long compat_sys_ioctl(unsigned int fd, unsigned int cmd, |
51255 | static int __init init_sys32_ioctl_cmp(const void *p, const void *q) | 50630 | static int __init init_sys32_ioctl_cmp(const void *p, const void *q) |
51256 | { | 50631 | { |
51257 | unsigned int a, b; | 50632 | unsigned int a, b; |
@@ -51291,7 +50666,7 @@ index 7aabc6a..34c1197 100644 | |||
51291 | /* | 50666 | /* |
51292 | * We'll have a dentry and an inode for | 50667 | * We'll have a dentry and an inode for |
51293 | diff --git a/fs/coredump.c b/fs/coredump.c | 50668 | diff --git a/fs/coredump.c b/fs/coredump.c |
51294 | index c647965..a77bff3 100644 | 50669 | index dafafba..10b3b27 100644 |
51295 | --- a/fs/coredump.c | 50670 | --- a/fs/coredump.c |
51296 | +++ b/fs/coredump.c | 50671 | +++ b/fs/coredump.c |
51297 | @@ -52,7 +52,7 @@ struct core_name { | 50672 | @@ -52,7 +52,7 @@ struct core_name { |
@@ -51321,40 +50696,43 @@ index c647965..a77bff3 100644 | |||
51321 | cn->corename = kmalloc(cn->size, GFP_KERNEL); | 50696 | cn->corename = kmalloc(cn->size, GFP_KERNEL); |
51322 | cn->used = 0; | 50697 | cn->used = 0; |
51323 | 50698 | ||
51324 | @@ -414,17 +414,17 @@ static void wait_for_dump_helpers(struct file *file) | 50699 | @@ -435,8 +435,8 @@ static void wait_for_dump_helpers(struct file *file) |
51325 | pipe = file_inode(file)->i_pipe; | 50700 | struct pipe_inode_info *pipe = file->private_data; |
51326 | 50701 | ||
51327 | pipe_lock(pipe); | 50702 | pipe_lock(pipe); |
51328 | - pipe->readers++; | 50703 | - pipe->readers++; |
51329 | - pipe->writers--; | 50704 | - pipe->writers--; |
51330 | + atomic_inc(&pipe->readers); | 50705 | + atomic_inc(&pipe->readers); |
51331 | + atomic_dec(&pipe->writers); | 50706 | + atomic_dec(&pipe->writers); |
50707 | wake_up_interruptible_sync(&pipe->wait); | ||
50708 | kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN); | ||
50709 | pipe_unlock(pipe); | ||
50710 | @@ -445,11 +445,11 @@ static void wait_for_dump_helpers(struct file *file) | ||
50711 | * We actually want wait_event_freezable() but then we need | ||
50712 | * to clear TIF_SIGPENDING and improve dump_interrupted(). | ||
50713 | */ | ||
50714 | - wait_event_interruptible(pipe->wait, pipe->readers == 1); | ||
50715 | + wait_event_interruptible(pipe->wait, atomic_read(&pipe->readers) == 1); | ||
51332 | 50716 | ||
51333 | - while ((pipe->readers > 1) && (!signal_pending(current))) { | 50717 | pipe_lock(pipe); |
51334 | + while ((atomic_read(&pipe->readers) > 1) && (!signal_pending(current))) { | ||
51335 | wake_up_interruptible_sync(&pipe->wait); | ||
51336 | kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN); | ||
51337 | pipe_wait(pipe); | ||
51338 | } | ||
51339 | |||
51340 | - pipe->readers--; | 50718 | - pipe->readers--; |
51341 | - pipe->writers++; | 50719 | - pipe->writers++; |
51342 | + atomic_dec(&pipe->readers); | 50720 | + atomic_dec(&pipe->readers); |
51343 | + atomic_inc(&pipe->writers); | 50721 | + atomic_inc(&pipe->writers); |
51344 | pipe_unlock(pipe); | 50722 | pipe_unlock(pipe); |
51345 | |||
51346 | } | 50723 | } |
51347 | @@ -471,7 +471,8 @@ void do_coredump(siginfo_t *siginfo) | 50724 | |
51348 | int ispipe; | 50725 | @@ -496,7 +496,8 @@ void do_coredump(siginfo_t *siginfo) |
51349 | struct files_struct *displaced; | 50726 | struct files_struct *displaced; |
51350 | bool need_nonrelative = false; | 50727 | bool need_nonrelative = false; |
50728 | bool core_dumped = false; | ||
51351 | - static atomic_t core_dump_count = ATOMIC_INIT(0); | 50729 | - static atomic_t core_dump_count = ATOMIC_INIT(0); |
51352 | + static atomic_unchecked_t core_dump_count = ATOMIC_INIT(0); | 50730 | + static atomic_unchecked_t core_dump_count = ATOMIC_INIT(0); |
51353 | + long signr = siginfo->si_signo; | 50731 | + long signr = siginfo->si_signo; |
51354 | struct coredump_params cprm = { | 50732 | struct coredump_params cprm = { |
51355 | .siginfo = siginfo, | 50733 | .siginfo = siginfo, |
51356 | .regs = signal_pt_regs(), | 50734 | .regs = signal_pt_regs(), |
51357 | @@ -484,7 +485,10 @@ void do_coredump(siginfo_t *siginfo) | 50735 | @@ -509,7 +510,10 @@ void do_coredump(siginfo_t *siginfo) |
51358 | .mm_flags = mm->flags, | 50736 | .mm_flags = mm->flags, |
51359 | }; | 50737 | }; |
51360 | 50738 | ||
@@ -51366,7 +50744,7 @@ index c647965..a77bff3 100644 | |||
51366 | 50744 | ||
51367 | binfmt = mm->binfmt; | 50745 | binfmt = mm->binfmt; |
51368 | if (!binfmt || !binfmt->core_dump) | 50746 | if (!binfmt || !binfmt->core_dump) |
51369 | @@ -508,7 +512,7 @@ void do_coredump(siginfo_t *siginfo) | 50747 | @@ -533,7 +537,7 @@ void do_coredump(siginfo_t *siginfo) |
51370 | need_nonrelative = true; | 50748 | need_nonrelative = true; |
51371 | } | 50749 | } |
51372 | 50750 | ||
@@ -51375,7 +50753,7 @@ index c647965..a77bff3 100644 | |||
51375 | if (retval < 0) | 50753 | if (retval < 0) |
51376 | goto fail_creds; | 50754 | goto fail_creds; |
51377 | 50755 | ||
51378 | @@ -556,7 +560,7 @@ void do_coredump(siginfo_t *siginfo) | 50756 | @@ -576,7 +580,7 @@ void do_coredump(siginfo_t *siginfo) |
51379 | } | 50757 | } |
51380 | cprm.limit = RLIM_INFINITY; | 50758 | cprm.limit = RLIM_INFINITY; |
51381 | 50759 | ||
@@ -51384,7 +50762,7 @@ index c647965..a77bff3 100644 | |||
51384 | if (core_pipe_limit && (core_pipe_limit < dump_count)) { | 50762 | if (core_pipe_limit && (core_pipe_limit < dump_count)) { |
51385 | printk(KERN_WARNING "Pid %d(%s) over core_pipe_limit\n", | 50763 | printk(KERN_WARNING "Pid %d(%s) over core_pipe_limit\n", |
51386 | task_tgid_vnr(current), current->comm); | 50764 | task_tgid_vnr(current), current->comm); |
51387 | @@ -583,6 +587,8 @@ void do_coredump(siginfo_t *siginfo) | 50765 | @@ -608,6 +612,8 @@ void do_coredump(siginfo_t *siginfo) |
51388 | } else { | 50766 | } else { |
51389 | struct inode *inode; | 50767 | struct inode *inode; |
51390 | 50768 | ||
@@ -51393,7 +50771,7 @@ index c647965..a77bff3 100644 | |||
51393 | if (cprm.limit < binfmt->min_coredump) | 50771 | if (cprm.limit < binfmt->min_coredump) |
51394 | goto fail_unlock; | 50772 | goto fail_unlock; |
51395 | 50773 | ||
51396 | @@ -640,7 +646,7 @@ close_fail: | 50774 | @@ -666,7 +672,7 @@ close_fail: |
51397 | filp_close(cprm.file, NULL); | 50775 | filp_close(cprm.file, NULL); |
51398 | fail_dropcount: | 50776 | fail_dropcount: |
51399 | if (ispipe) | 50777 | if (ispipe) |
@@ -51402,25 +50780,26 @@ index c647965..a77bff3 100644 | |||
51402 | fail_unlock: | 50780 | fail_unlock: |
51403 | kfree(cn.corename); | 50781 | kfree(cn.corename); |
51404 | fail_corename: | 50782 | fail_corename: |
51405 | @@ -659,7 +665,7 @@ fail: | 50783 | @@ -687,7 +693,7 @@ int dump_write(struct file *file, const void *addr, int nr) |
51406 | */ | ||
51407 | int dump_write(struct file *file, const void *addr, int nr) | ||
51408 | { | 50784 | { |
51409 | - return access_ok(VERIFY_READ, addr, nr) && file->f_op->write(file, addr, nr, &file->f_pos) == nr; | 50785 | return !dump_interrupted() && |
51410 | + return access_ok(VERIFY_READ, addr, nr) && file->f_op->write(file, (const char __force_user *)addr, nr, &file->f_pos) == nr; | 50786 | access_ok(VERIFY_READ, addr, nr) && |
50787 | - file->f_op->write(file, addr, nr, &file->f_pos) == nr; | ||
50788 | + file->f_op->write(file, (const char __force_user *)addr, nr, &file->f_pos) == nr; | ||
51411 | } | 50789 | } |
51412 | EXPORT_SYMBOL(dump_write); | 50790 | EXPORT_SYMBOL(dump_write); |
51413 | 50791 | ||
51414 | diff --git a/fs/dcache.c b/fs/dcache.c | 50792 | diff --git a/fs/dcache.c b/fs/dcache.c |
51415 | index e689268..f36956e 100644 | 50793 | index f09b908..04b9690 100644 |
51416 | --- a/fs/dcache.c | 50794 | --- a/fs/dcache.c |
51417 | +++ b/fs/dcache.c | 50795 | +++ b/fs/dcache.c |
51418 | @@ -3100,7 +3100,7 @@ void __init vfs_caches_init(unsigned long mempages) | 50796 | @@ -3086,7 +3086,8 @@ void __init vfs_caches_init(unsigned long mempages) |
51419 | mempages -= reserve; | 50797 | mempages -= reserve; |
51420 | 50798 | ||
51421 | names_cachep = kmem_cache_create("names_cache", PATH_MAX, 0, | 50799 | names_cachep = kmem_cache_create("names_cache", PATH_MAX, 0, |
51422 | - SLAB_HWCACHE_ALIGN|SLAB_PANIC, NULL); | 50800 | - SLAB_HWCACHE_ALIGN|SLAB_PANIC, NULL); |
51423 | + SLAB_HWCACHE_ALIGN|SLAB_PANIC|SLAB_USERCOPY, NULL); | 50801 | + SLAB_HWCACHE_ALIGN|SLAB_PANIC|SLAB_USERCOPY| |
50802 | + SLAB_NO_SANITIZE, NULL); | ||
51424 | 50803 | ||
51425 | dcache_init(); | 50804 | dcache_init(); |
51426 | inode_init(); | 50805 | inode_init(); |
@@ -51475,21 +50854,8 @@ index e4141f2..d8263e8 100644 | |||
51475 | goto out_unlock_msg_ctx; | 50854 | goto out_unlock_msg_ctx; |
51476 | i += packet_length_size; | 50855 | i += packet_length_size; |
51477 | if (copy_to_user(&buf[i], msg_ctx->msg, msg_ctx->msg_size)) | 50856 | if (copy_to_user(&buf[i], msg_ctx->msg, msg_ctx->msg_size)) |
51478 | diff --git a/fs/ecryptfs/read_write.c b/fs/ecryptfs/read_write.c | ||
51479 | index 6a16053..2155147 100644 | ||
51480 | --- a/fs/ecryptfs/read_write.c | ||
51481 | +++ b/fs/ecryptfs/read_write.c | ||
51482 | @@ -240,7 +240,7 @@ int ecryptfs_read_lower(char *data, loff_t offset, size_t size, | ||
51483 | return -EIO; | ||
51484 | fs_save = get_fs(); | ||
51485 | set_fs(get_ds()); | ||
51486 | - rc = vfs_read(lower_file, data, size, &offset); | ||
51487 | + rc = vfs_read(lower_file, (char __force_user *)data, size, &offset); | ||
51488 | set_fs(fs_save); | ||
51489 | return rc; | ||
51490 | } | ||
51491 | diff --git a/fs/exec.c b/fs/exec.c | 50857 | diff --git a/fs/exec.c b/fs/exec.c |
51492 | index 0d5c76f..3d4585e 100644 | 50858 | index ffd7a81..d95acf6 100644 |
51493 | --- a/fs/exec.c | 50859 | --- a/fs/exec.c |
51494 | +++ b/fs/exec.c | 50860 | +++ b/fs/exec.c |
51495 | @@ -55,8 +55,20 @@ | 50861 | @@ -55,8 +55,20 @@ |
@@ -51616,7 +50982,7 @@ index 0d5c76f..3d4585e 100644 | |||
51616 | + | 50982 | + |
51617 | +#ifdef CONFIG_PAX_RANDUSTACK | 50983 | +#ifdef CONFIG_PAX_RANDUSTACK |
51618 | + if (randomize_va_space) | 50984 | + if (randomize_va_space) |
51619 | + bprm->p ^= random32() & ~PAGE_MASK; | 50985 | + bprm->p ^= prandom_u32() & ~PAGE_MASK; |
51620 | +#endif | 50986 | +#endif |
51621 | + | 50987 | + |
51622 | return 0; | 50988 | return 0; |
@@ -51767,7 +51133,7 @@ index 0d5c76f..3d4585e 100644 | |||
51767 | + | 51133 | + |
51768 | +#ifdef CONFIG_X86 | 51134 | +#ifdef CONFIG_X86 |
51769 | + if (!ret) { | 51135 | + if (!ret) { |
51770 | + size = mmap_min_addr + ((mm->delta_mmap ^ mm->delta_stack) & (0xFFUL << PAGE_SHIFT)); | 51136 | + size = PAGE_SIZE + mmap_min_addr + ((mm->delta_mmap ^ mm->delta_stack) & (0xFFUL << PAGE_SHIFT)); |
51771 | + ret = 0 != mmap_region(NULL, 0, PAGE_ALIGN(size), vm_flags, 0); | 51137 | + ret = 0 != mmap_region(NULL, 0, PAGE_ALIGN(size), vm_flags, 0); |
51772 | + } | 51138 | + } |
51773 | +#endif | 51139 | +#endif |
@@ -51796,7 +51162,7 @@ index 0d5c76f..3d4585e 100644 | |||
51796 | set_fs(old_fs); | 51162 | set_fs(old_fs); |
51797 | return result; | 51163 | return result; |
51798 | } | 51164 | } |
51799 | @@ -1252,7 +1330,7 @@ static int check_unsafe_exec(struct linux_binprm *bprm) | 51165 | @@ -1251,7 +1329,7 @@ static int check_unsafe_exec(struct linux_binprm *bprm) |
51800 | } | 51166 | } |
51801 | rcu_read_unlock(); | 51167 | rcu_read_unlock(); |
51802 | 51168 | ||
@@ -51805,7 +51171,7 @@ index 0d5c76f..3d4585e 100644 | |||
51805 | bprm->unsafe |= LSM_UNSAFE_SHARE; | 51171 | bprm->unsafe |= LSM_UNSAFE_SHARE; |
51806 | } else { | 51172 | } else { |
51807 | res = -EAGAIN; | 51173 | res = -EAGAIN; |
51808 | @@ -1452,6 +1530,31 @@ int search_binary_handler(struct linux_binprm *bprm) | 51174 | @@ -1451,6 +1529,31 @@ int search_binary_handler(struct linux_binprm *bprm) |
51809 | 51175 | ||
51810 | EXPORT_SYMBOL(search_binary_handler); | 51176 | EXPORT_SYMBOL(search_binary_handler); |
51811 | 51177 | ||
@@ -51837,7 +51203,7 @@ index 0d5c76f..3d4585e 100644 | |||
51837 | /* | 51203 | /* |
51838 | * sys_execve() executes a new program. | 51204 | * sys_execve() executes a new program. |
51839 | */ | 51205 | */ |
51840 | @@ -1459,6 +1562,11 @@ static int do_execve_common(const char *filename, | 51206 | @@ -1458,6 +1561,11 @@ static int do_execve_common(const char *filename, |
51841 | struct user_arg_ptr argv, | 51207 | struct user_arg_ptr argv, |
51842 | struct user_arg_ptr envp) | 51208 | struct user_arg_ptr envp) |
51843 | { | 51209 | { |
@@ -51849,7 +51215,7 @@ index 0d5c76f..3d4585e 100644 | |||
51849 | struct linux_binprm *bprm; | 51215 | struct linux_binprm *bprm; |
51850 | struct file *file; | 51216 | struct file *file; |
51851 | struct files_struct *displaced; | 51217 | struct files_struct *displaced; |
51852 | @@ -1466,6 +1574,8 @@ static int do_execve_common(const char *filename, | 51218 | @@ -1465,6 +1573,8 @@ static int do_execve_common(const char *filename, |
51853 | int retval; | 51219 | int retval; |
51854 | const struct cred *cred = current_cred(); | 51220 | const struct cred *cred = current_cred(); |
51855 | 51221 | ||
@@ -51858,7 +51224,7 @@ index 0d5c76f..3d4585e 100644 | |||
51858 | /* | 51224 | /* |
51859 | * We move the actual failure in case of RLIMIT_NPROC excess from | 51225 | * We move the actual failure in case of RLIMIT_NPROC excess from |
51860 | * set*uid() to execve() because too many poorly written programs | 51226 | * set*uid() to execve() because too many poorly written programs |
51861 | @@ -1506,12 +1616,22 @@ static int do_execve_common(const char *filename, | 51227 | @@ -1505,12 +1615,22 @@ static int do_execve_common(const char *filename, |
51862 | if (IS_ERR(file)) | 51228 | if (IS_ERR(file)) |
51863 | goto out_unmark; | 51229 | goto out_unmark; |
51864 | 51230 | ||
@@ -51881,7 +51247,7 @@ index 0d5c76f..3d4585e 100644 | |||
51881 | retval = bprm_mm_init(bprm); | 51247 | retval = bprm_mm_init(bprm); |
51882 | if (retval) | 51248 | if (retval) |
51883 | goto out_file; | 51249 | goto out_file; |
51884 | @@ -1528,24 +1648,70 @@ static int do_execve_common(const char *filename, | 51250 | @@ -1527,24 +1647,70 @@ static int do_execve_common(const char *filename, |
51885 | if (retval < 0) | 51251 | if (retval < 0) |
51886 | goto out; | 51252 | goto out; |
51887 | 51253 | ||
@@ -51956,7 +51322,7 @@ index 0d5c76f..3d4585e 100644 | |||
51956 | current->fs->in_exec = 0; | 51322 | current->fs->in_exec = 0; |
51957 | current->in_execve = 0; | 51323 | current->in_execve = 0; |
51958 | acct_update_integrals(current); | 51324 | acct_update_integrals(current); |
51959 | @@ -1554,6 +1720,14 @@ static int do_execve_common(const char *filename, | 51325 | @@ -1553,6 +1719,14 @@ static int do_execve_common(const char *filename, |
51960 | put_files_struct(displaced); | 51326 | put_files_struct(displaced); |
51961 | return retval; | 51327 | return retval; |
51962 | 51328 | ||
@@ -51971,7 +51337,7 @@ index 0d5c76f..3d4585e 100644 | |||
51971 | out: | 51337 | out: |
51972 | if (bprm->mm) { | 51338 | if (bprm->mm) { |
51973 | acct_arg_size(bprm, 0); | 51339 | acct_arg_size(bprm, 0); |
51974 | @@ -1702,3 +1876,283 @@ asmlinkage long compat_sys_execve(const char __user * filename, | 51340 | @@ -1701,3 +1875,285 @@ asmlinkage long compat_sys_execve(const char __user * filename, |
51975 | return error; | 51341 | return error; |
51976 | } | 51342 | } |
51977 | #endif | 51343 | #endif |
@@ -52030,6 +51396,25 @@ index 0d5c76f..3d4585e 100644 | |||
52030 | +EXPORT_SYMBOL(pax_check_flags); | 51396 | +EXPORT_SYMBOL(pax_check_flags); |
52031 | + | 51397 | + |
52032 | +#if defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC) | 51398 | +#if defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC) |
51399 | +char *pax_get_path(const struct path *path, char *buf, int buflen) | ||
51400 | +{ | ||
51401 | + char *pathname = d_path(path, buf, buflen); | ||
51402 | + | ||
51403 | + if (IS_ERR(pathname)) | ||
51404 | + goto toolong; | ||
51405 | + | ||
51406 | + pathname = mangle_path(buf, pathname, "\t\n\\"); | ||
51407 | + if (!pathname) | ||
51408 | + goto toolong; | ||
51409 | + | ||
51410 | + *pathname = 0; | ||
51411 | + return buf; | ||
51412 | + | ||
51413 | +toolong: | ||
51414 | + return "<path too long>"; | ||
51415 | +} | ||
51416 | +EXPORT_SYMBOL(pax_get_path); | ||
51417 | + | ||
52033 | +void pax_report_fault(struct pt_regs *regs, void *pc, void *sp) | 51418 | +void pax_report_fault(struct pt_regs *regs, void *pc, void *sp) |
52034 | +{ | 51419 | +{ |
52035 | + struct task_struct *tsk = current; | 51420 | + struct task_struct *tsk = current; |
@@ -52053,36 +51438,19 @@ index 0d5c76f..3d4585e 100644 | |||
52053 | + vma_fault = vma; | 51438 | + vma_fault = vma; |
52054 | + vma = vma->vm_next; | 51439 | + vma = vma->vm_next; |
52055 | + } | 51440 | + } |
52056 | + if (vma_exec) { | 51441 | + if (vma_exec) |
52057 | + path_exec = d_path(&vma_exec->vm_file->f_path, buffer_exec, PAGE_SIZE); | 51442 | + path_exec = pax_get_path(&vma_exec->vm_file->f_path, buffer_exec, PAGE_SIZE); |
52058 | + if (IS_ERR(path_exec)) | ||
52059 | + path_exec = "<path too long>"; | ||
52060 | + else { | ||
52061 | + path_exec = mangle_path(buffer_exec, path_exec, "\t\n\\"); | ||
52062 | + if (path_exec) { | ||
52063 | + *path_exec = 0; | ||
52064 | + path_exec = buffer_exec; | ||
52065 | + } else | ||
52066 | + path_exec = "<path too long>"; | ||
52067 | + } | ||
52068 | + } | ||
52069 | + if (vma_fault) { | 51443 | + if (vma_fault) { |
52070 | + start = vma_fault->vm_start; | 51444 | + start = vma_fault->vm_start; |
52071 | + end = vma_fault->vm_end; | 51445 | + end = vma_fault->vm_end; |
52072 | + offset = vma_fault->vm_pgoff << PAGE_SHIFT; | 51446 | + offset = vma_fault->vm_pgoff << PAGE_SHIFT; |
52073 | + if (vma_fault->vm_file) { | 51447 | + if (vma_fault->vm_file) |
52074 | + path_fault = d_path(&vma_fault->vm_file->f_path, buffer_fault, PAGE_SIZE); | 51448 | + path_fault = pax_get_path(&vma_fault->vm_file->f_path, buffer_fault, PAGE_SIZE); |
52075 | + if (IS_ERR(path_fault)) | 51449 | + else if (pc >= mm->start_brk && pc < mm->brk) |
52076 | + path_fault = "<path too long>"; | 51450 | + path_fault = "<heap>"; |
52077 | + else { | 51451 | + else if (vma_fault->vm_flags & (VM_GROWSDOWN | VM_GROWSUP)) |
52078 | + path_fault = mangle_path(buffer_fault, path_fault, "\t\n\\"); | 51452 | + path_fault = "<stack>"; |
52079 | + if (path_fault) { | 51453 | + else |
52080 | + *path_fault = 0; | ||
52081 | + path_fault = buffer_fault; | ||
52082 | + } else | ||
52083 | + path_fault = "<path too long>"; | ||
52084 | + } | ||
52085 | + } else | ||
52086 | + path_fault = "<anonymous mapping>"; | 51454 | + path_fault = "<anonymous mapping>"; |
52087 | + } | 51455 | + } |
52088 | + up_read(&mm->mmap_sem); | 51456 | + up_read(&mm->mmap_sem); |
@@ -52289,40 +51657,26 @@ index 22548f5..41521d8 100644 | |||
52289 | return 0; | 51657 | return 0; |
52290 | } | 51658 | } |
52291 | return 1; | 51659 | return 1; |
52292 | diff --git a/fs/ext3/inode.c b/fs/ext3/inode.c | ||
52293 | index d512c4b..d706dbf 100644 | ||
52294 | --- a/fs/ext3/inode.c | ||
52295 | +++ b/fs/ext3/inode.c | ||
52296 | @@ -218,7 +218,8 @@ void ext3_evict_inode (struct inode *inode) | ||
52297 | */ | ||
52298 | if (inode->i_nlink && ext3_should_journal_data(inode) && | ||
52299 | EXT3_SB(inode->i_sb)->s_journal && | ||
52300 | - (S_ISLNK(inode->i_mode) || S_ISREG(inode->i_mode))) { | ||
52301 | + (S_ISLNK(inode->i_mode) || S_ISREG(inode->i_mode)) && | ||
52302 | + inode->i_ino != EXT3_JOURNAL_INO) { | ||
52303 | tid_t commit_tid = atomic_read(&ei->i_datasync_tid); | ||
52304 | journal_t *journal = EXT3_SB(inode->i_sb)->s_journal; | ||
52305 | |||
52306 | diff --git a/fs/ext4/balloc.c b/fs/ext4/balloc.c | 51660 | diff --git a/fs/ext4/balloc.c b/fs/ext4/balloc.c |
52307 | index 92e68b3..115d987 100644 | 51661 | index 3742e4c..69a797f 100644 |
52308 | --- a/fs/ext4/balloc.c | 51662 | --- a/fs/ext4/balloc.c |
52309 | +++ b/fs/ext4/balloc.c | 51663 | +++ b/fs/ext4/balloc.c |
52310 | @@ -505,8 +505,8 @@ static int ext4_has_free_clusters(struct ext4_sb_info *sbi, | 51664 | @@ -528,8 +528,8 @@ static int ext4_has_free_clusters(struct ext4_sb_info *sbi, |
52311 | /* Hm, nope. Are (enough) root reserved clusters available? */ | 51665 | /* Hm, nope. Are (enough) root reserved clusters available? */ |
52312 | if (uid_eq(sbi->s_resuid, current_fsuid()) || | 51666 | if (uid_eq(sbi->s_resuid, current_fsuid()) || |
52313 | (!gid_eq(sbi->s_resgid, GLOBAL_ROOT_GID) && in_group_p(sbi->s_resgid)) || | 51667 | (!gid_eq(sbi->s_resgid, GLOBAL_ROOT_GID) && in_group_p(sbi->s_resgid)) || |
52314 | - capable(CAP_SYS_RESOURCE) || | 51668 | - capable(CAP_SYS_RESOURCE) || |
52315 | - (flags & EXT4_MB_USE_ROOT_BLOCKS)) { | 51669 | - (flags & EXT4_MB_USE_ROOT_BLOCKS)) { |
52316 | + (flags & EXT4_MB_USE_ROOT_BLOCKS) || | 51670 | + (flags & EXT4_MB_USE_ROOT_BLOCKS) || |
52317 | + capable_nolog(CAP_SYS_RESOURCE)) { | 51671 | + capable_nolog(CAP_SYS_RESOURCE)) { |
52318 | 51672 | ||
52319 | if (free_clusters >= (nclusters + dirty_clusters)) | 51673 | if (free_clusters >= (nclusters + dirty_clusters + |
52320 | return 1; | 51674 | resv_clusters)) |
52321 | diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h | 51675 | diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h |
52322 | index 3b83cd6..0f34dcd 100644 | 51676 | index 5aae3d1..b5da7f8 100644 |
52323 | --- a/fs/ext4/ext4.h | 51677 | --- a/fs/ext4/ext4.h |
52324 | +++ b/fs/ext4/ext4.h | 51678 | +++ b/fs/ext4/ext4.h |
52325 | @@ -1254,19 +1254,19 @@ struct ext4_sb_info { | 51679 | @@ -1252,19 +1252,19 @@ struct ext4_sb_info { |
52326 | unsigned long s_mb_last_start; | 51680 | unsigned long s_mb_last_start; |
52327 | 51681 | ||
52328 | /* stats for buddy allocator */ | 51682 | /* stats for buddy allocator */ |
@@ -52353,10 +51707,10 @@ index 3b83cd6..0f34dcd 100644 | |||
52353 | 51707 | ||
52354 | /* locality groups */ | 51708 | /* locality groups */ |
52355 | diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c | 51709 | diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c |
52356 | index 8b6e837..36fd6c1 100644 | 51710 | index 59c6750..a549154 100644 |
52357 | --- a/fs/ext4/mballoc.c | 51711 | --- a/fs/ext4/mballoc.c |
52358 | +++ b/fs/ext4/mballoc.c | 51712 | +++ b/fs/ext4/mballoc.c |
52359 | @@ -1754,7 +1754,7 @@ void ext4_mb_simple_scan_group(struct ext4_allocation_context *ac, | 51713 | @@ -1865,7 +1865,7 @@ void ext4_mb_simple_scan_group(struct ext4_allocation_context *ac, |
52360 | BUG_ON(ac->ac_b_ex.fe_len != ac->ac_g_ex.fe_len); | 51714 | BUG_ON(ac->ac_b_ex.fe_len != ac->ac_g_ex.fe_len); |
52361 | 51715 | ||
52362 | if (EXT4_SB(sb)->s_mb_stats) | 51716 | if (EXT4_SB(sb)->s_mb_stats) |
@@ -52365,7 +51719,7 @@ index 8b6e837..36fd6c1 100644 | |||
52365 | 51719 | ||
52366 | break; | 51720 | break; |
52367 | } | 51721 | } |
52368 | @@ -2059,7 +2059,7 @@ repeat: | 51722 | @@ -2170,7 +2170,7 @@ repeat: |
52369 | ac->ac_status = AC_STATUS_CONTINUE; | 51723 | ac->ac_status = AC_STATUS_CONTINUE; |
52370 | ac->ac_flags |= EXT4_MB_HINT_FIRST; | 51724 | ac->ac_flags |= EXT4_MB_HINT_FIRST; |
52371 | cr = 3; | 51725 | cr = 3; |
@@ -52374,7 +51728,7 @@ index 8b6e837..36fd6c1 100644 | |||
52374 | goto repeat; | 51728 | goto repeat; |
52375 | } | 51729 | } |
52376 | } | 51730 | } |
52377 | @@ -2567,25 +2567,25 @@ int ext4_mb_release(struct super_block *sb) | 51731 | @@ -2678,25 +2678,25 @@ int ext4_mb_release(struct super_block *sb) |
52378 | if (sbi->s_mb_stats) { | 51732 | if (sbi->s_mb_stats) { |
52379 | ext4_msg(sb, KERN_INFO, | 51733 | ext4_msg(sb, KERN_INFO, |
52380 | "mballoc: %u blocks %u reqs (%u success)", | 51734 | "mballoc: %u blocks %u reqs (%u success)", |
@@ -52410,7 +51764,7 @@ index 8b6e837..36fd6c1 100644 | |||
52410 | } | 51764 | } |
52411 | 51765 | ||
52412 | free_percpu(sbi->s_locality_groups); | 51766 | free_percpu(sbi->s_locality_groups); |
52413 | @@ -3039,16 +3039,16 @@ static void ext4_mb_collect_stats(struct ext4_allocation_context *ac) | 51767 | @@ -3150,16 +3150,16 @@ static void ext4_mb_collect_stats(struct ext4_allocation_context *ac) |
52414 | struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb); | 51768 | struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb); |
52415 | 51769 | ||
52416 | if (sbi->s_mb_stats && ac->ac_g_ex.fe_len > 1) { | 51770 | if (sbi->s_mb_stats && ac->ac_g_ex.fe_len > 1) { |
@@ -52433,7 +51787,7 @@ index 8b6e837..36fd6c1 100644 | |||
52433 | } | 51787 | } |
52434 | 51788 | ||
52435 | if (ac->ac_op == EXT4_MB_HISTORY_ALLOC) | 51789 | if (ac->ac_op == EXT4_MB_HISTORY_ALLOC) |
52436 | @@ -3448,7 +3448,7 @@ ext4_mb_new_inode_pa(struct ext4_allocation_context *ac) | 51790 | @@ -3559,7 +3559,7 @@ ext4_mb_new_inode_pa(struct ext4_allocation_context *ac) |
52437 | trace_ext4_mb_new_inode_pa(ac, pa); | 51791 | trace_ext4_mb_new_inode_pa(ac, pa); |
52438 | 51792 | ||
52439 | ext4_mb_use_inode_pa(ac, pa); | 51793 | ext4_mb_use_inode_pa(ac, pa); |
@@ -52442,7 +51796,7 @@ index 8b6e837..36fd6c1 100644 | |||
52442 | 51796 | ||
52443 | ei = EXT4_I(ac->ac_inode); | 51797 | ei = EXT4_I(ac->ac_inode); |
52444 | grp = ext4_get_group_info(sb, ac->ac_b_ex.fe_group); | 51798 | grp = ext4_get_group_info(sb, ac->ac_b_ex.fe_group); |
52445 | @@ -3508,7 +3508,7 @@ ext4_mb_new_group_pa(struct ext4_allocation_context *ac) | 51799 | @@ -3619,7 +3619,7 @@ ext4_mb_new_group_pa(struct ext4_allocation_context *ac) |
52446 | trace_ext4_mb_new_group_pa(ac, pa); | 51800 | trace_ext4_mb_new_group_pa(ac, pa); |
52447 | 51801 | ||
52448 | ext4_mb_use_group_pa(ac, pa); | 51802 | ext4_mb_use_group_pa(ac, pa); |
@@ -52451,7 +51805,7 @@ index 8b6e837..36fd6c1 100644 | |||
52451 | 51805 | ||
52452 | grp = ext4_get_group_info(sb, ac->ac_b_ex.fe_group); | 51806 | grp = ext4_get_group_info(sb, ac->ac_b_ex.fe_group); |
52453 | lg = ac->ac_lg; | 51807 | lg = ac->ac_lg; |
52454 | @@ -3597,7 +3597,7 @@ ext4_mb_release_inode_pa(struct ext4_buddy *e4b, struct buffer_head *bitmap_bh, | 51808 | @@ -3708,7 +3708,7 @@ ext4_mb_release_inode_pa(struct ext4_buddy *e4b, struct buffer_head *bitmap_bh, |
52455 | * from the bitmap and continue. | 51809 | * from the bitmap and continue. |
52456 | */ | 51810 | */ |
52457 | } | 51811 | } |
@@ -52460,7 +51814,7 @@ index 8b6e837..36fd6c1 100644 | |||
52460 | 51814 | ||
52461 | return err; | 51815 | return err; |
52462 | } | 51816 | } |
52463 | @@ -3615,7 +3615,7 @@ ext4_mb_release_group_pa(struct ext4_buddy *e4b, | 51817 | @@ -3726,7 +3726,7 @@ ext4_mb_release_group_pa(struct ext4_buddy *e4b, |
52464 | ext4_get_group_no_and_offset(sb, pa->pa_pstart, &group, &bit); | 51818 | ext4_get_group_no_and_offset(sb, pa->pa_pstart, &group, &bit); |
52465 | BUG_ON(group != e4b->bd_group && pa->pa_len != 0); | 51819 | BUG_ON(group != e4b->bd_group && pa->pa_len != 0); |
52466 | mb_free_blocks(pa->pa_inode, e4b, bit, pa->pa_len); | 51820 | mb_free_blocks(pa->pa_inode, e4b, bit, pa->pa_len); |
@@ -52470,7 +51824,7 @@ index 8b6e837..36fd6c1 100644 | |||
52470 | 51824 | ||
52471 | return 0; | 51825 | return 0; |
52472 | diff --git a/fs/ext4/mmp.c b/fs/ext4/mmp.c | 51826 | diff --git a/fs/ext4/mmp.c b/fs/ext4/mmp.c |
52473 | index b3b1f7d..cff51d5 100644 | 51827 | index 214461e..3614c89 100644 |
52474 | --- a/fs/ext4/mmp.c | 51828 | --- a/fs/ext4/mmp.c |
52475 | +++ b/fs/ext4/mmp.c | 51829 | +++ b/fs/ext4/mmp.c |
52476 | @@ -113,7 +113,7 @@ static int read_mmp_block(struct super_block *sb, struct buffer_head **bh, | 51830 | @@ -113,7 +113,7 @@ static int read_mmp_block(struct super_block *sb, struct buffer_head **bh, |
@@ -52483,7 +51837,7 @@ index b3b1f7d..cff51d5 100644 | |||
52483 | "MMP failure info: last update time: %llu, last update " | 51837 | "MMP failure info: last update time: %llu, last update " |
52484 | "node: %s, last update device: %s\n", | 51838 | "node: %s, last update device: %s\n", |
52485 | diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c | 51839 | diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c |
52486 | index 1cb76e8..0fe3928 100644 | 51840 | index 49d3c01..9579efd 100644 |
52487 | --- a/fs/ext4/resize.c | 51841 | --- a/fs/ext4/resize.c |
52488 | +++ b/fs/ext4/resize.c | 51842 | +++ b/fs/ext4/resize.c |
52489 | @@ -79,12 +79,20 @@ static int verify_group_input(struct super_block *sb, | 51843 | @@ -79,12 +79,20 @@ static int verify_group_input(struct super_block *sb, |
@@ -52522,10 +51876,10 @@ index 1cb76e8..0fe3928 100644 | |||
52522 | else if (input->reserved_blocks > input->blocks_count / 5) | 51876 | else if (input->reserved_blocks > input->blocks_count / 5) |
52523 | ext4_warning(sb, "Reserved blocks too high (%u)", | 51877 | ext4_warning(sb, "Reserved blocks too high (%u)", |
52524 | diff --git a/fs/ext4/super.c b/fs/ext4/super.c | 51878 | diff --git a/fs/ext4/super.c b/fs/ext4/super.c |
52525 | index febbe0e..d0cdc02 100644 | 51879 | index 6681c03..d88cd33 100644 |
52526 | --- a/fs/ext4/super.c | 51880 | --- a/fs/ext4/super.c |
52527 | +++ b/fs/ext4/super.c | 51881 | +++ b/fs/ext4/super.c |
52528 | @@ -1238,7 +1238,7 @@ static ext4_fsblk_t get_sb_block(void **data) | 51882 | @@ -1236,7 +1236,7 @@ static ext4_fsblk_t get_sb_block(void **data) |
52529 | } | 51883 | } |
52530 | 51884 | ||
52531 | #define DEFAULT_JOURNAL_IOPRIO (IOPRIO_PRIO_VALUE(IOPRIO_CLASS_BE, 3)) | 51885 | #define DEFAULT_JOURNAL_IOPRIO (IOPRIO_PRIO_VALUE(IOPRIO_CLASS_BE, 3)) |
@@ -52534,15 +51888,15 @@ index febbe0e..d0cdc02 100644 | |||
52534 | "Contact linux-ext4@vger.kernel.org if you think we should keep it.\n"; | 51888 | "Contact linux-ext4@vger.kernel.org if you think we should keep it.\n"; |
52535 | 51889 | ||
52536 | #ifdef CONFIG_QUOTA | 51890 | #ifdef CONFIG_QUOTA |
52537 | @@ -2380,7 +2380,7 @@ struct ext4_attr { | 51891 | @@ -2372,7 +2372,7 @@ struct ext4_attr { |
52538 | ssize_t (*store)(struct ext4_attr *, struct ext4_sb_info *, | 51892 | ssize_t (*store)(struct ext4_attr *, struct ext4_sb_info *, |
52539 | const char *, size_t); | 51893 | const char *, size_t); |
52540 | int offset; | 51894 | int offset; |
52541 | -}; | 51895 | -}; |
52542 | +} __do_const; | 51896 | +} __do_const; |
52543 | 51897 | ||
52544 | static int parse_strtoul(const char *buf, | 51898 | static int parse_strtoull(const char *buf, |
52545 | unsigned long max, unsigned long *value) | 51899 | unsigned long long max, unsigned long long *value) |
52546 | diff --git a/fs/fcntl.c b/fs/fcntl.c | 51900 | diff --git a/fs/fcntl.c b/fs/fcntl.c |
52547 | index 6599222..e7bf0de 100644 | 51901 | index 6599222..e7bf0de 100644 |
52548 | --- a/fs/fcntl.c | 51902 | --- a/fs/fcntl.c |
@@ -52573,82 +51927,8 @@ index 999ff5c..41f4109 100644 | |||
52573 | copy_to_user(ufh, handle, | 51927 | copy_to_user(ufh, handle, |
52574 | sizeof(struct file_handle) + handle_bytes)) | 51928 | sizeof(struct file_handle) + handle_bytes)) |
52575 | retval = -EFAULT; | 51929 | retval = -EFAULT; |
52576 | diff --git a/fs/fifo.c b/fs/fifo.c | ||
52577 | index cf6f434..3d7942c 100644 | ||
52578 | --- a/fs/fifo.c | ||
52579 | +++ b/fs/fifo.c | ||
52580 | @@ -59,10 +59,10 @@ static int fifo_open(struct inode *inode, struct file *filp) | ||
52581 | */ | ||
52582 | filp->f_op = &read_pipefifo_fops; | ||
52583 | pipe->r_counter++; | ||
52584 | - if (pipe->readers++ == 0) | ||
52585 | + if (atomic_inc_return(&pipe->readers) == 1) | ||
52586 | wake_up_partner(inode); | ||
52587 | |||
52588 | - if (!pipe->writers) { | ||
52589 | + if (!atomic_read(&pipe->writers)) { | ||
52590 | if ((filp->f_flags & O_NONBLOCK)) { | ||
52591 | /* suppress POLLHUP until we have | ||
52592 | * seen a writer */ | ||
52593 | @@ -81,15 +81,15 @@ static int fifo_open(struct inode *inode, struct file *filp) | ||
52594 | * errno=ENXIO when there is no process reading the FIFO. | ||
52595 | */ | ||
52596 | ret = -ENXIO; | ||
52597 | - if ((filp->f_flags & O_NONBLOCK) && !pipe->readers) | ||
52598 | + if ((filp->f_flags & O_NONBLOCK) && !atomic_read(&pipe->readers)) | ||
52599 | goto err; | ||
52600 | |||
52601 | filp->f_op = &write_pipefifo_fops; | ||
52602 | pipe->w_counter++; | ||
52603 | - if (!pipe->writers++) | ||
52604 | + if (atomic_inc_return(&pipe->writers) == 1) | ||
52605 | wake_up_partner(inode); | ||
52606 | |||
52607 | - if (!pipe->readers) { | ||
52608 | + if (!atomic_read(&pipe->readers)) { | ||
52609 | if (wait_for_partner(inode, &pipe->r_counter)) | ||
52610 | goto err_wr; | ||
52611 | } | ||
52612 | @@ -104,11 +104,11 @@ static int fifo_open(struct inode *inode, struct file *filp) | ||
52613 | */ | ||
52614 | filp->f_op = &rdwr_pipefifo_fops; | ||
52615 | |||
52616 | - pipe->readers++; | ||
52617 | - pipe->writers++; | ||
52618 | + atomic_inc(&pipe->readers); | ||
52619 | + atomic_inc(&pipe->writers); | ||
52620 | pipe->r_counter++; | ||
52621 | pipe->w_counter++; | ||
52622 | - if (pipe->readers == 1 || pipe->writers == 1) | ||
52623 | + if (atomic_read(&pipe->readers) == 1 || atomic_read(&pipe->writers) == 1) | ||
52624 | wake_up_partner(inode); | ||
52625 | break; | ||
52626 | |||
52627 | @@ -122,19 +122,19 @@ static int fifo_open(struct inode *inode, struct file *filp) | ||
52628 | return 0; | ||
52629 | |||
52630 | err_rd: | ||
52631 | - if (!--pipe->readers) | ||
52632 | + if (atomic_dec_and_test(&pipe->readers)) | ||
52633 | wake_up_interruptible(&pipe->wait); | ||
52634 | ret = -ERESTARTSYS; | ||
52635 | goto err; | ||
52636 | |||
52637 | err_wr: | ||
52638 | - if (!--pipe->writers) | ||
52639 | + if (atomic_dec_and_test(&pipe->writers)) | ||
52640 | wake_up_interruptible(&pipe->wait); | ||
52641 | ret = -ERESTARTSYS; | ||
52642 | goto err; | ||
52643 | |||
52644 | err: | ||
52645 | - if (!pipe->readers && !pipe->writers) | ||
52646 | + if (!atomic_read(&pipe->readers) && !atomic_read(&pipe->writers)) | ||
52647 | free_pipe_info(inode); | ||
52648 | |||
52649 | err_nocleanup: | ||
52650 | diff --git a/fs/file.c b/fs/file.c | 51930 | diff --git a/fs/file.c b/fs/file.c |
52651 | index 3906d95..5fe379b 100644 | 51931 | index 4a78f98..9447397 100644 |
52652 | --- a/fs/file.c | 51932 | --- a/fs/file.c |
52653 | +++ b/fs/file.c | 51933 | +++ b/fs/file.c |
52654 | @@ -16,6 +16,7 @@ | 51934 | @@ -16,6 +16,7 @@ |
@@ -52659,7 +51939,7 @@ index 3906d95..5fe379b 100644 | |||
52659 | #include <linux/fdtable.h> | 51939 | #include <linux/fdtable.h> |
52660 | #include <linux/bitops.h> | 51940 | #include <linux/bitops.h> |
52661 | #include <linux/interrupt.h> | 51941 | #include <linux/interrupt.h> |
52662 | @@ -892,6 +893,7 @@ int replace_fd(unsigned fd, struct file *file, unsigned flags) | 51942 | @@ -828,6 +829,7 @@ int replace_fd(unsigned fd, struct file *file, unsigned flags) |
52663 | if (!file) | 51943 | if (!file) |
52664 | return __close_fd(files, fd); | 51944 | return __close_fd(files, fd); |
52665 | 51945 | ||
@@ -52667,7 +51947,7 @@ index 3906d95..5fe379b 100644 | |||
52667 | if (fd >= rlimit(RLIMIT_NOFILE)) | 51947 | if (fd >= rlimit(RLIMIT_NOFILE)) |
52668 | return -EBADF; | 51948 | return -EBADF; |
52669 | 51949 | ||
52670 | @@ -918,6 +920,7 @@ SYSCALL_DEFINE3(dup3, unsigned int, oldfd, unsigned int, newfd, int, flags) | 51950 | @@ -854,6 +856,7 @@ SYSCALL_DEFINE3(dup3, unsigned int, oldfd, unsigned int, newfd, int, flags) |
52671 | if (unlikely(oldfd == newfd)) | 51951 | if (unlikely(oldfd == newfd)) |
52672 | return -EINVAL; | 51952 | return -EINVAL; |
52673 | 51953 | ||
@@ -52675,7 +51955,7 @@ index 3906d95..5fe379b 100644 | |||
52675 | if (newfd >= rlimit(RLIMIT_NOFILE)) | 51955 | if (newfd >= rlimit(RLIMIT_NOFILE)) |
52676 | return -EBADF; | 51956 | return -EBADF; |
52677 | 51957 | ||
52678 | @@ -973,6 +976,7 @@ SYSCALL_DEFINE1(dup, unsigned int, fildes) | 51958 | @@ -909,6 +912,7 @@ SYSCALL_DEFINE1(dup, unsigned int, fildes) |
52679 | int f_dupfd(unsigned int from, struct file *file, unsigned flags) | 51959 | int f_dupfd(unsigned int from, struct file *file, unsigned flags) |
52680 | { | 51960 | { |
52681 | int err; | 51961 | int err; |
@@ -52927,7 +52207,9 @@ index ee38fef..0a326d4 100644 | |||
52927 | #ifdef CONFIG_FSCACHE_STATS | 52207 | #ifdef CONFIG_FSCACHE_STATS |
52928 | -extern atomic_t fscache_n_ops_processed[FSCACHE_MAX_THREADS]; | 52208 | -extern atomic_t fscache_n_ops_processed[FSCACHE_MAX_THREADS]; |
52929 | -extern atomic_t fscache_n_objs_processed[FSCACHE_MAX_THREADS]; | 52209 | -extern atomic_t fscache_n_objs_processed[FSCACHE_MAX_THREADS]; |
52930 | - | 52210 | +extern atomic_unchecked_t fscache_n_ops_processed[FSCACHE_MAX_THREADS]; |
52211 | +extern atomic_unchecked_t fscache_n_objs_processed[FSCACHE_MAX_THREADS]; | ||
52212 | |||
52931 | -extern atomic_t fscache_n_op_pend; | 52213 | -extern atomic_t fscache_n_op_pend; |
52932 | -extern atomic_t fscache_n_op_run; | 52214 | -extern atomic_t fscache_n_op_run; |
52933 | -extern atomic_t fscache_n_op_enqueue; | 52215 | -extern atomic_t fscache_n_op_enqueue; |
@@ -52936,13 +52218,26 @@ index ee38fef..0a326d4 100644 | |||
52936 | -extern atomic_t fscache_n_op_gc; | 52218 | -extern atomic_t fscache_n_op_gc; |
52937 | -extern atomic_t fscache_n_op_cancelled; | 52219 | -extern atomic_t fscache_n_op_cancelled; |
52938 | -extern atomic_t fscache_n_op_rejected; | 52220 | -extern atomic_t fscache_n_op_rejected; |
52939 | - | 52221 | +extern atomic_unchecked_t fscache_n_op_pend; |
52222 | +extern atomic_unchecked_t fscache_n_op_run; | ||
52223 | +extern atomic_unchecked_t fscache_n_op_enqueue; | ||
52224 | +extern atomic_unchecked_t fscache_n_op_deferred_release; | ||
52225 | +extern atomic_unchecked_t fscache_n_op_release; | ||
52226 | +extern atomic_unchecked_t fscache_n_op_gc; | ||
52227 | +extern atomic_unchecked_t fscache_n_op_cancelled; | ||
52228 | +extern atomic_unchecked_t fscache_n_op_rejected; | ||
52229 | |||
52940 | -extern atomic_t fscache_n_attr_changed; | 52230 | -extern atomic_t fscache_n_attr_changed; |
52941 | -extern atomic_t fscache_n_attr_changed_ok; | 52231 | -extern atomic_t fscache_n_attr_changed_ok; |
52942 | -extern atomic_t fscache_n_attr_changed_nobufs; | 52232 | -extern atomic_t fscache_n_attr_changed_nobufs; |
52943 | -extern atomic_t fscache_n_attr_changed_nomem; | 52233 | -extern atomic_t fscache_n_attr_changed_nomem; |
52944 | -extern atomic_t fscache_n_attr_changed_calls; | 52234 | -extern atomic_t fscache_n_attr_changed_calls; |
52945 | - | 52235 | +extern atomic_unchecked_t fscache_n_attr_changed; |
52236 | +extern atomic_unchecked_t fscache_n_attr_changed_ok; | ||
52237 | +extern atomic_unchecked_t fscache_n_attr_changed_nobufs; | ||
52238 | +extern atomic_unchecked_t fscache_n_attr_changed_nomem; | ||
52239 | +extern atomic_unchecked_t fscache_n_attr_changed_calls; | ||
52240 | |||
52946 | -extern atomic_t fscache_n_allocs; | 52241 | -extern atomic_t fscache_n_allocs; |
52947 | -extern atomic_t fscache_n_allocs_ok; | 52242 | -extern atomic_t fscache_n_allocs_ok; |
52948 | -extern atomic_t fscache_n_allocs_wait; | 52243 | -extern atomic_t fscache_n_allocs_wait; |
@@ -52951,7 +52246,15 @@ index ee38fef..0a326d4 100644 | |||
52951 | -extern atomic_t fscache_n_allocs_object_dead; | 52246 | -extern atomic_t fscache_n_allocs_object_dead; |
52952 | -extern atomic_t fscache_n_alloc_ops; | 52247 | -extern atomic_t fscache_n_alloc_ops; |
52953 | -extern atomic_t fscache_n_alloc_op_waits; | 52248 | -extern atomic_t fscache_n_alloc_op_waits; |
52954 | - | 52249 | +extern atomic_unchecked_t fscache_n_allocs; |
52250 | +extern atomic_unchecked_t fscache_n_allocs_ok; | ||
52251 | +extern atomic_unchecked_t fscache_n_allocs_wait; | ||
52252 | +extern atomic_unchecked_t fscache_n_allocs_nobufs; | ||
52253 | +extern atomic_unchecked_t fscache_n_allocs_intr; | ||
52254 | +extern atomic_unchecked_t fscache_n_allocs_object_dead; | ||
52255 | +extern atomic_unchecked_t fscache_n_alloc_ops; | ||
52256 | +extern atomic_unchecked_t fscache_n_alloc_op_waits; | ||
52257 | |||
52955 | -extern atomic_t fscache_n_retrievals; | 52258 | -extern atomic_t fscache_n_retrievals; |
52956 | -extern atomic_t fscache_n_retrievals_ok; | 52259 | -extern atomic_t fscache_n_retrievals_ok; |
52957 | -extern atomic_t fscache_n_retrievals_wait; | 52260 | -extern atomic_t fscache_n_retrievals_wait; |
@@ -52962,91 +52265,6 @@ index ee38fef..0a326d4 100644 | |||
52962 | -extern atomic_t fscache_n_retrievals_object_dead; | 52265 | -extern atomic_t fscache_n_retrievals_object_dead; |
52963 | -extern atomic_t fscache_n_retrieval_ops; | 52266 | -extern atomic_t fscache_n_retrieval_ops; |
52964 | -extern atomic_t fscache_n_retrieval_op_waits; | 52267 | -extern atomic_t fscache_n_retrieval_op_waits; |
52965 | - | ||
52966 | -extern atomic_t fscache_n_stores; | ||
52967 | -extern atomic_t fscache_n_stores_ok; | ||
52968 | -extern atomic_t fscache_n_stores_again; | ||
52969 | -extern atomic_t fscache_n_stores_nobufs; | ||
52970 | -extern atomic_t fscache_n_stores_oom; | ||
52971 | -extern atomic_t fscache_n_store_ops; | ||
52972 | -extern atomic_t fscache_n_store_calls; | ||
52973 | -extern atomic_t fscache_n_store_pages; | ||
52974 | -extern atomic_t fscache_n_store_radix_deletes; | ||
52975 | -extern atomic_t fscache_n_store_pages_over_limit; | ||
52976 | - | ||
52977 | -extern atomic_t fscache_n_store_vmscan_not_storing; | ||
52978 | -extern atomic_t fscache_n_store_vmscan_gone; | ||
52979 | -extern atomic_t fscache_n_store_vmscan_busy; | ||
52980 | -extern atomic_t fscache_n_store_vmscan_cancelled; | ||
52981 | -extern atomic_t fscache_n_store_vmscan_wait; | ||
52982 | - | ||
52983 | -extern atomic_t fscache_n_marks; | ||
52984 | -extern atomic_t fscache_n_uncaches; | ||
52985 | - | ||
52986 | -extern atomic_t fscache_n_acquires; | ||
52987 | -extern atomic_t fscache_n_acquires_null; | ||
52988 | -extern atomic_t fscache_n_acquires_no_cache; | ||
52989 | -extern atomic_t fscache_n_acquires_ok; | ||
52990 | -extern atomic_t fscache_n_acquires_nobufs; | ||
52991 | -extern atomic_t fscache_n_acquires_oom; | ||
52992 | - | ||
52993 | -extern atomic_t fscache_n_invalidates; | ||
52994 | -extern atomic_t fscache_n_invalidates_run; | ||
52995 | - | ||
52996 | -extern atomic_t fscache_n_updates; | ||
52997 | -extern atomic_t fscache_n_updates_null; | ||
52998 | -extern atomic_t fscache_n_updates_run; | ||
52999 | - | ||
53000 | -extern atomic_t fscache_n_relinquishes; | ||
53001 | -extern atomic_t fscache_n_relinquishes_null; | ||
53002 | -extern atomic_t fscache_n_relinquishes_waitcrt; | ||
53003 | -extern atomic_t fscache_n_relinquishes_retire; | ||
53004 | - | ||
53005 | -extern atomic_t fscache_n_cookie_index; | ||
53006 | -extern atomic_t fscache_n_cookie_data; | ||
53007 | -extern atomic_t fscache_n_cookie_special; | ||
53008 | - | ||
53009 | -extern atomic_t fscache_n_object_alloc; | ||
53010 | -extern atomic_t fscache_n_object_no_alloc; | ||
53011 | -extern atomic_t fscache_n_object_lookups; | ||
53012 | -extern atomic_t fscache_n_object_lookups_negative; | ||
53013 | -extern atomic_t fscache_n_object_lookups_positive; | ||
53014 | -extern atomic_t fscache_n_object_lookups_timed_out; | ||
53015 | -extern atomic_t fscache_n_object_created; | ||
53016 | -extern atomic_t fscache_n_object_avail; | ||
53017 | -extern atomic_t fscache_n_object_dead; | ||
53018 | - | ||
53019 | -extern atomic_t fscache_n_checkaux_none; | ||
53020 | -extern atomic_t fscache_n_checkaux_okay; | ||
53021 | -extern atomic_t fscache_n_checkaux_update; | ||
53022 | -extern atomic_t fscache_n_checkaux_obsolete; | ||
53023 | +extern atomic_unchecked_t fscache_n_ops_processed[FSCACHE_MAX_THREADS]; | ||
53024 | +extern atomic_unchecked_t fscache_n_objs_processed[FSCACHE_MAX_THREADS]; | ||
53025 | + | ||
53026 | +extern atomic_unchecked_t fscache_n_op_pend; | ||
53027 | +extern atomic_unchecked_t fscache_n_op_run; | ||
53028 | +extern atomic_unchecked_t fscache_n_op_enqueue; | ||
53029 | +extern atomic_unchecked_t fscache_n_op_deferred_release; | ||
53030 | +extern atomic_unchecked_t fscache_n_op_release; | ||
53031 | +extern atomic_unchecked_t fscache_n_op_gc; | ||
53032 | +extern atomic_unchecked_t fscache_n_op_cancelled; | ||
53033 | +extern atomic_unchecked_t fscache_n_op_rejected; | ||
53034 | + | ||
53035 | +extern atomic_unchecked_t fscache_n_attr_changed; | ||
53036 | +extern atomic_unchecked_t fscache_n_attr_changed_ok; | ||
53037 | +extern atomic_unchecked_t fscache_n_attr_changed_nobufs; | ||
53038 | +extern atomic_unchecked_t fscache_n_attr_changed_nomem; | ||
53039 | +extern atomic_unchecked_t fscache_n_attr_changed_calls; | ||
53040 | + | ||
53041 | +extern atomic_unchecked_t fscache_n_allocs; | ||
53042 | +extern atomic_unchecked_t fscache_n_allocs_ok; | ||
53043 | +extern atomic_unchecked_t fscache_n_allocs_wait; | ||
53044 | +extern atomic_unchecked_t fscache_n_allocs_nobufs; | ||
53045 | +extern atomic_unchecked_t fscache_n_allocs_intr; | ||
53046 | +extern atomic_unchecked_t fscache_n_allocs_object_dead; | ||
53047 | +extern atomic_unchecked_t fscache_n_alloc_ops; | ||
53048 | +extern atomic_unchecked_t fscache_n_alloc_op_waits; | ||
53049 | + | ||
53050 | +extern atomic_unchecked_t fscache_n_retrievals; | 52268 | +extern atomic_unchecked_t fscache_n_retrievals; |
53051 | +extern atomic_unchecked_t fscache_n_retrievals_ok; | 52269 | +extern atomic_unchecked_t fscache_n_retrievals_ok; |
53052 | +extern atomic_unchecked_t fscache_n_retrievals_wait; | 52270 | +extern atomic_unchecked_t fscache_n_retrievals_wait; |
@@ -53057,7 +52275,17 @@ index ee38fef..0a326d4 100644 | |||
53057 | +extern atomic_unchecked_t fscache_n_retrievals_object_dead; | 52275 | +extern atomic_unchecked_t fscache_n_retrievals_object_dead; |
53058 | +extern atomic_unchecked_t fscache_n_retrieval_ops; | 52276 | +extern atomic_unchecked_t fscache_n_retrieval_ops; |
53059 | +extern atomic_unchecked_t fscache_n_retrieval_op_waits; | 52277 | +extern atomic_unchecked_t fscache_n_retrieval_op_waits; |
53060 | + | 52278 | |
52279 | -extern atomic_t fscache_n_stores; | ||
52280 | -extern atomic_t fscache_n_stores_ok; | ||
52281 | -extern atomic_t fscache_n_stores_again; | ||
52282 | -extern atomic_t fscache_n_stores_nobufs; | ||
52283 | -extern atomic_t fscache_n_stores_oom; | ||
52284 | -extern atomic_t fscache_n_store_ops; | ||
52285 | -extern atomic_t fscache_n_store_calls; | ||
52286 | -extern atomic_t fscache_n_store_pages; | ||
52287 | -extern atomic_t fscache_n_store_radix_deletes; | ||
52288 | -extern atomic_t fscache_n_store_pages_over_limit; | ||
53061 | +extern atomic_unchecked_t fscache_n_stores; | 52289 | +extern atomic_unchecked_t fscache_n_stores; |
53062 | +extern atomic_unchecked_t fscache_n_stores_ok; | 52290 | +extern atomic_unchecked_t fscache_n_stores_ok; |
53063 | +extern atomic_unchecked_t fscache_n_stores_again; | 52291 | +extern atomic_unchecked_t fscache_n_stores_again; |
@@ -53068,39 +52296,73 @@ index ee38fef..0a326d4 100644 | |||
53068 | +extern atomic_unchecked_t fscache_n_store_pages; | 52296 | +extern atomic_unchecked_t fscache_n_store_pages; |
53069 | +extern atomic_unchecked_t fscache_n_store_radix_deletes; | 52297 | +extern atomic_unchecked_t fscache_n_store_radix_deletes; |
53070 | +extern atomic_unchecked_t fscache_n_store_pages_over_limit; | 52298 | +extern atomic_unchecked_t fscache_n_store_pages_over_limit; |
53071 | + | 52299 | |
52300 | -extern atomic_t fscache_n_store_vmscan_not_storing; | ||
52301 | -extern atomic_t fscache_n_store_vmscan_gone; | ||
52302 | -extern atomic_t fscache_n_store_vmscan_busy; | ||
52303 | -extern atomic_t fscache_n_store_vmscan_cancelled; | ||
52304 | -extern atomic_t fscache_n_store_vmscan_wait; | ||
53072 | +extern atomic_unchecked_t fscache_n_store_vmscan_not_storing; | 52305 | +extern atomic_unchecked_t fscache_n_store_vmscan_not_storing; |
53073 | +extern atomic_unchecked_t fscache_n_store_vmscan_gone; | 52306 | +extern atomic_unchecked_t fscache_n_store_vmscan_gone; |
53074 | +extern atomic_unchecked_t fscache_n_store_vmscan_busy; | 52307 | +extern atomic_unchecked_t fscache_n_store_vmscan_busy; |
53075 | +extern atomic_unchecked_t fscache_n_store_vmscan_cancelled; | 52308 | +extern atomic_unchecked_t fscache_n_store_vmscan_cancelled; |
53076 | +extern atomic_unchecked_t fscache_n_store_vmscan_wait; | 52309 | +extern atomic_unchecked_t fscache_n_store_vmscan_wait; |
53077 | + | 52310 | |
52311 | -extern atomic_t fscache_n_marks; | ||
52312 | -extern atomic_t fscache_n_uncaches; | ||
53078 | +extern atomic_unchecked_t fscache_n_marks; | 52313 | +extern atomic_unchecked_t fscache_n_marks; |
53079 | +extern atomic_unchecked_t fscache_n_uncaches; | 52314 | +extern atomic_unchecked_t fscache_n_uncaches; |
53080 | + | 52315 | |
52316 | -extern atomic_t fscache_n_acquires; | ||
52317 | -extern atomic_t fscache_n_acquires_null; | ||
52318 | -extern atomic_t fscache_n_acquires_no_cache; | ||
52319 | -extern atomic_t fscache_n_acquires_ok; | ||
52320 | -extern atomic_t fscache_n_acquires_nobufs; | ||
52321 | -extern atomic_t fscache_n_acquires_oom; | ||
53081 | +extern atomic_unchecked_t fscache_n_acquires; | 52322 | +extern atomic_unchecked_t fscache_n_acquires; |
53082 | +extern atomic_unchecked_t fscache_n_acquires_null; | 52323 | +extern atomic_unchecked_t fscache_n_acquires_null; |
53083 | +extern atomic_unchecked_t fscache_n_acquires_no_cache; | 52324 | +extern atomic_unchecked_t fscache_n_acquires_no_cache; |
53084 | +extern atomic_unchecked_t fscache_n_acquires_ok; | 52325 | +extern atomic_unchecked_t fscache_n_acquires_ok; |
53085 | +extern atomic_unchecked_t fscache_n_acquires_nobufs; | 52326 | +extern atomic_unchecked_t fscache_n_acquires_nobufs; |
53086 | +extern atomic_unchecked_t fscache_n_acquires_oom; | 52327 | +extern atomic_unchecked_t fscache_n_acquires_oom; |
53087 | + | 52328 | |
52329 | -extern atomic_t fscache_n_invalidates; | ||
52330 | -extern atomic_t fscache_n_invalidates_run; | ||
53088 | +extern atomic_unchecked_t fscache_n_invalidates; | 52331 | +extern atomic_unchecked_t fscache_n_invalidates; |
53089 | +extern atomic_unchecked_t fscache_n_invalidates_run; | 52332 | +extern atomic_unchecked_t fscache_n_invalidates_run; |
53090 | + | 52333 | |
52334 | -extern atomic_t fscache_n_updates; | ||
52335 | -extern atomic_t fscache_n_updates_null; | ||
52336 | -extern atomic_t fscache_n_updates_run; | ||
53091 | +extern atomic_unchecked_t fscache_n_updates; | 52337 | +extern atomic_unchecked_t fscache_n_updates; |
53092 | +extern atomic_unchecked_t fscache_n_updates_null; | 52338 | +extern atomic_unchecked_t fscache_n_updates_null; |
53093 | +extern atomic_unchecked_t fscache_n_updates_run; | 52339 | +extern atomic_unchecked_t fscache_n_updates_run; |
53094 | + | 52340 | |
52341 | -extern atomic_t fscache_n_relinquishes; | ||
52342 | -extern atomic_t fscache_n_relinquishes_null; | ||
52343 | -extern atomic_t fscache_n_relinquishes_waitcrt; | ||
52344 | -extern atomic_t fscache_n_relinquishes_retire; | ||
53095 | +extern atomic_unchecked_t fscache_n_relinquishes; | 52345 | +extern atomic_unchecked_t fscache_n_relinquishes; |
53096 | +extern atomic_unchecked_t fscache_n_relinquishes_null; | 52346 | +extern atomic_unchecked_t fscache_n_relinquishes_null; |
53097 | +extern atomic_unchecked_t fscache_n_relinquishes_waitcrt; | 52347 | +extern atomic_unchecked_t fscache_n_relinquishes_waitcrt; |
53098 | +extern atomic_unchecked_t fscache_n_relinquishes_retire; | 52348 | +extern atomic_unchecked_t fscache_n_relinquishes_retire; |
53099 | + | 52349 | |
52350 | -extern atomic_t fscache_n_cookie_index; | ||
52351 | -extern atomic_t fscache_n_cookie_data; | ||
52352 | -extern atomic_t fscache_n_cookie_special; | ||
53100 | +extern atomic_unchecked_t fscache_n_cookie_index; | 52353 | +extern atomic_unchecked_t fscache_n_cookie_index; |
53101 | +extern atomic_unchecked_t fscache_n_cookie_data; | 52354 | +extern atomic_unchecked_t fscache_n_cookie_data; |
53102 | +extern atomic_unchecked_t fscache_n_cookie_special; | 52355 | +extern atomic_unchecked_t fscache_n_cookie_special; |
53103 | + | 52356 | |
52357 | -extern atomic_t fscache_n_object_alloc; | ||
52358 | -extern atomic_t fscache_n_object_no_alloc; | ||
52359 | -extern atomic_t fscache_n_object_lookups; | ||
52360 | -extern atomic_t fscache_n_object_lookups_negative; | ||
52361 | -extern atomic_t fscache_n_object_lookups_positive; | ||
52362 | -extern atomic_t fscache_n_object_lookups_timed_out; | ||
52363 | -extern atomic_t fscache_n_object_created; | ||
52364 | -extern atomic_t fscache_n_object_avail; | ||
52365 | -extern atomic_t fscache_n_object_dead; | ||
53104 | +extern atomic_unchecked_t fscache_n_object_alloc; | 52366 | +extern atomic_unchecked_t fscache_n_object_alloc; |
53105 | +extern atomic_unchecked_t fscache_n_object_no_alloc; | 52367 | +extern atomic_unchecked_t fscache_n_object_no_alloc; |
53106 | +extern atomic_unchecked_t fscache_n_object_lookups; | 52368 | +extern atomic_unchecked_t fscache_n_object_lookups; |
@@ -53110,7 +52372,11 @@ index ee38fef..0a326d4 100644 | |||
53110 | +extern atomic_unchecked_t fscache_n_object_created; | 52372 | +extern atomic_unchecked_t fscache_n_object_created; |
53111 | +extern atomic_unchecked_t fscache_n_object_avail; | 52373 | +extern atomic_unchecked_t fscache_n_object_avail; |
53112 | +extern atomic_unchecked_t fscache_n_object_dead; | 52374 | +extern atomic_unchecked_t fscache_n_object_dead; |
53113 | + | 52375 | |
52376 | -extern atomic_t fscache_n_checkaux_none; | ||
52377 | -extern atomic_t fscache_n_checkaux_okay; | ||
52378 | -extern atomic_t fscache_n_checkaux_update; | ||
52379 | -extern atomic_t fscache_n_checkaux_obsolete; | ||
53114 | +extern atomic_unchecked_t fscache_n_checkaux_none; | 52380 | +extern atomic_unchecked_t fscache_n_checkaux_none; |
53115 | +extern atomic_unchecked_t fscache_n_checkaux_okay; | 52381 | +extern atomic_unchecked_t fscache_n_checkaux_okay; |
53116 | +extern atomic_unchecked_t fscache_n_checkaux_update; | 52382 | +extern atomic_unchecked_t fscache_n_checkaux_update; |
@@ -53807,13 +53073,27 @@ index 40d13c7..ddf52b9 100644 | |||
53807 | -atomic_t fscache_n_op_gc; | 53073 | -atomic_t fscache_n_op_gc; |
53808 | -atomic_t fscache_n_op_cancelled; | 53074 | -atomic_t fscache_n_op_cancelled; |
53809 | -atomic_t fscache_n_op_rejected; | 53075 | -atomic_t fscache_n_op_rejected; |
53810 | - | 53076 | +atomic_unchecked_t fscache_n_op_pend; |
53077 | +atomic_unchecked_t fscache_n_op_run; | ||
53078 | +atomic_unchecked_t fscache_n_op_enqueue; | ||
53079 | +atomic_unchecked_t fscache_n_op_requeue; | ||
53080 | +atomic_unchecked_t fscache_n_op_deferred_release; | ||
53081 | +atomic_unchecked_t fscache_n_op_release; | ||
53082 | +atomic_unchecked_t fscache_n_op_gc; | ||
53083 | +atomic_unchecked_t fscache_n_op_cancelled; | ||
53084 | +atomic_unchecked_t fscache_n_op_rejected; | ||
53085 | |||
53811 | -atomic_t fscache_n_attr_changed; | 53086 | -atomic_t fscache_n_attr_changed; |
53812 | -atomic_t fscache_n_attr_changed_ok; | 53087 | -atomic_t fscache_n_attr_changed_ok; |
53813 | -atomic_t fscache_n_attr_changed_nobufs; | 53088 | -atomic_t fscache_n_attr_changed_nobufs; |
53814 | -atomic_t fscache_n_attr_changed_nomem; | 53089 | -atomic_t fscache_n_attr_changed_nomem; |
53815 | -atomic_t fscache_n_attr_changed_calls; | 53090 | -atomic_t fscache_n_attr_changed_calls; |
53816 | - | 53091 | +atomic_unchecked_t fscache_n_attr_changed; |
53092 | +atomic_unchecked_t fscache_n_attr_changed_ok; | ||
53093 | +atomic_unchecked_t fscache_n_attr_changed_nobufs; | ||
53094 | +atomic_unchecked_t fscache_n_attr_changed_nomem; | ||
53095 | +atomic_unchecked_t fscache_n_attr_changed_calls; | ||
53096 | |||
53817 | -atomic_t fscache_n_allocs; | 53097 | -atomic_t fscache_n_allocs; |
53818 | -atomic_t fscache_n_allocs_ok; | 53098 | -atomic_t fscache_n_allocs_ok; |
53819 | -atomic_t fscache_n_allocs_wait; | 53099 | -atomic_t fscache_n_allocs_wait; |
@@ -53822,7 +53102,15 @@ index 40d13c7..ddf52b9 100644 | |||
53822 | -atomic_t fscache_n_allocs_object_dead; | 53102 | -atomic_t fscache_n_allocs_object_dead; |
53823 | -atomic_t fscache_n_alloc_ops; | 53103 | -atomic_t fscache_n_alloc_ops; |
53824 | -atomic_t fscache_n_alloc_op_waits; | 53104 | -atomic_t fscache_n_alloc_op_waits; |
53825 | - | 53105 | +atomic_unchecked_t fscache_n_allocs; |
53106 | +atomic_unchecked_t fscache_n_allocs_ok; | ||
53107 | +atomic_unchecked_t fscache_n_allocs_wait; | ||
53108 | +atomic_unchecked_t fscache_n_allocs_nobufs; | ||
53109 | +atomic_unchecked_t fscache_n_allocs_intr; | ||
53110 | +atomic_unchecked_t fscache_n_allocs_object_dead; | ||
53111 | +atomic_unchecked_t fscache_n_alloc_ops; | ||
53112 | +atomic_unchecked_t fscache_n_alloc_op_waits; | ||
53113 | |||
53826 | -atomic_t fscache_n_retrievals; | 53114 | -atomic_t fscache_n_retrievals; |
53827 | -atomic_t fscache_n_retrievals_ok; | 53115 | -atomic_t fscache_n_retrievals_ok; |
53828 | -atomic_t fscache_n_retrievals_wait; | 53116 | -atomic_t fscache_n_retrievals_wait; |
@@ -53833,89 +53121,6 @@ index 40d13c7..ddf52b9 100644 | |||
53833 | -atomic_t fscache_n_retrievals_object_dead; | 53121 | -atomic_t fscache_n_retrievals_object_dead; |
53834 | -atomic_t fscache_n_retrieval_ops; | 53122 | -atomic_t fscache_n_retrieval_ops; |
53835 | -atomic_t fscache_n_retrieval_op_waits; | 53123 | -atomic_t fscache_n_retrieval_op_waits; |
53836 | - | ||
53837 | -atomic_t fscache_n_stores; | ||
53838 | -atomic_t fscache_n_stores_ok; | ||
53839 | -atomic_t fscache_n_stores_again; | ||
53840 | -atomic_t fscache_n_stores_nobufs; | ||
53841 | -atomic_t fscache_n_stores_oom; | ||
53842 | -atomic_t fscache_n_store_ops; | ||
53843 | -atomic_t fscache_n_store_calls; | ||
53844 | -atomic_t fscache_n_store_pages; | ||
53845 | -atomic_t fscache_n_store_radix_deletes; | ||
53846 | -atomic_t fscache_n_store_pages_over_limit; | ||
53847 | - | ||
53848 | -atomic_t fscache_n_store_vmscan_not_storing; | ||
53849 | -atomic_t fscache_n_store_vmscan_gone; | ||
53850 | -atomic_t fscache_n_store_vmscan_busy; | ||
53851 | -atomic_t fscache_n_store_vmscan_cancelled; | ||
53852 | -atomic_t fscache_n_store_vmscan_wait; | ||
53853 | - | ||
53854 | -atomic_t fscache_n_marks; | ||
53855 | -atomic_t fscache_n_uncaches; | ||
53856 | - | ||
53857 | -atomic_t fscache_n_acquires; | ||
53858 | -atomic_t fscache_n_acquires_null; | ||
53859 | -atomic_t fscache_n_acquires_no_cache; | ||
53860 | -atomic_t fscache_n_acquires_ok; | ||
53861 | -atomic_t fscache_n_acquires_nobufs; | ||
53862 | -atomic_t fscache_n_acquires_oom; | ||
53863 | - | ||
53864 | -atomic_t fscache_n_invalidates; | ||
53865 | -atomic_t fscache_n_invalidates_run; | ||
53866 | - | ||
53867 | -atomic_t fscache_n_updates; | ||
53868 | -atomic_t fscache_n_updates_null; | ||
53869 | -atomic_t fscache_n_updates_run; | ||
53870 | - | ||
53871 | -atomic_t fscache_n_relinquishes; | ||
53872 | -atomic_t fscache_n_relinquishes_null; | ||
53873 | -atomic_t fscache_n_relinquishes_waitcrt; | ||
53874 | -atomic_t fscache_n_relinquishes_retire; | ||
53875 | - | ||
53876 | -atomic_t fscache_n_cookie_index; | ||
53877 | -atomic_t fscache_n_cookie_data; | ||
53878 | -atomic_t fscache_n_cookie_special; | ||
53879 | - | ||
53880 | -atomic_t fscache_n_object_alloc; | ||
53881 | -atomic_t fscache_n_object_no_alloc; | ||
53882 | -atomic_t fscache_n_object_lookups; | ||
53883 | -atomic_t fscache_n_object_lookups_negative; | ||
53884 | -atomic_t fscache_n_object_lookups_positive; | ||
53885 | -atomic_t fscache_n_object_lookups_timed_out; | ||
53886 | -atomic_t fscache_n_object_created; | ||
53887 | -atomic_t fscache_n_object_avail; | ||
53888 | -atomic_t fscache_n_object_dead; | ||
53889 | - | ||
53890 | -atomic_t fscache_n_checkaux_none; | ||
53891 | -atomic_t fscache_n_checkaux_okay; | ||
53892 | -atomic_t fscache_n_checkaux_update; | ||
53893 | -atomic_t fscache_n_checkaux_obsolete; | ||
53894 | +atomic_unchecked_t fscache_n_op_pend; | ||
53895 | +atomic_unchecked_t fscache_n_op_run; | ||
53896 | +atomic_unchecked_t fscache_n_op_enqueue; | ||
53897 | +atomic_unchecked_t fscache_n_op_requeue; | ||
53898 | +atomic_unchecked_t fscache_n_op_deferred_release; | ||
53899 | +atomic_unchecked_t fscache_n_op_release; | ||
53900 | +atomic_unchecked_t fscache_n_op_gc; | ||
53901 | +atomic_unchecked_t fscache_n_op_cancelled; | ||
53902 | +atomic_unchecked_t fscache_n_op_rejected; | ||
53903 | + | ||
53904 | +atomic_unchecked_t fscache_n_attr_changed; | ||
53905 | +atomic_unchecked_t fscache_n_attr_changed_ok; | ||
53906 | +atomic_unchecked_t fscache_n_attr_changed_nobufs; | ||
53907 | +atomic_unchecked_t fscache_n_attr_changed_nomem; | ||
53908 | +atomic_unchecked_t fscache_n_attr_changed_calls; | ||
53909 | + | ||
53910 | +atomic_unchecked_t fscache_n_allocs; | ||
53911 | +atomic_unchecked_t fscache_n_allocs_ok; | ||
53912 | +atomic_unchecked_t fscache_n_allocs_wait; | ||
53913 | +atomic_unchecked_t fscache_n_allocs_nobufs; | ||
53914 | +atomic_unchecked_t fscache_n_allocs_intr; | ||
53915 | +atomic_unchecked_t fscache_n_allocs_object_dead; | ||
53916 | +atomic_unchecked_t fscache_n_alloc_ops; | ||
53917 | +atomic_unchecked_t fscache_n_alloc_op_waits; | ||
53918 | + | ||
53919 | +atomic_unchecked_t fscache_n_retrievals; | 53124 | +atomic_unchecked_t fscache_n_retrievals; |
53920 | +atomic_unchecked_t fscache_n_retrievals_ok; | 53125 | +atomic_unchecked_t fscache_n_retrievals_ok; |
53921 | +atomic_unchecked_t fscache_n_retrievals_wait; | 53126 | +atomic_unchecked_t fscache_n_retrievals_wait; |
@@ -53926,7 +53131,17 @@ index 40d13c7..ddf52b9 100644 | |||
53926 | +atomic_unchecked_t fscache_n_retrievals_object_dead; | 53131 | +atomic_unchecked_t fscache_n_retrievals_object_dead; |
53927 | +atomic_unchecked_t fscache_n_retrieval_ops; | 53132 | +atomic_unchecked_t fscache_n_retrieval_ops; |
53928 | +atomic_unchecked_t fscache_n_retrieval_op_waits; | 53133 | +atomic_unchecked_t fscache_n_retrieval_op_waits; |
53929 | + | 53134 | |
53135 | -atomic_t fscache_n_stores; | ||
53136 | -atomic_t fscache_n_stores_ok; | ||
53137 | -atomic_t fscache_n_stores_again; | ||
53138 | -atomic_t fscache_n_stores_nobufs; | ||
53139 | -atomic_t fscache_n_stores_oom; | ||
53140 | -atomic_t fscache_n_store_ops; | ||
53141 | -atomic_t fscache_n_store_calls; | ||
53142 | -atomic_t fscache_n_store_pages; | ||
53143 | -atomic_t fscache_n_store_radix_deletes; | ||
53144 | -atomic_t fscache_n_store_pages_over_limit; | ||
53930 | +atomic_unchecked_t fscache_n_stores; | 53145 | +atomic_unchecked_t fscache_n_stores; |
53931 | +atomic_unchecked_t fscache_n_stores_ok; | 53146 | +atomic_unchecked_t fscache_n_stores_ok; |
53932 | +atomic_unchecked_t fscache_n_stores_again; | 53147 | +atomic_unchecked_t fscache_n_stores_again; |
@@ -53937,39 +53152,73 @@ index 40d13c7..ddf52b9 100644 | |||
53937 | +atomic_unchecked_t fscache_n_store_pages; | 53152 | +atomic_unchecked_t fscache_n_store_pages; |
53938 | +atomic_unchecked_t fscache_n_store_radix_deletes; | 53153 | +atomic_unchecked_t fscache_n_store_radix_deletes; |
53939 | +atomic_unchecked_t fscache_n_store_pages_over_limit; | 53154 | +atomic_unchecked_t fscache_n_store_pages_over_limit; |
53940 | + | 53155 | |
53156 | -atomic_t fscache_n_store_vmscan_not_storing; | ||
53157 | -atomic_t fscache_n_store_vmscan_gone; | ||
53158 | -atomic_t fscache_n_store_vmscan_busy; | ||
53159 | -atomic_t fscache_n_store_vmscan_cancelled; | ||
53160 | -atomic_t fscache_n_store_vmscan_wait; | ||
53941 | +atomic_unchecked_t fscache_n_store_vmscan_not_storing; | 53161 | +atomic_unchecked_t fscache_n_store_vmscan_not_storing; |
53942 | +atomic_unchecked_t fscache_n_store_vmscan_gone; | 53162 | +atomic_unchecked_t fscache_n_store_vmscan_gone; |
53943 | +atomic_unchecked_t fscache_n_store_vmscan_busy; | 53163 | +atomic_unchecked_t fscache_n_store_vmscan_busy; |
53944 | +atomic_unchecked_t fscache_n_store_vmscan_cancelled; | 53164 | +atomic_unchecked_t fscache_n_store_vmscan_cancelled; |
53945 | +atomic_unchecked_t fscache_n_store_vmscan_wait; | 53165 | +atomic_unchecked_t fscache_n_store_vmscan_wait; |
53946 | + | 53166 | |
53167 | -atomic_t fscache_n_marks; | ||
53168 | -atomic_t fscache_n_uncaches; | ||
53947 | +atomic_unchecked_t fscache_n_marks; | 53169 | +atomic_unchecked_t fscache_n_marks; |
53948 | +atomic_unchecked_t fscache_n_uncaches; | 53170 | +atomic_unchecked_t fscache_n_uncaches; |
53949 | + | 53171 | |
53172 | -atomic_t fscache_n_acquires; | ||
53173 | -atomic_t fscache_n_acquires_null; | ||
53174 | -atomic_t fscache_n_acquires_no_cache; | ||
53175 | -atomic_t fscache_n_acquires_ok; | ||
53176 | -atomic_t fscache_n_acquires_nobufs; | ||
53177 | -atomic_t fscache_n_acquires_oom; | ||
53950 | +atomic_unchecked_t fscache_n_acquires; | 53178 | +atomic_unchecked_t fscache_n_acquires; |
53951 | +atomic_unchecked_t fscache_n_acquires_null; | 53179 | +atomic_unchecked_t fscache_n_acquires_null; |
53952 | +atomic_unchecked_t fscache_n_acquires_no_cache; | 53180 | +atomic_unchecked_t fscache_n_acquires_no_cache; |
53953 | +atomic_unchecked_t fscache_n_acquires_ok; | 53181 | +atomic_unchecked_t fscache_n_acquires_ok; |
53954 | +atomic_unchecked_t fscache_n_acquires_nobufs; | 53182 | +atomic_unchecked_t fscache_n_acquires_nobufs; |
53955 | +atomic_unchecked_t fscache_n_acquires_oom; | 53183 | +atomic_unchecked_t fscache_n_acquires_oom; |
53956 | + | 53184 | |
53185 | -atomic_t fscache_n_invalidates; | ||
53186 | -atomic_t fscache_n_invalidates_run; | ||
53957 | +atomic_unchecked_t fscache_n_invalidates; | 53187 | +atomic_unchecked_t fscache_n_invalidates; |
53958 | +atomic_unchecked_t fscache_n_invalidates_run; | 53188 | +atomic_unchecked_t fscache_n_invalidates_run; |
53959 | + | 53189 | |
53190 | -atomic_t fscache_n_updates; | ||
53191 | -atomic_t fscache_n_updates_null; | ||
53192 | -atomic_t fscache_n_updates_run; | ||
53960 | +atomic_unchecked_t fscache_n_updates; | 53193 | +atomic_unchecked_t fscache_n_updates; |
53961 | +atomic_unchecked_t fscache_n_updates_null; | 53194 | +atomic_unchecked_t fscache_n_updates_null; |
53962 | +atomic_unchecked_t fscache_n_updates_run; | 53195 | +atomic_unchecked_t fscache_n_updates_run; |
53963 | + | 53196 | |
53197 | -atomic_t fscache_n_relinquishes; | ||
53198 | -atomic_t fscache_n_relinquishes_null; | ||
53199 | -atomic_t fscache_n_relinquishes_waitcrt; | ||
53200 | -atomic_t fscache_n_relinquishes_retire; | ||
53964 | +atomic_unchecked_t fscache_n_relinquishes; | 53201 | +atomic_unchecked_t fscache_n_relinquishes; |
53965 | +atomic_unchecked_t fscache_n_relinquishes_null; | 53202 | +atomic_unchecked_t fscache_n_relinquishes_null; |
53966 | +atomic_unchecked_t fscache_n_relinquishes_waitcrt; | 53203 | +atomic_unchecked_t fscache_n_relinquishes_waitcrt; |
53967 | +atomic_unchecked_t fscache_n_relinquishes_retire; | 53204 | +atomic_unchecked_t fscache_n_relinquishes_retire; |
53968 | + | 53205 | |
53206 | -atomic_t fscache_n_cookie_index; | ||
53207 | -atomic_t fscache_n_cookie_data; | ||
53208 | -atomic_t fscache_n_cookie_special; | ||
53969 | +atomic_unchecked_t fscache_n_cookie_index; | 53209 | +atomic_unchecked_t fscache_n_cookie_index; |
53970 | +atomic_unchecked_t fscache_n_cookie_data; | 53210 | +atomic_unchecked_t fscache_n_cookie_data; |
53971 | +atomic_unchecked_t fscache_n_cookie_special; | 53211 | +atomic_unchecked_t fscache_n_cookie_special; |
53972 | + | 53212 | |
53213 | -atomic_t fscache_n_object_alloc; | ||
53214 | -atomic_t fscache_n_object_no_alloc; | ||
53215 | -atomic_t fscache_n_object_lookups; | ||
53216 | -atomic_t fscache_n_object_lookups_negative; | ||
53217 | -atomic_t fscache_n_object_lookups_positive; | ||
53218 | -atomic_t fscache_n_object_lookups_timed_out; | ||
53219 | -atomic_t fscache_n_object_created; | ||
53220 | -atomic_t fscache_n_object_avail; | ||
53221 | -atomic_t fscache_n_object_dead; | ||
53973 | +atomic_unchecked_t fscache_n_object_alloc; | 53222 | +atomic_unchecked_t fscache_n_object_alloc; |
53974 | +atomic_unchecked_t fscache_n_object_no_alloc; | 53223 | +atomic_unchecked_t fscache_n_object_no_alloc; |
53975 | +atomic_unchecked_t fscache_n_object_lookups; | 53224 | +atomic_unchecked_t fscache_n_object_lookups; |
@@ -53979,7 +53228,11 @@ index 40d13c7..ddf52b9 100644 | |||
53979 | +atomic_unchecked_t fscache_n_object_created; | 53228 | +atomic_unchecked_t fscache_n_object_created; |
53980 | +atomic_unchecked_t fscache_n_object_avail; | 53229 | +atomic_unchecked_t fscache_n_object_avail; |
53981 | +atomic_unchecked_t fscache_n_object_dead; | 53230 | +atomic_unchecked_t fscache_n_object_dead; |
53982 | + | 53231 | |
53232 | -atomic_t fscache_n_checkaux_none; | ||
53233 | -atomic_t fscache_n_checkaux_okay; | ||
53234 | -atomic_t fscache_n_checkaux_update; | ||
53235 | -atomic_t fscache_n_checkaux_obsolete; | ||
53983 | +atomic_unchecked_t fscache_n_checkaux_none; | 53236 | +atomic_unchecked_t fscache_n_checkaux_none; |
53984 | +atomic_unchecked_t fscache_n_checkaux_okay; | 53237 | +atomic_unchecked_t fscache_n_checkaux_okay; |
53985 | +atomic_unchecked_t fscache_n_checkaux_update; | 53238 | +atomic_unchecked_t fscache_n_checkaux_update; |
@@ -54186,10 +53439,10 @@ index 40d13c7..ddf52b9 100644 | |||
54186 | seq_printf(m, "CacheOp: alo=%d luo=%d luc=%d gro=%d\n", | 53439 | seq_printf(m, "CacheOp: alo=%d luo=%d luc=%d gro=%d\n", |
54187 | atomic_read(&fscache_n_cop_alloc_object), | 53440 | atomic_read(&fscache_n_cop_alloc_object), |
54188 | diff --git a/fs/fuse/cuse.c b/fs/fuse/cuse.c | 53441 | diff --git a/fs/fuse/cuse.c b/fs/fuse/cuse.c |
54189 | index 6f96a8d..6019bb9 100644 | 53442 | index aef34b1..59bfd7b 100644 |
54190 | --- a/fs/fuse/cuse.c | 53443 | --- a/fs/fuse/cuse.c |
54191 | +++ b/fs/fuse/cuse.c | 53444 | +++ b/fs/fuse/cuse.c |
54192 | @@ -597,10 +597,12 @@ static int __init cuse_init(void) | 53445 | @@ -600,10 +600,12 @@ static int __init cuse_init(void) |
54193 | INIT_LIST_HEAD(&cuse_conntbl[i]); | 53446 | INIT_LIST_HEAD(&cuse_conntbl[i]); |
54194 | 53447 | ||
54195 | /* inherit and extend fuse_dev_operations */ | 53448 | /* inherit and extend fuse_dev_operations */ |
@@ -54207,10 +53460,10 @@ index 6f96a8d..6019bb9 100644 | |||
54207 | cuse_class = class_create(THIS_MODULE, "cuse"); | 53460 | cuse_class = class_create(THIS_MODULE, "cuse"); |
54208 | if (IS_ERR(cuse_class)) | 53461 | if (IS_ERR(cuse_class)) |
54209 | diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c | 53462 | diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c |
54210 | index 11dfa0c..6f64416 100644 | 53463 | index 1d55f94..088da65 100644 |
54211 | --- a/fs/fuse/dev.c | 53464 | --- a/fs/fuse/dev.c |
54212 | +++ b/fs/fuse/dev.c | 53465 | +++ b/fs/fuse/dev.c |
54213 | @@ -1294,7 +1294,7 @@ static ssize_t fuse_dev_splice_read(struct file *in, loff_t *ppos, | 53466 | @@ -1339,7 +1339,7 @@ static ssize_t fuse_dev_splice_read(struct file *in, loff_t *ppos, |
54214 | ret = 0; | 53467 | ret = 0; |
54215 | pipe_lock(pipe); | 53468 | pipe_lock(pipe); |
54216 | 53469 | ||
@@ -54219,77 +53472,20 @@ index 11dfa0c..6f64416 100644 | |||
54219 | send_sig(SIGPIPE, current, 0); | 53472 | send_sig(SIGPIPE, current, 0); |
54220 | if (!ret) | 53473 | if (!ret) |
54221 | ret = -EPIPE; | 53474 | ret = -EPIPE; |
53475 | @@ -1364,7 +1364,7 @@ static ssize_t fuse_dev_splice_read(struct file *in, loff_t *ppos, | ||
53476 | page_nr++; | ||
53477 | ret += buf->len; | ||
53478 | |||
53479 | - if (pipe->files) | ||
53480 | + if (atomic_read(&pipe->files)) | ||
53481 | do_wakeup = 1; | ||
53482 | } | ||
53483 | |||
54222 | diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c | 53484 | diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c |
54223 | index 185c479..2a4c1b2 100644 | 53485 | index 5b12746..b481b03 100644 |
54224 | --- a/fs/fuse/dir.c | 53486 | --- a/fs/fuse/dir.c |
54225 | +++ b/fs/fuse/dir.c | 53487 | +++ b/fs/fuse/dir.c |
54226 | @@ -1225,13 +1225,29 @@ static int fuse_direntplus_link(struct file *file, | 53488 | @@ -1437,7 +1437,7 @@ static char *read_link(struct dentry *dentry) |
54227 | if (name.name[1] == '.' && name.len == 2) | ||
54228 | return 0; | ||
54229 | } | ||
54230 | + | ||
54231 | + if (invalid_nodeid(o->nodeid)) | ||
54232 | + return -EIO; | ||
54233 | + if (!fuse_valid_type(o->attr.mode)) | ||
54234 | + return -EIO; | ||
54235 | + | ||
54236 | fc = get_fuse_conn(dir); | ||
54237 | |||
54238 | name.hash = full_name_hash(name.name, name.len); | ||
54239 | dentry = d_lookup(parent, &name); | ||
54240 | - if (dentry && dentry->d_inode) { | ||
54241 | + if (dentry) { | ||
54242 | inode = dentry->d_inode; | ||
54243 | - if (get_node_id(inode) == o->nodeid) { | ||
54244 | + if (!inode) { | ||
54245 | + d_drop(dentry); | ||
54246 | + } else if (get_node_id(inode) != o->nodeid || | ||
54247 | + ((o->attr.mode ^ inode->i_mode) & S_IFMT)) { | ||
54248 | + err = d_invalidate(dentry); | ||
54249 | + if (err) | ||
54250 | + goto out; | ||
54251 | + } else if (is_bad_inode(inode)) { | ||
54252 | + err = -EIO; | ||
54253 | + goto out; | ||
54254 | + } else { | ||
54255 | struct fuse_inode *fi; | ||
54256 | fi = get_fuse_inode(inode); | ||
54257 | spin_lock(&fc->lock); | ||
54258 | @@ -1244,9 +1260,6 @@ static int fuse_direntplus_link(struct file *file, | ||
54259 | */ | ||
54260 | goto found; | ||
54261 | } | ||
54262 | - err = d_invalidate(dentry); | ||
54263 | - if (err) | ||
54264 | - goto out; | ||
54265 | dput(dentry); | ||
54266 | dentry = NULL; | ||
54267 | } | ||
54268 | @@ -1261,10 +1274,19 @@ static int fuse_direntplus_link(struct file *file, | ||
54269 | if (!inode) | ||
54270 | goto out; | ||
54271 | |||
54272 | - alias = d_materialise_unique(dentry, inode); | ||
54273 | - err = PTR_ERR(alias); | ||
54274 | - if (IS_ERR(alias)) | ||
54275 | - goto out; | ||
54276 | + if (S_ISDIR(inode->i_mode)) { | ||
54277 | + mutex_lock(&fc->inst_mutex); | ||
54278 | + alias = fuse_d_add_directory(dentry, inode); | ||
54279 | + mutex_unlock(&fc->inst_mutex); | ||
54280 | + err = PTR_ERR(alias); | ||
54281 | + if (IS_ERR(alias)) { | ||
54282 | + iput(inode); | ||
54283 | + goto out; | ||
54284 | + } | ||
54285 | + } else { | ||
54286 | + alias = d_splice_alias(inode, dentry); | ||
54287 | + } | ||
54288 | + | ||
54289 | if (alias) { | ||
54290 | dput(dentry); | ||
54291 | dentry = alias; | ||
54292 | @@ -1415,7 +1437,7 @@ static char *read_link(struct dentry *dentry) | ||
54293 | return link; | 53489 | return link; |
54294 | } | 53490 | } |
54295 | 53491 | ||
@@ -54299,10 +53495,10 @@ index 185c479..2a4c1b2 100644 | |||
54299 | if (!IS_ERR(link)) | 53495 | if (!IS_ERR(link)) |
54300 | free_page((unsigned long) link); | 53496 | free_page((unsigned long) link); |
54301 | diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c | 53497 | diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c |
54302 | index cc00bd1..3edb692 100644 | 53498 | index 62b484e..0f9a140 100644 |
54303 | --- a/fs/gfs2/inode.c | 53499 | --- a/fs/gfs2/inode.c |
54304 | +++ b/fs/gfs2/inode.c | 53500 | +++ b/fs/gfs2/inode.c |
54305 | @@ -1500,7 +1500,7 @@ out: | 53501 | @@ -1441,7 +1441,7 @@ out: |
54306 | 53502 | ||
54307 | static void gfs2_put_link(struct dentry *dentry, struct nameidata *nd, void *p) | 53503 | static void gfs2_put_link(struct dentry *dentry, struct nameidata *nd, void *p) |
54308 | { | 53504 | { |
@@ -54362,7 +53558,7 @@ index a3f868a..bb308ae 100644 | |||
54362 | static int can_do_hugetlb_shm(void) | 53558 | static int can_do_hugetlb_shm(void) |
54363 | { | 53559 | { |
54364 | diff --git a/fs/inode.c b/fs/inode.c | 53560 | diff --git a/fs/inode.c b/fs/inode.c |
54365 | index a898b3d..9b5a214 100644 | 53561 | index 00d5fc3..98ce7d7 100644 |
54366 | --- a/fs/inode.c | 53562 | --- a/fs/inode.c |
54367 | +++ b/fs/inode.c | 53563 | +++ b/fs/inode.c |
54368 | @@ -878,8 +878,8 @@ unsigned int get_next_ino(void) | 53564 | @@ -878,8 +878,8 @@ unsigned int get_next_ino(void) |
@@ -54405,10 +53601,10 @@ index a6597d6..41b30ec 100644 | |||
54405 | 53601 | ||
54406 | /* | 53602 | /* |
54407 | diff --git a/fs/jfs/super.c b/fs/jfs/super.c | 53603 | diff --git a/fs/jfs/super.c b/fs/jfs/super.c |
54408 | index 2003e83..40db287 100644 | 53604 | index 788e0a9..8433098 100644 |
54409 | --- a/fs/jfs/super.c | 53605 | --- a/fs/jfs/super.c |
54410 | +++ b/fs/jfs/super.c | 53606 | +++ b/fs/jfs/super.c |
54411 | @@ -856,7 +856,7 @@ static int __init init_jfs_fs(void) | 53607 | @@ -878,7 +878,7 @@ static int __init init_jfs_fs(void) |
54412 | 53608 | ||
54413 | jfs_inode_cachep = | 53609 | jfs_inode_cachep = |
54414 | kmem_cache_create("jfs_ip", sizeof(struct jfs_inode_info), 0, | 53610 | kmem_cache_create("jfs_ip", sizeof(struct jfs_inode_info), 0, |
@@ -54476,36 +53672,6 @@ index a2aa97d..10d6c41 100644 | |||
54476 | if (IS_ERR(nlmsvc_task)) { | 53672 | if (IS_ERR(nlmsvc_task)) { |
54477 | error = PTR_ERR(nlmsvc_task); | 53673 | error = PTR_ERR(nlmsvc_task); |
54478 | printk(KERN_WARNING | 53674 | printk(KERN_WARNING |
54479 | diff --git a/fs/lockd/svclock.c b/fs/lockd/svclock.c | ||
54480 | index e703318..8ebd3f5 100644 | ||
54481 | --- a/fs/lockd/svclock.c | ||
54482 | +++ b/fs/lockd/svclock.c | ||
54483 | @@ -939,6 +939,7 @@ nlmsvc_retry_blocked(void) | ||
54484 | unsigned long timeout = MAX_SCHEDULE_TIMEOUT; | ||
54485 | struct nlm_block *block; | ||
54486 | |||
54487 | + spin_lock(&nlm_blocked_lock); | ||
54488 | while (!list_empty(&nlm_blocked) && !kthread_should_stop()) { | ||
54489 | block = list_entry(nlm_blocked.next, struct nlm_block, b_list); | ||
54490 | |||
54491 | @@ -948,6 +949,7 @@ nlmsvc_retry_blocked(void) | ||
54492 | timeout = block->b_when - jiffies; | ||
54493 | break; | ||
54494 | } | ||
54495 | + spin_unlock(&nlm_blocked_lock); | ||
54496 | |||
54497 | dprintk("nlmsvc_retry_blocked(%p, when=%ld)\n", | ||
54498 | block, block->b_when); | ||
54499 | @@ -957,7 +959,9 @@ nlmsvc_retry_blocked(void) | ||
54500 | retry_deferred_block(block); | ||
54501 | } else | ||
54502 | nlmsvc_grant_blocked(block); | ||
54503 | + spin_lock(&nlm_blocked_lock); | ||
54504 | } | ||
54505 | + spin_unlock(&nlm_blocked_lock); | ||
54506 | |||
54507 | return timeout; | ||
54508 | } | ||
54509 | diff --git a/fs/locks.c b/fs/locks.c | 53675 | diff --git a/fs/locks.c b/fs/locks.c |
54510 | index cb424a4..850e4dd 100644 | 53676 | index cb424a4..850e4dd 100644 |
54511 | --- a/fs/locks.c | 53677 | --- a/fs/locks.c |
@@ -54532,7 +53698,7 @@ index cb424a4..850e4dd 100644 | |||
54532 | 53698 | ||
54533 | lock_flocks(); | 53699 | lock_flocks(); |
54534 | diff --git a/fs/namei.c b/fs/namei.c | 53700 | diff --git a/fs/namei.c b/fs/namei.c |
54535 | index 85e40d1..b66744e 100644 | 53701 | index 9ed9361..2b72db1 100644 |
54536 | --- a/fs/namei.c | 53702 | --- a/fs/namei.c |
54537 | +++ b/fs/namei.c | 53703 | +++ b/fs/namei.c |
54538 | @@ -319,16 +319,32 @@ int generic_permission(struct inode *inode, int mask) | 53704 | @@ -319,16 +319,32 @@ int generic_permission(struct inode *inode, int mask) |
@@ -54647,7 +53813,7 @@ index 85e40d1..b66744e 100644 | |||
54647 | + } | 53813 | + } |
54648 | + | 53814 | + |
54649 | if (!err && nd->flags & LOOKUP_DIRECTORY) { | 53815 | if (!err && nd->flags & LOOKUP_DIRECTORY) { |
54650 | if (!nd->inode->i_op->lookup) { | 53816 | if (!can_lookup(nd->inode)) { |
54651 | path_put(&nd->path); | 53817 | path_put(&nd->path); |
54652 | @@ -2002,8 +2027,15 @@ static int filename_lookup(int dfd, struct filename *name, | 53818 | @@ -2002,8 +2027,15 @@ static int filename_lookup(int dfd, struct filename *name, |
54653 | retval = path_lookupat(dfd, name->name, | 53819 | retval = path_lookupat(dfd, name->name, |
@@ -55106,10 +54272,10 @@ index 85e40d1..b66744e 100644 | |||
55106 | out: | 54272 | out: |
55107 | return len; | 54273 | return len; |
55108 | diff --git a/fs/namespace.c b/fs/namespace.c | 54274 | diff --git a/fs/namespace.c b/fs/namespace.c |
55109 | index e945b81..fc018e2 100644 | 54275 | index 7b1ca9b..6faeccf 100644 |
55110 | --- a/fs/namespace.c | 54276 | --- a/fs/namespace.c |
55111 | +++ b/fs/namespace.c | 54277 | +++ b/fs/namespace.c |
55112 | @@ -1219,6 +1219,9 @@ static int do_umount(struct mount *mnt, int flags) | 54278 | @@ -1265,6 +1265,9 @@ static int do_umount(struct mount *mnt, int flags) |
55113 | if (!(sb->s_flags & MS_RDONLY)) | 54279 | if (!(sb->s_flags & MS_RDONLY)) |
55114 | retval = do_remount_sb(sb, MS_RDONLY, NULL, 0); | 54280 | retval = do_remount_sb(sb, MS_RDONLY, NULL, 0); |
55115 | up_write(&sb->s_umount); | 54281 | up_write(&sb->s_umount); |
@@ -55119,17 +54285,17 @@ index e945b81..fc018e2 100644 | |||
55119 | return retval; | 54285 | return retval; |
55120 | } | 54286 | } |
55121 | 54287 | ||
55122 | @@ -1238,6 +1241,9 @@ static int do_umount(struct mount *mnt, int flags) | 54288 | @@ -1283,6 +1286,9 @@ static int do_umount(struct mount *mnt, int flags) |
54289 | } | ||
55123 | br_write_unlock(&vfsmount_lock); | 54290 | br_write_unlock(&vfsmount_lock); |
55124 | up_write(&namespace_sem); | 54291 | namespace_unlock(); |
55125 | release_mounts(&umount_list); | ||
55126 | + | 54292 | + |
55127 | + gr_log_unmount(mnt->mnt_devname, retval); | 54293 | + gr_log_unmount(mnt->mnt_devname, retval); |
55128 | + | 54294 | + |
55129 | return retval; | 54295 | return retval; |
55130 | } | 54296 | } |
55131 | 54297 | ||
55132 | @@ -1257,7 +1263,7 @@ static inline bool may_mount(void) | 54298 | @@ -1302,7 +1308,7 @@ static inline bool may_mount(void) |
55133 | * unixes. Our API is identical to OSF/1 to avoid making a mess of AMD | 54299 | * unixes. Our API is identical to OSF/1 to avoid making a mess of AMD |
55134 | */ | 54300 | */ |
55135 | 54301 | ||
@@ -55138,7 +54304,7 @@ index e945b81..fc018e2 100644 | |||
55138 | { | 54304 | { |
55139 | struct path path; | 54305 | struct path path; |
55140 | struct mount *mnt; | 54306 | struct mount *mnt; |
55141 | @@ -1297,7 +1303,7 @@ out: | 54307 | @@ -1342,7 +1348,7 @@ out: |
55142 | /* | 54308 | /* |
55143 | * The 2.0 compatible umount. No flags. | 54309 | * The 2.0 compatible umount. No flags. |
55144 | */ | 54310 | */ |
@@ -55147,7 +54313,7 @@ index e945b81..fc018e2 100644 | |||
55147 | { | 54313 | { |
55148 | return sys_umount(name, 0); | 54314 | return sys_umount(name, 0); |
55149 | } | 54315 | } |
55150 | @@ -2267,6 +2273,16 @@ long do_mount(const char *dev_name, const char *dir_name, | 54316 | @@ -2313,6 +2319,16 @@ long do_mount(const char *dev_name, const char *dir_name, |
55151 | MS_NOATIME | MS_NODIRATIME | MS_RELATIME| MS_KERNMOUNT | | 54317 | MS_NOATIME | MS_NODIRATIME | MS_RELATIME| MS_KERNMOUNT | |
55152 | MS_STRICTATIME); | 54318 | MS_STRICTATIME); |
55153 | 54319 | ||
@@ -55164,7 +54330,7 @@ index e945b81..fc018e2 100644 | |||
55164 | if (flags & MS_REMOUNT) | 54330 | if (flags & MS_REMOUNT) |
55165 | retval = do_remount(&path, flags & ~MS_REMOUNT, mnt_flags, | 54331 | retval = do_remount(&path, flags & ~MS_REMOUNT, mnt_flags, |
55166 | data_page); | 54332 | data_page); |
55167 | @@ -2281,6 +2297,9 @@ long do_mount(const char *dev_name, const char *dir_name, | 54333 | @@ -2327,6 +2343,9 @@ long do_mount(const char *dev_name, const char *dir_name, |
55168 | dev_name, data_page); | 54334 | dev_name, data_page); |
55169 | dput_out: | 54335 | dput_out: |
55170 | path_put(&path); | 54336 | path_put(&path); |
@@ -55174,7 +54340,7 @@ index e945b81..fc018e2 100644 | |||
55174 | return retval; | 54340 | return retval; |
55175 | } | 54341 | } |
55176 | 54342 | ||
55177 | @@ -2454,8 +2473,8 @@ struct dentry *mount_subtree(struct vfsmount *mnt, const char *name) | 54343 | @@ -2500,8 +2519,8 @@ struct dentry *mount_subtree(struct vfsmount *mnt, const char *name) |
55178 | } | 54344 | } |
55179 | EXPORT_SYMBOL(mount_subtree); | 54345 | EXPORT_SYMBOL(mount_subtree); |
55180 | 54346 | ||
@@ -55185,7 +54351,7 @@ index e945b81..fc018e2 100644 | |||
55185 | { | 54351 | { |
55186 | int ret; | 54352 | int ret; |
55187 | char *kernel_type; | 54353 | char *kernel_type; |
55188 | @@ -2567,6 +2586,11 @@ SYSCALL_DEFINE2(pivot_root, const char __user *, new_root, | 54354 | @@ -2614,6 +2633,11 @@ SYSCALL_DEFINE2(pivot_root, const char __user *, new_root, |
55189 | if (error) | 54355 | if (error) |
55190 | goto out2; | 54356 | goto out2; |
55191 | 54357 | ||
@@ -55195,9 +54361,9 @@ index e945b81..fc018e2 100644 | |||
55195 | + } | 54361 | + } |
55196 | + | 54362 | + |
55197 | get_fs_root(current->fs, &root); | 54363 | get_fs_root(current->fs, &root); |
55198 | error = lock_mount(&old); | 54364 | old_mp = lock_mount(&old); |
55199 | if (error) | 54365 | error = PTR_ERR(old_mp); |
55200 | @@ -2815,7 +2839,7 @@ static int mntns_install(struct nsproxy *nsproxy, void *ns) | 54366 | @@ -2864,7 +2888,7 @@ static int mntns_install(struct nsproxy *nsproxy, void *ns) |
55201 | !nsown_capable(CAP_SYS_ADMIN)) | 54367 | !nsown_capable(CAP_SYS_ADMIN)) |
55202 | return -EPERM; | 54368 | return -EPERM; |
55203 | 54369 | ||
@@ -55207,10 +54373,10 @@ index e945b81..fc018e2 100644 | |||
55207 | 54373 | ||
55208 | get_mnt_ns(mnt_ns); | 54374 | get_mnt_ns(mnt_ns); |
55209 | diff --git a/fs/nfs/callback.c b/fs/nfs/callback.c | 54375 | diff --git a/fs/nfs/callback.c b/fs/nfs/callback.c |
55210 | index 5088b57..eabd719 100644 | 54376 | index cff089a..4c3d57a 100644 |
55211 | --- a/fs/nfs/callback.c | 54377 | --- a/fs/nfs/callback.c |
55212 | +++ b/fs/nfs/callback.c | 54378 | +++ b/fs/nfs/callback.c |
55213 | @@ -208,7 +208,6 @@ static int nfs_callback_start_svc(int minorversion, struct rpc_xprt *xprt, | 54379 | @@ -211,7 +211,6 @@ static int nfs_callback_start_svc(int minorversion, struct rpc_xprt *xprt, |
55214 | struct svc_rqst *rqstp; | 54380 | struct svc_rqst *rqstp; |
55215 | int (*callback_svc)(void *vrqstp); | 54381 | int (*callback_svc)(void *vrqstp); |
55216 | struct nfs_callback_data *cb_info = &nfs_callback_info[minorversion]; | 54382 | struct nfs_callback_data *cb_info = &nfs_callback_info[minorversion]; |
@@ -55218,7 +54384,7 @@ index 5088b57..eabd719 100644 | |||
55218 | int ret; | 54384 | int ret; |
55219 | 54385 | ||
55220 | nfs_callback_bc_serv(minorversion, xprt, serv); | 54386 | nfs_callback_bc_serv(minorversion, xprt, serv); |
55221 | @@ -232,10 +231,9 @@ static int nfs_callback_start_svc(int minorversion, struct rpc_xprt *xprt, | 54387 | @@ -235,10 +234,9 @@ static int nfs_callback_start_svc(int minorversion, struct rpc_xprt *xprt, |
55222 | 54388 | ||
55223 | svc_sock_update_bufs(serv); | 54389 | svc_sock_update_bufs(serv); |
55224 | 54390 | ||
@@ -55231,7 +54397,7 @@ index 5088b57..eabd719 100644 | |||
55231 | ret = PTR_ERR(cb_info->task); | 54397 | ret = PTR_ERR(cb_info->task); |
55232 | svc_exit_thread(cb_info->rqst); | 54398 | svc_exit_thread(cb_info->rqst); |
55233 | diff --git a/fs/nfs/callback_xdr.c b/fs/nfs/callback_xdr.c | 54399 | diff --git a/fs/nfs/callback_xdr.c b/fs/nfs/callback_xdr.c |
55234 | index 59461c9..b17c57e 100644 | 54400 | index a35582c..ebbdcd5 100644 |
55235 | --- a/fs/nfs/callback_xdr.c | 54401 | --- a/fs/nfs/callback_xdr.c |
55236 | +++ b/fs/nfs/callback_xdr.c | 54402 | +++ b/fs/nfs/callback_xdr.c |
55237 | @@ -51,7 +51,7 @@ struct callback_op { | 54403 | @@ -51,7 +51,7 @@ struct callback_op { |
@@ -55244,10 +54410,10 @@ index 59461c9..b17c57e 100644 | |||
55244 | static struct callback_op callback_ops[]; | 54410 | static struct callback_op callback_ops[]; |
55245 | 54411 | ||
55246 | diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c | 54412 | diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c |
55247 | index 1f94167..79c4ce4 100644 | 54413 | index c1c7a9d..7afa0b8 100644 |
55248 | --- a/fs/nfs/inode.c | 54414 | --- a/fs/nfs/inode.c |
55249 | +++ b/fs/nfs/inode.c | 54415 | +++ b/fs/nfs/inode.c |
55250 | @@ -1041,16 +1041,16 @@ static int nfs_size_need_update(const struct inode *inode, const struct nfs_fatt | 54416 | @@ -1043,16 +1043,16 @@ static int nfs_size_need_update(const struct inode *inode, const struct nfs_fatt |
55251 | return nfs_size_to_loff_t(fattr->size) > i_size_read(inode); | 54417 | return nfs_size_to_loff_t(fattr->size) > i_size_read(inode); |
55252 | } | 54418 | } |
55253 | 54419 | ||
@@ -55268,10 +54434,10 @@ index 1f94167..79c4ce4 100644 | |||
55268 | 54434 | ||
55269 | void nfs_fattr_init(struct nfs_fattr *fattr) | 54435 | void nfs_fattr_init(struct nfs_fattr *fattr) |
55270 | diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c | 54436 | diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c |
55271 | index d41a351..7899577 100644 | 54437 | index 2c37442..9b9538b 100644 |
55272 | --- a/fs/nfs/nfs4state.c | 54438 | --- a/fs/nfs/nfs4state.c |
55273 | +++ b/fs/nfs/nfs4state.c | 54439 | +++ b/fs/nfs/nfs4state.c |
55274 | @@ -1182,7 +1182,7 @@ void nfs4_schedule_state_manager(struct nfs_client *clp) | 54440 | @@ -1193,7 +1193,7 @@ void nfs4_schedule_state_manager(struct nfs_client *clp) |
55275 | snprintf(buf, sizeof(buf), "%s-manager", | 54441 | snprintf(buf, sizeof(buf), "%s-manager", |
55276 | rpc_peeraddr2str(clp->cl_rpcclient, RPC_DISPLAY_ADDR)); | 54442 | rpc_peeraddr2str(clp->cl_rpcclient, RPC_DISPLAY_ADDR)); |
55277 | rcu_read_unlock(); | 54443 | rcu_read_unlock(); |
@@ -55281,10 +54447,10 @@ index d41a351..7899577 100644 | |||
55281 | printk(KERN_ERR "%s: kthread_run: %ld\n", | 54447 | printk(KERN_ERR "%s: kthread_run: %ld\n", |
55282 | __func__, PTR_ERR(task)); | 54448 | __func__, PTR_ERR(task)); |
55283 | diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c | 54449 | diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c |
55284 | index d401d01..10b3e62 100644 | 54450 | index 27d74a2..c4c2a73 100644 |
55285 | --- a/fs/nfsd/nfs4proc.c | 54451 | --- a/fs/nfsd/nfs4proc.c |
55286 | +++ b/fs/nfsd/nfs4proc.c | 54452 | +++ b/fs/nfsd/nfs4proc.c |
55287 | @@ -1109,7 +1109,7 @@ struct nfsd4_operation { | 54453 | @@ -1126,7 +1126,7 @@ struct nfsd4_operation { |
55288 | nfsd4op_rsize op_rsize_bop; | 54454 | nfsd4op_rsize op_rsize_bop; |
55289 | stateid_getter op_get_currentstateid; | 54455 | stateid_getter op_get_currentstateid; |
55290 | stateid_setter op_set_currentstateid; | 54456 | stateid_setter op_set_currentstateid; |
@@ -55294,10 +54460,10 @@ index d401d01..10b3e62 100644 | |||
55294 | static struct nfsd4_operation nfsd4_ops[]; | 54460 | static struct nfsd4_operation nfsd4_ops[]; |
55295 | 54461 | ||
55296 | diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c | 54462 | diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c |
55297 | index a49c11b..8cd8130 100644 | 54463 | index 582321a..0224663 100644 |
55298 | --- a/fs/nfsd/nfs4xdr.c | 54464 | --- a/fs/nfsd/nfs4xdr.c |
55299 | +++ b/fs/nfsd/nfs4xdr.c | 54465 | +++ b/fs/nfsd/nfs4xdr.c |
55300 | @@ -1457,7 +1457,7 @@ nfsd4_decode_notsupp(struct nfsd4_compoundargs *argp, void *p) | 54466 | @@ -1458,7 +1458,7 @@ nfsd4_decode_notsupp(struct nfsd4_compoundargs *argp, void *p) |
55301 | 54467 | ||
55302 | typedef __be32(*nfsd4_dec)(struct nfsd4_compoundargs *argp, void *); | 54468 | typedef __be32(*nfsd4_dec)(struct nfsd4_compoundargs *argp, void *); |
55303 | 54469 | ||
@@ -55306,7 +54472,7 @@ index a49c11b..8cd8130 100644 | |||
55306 | [OP_ACCESS] = (nfsd4_dec)nfsd4_decode_access, | 54472 | [OP_ACCESS] = (nfsd4_dec)nfsd4_decode_access, |
55307 | [OP_CLOSE] = (nfsd4_dec)nfsd4_decode_close, | 54473 | [OP_CLOSE] = (nfsd4_dec)nfsd4_decode_close, |
55308 | [OP_COMMIT] = (nfsd4_dec)nfsd4_decode_commit, | 54474 | [OP_COMMIT] = (nfsd4_dec)nfsd4_decode_commit, |
55309 | @@ -1497,7 +1497,7 @@ static nfsd4_dec nfsd4_dec_ops[] = { | 54475 | @@ -1498,7 +1498,7 @@ static nfsd4_dec nfsd4_dec_ops[] = { |
55310 | [OP_RELEASE_LOCKOWNER] = (nfsd4_dec)nfsd4_decode_release_lockowner, | 54476 | [OP_RELEASE_LOCKOWNER] = (nfsd4_dec)nfsd4_decode_release_lockowner, |
55311 | }; | 54477 | }; |
55312 | 54478 | ||
@@ -55315,7 +54481,7 @@ index a49c11b..8cd8130 100644 | |||
55315 | [OP_ACCESS] = (nfsd4_dec)nfsd4_decode_access, | 54481 | [OP_ACCESS] = (nfsd4_dec)nfsd4_decode_access, |
55316 | [OP_CLOSE] = (nfsd4_dec)nfsd4_decode_close, | 54482 | [OP_CLOSE] = (nfsd4_dec)nfsd4_decode_close, |
55317 | [OP_COMMIT] = (nfsd4_dec)nfsd4_decode_commit, | 54483 | [OP_COMMIT] = (nfsd4_dec)nfsd4_decode_commit, |
55318 | @@ -1559,7 +1559,7 @@ static nfsd4_dec nfsd41_dec_ops[] = { | 54484 | @@ -1560,7 +1560,7 @@ static nfsd4_dec nfsd41_dec_ops[] = { |
55319 | }; | 54485 | }; |
55320 | 54486 | ||
55321 | struct nfsd4_minorversion_ops { | 54487 | struct nfsd4_minorversion_ops { |
@@ -55325,15 +54491,16 @@ index a49c11b..8cd8130 100644 | |||
55325 | }; | 54491 | }; |
55326 | 54492 | ||
55327 | diff --git a/fs/nfsd/nfscache.c b/fs/nfsd/nfscache.c | 54493 | diff --git a/fs/nfsd/nfscache.c b/fs/nfsd/nfscache.c |
55328 | index ca05f6d..b88c3a7 100644 | 54494 | index e76244e..9fe8f2f1 100644 |
55329 | --- a/fs/nfsd/nfscache.c | 54495 | --- a/fs/nfsd/nfscache.c |
55330 | +++ b/fs/nfsd/nfscache.c | 54496 | +++ b/fs/nfsd/nfscache.c |
55331 | @@ -461,13 +461,16 @@ nfsd_cache_update(struct svc_rqst *rqstp, int cachetype, __be32 *statp) | 54497 | @@ -526,14 +526,17 @@ nfsd_cache_update(struct svc_rqst *rqstp, int cachetype, __be32 *statp) |
55332 | { | 54498 | { |
55333 | struct svc_cacherep *rp = rqstp->rq_cacherep; | 54499 | struct svc_cacherep *rp = rqstp->rq_cacherep; |
55334 | struct kvec *resv = &rqstp->rq_res.head[0], *cachv; | 54500 | struct kvec *resv = &rqstp->rq_res.head[0], *cachv; |
55335 | - int len; | 54501 | - int len; |
55336 | + long len; | 54502 | + long len; |
54503 | size_t bufsize = 0; | ||
55337 | 54504 | ||
55338 | if (!rp) | 54505 | if (!rp) |
55339 | return; | 54506 | return; |
@@ -55349,7 +54516,7 @@ index ca05f6d..b88c3a7 100644 | |||
55349 | /* Don't cache excessive amounts of data and XDR failures */ | 54516 | /* Don't cache excessive amounts of data and XDR failures */ |
55350 | if (!statp || len > (256 >> 2)) { | 54517 | if (!statp || len > (256 >> 2)) { |
55351 | diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c | 54518 | diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c |
55352 | index 2b2e239..c915b48 100644 | 54519 | index 84ce601..633d226 100644 |
55353 | --- a/fs/nfsd/vfs.c | 54520 | --- a/fs/nfsd/vfs.c |
55354 | +++ b/fs/nfsd/vfs.c | 54521 | +++ b/fs/nfsd/vfs.c |
55355 | @@ -939,7 +939,7 @@ nfsd_vfs_read(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file, | 54522 | @@ -939,7 +939,7 @@ nfsd_vfs_read(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file, |
@@ -55463,10 +54630,10 @@ index e7bc1d7..06bd4bb 100644 | |||
55463 | } | 54630 | } |
55464 | 54631 | ||
55465 | diff --git a/fs/notify/fanotify/fanotify_user.c b/fs/notify/fanotify/fanotify_user.c | 54632 | diff --git a/fs/notify/fanotify/fanotify_user.c b/fs/notify/fanotify/fanotify_user.c |
55466 | index 5d84442..2c034ba 100644 | 54633 | index 6c80083..a1e6299 100644 |
55467 | --- a/fs/notify/fanotify/fanotify_user.c | 54634 | --- a/fs/notify/fanotify/fanotify_user.c |
55468 | +++ b/fs/notify/fanotify/fanotify_user.c | 54635 | +++ b/fs/notify/fanotify/fanotify_user.c |
55469 | @@ -121,6 +121,7 @@ static int fill_event_metadata(struct fsnotify_group *group, | 54636 | @@ -122,6 +122,7 @@ static int fill_event_metadata(struct fsnotify_group *group, |
55470 | metadata->event_len = FAN_EVENT_METADATA_LEN; | 54637 | metadata->event_len = FAN_EVENT_METADATA_LEN; |
55471 | metadata->metadata_len = FAN_EVENT_METADATA_LEN; | 54638 | metadata->metadata_len = FAN_EVENT_METADATA_LEN; |
55472 | metadata->vers = FANOTIFY_METADATA_VERSION; | 54639 | metadata->vers = FANOTIFY_METADATA_VERSION; |
@@ -55474,7 +54641,7 @@ index 5d84442..2c034ba 100644 | |||
55474 | metadata->mask = event->mask & FAN_ALL_OUTGOING_EVENTS; | 54641 | metadata->mask = event->mask & FAN_ALL_OUTGOING_EVENTS; |
55475 | metadata->pid = pid_vnr(event->tgid); | 54642 | metadata->pid = pid_vnr(event->tgid); |
55476 | if (unlikely(event->mask & FAN_Q_OVERFLOW)) | 54643 | if (unlikely(event->mask & FAN_Q_OVERFLOW)) |
55477 | @@ -251,8 +252,8 @@ static ssize_t copy_event_to_user(struct fsnotify_group *group, | 54644 | @@ -252,8 +253,8 @@ static ssize_t copy_event_to_user(struct fsnotify_group *group, |
55478 | 54645 | ||
55479 | fd = fanotify_event_metadata.fd; | 54646 | fd = fanotify_event_metadata.fd; |
55480 | ret = -EFAULT; | 54647 | ret = -EFAULT; |
@@ -55521,10 +54688,10 @@ index aa411c3..c260a84 100644 | |||
55521 | "inode 0x%lx or driver bug.", vdir->i_ino); | 54688 | "inode 0x%lx or driver bug.", vdir->i_ino); |
55522 | goto err_out; | 54689 | goto err_out; |
55523 | diff --git a/fs/ntfs/file.c b/fs/ntfs/file.c | 54690 | diff --git a/fs/ntfs/file.c b/fs/ntfs/file.c |
55524 | index 5b2d4f0..c6de396 100644 | 54691 | index c5670b8..01a3656 100644 |
55525 | --- a/fs/ntfs/file.c | 54692 | --- a/fs/ntfs/file.c |
55526 | +++ b/fs/ntfs/file.c | 54693 | +++ b/fs/ntfs/file.c |
55527 | @@ -2242,6 +2242,6 @@ const struct inode_operations ntfs_file_inode_ops = { | 54694 | @@ -2241,6 +2241,6 @@ const struct inode_operations ntfs_file_inode_ops = { |
55528 | #endif /* NTFS_RW */ | 54695 | #endif /* NTFS_RW */ |
55529 | }; | 54696 | }; |
55530 | 54697 | ||
@@ -55664,7 +54831,7 @@ index 01b8516..579c4df 100644 | |||
55664 | /* Copy the blockcheck stats from the superblock probe */ | 54831 | /* Copy the blockcheck stats from the superblock probe */ |
55665 | osb->osb_ecc_stats = *stats; | 54832 | osb->osb_ecc_stats = *stats; |
55666 | diff --git a/fs/open.c b/fs/open.c | 54833 | diff --git a/fs/open.c b/fs/open.c |
55667 | index 6835446..eadf09f 100644 | 54834 | index 8c74100..4239c48 100644 |
55668 | --- a/fs/open.c | 54835 | --- a/fs/open.c |
55669 | +++ b/fs/open.c | 54836 | +++ b/fs/open.c |
55670 | @@ -32,6 +32,8 @@ | 54837 | @@ -32,6 +32,8 @@ |
@@ -55694,7 +54861,7 @@ index 6835446..eadf09f 100644 | |||
55694 | if (!error) | 54861 | if (!error) |
55695 | error = do_truncate(dentry, length, ATTR_MTIME|ATTR_CTIME, f.file); | 54862 | error = do_truncate(dentry, length, ATTR_MTIME|ATTR_CTIME, f.file); |
55696 | sb_end_write(inode->i_sb); | 54863 | sb_end_write(inode->i_sb); |
55697 | @@ -388,6 +394,9 @@ retry: | 54864 | @@ -360,6 +366,9 @@ retry: |
55698 | if (__mnt_is_readonly(path.mnt)) | 54865 | if (__mnt_is_readonly(path.mnt)) |
55699 | res = -EROFS; | 54866 | res = -EROFS; |
55700 | 54867 | ||
@@ -55704,7 +54871,7 @@ index 6835446..eadf09f 100644 | |||
55704 | out_path_release: | 54871 | out_path_release: |
55705 | path_put(&path); | 54872 | path_put(&path); |
55706 | if (retry_estale(res, lookup_flags)) { | 54873 | if (retry_estale(res, lookup_flags)) { |
55707 | @@ -419,6 +428,8 @@ retry: | 54874 | @@ -391,6 +400,8 @@ retry: |
55708 | if (error) | 54875 | if (error) |
55709 | goto dput_and_out; | 54876 | goto dput_and_out; |
55710 | 54877 | ||
@@ -55713,7 +54880,7 @@ index 6835446..eadf09f 100644 | |||
55713 | set_fs_pwd(current->fs, &path); | 54880 | set_fs_pwd(current->fs, &path); |
55714 | 54881 | ||
55715 | dput_and_out: | 54882 | dput_and_out: |
55716 | @@ -448,6 +459,13 @@ SYSCALL_DEFINE1(fchdir, unsigned int, fd) | 54883 | @@ -420,6 +431,13 @@ SYSCALL_DEFINE1(fchdir, unsigned int, fd) |
55717 | goto out_putf; | 54884 | goto out_putf; |
55718 | 54885 | ||
55719 | error = inode_permission(inode, MAY_EXEC | MAY_CHDIR); | 54886 | error = inode_permission(inode, MAY_EXEC | MAY_CHDIR); |
@@ -55727,7 +54894,7 @@ index 6835446..eadf09f 100644 | |||
55727 | if (!error) | 54894 | if (!error) |
55728 | set_fs_pwd(current->fs, &f.file->f_path); | 54895 | set_fs_pwd(current->fs, &f.file->f_path); |
55729 | out_putf: | 54896 | out_putf: |
55730 | @@ -477,7 +495,13 @@ retry: | 54897 | @@ -449,7 +467,13 @@ retry: |
55731 | if (error) | 54898 | if (error) |
55732 | goto dput_and_out; | 54899 | goto dput_and_out; |
55733 | 54900 | ||
@@ -55741,7 +54908,7 @@ index 6835446..eadf09f 100644 | |||
55741 | error = 0; | 54908 | error = 0; |
55742 | dput_and_out: | 54909 | dput_and_out: |
55743 | path_put(&path); | 54910 | path_put(&path); |
55744 | @@ -499,6 +523,16 @@ static int chmod_common(struct path *path, umode_t mode) | 54911 | @@ -471,6 +495,16 @@ static int chmod_common(struct path *path, umode_t mode) |
55745 | if (error) | 54912 | if (error) |
55746 | return error; | 54913 | return error; |
55747 | mutex_lock(&inode->i_mutex); | 54914 | mutex_lock(&inode->i_mutex); |
@@ -55758,7 +54925,7 @@ index 6835446..eadf09f 100644 | |||
55758 | error = security_path_chmod(path, mode); | 54925 | error = security_path_chmod(path, mode); |
55759 | if (error) | 54926 | if (error) |
55760 | goto out_unlock; | 54927 | goto out_unlock; |
55761 | @@ -559,6 +593,9 @@ static int chown_common(struct path *path, uid_t user, gid_t group) | 54928 | @@ -531,6 +565,9 @@ static int chown_common(struct path *path, uid_t user, gid_t group) |
55762 | uid = make_kuid(current_user_ns(), user); | 54929 | uid = make_kuid(current_user_ns(), user); |
55763 | gid = make_kgid(current_user_ns(), group); | 54930 | gid = make_kgid(current_user_ns(), group); |
55764 | 54931 | ||
@@ -55768,7 +54935,7 @@ index 6835446..eadf09f 100644 | |||
55768 | newattrs.ia_valid = ATTR_CTIME; | 54935 | newattrs.ia_valid = ATTR_CTIME; |
55769 | if (user != (uid_t) -1) { | 54936 | if (user != (uid_t) -1) { |
55770 | if (!uid_valid(uid)) | 54937 | if (!uid_valid(uid)) |
55771 | @@ -974,6 +1011,7 @@ long do_sys_open(int dfd, const char __user *filename, int flags, umode_t mode) | 54938 | @@ -946,6 +983,7 @@ long do_sys_open(int dfd, const char __user *filename, int flags, umode_t mode) |
55772 | } else { | 54939 | } else { |
55773 | fsnotify_open(f); | 54940 | fsnotify_open(f); |
55774 | fd_install(fd, f); | 54941 | fd_install(fd, f); |
@@ -55777,10 +54944,28 @@ index 6835446..eadf09f 100644 | |||
55777 | } | 54944 | } |
55778 | putname(tmp); | 54945 | putname(tmp); |
55779 | diff --git a/fs/pipe.c b/fs/pipe.c | 54946 | diff --git a/fs/pipe.c b/fs/pipe.c |
55780 | index 2234f3f..f9083a1 100644 | 54947 | index d2c45e1..009fe1c 100644 |
55781 | --- a/fs/pipe.c | 54948 | --- a/fs/pipe.c |
55782 | +++ b/fs/pipe.c | 54949 | +++ b/fs/pipe.c |
55783 | @@ -438,9 +438,9 @@ redo: | 54950 | @@ -56,7 +56,7 @@ unsigned int pipe_min_size = PAGE_SIZE; |
54951 | |||
54952 | static void pipe_lock_nested(struct pipe_inode_info *pipe, int subclass) | ||
54953 | { | ||
54954 | - if (pipe->files) | ||
54955 | + if (atomic_read(&pipe->files)) | ||
54956 | mutex_lock_nested(&pipe->mutex, subclass); | ||
54957 | } | ||
54958 | |||
54959 | @@ -71,7 +71,7 @@ EXPORT_SYMBOL(pipe_lock); | ||
54960 | |||
54961 | void pipe_unlock(struct pipe_inode_info *pipe) | ||
54962 | { | ||
54963 | - if (pipe->files) | ||
54964 | + if (atomic_read(&pipe->files)) | ||
54965 | mutex_unlock(&pipe->mutex); | ||
54966 | } | ||
54967 | EXPORT_SYMBOL(pipe_unlock); | ||
54968 | @@ -449,9 +449,9 @@ redo: | ||
55784 | } | 54969 | } |
55785 | if (bufs) /* More to do? */ | 54970 | if (bufs) /* More to do? */ |
55786 | continue; | 54971 | continue; |
@@ -55792,16 +54977,16 @@ index 2234f3f..f9083a1 100644 | |||
55792 | /* syscall merging: Usually we must not sleep | 54977 | /* syscall merging: Usually we must not sleep |
55793 | * if O_NONBLOCK is set, or if we got some data. | 54978 | * if O_NONBLOCK is set, or if we got some data. |
55794 | * But if a writer sleeps in kernel space, then | 54979 | * But if a writer sleeps in kernel space, then |
55795 | @@ -504,7 +504,7 @@ pipe_write(struct kiocb *iocb, const struct iovec *_iov, | 54980 | @@ -513,7 +513,7 @@ pipe_write(struct kiocb *iocb, const struct iovec *_iov, |
55796 | mutex_lock(&inode->i_mutex); | 54981 | ret = 0; |
55797 | pipe = inode->i_pipe; | 54982 | __pipe_lock(pipe); |
55798 | 54983 | ||
55799 | - if (!pipe->readers) { | 54984 | - if (!pipe->readers) { |
55800 | + if (!atomic_read(&pipe->readers)) { | 54985 | + if (!atomic_read(&pipe->readers)) { |
55801 | send_sig(SIGPIPE, current, 0); | 54986 | send_sig(SIGPIPE, current, 0); |
55802 | ret = -EPIPE; | 54987 | ret = -EPIPE; |
55803 | goto out; | 54988 | goto out; |
55804 | @@ -553,7 +553,7 @@ redo1: | 54989 | @@ -562,7 +562,7 @@ redo1: |
55805 | for (;;) { | 54990 | for (;;) { |
55806 | int bufs; | 54991 | int bufs; |
55807 | 54992 | ||
@@ -55810,7 +54995,7 @@ index 2234f3f..f9083a1 100644 | |||
55810 | send_sig(SIGPIPE, current, 0); | 54995 | send_sig(SIGPIPE, current, 0); |
55811 | if (!ret) | 54996 | if (!ret) |
55812 | ret = -EPIPE; | 54997 | ret = -EPIPE; |
55813 | @@ -644,9 +644,9 @@ redo2: | 54998 | @@ -653,9 +653,9 @@ redo2: |
55814 | kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN); | 54999 | kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN); |
55815 | do_wakeup = 0; | 55000 | do_wakeup = 0; |
55816 | } | 55001 | } |
@@ -55821,8 +55006,8 @@ index 2234f3f..f9083a1 100644 | |||
55821 | + atomic_dec(&pipe->waiting_writers); | 55006 | + atomic_dec(&pipe->waiting_writers); |
55822 | } | 55007 | } |
55823 | out: | 55008 | out: |
55824 | mutex_unlock(&inode->i_mutex); | 55009 | __pipe_unlock(pipe); |
55825 | @@ -716,7 +716,7 @@ pipe_poll(struct file *filp, poll_table *wait) | 55010 | @@ -709,7 +709,7 @@ pipe_poll(struct file *filp, poll_table *wait) |
55826 | mask = 0; | 55011 | mask = 0; |
55827 | if (filp->f_mode & FMODE_READ) { | 55012 | if (filp->f_mode & FMODE_READ) { |
55828 | mask = (nrbufs > 0) ? POLLIN | POLLRDNORM : 0; | 55013 | mask = (nrbufs > 0) ? POLLIN | POLLRDNORM : 0; |
@@ -55831,7 +55016,7 @@ index 2234f3f..f9083a1 100644 | |||
55831 | mask |= POLLHUP; | 55016 | mask |= POLLHUP; |
55832 | } | 55017 | } |
55833 | 55018 | ||
55834 | @@ -726,7 +726,7 @@ pipe_poll(struct file *filp, poll_table *wait) | 55019 | @@ -719,7 +719,7 @@ pipe_poll(struct file *filp, poll_table *wait) |
55835 | * Most Unices do not set POLLERR for FIFOs but on Linux they | 55020 | * Most Unices do not set POLLERR for FIFOs but on Linux they |
55836 | * behave exactly like pipes for poll(). | 55021 | * behave exactly like pipes for poll(). |
55837 | */ | 55022 | */ |
@@ -55840,52 +55025,30 @@ index 2234f3f..f9083a1 100644 | |||
55840 | mask |= POLLERR; | 55025 | mask |= POLLERR; |
55841 | } | 55026 | } |
55842 | 55027 | ||
55843 | @@ -740,10 +740,10 @@ pipe_release(struct inode *inode, int decr, int decw) | 55028 | @@ -734,17 +734,17 @@ pipe_release(struct inode *inode, struct file *file) |
55844 | |||
55845 | mutex_lock(&inode->i_mutex); | ||
55846 | pipe = inode->i_pipe; | ||
55847 | - pipe->readers -= decr; | ||
55848 | - pipe->writers -= decw; | ||
55849 | + atomic_sub(decr, &pipe->readers); | ||
55850 | + atomic_sub(decw, &pipe->writers); | ||
55851 | |||
55852 | - if (!pipe->readers && !pipe->writers) { | ||
55853 | + if (!atomic_read(&pipe->readers) && !atomic_read(&pipe->writers)) { | ||
55854 | free_pipe_info(inode); | ||
55855 | } else { | ||
55856 | wake_up_interruptible_sync_poll(&pipe->wait, POLLIN | POLLOUT | POLLRDNORM | POLLWRNORM | POLLERR | POLLHUP); | ||
55857 | @@ -833,7 +833,7 @@ pipe_read_open(struct inode *inode, struct file *filp) | ||
55858 | 55029 | ||
55859 | if (inode->i_pipe) { | 55030 | __pipe_lock(pipe); |
55860 | ret = 0; | 55031 | if (file->f_mode & FMODE_READ) |
55861 | - inode->i_pipe->readers++; | 55032 | - pipe->readers--; |
55862 | + atomic_inc(&inode->i_pipe->readers); | 55033 | + atomic_dec(&pipe->readers); |
55863 | } | 55034 | if (file->f_mode & FMODE_WRITE) |
55035 | - pipe->writers--; | ||
55036 | + atomic_dec(&pipe->writers); | ||
55864 | 55037 | ||
55865 | mutex_unlock(&inode->i_mutex); | 55038 | - if (pipe->readers || pipe->writers) { |
55866 | @@ -850,7 +850,7 @@ pipe_write_open(struct inode *inode, struct file *filp) | 55039 | + if (atomic_read(&pipe->readers) || atomic_read(&pipe->writers)) { |
55867 | 55040 | wake_up_interruptible_sync_poll(&pipe->wait, POLLIN | POLLOUT | POLLRDNORM | POLLWRNORM | POLLERR | POLLHUP); | |
55868 | if (inode->i_pipe) { | 55041 | kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN); |
55869 | ret = 0; | 55042 | kill_fasync(&pipe->fasync_writers, SIGIO, POLL_OUT); |
55870 | - inode->i_pipe->writers++; | ||
55871 | + atomic_inc(&inode->i_pipe->writers); | ||
55872 | } | 55043 | } |
55873 | 55044 | spin_lock(&inode->i_lock); | |
55874 | mutex_unlock(&inode->i_mutex); | 55045 | - if (!--pipe->files) { |
55875 | @@ -871,9 +871,9 @@ pipe_rdwr_open(struct inode *inode, struct file *filp) | 55046 | + if (atomic_dec_and_test(&pipe->files)) { |
55876 | if (inode->i_pipe) { | 55047 | inode->i_pipe = NULL; |
55877 | ret = 0; | 55048 | kill = 1; |
55878 | if (filp->f_mode & FMODE_READ) | ||
55879 | - inode->i_pipe->readers++; | ||
55880 | + atomic_inc(&inode->i_pipe->readers); | ||
55881 | if (filp->f_mode & FMODE_WRITE) | ||
55882 | - inode->i_pipe->writers++; | ||
55883 | + atomic_inc(&inode->i_pipe->writers); | ||
55884 | } | 55049 | } |
55885 | 55050 | @@ -811,7 +811,7 @@ void free_pipe_info(struct pipe_inode_info *pipe) | |
55886 | mutex_unlock(&inode->i_mutex); | 55051 | kfree(pipe); |
55887 | @@ -965,7 +965,7 @@ void free_pipe_info(struct inode *inode) | ||
55888 | inode->i_pipe = NULL; | ||
55889 | } | 55052 | } |
55890 | 55053 | ||
55891 | -static struct vfsmount *pipe_mnt __read_mostly; | 55054 | -static struct vfsmount *pipe_mnt __read_mostly; |
@@ -55893,16 +55056,109 @@ index 2234f3f..f9083a1 100644 | |||
55893 | 55056 | ||
55894 | /* | 55057 | /* |
55895 | * pipefs_dname() is called from d_path(). | 55058 | * pipefs_dname() is called from d_path(). |
55896 | @@ -995,7 +995,8 @@ static struct inode * get_pipe_inode(void) | 55059 | @@ -841,8 +841,9 @@ static struct inode * get_pipe_inode(void) |
55897 | goto fail_iput; | 55060 | goto fail_iput; |
55898 | inode->i_pipe = pipe; | ||
55899 | 55061 | ||
55062 | inode->i_pipe = pipe; | ||
55063 | - pipe->files = 2; | ||
55900 | - pipe->readers = pipe->writers = 1; | 55064 | - pipe->readers = pipe->writers = 1; |
55065 | + atomic_set(&pipe->files, 2); | ||
55901 | + atomic_set(&pipe->readers, 1); | 55066 | + atomic_set(&pipe->readers, 1); |
55902 | + atomic_set(&pipe->writers, 1); | 55067 | + atomic_set(&pipe->writers, 1); |
55903 | inode->i_fop = &rdwr_pipefifo_fops; | 55068 | inode->i_fop = &pipefifo_fops; |
55904 | 55069 | ||
55905 | /* | 55070 | /* |
55071 | @@ -1022,17 +1023,17 @@ static int fifo_open(struct inode *inode, struct file *filp) | ||
55072 | spin_lock(&inode->i_lock); | ||
55073 | if (inode->i_pipe) { | ||
55074 | pipe = inode->i_pipe; | ||
55075 | - pipe->files++; | ||
55076 | + atomic_inc(&pipe->files); | ||
55077 | spin_unlock(&inode->i_lock); | ||
55078 | } else { | ||
55079 | spin_unlock(&inode->i_lock); | ||
55080 | pipe = alloc_pipe_info(); | ||
55081 | if (!pipe) | ||
55082 | return -ENOMEM; | ||
55083 | - pipe->files = 1; | ||
55084 | + atomic_set(&pipe->files, 1); | ||
55085 | spin_lock(&inode->i_lock); | ||
55086 | if (unlikely(inode->i_pipe)) { | ||
55087 | - inode->i_pipe->files++; | ||
55088 | + atomic_inc(&inode->i_pipe->files); | ||
55089 | spin_unlock(&inode->i_lock); | ||
55090 | free_pipe_info(pipe); | ||
55091 | pipe = inode->i_pipe; | ||
55092 | @@ -1057,10 +1058,10 @@ static int fifo_open(struct inode *inode, struct file *filp) | ||
55093 | * opened, even when there is no process writing the FIFO. | ||
55094 | */ | ||
55095 | pipe->r_counter++; | ||
55096 | - if (pipe->readers++ == 0) | ||
55097 | + if (atomic_inc_return(&pipe->readers) == 1) | ||
55098 | wake_up_partner(pipe); | ||
55099 | |||
55100 | - if (!is_pipe && !pipe->writers) { | ||
55101 | + if (!is_pipe && !atomic_read(&pipe->writers)) { | ||
55102 | if ((filp->f_flags & O_NONBLOCK)) { | ||
55103 | /* suppress POLLHUP until we have | ||
55104 | * seen a writer */ | ||
55105 | @@ -1079,14 +1080,14 @@ static int fifo_open(struct inode *inode, struct file *filp) | ||
55106 | * errno=ENXIO when there is no process reading the FIFO. | ||
55107 | */ | ||
55108 | ret = -ENXIO; | ||
55109 | - if (!is_pipe && (filp->f_flags & O_NONBLOCK) && !pipe->readers) | ||
55110 | + if (!is_pipe && (filp->f_flags & O_NONBLOCK) && !atomic_read(&pipe->readers)) | ||
55111 | goto err; | ||
55112 | |||
55113 | pipe->w_counter++; | ||
55114 | - if (!pipe->writers++) | ||
55115 | + if (atomic_inc_return(&pipe->writers) == 1) | ||
55116 | wake_up_partner(pipe); | ||
55117 | |||
55118 | - if (!is_pipe && !pipe->readers) { | ||
55119 | + if (!is_pipe && !atomic_read(&pipe->readers)) { | ||
55120 | if (wait_for_partner(pipe, &pipe->r_counter)) | ||
55121 | goto err_wr; | ||
55122 | } | ||
55123 | @@ -1100,11 +1101,11 @@ static int fifo_open(struct inode *inode, struct file *filp) | ||
55124 | * the process can at least talk to itself. | ||
55125 | */ | ||
55126 | |||
55127 | - pipe->readers++; | ||
55128 | - pipe->writers++; | ||
55129 | + atomic_inc(&pipe->readers); | ||
55130 | + atomic_inc(&pipe->writers); | ||
55131 | pipe->r_counter++; | ||
55132 | pipe->w_counter++; | ||
55133 | - if (pipe->readers == 1 || pipe->writers == 1) | ||
55134 | + if (atomic_read(&pipe->readers) == 1 || atomic_read(&pipe->writers) == 1) | ||
55135 | wake_up_partner(pipe); | ||
55136 | break; | ||
55137 | |||
55138 | @@ -1118,20 +1119,20 @@ static int fifo_open(struct inode *inode, struct file *filp) | ||
55139 | return 0; | ||
55140 | |||
55141 | err_rd: | ||
55142 | - if (!--pipe->readers) | ||
55143 | + if (atomic_dec_and_test(&pipe->readers)) | ||
55144 | wake_up_interruptible(&pipe->wait); | ||
55145 | ret = -ERESTARTSYS; | ||
55146 | goto err; | ||
55147 | |||
55148 | err_wr: | ||
55149 | - if (!--pipe->writers) | ||
55150 | + if (atomic_dec_and_test(&pipe->writers)) | ||
55151 | wake_up_interruptible(&pipe->wait); | ||
55152 | ret = -ERESTARTSYS; | ||
55153 | goto err; | ||
55154 | |||
55155 | err: | ||
55156 | spin_lock(&inode->i_lock); | ||
55157 | - if (!--pipe->files) { | ||
55158 | + if (atomic_dec_and_test(&pipe->files)) { | ||
55159 | inode->i_pipe = NULL; | ||
55160 | kill = 1; | ||
55161 | } | ||
55906 | diff --git a/fs/proc/Kconfig b/fs/proc/Kconfig | 55162 | diff --git a/fs/proc/Kconfig b/fs/proc/Kconfig |
55907 | index 15af622..0e9f4467 100644 | 55163 | index 15af622..0e9f4467 100644 |
55908 | --- a/fs/proc/Kconfig | 55164 | --- a/fs/proc/Kconfig |
@@ -56088,10 +55344,10 @@ index cbd0f1b..adec3f0 100644 | |||
56088 | static struct pid * | 55344 | static struct pid * |
56089 | get_children_pid(struct inode *inode, struct pid *pid_prev, loff_t pos) | 55345 | get_children_pid(struct inode *inode, struct pid *pid_prev, loff_t pos) |
56090 | diff --git a/fs/proc/base.c b/fs/proc/base.c | 55346 | diff --git a/fs/proc/base.c b/fs/proc/base.c |
56091 | index 69078c7..3e12a75 100644 | 55347 | index c3834da..b402b2b 100644 |
56092 | --- a/fs/proc/base.c | 55348 | --- a/fs/proc/base.c |
56093 | +++ b/fs/proc/base.c | 55349 | +++ b/fs/proc/base.c |
56094 | @@ -112,6 +112,14 @@ struct pid_entry { | 55350 | @@ -113,6 +113,14 @@ struct pid_entry { |
56095 | union proc_op op; | 55351 | union proc_op op; |
56096 | }; | 55352 | }; |
56097 | 55353 | ||
@@ -56106,7 +55362,7 @@ index 69078c7..3e12a75 100644 | |||
56106 | #define NOD(NAME, MODE, IOP, FOP, OP) { \ | 55362 | #define NOD(NAME, MODE, IOP, FOP, OP) { \ |
56107 | .name = (NAME), \ | 55363 | .name = (NAME), \ |
56108 | .len = sizeof(NAME) - 1, \ | 55364 | .len = sizeof(NAME) - 1, \ |
56109 | @@ -209,6 +217,9 @@ static int proc_pid_cmdline(struct task_struct *task, char * buffer) | 55365 | @@ -210,6 +218,9 @@ static int proc_pid_cmdline(struct task_struct *task, char * buffer) |
56110 | if (!mm->arg_end) | 55366 | if (!mm->arg_end) |
56111 | goto out_mm; /* Shh! No looking before we're done */ | 55367 | goto out_mm; /* Shh! No looking before we're done */ |
56112 | 55368 | ||
@@ -56116,7 +55372,7 @@ index 69078c7..3e12a75 100644 | |||
56116 | len = mm->arg_end - mm->arg_start; | 55372 | len = mm->arg_end - mm->arg_start; |
56117 | 55373 | ||
56118 | if (len > PAGE_SIZE) | 55374 | if (len > PAGE_SIZE) |
56119 | @@ -236,12 +247,28 @@ out: | 55375 | @@ -237,12 +248,28 @@ out: |
56120 | return res; | 55376 | return res; |
56121 | } | 55377 | } |
56122 | 55378 | ||
@@ -56145,7 +55401,7 @@ index 69078c7..3e12a75 100644 | |||
56145 | do { | 55401 | do { |
56146 | nwords += 2; | 55402 | nwords += 2; |
56147 | } while (mm->saved_auxv[nwords - 2] != 0); /* AT_NULL */ | 55403 | } while (mm->saved_auxv[nwords - 2] != 0); /* AT_NULL */ |
56148 | @@ -255,7 +282,7 @@ static int proc_pid_auxv(struct task_struct *task, char *buffer) | 55404 | @@ -256,7 +283,7 @@ static int proc_pid_auxv(struct task_struct *task, char *buffer) |
56149 | } | 55405 | } |
56150 | 55406 | ||
56151 | 55407 | ||
@@ -56154,7 +55410,7 @@ index 69078c7..3e12a75 100644 | |||
56154 | /* | 55410 | /* |
56155 | * Provides a wchan file via kallsyms in a proper one-value-per-file format. | 55411 | * Provides a wchan file via kallsyms in a proper one-value-per-file format. |
56156 | * Returns the resolved symbol. If that fails, simply return the address. | 55412 | * Returns the resolved symbol. If that fails, simply return the address. |
56157 | @@ -294,7 +321,7 @@ static void unlock_trace(struct task_struct *task) | 55413 | @@ -295,7 +322,7 @@ static void unlock_trace(struct task_struct *task) |
56158 | mutex_unlock(&task->signal->cred_guard_mutex); | 55414 | mutex_unlock(&task->signal->cred_guard_mutex); |
56159 | } | 55415 | } |
56160 | 55416 | ||
@@ -56163,7 +55419,7 @@ index 69078c7..3e12a75 100644 | |||
56163 | 55419 | ||
56164 | #define MAX_STACK_TRACE_DEPTH 64 | 55420 | #define MAX_STACK_TRACE_DEPTH 64 |
56165 | 55421 | ||
56166 | @@ -486,7 +513,7 @@ static int proc_pid_limits(struct task_struct *task, char *buffer) | 55422 | @@ -518,7 +545,7 @@ static int proc_pid_limits(struct task_struct *task, char *buffer) |
56167 | return count; | 55423 | return count; |
56168 | } | 55424 | } |
56169 | 55425 | ||
@@ -56172,7 +55428,7 @@ index 69078c7..3e12a75 100644 | |||
56172 | static int proc_pid_syscall(struct task_struct *task, char *buffer) | 55428 | static int proc_pid_syscall(struct task_struct *task, char *buffer) |
56173 | { | 55429 | { |
56174 | long nr; | 55430 | long nr; |
56175 | @@ -515,7 +542,7 @@ static int proc_pid_syscall(struct task_struct *task, char *buffer) | 55431 | @@ -547,7 +574,7 @@ static int proc_pid_syscall(struct task_struct *task, char *buffer) |
56176 | /************************************************************************/ | 55432 | /************************************************************************/ |
56177 | 55433 | ||
56178 | /* permission checks */ | 55434 | /* permission checks */ |
@@ -56181,7 +55437,7 @@ index 69078c7..3e12a75 100644 | |||
56181 | { | 55437 | { |
56182 | struct task_struct *task; | 55438 | struct task_struct *task; |
56183 | int allowed = 0; | 55439 | int allowed = 0; |
56184 | @@ -525,7 +552,10 @@ static int proc_fd_access_allowed(struct inode *inode) | 55440 | @@ -557,7 +584,10 @@ static int proc_fd_access_allowed(struct inode *inode) |
56185 | */ | 55441 | */ |
56186 | task = get_proc_task(inode); | 55442 | task = get_proc_task(inode); |
56187 | if (task) { | 55443 | if (task) { |
@@ -56193,7 +55449,7 @@ index 69078c7..3e12a75 100644 | |||
56193 | put_task_struct(task); | 55449 | put_task_struct(task); |
56194 | } | 55450 | } |
56195 | return allowed; | 55451 | return allowed; |
56196 | @@ -556,10 +586,35 @@ static bool has_pid_permissions(struct pid_namespace *pid, | 55452 | @@ -588,10 +618,35 @@ static bool has_pid_permissions(struct pid_namespace *pid, |
56197 | struct task_struct *task, | 55453 | struct task_struct *task, |
56198 | int hide_pid_min) | 55454 | int hide_pid_min) |
56199 | { | 55455 | { |
@@ -56229,7 +55485,7 @@ index 69078c7..3e12a75 100644 | |||
56229 | return ptrace_may_access(task, PTRACE_MODE_READ); | 55485 | return ptrace_may_access(task, PTRACE_MODE_READ); |
56230 | } | 55486 | } |
56231 | 55487 | ||
56232 | @@ -577,7 +632,11 @@ static int proc_pid_permission(struct inode *inode, int mask) | 55488 | @@ -609,7 +664,11 @@ static int proc_pid_permission(struct inode *inode, int mask) |
56233 | put_task_struct(task); | 55489 | put_task_struct(task); |
56234 | 55490 | ||
56235 | if (!has_perms) { | 55491 | if (!has_perms) { |
@@ -56241,7 +55497,7 @@ index 69078c7..3e12a75 100644 | |||
56241 | /* | 55497 | /* |
56242 | * Let's make getdents(), stat(), and open() | 55498 | * Let's make getdents(), stat(), and open() |
56243 | * consistent with each other. If a process | 55499 | * consistent with each other. If a process |
56244 | @@ -675,6 +734,11 @@ static int __mem_open(struct inode *inode, struct file *file, unsigned int mode) | 55500 | @@ -707,6 +766,11 @@ static int __mem_open(struct inode *inode, struct file *file, unsigned int mode) |
56245 | if (!task) | 55501 | if (!task) |
56246 | return -ESRCH; | 55502 | return -ESRCH; |
56247 | 55503 | ||
@@ -56253,7 +55509,7 @@ index 69078c7..3e12a75 100644 | |||
56253 | mm = mm_access(task, mode); | 55509 | mm = mm_access(task, mode); |
56254 | put_task_struct(task); | 55510 | put_task_struct(task); |
56255 | 55511 | ||
56256 | @@ -690,6 +754,10 @@ static int __mem_open(struct inode *inode, struct file *file, unsigned int mode) | 55512 | @@ -722,6 +786,10 @@ static int __mem_open(struct inode *inode, struct file *file, unsigned int mode) |
56257 | 55513 | ||
56258 | file->private_data = mm; | 55514 | file->private_data = mm; |
56259 | 55515 | ||
@@ -56264,7 +55520,7 @@ index 69078c7..3e12a75 100644 | |||
56264 | return 0; | 55520 | return 0; |
56265 | } | 55521 | } |
56266 | 55522 | ||
56267 | @@ -711,6 +779,17 @@ static ssize_t mem_rw(struct file *file, char __user *buf, | 55523 | @@ -743,6 +811,17 @@ static ssize_t mem_rw(struct file *file, char __user *buf, |
56268 | ssize_t copied; | 55524 | ssize_t copied; |
56269 | char *page; | 55525 | char *page; |
56270 | 55526 | ||
@@ -56282,7 +55538,7 @@ index 69078c7..3e12a75 100644 | |||
56282 | if (!mm) | 55538 | if (!mm) |
56283 | return 0; | 55539 | return 0; |
56284 | 55540 | ||
56285 | @@ -723,7 +802,7 @@ static ssize_t mem_rw(struct file *file, char __user *buf, | 55541 | @@ -755,7 +834,7 @@ static ssize_t mem_rw(struct file *file, char __user *buf, |
56286 | goto free; | 55542 | goto free; |
56287 | 55543 | ||
56288 | while (count > 0) { | 55544 | while (count > 0) { |
@@ -56291,7 +55547,7 @@ index 69078c7..3e12a75 100644 | |||
56291 | 55547 | ||
56292 | if (write && copy_from_user(page, buf, this_len)) { | 55548 | if (write && copy_from_user(page, buf, this_len)) { |
56293 | copied = -EFAULT; | 55549 | copied = -EFAULT; |
56294 | @@ -815,6 +894,13 @@ static ssize_t environ_read(struct file *file, char __user *buf, | 55550 | @@ -847,6 +926,13 @@ static ssize_t environ_read(struct file *file, char __user *buf, |
56295 | if (!mm) | 55551 | if (!mm) |
56296 | return 0; | 55552 | return 0; |
56297 | 55553 | ||
@@ -56305,7 +55561,7 @@ index 69078c7..3e12a75 100644 | |||
56305 | page = (char *)__get_free_page(GFP_TEMPORARY); | 55561 | page = (char *)__get_free_page(GFP_TEMPORARY); |
56306 | if (!page) | 55562 | if (!page) |
56307 | return -ENOMEM; | 55563 | return -ENOMEM; |
56308 | @@ -824,7 +910,7 @@ static ssize_t environ_read(struct file *file, char __user *buf, | 55564 | @@ -856,7 +942,7 @@ static ssize_t environ_read(struct file *file, char __user *buf, |
56309 | goto free; | 55565 | goto free; |
56310 | while (count > 0) { | 55566 | while (count > 0) { |
56311 | size_t this_len, max_len; | 55567 | size_t this_len, max_len; |
@@ -56314,7 +55570,7 @@ index 69078c7..3e12a75 100644 | |||
56314 | 55570 | ||
56315 | if (src >= (mm->env_end - mm->env_start)) | 55571 | if (src >= (mm->env_end - mm->env_start)) |
56316 | break; | 55572 | break; |
56317 | @@ -1430,7 +1516,7 @@ static void *proc_pid_follow_link(struct dentry *dentry, struct nameidata *nd) | 55573 | @@ -1461,7 +1547,7 @@ static void *proc_pid_follow_link(struct dentry *dentry, struct nameidata *nd) |
56318 | int error = -EACCES; | 55574 | int error = -EACCES; |
56319 | 55575 | ||
56320 | /* Are we allowed to snoop on the tasks file descriptors? */ | 55576 | /* Are we allowed to snoop on the tasks file descriptors? */ |
@@ -56323,7 +55579,7 @@ index 69078c7..3e12a75 100644 | |||
56323 | goto out; | 55579 | goto out; |
56324 | 55580 | ||
56325 | error = PROC_I(inode)->op.proc_get_link(dentry, &path); | 55581 | error = PROC_I(inode)->op.proc_get_link(dentry, &path); |
56326 | @@ -1474,8 +1560,18 @@ static int proc_pid_readlink(struct dentry * dentry, char __user * buffer, int b | 55582 | @@ -1505,8 +1591,18 @@ static int proc_pid_readlink(struct dentry * dentry, char __user * buffer, int b |
56327 | struct path path; | 55583 | struct path path; |
56328 | 55584 | ||
56329 | /* Are we allowed to snoop on the tasks file descriptors? */ | 55585 | /* Are we allowed to snoop on the tasks file descriptors? */ |
@@ -56344,7 +55600,7 @@ index 69078c7..3e12a75 100644 | |||
56344 | 55600 | ||
56345 | error = PROC_I(inode)->op.proc_get_link(dentry, &path); | 55601 | error = PROC_I(inode)->op.proc_get_link(dentry, &path); |
56346 | if (error) | 55602 | if (error) |
56347 | @@ -1525,7 +1621,11 @@ struct inode *proc_pid_make_inode(struct super_block * sb, struct task_struct *t | 55603 | @@ -1556,7 +1652,11 @@ struct inode *proc_pid_make_inode(struct super_block * sb, struct task_struct *t |
56348 | rcu_read_lock(); | 55604 | rcu_read_lock(); |
56349 | cred = __task_cred(task); | 55605 | cred = __task_cred(task); |
56350 | inode->i_uid = cred->euid; | 55606 | inode->i_uid = cred->euid; |
@@ -56356,7 +55612,7 @@ index 69078c7..3e12a75 100644 | |||
56356 | rcu_read_unlock(); | 55612 | rcu_read_unlock(); |
56357 | } | 55613 | } |
56358 | security_task_to_inode(task, inode); | 55614 | security_task_to_inode(task, inode); |
56359 | @@ -1561,10 +1661,19 @@ int pid_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat) | 55615 | @@ -1592,10 +1692,19 @@ int pid_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat) |
56360 | return -ENOENT; | 55616 | return -ENOENT; |
56361 | } | 55617 | } |
56362 | if ((inode->i_mode == (S_IFDIR|S_IRUGO|S_IXUGO)) || | 55618 | if ((inode->i_mode == (S_IFDIR|S_IRUGO|S_IXUGO)) || |
@@ -56376,7 +55632,7 @@ index 69078c7..3e12a75 100644 | |||
56376 | } | 55632 | } |
56377 | } | 55633 | } |
56378 | rcu_read_unlock(); | 55634 | rcu_read_unlock(); |
56379 | @@ -1602,11 +1711,20 @@ int pid_revalidate(struct dentry *dentry, unsigned int flags) | 55635 | @@ -1633,11 +1742,20 @@ int pid_revalidate(struct dentry *dentry, unsigned int flags) |
56380 | 55636 | ||
56381 | if (task) { | 55637 | if (task) { |
56382 | if ((inode->i_mode == (S_IFDIR|S_IRUGO|S_IXUGO)) || | 55638 | if ((inode->i_mode == (S_IFDIR|S_IRUGO|S_IXUGO)) || |
@@ -56397,7 +55653,7 @@ index 69078c7..3e12a75 100644 | |||
56397 | rcu_read_unlock(); | 55653 | rcu_read_unlock(); |
56398 | } else { | 55654 | } else { |
56399 | inode->i_uid = GLOBAL_ROOT_UID; | 55655 | inode->i_uid = GLOBAL_ROOT_UID; |
56400 | @@ -2059,6 +2177,9 @@ static struct dentry *proc_pident_lookup(struct inode *dir, | 55656 | @@ -2196,6 +2314,9 @@ static struct dentry *proc_pident_lookup(struct inode *dir, |
56401 | if (!task) | 55657 | if (!task) |
56402 | goto out_no_task; | 55658 | goto out_no_task; |
56403 | 55659 | ||
@@ -56407,7 +55663,7 @@ index 69078c7..3e12a75 100644 | |||
56407 | /* | 55663 | /* |
56408 | * Yes, it does not scale. And it should not. Don't add | 55664 | * Yes, it does not scale. And it should not. Don't add |
56409 | * new entries into /proc/<tgid>/ without very good reasons. | 55665 | * new entries into /proc/<tgid>/ without very good reasons. |
56410 | @@ -2103,6 +2224,9 @@ static int proc_pident_readdir(struct file *filp, | 55666 | @@ -2240,6 +2361,9 @@ static int proc_pident_readdir(struct file *filp, |
56411 | if (!task) | 55667 | if (!task) |
56412 | goto out_no_task; | 55668 | goto out_no_task; |
56413 | 55669 | ||
@@ -56417,7 +55673,7 @@ index 69078c7..3e12a75 100644 | |||
56417 | ret = 0; | 55673 | ret = 0; |
56418 | i = filp->f_pos; | 55674 | i = filp->f_pos; |
56419 | switch (i) { | 55675 | switch (i) { |
56420 | @@ -2516,7 +2640,7 @@ static const struct pid_entry tgid_base_stuff[] = { | 55676 | @@ -2653,7 +2777,7 @@ static const struct pid_entry tgid_base_stuff[] = { |
56421 | REG("autogroup", S_IRUGO|S_IWUSR, proc_pid_sched_autogroup_operations), | 55677 | REG("autogroup", S_IRUGO|S_IWUSR, proc_pid_sched_autogroup_operations), |
56422 | #endif | 55678 | #endif |
56423 | REG("comm", S_IRUGO|S_IWUSR, proc_pid_set_comm_operations), | 55679 | REG("comm", S_IRUGO|S_IWUSR, proc_pid_set_comm_operations), |
@@ -56426,7 +55682,7 @@ index 69078c7..3e12a75 100644 | |||
56426 | INF("syscall", S_IRUGO, proc_pid_syscall), | 55682 | INF("syscall", S_IRUGO, proc_pid_syscall), |
56427 | #endif | 55683 | #endif |
56428 | INF("cmdline", S_IRUGO, proc_pid_cmdline), | 55684 | INF("cmdline", S_IRUGO, proc_pid_cmdline), |
56429 | @@ -2541,10 +2665,10 @@ static const struct pid_entry tgid_base_stuff[] = { | 55685 | @@ -2678,10 +2802,10 @@ static const struct pid_entry tgid_base_stuff[] = { |
56430 | #ifdef CONFIG_SECURITY | 55686 | #ifdef CONFIG_SECURITY |
56431 | DIR("attr", S_IRUGO|S_IXUGO, proc_attr_dir_inode_operations, proc_attr_dir_operations), | 55687 | DIR("attr", S_IRUGO|S_IXUGO, proc_attr_dir_inode_operations, proc_attr_dir_operations), |
56432 | #endif | 55688 | #endif |
@@ -56439,7 +55695,7 @@ index 69078c7..3e12a75 100644 | |||
56439 | ONE("stack", S_IRUGO, proc_pid_stack), | 55695 | ONE("stack", S_IRUGO, proc_pid_stack), |
56440 | #endif | 55696 | #endif |
56441 | #ifdef CONFIG_SCHEDSTATS | 55697 | #ifdef CONFIG_SCHEDSTATS |
56442 | @@ -2578,6 +2702,9 @@ static const struct pid_entry tgid_base_stuff[] = { | 55698 | @@ -2715,6 +2839,9 @@ static const struct pid_entry tgid_base_stuff[] = { |
56443 | #ifdef CONFIG_HARDWALL | 55699 | #ifdef CONFIG_HARDWALL |
56444 | INF("hardwall", S_IRUGO, proc_pid_hardwall), | 55700 | INF("hardwall", S_IRUGO, proc_pid_hardwall), |
56445 | #endif | 55701 | #endif |
@@ -56449,7 +55705,7 @@ index 69078c7..3e12a75 100644 | |||
56449 | #ifdef CONFIG_USER_NS | 55705 | #ifdef CONFIG_USER_NS |
56450 | REG("uid_map", S_IRUGO|S_IWUSR, proc_uid_map_operations), | 55706 | REG("uid_map", S_IRUGO|S_IWUSR, proc_uid_map_operations), |
56451 | REG("gid_map", S_IRUGO|S_IWUSR, proc_gid_map_operations), | 55707 | REG("gid_map", S_IRUGO|S_IWUSR, proc_gid_map_operations), |
56452 | @@ -2707,7 +2834,14 @@ static struct dentry *proc_pid_instantiate(struct inode *dir, | 55708 | @@ -2847,7 +2974,14 @@ static struct dentry *proc_pid_instantiate(struct inode *dir, |
56453 | if (!inode) | 55709 | if (!inode) |
56454 | goto out; | 55710 | goto out; |
56455 | 55711 | ||
@@ -56464,7 +55720,7 @@ index 69078c7..3e12a75 100644 | |||
56464 | inode->i_op = &proc_tgid_base_inode_operations; | 55720 | inode->i_op = &proc_tgid_base_inode_operations; |
56465 | inode->i_fop = &proc_tgid_base_operations; | 55721 | inode->i_fop = &proc_tgid_base_operations; |
56466 | inode->i_flags|=S_IMMUTABLE; | 55722 | inode->i_flags|=S_IMMUTABLE; |
56467 | @@ -2745,7 +2879,11 @@ struct dentry *proc_pid_lookup(struct inode *dir, struct dentry * dentry, unsign | 55723 | @@ -2885,7 +3019,11 @@ struct dentry *proc_pid_lookup(struct inode *dir, struct dentry * dentry, unsign |
56468 | if (!task) | 55724 | if (!task) |
56469 | goto out; | 55725 | goto out; |
56470 | 55726 | ||
@@ -56476,7 +55732,7 @@ index 69078c7..3e12a75 100644 | |||
56476 | put_task_struct(task); | 55732 | put_task_struct(task); |
56477 | out: | 55733 | out: |
56478 | return result; | 55734 | return result; |
56479 | @@ -2808,6 +2946,8 @@ static int proc_pid_fill_cache(struct file *filp, void *dirent, filldir_t filldi | 55735 | @@ -2948,6 +3086,8 @@ static int proc_pid_fill_cache(struct file *filp, void *dirent, filldir_t filldi |
56480 | static int fake_filldir(void *buf, const char *name, int namelen, | 55736 | static int fake_filldir(void *buf, const char *name, int namelen, |
56481 | loff_t offset, u64 ino, unsigned d_type) | 55737 | loff_t offset, u64 ino, unsigned d_type) |
56482 | { | 55738 | { |
@@ -56485,7 +55741,7 @@ index 69078c7..3e12a75 100644 | |||
56485 | return 0; | 55741 | return 0; |
56486 | } | 55742 | } |
56487 | 55743 | ||
56488 | @@ -2859,7 +2999,7 @@ static const struct pid_entry tid_base_stuff[] = { | 55744 | @@ -3007,7 +3147,7 @@ static const struct pid_entry tid_base_stuff[] = { |
56489 | REG("sched", S_IRUGO|S_IWUSR, proc_pid_sched_operations), | 55745 | REG("sched", S_IRUGO|S_IWUSR, proc_pid_sched_operations), |
56490 | #endif | 55746 | #endif |
56491 | REG("comm", S_IRUGO|S_IWUSR, proc_pid_set_comm_operations), | 55747 | REG("comm", S_IRUGO|S_IWUSR, proc_pid_set_comm_operations), |
@@ -56494,7 +55750,7 @@ index 69078c7..3e12a75 100644 | |||
56494 | INF("syscall", S_IRUGO, proc_pid_syscall), | 55750 | INF("syscall", S_IRUGO, proc_pid_syscall), |
56495 | #endif | 55751 | #endif |
56496 | INF("cmdline", S_IRUGO, proc_pid_cmdline), | 55752 | INF("cmdline", S_IRUGO, proc_pid_cmdline), |
56497 | @@ -2886,10 +3026,10 @@ static const struct pid_entry tid_base_stuff[] = { | 55753 | @@ -3034,10 +3174,10 @@ static const struct pid_entry tid_base_stuff[] = { |
56498 | #ifdef CONFIG_SECURITY | 55754 | #ifdef CONFIG_SECURITY |
56499 | DIR("attr", S_IRUGO|S_IXUGO, proc_attr_dir_inode_operations, proc_attr_dir_operations), | 55755 | DIR("attr", S_IRUGO|S_IXUGO, proc_attr_dir_inode_operations, proc_attr_dir_operations), |
56500 | #endif | 55756 | #endif |
@@ -56578,13 +55834,13 @@ index d7a4a28..0201742 100644 | |||
56578 | } | 55834 | } |
56579 | 55835 | ||
56580 | diff --git a/fs/proc/inode.c b/fs/proc/inode.c | 55836 | diff --git a/fs/proc/inode.c b/fs/proc/inode.c |
56581 | index 869116c..820cb27 100644 | 55837 | index 073aea6..0630370 100644 |
56582 | --- a/fs/proc/inode.c | 55838 | --- a/fs/proc/inode.c |
56583 | +++ b/fs/proc/inode.c | 55839 | +++ b/fs/proc/inode.c |
56584 | @@ -22,11 +22,17 @@ | 55840 | @@ -23,11 +23,17 @@ |
56585 | #include <linux/seq_file.h> | ||
56586 | #include <linux/slab.h> | 55841 | #include <linux/slab.h> |
56587 | #include <linux/mount.h> | 55842 | #include <linux/mount.h> |
55843 | #include <linux/magic.h> | ||
56588 | +#include <linux/grsecurity.h> | 55844 | +#include <linux/grsecurity.h> |
56589 | 55845 | ||
56590 | #include <asm/uaccess.h> | 55846 | #include <asm/uaccess.h> |
@@ -56599,8 +55855,8 @@ index 869116c..820cb27 100644 | |||
56599 | static void proc_evict_inode(struct inode *inode) | 55855 | static void proc_evict_inode(struct inode *inode) |
56600 | { | 55856 | { |
56601 | struct proc_dir_entry *de; | 55857 | struct proc_dir_entry *de; |
56602 | @@ -54,6 +60,13 @@ static void proc_evict_inode(struct inode *inode) | 55858 | @@ -55,6 +61,13 @@ static void proc_evict_inode(struct inode *inode) |
56603 | ns = PROC_I(inode)->ns; | 55859 | ns = PROC_I(inode)->ns.ns; |
56604 | if (ns_ops && ns) | 55860 | if (ns_ops && ns) |
56605 | ns_ops->put(ns); | 55861 | ns_ops->put(ns); |
56606 | + | 55862 | + |
@@ -56613,7 +55869,7 @@ index 869116c..820cb27 100644 | |||
56613 | } | 55869 | } |
56614 | 55870 | ||
56615 | static struct kmem_cache * proc_inode_cachep; | 55871 | static struct kmem_cache * proc_inode_cachep; |
56616 | @@ -456,7 +469,11 @@ struct inode *proc_get_inode(struct super_block *sb, struct proc_dir_entry *de) | 55872 | @@ -385,7 +398,11 @@ struct inode *proc_get_inode(struct super_block *sb, struct proc_dir_entry *de) |
56617 | if (de->mode) { | 55873 | if (de->mode) { |
56618 | inode->i_mode = de->mode; | 55874 | inode->i_mode = de->mode; |
56619 | inode->i_uid = de->uid; | 55875 | inode->i_uid = de->uid; |
@@ -56626,24 +55882,24 @@ index 869116c..820cb27 100644 | |||
56626 | if (de->size) | 55882 | if (de->size) |
56627 | inode->i_size = de->size; | 55883 | inode->i_size = de->size; |
56628 | diff --git a/fs/proc/internal.h b/fs/proc/internal.h | 55884 | diff --git a/fs/proc/internal.h b/fs/proc/internal.h |
56629 | index 85ff3a4..a512bd8 100644 | 55885 | index d600fb0..3b495fe 100644 |
56630 | --- a/fs/proc/internal.h | 55886 | --- a/fs/proc/internal.h |
56631 | +++ b/fs/proc/internal.h | 55887 | +++ b/fs/proc/internal.h |
56632 | @@ -56,6 +56,9 @@ extern int proc_pid_status(struct seq_file *m, struct pid_namespace *ns, | 55888 | @@ -155,6 +155,9 @@ extern int proc_pid_status(struct seq_file *, struct pid_namespace *, |
56633 | struct pid *pid, struct task_struct *task); | 55889 | struct pid *, struct task_struct *); |
56634 | extern int proc_pid_statm(struct seq_file *m, struct pid_namespace *ns, | 55890 | extern int proc_pid_statm(struct seq_file *, struct pid_namespace *, |
56635 | struct pid *pid, struct task_struct *task); | 55891 | struct pid *, struct task_struct *); |
56636 | +#ifdef CONFIG_GRKERNSEC_PROC_IPADDR | 55892 | +#ifdef CONFIG_GRKERNSEC_PROC_IPADDR |
56637 | +extern int proc_pid_ipaddr(struct task_struct *task, char *buffer); | 55893 | +extern int proc_pid_ipaddr(struct task_struct *task, char *buffer); |
56638 | +#endif | 55894 | +#endif |
56639 | extern loff_t mem_lseek(struct file *file, loff_t offset, int orig); | ||
56640 | 55895 | ||
56641 | extern const struct file_operations proc_tid_children_operations; | 55896 | /* |
55897 | * base.c | ||
56642 | diff --git a/fs/proc/kcore.c b/fs/proc/kcore.c | 55898 | diff --git a/fs/proc/kcore.c b/fs/proc/kcore.c |
56643 | index eda6f01..006ae24 100644 | 55899 | index 0a22194..a9fc8c1 100644 |
56644 | --- a/fs/proc/kcore.c | 55900 | --- a/fs/proc/kcore.c |
56645 | +++ b/fs/proc/kcore.c | 55901 | +++ b/fs/proc/kcore.c |
56646 | @@ -481,9 +481,10 @@ read_kcore(struct file *file, char __user *buffer, size_t buflen, loff_t *fpos) | 55902 | @@ -484,9 +484,10 @@ read_kcore(struct file *file, char __user *buffer, size_t buflen, loff_t *fpos) |
56647 | * the addresses in the elf_phdr on our list. | 55903 | * the addresses in the elf_phdr on our list. |
56648 | */ | 55904 | */ |
56649 | start = kc_offset_to_vaddr(*fpos - elf_buflen); | 55905 | start = kc_offset_to_vaddr(*fpos - elf_buflen); |
@@ -56656,12 +55912,14 @@ index eda6f01..006ae24 100644 | |||
56656 | while (buflen) { | 55912 | while (buflen) { |
56657 | struct kcore_list *m; | 55913 | struct kcore_list *m; |
56658 | 55914 | ||
56659 | @@ -512,20 +513,23 @@ read_kcore(struct file *file, char __user *buffer, size_t buflen, loff_t *fpos) | 55915 | @@ -515,20 +516,23 @@ read_kcore(struct file *file, char __user *buffer, size_t buflen, loff_t *fpos) |
56660 | kfree(elf_buf); | 55916 | kfree(elf_buf); |
56661 | } else { | 55917 | } else { |
56662 | if (kern_addr_valid(start)) { | 55918 | if (kern_addr_valid(start)) { |
56663 | - unsigned long n; | 55919 | - unsigned long n; |
56664 | - | 55920 | + char *elf_buf; |
55921 | + mm_segment_t oldfs; | ||
55922 | |||
56665 | - n = copy_to_user(buffer, (char *)start, tsz); | 55923 | - n = copy_to_user(buffer, (char *)start, tsz); |
56666 | - /* | 55924 | - /* |
56667 | - * We cannot distinguish between fault on source | 55925 | - * We cannot distinguish between fault on source |
@@ -56672,9 +55930,6 @@ index eda6f01..006ae24 100644 | |||
56672 | - if (n) { | 55930 | - if (n) { |
56673 | - if (clear_user(buffer + tsz - n, | 55931 | - if (clear_user(buffer + tsz - n, |
56674 | - n)) | 55932 | - n)) |
56675 | + char *elf_buf; | ||
56676 | + mm_segment_t oldfs; | ||
56677 | + | ||
56678 | + elf_buf = kmalloc(tsz, GFP_KERNEL); | 55933 | + elf_buf = kmalloc(tsz, GFP_KERNEL); |
56679 | + if (!elf_buf) | 55934 | + if (!elf_buf) |
56680 | + return -ENOMEM; | 55935 | + return -ENOMEM; |
@@ -56692,7 +55947,7 @@ index eda6f01..006ae24 100644 | |||
56692 | } else { | 55947 | } else { |
56693 | if (clear_user(buffer, tsz)) | 55948 | if (clear_user(buffer, tsz)) |
56694 | return -EFAULT; | 55949 | return -EFAULT; |
56695 | @@ -545,6 +549,9 @@ read_kcore(struct file *file, char __user *buffer, size_t buflen, loff_t *fpos) | 55950 | @@ -548,6 +552,9 @@ read_kcore(struct file *file, char __user *buffer, size_t buflen, loff_t *fpos) |
56696 | 55951 | ||
56697 | static int open_kcore(struct inode *inode, struct file *filp) | 55952 | static int open_kcore(struct inode *inode, struct file *filp) |
56698 | { | 55953 | { |
@@ -56703,10 +55958,10 @@ index eda6f01..006ae24 100644 | |||
56703 | return -EPERM; | 55958 | return -EPERM; |
56704 | if (kcore_need_update) | 55959 | if (kcore_need_update) |
56705 | diff --git a/fs/proc/meminfo.c b/fs/proc/meminfo.c | 55960 | diff --git a/fs/proc/meminfo.c b/fs/proc/meminfo.c |
56706 | index 1efaaa1..834e49a 100644 | 55961 | index 5aa847a..f77c8d4 100644 |
56707 | --- a/fs/proc/meminfo.c | 55962 | --- a/fs/proc/meminfo.c |
56708 | +++ b/fs/proc/meminfo.c | 55963 | +++ b/fs/proc/meminfo.c |
56709 | @@ -158,7 +158,7 @@ static int meminfo_proc_show(struct seq_file *m, void *v) | 55964 | @@ -159,7 +159,7 @@ static int meminfo_proc_show(struct seq_file *m, void *v) |
56710 | vmi.used >> 10, | 55965 | vmi.used >> 10, |
56711 | vmi.largest_chunk >> 10 | 55966 | vmi.largest_chunk >> 10 |
56712 | #ifdef CONFIG_MEMORY_FAILURE | 55967 | #ifdef CONFIG_MEMORY_FAILURE |
@@ -56729,7 +55984,7 @@ index ccfd99b..1b7e255 100644 | |||
56729 | 55984 | ||
56730 | seq_putc(m, '\n'); | 55985 | seq_putc(m, '\n'); |
56731 | diff --git a/fs/proc/proc_net.c b/fs/proc/proc_net.c | 55986 | diff --git a/fs/proc/proc_net.c b/fs/proc/proc_net.c |
56732 | index b4ac657..0842bd2 100644 | 55987 | index 986e832..6e8e859 100644 |
56733 | --- a/fs/proc/proc_net.c | 55988 | --- a/fs/proc/proc_net.c |
56734 | +++ b/fs/proc/proc_net.c | 55989 | +++ b/fs/proc/proc_net.c |
56735 | @@ -23,6 +23,7 @@ | 55990 | @@ -23,6 +23,7 @@ |
@@ -56740,7 +55995,7 @@ index b4ac657..0842bd2 100644 | |||
56740 | 55995 | ||
56741 | #include "internal.h" | 55996 | #include "internal.h" |
56742 | 55997 | ||
56743 | @@ -105,6 +106,17 @@ static struct net *get_proc_task_net(struct inode *dir) | 55998 | @@ -109,6 +110,17 @@ static struct net *get_proc_task_net(struct inode *dir) |
56744 | struct task_struct *task; | 55999 | struct task_struct *task; |
56745 | struct nsproxy *ns; | 56000 | struct nsproxy *ns; |
56746 | struct net *net = NULL; | 56001 | struct net *net = NULL; |
@@ -56946,10 +56201,10 @@ index ac05f33..1e6dc7e 100644 | |||
56946 | kfree(ctl_table_arg); | 56201 | kfree(ctl_table_arg); |
56947 | goto out; | 56202 | goto out; |
56948 | diff --git a/fs/proc/root.c b/fs/proc/root.c | 56203 | diff --git a/fs/proc/root.c b/fs/proc/root.c |
56949 | index 9c7fab1..ed1c8e0 100644 | 56204 | index 41a6ea9..23eaa92 100644 |
56950 | --- a/fs/proc/root.c | 56205 | --- a/fs/proc/root.c |
56951 | +++ b/fs/proc/root.c | 56206 | +++ b/fs/proc/root.c |
56952 | @@ -180,7 +180,15 @@ void __init proc_root_init(void) | 56207 | @@ -182,7 +182,15 @@ void __init proc_root_init(void) |
56953 | #ifdef CONFIG_PROC_DEVICETREE | 56208 | #ifdef CONFIG_PROC_DEVICETREE |
56954 | proc_device_tree_init(); | 56209 | proc_device_tree_init(); |
56955 | #endif | 56210 | #endif |
@@ -56966,10 +56221,10 @@ index 9c7fab1..ed1c8e0 100644 | |||
56966 | } | 56221 | } |
56967 | 56222 | ||
56968 | diff --git a/fs/proc/self.c b/fs/proc/self.c | 56223 | diff --git a/fs/proc/self.c b/fs/proc/self.c |
56969 | index aa5cc3b..c91a5d0 100644 | 56224 | index 6b6a993..807cccc 100644 |
56970 | --- a/fs/proc/self.c | 56225 | --- a/fs/proc/self.c |
56971 | +++ b/fs/proc/self.c | 56226 | +++ b/fs/proc/self.c |
56972 | @@ -37,7 +37,7 @@ static void *proc_self_follow_link(struct dentry *dentry, struct nameidata *nd) | 56227 | @@ -39,7 +39,7 @@ static void *proc_self_follow_link(struct dentry *dentry, struct nameidata *nd) |
56973 | static void proc_self_put_link(struct dentry *dentry, struct nameidata *nd, | 56228 | static void proc_self_put_link(struct dentry *dentry, struct nameidata *nd, |
56974 | void *cookie) | 56229 | void *cookie) |
56975 | { | 56230 | { |
@@ -57200,10 +56455,10 @@ index 56123a6..5a2f6ec 100644 | |||
57200 | pid_t tid = vm_is_stack(priv->task, vma, is_pid); | 56455 | pid_t tid = vm_is_stack(priv->task, vma, is_pid); |
57201 | 56456 | ||
57202 | diff --git a/fs/proc/vmcore.c b/fs/proc/vmcore.c | 56457 | diff --git a/fs/proc/vmcore.c b/fs/proc/vmcore.c |
57203 | index b870f74..e9048df 100644 | 56458 | index 17f7e08..e4b1529 100644 |
57204 | --- a/fs/proc/vmcore.c | 56459 | --- a/fs/proc/vmcore.c |
57205 | +++ b/fs/proc/vmcore.c | 56460 | +++ b/fs/proc/vmcore.c |
57206 | @@ -98,9 +98,13 @@ static ssize_t read_from_oldmem(char *buf, size_t count, | 56461 | @@ -99,9 +99,13 @@ static ssize_t read_from_oldmem(char *buf, size_t count, |
57207 | nr_bytes = count; | 56462 | nr_bytes = count; |
57208 | 56463 | ||
57209 | /* If pfn is not ram, return zeros for sparse dump files */ | 56464 | /* If pfn is not ram, return zeros for sparse dump files */ |
@@ -57220,7 +56475,7 @@ index b870f74..e9048df 100644 | |||
57220 | tmp = copy_oldmem_page(pfn, buf, nr_bytes, | 56475 | tmp = copy_oldmem_page(pfn, buf, nr_bytes, |
57221 | offset, userbuf); | 56476 | offset, userbuf); |
57222 | if (tmp < 0) | 56477 | if (tmp < 0) |
57223 | @@ -185,7 +189,7 @@ static ssize_t read_vmcore(struct file *file, char __user *buffer, | 56478 | @@ -186,7 +190,7 @@ static ssize_t read_vmcore(struct file *file, char __user *buffer, |
57224 | if (tsz > nr_bytes) | 56479 | if (tsz > nr_bytes) |
57225 | tsz = nr_bytes; | 56480 | tsz = nr_bytes; |
57226 | 56481 | ||
@@ -57274,10 +56529,10 @@ index 16e8abb..2dcf914 100644 | |||
57274 | if (!msg_head) { | 56529 | if (!msg_head) { |
57275 | printk(KERN_ERR | 56530 | printk(KERN_ERR |
57276 | diff --git a/fs/read_write.c b/fs/read_write.c | 56531 | diff --git a/fs/read_write.c b/fs/read_write.c |
57277 | index e6ddc8d..9155227 100644 | 56532 | index 2cefa41..c7e2fe0 100644 |
57278 | --- a/fs/read_write.c | 56533 | --- a/fs/read_write.c |
57279 | +++ b/fs/read_write.c | 56534 | +++ b/fs/read_write.c |
57280 | @@ -429,7 +429,7 @@ ssize_t __kernel_write(struct file *file, const char *buf, size_t count, loff_t | 56535 | @@ -411,7 +411,7 @@ ssize_t __kernel_write(struct file *file, const char *buf, size_t count, loff_t |
57281 | 56536 | ||
57282 | old_fs = get_fs(); | 56537 | old_fs = get_fs(); |
57283 | set_fs(get_ds()); | 56538 | set_fs(get_ds()); |
@@ -57402,7 +56657,7 @@ index 2b7882b..1c5ef48 100644 | |||
57402 | 56657 | ||
57403 | /* balance leaf returns 0 except if combining L R and S into | 56658 | /* balance leaf returns 0 except if combining L R and S into |
57404 | diff --git a/fs/reiserfs/procfs.c b/fs/reiserfs/procfs.c | 56659 | diff --git a/fs/reiserfs/procfs.c b/fs/reiserfs/procfs.c |
57405 | index 9cc0740a..46bf953 100644 | 56660 | index 33532f7..4846ade 100644 |
57406 | --- a/fs/reiserfs/procfs.c | 56661 | --- a/fs/reiserfs/procfs.c |
57407 | +++ b/fs/reiserfs/procfs.c | 56662 | +++ b/fs/reiserfs/procfs.c |
57408 | @@ -112,7 +112,7 @@ static int show_super(struct seq_file *m, struct super_block *sb) | 56663 | @@ -112,7 +112,7 @@ static int show_super(struct seq_file *m, struct super_block *sb) |
@@ -57457,7 +56712,7 @@ index 8c1c96c..a0f9b6d 100644 | |||
57457 | return -EINVAL; | 56712 | return -EINVAL; |
57458 | 56713 | ||
57459 | diff --git a/fs/seq_file.c b/fs/seq_file.c | 56714 | diff --git a/fs/seq_file.c b/fs/seq_file.c |
57460 | index 38bb59f..a304f9d 100644 | 56715 | index 774c1eb..b67582a 100644 |
57461 | --- a/fs/seq_file.c | 56716 | --- a/fs/seq_file.c |
57462 | +++ b/fs/seq_file.c | 56717 | +++ b/fs/seq_file.c |
57463 | @@ -10,6 +10,7 @@ | 56718 | @@ -10,6 +10,7 @@ |
@@ -57524,10 +56779,10 @@ index 38bb59f..a304f9d 100644 | |||
57524 | 56779 | ||
57525 | if (op) { | 56780 | if (op) { |
57526 | diff --git a/fs/splice.c b/fs/splice.c | 56781 | diff --git a/fs/splice.c b/fs/splice.c |
57527 | index 29e394e..b13c247 100644 | 56782 | index d37431d..81c3044 100644 |
57528 | --- a/fs/splice.c | 56783 | --- a/fs/splice.c |
57529 | +++ b/fs/splice.c | 56784 | +++ b/fs/splice.c |
57530 | @@ -195,7 +195,7 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe, | 56785 | @@ -196,7 +196,7 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe, |
57531 | pipe_lock(pipe); | 56786 | pipe_lock(pipe); |
57532 | 56787 | ||
57533 | for (;;) { | 56788 | for (;;) { |
@@ -57536,7 +56791,16 @@ index 29e394e..b13c247 100644 | |||
57536 | send_sig(SIGPIPE, current, 0); | 56791 | send_sig(SIGPIPE, current, 0); |
57537 | if (!ret) | 56792 | if (!ret) |
57538 | ret = -EPIPE; | 56793 | ret = -EPIPE; |
57539 | @@ -249,9 +249,9 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe, | 56794 | @@ -219,7 +219,7 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe, |
56795 | page_nr++; | ||
56796 | ret += buf->len; | ||
56797 | |||
56798 | - if (pipe->files) | ||
56799 | + if (atomic_read(&pipe->files)) | ||
56800 | do_wakeup = 1; | ||
56801 | |||
56802 | if (!--spd->nr_pages) | ||
56803 | @@ -250,9 +250,9 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe, | ||
57540 | do_wakeup = 0; | 56804 | do_wakeup = 0; |
57541 | } | 56805 | } |
57542 | 56806 | ||
@@ -57548,7 +56812,7 @@ index 29e394e..b13c247 100644 | |||
57548 | } | 56812 | } |
57549 | 56813 | ||
57550 | pipe_unlock(pipe); | 56814 | pipe_unlock(pipe); |
57551 | @@ -564,7 +564,7 @@ static ssize_t kernel_readv(struct file *file, const struct iovec *vec, | 56815 | @@ -565,7 +565,7 @@ static ssize_t kernel_readv(struct file *file, const struct iovec *vec, |
57552 | old_fs = get_fs(); | 56816 | old_fs = get_fs(); |
57553 | set_fs(get_ds()); | 56817 | set_fs(get_ds()); |
57554 | /* The cast to a user pointer is valid due to the set_fs() */ | 56818 | /* The cast to a user pointer is valid due to the set_fs() */ |
@@ -57557,7 +56821,7 @@ index 29e394e..b13c247 100644 | |||
57557 | set_fs(old_fs); | 56821 | set_fs(old_fs); |
57558 | 56822 | ||
57559 | return res; | 56823 | return res; |
57560 | @@ -579,7 +579,7 @@ ssize_t kernel_write(struct file *file, const char *buf, size_t count, | 56824 | @@ -580,7 +580,7 @@ ssize_t kernel_write(struct file *file, const char *buf, size_t count, |
57561 | old_fs = get_fs(); | 56825 | old_fs = get_fs(); |
57562 | set_fs(get_ds()); | 56826 | set_fs(get_ds()); |
57563 | /* The cast to a user pointer is valid due to the set_fs() */ | 56827 | /* The cast to a user pointer is valid due to the set_fs() */ |
@@ -57566,7 +56830,7 @@ index 29e394e..b13c247 100644 | |||
57566 | set_fs(old_fs); | 56830 | set_fs(old_fs); |
57567 | 56831 | ||
57568 | return res; | 56832 | return res; |
57569 | @@ -632,7 +632,7 @@ ssize_t default_file_splice_read(struct file *in, loff_t *ppos, | 56833 | @@ -633,7 +633,7 @@ ssize_t default_file_splice_read(struct file *in, loff_t *ppos, |
57570 | goto err; | 56834 | goto err; |
57571 | 56835 | ||
57572 | this_len = min_t(size_t, len, PAGE_CACHE_SIZE - offset); | 56836 | this_len = min_t(size_t, len, PAGE_CACHE_SIZE - offset); |
@@ -57575,7 +56839,16 @@ index 29e394e..b13c247 100644 | |||
57575 | vec[i].iov_len = this_len; | 56839 | vec[i].iov_len = this_len; |
57576 | spd.pages[i] = page; | 56840 | spd.pages[i] = page; |
57577 | spd.nr_pages++; | 56841 | spd.nr_pages++; |
57578 | @@ -853,10 +853,10 @@ EXPORT_SYMBOL(splice_from_pipe_feed); | 56842 | @@ -829,7 +829,7 @@ int splice_from_pipe_feed(struct pipe_inode_info *pipe, struct splice_desc *sd, |
56843 | ops->release(pipe, buf); | ||
56844 | pipe->curbuf = (pipe->curbuf + 1) & (pipe->buffers - 1); | ||
56845 | pipe->nrbufs--; | ||
56846 | - if (pipe->files) | ||
56847 | + if (atomic_read(&pipe->files)) | ||
56848 | sd->need_wakeup = true; | ||
56849 | } | ||
56850 | |||
56851 | @@ -854,10 +854,10 @@ EXPORT_SYMBOL(splice_from_pipe_feed); | ||
57579 | int splice_from_pipe_next(struct pipe_inode_info *pipe, struct splice_desc *sd) | 56852 | int splice_from_pipe_next(struct pipe_inode_info *pipe, struct splice_desc *sd) |
57580 | { | 56853 | { |
57581 | while (!pipe->nrbufs) { | 56854 | while (!pipe->nrbufs) { |
@@ -57588,7 +56861,7 @@ index 29e394e..b13c247 100644 | |||
57588 | return 0; | 56861 | return 0; |
57589 | 56862 | ||
57590 | if (sd->flags & SPLICE_F_NONBLOCK) | 56863 | if (sd->flags & SPLICE_F_NONBLOCK) |
57591 | @@ -1192,7 +1192,7 @@ ssize_t splice_direct_to_actor(struct file *in, struct splice_desc *sd, | 56864 | @@ -1193,7 +1193,7 @@ ssize_t splice_direct_to_actor(struct file *in, struct splice_desc *sd, |
57592 | * out of the pipe right after the splice_to_pipe(). So set | 56865 | * out of the pipe right after the splice_to_pipe(). So set |
57593 | * PIPE_READERS appropriately. | 56866 | * PIPE_READERS appropriately. |
57594 | */ | 56867 | */ |
@@ -57597,7 +56870,7 @@ index 29e394e..b13c247 100644 | |||
57597 | 56870 | ||
57598 | current->splice_pipe = pipe; | 56871 | current->splice_pipe = pipe; |
57599 | } | 56872 | } |
57600 | @@ -1741,9 +1741,9 @@ static int ipipe_prep(struct pipe_inode_info *pipe, unsigned int flags) | 56873 | @@ -1769,9 +1769,9 @@ static int ipipe_prep(struct pipe_inode_info *pipe, unsigned int flags) |
57601 | ret = -ERESTARTSYS; | 56874 | ret = -ERESTARTSYS; |
57602 | break; | 56875 | break; |
57603 | } | 56876 | } |
@@ -57609,7 +56882,7 @@ index 29e394e..b13c247 100644 | |||
57609 | if (flags & SPLICE_F_NONBLOCK) { | 56882 | if (flags & SPLICE_F_NONBLOCK) { |
57610 | ret = -EAGAIN; | 56883 | ret = -EAGAIN; |
57611 | break; | 56884 | break; |
57612 | @@ -1775,7 +1775,7 @@ static int opipe_prep(struct pipe_inode_info *pipe, unsigned int flags) | 56885 | @@ -1803,7 +1803,7 @@ static int opipe_prep(struct pipe_inode_info *pipe, unsigned int flags) |
57613 | pipe_lock(pipe); | 56886 | pipe_lock(pipe); |
57614 | 56887 | ||
57615 | while (pipe->nrbufs >= pipe->buffers) { | 56888 | while (pipe->nrbufs >= pipe->buffers) { |
@@ -57618,7 +56891,7 @@ index 29e394e..b13c247 100644 | |||
57618 | send_sig(SIGPIPE, current, 0); | 56891 | send_sig(SIGPIPE, current, 0); |
57619 | ret = -EPIPE; | 56892 | ret = -EPIPE; |
57620 | break; | 56893 | break; |
57621 | @@ -1788,9 +1788,9 @@ static int opipe_prep(struct pipe_inode_info *pipe, unsigned int flags) | 56894 | @@ -1816,9 +1816,9 @@ static int opipe_prep(struct pipe_inode_info *pipe, unsigned int flags) |
57622 | ret = -ERESTARTSYS; | 56895 | ret = -ERESTARTSYS; |
57623 | break; | 56896 | break; |
57624 | } | 56897 | } |
@@ -57630,7 +56903,7 @@ index 29e394e..b13c247 100644 | |||
57630 | } | 56903 | } |
57631 | 56904 | ||
57632 | pipe_unlock(pipe); | 56905 | pipe_unlock(pipe); |
57633 | @@ -1826,14 +1826,14 @@ retry: | 56906 | @@ -1854,14 +1854,14 @@ retry: |
57634 | pipe_double_lock(ipipe, opipe); | 56907 | pipe_double_lock(ipipe, opipe); |
57635 | 56908 | ||
57636 | do { | 56909 | do { |
@@ -57647,7 +56920,7 @@ index 29e394e..b13c247 100644 | |||
57647 | break; | 56920 | break; |
57648 | 56921 | ||
57649 | /* | 56922 | /* |
57650 | @@ -1930,7 +1930,7 @@ static int link_pipe(struct pipe_inode_info *ipipe, | 56923 | @@ -1958,7 +1958,7 @@ static int link_pipe(struct pipe_inode_info *ipipe, |
57651 | pipe_double_lock(ipipe, opipe); | 56924 | pipe_double_lock(ipipe, opipe); |
57652 | 56925 | ||
57653 | do { | 56926 | do { |
@@ -57656,7 +56929,7 @@ index 29e394e..b13c247 100644 | |||
57656 | send_sig(SIGPIPE, current, 0); | 56929 | send_sig(SIGPIPE, current, 0); |
57657 | if (!ret) | 56930 | if (!ret) |
57658 | ret = -EPIPE; | 56931 | ret = -EPIPE; |
57659 | @@ -1975,7 +1975,7 @@ static int link_pipe(struct pipe_inode_info *ipipe, | 56932 | @@ -2003,7 +2003,7 @@ static int link_pipe(struct pipe_inode_info *ipipe, |
57660 | * return EAGAIN if we have the potential of some data in the | 56933 | * return EAGAIN if we have the potential of some data in the |
57661 | * future, otherwise just return 0 | 56934 | * future, otherwise just return 0 |
57662 | */ | 56935 | */ |
@@ -57781,7 +57054,7 @@ index 15c68f9..36a8b3e 100644 | |||
57781 | if (!bb->vm_ops) | 57054 | if (!bb->vm_ops) |
57782 | return -EINVAL; | 57055 | return -EINVAL; |
57783 | diff --git a/fs/sysfs/dir.c b/fs/sysfs/dir.c | 57056 | diff --git a/fs/sysfs/dir.c b/fs/sysfs/dir.c |
57784 | index 6f31590..3c87c8a 100644 | 57057 | index e8e0e71..79c28ac5 100644 |
57785 | --- a/fs/sysfs/dir.c | 57058 | --- a/fs/sysfs/dir.c |
57786 | +++ b/fs/sysfs/dir.c | 57059 | +++ b/fs/sysfs/dir.c |
57787 | @@ -40,7 +40,7 @@ static DEFINE_IDA(sysfs_ino_ida); | 57060 | @@ -40,7 +40,7 @@ static DEFINE_IDA(sysfs_ino_ida); |
@@ -57793,7 +57066,7 @@ index 6f31590..3c87c8a 100644 | |||
57793 | { | 57066 | { |
57794 | unsigned long hash = init_name_hash(); | 57067 | unsigned long hash = init_name_hash(); |
57795 | unsigned int len = strlen(name); | 57068 | unsigned int len = strlen(name); |
57796 | @@ -685,6 +685,18 @@ static int create_dir(struct kobject *kobj, struct sysfs_dirent *parent_sd, | 57069 | @@ -679,6 +679,18 @@ static int create_dir(struct kobject *kobj, struct sysfs_dirent *parent_sd, |
57797 | struct sysfs_dirent *sd; | 57070 | struct sysfs_dirent *sd; |
57798 | int rc; | 57071 | int rc; |
57799 | 57072 | ||
@@ -57804,7 +57077,7 @@ index 6f31590..3c87c8a 100644 | |||
57804 | + | 57077 | + |
57805 | + if ((!strcmp(parent_name, "") && (!strcmp(name, "devices") || !strcmp(name, "fs"))) || | 57078 | + if ((!strcmp(parent_name, "") && (!strcmp(name, "devices") || !strcmp(name, "fs"))) || |
57806 | + (!strcmp(parent_name, "devices") && !strcmp(name, "system")) || | 57079 | + (!strcmp(parent_name, "devices") && !strcmp(name, "system")) || |
57807 | + (!strcmp(parent_name, "fs") && (!strcmp(name, "selinux") || !strcmp(name, "fuse"))) || | 57080 | + (!strcmp(parent_name, "fs") && (!strcmp(name, "selinux") || !strcmp(name, "fuse") || !strcmp(name, "ecryptfs"))) || |
57808 | + (!strcmp(parent_name, "system") && !strcmp(name, "cpu"))) | 57081 | + (!strcmp(parent_name, "system") && !strcmp(name, "cpu"))) |
57809 | + mode = S_IFDIR | S_IRWXU | S_IRUGO | S_IXUGO; | 57082 | + mode = S_IFDIR | S_IRWXU | S_IRUGO | S_IXUGO; |
57810 | +#endif | 57083 | +#endif |
@@ -58068,20 +57341,20 @@ index 9fbea87..6b19972 100644 | |||
58068 | struct posix_acl *acl; | 57341 | struct posix_acl *acl; |
58069 | struct posix_acl_entry *acl_e; | 57342 | struct posix_acl_entry *acl_e; |
58070 | diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c | 57343 | diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c |
58071 | index b44af92..06073da 100644 | 57344 | index 8904284..ee0e14b 100644 |
58072 | --- a/fs/xfs/xfs_bmap.c | 57345 | --- a/fs/xfs/xfs_bmap.c |
58073 | +++ b/fs/xfs/xfs_bmap.c | 57346 | +++ b/fs/xfs/xfs_bmap.c |
58074 | @@ -192,7 +192,7 @@ xfs_bmap_validate_ret( | 57347 | @@ -765,7 +765,7 @@ xfs_bmap_validate_ret( |
58075 | int nmap, | 57348 | |
58076 | int ret_nmap); | ||
58077 | #else | 57349 | #else |
57350 | #define xfs_bmap_check_leaf_extents(cur, ip, whichfork) do { } while (0) | ||
58078 | -#define xfs_bmap_validate_ret(bno,len,flags,mval,onmap,nmap) | 57351 | -#define xfs_bmap_validate_ret(bno,len,flags,mval,onmap,nmap) |
58079 | +#define xfs_bmap_validate_ret(bno,len,flags,mval,onmap,nmap) do {} while (0) | 57352 | +#define xfs_bmap_validate_ret(bno,len,flags,mval,onmap,nmap) do { } while (0) |
58080 | #endif /* DEBUG */ | 57353 | #endif /* DEBUG */ |
58081 | 57354 | ||
58082 | STATIC int | 57355 | /* |
58083 | diff --git a/fs/xfs/xfs_dir2_sf.c b/fs/xfs/xfs_dir2_sf.c | 57356 | diff --git a/fs/xfs/xfs_dir2_sf.c b/fs/xfs/xfs_dir2_sf.c |
58084 | index 1b9fc3e..e1bdde0 100644 | 57357 | index 6157424..ac98f6d 100644 |
58085 | --- a/fs/xfs/xfs_dir2_sf.c | 57358 | --- a/fs/xfs/xfs_dir2_sf.c |
58086 | +++ b/fs/xfs/xfs_dir2_sf.c | 57359 | +++ b/fs/xfs/xfs_dir2_sf.c |
58087 | @@ -851,7 +851,15 @@ xfs_dir2_sf_getdents( | 57360 | @@ -851,7 +851,15 @@ xfs_dir2_sf_getdents( |
@@ -58102,7 +57375,7 @@ index 1b9fc3e..e1bdde0 100644 | |||
58102 | *offset = off & 0x7fffffff; | 57375 | *offset = off & 0x7fffffff; |
58103 | return 0; | 57376 | return 0; |
58104 | diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c | 57377 | diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c |
58105 | index d681e34..2a3f5ab 100644 | 57378 | index 5e99968..45bd327 100644 |
58106 | --- a/fs/xfs/xfs_ioctl.c | 57379 | --- a/fs/xfs/xfs_ioctl.c |
58107 | +++ b/fs/xfs/xfs_ioctl.c | 57380 | +++ b/fs/xfs/xfs_ioctl.c |
58108 | @@ -127,7 +127,7 @@ xfs_find_handle( | 57381 | @@ -127,7 +127,7 @@ xfs_find_handle( |
@@ -58129,10 +57402,10 @@ index ca9ecaa..60100c7 100644 | |||
58129 | kfree(s); | 57402 | kfree(s); |
58130 | diff --git a/grsecurity/Kconfig b/grsecurity/Kconfig | 57403 | diff --git a/grsecurity/Kconfig b/grsecurity/Kconfig |
58131 | new file mode 100644 | 57404 | new file mode 100644 |
58132 | index 0000000..c9c4ac3 | 57405 | index 0000000..712a85d |
58133 | --- /dev/null | 57406 | --- /dev/null |
58134 | +++ b/grsecurity/Kconfig | 57407 | +++ b/grsecurity/Kconfig |
58135 | @@ -0,0 +1,1054 @@ | 57408 | @@ -0,0 +1,1043 @@ |
58136 | +# | 57409 | +# |
58137 | +# grecurity configuration | 57410 | +# grecurity configuration |
58138 | +# | 57411 | +# |
@@ -58843,22 +58116,11 @@ index 0000000..c9c4ac3 | |||
58843 | + help | 58116 | + help |
58844 | + If you say Y here, calls to mmap() and mprotect() with explicit | 58117 | + If you say Y here, calls to mmap() and mprotect() with explicit |
58845 | + usage of PROT_WRITE and PROT_EXEC together will be logged when | 58118 | + usage of PROT_WRITE and PROT_EXEC together will be logged when |
58846 | + denied by the PAX_MPROTECT feature. If the sysctl option is | 58119 | + denied by the PAX_MPROTECT feature. This feature will also |
58847 | + enabled, a sysctl option with name "rwxmap_logging" is created. | 58120 | + log other problematic scenarios that can occur when PAX_MPROTECT |
58848 | + | 58121 | + is enabled on a binary, like textrels and PT_GNU_STACK. If the |
58849 | +config GRKERNSEC_AUDIT_TEXTREL | 58122 | + sysctl option is enabled, a sysctl option with name "rwxmap_logging" |
58850 | + bool 'ELF text relocations logging (READ HELP)' | 58123 | + is created. |
58851 | + depends on PAX_MPROTECT | ||
58852 | + help | ||
58853 | + If you say Y here, text relocations will be logged with the filename | ||
58854 | + of the offending library or binary. The purpose of the feature is | ||
58855 | + to help Linux distribution developers get rid of libraries and | ||
58856 | + binaries that need text relocations which hinder the future progress | ||
58857 | + of PaX. Only Linux distribution developers should say Y here, and | ||
58858 | + never on a production machine, as this option creates an information | ||
58859 | + leak that could aid an attacker in defeating the randomization of | ||
58860 | + a single memory region. If the sysctl option is enabled, a sysctl | ||
58861 | + option with name "audit_textrel" is created. | ||
58862 | + | 58124 | + |
58863 | +endmenu | 58125 | +endmenu |
58864 | + | 58126 | + |
@@ -59189,10 +58451,10 @@ index 0000000..c9c4ac3 | |||
59189 | +endmenu | 58451 | +endmenu |
59190 | diff --git a/grsecurity/Makefile b/grsecurity/Makefile | 58452 | diff --git a/grsecurity/Makefile b/grsecurity/Makefile |
59191 | new file mode 100644 | 58453 | new file mode 100644 |
59192 | index 0000000..1b9afa9 | 58454 | index 0000000..36845aa |
59193 | --- /dev/null | 58455 | --- /dev/null |
59194 | +++ b/grsecurity/Makefile | 58456 | +++ b/grsecurity/Makefile |
59195 | @@ -0,0 +1,38 @@ | 58457 | @@ -0,0 +1,42 @@ |
59196 | +# grsecurity's ACL system was originally written in 2001 by Michael Dalton | 58458 | +# grsecurity's ACL system was originally written in 2001 by Michael Dalton |
59197 | +# during 2001-2009 it has been completely redesigned by Brad Spengler | 58459 | +# during 2001-2009 it has been completely redesigned by Brad Spengler |
59198 | +# into an RBAC system | 58460 | +# into an RBAC system |
@@ -59210,6 +58472,10 @@ index 0000000..1b9afa9 | |||
59210 | +obj-$(CONFIG_GRKERNSEC) += grsec_init.o grsum.o gracl.o gracl_segv.o \ | 58472 | +obj-$(CONFIG_GRKERNSEC) += grsec_init.o grsum.o gracl.o gracl_segv.o \ |
59211 | + gracl_cap.o gracl_alloc.o gracl_shm.o grsec_mem.o gracl_fs.o \ | 58473 | + gracl_cap.o gracl_alloc.o gracl_shm.o grsec_mem.o gracl_fs.o \ |
59212 | + gracl_learn.o grsec_log.o | 58474 | + gracl_learn.o grsec_log.o |
58475 | +ifdef CONFIG_COMPAT | ||
58476 | +obj-$(CONFIG_GRKERNSEC) += gracl_compat.o | ||
58477 | +endif | ||
58478 | + | ||
59213 | +obj-$(CONFIG_GRKERNSEC_RESLOG) += gracl_res.o | 58479 | +obj-$(CONFIG_GRKERNSEC_RESLOG) += gracl_res.o |
59214 | + | 58480 | + |
59215 | +ifdef CONFIG_NET | 58481 | +ifdef CONFIG_NET |
@@ -59233,10 +58499,10 @@ index 0000000..1b9afa9 | |||
59233 | +endif | 58499 | +endif |
59234 | diff --git a/grsecurity/gracl.c b/grsecurity/gracl.c | 58500 | diff --git a/grsecurity/gracl.c b/grsecurity/gracl.c |
59235 | new file mode 100644 | 58501 | new file mode 100644 |
59236 | index 0000000..0d5c602 | 58502 | index 0000000..6907918 |
59237 | --- /dev/null | 58503 | --- /dev/null |
59238 | +++ b/grsecurity/gracl.c | 58504 | +++ b/grsecurity/gracl.c |
59239 | @@ -0,0 +1,4073 @@ | 58505 | @@ -0,0 +1,4178 @@ |
59240 | +#include <linux/kernel.h> | 58506 | +#include <linux/kernel.h> |
59241 | +#include <linux/module.h> | 58507 | +#include <linux/module.h> |
59242 | +#include <linux/sched.h> | 58508 | +#include <linux/sched.h> |
@@ -59339,6 +58605,144 @@ index 0000000..0d5c602 | |||
59339 | +extern void gr_remove_uid(uid_t uid); | 58605 | +extern void gr_remove_uid(uid_t uid); |
59340 | +extern int gr_find_uid(uid_t uid); | 58606 | +extern int gr_find_uid(uid_t uid); |
59341 | + | 58607 | + |
58608 | +static int copy_acl_object_label_normal(struct acl_object_label *obj, const struct acl_object_label *userp) | ||
58609 | +{ | ||
58610 | + if (copy_from_user(obj, userp, sizeof(struct acl_object_label))) | ||
58611 | + return -EFAULT; | ||
58612 | + | ||
58613 | + return 0; | ||
58614 | +} | ||
58615 | + | ||
58616 | +static int copy_acl_ip_label_normal(struct acl_ip_label *ip, const struct acl_ip_label *userp) | ||
58617 | +{ | ||
58618 | + if (copy_from_user(ip, userp, sizeof(struct acl_ip_label))) | ||
58619 | + return -EFAULT; | ||
58620 | + | ||
58621 | + return 0; | ||
58622 | +} | ||
58623 | + | ||
58624 | +static int copy_acl_subject_label_normal(struct acl_subject_label *subj, const struct acl_subject_label *userp) | ||
58625 | +{ | ||
58626 | + if (copy_from_user(subj, userp, sizeof(struct acl_subject_label))) | ||
58627 | + return -EFAULT; | ||
58628 | + | ||
58629 | + return 0; | ||
58630 | +} | ||
58631 | + | ||
58632 | +static int copy_acl_role_label_normal(struct acl_role_label *role, const struct acl_role_label *userp) | ||
58633 | +{ | ||
58634 | + if (copy_from_user(role, userp, sizeof(struct acl_role_label))) | ||
58635 | + return -EFAULT; | ||
58636 | + | ||
58637 | + return 0; | ||
58638 | +} | ||
58639 | + | ||
58640 | +static int copy_role_allowed_ip_normal(struct role_allowed_ip *roleip, const struct role_allowed_ip *userp) | ||
58641 | +{ | ||
58642 | + if (copy_from_user(roleip, userp, sizeof(struct role_allowed_ip))) | ||
58643 | + return -EFAULT; | ||
58644 | + | ||
58645 | + return 0; | ||
58646 | +} | ||
58647 | + | ||
58648 | +static int copy_sprole_pw_normal(struct sprole_pw *pw, unsigned long idx, const struct sprole_pw *userp) | ||
58649 | +{ | ||
58650 | + if (copy_from_user(pw, userp + idx, sizeof(struct sprole_pw))) | ||
58651 | + return -EFAULT; | ||
58652 | + | ||
58653 | + return 0; | ||
58654 | +} | ||
58655 | + | ||
58656 | +static int copy_gr_hash_struct_normal(struct gr_hash_struct *hash, const struct gr_hash_struct *userp) | ||
58657 | +{ | ||
58658 | + if (copy_from_user(hash, userp, sizeof(struct gr_hash_struct))) | ||
58659 | + return -EFAULT; | ||
58660 | + | ||
58661 | + return 0; | ||
58662 | +} | ||
58663 | + | ||
58664 | +static int copy_role_transition_normal(struct role_transition *trans, const struct role_transition *userp) | ||
58665 | +{ | ||
58666 | + if (copy_from_user(trans, userp, sizeof(struct role_transition))) | ||
58667 | + return -EFAULT; | ||
58668 | + | ||
58669 | + return 0; | ||
58670 | +} | ||
58671 | + | ||
58672 | +int copy_pointer_from_array_normal(void *ptr, unsigned long idx, const void *userp) | ||
58673 | +{ | ||
58674 | + if (copy_from_user(ptr, userp + (idx * sizeof(void *)), sizeof(void *))) | ||
58675 | + return -EFAULT; | ||
58676 | + | ||
58677 | + return 0; | ||
58678 | +} | ||
58679 | + | ||
58680 | +static int copy_gr_arg_wrapper_normal(const char __user *buf, struct gr_arg_wrapper *uwrap) | ||
58681 | +{ | ||
58682 | + if (copy_from_user(uwrap, buf, sizeof (struct gr_arg_wrapper))) | ||
58683 | + return -EFAULT; | ||
58684 | + | ||
58685 | + if ((uwrap->version != GRSECURITY_VERSION) || (uwrap->size != sizeof(struct gr_arg))) | ||
58686 | + return -EINVAL; | ||
58687 | + | ||
58688 | + return 0; | ||
58689 | +} | ||
58690 | + | ||
58691 | +static int copy_gr_arg_normal(const struct gr_arg __user *buf, struct gr_arg *arg) | ||
58692 | +{ | ||
58693 | + if (copy_from_user(arg, buf, sizeof (struct gr_arg))) | ||
58694 | + return -EFAULT; | ||
58695 | + | ||
58696 | + return 0; | ||
58697 | +} | ||
58698 | + | ||
58699 | +static size_t get_gr_arg_wrapper_size_normal(void) | ||
58700 | +{ | ||
58701 | + return sizeof(struct gr_arg_wrapper); | ||
58702 | +} | ||
58703 | + | ||
58704 | +#ifdef CONFIG_COMPAT | ||
58705 | +extern int copy_gr_arg_wrapper_compat(const char *buf, struct gr_arg_wrapper *uwrap); | ||
58706 | +extern int copy_gr_arg_compat(const struct gr_arg __user *buf, struct gr_arg *arg); | ||
58707 | +extern int copy_acl_object_label_compat(struct acl_object_label *obj, const struct acl_object_label *userp); | ||
58708 | +extern int copy_acl_subject_label_compat(struct acl_subject_label *subj, const struct acl_subject_label *userp); | ||
58709 | +extern int copy_acl_role_label_compat(struct acl_role_label *role, const struct acl_role_label *userp); | ||
58710 | +extern int copy_role_allowed_ip_compat(struct role_allowed_ip *roleip, const struct role_allowed_ip *userp); | ||
58711 | +extern int copy_role_transition_compat(struct role_transition *trans, const struct role_transition *userp); | ||
58712 | +extern int copy_gr_hash_struct_compat(struct gr_hash_struct *hash, const struct gr_hash_struct *userp); | ||
58713 | +extern int copy_pointer_from_array_compat(void *ptr, unsigned long idx, const void *userp); | ||
58714 | +extern int copy_acl_ip_label_compat(struct acl_ip_label *ip, const struct acl_ip_label *userp); | ||
58715 | +extern int copy_sprole_pw_compat(struct sprole_pw *pw, unsigned long idx, const struct sprole_pw *userp); | ||
58716 | +extern size_t get_gr_arg_wrapper_size_compat(void); | ||
58717 | + | ||
58718 | +int (* copy_gr_arg_wrapper)(const char *buf, struct gr_arg_wrapper *uwrap) __read_only; | ||
58719 | +int (* copy_gr_arg)(const struct gr_arg *buf, struct gr_arg *arg) __read_only; | ||
58720 | +int (* copy_acl_object_label)(struct acl_object_label *obj, const struct acl_object_label *userp) __read_only; | ||
58721 | +int (* copy_acl_subject_label)(struct acl_subject_label *subj, const struct acl_subject_label *userp) __read_only; | ||
58722 | +int (* copy_acl_role_label)(struct acl_role_label *role, const struct acl_role_label *userp) __read_only; | ||
58723 | +int (* copy_acl_ip_label)(struct acl_ip_label *ip, const struct acl_ip_label *userp) __read_only; | ||
58724 | +int (* copy_pointer_from_array)(void *ptr, unsigned long idx, const void *userp) __read_only; | ||
58725 | +int (* copy_sprole_pw)(struct sprole_pw *pw, unsigned long idx, const struct sprole_pw *userp) __read_only; | ||
58726 | +int (* copy_gr_hash_struct)(struct gr_hash_struct *hash, const struct gr_hash_struct *userp) __read_only; | ||
58727 | +int (* copy_role_transition)(struct role_transition *trans, const struct role_transition *userp) __read_only; | ||
58728 | +int (* copy_role_allowed_ip)(struct role_allowed_ip *roleip, const struct role_allowed_ip *userp) __read_only; | ||
58729 | +size_t (* get_gr_arg_wrapper_size)(void) __read_only; | ||
58730 | + | ||
58731 | +#else | ||
58732 | +#define copy_gr_arg_wrapper copy_gr_arg_wrapper_normal | ||
58733 | +#define copy_gr_arg copy_gr_arg_normal | ||
58734 | +#define copy_gr_hash_struct copy_gr_hash_struct_normal | ||
58735 | +#define copy_acl_object_label copy_acl_object_label_normal | ||
58736 | +#define copy_acl_subject_label copy_acl_subject_label_normal | ||
58737 | +#define copy_acl_role_label copy_acl_role_label_normal | ||
58738 | +#define copy_acl_ip_label copy_acl_ip_label_normal | ||
58739 | +#define copy_pointer_from_array copy_pointer_from_array_normal | ||
58740 | +#define copy_sprole_pw copy_sprole_pw_normal | ||
58741 | +#define copy_role_transition copy_role_transition_normal | ||
58742 | +#define copy_role_allowed_ip copy_role_allowed_ip_normal | ||
58743 | +#define get_gr_arg_wrapper_size get_gr_arg_wrapper_size_normal | ||
58744 | +#endif | ||
58745 | + | ||
59342 | +__inline__ int | 58746 | +__inline__ int |
59343 | +gr_acl_is_enabled(void) | 58747 | +gr_acl_is_enabled(void) |
59344 | +{ | 58748 | +{ |
@@ -60282,33 +59686,34 @@ index 0000000..0d5c602 | |||
60282 | + return; | 59686 | + return; |
60283 | +} | 59687 | +} |
60284 | + | 59688 | + |
60285 | +static __u32 | 59689 | +static struct acl_subject_label * |
60286 | +count_user_objs(struct acl_object_label *userp) | 59690 | +do_copy_user_subj(struct acl_subject_label *userp, struct acl_role_label *role, int *already_copied); |
59691 | + | ||
59692 | +static int alloc_and_copy_string(char **name, unsigned int maxlen) | ||
60287 | +{ | 59693 | +{ |
60288 | + struct acl_object_label o_tmp; | 59694 | + unsigned int len = strnlen_user(*name, maxlen); |
60289 | + __u32 num = 0; | 59695 | + char *tmp; |
60290 | + | 59696 | + |
60291 | + while (userp) { | 59697 | + if (!len || len >= maxlen) |
60292 | + if (copy_from_user(&o_tmp, userp, | 59698 | + return -EINVAL; |
60293 | + sizeof (struct acl_object_label))) | ||
60294 | + break; | ||
60295 | + | 59699 | + |
60296 | + userp = o_tmp.prev; | 59700 | + if ((tmp = (char *) acl_alloc(len)) == NULL) |
60297 | + num++; | 59701 | + return -ENOMEM; |
60298 | + } | ||
60299 | + | 59702 | + |
60300 | + return num; | 59703 | + if (copy_from_user(tmp, *name, len)) |
60301 | +} | 59704 | + return -EFAULT; |
60302 | + | 59705 | + |
60303 | +static struct acl_subject_label * | 59706 | + tmp[len-1] = '\0'; |
60304 | +do_copy_user_subj(struct acl_subject_label *userp, struct acl_role_label *role, int *already_copied); | 59707 | + *name = tmp; |
59708 | + | ||
59709 | + return 0; | ||
59710 | +} | ||
60305 | + | 59711 | + |
60306 | +static int | 59712 | +static int |
60307 | +copy_user_glob(struct acl_object_label *obj) | 59713 | +copy_user_glob(struct acl_object_label *obj) |
60308 | +{ | 59714 | +{ |
60309 | + struct acl_object_label *g_tmp, **guser; | 59715 | + struct acl_object_label *g_tmp, **guser; |
60310 | + unsigned int len; | 59716 | + int error; |
60311 | + char *tmp; | ||
60312 | + | 59717 | + |
60313 | + if (obj->globbed == NULL) | 59718 | + if (obj->globbed == NULL) |
60314 | + return 0; | 59719 | + return 0; |
@@ -60320,22 +59725,12 @@ index 0000000..0d5c602 | |||
60320 | + if (g_tmp == NULL) | 59725 | + if (g_tmp == NULL) |
60321 | + return -ENOMEM; | 59726 | + return -ENOMEM; |
60322 | + | 59727 | + |
60323 | + if (copy_from_user(g_tmp, *guser, | 59728 | + if (copy_acl_object_label(g_tmp, *guser)) |
60324 | + sizeof (struct acl_object_label))) | ||
60325 | + return -EFAULT; | 59729 | + return -EFAULT; |
60326 | + | 59730 | + |
60327 | + len = strnlen_user(g_tmp->filename, PATH_MAX); | 59731 | + error = alloc_and_copy_string(&g_tmp->filename, PATH_MAX); |
60328 | + | 59732 | + if (error) |
60329 | + if (!len || len >= PATH_MAX) | 59733 | + return error; |
60330 | + return -EINVAL; | ||
60331 | + | ||
60332 | + if ((tmp = (char *) acl_alloc(len)) == NULL) | ||
60333 | + return -ENOMEM; | ||
60334 | + | ||
60335 | + if (copy_from_user(tmp, g_tmp->filename, len)) | ||
60336 | + return -EFAULT; | ||
60337 | + tmp[len-1] = '\0'; | ||
60338 | + g_tmp->filename = tmp; | ||
60339 | + | 59734 | + |
60340 | + *guser = g_tmp; | 59735 | + *guser = g_tmp; |
60341 | + guser = &(g_tmp->next); | 59736 | + guser = &(g_tmp->next); |
@@ -60349,33 +59744,21 @@ index 0000000..0d5c602 | |||
60349 | + struct acl_role_label *role) | 59744 | + struct acl_role_label *role) |
60350 | +{ | 59745 | +{ |
60351 | + struct acl_object_label *o_tmp; | 59746 | + struct acl_object_label *o_tmp; |
60352 | + unsigned int len; | ||
60353 | + int ret; | 59747 | + int ret; |
60354 | + char *tmp; | ||
60355 | + | 59748 | + |
60356 | + while (userp) { | 59749 | + while (userp) { |
60357 | + if ((o_tmp = (struct acl_object_label *) | 59750 | + if ((o_tmp = (struct acl_object_label *) |
60358 | + acl_alloc(sizeof (struct acl_object_label))) == NULL) | 59751 | + acl_alloc(sizeof (struct acl_object_label))) == NULL) |
60359 | + return -ENOMEM; | 59752 | + return -ENOMEM; |
60360 | + | 59753 | + |
60361 | + if (copy_from_user(o_tmp, userp, | 59754 | + if (copy_acl_object_label(o_tmp, userp)) |
60362 | + sizeof (struct acl_object_label))) | ||
60363 | + return -EFAULT; | 59755 | + return -EFAULT; |
60364 | + | 59756 | + |
60365 | + userp = o_tmp->prev; | 59757 | + userp = o_tmp->prev; |
60366 | + | 59758 | + |
60367 | + len = strnlen_user(o_tmp->filename, PATH_MAX); | 59759 | + ret = alloc_and_copy_string(&o_tmp->filename, PATH_MAX); |
60368 | + | 59760 | + if (ret) |
60369 | + if (!len || len >= PATH_MAX) | 59761 | + return ret; |
60370 | + return -EINVAL; | ||
60371 | + | ||
60372 | + if ((tmp = (char *) acl_alloc(len)) == NULL) | ||
60373 | + return -ENOMEM; | ||
60374 | + | ||
60375 | + if (copy_from_user(tmp, o_tmp->filename, len)) | ||
60376 | + return -EFAULT; | ||
60377 | + tmp[len-1] = '\0'; | ||
60378 | + o_tmp->filename = tmp; | ||
60379 | + | 59762 | + |
60380 | + insert_acl_obj_label(o_tmp, subj); | 59763 | + insert_acl_obj_label(o_tmp, subj); |
60381 | + if (!insert_name_entry(o_tmp->filename, o_tmp->inode, | 59764 | + if (!insert_name_entry(o_tmp->filename, o_tmp->inode, |
@@ -60412,8 +59795,7 @@ index 0000000..0d5c602 | |||
60412 | + __u32 num = 0; | 59795 | + __u32 num = 0; |
60413 | + | 59796 | + |
60414 | + while (userp) { | 59797 | + while (userp) { |
60415 | + if (copy_from_user(&s_tmp, userp, | 59798 | + if (copy_acl_subject_label(&s_tmp, userp)) |
60416 | + sizeof (struct acl_subject_label))) | ||
60417 | + break; | 59799 | + break; |
60418 | + | 59800 | + |
60419 | + userp = s_tmp.prev; | 59801 | + userp = s_tmp.prev; |
@@ -60436,8 +59818,7 @@ index 0000000..0d5c602 | |||
60436 | + acl_alloc(sizeof (struct role_allowed_ip))) == NULL) | 59818 | + acl_alloc(sizeof (struct role_allowed_ip))) == NULL) |
60437 | + return -ENOMEM; | 59819 | + return -ENOMEM; |
60438 | + | 59820 | + |
60439 | + if (copy_from_user(rtmp, ruserip, | 59821 | + if (copy_role_allowed_ip(rtmp, ruserip)) |
60440 | + sizeof (struct role_allowed_ip))) | ||
60441 | + return -EFAULT; | 59822 | + return -EFAULT; |
60442 | + | 59823 | + |
60443 | + ruserip = rtmp->prev; | 59824 | + ruserip = rtmp->prev; |
@@ -60461,9 +59842,7 @@ index 0000000..0d5c602 | |||
60461 | +copy_user_transitions(struct acl_role_label *rolep) | 59842 | +copy_user_transitions(struct acl_role_label *rolep) |
60462 | +{ | 59843 | +{ |
60463 | + struct role_transition *rusertp, *rtmp = NULL, *rlast; | 59844 | + struct role_transition *rusertp, *rtmp = NULL, *rlast; |
60464 | + | 59845 | + int error; |
60465 | + unsigned int len; | ||
60466 | + char *tmp; | ||
60467 | + | 59846 | + |
60468 | + rusertp = rolep->transitions; | 59847 | + rusertp = rolep->transitions; |
60469 | + | 59848 | + |
@@ -60474,24 +59853,14 @@ index 0000000..0d5c602 | |||
60474 | + acl_alloc(sizeof (struct role_transition))) == NULL) | 59853 | + acl_alloc(sizeof (struct role_transition))) == NULL) |
60475 | + return -ENOMEM; | 59854 | + return -ENOMEM; |
60476 | + | 59855 | + |
60477 | + if (copy_from_user(rtmp, rusertp, | 59856 | + if (copy_role_transition(rtmp, rusertp)) |
60478 | + sizeof (struct role_transition))) | ||
60479 | + return -EFAULT; | 59857 | + return -EFAULT; |
60480 | + | 59858 | + |
60481 | + rusertp = rtmp->prev; | 59859 | + rusertp = rtmp->prev; |
60482 | + | 59860 | + |
60483 | + len = strnlen_user(rtmp->rolename, GR_SPROLE_LEN); | 59861 | + error = alloc_and_copy_string(&rtmp->rolename, GR_SPROLE_LEN); |
60484 | + | 59862 | + if (error) |
60485 | + if (!len || len >= GR_SPROLE_LEN) | 59863 | + return error; |
60486 | + return -EINVAL; | ||
60487 | + | ||
60488 | + if ((tmp = (char *) acl_alloc(len)) == NULL) | ||
60489 | + return -ENOMEM; | ||
60490 | + | ||
60491 | + if (copy_from_user(tmp, rtmp->rolename, len)) | ||
60492 | + return -EFAULT; | ||
60493 | + tmp[len-1] = '\0'; | ||
60494 | + rtmp->rolename = tmp; | ||
60495 | + | 59864 | + |
60496 | + if (!rlast) { | 59865 | + if (!rlast) { |
60497 | + rtmp->prev = NULL; | 59866 | + rtmp->prev = NULL; |
@@ -60508,12 +59877,26 @@ index 0000000..0d5c602 | |||
60508 | + return 0; | 59877 | + return 0; |
60509 | +} | 59878 | +} |
60510 | + | 59879 | + |
59880 | +static __u32 count_user_objs(const struct acl_object_label __user *userp) | ||
59881 | +{ | ||
59882 | + struct acl_object_label o_tmp; | ||
59883 | + __u32 num = 0; | ||
59884 | + | ||
59885 | + while (userp) { | ||
59886 | + if (copy_acl_object_label(&o_tmp, userp)) | ||
59887 | + break; | ||
59888 | + | ||
59889 | + userp = o_tmp.prev; | ||
59890 | + num++; | ||
59891 | + } | ||
59892 | + | ||
59893 | + return num; | ||
59894 | +} | ||
59895 | + | ||
60511 | +static struct acl_subject_label * | 59896 | +static struct acl_subject_label * |
60512 | +do_copy_user_subj(struct acl_subject_label *userp, struct acl_role_label *role, int *already_copied) | 59897 | +do_copy_user_subj(struct acl_subject_label *userp, struct acl_role_label *role, int *already_copied) |
60513 | +{ | 59898 | +{ |
60514 | + struct acl_subject_label *s_tmp = NULL, *s_tmp2; | 59899 | + struct acl_subject_label *s_tmp = NULL, *s_tmp2; |
60515 | + unsigned int len; | ||
60516 | + char *tmp; | ||
60517 | + __u32 num_objs; | 59900 | + __u32 num_objs; |
60518 | + struct acl_ip_label **i_tmp, *i_utmp2; | 59901 | + struct acl_ip_label **i_tmp, *i_utmp2; |
60519 | + struct gr_hash_struct ghash; | 59902 | + struct gr_hash_struct ghash; |
@@ -60547,27 +59930,17 @@ index 0000000..0d5c602 | |||
60547 | + subjmap->kernel = s_tmp; | 59930 | + subjmap->kernel = s_tmp; |
60548 | + insert_subj_map_entry(subjmap); | 59931 | + insert_subj_map_entry(subjmap); |
60549 | + | 59932 | + |
60550 | + if (copy_from_user(s_tmp, userp, | 59933 | + if (copy_acl_subject_label(s_tmp, userp)) |
60551 | + sizeof (struct acl_subject_label))) | ||
60552 | + return ERR_PTR(-EFAULT); | 59934 | + return ERR_PTR(-EFAULT); |
60553 | + | 59935 | + |
60554 | + len = strnlen_user(s_tmp->filename, PATH_MAX); | 59936 | + err = alloc_and_copy_string(&s_tmp->filename, PATH_MAX); |
60555 | + | 59937 | + if (err) |
60556 | + if (!len || len >= PATH_MAX) | 59938 | + return ERR_PTR(err); |
60557 | + return ERR_PTR(-EINVAL); | ||
60558 | + | ||
60559 | + if ((tmp = (char *) acl_alloc(len)) == NULL) | ||
60560 | + return ERR_PTR(-ENOMEM); | ||
60561 | + | ||
60562 | + if (copy_from_user(tmp, s_tmp->filename, len)) | ||
60563 | + return ERR_PTR(-EFAULT); | ||
60564 | + tmp[len-1] = '\0'; | ||
60565 | + s_tmp->filename = tmp; | ||
60566 | + | 59939 | + |
60567 | + if (!strcmp(s_tmp->filename, "/")) | 59940 | + if (!strcmp(s_tmp->filename, "/")) |
60568 | + role->root_label = s_tmp; | 59941 | + role->root_label = s_tmp; |
60569 | + | 59942 | + |
60570 | + if (copy_from_user(&ghash, s_tmp->hash, sizeof(struct gr_hash_struct))) | 59943 | + if (copy_gr_hash_struct(&ghash, s_tmp->hash)) |
60571 | + return ERR_PTR(-EFAULT); | 59944 | + return ERR_PTR(-EFAULT); |
60572 | + | 59945 | + |
60573 | + /* copy user and group transition tables */ | 59946 | + /* copy user and group transition tables */ |
@@ -60648,28 +60021,18 @@ index 0000000..0d5c602 | |||
60648 | + if (!*(i_tmp + i_num)) | 60021 | + if (!*(i_tmp + i_num)) |
60649 | + return ERR_PTR(-ENOMEM); | 60022 | + return ERR_PTR(-ENOMEM); |
60650 | + | 60023 | + |
60651 | + if (copy_from_user | 60024 | + if (copy_pointer_from_array(&i_utmp2, i_num, s_tmp->ips)) |
60652 | + (&i_utmp2, s_tmp->ips + i_num, | ||
60653 | + sizeof (struct acl_ip_label *))) | ||
60654 | + return ERR_PTR(-EFAULT); | 60025 | + return ERR_PTR(-EFAULT); |
60655 | + | 60026 | + |
60656 | + if (copy_from_user | 60027 | + if (copy_acl_ip_label(*(i_tmp + i_num), i_utmp2)) |
60657 | + (*(i_tmp + i_num), i_utmp2, | ||
60658 | + sizeof (struct acl_ip_label))) | ||
60659 | + return ERR_PTR(-EFAULT); | 60028 | + return ERR_PTR(-EFAULT); |
60660 | + | 60029 | + |
60661 | + if ((*(i_tmp + i_num))->iface == NULL) | 60030 | + if ((*(i_tmp + i_num))->iface == NULL) |
60662 | + continue; | 60031 | + continue; |
60663 | + | 60032 | + |
60664 | + len = strnlen_user((*(i_tmp + i_num))->iface, IFNAMSIZ); | 60033 | + err = alloc_and_copy_string(&(*(i_tmp + i_num))->iface, IFNAMSIZ); |
60665 | + if (!len || len >= IFNAMSIZ) | 60034 | + if (err) |
60666 | + return ERR_PTR(-EINVAL); | 60035 | + return ERR_PTR(err); |
60667 | + tmp = acl_alloc(len); | ||
60668 | + if (tmp == NULL) | ||
60669 | + return ERR_PTR(-ENOMEM); | ||
60670 | + if (copy_from_user(tmp, (*(i_tmp + i_num))->iface, len)) | ||
60671 | + return ERR_PTR(-EFAULT); | ||
60672 | + (*(i_tmp + i_num))->iface = tmp; | ||
60673 | + } | 60036 | + } |
60674 | + | 60037 | + |
60675 | + s_tmp->ips = i_tmp; | 60038 | + s_tmp->ips = i_tmp; |
@@ -60690,8 +60053,7 @@ index 0000000..0d5c602 | |||
60690 | + int err; | 60053 | + int err; |
60691 | + | 60054 | + |
60692 | + while (userp) { | 60055 | + while (userp) { |
60693 | + if (copy_from_user(&s_pre, userp, | 60056 | + if (copy_acl_subject_label(&s_pre, userp)) |
60694 | + sizeof (struct acl_subject_label))) | ||
60695 | + return -EFAULT; | 60057 | + return -EFAULT; |
60696 | + | 60058 | + |
60697 | + ret = do_copy_user_subj(userp, role, NULL); | 60059 | + ret = do_copy_user_subj(userp, role, NULL); |
@@ -60717,8 +60079,6 @@ index 0000000..0d5c602 | |||
60717 | + struct gr_hash_struct *ghash; | 60079 | + struct gr_hash_struct *ghash; |
60718 | + uid_t *domainlist; | 60080 | + uid_t *domainlist; |
60719 | + unsigned int r_num; | 60081 | + unsigned int r_num; |
60720 | + unsigned int len; | ||
60721 | + char *tmp; | ||
60722 | + int err = 0; | 60082 | + int err = 0; |
60723 | + __u16 i; | 60083 | + __u16 i; |
60724 | + __u32 num_subjs; | 60084 | + __u32 num_subjs; |
@@ -60739,26 +60099,17 @@ index 0000000..0d5c602 | |||
60739 | + sptmp = (struct sprole_pw *) acl_alloc(sizeof(struct sprole_pw)); | 60099 | + sptmp = (struct sprole_pw *) acl_alloc(sizeof(struct sprole_pw)); |
60740 | + if (!sptmp) | 60100 | + if (!sptmp) |
60741 | + return -ENOMEM; | 60101 | + return -ENOMEM; |
60742 | + if (copy_from_user(sptmp, arg->sprole_pws + i, | 60102 | + if (copy_sprole_pw(sptmp, i, arg->sprole_pws)) |
60743 | + sizeof (struct sprole_pw))) | ||
60744 | + return -EFAULT; | 60103 | + return -EFAULT; |
60745 | + | 60104 | + |
60746 | + len = strnlen_user(sptmp->rolename, GR_SPROLE_LEN); | 60105 | + err = alloc_and_copy_string((char **)&sptmp->rolename, GR_SPROLE_LEN); |
60747 | + | 60106 | + if (err) |
60748 | + if (!len || len >= GR_SPROLE_LEN) | 60107 | + return err; |
60749 | + return -EINVAL; | ||
60750 | + | ||
60751 | + if ((tmp = (char *) acl_alloc(len)) == NULL) | ||
60752 | + return -ENOMEM; | ||
60753 | + | ||
60754 | + if (copy_from_user(tmp, sptmp->rolename, len)) | ||
60755 | + return -EFAULT; | ||
60756 | + | 60108 | + |
60757 | + tmp[len-1] = '\0'; | ||
60758 | +#ifdef CONFIG_GRKERNSEC_RBAC_DEBUG | 60109 | +#ifdef CONFIG_GRKERNSEC_RBAC_DEBUG |
60759 | + printk(KERN_ALERT "Copying special role %s\n", tmp); | 60110 | + printk(KERN_ALERT "Copying special role %s\n", sptmp->rolename); |
60760 | +#endif | 60111 | +#endif |
60761 | + sptmp->rolename = tmp; | 60112 | + |
60762 | + acl_special_roles[i] = sptmp; | 60113 | + acl_special_roles[i] = sptmp; |
60763 | + } | 60114 | + } |
60764 | + | 60115 | + |
@@ -60770,27 +60121,15 @@ index 0000000..0d5c602 | |||
60770 | + if (!r_tmp) | 60121 | + if (!r_tmp) |
60771 | + return -ENOMEM; | 60122 | + return -ENOMEM; |
60772 | + | 60123 | + |
60773 | + if (copy_from_user(&r_utmp2, r_utmp + r_num, | 60124 | + if (copy_pointer_from_array(&r_utmp2, r_num, r_utmp)) |
60774 | + sizeof (struct acl_role_label *))) | ||
60775 | + return -EFAULT; | ||
60776 | + | ||
60777 | + if (copy_from_user(r_tmp, r_utmp2, | ||
60778 | + sizeof (struct acl_role_label))) | ||
60779 | + return -EFAULT; | 60125 | + return -EFAULT; |
60780 | + | 60126 | + |
60781 | + len = strnlen_user(r_tmp->rolename, GR_SPROLE_LEN); | 60127 | + if (copy_acl_role_label(r_tmp, r_utmp2)) |
60782 | + | ||
60783 | + if (!len || len >= PATH_MAX) | ||
60784 | + return -EINVAL; | ||
60785 | + | ||
60786 | + if ((tmp = (char *) acl_alloc(len)) == NULL) | ||
60787 | + return -ENOMEM; | ||
60788 | + | ||
60789 | + if (copy_from_user(tmp, r_tmp->rolename, len)) | ||
60790 | + return -EFAULT; | 60128 | + return -EFAULT; |
60791 | + | 60129 | + |
60792 | + tmp[len-1] = '\0'; | 60130 | + err = alloc_and_copy_string(&r_tmp->rolename, GR_SPROLE_LEN); |
60793 | + r_tmp->rolename = tmp; | 60131 | + if (err) |
60132 | + return err; | ||
60794 | + | 60133 | + |
60795 | + if (!strcmp(r_tmp->rolename, "default") | 60134 | + if (!strcmp(r_tmp->rolename, "default") |
60796 | + && (r_tmp->roletype & GR_ROLE_DEFAULT)) { | 60135 | + && (r_tmp->roletype & GR_ROLE_DEFAULT)) { |
@@ -60802,7 +60141,7 @@ index 0000000..0d5c602 | |||
60802 | + if ((ghash = (struct gr_hash_struct *) acl_alloc(sizeof(struct gr_hash_struct))) == NULL) | 60141 | + if ((ghash = (struct gr_hash_struct *) acl_alloc(sizeof(struct gr_hash_struct))) == NULL) |
60803 | + return -ENOMEM; | 60142 | + return -ENOMEM; |
60804 | + | 60143 | + |
60805 | + if (copy_from_user(ghash, r_tmp->hash, sizeof(struct gr_hash_struct))) | 60144 | + if (copy_gr_hash_struct(ghash, r_tmp->hash)) |
60806 | + return -EFAULT; | 60145 | + return -EFAULT; |
60807 | + | 60146 | + |
60808 | + r_tmp->hash = ghash; | 60147 | + r_tmp->hash = ghash; |
@@ -62411,13 +61750,14 @@ index 0000000..0d5c602 | |||
62411 | +} | 61750 | +} |
62412 | + | 61751 | + |
62413 | +ssize_t | 61752 | +ssize_t |
62414 | +write_grsec_handler(struct file *file, const char * buf, size_t count, loff_t *ppos) | 61753 | +write_grsec_handler(struct file *file, const char __user * buf, size_t count, loff_t *ppos) |
62415 | +{ | 61754 | +{ |
62416 | + struct gr_arg_wrapper uwrap; | 61755 | + struct gr_arg_wrapper uwrap; |
62417 | + unsigned char *sprole_salt = NULL; | 61756 | + unsigned char *sprole_salt = NULL; |
62418 | + unsigned char *sprole_sum = NULL; | 61757 | + unsigned char *sprole_sum = NULL; |
62419 | + int error = sizeof (struct gr_arg_wrapper); | 61758 | + int error = 0; |
62420 | + int error2 = 0; | 61759 | + int error2 = 0; |
61760 | + size_t req_count; | ||
62421 | + | 61761 | + |
62422 | + mutex_lock(&gr_dev_mutex); | 61762 | + mutex_lock(&gr_dev_mutex); |
62423 | + | 61763 | + |
@@ -62426,8 +61766,42 @@ index 0000000..0d5c602 | |||
62426 | + goto out; | 61766 | + goto out; |
62427 | + } | 61767 | + } |
62428 | + | 61768 | + |
62429 | + if (count != sizeof (struct gr_arg_wrapper)) { | 61769 | +#ifdef CONFIG_COMPAT |
62430 | + gr_log_int_int(GR_DONT_AUDIT_GOOD, GR_DEV_ACL_MSG, (int)count, (int)sizeof(struct gr_arg_wrapper)); | 61770 | + pax_open_kernel(); |
61771 | + if (is_compat_task()) { | ||
61772 | + copy_gr_arg_wrapper = ©_gr_arg_wrapper_compat; | ||
61773 | + copy_gr_arg = ©_gr_arg_compat; | ||
61774 | + copy_acl_object_label = ©_acl_object_label_compat; | ||
61775 | + copy_acl_subject_label = ©_acl_subject_label_compat; | ||
61776 | + copy_acl_role_label = ©_acl_role_label_compat; | ||
61777 | + copy_acl_ip_label = ©_acl_ip_label_compat; | ||
61778 | + copy_role_allowed_ip = ©_role_allowed_ip_compat; | ||
61779 | + copy_role_transition = ©_role_transition_compat; | ||
61780 | + copy_sprole_pw = ©_sprole_pw_compat; | ||
61781 | + copy_gr_hash_struct = ©_gr_hash_struct_compat; | ||
61782 | + copy_pointer_from_array = ©_pointer_from_array_compat; | ||
61783 | + get_gr_arg_wrapper_size = &get_gr_arg_wrapper_size_compat; | ||
61784 | + } else { | ||
61785 | + copy_gr_arg_wrapper = ©_gr_arg_wrapper_normal; | ||
61786 | + copy_gr_arg = ©_gr_arg_normal; | ||
61787 | + copy_acl_object_label = ©_acl_object_label_normal; | ||
61788 | + copy_acl_subject_label = ©_acl_subject_label_normal; | ||
61789 | + copy_acl_role_label = ©_acl_role_label_normal; | ||
61790 | + copy_acl_ip_label = ©_acl_ip_label_normal; | ||
61791 | + copy_role_allowed_ip = ©_role_allowed_ip_normal; | ||
61792 | + copy_role_transition = ©_role_transition_normal; | ||
61793 | + copy_sprole_pw = ©_sprole_pw_normal; | ||
61794 | + copy_gr_hash_struct = ©_gr_hash_struct_normal; | ||
61795 | + copy_pointer_from_array = ©_pointer_from_array_normal; | ||
61796 | + get_gr_arg_wrapper_size = &get_gr_arg_wrapper_size_normal; | ||
61797 | + } | ||
61798 | + pax_close_kernel(); | ||
61799 | +#endif | ||
61800 | + | ||
61801 | + req_count = get_gr_arg_wrapper_size(); | ||
61802 | + | ||
61803 | + if (count != req_count) { | ||
61804 | + gr_log_int_int(GR_DONT_AUDIT_GOOD, GR_DEV_ACL_MSG, (int)count, (int)req_count); | ||
62431 | + error = -EINVAL; | 61805 | + error = -EINVAL; |
62432 | + goto out; | 61806 | + goto out; |
62433 | + } | 61807 | + } |
@@ -62438,20 +61812,13 @@ index 0000000..0d5c602 | |||
62438 | + gr_auth_attempts = 0; | 61812 | + gr_auth_attempts = 0; |
62439 | + } | 61813 | + } |
62440 | + | 61814 | + |
62441 | + if (copy_from_user(&uwrap, buf, sizeof (struct gr_arg_wrapper))) { | 61815 | + error = copy_gr_arg_wrapper(buf, &uwrap); |
62442 | + error = -EFAULT; | 61816 | + if (error) |
62443 | + goto out; | 61817 | + goto out; |
62444 | + } | ||
62445 | + | 61818 | + |
62446 | + if ((uwrap.version != GRSECURITY_VERSION) || (uwrap.size != sizeof(struct gr_arg))) { | 61819 | + error = copy_gr_arg(uwrap.arg, gr_usermode); |
62447 | + error = -EINVAL; | 61820 | + if (error) |
62448 | + goto out; | 61821 | + goto out; |
62449 | + } | ||
62450 | + | ||
62451 | + if (copy_from_user(gr_usermode, uwrap.arg, sizeof (struct gr_arg))) { | ||
62452 | + error = -EFAULT; | ||
62453 | + goto out; | ||
62454 | + } | ||
62455 | + | 61822 | + |
62456 | + if (gr_usermode->mode != GR_SPROLE && gr_usermode->mode != GR_SPROLEPAM && | 61823 | + if (gr_usermode->mode != GR_SPROLE && gr_usermode->mode != GR_SPROLEPAM && |
62457 | + gr_auth_attempts >= CONFIG_GRKERNSEC_ACL_MAXTRIES && | 61824 | + gr_auth_attempts >= CONFIG_GRKERNSEC_ACL_MAXTRIES && |
@@ -62644,6 +62011,10 @@ index 0000000..0d5c602 | |||
62644 | + | 62011 | + |
62645 | + out: | 62012 | + out: |
62646 | + mutex_unlock(&gr_dev_mutex); | 62013 | + mutex_unlock(&gr_dev_mutex); |
62014 | + | ||
62015 | + if (!error) | ||
62016 | + error = req_count; | ||
62017 | + | ||
62647 | + return error; | 62018 | + return error; |
62648 | +} | 62019 | +} |
62649 | + | 62020 | + |
@@ -63537,6 +62908,281 @@ index 0000000..bdd51ea | |||
63537 | + return gr_task_acl_is_capable_nolog(current, cap); | 62908 | + return gr_task_acl_is_capable_nolog(current, cap); |
63538 | +} | 62909 | +} |
63539 | + | 62910 | + |
62911 | diff --git a/grsecurity/gracl_compat.c b/grsecurity/gracl_compat.c | ||
62912 | new file mode 100644 | ||
62913 | index 0000000..a43dd06 | ||
62914 | --- /dev/null | ||
62915 | +++ b/grsecurity/gracl_compat.c | ||
62916 | @@ -0,0 +1,269 @@ | ||
62917 | +#include <linux/kernel.h> | ||
62918 | +#include <linux/gracl.h> | ||
62919 | +#include <linux/compat.h> | ||
62920 | +#include <linux/gracl_compat.h> | ||
62921 | + | ||
62922 | +#include <asm/uaccess.h> | ||
62923 | + | ||
62924 | +int copy_gr_arg_wrapper_compat(const char *buf, struct gr_arg_wrapper *uwrap) | ||
62925 | +{ | ||
62926 | + struct gr_arg_wrapper_compat uwrapcompat; | ||
62927 | + | ||
62928 | + if (copy_from_user(&uwrapcompat, buf, sizeof(uwrapcompat))) | ||
62929 | + return -EFAULT; | ||
62930 | + | ||
62931 | + if ((uwrapcompat.version != GRSECURITY_VERSION) || | ||
62932 | + (uwrapcompat.size != sizeof(struct gr_arg_compat))) | ||
62933 | + return -EINVAL; | ||
62934 | + | ||
62935 | + uwrap->arg = compat_ptr(uwrapcompat.arg); | ||
62936 | + uwrap->version = uwrapcompat.version; | ||
62937 | + uwrap->size = sizeof(struct gr_arg); | ||
62938 | + | ||
62939 | + return 0; | ||
62940 | +} | ||
62941 | + | ||
62942 | +int copy_gr_arg_compat(const struct gr_arg __user *buf, struct gr_arg *arg) | ||
62943 | +{ | ||
62944 | + struct gr_arg_compat argcompat; | ||
62945 | + | ||
62946 | + if (copy_from_user(&argcompat, buf, sizeof(argcompat))) | ||
62947 | + return -EFAULT; | ||
62948 | + | ||
62949 | + arg->role_db.r_table = compat_ptr(argcompat.role_db.r_table); | ||
62950 | + arg->role_db.num_pointers = argcompat.role_db.num_pointers; | ||
62951 | + arg->role_db.num_roles = argcompat.role_db.num_roles; | ||
62952 | + arg->role_db.num_domain_children = argcompat.role_db.num_domain_children; | ||
62953 | + arg->role_db.num_subjects = argcompat.role_db.num_subjects; | ||
62954 | + arg->role_db.num_objects = argcompat.role_db.num_objects; | ||
62955 | + | ||
62956 | + memcpy(&arg->pw, &argcompat.pw, sizeof(arg->pw)); | ||
62957 | + memcpy(&arg->salt, &argcompat.salt, sizeof(arg->salt)); | ||
62958 | + memcpy(&arg->sum, &argcompat.sum, sizeof(arg->sum)); | ||
62959 | + memcpy(&arg->sp_role, &argcompat.sp_role, sizeof(arg->sp_role)); | ||
62960 | + arg->sprole_pws = compat_ptr(argcompat.sprole_pws); | ||
62961 | + arg->segv_device = argcompat.segv_device; | ||
62962 | + arg->segv_inode = argcompat.segv_inode; | ||
62963 | + arg->segv_uid = argcompat.segv_uid; | ||
62964 | + arg->num_sprole_pws = argcompat.num_sprole_pws; | ||
62965 | + arg->mode = argcompat.mode; | ||
62966 | + | ||
62967 | + return 0; | ||
62968 | +} | ||
62969 | + | ||
62970 | +int copy_acl_object_label_compat(struct acl_object_label *obj, const struct acl_object_label *userp) | ||
62971 | +{ | ||
62972 | + struct acl_object_label_compat objcompat; | ||
62973 | + | ||
62974 | + if (copy_from_user(&objcompat, userp, sizeof(objcompat))) | ||
62975 | + return -EFAULT; | ||
62976 | + | ||
62977 | + obj->filename = compat_ptr(objcompat.filename); | ||
62978 | + obj->inode = objcompat.inode; | ||
62979 | + obj->device = objcompat.device; | ||
62980 | + obj->mode = objcompat.mode; | ||
62981 | + | ||
62982 | + obj->nested = compat_ptr(objcompat.nested); | ||
62983 | + obj->globbed = compat_ptr(objcompat.globbed); | ||
62984 | + | ||
62985 | + obj->prev = compat_ptr(objcompat.prev); | ||
62986 | + obj->next = compat_ptr(objcompat.next); | ||
62987 | + | ||
62988 | + return 0; | ||
62989 | +} | ||
62990 | + | ||
62991 | +int copy_acl_subject_label_compat(struct acl_subject_label *subj, const struct acl_subject_label *userp) | ||
62992 | +{ | ||
62993 | + unsigned int i; | ||
62994 | + struct acl_subject_label_compat subjcompat; | ||
62995 | + | ||
62996 | + if (copy_from_user(&subjcompat, userp, sizeof(subjcompat))) | ||
62997 | + return -EFAULT; | ||
62998 | + | ||
62999 | + subj->filename = compat_ptr(subjcompat.filename); | ||
63000 | + subj->inode = subjcompat.inode; | ||
63001 | + subj->device = subjcompat.device; | ||
63002 | + subj->mode = subjcompat.mode; | ||
63003 | + subj->cap_mask = subjcompat.cap_mask; | ||
63004 | + subj->cap_lower = subjcompat.cap_lower; | ||
63005 | + subj->cap_invert_audit = subjcompat.cap_invert_audit; | ||
63006 | + | ||
63007 | + for (i = 0; i < GR_NLIMITS; i++) { | ||
63008 | + if (subjcompat.res[i].rlim_cur == COMPAT_RLIM_INFINITY) | ||
63009 | + subj->res[i].rlim_cur = RLIM_INFINITY; | ||
63010 | + else | ||
63011 | + subj->res[i].rlim_cur = subjcompat.res[i].rlim_cur; | ||
63012 | + if (subjcompat.res[i].rlim_max == COMPAT_RLIM_INFINITY) | ||
63013 | + subj->res[i].rlim_max = RLIM_INFINITY; | ||
63014 | + else | ||
63015 | + subj->res[i].rlim_max = subjcompat.res[i].rlim_max; | ||
63016 | + } | ||
63017 | + subj->resmask = subjcompat.resmask; | ||
63018 | + | ||
63019 | + subj->user_trans_type = subjcompat.user_trans_type; | ||
63020 | + subj->group_trans_type = subjcompat.group_trans_type; | ||
63021 | + subj->user_transitions = compat_ptr(subjcompat.user_transitions); | ||
63022 | + subj->group_transitions = compat_ptr(subjcompat.group_transitions); | ||
63023 | + subj->user_trans_num = subjcompat.user_trans_num; | ||
63024 | + subj->group_trans_num = subjcompat.group_trans_num; | ||
63025 | + | ||
63026 | + memcpy(&subj->sock_families, &subjcompat.sock_families, sizeof(subj->sock_families)); | ||
63027 | + memcpy(&subj->ip_proto, &subjcompat.ip_proto, sizeof(subj->ip_proto)); | ||
63028 | + subj->ip_type = subjcompat.ip_type; | ||
63029 | + subj->ips = compat_ptr(subjcompat.ips); | ||
63030 | + subj->ip_num = subjcompat.ip_num; | ||
63031 | + subj->inaddr_any_override = subjcompat.inaddr_any_override; | ||
63032 | + | ||
63033 | + subj->crashes = subjcompat.crashes; | ||
63034 | + subj->expires = subjcompat.expires; | ||
63035 | + | ||
63036 | + subj->parent_subject = compat_ptr(subjcompat.parent_subject); | ||
63037 | + subj->hash = compat_ptr(subjcompat.hash); | ||
63038 | + subj->prev = compat_ptr(subjcompat.prev); | ||
63039 | + subj->next = compat_ptr(subjcompat.next); | ||
63040 | + | ||
63041 | + subj->obj_hash = compat_ptr(subjcompat.obj_hash); | ||
63042 | + subj->obj_hash_size = subjcompat.obj_hash_size; | ||
63043 | + subj->pax_flags = subjcompat.pax_flags; | ||
63044 | + | ||
63045 | + return 0; | ||
63046 | +} | ||
63047 | + | ||
63048 | +int copy_acl_role_label_compat(struct acl_role_label *role, const struct acl_role_label *userp) | ||
63049 | +{ | ||
63050 | + struct acl_role_label_compat rolecompat; | ||
63051 | + | ||
63052 | + if (copy_from_user(&rolecompat, userp, sizeof(rolecompat))) | ||
63053 | + return -EFAULT; | ||
63054 | + | ||
63055 | + role->rolename = compat_ptr(rolecompat.rolename); | ||
63056 | + role->uidgid = rolecompat.uidgid; | ||
63057 | + role->roletype = rolecompat.roletype; | ||
63058 | + | ||
63059 | + role->auth_attempts = rolecompat.auth_attempts; | ||
63060 | + role->expires = rolecompat.expires; | ||
63061 | + | ||
63062 | + role->root_label = compat_ptr(rolecompat.root_label); | ||
63063 | + role->hash = compat_ptr(rolecompat.hash); | ||
63064 | + | ||
63065 | + role->prev = compat_ptr(rolecompat.prev); | ||
63066 | + role->next = compat_ptr(rolecompat.next); | ||
63067 | + | ||
63068 | + role->transitions = compat_ptr(rolecompat.transitions); | ||
63069 | + role->allowed_ips = compat_ptr(rolecompat.allowed_ips); | ||
63070 | + role->domain_children = compat_ptr(rolecompat.domain_children); | ||
63071 | + role->domain_child_num = rolecompat.domain_child_num; | ||
63072 | + | ||
63073 | + role->umask = rolecompat.umask; | ||
63074 | + | ||
63075 | + role->subj_hash = compat_ptr(rolecompat.subj_hash); | ||
63076 | + role->subj_hash_size = rolecompat.subj_hash_size; | ||
63077 | + | ||
63078 | + return 0; | ||
63079 | +} | ||
63080 | + | ||
63081 | +int copy_role_allowed_ip_compat(struct role_allowed_ip *roleip, const struct role_allowed_ip *userp) | ||
63082 | +{ | ||
63083 | + struct role_allowed_ip_compat roleip_compat; | ||
63084 | + | ||
63085 | + if (copy_from_user(&roleip_compat, userp, sizeof(roleip_compat))) | ||
63086 | + return -EFAULT; | ||
63087 | + | ||
63088 | + roleip->addr = roleip_compat.addr; | ||
63089 | + roleip->netmask = roleip_compat.netmask; | ||
63090 | + | ||
63091 | + roleip->prev = compat_ptr(roleip_compat.prev); | ||
63092 | + roleip->next = compat_ptr(roleip_compat.next); | ||
63093 | + | ||
63094 | + return 0; | ||
63095 | +} | ||
63096 | + | ||
63097 | +int copy_role_transition_compat(struct role_transition *trans, const struct role_transition *userp) | ||
63098 | +{ | ||
63099 | + struct role_transition_compat trans_compat; | ||
63100 | + | ||
63101 | + if (copy_from_user(&trans_compat, userp, sizeof(trans_compat))) | ||
63102 | + return -EFAULT; | ||
63103 | + | ||
63104 | + trans->rolename = compat_ptr(trans_compat.rolename); | ||
63105 | + | ||
63106 | + trans->prev = compat_ptr(trans_compat.prev); | ||
63107 | + trans->next = compat_ptr(trans_compat.next); | ||
63108 | + | ||
63109 | + return 0; | ||
63110 | + | ||
63111 | +} | ||
63112 | + | ||
63113 | +int copy_gr_hash_struct_compat(struct gr_hash_struct *hash, const struct gr_hash_struct *userp) | ||
63114 | +{ | ||
63115 | + struct gr_hash_struct_compat hash_compat; | ||
63116 | + | ||
63117 | + if (copy_from_user(&hash_compat, userp, sizeof(hash_compat))) | ||
63118 | + return -EFAULT; | ||
63119 | + | ||
63120 | + hash->table = compat_ptr(hash_compat.table); | ||
63121 | + hash->nametable = compat_ptr(hash_compat.nametable); | ||
63122 | + hash->first = compat_ptr(hash_compat.first); | ||
63123 | + | ||
63124 | + hash->table_size = hash_compat.table_size; | ||
63125 | + hash->used_size = hash_compat.used_size; | ||
63126 | + | ||
63127 | + hash->type = hash_compat.type; | ||
63128 | + | ||
63129 | + return 0; | ||
63130 | +} | ||
63131 | + | ||
63132 | +int copy_pointer_from_array_compat(void *ptr, unsigned long idx, const void *userp) | ||
63133 | +{ | ||
63134 | + compat_uptr_t ptrcompat; | ||
63135 | + | ||
63136 | + if (copy_from_user(&ptrcompat, userp + (idx * sizeof(ptrcompat)), sizeof(ptrcompat))) | ||
63137 | + return -EFAULT; | ||
63138 | + | ||
63139 | + *(void **)ptr = compat_ptr(ptrcompat); | ||
63140 | + | ||
63141 | + return 0; | ||
63142 | +} | ||
63143 | + | ||
63144 | +int copy_acl_ip_label_compat(struct acl_ip_label *ip, const struct acl_ip_label *userp) | ||
63145 | +{ | ||
63146 | + struct acl_ip_label_compat ip_compat; | ||
63147 | + | ||
63148 | + if (copy_from_user(&ip_compat, userp, sizeof(ip_compat))) | ||
63149 | + return -EFAULT; | ||
63150 | + | ||
63151 | + ip->iface = compat_ptr(ip_compat.iface); | ||
63152 | + ip->addr = ip_compat.addr; | ||
63153 | + ip->netmask = ip_compat.netmask; | ||
63154 | + ip->low = ip_compat.low; | ||
63155 | + ip->high = ip_compat.high; | ||
63156 | + ip->mode = ip_compat.mode; | ||
63157 | + ip->type = ip_compat.type; | ||
63158 | + | ||
63159 | + memcpy(&ip->proto, &ip_compat.proto, sizeof(ip->proto)); | ||
63160 | + | ||
63161 | + ip->prev = compat_ptr(ip_compat.prev); | ||
63162 | + ip->next = compat_ptr(ip_compat.next); | ||
63163 | + | ||
63164 | + return 0; | ||
63165 | +} | ||
63166 | + | ||
63167 | +int copy_sprole_pw_compat(struct sprole_pw *pw, unsigned long idx, const struct sprole_pw *userp) | ||
63168 | +{ | ||
63169 | + struct sprole_pw_compat pw_compat; | ||
63170 | + | ||
63171 | + if (copy_from_user(&pw_compat, (const void *)userp + (sizeof(pw_compat) * idx), sizeof(pw_compat))) | ||
63172 | + return -EFAULT; | ||
63173 | + | ||
63174 | + pw->rolename = compat_ptr(pw_compat.rolename); | ||
63175 | + memcpy(&pw->salt, pw_compat.salt, sizeof(pw->salt)); | ||
63176 | + memcpy(&pw->sum, pw_compat.sum, sizeof(pw->sum)); | ||
63177 | + | ||
63178 | + return 0; | ||
63179 | +} | ||
63180 | + | ||
63181 | +size_t get_gr_arg_wrapper_size_compat(void) | ||
63182 | +{ | ||
63183 | + return sizeof(struct gr_arg_wrapper_compat); | ||
63184 | +} | ||
63185 | + | ||
63540 | diff --git a/grsecurity/gracl_fs.c b/grsecurity/gracl_fs.c | 63186 | diff --git a/grsecurity/gracl_fs.c b/grsecurity/gracl_fs.c |
63541 | new file mode 100644 | 63187 | new file mode 100644 |
63542 | index 0000000..a340c17 | 63188 | index 0000000..a340c17 |
@@ -66106,10 +65752,10 @@ index 0000000..8ca18bf | |||
66106 | +} | 65752 | +} |
66107 | diff --git a/grsecurity/grsec_init.c b/grsecurity/grsec_init.c | 65753 | diff --git a/grsecurity/grsec_init.c b/grsecurity/grsec_init.c |
66108 | new file mode 100644 | 65754 | new file mode 100644 |
66109 | index 0000000..a862e9f | 65755 | index 0000000..ab2d875 |
66110 | --- /dev/null | 65756 | --- /dev/null |
66111 | +++ b/grsecurity/grsec_init.c | 65757 | +++ b/grsecurity/grsec_init.c |
66112 | @@ -0,0 +1,283 @@ | 65758 | @@ -0,0 +1,279 @@ |
66113 | +#include <linux/kernel.h> | 65759 | +#include <linux/kernel.h> |
66114 | +#include <linux/sched.h> | 65760 | +#include <linux/sched.h> |
66115 | +#include <linux/mm.h> | 65761 | +#include <linux/mm.h> |
@@ -66133,7 +65779,6 @@ index 0000000..a862e9f | |||
66133 | +int grsec_enable_forkfail; | 65779 | +int grsec_enable_forkfail; |
66134 | +int grsec_enable_audit_ptrace; | 65780 | +int grsec_enable_audit_ptrace; |
66135 | +int grsec_enable_time; | 65781 | +int grsec_enable_time; |
66136 | +int grsec_enable_audit_textrel; | ||
66137 | +int grsec_enable_group; | 65782 | +int grsec_enable_group; |
66138 | +kgid_t grsec_audit_gid; | 65783 | +kgid_t grsec_audit_gid; |
66139 | +int grsec_enable_chdir; | 65784 | +int grsec_enable_chdir; |
@@ -66265,9 +65910,6 @@ index 0000000..a862e9f | |||
66265 | + grsec_lock = 1; | 65910 | + grsec_lock = 1; |
66266 | +#endif | 65911 | +#endif |
66267 | + | 65912 | + |
66268 | +#ifdef CONFIG_GRKERNSEC_AUDIT_TEXTREL | ||
66269 | + grsec_enable_audit_textrel = 1; | ||
66270 | +#endif | ||
66271 | +#ifdef CONFIG_GRKERNSEC_RWXMAP_LOG | 65913 | +#ifdef CONFIG_GRKERNSEC_RWXMAP_LOG |
66272 | + grsec_enable_log_rwxmaps = 1; | 65914 | + grsec_enable_log_rwxmaps = 1; |
66273 | +#endif | 65915 | +#endif |
@@ -66459,15 +66101,16 @@ index 0000000..5e05e20 | |||
66459 | +} | 66101 | +} |
66460 | diff --git a/grsecurity/grsec_log.c b/grsecurity/grsec_log.c | 66102 | diff --git a/grsecurity/grsec_log.c b/grsecurity/grsec_log.c |
66461 | new file mode 100644 | 66103 | new file mode 100644 |
66462 | index 0000000..7c06085 | 66104 | index 0000000..dbe0a6b |
66463 | --- /dev/null | 66105 | --- /dev/null |
66464 | +++ b/grsecurity/grsec_log.c | 66106 | +++ b/grsecurity/grsec_log.c |
66465 | @@ -0,0 +1,326 @@ | 66107 | @@ -0,0 +1,341 @@ |
66466 | +#include <linux/kernel.h> | 66108 | +#include <linux/kernel.h> |
66467 | +#include <linux/sched.h> | 66109 | +#include <linux/sched.h> |
66468 | +#include <linux/file.h> | 66110 | +#include <linux/file.h> |
66469 | +#include <linux/tty.h> | 66111 | +#include <linux/tty.h> |
66470 | +#include <linux/fs.h> | 66112 | +#include <linux/fs.h> |
66113 | +#include <linux/mm.h> | ||
66471 | +#include <linux/grinternal.h> | 66114 | +#include <linux/grinternal.h> |
66472 | + | 66115 | + |
66473 | +#ifdef CONFIG_TREE_PREEMPT_RCU | 66116 | +#ifdef CONFIG_TREE_PREEMPT_RCU |
@@ -66614,6 +66257,7 @@ index 0000000..7c06085 | |||
66614 | + struct vfsmount *mnt = NULL; | 66257 | + struct vfsmount *mnt = NULL; |
66615 | + struct file *file = NULL; | 66258 | + struct file *file = NULL; |
66616 | + struct task_struct *task = NULL; | 66259 | + struct task_struct *task = NULL; |
66260 | + struct vm_area_struct *vma = NULL; | ||
66617 | + const struct cred *cred, *pcred; | 66261 | + const struct cred *cred, *pcred; |
66618 | + va_list ap; | 66262 | + va_list ap; |
66619 | + | 66263 | + |
@@ -66753,6 +66397,19 @@ index 0000000..7c06085 | |||
66753 | + file = va_arg(ap, struct file *); | 66397 | + file = va_arg(ap, struct file *); |
66754 | + gr_log_middle_varargs(audit, msg, file ? gr_to_filename(file->f_path.dentry, file->f_path.mnt) : "<anonymous mapping>"); | 66398 | + gr_log_middle_varargs(audit, msg, file ? gr_to_filename(file->f_path.dentry, file->f_path.mnt) : "<anonymous mapping>"); |
66755 | + break; | 66399 | + break; |
66400 | + case GR_RWXMAPVMA: | ||
66401 | + vma = va_arg(ap, struct vm_area_struct *); | ||
66402 | + if (vma->vm_file) | ||
66403 | + str1 = gr_to_filename(vma->vm_file->f_path.dentry, vma->vm_file->f_path.mnt); | ||
66404 | + else if (vma->vm_flags & (VM_GROWSDOWN | VM_GROWSUP)) | ||
66405 | + str1 = "<stack>"; | ||
66406 | + else if (vma->vm_start <= current->mm->brk && | ||
66407 | + vma->vm_end >= current->mm->start_brk) | ||
66408 | + str1 = "<heap>"; | ||
66409 | + else | ||
66410 | + str1 = "<anonymous mapping>"; | ||
66411 | + gr_log_middle_varargs(audit, msg, str1); | ||
66412 | + break; | ||
66756 | + case GR_PSACCT: | 66413 | + case GR_PSACCT: |
66757 | + { | 66414 | + { |
66758 | + unsigned int wday, cday; | 66415 | + unsigned int wday, cday; |
@@ -66905,10 +66562,10 @@ index 0000000..2131422 | |||
66905 | +} | 66562 | +} |
66906 | diff --git a/grsecurity/grsec_pax.c b/grsecurity/grsec_pax.c | 66563 | diff --git a/grsecurity/grsec_pax.c b/grsecurity/grsec_pax.c |
66907 | new file mode 100644 | 66564 | new file mode 100644 |
66908 | index 0000000..a3b12a0 | 66565 | index 0000000..6ee9d50 |
66909 | --- /dev/null | 66566 | --- /dev/null |
66910 | +++ b/grsecurity/grsec_pax.c | 66567 | +++ b/grsecurity/grsec_pax.c |
66911 | @@ -0,0 +1,36 @@ | 66568 | @@ -0,0 +1,45 @@ |
66912 | +#include <linux/kernel.h> | 66569 | +#include <linux/kernel.h> |
66913 | +#include <linux/sched.h> | 66570 | +#include <linux/sched.h> |
66914 | +#include <linux/mm.h> | 66571 | +#include <linux/mm.h> |
@@ -66919,9 +66576,18 @@ index 0000000..a3b12a0 | |||
66919 | +void | 66576 | +void |
66920 | +gr_log_textrel(struct vm_area_struct * vma) | 66577 | +gr_log_textrel(struct vm_area_struct * vma) |
66921 | +{ | 66578 | +{ |
66922 | +#ifdef CONFIG_GRKERNSEC_AUDIT_TEXTREL | 66579 | +#ifdef CONFIG_GRKERNSEC_RWXMAP_LOG |
66923 | + if (grsec_enable_audit_textrel) | 66580 | + if (grsec_enable_log_rwxmaps) |
66924 | + gr_log_textrel_ulong_ulong(GR_DO_AUDIT, GR_TEXTREL_AUDIT_MSG, vma->vm_file, vma->vm_start, vma->vm_pgoff); | 66581 | + gr_log_textrel_ulong_ulong(GR_DONT_AUDIT, GR_TEXTREL_AUDIT_MSG, vma->vm_file, vma->vm_start, vma->vm_pgoff); |
66582 | +#endif | ||
66583 | + return; | ||
66584 | +} | ||
66585 | + | ||
66586 | +void gr_log_ptgnustack(struct file *file) | ||
66587 | +{ | ||
66588 | +#ifdef CONFIG_GRKERNSEC_RWXMAP_LOG | ||
66589 | + if (grsec_enable_log_rwxmaps) | ||
66590 | + gr_log_rwxmap(GR_DONT_AUDIT, GR_PTGNUSTACK_MSG, file); | ||
66925 | +#endif | 66591 | +#endif |
66926 | + return; | 66592 | + return; |
66927 | +} | 66593 | +} |
@@ -66937,11 +66603,11 @@ index 0000000..a3b12a0 | |||
66937 | +} | 66603 | +} |
66938 | + | 66604 | + |
66939 | +void | 66605 | +void |
66940 | +gr_log_rwxmprotect(struct file *file) | 66606 | +gr_log_rwxmprotect(struct vm_area_struct *vma) |
66941 | +{ | 66607 | +{ |
66942 | +#ifdef CONFIG_GRKERNSEC_RWXMAP_LOG | 66608 | +#ifdef CONFIG_GRKERNSEC_RWXMAP_LOG |
66943 | + if (grsec_enable_log_rwxmaps) | 66609 | + if (grsec_enable_log_rwxmaps) |
66944 | + gr_log_rwxmap(GR_DONT_AUDIT, GR_RWXMPROTECT_MSG, file); | 66610 | + gr_log_rwxmap_vma(GR_DONT_AUDIT, GR_RWXMPROTECT_MSG, vma); |
66945 | +#endif | 66611 | +#endif |
66946 | + return; | 66612 | + return; |
66947 | +} | 66613 | +} |
@@ -67485,10 +67151,10 @@ index 0000000..4030d57 | |||
67485 | +} | 67151 | +} |
67486 | diff --git a/grsecurity/grsec_sysctl.c b/grsecurity/grsec_sysctl.c | 67152 | diff --git a/grsecurity/grsec_sysctl.c b/grsecurity/grsec_sysctl.c |
67487 | new file mode 100644 | 67153 | new file mode 100644 |
67488 | index 0000000..f55ef0f | 67154 | index 0000000..7624d1c |
67489 | --- /dev/null | 67155 | --- /dev/null |
67490 | +++ b/grsecurity/grsec_sysctl.c | 67156 | +++ b/grsecurity/grsec_sysctl.c |
67491 | @@ -0,0 +1,469 @@ | 67157 | @@ -0,0 +1,460 @@ |
67492 | +#include <linux/kernel.h> | 67158 | +#include <linux/kernel.h> |
67493 | +#include <linux/sched.h> | 67159 | +#include <linux/sched.h> |
67494 | +#include <linux/sysctl.h> | 67160 | +#include <linux/sysctl.h> |
@@ -67882,15 +67548,6 @@ index 0000000..f55ef0f | |||
67882 | + .proc_handler = &proc_dointvec, | 67548 | + .proc_handler = &proc_dointvec, |
67883 | + }, | 67549 | + }, |
67884 | +#endif | 67550 | +#endif |
67885 | +#ifdef CONFIG_GRKERNSEC_AUDIT_TEXTREL | ||
67886 | + { | ||
67887 | + .procname = "audit_textrel", | ||
67888 | + .data = &grsec_enable_audit_textrel, | ||
67889 | + .maxlen = sizeof(int), | ||
67890 | + .mode = 0600, | ||
67891 | + .proc_handler = &proc_dointvec, | ||
67892 | + }, | ||
67893 | +#endif | ||
67894 | +#ifdef CONFIG_GRKERNSEC_DMESG | 67551 | +#ifdef CONFIG_GRKERNSEC_DMESG |
67895 | + { | 67552 | + { |
67896 | + .procname = "dmesg", | 67553 | + .procname = "dmesg", |
@@ -68714,10 +68371,10 @@ index a59ff51..2594a70 100644 | |||
68714 | 68371 | ||
68715 | #endif /* !__ASSEMBLY__ */ | 68372 | #endif /* !__ASSEMBLY__ */ |
68716 | diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h | 68373 | diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h |
68717 | index afa12c7..99d4da0 100644 | 68374 | index eb58d2d..df131bf 100644 |
68718 | --- a/include/asm-generic/vmlinux.lds.h | 68375 | --- a/include/asm-generic/vmlinux.lds.h |
68719 | +++ b/include/asm-generic/vmlinux.lds.h | 68376 | +++ b/include/asm-generic/vmlinux.lds.h |
68720 | @@ -245,6 +245,7 @@ | 68377 | @@ -239,6 +239,7 @@ |
68721 | .rodata : AT(ADDR(.rodata) - LOAD_OFFSET) { \ | 68378 | .rodata : AT(ADDR(.rodata) - LOAD_OFFSET) { \ |
68722 | VMLINUX_SYMBOL(__start_rodata) = .; \ | 68379 | VMLINUX_SYMBOL(__start_rodata) = .; \ |
68723 | *(.rodata) *(.rodata.*) \ | 68380 | *(.rodata) *(.rodata.*) \ |
@@ -68725,7 +68382,7 @@ index afa12c7..99d4da0 100644 | |||
68725 | *(__vermagic) /* Kernel version magic */ \ | 68382 | *(__vermagic) /* Kernel version magic */ \ |
68726 | . = ALIGN(8); \ | 68383 | . = ALIGN(8); \ |
68727 | VMLINUX_SYMBOL(__start___tracepoints_ptrs) = .; \ | 68384 | VMLINUX_SYMBOL(__start___tracepoints_ptrs) = .; \ |
68728 | @@ -755,17 +756,18 @@ | 68385 | @@ -749,17 +750,18 @@ |
68729 | * section in the linker script will go there too. @phdr should have | 68386 | * section in the linker script will go there too. @phdr should have |
68730 | * a leading colon. | 68387 | * a leading colon. |
68731 | * | 68388 | * |
@@ -68762,7 +68419,7 @@ index 418d270..bfd2794 100644 | |||
68762 | struct crypto_instance { | 68419 | struct crypto_instance { |
68763 | struct crypto_alg alg; | 68420 | struct crypto_alg alg; |
68764 | diff --git a/include/drm/drmP.h b/include/drm/drmP.h | 68421 | diff --git a/include/drm/drmP.h b/include/drm/drmP.h |
68765 | index f1ce786..086a7a5 100644 | 68422 | index 63d17ee..716de2b 100644 |
68766 | --- a/include/drm/drmP.h | 68423 | --- a/include/drm/drmP.h |
68767 | +++ b/include/drm/drmP.h | 68424 | +++ b/include/drm/drmP.h |
68768 | @@ -72,6 +72,7 @@ | 68425 | @@ -72,6 +72,7 @@ |
@@ -68788,19 +68445,20 @@ index f1ce786..086a7a5 100644 | |||
68788 | unsigned long arg); | 68445 | unsigned long arg); |
68789 | 68446 | ||
68790 | #define DRM_IOCTL_NR(n) _IOC_NR(n) | 68447 | #define DRM_IOCTL_NR(n) _IOC_NR(n) |
68791 | @@ -314,9 +317,9 @@ typedef int drm_ioctl_compat_t(struct file *filp, unsigned int cmd, | 68448 | @@ -314,10 +317,10 @@ typedef int drm_ioctl_compat_t(struct file *filp, unsigned int cmd, |
68792 | struct drm_ioctl_desc { | 68449 | struct drm_ioctl_desc { |
68793 | unsigned int cmd; | 68450 | unsigned int cmd; |
68794 | int flags; | 68451 | int flags; |
68795 | - drm_ioctl_t *func; | 68452 | - drm_ioctl_t *func; |
68796 | + drm_ioctl_t func; | 68453 | + drm_ioctl_t func; |
68797 | unsigned int cmd_drv; | 68454 | unsigned int cmd_drv; |
68455 | const char *name; | ||
68798 | -}; | 68456 | -}; |
68799 | +} __do_const; | 68457 | +} __do_const; |
68800 | 68458 | ||
68801 | /** | 68459 | /** |
68802 | * Creates a driver or general drm_ioctl_desc array entry for the given | 68460 | * Creates a driver or general drm_ioctl_desc array entry for the given |
68803 | @@ -1014,7 +1017,7 @@ struct drm_info_list { | 68461 | @@ -1015,7 +1018,7 @@ struct drm_info_list { |
68804 | int (*show)(struct seq_file*, void*); /** show callback */ | 68462 | int (*show)(struct seq_file*, void*); /** show callback */ |
68805 | u32 driver_features; /**< Required driver features for this entry */ | 68463 | u32 driver_features; /**< Required driver features for this entry */ |
68806 | void *data; | 68464 | void *data; |
@@ -68809,7 +68467,7 @@ index f1ce786..086a7a5 100644 | |||
68809 | 68467 | ||
68810 | /** | 68468 | /** |
68811 | * debugfs node structure. This structure represents a debugfs file. | 68469 | * debugfs node structure. This structure represents a debugfs file. |
68812 | @@ -1087,7 +1090,7 @@ struct drm_device { | 68470 | @@ -1088,7 +1091,7 @@ struct drm_device { |
68813 | 68471 | ||
68814 | /** \name Usage Counters */ | 68472 | /** \name Usage Counters */ |
68815 | /*@{ */ | 68473 | /*@{ */ |
@@ -68818,7 +68476,7 @@ index f1ce786..086a7a5 100644 | |||
68818 | atomic_t ioctl_count; /**< Outstanding IOCTLs pending */ | 68476 | atomic_t ioctl_count; /**< Outstanding IOCTLs pending */ |
68819 | atomic_t vma_count; /**< Outstanding vma areas open */ | 68477 | atomic_t vma_count; /**< Outstanding vma areas open */ |
68820 | int buf_use; /**< Buffers in use -- cannot alloc */ | 68478 | int buf_use; /**< Buffers in use -- cannot alloc */ |
68821 | @@ -1098,7 +1101,7 @@ struct drm_device { | 68479 | @@ -1099,7 +1102,7 @@ struct drm_device { |
68822 | /*@{ */ | 68480 | /*@{ */ |
68823 | unsigned long counters; | 68481 | unsigned long counters; |
68824 | enum drm_stat_type types[15]; | 68482 | enum drm_stat_type types[15]; |
@@ -68889,14 +68547,15 @@ index c1da539..1dcec55 100644 | |||
68889 | struct atmphy_ops { | 68547 | struct atmphy_ops { |
68890 | int (*start)(struct atm_dev *dev); | 68548 | int (*start)(struct atm_dev *dev); |
68891 | diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h | 68549 | diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h |
68892 | index c3a0914..ec5d48a 100644 | 68550 | index 70cf138..0418ee2 100644 |
68893 | --- a/include/linux/binfmts.h | 68551 | --- a/include/linux/binfmts.h |
68894 | +++ b/include/linux/binfmts.h | 68552 | +++ b/include/linux/binfmts.h |
68895 | @@ -73,8 +73,9 @@ struct linux_binfmt { | 68553 | @@ -73,8 +73,10 @@ struct linux_binfmt { |
68896 | int (*load_binary)(struct linux_binprm *); | 68554 | int (*load_binary)(struct linux_binprm *); |
68897 | int (*load_shlib)(struct file *); | 68555 | int (*load_shlib)(struct file *); |
68898 | int (*core_dump)(struct coredump_params *cprm); | 68556 | int (*core_dump)(struct coredump_params *cprm); |
68899 | + void (*handle_mprotect)(struct vm_area_struct *vma, unsigned long newflags); | 68557 | + void (*handle_mprotect)(struct vm_area_struct *vma, unsigned long newflags); |
68558 | + void (*handle_mmap)(struct file *); | ||
68900 | unsigned long min_coredump; /* minimal dump size */ | 68559 | unsigned long min_coredump; /* minimal dump size */ |
68901 | -}; | 68560 | -}; |
68902 | +} __do_const; | 68561 | +} __do_const; |
@@ -68904,10 +68563,10 @@ index c3a0914..ec5d48a 100644 | |||
68904 | extern void __register_binfmt(struct linux_binfmt *fmt, int insert); | 68563 | extern void __register_binfmt(struct linux_binfmt *fmt, int insert); |
68905 | 68564 | ||
68906 | diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h | 68565 | diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h |
68907 | index 33f358f..7f2c27f 100644 | 68566 | index 2fdb4a4..54aad7e 100644 |
68908 | --- a/include/linux/blkdev.h | 68567 | --- a/include/linux/blkdev.h |
68909 | +++ b/include/linux/blkdev.h | 68568 | +++ b/include/linux/blkdev.h |
68910 | @@ -1499,7 +1499,7 @@ struct block_device_operations { | 68569 | @@ -1526,7 +1526,7 @@ struct block_device_operations { |
68911 | /* this callback is with swap_lock and sometimes page table lock held */ | 68570 | /* this callback is with swap_lock and sometimes page table lock held */ |
68912 | void (*swap_slot_free_notify) (struct block_device *, unsigned long); | 68571 | void (*swap_slot_free_notify) (struct block_device *, unsigned long); |
68913 | struct module *owner; | 68572 | struct module *owner; |
@@ -68975,7 +68634,7 @@ index 8609d57..86e4d79 100644 | |||
68975 | int (*generic_packet) (struct cdrom_device_info *, | 68634 | int (*generic_packet) (struct cdrom_device_info *, |
68976 | struct packet_command *); | 68635 | struct packet_command *); |
68977 | diff --git a/include/linux/cleancache.h b/include/linux/cleancache.h | 68636 | diff --git a/include/linux/cleancache.h b/include/linux/cleancache.h |
68978 | index 42e55de..1cd0e66 100644 | 68637 | index 4ce9056..86caac6 100644 |
68979 | --- a/include/linux/cleancache.h | 68638 | --- a/include/linux/cleancache.h |
68980 | +++ b/include/linux/cleancache.h | 68639 | +++ b/include/linux/cleancache.h |
68981 | @@ -31,7 +31,7 @@ struct cleancache_ops { | 68640 | @@ -31,7 +31,7 @@ struct cleancache_ops { |
@@ -68985,40 +68644,44 @@ index 42e55de..1cd0e66 100644 | |||
68985 | -}; | 68644 | -}; |
68986 | +} __no_const; | 68645 | +} __no_const; |
68987 | 68646 | ||
68988 | extern struct cleancache_ops | 68647 | extern struct cleancache_ops * |
68989 | cleancache_register_ops(struct cleancache_ops *ops); | 68648 | cleancache_register_ops(struct cleancache_ops *ops); |
68649 | diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h | ||
68650 | index 1186098..f87e53d 100644 | ||
68651 | --- a/include/linux/clk-provider.h | ||
68652 | +++ b/include/linux/clk-provider.h | ||
68653 | @@ -132,6 +132,7 @@ struct clk_ops { | ||
68654 | unsigned long); | ||
68655 | void (*init)(struct clk_hw *hw); | ||
68656 | }; | ||
68657 | +typedef struct clk_ops __no_const clk_ops_no_const; | ||
68658 | |||
68659 | /** | ||
68660 | * struct clk_init_data - holds init data that's common to all clocks and is | ||
68990 | diff --git a/include/linux/compat.h b/include/linux/compat.h | 68661 | diff --git a/include/linux/compat.h b/include/linux/compat.h |
68991 | index 377cd8c..2479845 100644 | 68662 | index 7f0c1dd..b5729c6 100644 |
68992 | --- a/include/linux/compat.h | 68663 | --- a/include/linux/compat.h |
68993 | +++ b/include/linux/compat.h | 68664 | +++ b/include/linux/compat.h |
68994 | @@ -332,14 +332,14 @@ long compat_sys_msgsnd(int first, int second, int third, void __user *uptr); | 68665 | @@ -312,7 +312,7 @@ compat_sys_get_robust_list(int pid, compat_uptr_t __user *head_ptr, |
68995 | long compat_sys_msgrcv(int first, int second, int msgtyp, int third, | 68666 | compat_size_t __user *len_ptr); |
68996 | int version, void __user *uptr); | 68667 | |
68997 | long compat_sys_shmat(int first, int second, compat_uptr_t third, int version, | 68668 | asmlinkage long compat_sys_ipc(u32, int, int, u32, compat_uptr_t, u32); |
68998 | - void __user *uptr); | 68669 | -asmlinkage long compat_sys_shmat(int shmid, compat_uptr_t shmaddr, int shmflg); |
68999 | + void __user *uptr) __intentional_overflow(0); | 68670 | +asmlinkage long compat_sys_shmat(int shmid, compat_uptr_t shmaddr, int shmflg) __intentional_overflow(0); |
69000 | #else | 68671 | asmlinkage long compat_sys_semctl(int semid, int semnum, int cmd, int arg); |
69001 | long compat_sys_semctl(int semid, int semnum, int cmd, int arg); | 68672 | asmlinkage long compat_sys_msgsnd(int msqid, compat_uptr_t msgp, |
69002 | long compat_sys_msgsnd(int msqid, struct compat_msgbuf __user *msgp, | ||
69003 | compat_ssize_t msgsz, int msgflg); | 68673 | compat_ssize_t msgsz, int msgflg); |
69004 | long compat_sys_msgrcv(int msqid, struct compat_msgbuf __user *msgp, | 68674 | @@ -419,7 +419,7 @@ extern int compat_ptrace_request(struct task_struct *child, |
69005 | compat_ssize_t msgsz, long msgtyp, int msgflg); | ||
69006 | -long compat_sys_shmat(int shmid, compat_uptr_t shmaddr, int shmflg); | ||
69007 | +long compat_sys_shmat(int shmid, compat_uptr_t shmaddr, int shmflg) __intentional_overflow(0); | ||
69008 | #endif | ||
69009 | long compat_sys_msgctl(int first, int second, void __user *uptr); | ||
69010 | long compat_sys_shmctl(int first, int second, void __user *uptr); | ||
69011 | @@ -442,7 +442,7 @@ extern int compat_ptrace_request(struct task_struct *child, | ||
69012 | extern long compat_arch_ptrace(struct task_struct *child, compat_long_t request, | 68675 | extern long compat_arch_ptrace(struct task_struct *child, compat_long_t request, |
69013 | compat_ulong_t addr, compat_ulong_t data); | 68676 | compat_ulong_t addr, compat_ulong_t data); |
69014 | asmlinkage long compat_sys_ptrace(compat_long_t request, compat_long_t pid, | 68677 | asmlinkage long compat_sys_ptrace(compat_long_t request, compat_long_t pid, |
69015 | - compat_long_t addr, compat_long_t data); | 68678 | - compat_long_t addr, compat_long_t data); |
69016 | + compat_ulong_t addr, compat_ulong_t data); | 68679 | + compat_ulong_t addr, compat_ulong_t data); |
69017 | 68680 | ||
68681 | asmlinkage long compat_sys_lookup_dcookie(u32, u32, char __user *, size_t); | ||
69018 | /* | 68682 | /* |
69019 | * epoll (fs/eventpoll.c) compat bits follow ... | ||
69020 | diff --git a/include/linux/compiler-gcc4.h b/include/linux/compiler-gcc4.h | 68683 | diff --git a/include/linux/compiler-gcc4.h b/include/linux/compiler-gcc4.h |
69021 | index 68b162d..660f5f0 100644 | 68684 | index 842de22..7f3a41f 100644 |
69022 | --- a/include/linux/compiler-gcc4.h | 68685 | --- a/include/linux/compiler-gcc4.h |
69023 | +++ b/include/linux/compiler-gcc4.h | 68686 | +++ b/include/linux/compiler-gcc4.h |
69024 | @@ -39,9 +39,29 @@ | 68687 | @@ -39,9 +39,29 @@ |
@@ -69052,7 +68715,7 @@ index 68b162d..660f5f0 100644 | |||
69052 | * Mark a position in code as unreachable. This can be used to | 68715 | * Mark a position in code as unreachable. This can be used to |
69053 | * suppress control flow warnings after asm blocks that transfer | 68716 | * suppress control flow warnings after asm blocks that transfer |
69054 | diff --git a/include/linux/compiler.h b/include/linux/compiler.h | 68717 | diff --git a/include/linux/compiler.h b/include/linux/compiler.h |
69055 | index 10b8f23..5e0b083 100644 | 68718 | index 92669cd..1771a15 100644 |
69056 | --- a/include/linux/compiler.h | 68719 | --- a/include/linux/compiler.h |
69057 | +++ b/include/linux/compiler.h | 68720 | +++ b/include/linux/compiler.h |
69058 | @@ -5,11 +5,14 @@ | 68721 | @@ -5,11 +5,14 @@ |
@@ -69170,7 +68833,7 @@ index 10b8f23..5e0b083 100644 | |||
69170 | /* Simple shorthand for a section definition */ | 68833 | /* Simple shorthand for a section definition */ |
69171 | #ifndef __section | 68834 | #ifndef __section |
69172 | # define __section(S) __attribute__ ((__section__(#S))) | 68835 | # define __section(S) __attribute__ ((__section__(#S))) |
69173 | @@ -349,6 +407,7 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect); | 68836 | @@ -349,7 +407,8 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect); |
69174 | * use is to mediate communication between process-level code and irq/NMI | 68837 | * use is to mediate communication between process-level code and irq/NMI |
69175 | * handlers, all running on the same CPU. | 68838 | * handlers, all running on the same CPU. |
69176 | */ | 68839 | */ |
@@ -69178,7 +68841,8 @@ index 10b8f23..5e0b083 100644 | |||
69178 | +#define ACCESS_ONCE(x) (*(volatile const typeof(x) *)&(x)) | 68841 | +#define ACCESS_ONCE(x) (*(volatile const typeof(x) *)&(x)) |
69179 | +#define ACCESS_ONCE_RW(x) (*(volatile typeof(x) *)&(x)) | 68842 | +#define ACCESS_ONCE_RW(x) (*(volatile typeof(x) *)&(x)) |
69180 | 68843 | ||
69181 | #endif /* __LINUX_COMPILER_H */ | 68844 | /* Ignore/forbid kprobes attach on very low level functions marked by this attribute: */ |
68845 | #ifdef CONFIG_KPROBES | ||
69182 | diff --git a/include/linux/completion.h b/include/linux/completion.h | 68846 | diff --git a/include/linux/completion.h b/include/linux/completion.h |
69183 | index 33f0280..35c6568 100644 | 68847 | index 33f0280..35c6568 100644 |
69184 | --- a/include/linux/completion.h | 68848 | --- a/include/linux/completion.h |
@@ -69216,7 +68880,7 @@ index 34025df..d94bbbc 100644 | |||
69216 | /* | 68880 | /* |
69217 | * Users often need to create attribute structures for their configurable | 68881 | * Users often need to create attribute structures for their configurable |
69218 | diff --git a/include/linux/cpu.h b/include/linux/cpu.h | 68882 | diff --git a/include/linux/cpu.h b/include/linux/cpu.h |
69219 | index 714e792..e6130d9 100644 | 68883 | index 9f3c7e8..a18c7b6 100644 |
69220 | --- a/include/linux/cpu.h | 68884 | --- a/include/linux/cpu.h |
69221 | +++ b/include/linux/cpu.h | 68885 | +++ b/include/linux/cpu.h |
69222 | @@ -115,7 +115,7 @@ enum { | 68886 | @@ -115,7 +115,7 @@ enum { |
@@ -69229,10 +68893,10 @@ index 714e792..e6130d9 100644 | |||
69229 | register_cpu_notifier(&fn##_nb); \ | 68893 | register_cpu_notifier(&fn##_nb); \ |
69230 | } | 68894 | } |
69231 | diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h | 68895 | diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h |
69232 | index a22944c..4e695fe 100644 | 68896 | index 037d36a..ca5fe6e 100644 |
69233 | --- a/include/linux/cpufreq.h | 68897 | --- a/include/linux/cpufreq.h |
69234 | +++ b/include/linux/cpufreq.h | 68898 | +++ b/include/linux/cpufreq.h |
69235 | @@ -252,7 +252,7 @@ struct cpufreq_driver { | 68899 | @@ -262,7 +262,7 @@ struct cpufreq_driver { |
69236 | int (*suspend) (struct cpufreq_policy *policy); | 68900 | int (*suspend) (struct cpufreq_policy *policy); |
69237 | int (*resume) (struct cpufreq_policy *policy); | 68901 | int (*resume) (struct cpufreq_policy *policy); |
69238 | struct freq_attr **attr; | 68902 | struct freq_attr **attr; |
@@ -69241,7 +68905,7 @@ index a22944c..4e695fe 100644 | |||
69241 | 68905 | ||
69242 | /* flags */ | 68906 | /* flags */ |
69243 | 68907 | ||
69244 | @@ -311,6 +311,7 @@ struct global_attr { | 68908 | @@ -321,6 +321,7 @@ struct global_attr { |
69245 | ssize_t (*store)(struct kobject *a, struct attribute *b, | 68909 | ssize_t (*store)(struct kobject *a, struct attribute *b, |
69246 | const char *c, size_t count); | 68910 | const char *c, size_t count); |
69247 | }; | 68911 | }; |
@@ -69250,7 +68914,7 @@ index a22944c..4e695fe 100644 | |||
69250 | #define define_one_global_ro(_name) \ | 68914 | #define define_one_global_ro(_name) \ |
69251 | static struct global_attr _name = \ | 68915 | static struct global_attr _name = \ |
69252 | diff --git a/include/linux/cpuidle.h b/include/linux/cpuidle.h | 68916 | diff --git a/include/linux/cpuidle.h b/include/linux/cpuidle.h |
69253 | index 480c14d..552896f 100644 | 68917 | index 8f04062..900239a 100644 |
69254 | --- a/include/linux/cpuidle.h | 68918 | --- a/include/linux/cpuidle.h |
69255 | +++ b/include/linux/cpuidle.h | 68919 | +++ b/include/linux/cpuidle.h |
69256 | @@ -52,7 +52,8 @@ struct cpuidle_state { | 68920 | @@ -52,7 +52,8 @@ struct cpuidle_state { |
@@ -69263,7 +68927,7 @@ index 480c14d..552896f 100644 | |||
69263 | 68927 | ||
69264 | /* Idle State Flags */ | 68928 | /* Idle State Flags */ |
69265 | #define CPUIDLE_FLAG_TIME_VALID (0x01) /* is residency time measurable? */ | 68929 | #define CPUIDLE_FLAG_TIME_VALID (0x01) /* is residency time measurable? */ |
69266 | @@ -194,7 +195,7 @@ struct cpuidle_governor { | 68930 | @@ -191,7 +192,7 @@ struct cpuidle_governor { |
69267 | void (*reflect) (struct cpuidle_device *dev, int index); | 68931 | void (*reflect) (struct cpuidle_device *dev, int index); |
69268 | 68932 | ||
69269 | struct module *owner; | 68933 | struct module *owner; |
@@ -69273,7 +68937,7 @@ index 480c14d..552896f 100644 | |||
69273 | #ifdef CONFIG_CPU_IDLE | 68937 | #ifdef CONFIG_CPU_IDLE |
69274 | 68938 | ||
69275 | diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h | 68939 | diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h |
69276 | index 0325602..5e9feff 100644 | 68940 | index d08e4d2..95fad61 100644 |
69277 | --- a/include/linux/cpumask.h | 68941 | --- a/include/linux/cpumask.h |
69278 | +++ b/include/linux/cpumask.h | 68942 | +++ b/include/linux/cpumask.h |
69279 | @@ -118,17 +118,17 @@ static inline unsigned int cpumask_first(const struct cpumask *srcp) | 68943 | @@ -118,17 +118,17 @@ static inline unsigned int cpumask_first(const struct cpumask *srcp) |
@@ -69368,7 +69032,7 @@ index b92eadf..b4ecdc1 100644 | |||
69368 | #define crt_ablkcipher crt_u.ablkcipher | 69032 | #define crt_ablkcipher crt_u.ablkcipher |
69369 | #define crt_aead crt_u.aead | 69033 | #define crt_aead crt_u.aead |
69370 | diff --git a/include/linux/ctype.h b/include/linux/ctype.h | 69034 | diff --git a/include/linux/ctype.h b/include/linux/ctype.h |
69371 | index 8acfe31..6ffccd63 100644 | 69035 | index 653589e..4ef254a 100644 |
69372 | --- a/include/linux/ctype.h | 69036 | --- a/include/linux/ctype.h |
69373 | +++ b/include/linux/ctype.h | 69037 | +++ b/include/linux/ctype.h |
69374 | @@ -56,7 +56,7 @@ static inline unsigned char __toupper(unsigned char c) | 69038 | @@ -56,7 +56,7 @@ static inline unsigned char __toupper(unsigned char c) |
@@ -69407,10 +69071,10 @@ index fe8c447..bdc1f33 100644 | |||
69407 | /** | 69071 | /** |
69408 | * struct devfreq - Device devfreq structure | 69072 | * struct devfreq - Device devfreq structure |
69409 | diff --git a/include/linux/device.h b/include/linux/device.h | 69073 | diff --git a/include/linux/device.h b/include/linux/device.h |
69410 | index 9d6464e..8a5cc92 100644 | 69074 | index c0a1261..dba7569 100644 |
69411 | --- a/include/linux/device.h | 69075 | --- a/include/linux/device.h |
69412 | +++ b/include/linux/device.h | 69076 | +++ b/include/linux/device.h |
69413 | @@ -295,7 +295,7 @@ struct subsys_interface { | 69077 | @@ -290,7 +290,7 @@ struct subsys_interface { |
69414 | struct list_head node; | 69078 | struct list_head node; |
69415 | int (*add_dev)(struct device *dev, struct subsys_interface *sif); | 69079 | int (*add_dev)(struct device *dev, struct subsys_interface *sif); |
69416 | int (*remove_dev)(struct device *dev, struct subsys_interface *sif); | 69080 | int (*remove_dev)(struct device *dev, struct subsys_interface *sif); |
@@ -69419,7 +69083,7 @@ index 9d6464e..8a5cc92 100644 | |||
69419 | 69083 | ||
69420 | int subsys_interface_register(struct subsys_interface *sif); | 69084 | int subsys_interface_register(struct subsys_interface *sif); |
69421 | void subsys_interface_unregister(struct subsys_interface *sif); | 69085 | void subsys_interface_unregister(struct subsys_interface *sif); |
69422 | @@ -475,7 +475,7 @@ struct device_type { | 69086 | @@ -473,7 +473,7 @@ struct device_type { |
69423 | void (*release)(struct device *dev); | 69087 | void (*release)(struct device *dev); |
69424 | 69088 | ||
69425 | const struct dev_pm_ops *pm; | 69089 | const struct dev_pm_ops *pm; |
@@ -69428,7 +69092,7 @@ index 9d6464e..8a5cc92 100644 | |||
69428 | 69092 | ||
69429 | /* interface for exporting device attributes */ | 69093 | /* interface for exporting device attributes */ |
69430 | struct device_attribute { | 69094 | struct device_attribute { |
69431 | @@ -485,11 +485,12 @@ struct device_attribute { | 69095 | @@ -483,11 +483,12 @@ struct device_attribute { |
69432 | ssize_t (*store)(struct device *dev, struct device_attribute *attr, | 69096 | ssize_t (*store)(struct device *dev, struct device_attribute *attr, |
69433 | const char *buf, size_t count); | 69097 | const char *buf, size_t count); |
69434 | }; | 69098 | }; |
@@ -69456,10 +69120,10 @@ index 94af418..b1ca7a2 100644 | |||
69456 | #define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1)) | 69120 | #define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1)) |
69457 | 69121 | ||
69458 | diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h | 69122 | diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h |
69459 | index 91ac8da..a841318 100644 | 69123 | index 96d3e4a..dc36433 100644 |
69460 | --- a/include/linux/dmaengine.h | 69124 | --- a/include/linux/dmaengine.h |
69461 | +++ b/include/linux/dmaengine.h | 69125 | +++ b/include/linux/dmaengine.h |
69462 | @@ -1034,9 +1034,9 @@ struct dma_pinned_list { | 69126 | @@ -1035,9 +1035,9 @@ struct dma_pinned_list { |
69463 | struct dma_pinned_list *dma_pin_iovec_pages(struct iovec *iov, size_t len); | 69127 | struct dma_pinned_list *dma_pin_iovec_pages(struct iovec *iov, size_t len); |
69464 | void dma_unpin_iovec_pages(struct dma_pinned_list* pinned_list); | 69128 | void dma_unpin_iovec_pages(struct dma_pinned_list* pinned_list); |
69465 | 69129 | ||
@@ -69471,34 +69135,11 @@ index 91ac8da..a841318 100644 | |||
69471 | struct dma_pinned_list *pinned_list, struct page *page, | 69135 | struct dma_pinned_list *pinned_list, struct page *page, |
69472 | unsigned int offset, size_t len); | 69136 | unsigned int offset, size_t len); |
69473 | 69137 | ||
69474 | diff --git a/include/linux/edac.h b/include/linux/edac.h | ||
69475 | index 0b76327..5c6d7fb 100644 | ||
69476 | --- a/include/linux/edac.h | ||
69477 | +++ b/include/linux/edac.h | ||
69478 | @@ -622,7 +622,7 @@ struct edac_raw_error_desc { | ||
69479 | */ | ||
69480 | struct mem_ctl_info { | ||
69481 | struct device dev; | ||
69482 | - struct bus_type bus; | ||
69483 | + struct bus_type *bus; | ||
69484 | |||
69485 | struct list_head link; /* for global list of mem_ctl_info structs */ | ||
69486 | |||
69487 | @@ -742,4 +742,9 @@ struct mem_ctl_info { | ||
69488 | #endif | ||
69489 | }; | ||
69490 | |||
69491 | +/* | ||
69492 | + * Maximum number of memory controllers in the coherent fabric. | ||
69493 | + */ | ||
69494 | +#define EDAC_MAX_MCS 16 | ||
69495 | + | ||
69496 | #endif | ||
69497 | diff --git a/include/linux/efi.h b/include/linux/efi.h | 69138 | diff --git a/include/linux/efi.h b/include/linux/efi.h |
69498 | index 3d7df3d..301f024 100644 | 69139 | index 2bc0ad7..3f7b006 100644 |
69499 | --- a/include/linux/efi.h | 69140 | --- a/include/linux/efi.h |
69500 | +++ b/include/linux/efi.h | 69141 | +++ b/include/linux/efi.h |
69501 | @@ -740,6 +740,7 @@ struct efivar_operations { | 69142 | @@ -745,6 +745,7 @@ struct efivar_operations { |
69502 | efi_set_variable_t *set_variable; | 69143 | efi_set_variable_t *set_variable; |
69503 | efi_query_variable_store_t *query_variable_store; | 69144 | efi_query_variable_store_t *query_variable_store; |
69504 | }; | 69145 | }; |
@@ -69559,7 +69200,7 @@ index fcb51c8..bdafcf6 100644 | |||
69559 | 69200 | ||
69560 | /** | 69201 | /** |
69561 | diff --git a/include/linux/fb.h b/include/linux/fb.h | 69202 | diff --git a/include/linux/fb.h b/include/linux/fb.h |
69562 | index 58b9860..58e5516 100644 | 69203 | index d49c60f..2834fbe 100644 |
69563 | --- a/include/linux/fb.h | 69204 | --- a/include/linux/fb.h |
69564 | +++ b/include/linux/fb.h | 69205 | +++ b/include/linux/fb.h |
69565 | @@ -304,7 +304,7 @@ struct fb_ops { | 69206 | @@ -304,7 +304,7 @@ struct fb_ops { |
@@ -69572,7 +69213,7 @@ index 58b9860..58e5516 100644 | |||
69572 | #ifdef CONFIG_FB_TILEBLITTING | 69213 | #ifdef CONFIG_FB_TILEBLITTING |
69573 | #define FB_TILE_CURSOR_NONE 0 | 69214 | #define FB_TILE_CURSOR_NONE 0 |
69574 | diff --git a/include/linux/filter.h b/include/linux/filter.h | 69215 | diff --git a/include/linux/filter.h b/include/linux/filter.h |
69575 | index c45eabc..baa0be5 100644 | 69216 | index f65f5a6..2f4f93a 100644 |
69576 | --- a/include/linux/filter.h | 69217 | --- a/include/linux/filter.h |
69577 | +++ b/include/linux/filter.h | 69218 | +++ b/include/linux/filter.h |
69578 | @@ -20,6 +20,7 @@ struct compat_sock_fprog { | 69219 | @@ -20,6 +20,7 @@ struct compat_sock_fprog { |
@@ -69594,7 +69235,7 @@ index c45eabc..baa0be5 100644 | |||
69594 | struct sock_filter insns[0]; | 69235 | struct sock_filter insns[0]; |
69595 | }; | 69236 | }; |
69596 | diff --git a/include/linux/frontswap.h b/include/linux/frontswap.h | 69237 | diff --git a/include/linux/frontswap.h b/include/linux/frontswap.h |
69597 | index 3044254..9767f41 100644 | 69238 | index 8293262..2b3b8bd 100644 |
69598 | --- a/include/linux/frontswap.h | 69239 | --- a/include/linux/frontswap.h |
69599 | +++ b/include/linux/frontswap.h | 69240 | +++ b/include/linux/frontswap.h |
69600 | @@ -11,7 +11,7 @@ struct frontswap_ops { | 69241 | @@ -11,7 +11,7 @@ struct frontswap_ops { |
@@ -69605,12 +69246,12 @@ index 3044254..9767f41 100644 | |||
69605 | +} __no_const; | 69246 | +} __no_const; |
69606 | 69247 | ||
69607 | extern bool frontswap_enabled; | 69248 | extern bool frontswap_enabled; |
69608 | extern struct frontswap_ops | 69249 | extern struct frontswap_ops * |
69609 | diff --git a/include/linux/fs.h b/include/linux/fs.h | 69250 | diff --git a/include/linux/fs.h b/include/linux/fs.h |
69610 | index 2c28271..8d3d74c 100644 | 69251 | index 65c2be2..4c53f6e 100644 |
69611 | --- a/include/linux/fs.h | 69252 | --- a/include/linux/fs.h |
69612 | +++ b/include/linux/fs.h | 69253 | +++ b/include/linux/fs.h |
69613 | @@ -1541,7 +1541,8 @@ struct file_operations { | 69254 | @@ -1543,7 +1543,8 @@ struct file_operations { |
69614 | long (*fallocate)(struct file *file, int mode, loff_t offset, | 69255 | long (*fallocate)(struct file *file, int mode, loff_t offset, |
69615 | loff_t len); | 69256 | loff_t len); |
69616 | int (*show_fdinfo)(struct seq_file *m, struct file *f); | 69257 | int (*show_fdinfo)(struct seq_file *m, struct file *f); |
@@ -69620,7 +69261,7 @@ index 2c28271..8d3d74c 100644 | |||
69620 | 69261 | ||
69621 | struct inode_operations { | 69262 | struct inode_operations { |
69622 | struct dentry * (*lookup) (struct inode *,struct dentry *, unsigned int); | 69263 | struct dentry * (*lookup) (struct inode *,struct dentry *, unsigned int); |
69623 | @@ -2672,4 +2673,14 @@ static inline void inode_has_no_xattr(struct inode *inode) | 69264 | @@ -2688,4 +2689,14 @@ static inline void inode_has_no_xattr(struct inode *inode) |
69624 | inode->i_flags |= S_NOSEC; | 69265 | inode->i_flags |= S_NOSEC; |
69625 | } | 69266 | } |
69626 | 69267 | ||
@@ -69716,19 +69357,6 @@ index a78680a..87bd73e 100644 | |||
69716 | } | 69357 | } |
69717 | 69358 | ||
69718 | /* | 69359 | /* |
69719 | diff --git a/include/linux/ftrace_event.h b/include/linux/ftrace_event.h | ||
69720 | index 13a54d0..c6ce2a7 100644 | ||
69721 | --- a/include/linux/ftrace_event.h | ||
69722 | +++ b/include/linux/ftrace_event.h | ||
69723 | @@ -274,7 +274,7 @@ extern int trace_define_field(struct ftrace_event_call *call, const char *type, | ||
69724 | extern int trace_add_event_call(struct ftrace_event_call *call); | ||
69725 | extern void trace_remove_event_call(struct ftrace_event_call *call); | ||
69726 | |||
69727 | -#define is_signed_type(type) (((type)(-1)) < (type)0) | ||
69728 | +#define is_signed_type(type) (((type)(-1)) < (type)1) | ||
69729 | |||
69730 | int trace_set_clr_event(const char *system, const char *event, int set); | ||
69731 | |||
69732 | diff --git a/include/linux/genhd.h b/include/linux/genhd.h | 69360 | diff --git a/include/linux/genhd.h b/include/linux/genhd.h |
69733 | index 9f3c275..911b591 100644 | 69361 | index 9f3c275..911b591 100644 |
69734 | --- a/include/linux/genhd.h | 69362 | --- a/include/linux/genhd.h |
@@ -70124,6 +69752,168 @@ index 0000000..ebe6d72 | |||
70124 | + | 69752 | + |
70125 | +#endif | 69753 | +#endif |
70126 | + | 69754 | + |
69755 | diff --git a/include/linux/gracl_compat.h b/include/linux/gracl_compat.h | ||
69756 | new file mode 100644 | ||
69757 | index 0000000..33ebd1f | ||
69758 | --- /dev/null | ||
69759 | +++ b/include/linux/gracl_compat.h | ||
69760 | @@ -0,0 +1,156 @@ | ||
69761 | +#ifndef GR_ACL_COMPAT_H | ||
69762 | +#define GR_ACL_COMPAT_H | ||
69763 | + | ||
69764 | +#include <linux/resource.h> | ||
69765 | +#include <asm/resource.h> | ||
69766 | + | ||
69767 | +struct sprole_pw_compat { | ||
69768 | + compat_uptr_t rolename; | ||
69769 | + unsigned char salt[GR_SALT_LEN]; | ||
69770 | + unsigned char sum[GR_SHA_LEN]; | ||
69771 | +}; | ||
69772 | + | ||
69773 | +struct gr_hash_struct_compat { | ||
69774 | + compat_uptr_t table; | ||
69775 | + compat_uptr_t nametable; | ||
69776 | + compat_uptr_t first; | ||
69777 | + __u32 table_size; | ||
69778 | + __u32 used_size; | ||
69779 | + int type; | ||
69780 | +}; | ||
69781 | + | ||
69782 | +struct acl_subject_label_compat { | ||
69783 | + compat_uptr_t filename; | ||
69784 | + compat_ino_t inode; | ||
69785 | + __u32 device; | ||
69786 | + __u32 mode; | ||
69787 | + kernel_cap_t cap_mask; | ||
69788 | + kernel_cap_t cap_lower; | ||
69789 | + kernel_cap_t cap_invert_audit; | ||
69790 | + | ||
69791 | + struct compat_rlimit res[GR_NLIMITS]; | ||
69792 | + __u32 resmask; | ||
69793 | + | ||
69794 | + __u8 user_trans_type; | ||
69795 | + __u8 group_trans_type; | ||
69796 | + compat_uptr_t user_transitions; | ||
69797 | + compat_uptr_t group_transitions; | ||
69798 | + __u16 user_trans_num; | ||
69799 | + __u16 group_trans_num; | ||
69800 | + | ||
69801 | + __u32 sock_families[2]; | ||
69802 | + __u32 ip_proto[8]; | ||
69803 | + __u32 ip_type; | ||
69804 | + compat_uptr_t ips; | ||
69805 | + __u32 ip_num; | ||
69806 | + __u32 inaddr_any_override; | ||
69807 | + | ||
69808 | + __u32 crashes; | ||
69809 | + compat_ulong_t expires; | ||
69810 | + | ||
69811 | + compat_uptr_t parent_subject; | ||
69812 | + compat_uptr_t hash; | ||
69813 | + compat_uptr_t prev; | ||
69814 | + compat_uptr_t next; | ||
69815 | + | ||
69816 | + compat_uptr_t obj_hash; | ||
69817 | + __u32 obj_hash_size; | ||
69818 | + __u16 pax_flags; | ||
69819 | +}; | ||
69820 | + | ||
69821 | +struct role_allowed_ip_compat { | ||
69822 | + __u32 addr; | ||
69823 | + __u32 netmask; | ||
69824 | + | ||
69825 | + compat_uptr_t prev; | ||
69826 | + compat_uptr_t next; | ||
69827 | +}; | ||
69828 | + | ||
69829 | +struct role_transition_compat { | ||
69830 | + compat_uptr_t rolename; | ||
69831 | + | ||
69832 | + compat_uptr_t prev; | ||
69833 | + compat_uptr_t next; | ||
69834 | +}; | ||
69835 | + | ||
69836 | +struct acl_role_label_compat { | ||
69837 | + compat_uptr_t rolename; | ||
69838 | + uid_t uidgid; | ||
69839 | + __u16 roletype; | ||
69840 | + | ||
69841 | + __u16 auth_attempts; | ||
69842 | + compat_ulong_t expires; | ||
69843 | + | ||
69844 | + compat_uptr_t root_label; | ||
69845 | + compat_uptr_t hash; | ||
69846 | + | ||
69847 | + compat_uptr_t prev; | ||
69848 | + compat_uptr_t next; | ||
69849 | + | ||
69850 | + compat_uptr_t transitions; | ||
69851 | + compat_uptr_t allowed_ips; | ||
69852 | + compat_uptr_t domain_children; | ||
69853 | + __u16 domain_child_num; | ||
69854 | + | ||
69855 | + umode_t umask; | ||
69856 | + | ||
69857 | + compat_uptr_t subj_hash; | ||
69858 | + __u32 subj_hash_size; | ||
69859 | +}; | ||
69860 | + | ||
69861 | +struct user_acl_role_db_compat { | ||
69862 | + compat_uptr_t r_table; | ||
69863 | + __u32 num_pointers; | ||
69864 | + __u32 num_roles; | ||
69865 | + __u32 num_domain_children; | ||
69866 | + __u32 num_subjects; | ||
69867 | + __u32 num_objects; | ||
69868 | +}; | ||
69869 | + | ||
69870 | +struct acl_object_label_compat { | ||
69871 | + compat_uptr_t filename; | ||
69872 | + compat_ino_t inode; | ||
69873 | + __u32 device; | ||
69874 | + __u32 mode; | ||
69875 | + | ||
69876 | + compat_uptr_t nested; | ||
69877 | + compat_uptr_t globbed; | ||
69878 | + | ||
69879 | + compat_uptr_t prev; | ||
69880 | + compat_uptr_t next; | ||
69881 | +}; | ||
69882 | + | ||
69883 | +struct acl_ip_label_compat { | ||
69884 | + compat_uptr_t iface; | ||
69885 | + __u32 addr; | ||
69886 | + __u32 netmask; | ||
69887 | + __u16 low, high; | ||
69888 | + __u8 mode; | ||
69889 | + __u32 type; | ||
69890 | + __u32 proto[8]; | ||
69891 | + | ||
69892 | + compat_uptr_t prev; | ||
69893 | + compat_uptr_t next; | ||
69894 | +}; | ||
69895 | + | ||
69896 | +struct gr_arg_compat { | ||
69897 | + struct user_acl_role_db_compat role_db; | ||
69898 | + unsigned char pw[GR_PW_LEN]; | ||
69899 | + unsigned char salt[GR_SALT_LEN]; | ||
69900 | + unsigned char sum[GR_SHA_LEN]; | ||
69901 | + unsigned char sp_role[GR_SPROLE_LEN]; | ||
69902 | + compat_uptr_t sprole_pws; | ||
69903 | + __u32 segv_device; | ||
69904 | + compat_ino_t segv_inode; | ||
69905 | + uid_t segv_uid; | ||
69906 | + __u16 num_sprole_pws; | ||
69907 | + __u16 mode; | ||
69908 | +}; | ||
69909 | + | ||
69910 | +struct gr_arg_wrapper_compat { | ||
69911 | + compat_uptr_t arg; | ||
69912 | + __u32 version; | ||
69913 | + __u32 size; | ||
69914 | +}; | ||
69915 | + | ||
69916 | +#endif | ||
70127 | diff --git a/include/linux/gralloc.h b/include/linux/gralloc.h | 69917 | diff --git a/include/linux/gralloc.h b/include/linux/gralloc.h |
70128 | new file mode 100644 | 69918 | new file mode 100644 |
70129 | index 0000000..323ecf2 | 69919 | index 0000000..323ecf2 |
@@ -70287,10 +70077,10 @@ index 0000000..be66033 | |||
70287 | +#endif | 70077 | +#endif |
70288 | diff --git a/include/linux/grinternal.h b/include/linux/grinternal.h | 70078 | diff --git a/include/linux/grinternal.h b/include/linux/grinternal.h |
70289 | new file mode 100644 | 70079 | new file mode 100644 |
70290 | index 0000000..12994b5 | 70080 | index 0000000..fd8598b |
70291 | --- /dev/null | 70081 | --- /dev/null |
70292 | +++ b/include/linux/grinternal.h | 70082 | +++ b/include/linux/grinternal.h |
70293 | @@ -0,0 +1,227 @@ | 70083 | @@ -0,0 +1,228 @@ |
70294 | +#ifndef __GRINTERNAL_H | 70084 | +#ifndef __GRINTERNAL_H |
70295 | +#define __GRINTERNAL_H | 70085 | +#define __GRINTERNAL_H |
70296 | + | 70086 | + |
@@ -70366,7 +70156,6 @@ index 0000000..12994b5 | |||
70366 | +extern kgid_t grsec_socket_server_gid; | 70156 | +extern kgid_t grsec_socket_server_gid; |
70367 | +extern kgid_t grsec_audit_gid; | 70157 | +extern kgid_t grsec_audit_gid; |
70368 | +extern int grsec_enable_group; | 70158 | +extern int grsec_enable_group; |
70369 | +extern int grsec_enable_audit_textrel; | ||
70370 | +extern int grsec_enable_log_rwxmaps; | 70159 | +extern int grsec_enable_log_rwxmaps; |
70371 | +extern int grsec_enable_mount; | 70160 | +extern int grsec_enable_mount; |
70372 | +extern int grsec_enable_chdir; | 70161 | +extern int grsec_enable_chdir; |
@@ -70474,7 +70263,8 @@ index 0000000..12994b5 | |||
70474 | + GR_CRASH1, | 70263 | + GR_CRASH1, |
70475 | + GR_CRASH2, | 70264 | + GR_CRASH2, |
70476 | + GR_PSACCT, | 70265 | + GR_PSACCT, |
70477 | + GR_RWXMAP | 70266 | + GR_RWXMAP, |
70267 | + GR_RWXMAPVMA | ||
70478 | +}; | 70268 | +}; |
70479 | + | 70269 | + |
70480 | +#define gr_log_hidden_sysctl(audit, msg, str) gr_log_varargs(audit, msg, GR_SYSCTL_HIDDEN, str) | 70270 | +#define gr_log_hidden_sysctl(audit, msg, str) gr_log_varargs(audit, msg, GR_SYSCTL_HIDDEN, str) |
@@ -70512,6 +70302,7 @@ index 0000000..12994b5 | |||
70512 | +#define gr_log_crash2(audit, msg, task, ulong1) gr_log_varargs(audit, msg, GR_CRASH2, task, ulong1) | 70302 | +#define gr_log_crash2(audit, msg, task, ulong1) gr_log_varargs(audit, msg, GR_CRASH2, task, ulong1) |
70513 | +#define gr_log_procacct(audit, msg, task, num1, num2, num3, num4, num5, num6, num7, num8, num9) gr_log_varargs(audit, msg, GR_PSACCT, task, num1, num2, num3, num4, num5, num6, num7, num8, num9) | 70303 | +#define gr_log_procacct(audit, msg, task, num1, num2, num3, num4, num5, num6, num7, num8, num9) gr_log_varargs(audit, msg, GR_PSACCT, task, num1, num2, num3, num4, num5, num6, num7, num8, num9) |
70514 | +#define gr_log_rwxmap(audit, msg, str) gr_log_varargs(audit, msg, GR_RWXMAP, str) | 70304 | +#define gr_log_rwxmap(audit, msg, str) gr_log_varargs(audit, msg, GR_RWXMAP, str) |
70305 | +#define gr_log_rwxmap_vma(audit, msg, str) gr_log_varargs(audit, msg, GR_RWXMAPVMA, str) | ||
70515 | + | 70306 | + |
70516 | +void gr_log_varargs(int audit, const char *msg, int argtypes, ...); | 70307 | +void gr_log_varargs(int audit, const char *msg, int argtypes, ...); |
70517 | + | 70308 | + |
@@ -70520,10 +70311,10 @@ index 0000000..12994b5 | |||
70520 | +#endif | 70311 | +#endif |
70521 | diff --git a/include/linux/grmsg.h b/include/linux/grmsg.h | 70312 | diff --git a/include/linux/grmsg.h b/include/linux/grmsg.h |
70522 | new file mode 100644 | 70313 | new file mode 100644 |
70523 | index 0000000..2f159b5 | 70314 | index 0000000..a4396b5 |
70524 | --- /dev/null | 70315 | --- /dev/null |
70525 | +++ b/include/linux/grmsg.h | 70316 | +++ b/include/linux/grmsg.h |
70526 | @@ -0,0 +1,112 @@ | 70317 | @@ -0,0 +1,113 @@ |
70527 | +#define DEFAULTSECMSG "%.256s[%.16s:%d] uid/euid:%u/%u gid/egid:%u/%u, parent %.256s[%.16s:%d] uid/euid:%u/%u gid/egid:%u/%u" | 70318 | +#define DEFAULTSECMSG "%.256s[%.16s:%d] uid/euid:%u/%u gid/egid:%u/%u, parent %.256s[%.16s:%d] uid/euid:%u/%u gid/egid:%u/%u" |
70528 | +#define GR_ACL_PROCACCT_MSG "%.256s[%.16s:%d] IP:%pI4 TTY:%.64s uid/euid:%u/%u gid/egid:%u/%u run time:[%ud %uh %um %us] cpu time:[%ud %uh %um %us] %s with exit code %ld, parent %.256s[%.16s:%d] IP:%pI4 TTY:%.64s uid/euid:%u/%u gid/egid:%u/%u" | 70319 | +#define GR_ACL_PROCACCT_MSG "%.256s[%.16s:%d] IP:%pI4 TTY:%.64s uid/euid:%u/%u gid/egid:%u/%u run time:[%ud %uh %um %us] cpu time:[%ud %uh %um %us] %s with exit code %ld, parent %.256s[%.16s:%d] IP:%pI4 TTY:%.64s uid/euid:%u/%u gid/egid:%u/%u" |
70529 | +#define GR_PTRACE_ACL_MSG "denied ptrace of %.950s(%.16s:%d) by " | 70320 | +#define GR_PTRACE_ACL_MSG "denied ptrace of %.950s(%.16s:%d) by " |
@@ -70627,7 +70418,8 @@ index 0000000..2f159b5 | |||
70627 | +#define GR_RESOURCE_MSG "denied resource overstep by requesting %lu for %.16s against limit %lu for " | 70418 | +#define GR_RESOURCE_MSG "denied resource overstep by requesting %lu for %.16s against limit %lu for " |
70628 | +#define GR_RWXMMAP_MSG "denied RWX mmap of %.950s by " | 70419 | +#define GR_RWXMMAP_MSG "denied RWX mmap of %.950s by " |
70629 | +#define GR_RWXMPROTECT_MSG "denied RWX mprotect of %.950s by " | 70420 | +#define GR_RWXMPROTECT_MSG "denied RWX mprotect of %.950s by " |
70630 | +#define GR_TEXTREL_AUDIT_MSG "text relocation in %s, VMA:0x%08lx 0x%08lx by " | 70421 | +#define GR_TEXTREL_AUDIT_MSG "denied text relocation in %.950s, VMA:0x%08lx 0x%08lx by " |
70422 | +#define GR_PTGNUSTACK_MSG "denied marking stack executable as requested by PT_GNU_STACK marking in %.950s by " | ||
70631 | +#define GR_VM86_MSG "denied use of vm86 by " | 70423 | +#define GR_VM86_MSG "denied use of vm86 by " |
70632 | +#define GR_PTRACE_AUDIT_MSG "process %.950s(%.16s:%d) attached to via ptrace by " | 70424 | +#define GR_PTRACE_AUDIT_MSG "process %.950s(%.16s:%d) attached to via ptrace by " |
70633 | +#define GR_PTRACE_READEXEC_MSG "denied ptrace of unreadable binary %.950s by " | 70425 | +#define GR_PTRACE_READEXEC_MSG "denied ptrace of unreadable binary %.950s by " |
@@ -70638,10 +70430,10 @@ index 0000000..2f159b5 | |||
70638 | +#define GR_BRUTE_SUID_MSG "bruteforce prevention initiated due to crash of %.950s against uid %u, banning suid/sgid execs for %u minutes. Please investigate the crash report for " | 70430 | +#define GR_BRUTE_SUID_MSG "bruteforce prevention initiated due to crash of %.950s against uid %u, banning suid/sgid execs for %u minutes. Please investigate the crash report for " |
70639 | diff --git a/include/linux/grsecurity.h b/include/linux/grsecurity.h | 70431 | diff --git a/include/linux/grsecurity.h b/include/linux/grsecurity.h |
70640 | new file mode 100644 | 70432 | new file mode 100644 |
70641 | index 0000000..d957f6d | 70433 | index 0000000..3676b0b |
70642 | --- /dev/null | 70434 | --- /dev/null |
70643 | +++ b/include/linux/grsecurity.h | 70435 | +++ b/include/linux/grsecurity.h |
70644 | @@ -0,0 +1,241 @@ | 70436 | @@ -0,0 +1,242 @@ |
70645 | +#ifndef GR_SECURITY_H | 70437 | +#ifndef GR_SECURITY_H |
70646 | +#define GR_SECURITY_H | 70438 | +#define GR_SECURITY_H |
70647 | +#include <linux/fs.h> | 70439 | +#include <linux/fs.h> |
@@ -70719,8 +70511,9 @@ index 0000000..d957f6d | |||
70719 | +void gr_log_unmount(const char *devname, const int retval); | 70511 | +void gr_log_unmount(const char *devname, const int retval); |
70720 | +void gr_log_mount(const char *from, const char *to, const int retval); | 70512 | +void gr_log_mount(const char *from, const char *to, const int retval); |
70721 | +void gr_log_textrel(struct vm_area_struct *vma); | 70513 | +void gr_log_textrel(struct vm_area_struct *vma); |
70514 | +void gr_log_ptgnustack(struct file *file); | ||
70722 | +void gr_log_rwxmmap(struct file *file); | 70515 | +void gr_log_rwxmmap(struct file *file); |
70723 | +void gr_log_rwxmprotect(struct file *file); | 70516 | +void gr_log_rwxmprotect(struct vm_area_struct *vma); |
70724 | + | 70517 | + |
70725 | +int gr_handle_follow_link(const struct inode *parent, | 70518 | +int gr_handle_follow_link(const struct inode *parent, |
70726 | + const struct inode *inode, | 70519 | + const struct inode *inode, |
@@ -70955,17 +70748,17 @@ index 1c7b89a..7f52502 100644 | |||
70955 | container_of(_dev_attr, struct sensor_device_attribute_2, dev_attr) | 70748 | container_of(_dev_attr, struct sensor_device_attribute_2, dev_attr) |
70956 | 70749 | ||
70957 | diff --git a/include/linux/i2c.h b/include/linux/i2c.h | 70750 | diff --git a/include/linux/i2c.h b/include/linux/i2c.h |
70958 | index d0c4db7..61b3577 100644 | 70751 | index e988fa9..ff9f17e 100644 |
70959 | --- a/include/linux/i2c.h | 70752 | --- a/include/linux/i2c.h |
70960 | +++ b/include/linux/i2c.h | 70753 | +++ b/include/linux/i2c.h |
70961 | @@ -369,6 +369,7 @@ struct i2c_algorithm { | 70754 | @@ -366,6 +366,7 @@ struct i2c_algorithm { |
70962 | /* To determine what the adapter supports */ | 70755 | /* To determine what the adapter supports */ |
70963 | u32 (*functionality) (struct i2c_adapter *); | 70756 | u32 (*functionality) (struct i2c_adapter *); |
70964 | }; | 70757 | }; |
70965 | +typedef struct i2c_algorithm __no_const i2c_algorithm_no_const; | 70758 | +typedef struct i2c_algorithm __no_const i2c_algorithm_no_const; |
70966 | 70759 | ||
70967 | /* | 70760 | /** |
70968 | * i2c_adapter is the structure used to identify a physical i2c bus along | 70761 | * struct i2c_bus_recovery_info - I2C bus recovery information |
70969 | diff --git a/include/linux/i2o.h b/include/linux/i2o.h | 70762 | diff --git a/include/linux/i2o.h b/include/linux/i2o.h |
70970 | index d23c3c2..eb63c81 100644 | 70763 | index d23c3c2..eb63c81 100644 |
70971 | --- a/include/linux/i2o.h | 70764 | --- a/include/linux/i2o.h |
@@ -70992,21 +70785,6 @@ index aff7ad8..3942bbd 100644 | |||
70992 | 70785 | ||
70993 | extern int register_pppox_proto(int proto_num, const struct pppox_proto *pp); | 70786 | extern int register_pppox_proto(int proto_num, const struct pppox_proto *pp); |
70994 | extern void unregister_pppox_proto(int proto_num); | 70787 | extern void unregister_pppox_proto(int proto_num); |
70995 | diff --git a/include/linux/if_vlan.h b/include/linux/if_vlan.h | ||
70996 | index 218a3b6..ee586cb 100644 | ||
70997 | --- a/include/linux/if_vlan.h | ||
70998 | +++ b/include/linux/if_vlan.h | ||
70999 | @@ -79,9 +79,8 @@ static inline int is_vlan_dev(struct net_device *dev) | ||
71000 | } | ||
71001 | |||
71002 | #define vlan_tx_tag_present(__skb) ((__skb)->vlan_tci & VLAN_TAG_PRESENT) | ||
71003 | -#define vlan_tx_nonzero_tag_present(__skb) \ | ||
71004 | - (vlan_tx_tag_present(__skb) && ((__skb)->vlan_tci & VLAN_VID_MASK)) | ||
71005 | #define vlan_tx_tag_get(__skb) ((__skb)->vlan_tci & ~VLAN_TAG_PRESENT) | ||
71006 | +#define vlan_tx_tag_get_id(__skb) ((__skb)->vlan_tci & VLAN_VID_MASK) | ||
71007 | |||
71008 | #if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE) | ||
71009 | |||
71010 | diff --git a/include/linux/init.h b/include/linux/init.h | 70788 | diff --git a/include/linux/init.h b/include/linux/init.h |
71011 | index 8618147..0821126 100644 | 70789 | index 8618147..0821126 100644 |
71012 | --- a/include/linux/init.h | 70790 | --- a/include/linux/init.h |
@@ -71122,7 +70900,7 @@ index 5fa5afe..ac55b25 100644 | |||
71122 | extern void __raise_softirq_irqoff(unsigned int nr); | 70900 | extern void __raise_softirq_irqoff(unsigned int nr); |
71123 | 70901 | ||
71124 | diff --git a/include/linux/iommu.h b/include/linux/iommu.h | 70902 | diff --git a/include/linux/iommu.h b/include/linux/iommu.h |
71125 | index ba3b8a9..7e14ed8 100644 | 70903 | index 3aeb730..2177f39 100644 |
71126 | --- a/include/linux/iommu.h | 70904 | --- a/include/linux/iommu.h |
71127 | +++ b/include/linux/iommu.h | 70905 | +++ b/include/linux/iommu.h |
71128 | @@ -113,7 +113,7 @@ struct iommu_ops { | 70906 | @@ -113,7 +113,7 @@ struct iommu_ops { |
@@ -71135,7 +70913,7 @@ index ba3b8a9..7e14ed8 100644 | |||
71135 | #define IOMMU_GROUP_NOTIFY_ADD_DEVICE 1 /* Device added */ | 70913 | #define IOMMU_GROUP_NOTIFY_ADD_DEVICE 1 /* Device added */ |
71136 | #define IOMMU_GROUP_NOTIFY_DEL_DEVICE 2 /* Pre Device removed */ | 70914 | #define IOMMU_GROUP_NOTIFY_DEL_DEVICE 2 /* Pre Device removed */ |
71137 | diff --git a/include/linux/ioport.h b/include/linux/ioport.h | 70915 | diff --git a/include/linux/ioport.h b/include/linux/ioport.h |
71138 | index 85ac9b9b..e5759ab 100644 | 70916 | index 89b7c24..382af74 100644 |
71139 | --- a/include/linux/ioport.h | 70917 | --- a/include/linux/ioport.h |
71140 | +++ b/include/linux/ioport.h | 70918 | +++ b/include/linux/ioport.h |
71141 | @@ -161,7 +161,7 @@ struct resource *lookup_resource(struct resource *root, resource_size_t start); | 70919 | @@ -161,7 +161,7 @@ struct resource *lookup_resource(struct resource *root, resource_size_t start); |
@@ -71162,7 +70940,7 @@ index bc4e066..50468a9 100644 | |||
71162 | /* | 70940 | /* |
71163 | * irq_chip specific flags | 70941 | * irq_chip specific flags |
71164 | diff --git a/include/linux/irqchip/arm-gic.h b/include/linux/irqchip/arm-gic.h | 70942 | diff --git a/include/linux/irqchip/arm-gic.h b/include/linux/irqchip/arm-gic.h |
71165 | index 3fd8e42..a73e966 100644 | 70943 | index 3e203eb..3fe68d0 100644 |
71166 | --- a/include/linux/irqchip/arm-gic.h | 70944 | --- a/include/linux/irqchip/arm-gic.h |
71167 | +++ b/include/linux/irqchip/arm-gic.h | 70945 | +++ b/include/linux/irqchip/arm-gic.h |
71168 | @@ -59,9 +59,11 @@ | 70946 | @@ -59,9 +59,11 @@ |
@@ -71255,7 +71033,7 @@ index c6e091b..a940adf 100644 | |||
71255 | extern struct kgdb_arch arch_kgdb_ops; | 71033 | extern struct kgdb_arch arch_kgdb_ops; |
71256 | 71034 | ||
71257 | diff --git a/include/linux/kmod.h b/include/linux/kmod.h | 71035 | diff --git a/include/linux/kmod.h b/include/linux/kmod.h |
71258 | index 5398d58..5883a34 100644 | 71036 | index 0555cc6..b16a7a4 100644 |
71259 | --- a/include/linux/kmod.h | 71037 | --- a/include/linux/kmod.h |
71260 | +++ b/include/linux/kmod.h | 71038 | +++ b/include/linux/kmod.h |
71261 | @@ -34,6 +34,8 @@ extern char modprobe_path[]; /* for sysctl */ | 71039 | @@ -34,6 +34,8 @@ extern char modprobe_path[]; /* for sysctl */ |
@@ -71302,10 +71080,10 @@ index f66b065..c2c29b4 100644 | |||
71302 | int kobj_ns_type_register(const struct kobj_ns_type_operations *ops); | 71080 | int kobj_ns_type_register(const struct kobj_ns_type_operations *ops); |
71303 | int kobj_ns_type_registered(enum kobj_ns_type type); | 71081 | int kobj_ns_type_registered(enum kobj_ns_type type); |
71304 | diff --git a/include/linux/kref.h b/include/linux/kref.h | 71082 | diff --git a/include/linux/kref.h b/include/linux/kref.h |
71305 | index 7419c02..aa2f02d 100644 | 71083 | index 484604d..0f6c5b6 100644 |
71306 | --- a/include/linux/kref.h | 71084 | --- a/include/linux/kref.h |
71307 | +++ b/include/linux/kref.h | 71085 | +++ b/include/linux/kref.h |
71308 | @@ -65,7 +65,7 @@ static inline void kref_get(struct kref *kref) | 71086 | @@ -68,7 +68,7 @@ static inline void kref_get(struct kref *kref) |
71309 | static inline int kref_sub(struct kref *kref, unsigned int count, | 71087 | static inline int kref_sub(struct kref *kref, unsigned int count, |
71310 | void (*release)(struct kref *kref)) | 71088 | void (*release)(struct kref *kref)) |
71311 | { | 71089 | { |
@@ -71315,19 +71093,19 @@ index 7419c02..aa2f02d 100644 | |||
71315 | if (atomic_sub_and_test((int) count, &kref->refcount)) { | 71093 | if (atomic_sub_and_test((int) count, &kref->refcount)) { |
71316 | release(kref); | 71094 | release(kref); |
71317 | diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h | 71095 | diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h |
71318 | index c139582..0b5b102 100644 | 71096 | index 8db53cf..c21121d 100644 |
71319 | --- a/include/linux/kvm_host.h | 71097 | --- a/include/linux/kvm_host.h |
71320 | +++ b/include/linux/kvm_host.h | 71098 | +++ b/include/linux/kvm_host.h |
71321 | @@ -424,7 +424,7 @@ void kvm_vcpu_uninit(struct kvm_vcpu *vcpu); | 71099 | @@ -444,7 +444,7 @@ static inline void kvm_irqfd_exit(void) |
71322 | int __must_check vcpu_load(struct kvm_vcpu *vcpu); | 71100 | { |
71323 | void vcpu_put(struct kvm_vcpu *vcpu); | 71101 | } |
71324 | 71102 | #endif | |
71325 | -int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, | 71103 | -int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, |
71326 | +int kvm_init(const void *opaque, unsigned vcpu_size, unsigned vcpu_align, | 71104 | +int kvm_init(const void *opaque, unsigned vcpu_size, unsigned vcpu_align, |
71327 | struct module *module); | 71105 | struct module *module); |
71328 | void kvm_exit(void); | 71106 | void kvm_exit(void); |
71329 | 71107 | ||
71330 | @@ -582,7 +582,7 @@ int kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu, | 71108 | @@ -616,7 +616,7 @@ int kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu, |
71331 | struct kvm_guest_debug *dbg); | 71109 | struct kvm_guest_debug *dbg); |
71332 | int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run); | 71110 | int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run); |
71333 | 71111 | ||
@@ -71350,7 +71128,7 @@ index eae7a05..2cdd875 100644 | |||
71350 | struct ata_port_info { | 71128 | struct ata_port_info { |
71351 | unsigned long flags; | 71129 | unsigned long flags; |
71352 | diff --git a/include/linux/list.h b/include/linux/list.h | 71130 | diff --git a/include/linux/list.h b/include/linux/list.h |
71353 | index 6a1f8df..eaec1ff 100644 | 71131 | index b83e565..baa6c1d 100644 |
71354 | --- a/include/linux/list.h | 71132 | --- a/include/linux/list.h |
71355 | +++ b/include/linux/list.h | 71133 | +++ b/include/linux/list.h |
71356 | @@ -112,6 +112,19 @@ extern void __list_del_entry(struct list_head *entry); | 71134 | @@ -112,6 +112,19 @@ extern void __list_del_entry(struct list_head *entry); |
@@ -71383,10 +71161,10 @@ index 6a1f8df..eaec1ff 100644 | |||
71383 | * list_move - delete from one list and add as another's head | 71161 | * list_move - delete from one list and add as another's head |
71384 | * @list: the entry to move | 71162 | * @list: the entry to move |
71385 | diff --git a/include/linux/math64.h b/include/linux/math64.h | 71163 | diff --git a/include/linux/math64.h b/include/linux/math64.h |
71386 | index b8ba855..0148090 100644 | 71164 | index 2913b86..4209244 100644 |
71387 | --- a/include/linux/math64.h | 71165 | --- a/include/linux/math64.h |
71388 | +++ b/include/linux/math64.h | 71166 | +++ b/include/linux/math64.h |
71389 | @@ -14,7 +14,7 @@ | 71167 | @@ -15,7 +15,7 @@ |
71390 | * This is commonly provided by 32bit archs to provide an optimized 64bit | 71168 | * This is commonly provided by 32bit archs to provide an optimized 64bit |
71391 | * divide. | 71169 | * divide. |
71392 | */ | 71170 | */ |
@@ -71395,8 +71173,8 @@ index b8ba855..0148090 100644 | |||
71395 | { | 71173 | { |
71396 | *remainder = dividend % divisor; | 71174 | *remainder = dividend % divisor; |
71397 | return dividend / divisor; | 71175 | return dividend / divisor; |
71398 | @@ -50,7 +50,7 @@ static inline s64 div64_s64(s64 dividend, s64 divisor) | 71176 | @@ -52,7 +52,7 @@ static inline s64 div64_s64(s64 dividend, s64 divisor) |
71399 | #define div64_long(x,y) div_s64((x),(y)) | 71177 | #define div64_ul(x, y) div_u64((x), (y)) |
71400 | 71178 | ||
71401 | #ifndef div_u64_rem | 71179 | #ifndef div_u64_rem |
71402 | -static inline u64 div_u64_rem(u64 dividend, u32 divisor, u32 *remainder) | 71180 | -static inline u64 div_u64_rem(u64 dividend, u32 divisor, u32 *remainder) |
@@ -71404,7 +71182,7 @@ index b8ba855..0148090 100644 | |||
71404 | { | 71182 | { |
71405 | *remainder = do_div(dividend, divisor); | 71183 | *remainder = do_div(dividend, divisor); |
71406 | return dividend; | 71184 | return dividend; |
71407 | @@ -79,7 +79,7 @@ extern s64 div64_s64(s64 dividend, s64 divisor); | 71185 | @@ -81,7 +81,7 @@ extern s64 div64_s64(s64 dividend, s64 divisor); |
71408 | * divide. | 71186 | * divide. |
71409 | */ | 71187 | */ |
71410 | #ifndef div_u64 | 71188 | #ifndef div_u64 |
@@ -71414,10 +71192,10 @@ index b8ba855..0148090 100644 | |||
71414 | u32 remainder; | 71192 | u32 remainder; |
71415 | return div_u64_rem(dividend, divisor, &remainder); | 71193 | return div_u64_rem(dividend, divisor, &remainder); |
71416 | diff --git a/include/linux/mm.h b/include/linux/mm.h | 71194 | diff --git a/include/linux/mm.h b/include/linux/mm.h |
71417 | index e2091b8..3c7b38c 100644 | 71195 | index e0c8528..bcf0c29 100644 |
71418 | --- a/include/linux/mm.h | 71196 | --- a/include/linux/mm.h |
71419 | +++ b/include/linux/mm.h | 71197 | +++ b/include/linux/mm.h |
71420 | @@ -101,6 +101,11 @@ extern unsigned int kobjsize(const void *objp); | 71198 | @@ -104,6 +104,11 @@ extern unsigned int kobjsize(const void *objp); |
71421 | #define VM_HUGETLB 0x00400000 /* Huge TLB Page VM */ | 71199 | #define VM_HUGETLB 0x00400000 /* Huge TLB Page VM */ |
71422 | #define VM_NONLINEAR 0x00800000 /* Is non-linear (remap_file_pages) */ | 71200 | #define VM_NONLINEAR 0x00800000 /* Is non-linear (remap_file_pages) */ |
71423 | #define VM_ARCH_1 0x01000000 /* Architecture-specific flag */ | 71201 | #define VM_ARCH_1 0x01000000 /* Architecture-specific flag */ |
@@ -71429,7 +71207,7 @@ index e2091b8..3c7b38c 100644 | |||
71429 | #define VM_DONTDUMP 0x04000000 /* Do not include in the core dump */ | 71207 | #define VM_DONTDUMP 0x04000000 /* Do not include in the core dump */ |
71430 | 71208 | ||
71431 | #define VM_MIXEDMAP 0x10000000 /* Can contain "struct page" and pure PFN pages */ | 71209 | #define VM_MIXEDMAP 0x10000000 /* Can contain "struct page" and pure PFN pages */ |
71432 | @@ -202,8 +207,8 @@ struct vm_operations_struct { | 71210 | @@ -205,8 +210,8 @@ struct vm_operations_struct { |
71433 | /* called by access_process_vm when get_user_pages() fails, typically | 71211 | /* called by access_process_vm when get_user_pages() fails, typically |
71434 | * for use by special VMAs that can switch between memory and hardware | 71212 | * for use by special VMAs that can switch between memory and hardware |
71435 | */ | 71213 | */ |
@@ -71440,7 +71218,7 @@ index e2091b8..3c7b38c 100644 | |||
71440 | #ifdef CONFIG_NUMA | 71218 | #ifdef CONFIG_NUMA |
71441 | /* | 71219 | /* |
71442 | * set_policy() op must add a reference to any non-NULL @new mempolicy | 71220 | * set_policy() op must add a reference to any non-NULL @new mempolicy |
71443 | @@ -233,6 +238,7 @@ struct vm_operations_struct { | 71221 | @@ -236,6 +241,7 @@ struct vm_operations_struct { |
71444 | int (*remap_pages)(struct vm_area_struct *vma, unsigned long addr, | 71222 | int (*remap_pages)(struct vm_area_struct *vma, unsigned long addr, |
71445 | unsigned long size, pgoff_t pgoff); | 71223 | unsigned long size, pgoff_t pgoff); |
71446 | }; | 71224 | }; |
@@ -71448,7 +71226,7 @@ index e2091b8..3c7b38c 100644 | |||
71448 | 71226 | ||
71449 | struct mmu_gather; | 71227 | struct mmu_gather; |
71450 | struct inode; | 71228 | struct inode; |
71451 | @@ -970,8 +976,8 @@ int follow_pfn(struct vm_area_struct *vma, unsigned long address, | 71229 | @@ -980,8 +986,8 @@ int follow_pfn(struct vm_area_struct *vma, unsigned long address, |
71452 | unsigned long *pfn); | 71230 | unsigned long *pfn); |
71453 | int follow_phys(struct vm_area_struct *vma, unsigned long address, | 71231 | int follow_phys(struct vm_area_struct *vma, unsigned long address, |
71454 | unsigned int flags, unsigned long *prot, resource_size_t *phys); | 71232 | unsigned int flags, unsigned long *prot, resource_size_t *phys); |
@@ -71459,7 +71237,7 @@ index e2091b8..3c7b38c 100644 | |||
71459 | 71237 | ||
71460 | static inline void unmap_shared_mapping_range(struct address_space *mapping, | 71238 | static inline void unmap_shared_mapping_range(struct address_space *mapping, |
71461 | loff_t const holebegin, loff_t const holelen) | 71239 | loff_t const holebegin, loff_t const holelen) |
71462 | @@ -1010,9 +1016,9 @@ static inline int fixup_user_fault(struct task_struct *tsk, | 71240 | @@ -1020,9 +1026,9 @@ static inline int fixup_user_fault(struct task_struct *tsk, |
71463 | } | 71241 | } |
71464 | #endif | 71242 | #endif |
71465 | 71243 | ||
@@ -71472,7 +71250,7 @@ index e2091b8..3c7b38c 100644 | |||
71472 | 71250 | ||
71473 | long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm, | 71251 | long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm, |
71474 | unsigned long start, unsigned long nr_pages, | 71252 | unsigned long start, unsigned long nr_pages, |
71475 | @@ -1043,34 +1049,6 @@ int set_page_dirty(struct page *page); | 71253 | @@ -1053,34 +1059,6 @@ int set_page_dirty(struct page *page); |
71476 | int set_page_dirty_lock(struct page *page); | 71254 | int set_page_dirty_lock(struct page *page); |
71477 | int clear_page_dirty_for_io(struct page *page); | 71255 | int clear_page_dirty_for_io(struct page *page); |
71478 | 71256 | ||
@@ -71507,7 +71285,7 @@ index e2091b8..3c7b38c 100644 | |||
71507 | extern pid_t | 71285 | extern pid_t |
71508 | vm_is_stack(struct task_struct *task, struct vm_area_struct *vma, int in_group); | 71286 | vm_is_stack(struct task_struct *task, struct vm_area_struct *vma, int in_group); |
71509 | 71287 | ||
71510 | @@ -1173,6 +1151,15 @@ static inline void sync_mm_rss(struct mm_struct *mm) | 71288 | @@ -1180,6 +1158,15 @@ static inline void sync_mm_rss(struct mm_struct *mm) |
71511 | } | 71289 | } |
71512 | #endif | 71290 | #endif |
71513 | 71291 | ||
@@ -71523,7 +71301,7 @@ index e2091b8..3c7b38c 100644 | |||
71523 | int vma_wants_writenotify(struct vm_area_struct *vma); | 71301 | int vma_wants_writenotify(struct vm_area_struct *vma); |
71524 | 71302 | ||
71525 | extern pte_t *__get_locked_pte(struct mm_struct *mm, unsigned long addr, | 71303 | extern pte_t *__get_locked_pte(struct mm_struct *mm, unsigned long addr, |
71526 | @@ -1191,8 +1178,15 @@ static inline int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, | 71304 | @@ -1198,8 +1185,15 @@ static inline int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, |
71527 | { | 71305 | { |
71528 | return 0; | 71306 | return 0; |
71529 | } | 71307 | } |
@@ -71539,7 +71317,7 @@ index e2091b8..3c7b38c 100644 | |||
71539 | #endif | 71317 | #endif |
71540 | 71318 | ||
71541 | #ifdef __PAGETABLE_PMD_FOLDED | 71319 | #ifdef __PAGETABLE_PMD_FOLDED |
71542 | @@ -1201,8 +1195,15 @@ static inline int __pmd_alloc(struct mm_struct *mm, pud_t *pud, | 71320 | @@ -1208,8 +1202,15 @@ static inline int __pmd_alloc(struct mm_struct *mm, pud_t *pud, |
71543 | { | 71321 | { |
71544 | return 0; | 71322 | return 0; |
71545 | } | 71323 | } |
@@ -71555,7 +71333,7 @@ index e2091b8..3c7b38c 100644 | |||
71555 | #endif | 71333 | #endif |
71556 | 71334 | ||
71557 | int __pte_alloc(struct mm_struct *mm, struct vm_area_struct *vma, | 71335 | int __pte_alloc(struct mm_struct *mm, struct vm_area_struct *vma, |
71558 | @@ -1220,11 +1221,23 @@ static inline pud_t *pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long a | 71336 | @@ -1227,11 +1228,23 @@ static inline pud_t *pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long a |
71559 | NULL: pud_offset(pgd, address); | 71337 | NULL: pud_offset(pgd, address); |
71560 | } | 71338 | } |
71561 | 71339 | ||
@@ -71579,7 +71357,7 @@ index e2091b8..3c7b38c 100644 | |||
71579 | #endif /* CONFIG_MMU && !__ARCH_HAS_4LEVEL_HACK */ | 71357 | #endif /* CONFIG_MMU && !__ARCH_HAS_4LEVEL_HACK */ |
71580 | 71358 | ||
71581 | #if USE_SPLIT_PTLOCKS | 71359 | #if USE_SPLIT_PTLOCKS |
71582 | @@ -1455,6 +1468,7 @@ extern unsigned long do_mmap_pgoff(struct file *file, unsigned long addr, | 71360 | @@ -1517,6 +1530,7 @@ extern unsigned long do_mmap_pgoff(struct file *file, unsigned long addr, |
71583 | unsigned long len, unsigned long prot, unsigned long flags, | 71361 | unsigned long len, unsigned long prot, unsigned long flags, |
71584 | unsigned long pgoff, unsigned long *populate); | 71362 | unsigned long pgoff, unsigned long *populate); |
71585 | extern int do_munmap(struct mm_struct *, unsigned long, size_t); | 71363 | extern int do_munmap(struct mm_struct *, unsigned long, size_t); |
@@ -71587,7 +71365,7 @@ index e2091b8..3c7b38c 100644 | |||
71587 | 71365 | ||
71588 | #ifdef CONFIG_MMU | 71366 | #ifdef CONFIG_MMU |
71589 | extern int __mm_populate(unsigned long addr, unsigned long len, | 71367 | extern int __mm_populate(unsigned long addr, unsigned long len, |
71590 | @@ -1483,10 +1497,11 @@ struct vm_unmapped_area_info { | 71368 | @@ -1545,10 +1559,11 @@ struct vm_unmapped_area_info { |
71591 | unsigned long high_limit; | 71369 | unsigned long high_limit; |
71592 | unsigned long align_mask; | 71370 | unsigned long align_mask; |
71593 | unsigned long align_offset; | 71371 | unsigned long align_offset; |
@@ -71601,7 +71379,7 @@ index e2091b8..3c7b38c 100644 | |||
71601 | 71379 | ||
71602 | /* | 71380 | /* |
71603 | * Search for an unmapped address range. | 71381 | * Search for an unmapped address range. |
71604 | @@ -1498,7 +1513,7 @@ extern unsigned long unmapped_area_topdown(struct vm_unmapped_area_info *info); | 71382 | @@ -1560,7 +1575,7 @@ extern unsigned long unmapped_area_topdown(struct vm_unmapped_area_info *info); |
71605 | * - satisfies (begin_addr & align_mask) == (align_offset & align_mask) | 71383 | * - satisfies (begin_addr & align_mask) == (align_offset & align_mask) |
71606 | */ | 71384 | */ |
71607 | static inline unsigned long | 71385 | static inline unsigned long |
@@ -71610,7 +71388,7 @@ index e2091b8..3c7b38c 100644 | |||
71610 | { | 71388 | { |
71611 | if (!(info->flags & VM_UNMAPPED_AREA_TOPDOWN)) | 71389 | if (!(info->flags & VM_UNMAPPED_AREA_TOPDOWN)) |
71612 | return unmapped_area(info); | 71390 | return unmapped_area(info); |
71613 | @@ -1561,6 +1576,10 @@ extern struct vm_area_struct * find_vma(struct mm_struct * mm, unsigned long add | 71391 | @@ -1623,6 +1638,10 @@ extern struct vm_area_struct * find_vma(struct mm_struct * mm, unsigned long add |
71614 | extern struct vm_area_struct * find_vma_prev(struct mm_struct * mm, unsigned long addr, | 71392 | extern struct vm_area_struct * find_vma_prev(struct mm_struct * mm, unsigned long addr, |
71615 | struct vm_area_struct **pprev); | 71393 | struct vm_area_struct **pprev); |
71616 | 71394 | ||
@@ -71621,7 +71399,7 @@ index e2091b8..3c7b38c 100644 | |||
71621 | /* Look up the first VMA which intersects the interval start_addr..end_addr-1, | 71399 | /* Look up the first VMA which intersects the interval start_addr..end_addr-1, |
71622 | NULL if none. Assume start_addr < end_addr. */ | 71400 | NULL if none. Assume start_addr < end_addr. */ |
71623 | static inline struct vm_area_struct * find_vma_intersection(struct mm_struct * mm, unsigned long start_addr, unsigned long end_addr) | 71401 | static inline struct vm_area_struct * find_vma_intersection(struct mm_struct * mm, unsigned long start_addr, unsigned long end_addr) |
71624 | @@ -1589,15 +1608,6 @@ static inline struct vm_area_struct *find_exact_vma(struct mm_struct *mm, | 71402 | @@ -1651,15 +1670,6 @@ static inline struct vm_area_struct *find_exact_vma(struct mm_struct *mm, |
71625 | return vma; | 71403 | return vma; |
71626 | } | 71404 | } |
71627 | 71405 | ||
@@ -71637,7 +71415,7 @@ index e2091b8..3c7b38c 100644 | |||
71637 | #ifdef CONFIG_ARCH_USES_NUMA_PROT_NONE | 71415 | #ifdef CONFIG_ARCH_USES_NUMA_PROT_NONE |
71638 | unsigned long change_prot_numa(struct vm_area_struct *vma, | 71416 | unsigned long change_prot_numa(struct vm_area_struct *vma, |
71639 | unsigned long start, unsigned long end); | 71417 | unsigned long start, unsigned long end); |
71640 | @@ -1649,6 +1659,11 @@ void vm_stat_account(struct mm_struct *, unsigned long, struct file *, long); | 71418 | @@ -1711,6 +1721,11 @@ void vm_stat_account(struct mm_struct *, unsigned long, struct file *, long); |
71641 | static inline void vm_stat_account(struct mm_struct *mm, | 71419 | static inline void vm_stat_account(struct mm_struct *mm, |
71642 | unsigned long flags, struct file *file, long pages) | 71420 | unsigned long flags, struct file *file, long pages) |
71643 | { | 71421 | { |
@@ -71649,7 +71427,7 @@ index e2091b8..3c7b38c 100644 | |||
71649 | mm->total_vm += pages; | 71427 | mm->total_vm += pages; |
71650 | } | 71428 | } |
71651 | #endif /* CONFIG_PROC_FS */ | 71429 | #endif /* CONFIG_PROC_FS */ |
71652 | @@ -1725,7 +1740,7 @@ extern int unpoison_memory(unsigned long pfn); | 71430 | @@ -1791,7 +1806,7 @@ extern int unpoison_memory(unsigned long pfn); |
71653 | extern int sysctl_memory_failure_early_kill; | 71431 | extern int sysctl_memory_failure_early_kill; |
71654 | extern int sysctl_memory_failure_recovery; | 71432 | extern int sysctl_memory_failure_recovery; |
71655 | extern void shake_page(struct page *p, int access); | 71433 | extern void shake_page(struct page *p, int access); |
@@ -71658,9 +71436,9 @@ index e2091b8..3c7b38c 100644 | |||
71658 | extern int soft_offline_page(struct page *page, int flags); | 71436 | extern int soft_offline_page(struct page *page, int flags); |
71659 | 71437 | ||
71660 | extern void dump_page(struct page *page); | 71438 | extern void dump_page(struct page *page); |
71661 | @@ -1756,5 +1771,11 @@ static inline unsigned int debug_guardpage_minorder(void) { return 0; } | 71439 | @@ -1828,5 +1843,11 @@ void __init setup_nr_node_ids(void); |
71662 | static inline bool page_is_guard(struct page *page) { return false; } | 71440 | static inline void setup_nr_node_ids(void) {} |
71663 | #endif /* CONFIG_DEBUG_PAGEALLOC */ | 71441 | #endif |
71664 | 71442 | ||
71665 | +#ifdef CONFIG_ARCH_TRACK_EXEC_LIMIT | 71443 | +#ifdef CONFIG_ARCH_TRACK_EXEC_LIMIT |
71666 | +extern void track_exec_limit(struct mm_struct *mm, unsigned long start, unsigned long end, unsigned long prot); | 71444 | +extern void track_exec_limit(struct mm_struct *mm, unsigned long start, unsigned long end, unsigned long prot); |
@@ -71731,7 +71509,7 @@ index c5d5278..f0b68c8 100644 | |||
71731 | } | 71509 | } |
71732 | 71510 | ||
71733 | diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h | 71511 | diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h |
71734 | index c74092e..b663967 100644 | 71512 | index 5c76737..61f518e 100644 |
71735 | --- a/include/linux/mmzone.h | 71513 | --- a/include/linux/mmzone.h |
71736 | +++ b/include/linux/mmzone.h | 71514 | +++ b/include/linux/mmzone.h |
71737 | @@ -396,7 +396,7 @@ struct zone { | 71515 | @@ -396,7 +396,7 @@ struct zone { |
@@ -71744,10 +71522,10 @@ index c74092e..b663967 100644 | |||
71744 | /* | 71522 | /* |
71745 | * The target ratio of ACTIVE_ANON to INACTIVE_ANON pages on | 71523 | * The target ratio of ACTIVE_ANON to INACTIVE_ANON pages on |
71746 | diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h | 71524 | diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h |
71747 | index 779cf7c..e6768240 100644 | 71525 | index b508016..237cfe5 100644 |
71748 | --- a/include/linux/mod_devicetable.h | 71526 | --- a/include/linux/mod_devicetable.h |
71749 | +++ b/include/linux/mod_devicetable.h | 71527 | +++ b/include/linux/mod_devicetable.h |
71750 | @@ -12,7 +12,7 @@ | 71528 | @@ -13,7 +13,7 @@ |
71751 | typedef unsigned long kernel_ulong_t; | 71529 | typedef unsigned long kernel_ulong_t; |
71752 | #endif | 71530 | #endif |
71753 | 71531 | ||
@@ -71756,7 +71534,7 @@ index 779cf7c..e6768240 100644 | |||
71756 | 71534 | ||
71757 | struct pci_device_id { | 71535 | struct pci_device_id { |
71758 | __u32 vendor, device; /* Vendor and device ID or PCI_ANY_ID*/ | 71536 | __u32 vendor, device; /* Vendor and device ID or PCI_ANY_ID*/ |
71759 | @@ -138,7 +138,7 @@ struct usb_device_id { | 71537 | @@ -139,7 +139,7 @@ struct usb_device_id { |
71760 | #define USB_DEVICE_ID_MATCH_INT_PROTOCOL 0x0200 | 71538 | #define USB_DEVICE_ID_MATCH_INT_PROTOCOL 0x0200 |
71761 | #define USB_DEVICE_ID_MATCH_INT_NUMBER 0x0400 | 71539 | #define USB_DEVICE_ID_MATCH_INT_NUMBER 0x0400 |
71762 | 71540 | ||
@@ -71765,7 +71543,7 @@ index 779cf7c..e6768240 100644 | |||
71765 | #define HID_BUS_ANY 0xffff | 71543 | #define HID_BUS_ANY 0xffff |
71766 | #define HID_GROUP_ANY 0x0000 | 71544 | #define HID_GROUP_ANY 0x0000 |
71767 | 71545 | ||
71768 | @@ -464,7 +464,7 @@ struct dmi_system_id { | 71546 | @@ -465,7 +465,7 @@ struct dmi_system_id { |
71769 | const char *ident; | 71547 | const char *ident; |
71770 | struct dmi_strmatch matches[4]; | 71548 | struct dmi_strmatch matches[4]; |
71771 | void *driver_data; | 71549 | void *driver_data; |
@@ -71775,7 +71553,7 @@ index 779cf7c..e6768240 100644 | |||
71775 | * struct dmi_device_id appears during expansion of | 71553 | * struct dmi_device_id appears during expansion of |
71776 | * "MODULE_DEVICE_TABLE(dmi, x)". Compiler doesn't look inside it | 71554 | * "MODULE_DEVICE_TABLE(dmi, x)". Compiler doesn't look inside it |
71777 | diff --git a/include/linux/module.h b/include/linux/module.h | 71555 | diff --git a/include/linux/module.h b/include/linux/module.h |
71778 | index ead1b57..81a3b6c 100644 | 71556 | index 46f1ea0..a34ca37 100644 |
71779 | --- a/include/linux/module.h | 71557 | --- a/include/linux/module.h |
71780 | +++ b/include/linux/module.h | 71558 | +++ b/include/linux/module.h |
71781 | @@ -17,9 +17,11 @@ | 71559 | @@ -17,9 +17,11 @@ |
@@ -71997,7 +71775,7 @@ index 5a5ff57..5ae5070 100644 | |||
71997 | return nd->saved_names[nd->depth]; | 71775 | return nd->saved_names[nd->depth]; |
71998 | } | 71776 | } |
71999 | diff --git a/include/linux/net.h b/include/linux/net.h | 71777 | diff --git a/include/linux/net.h b/include/linux/net.h |
72000 | index aa16731..514b875 100644 | 71778 | index 99c9f0c..e1cf296 100644 |
72001 | --- a/include/linux/net.h | 71779 | --- a/include/linux/net.h |
72002 | +++ b/include/linux/net.h | 71780 | +++ b/include/linux/net.h |
72003 | @@ -183,7 +183,7 @@ struct net_proto_family { | 71781 | @@ -183,7 +183,7 @@ struct net_proto_family { |
@@ -72010,10 +71788,10 @@ index aa16731..514b875 100644 | |||
72010 | struct iovec; | 71788 | struct iovec; |
72011 | struct kvec; | 71789 | struct kvec; |
72012 | diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h | 71790 | diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h |
72013 | index 6151e90..2e0afb0 100644 | 71791 | index 96e4c21..9cc8278 100644 |
72014 | --- a/include/linux/netdevice.h | 71792 | --- a/include/linux/netdevice.h |
72015 | +++ b/include/linux/netdevice.h | 71793 | +++ b/include/linux/netdevice.h |
72016 | @@ -1028,6 +1028,7 @@ struct net_device_ops { | 71794 | @@ -1026,6 +1026,7 @@ struct net_device_ops { |
72017 | int (*ndo_change_carrier)(struct net_device *dev, | 71795 | int (*ndo_change_carrier)(struct net_device *dev, |
72018 | bool new_carrier); | 71796 | bool new_carrier); |
72019 | }; | 71797 | }; |
@@ -72031,7 +71809,7 @@ index 6151e90..2e0afb0 100644 | |||
72031 | */ | 71809 | */ |
72032 | 71810 | ||
72033 | diff --git a/include/linux/netfilter.h b/include/linux/netfilter.h | 71811 | diff --git a/include/linux/netfilter.h b/include/linux/netfilter.h |
72034 | index ee14284..bc65d63 100644 | 71812 | index 0060fde..481c6ae 100644 |
72035 | --- a/include/linux/netfilter.h | 71813 | --- a/include/linux/netfilter.h |
72036 | +++ b/include/linux/netfilter.h | 71814 | +++ b/include/linux/netfilter.h |
72037 | @@ -82,7 +82,7 @@ struct nf_sockopt_ops { | 71815 | @@ -82,7 +82,7 @@ struct nf_sockopt_ops { |
@@ -72044,10 +71822,10 @@ index ee14284..bc65d63 100644 | |||
72044 | /* Function to register/unregister hook points. */ | 71822 | /* Function to register/unregister hook points. */ |
72045 | int nf_register_hook(struct nf_hook_ops *reg); | 71823 | int nf_register_hook(struct nf_hook_ops *reg); |
72046 | diff --git a/include/linux/netfilter/ipset/ip_set.h b/include/linux/netfilter/ipset/ip_set.h | 71824 | diff --git a/include/linux/netfilter/ipset/ip_set.h b/include/linux/netfilter/ipset/ip_set.h |
72047 | index 7958e84..ed74d7a 100644 | 71825 | index d80e275..c3510b8 100644 |
72048 | --- a/include/linux/netfilter/ipset/ip_set.h | 71826 | --- a/include/linux/netfilter/ipset/ip_set.h |
72049 | +++ b/include/linux/netfilter/ipset/ip_set.h | 71827 | +++ b/include/linux/netfilter/ipset/ip_set.h |
72050 | @@ -98,7 +98,7 @@ struct ip_set_type_variant { | 71828 | @@ -124,7 +124,7 @@ struct ip_set_type_variant { |
72051 | /* Return true if "b" set is the same as "a" | 71829 | /* Return true if "b" set is the same as "a" |
72052 | * according to the create set parameters */ | 71830 | * according to the create set parameters */ |
72053 | bool (*same_set)(const struct ip_set *a, const struct ip_set *b); | 71831 | bool (*same_set)(const struct ip_set *a, const struct ip_set *b); |
@@ -72057,7 +71835,7 @@ index 7958e84..ed74d7a 100644 | |||
72057 | /* The core set type structure */ | 71835 | /* The core set type structure */ |
72058 | struct ip_set_type { | 71836 | struct ip_set_type { |
72059 | diff --git a/include/linux/netfilter/nfnetlink.h b/include/linux/netfilter/nfnetlink.h | 71837 | diff --git a/include/linux/netfilter/nfnetlink.h b/include/linux/netfilter/nfnetlink.h |
72060 | index ecbb8e4..8a1c4e1 100644 | 71838 | index cadb740..d7c37c0 100644 |
72061 | --- a/include/linux/netfilter/nfnetlink.h | 71839 | --- a/include/linux/netfilter/nfnetlink.h |
72062 | +++ b/include/linux/netfilter/nfnetlink.h | 71840 | +++ b/include/linux/netfilter/nfnetlink.h |
72063 | @@ -16,7 +16,7 @@ struct nfnl_callback { | 71841 | @@ -16,7 +16,7 @@ struct nfnl_callback { |
@@ -72098,11 +71876,11 @@ index 5dc635f..35f5e11 100644 | |||
72098 | /* this value hold the maximum octet of charset */ | 71876 | /* this value hold the maximum octet of charset */ |
72099 | #define NLS_MAX_CHARSET_SIZE 6 /* for UTF-8 */ | 71877 | #define NLS_MAX_CHARSET_SIZE 6 /* for UTF-8 */ |
72100 | diff --git a/include/linux/notifier.h b/include/linux/notifier.h | 71878 | diff --git a/include/linux/notifier.h b/include/linux/notifier.h |
72101 | index d65746e..62e72c2 100644 | 71879 | index d14a4c3..a078786 100644 |
72102 | --- a/include/linux/notifier.h | 71880 | --- a/include/linux/notifier.h |
72103 | +++ b/include/linux/notifier.h | 71881 | +++ b/include/linux/notifier.h |
72104 | @@ -51,7 +51,8 @@ struct notifier_block { | 71882 | @@ -54,7 +54,8 @@ struct notifier_block { |
72105 | int (*notifier_call)(struct notifier_block *, unsigned long, void *); | 71883 | notifier_fn_t notifier_call; |
72106 | struct notifier_block __rcu *next; | 71884 | struct notifier_block __rcu *next; |
72107 | int priority; | 71885 | int priority; |
72108 | -}; | 71886 | -}; |
@@ -72128,7 +71906,7 @@ index a4c5624..79d6d88 100644 | |||
72128 | /** create a directory */ | 71906 | /** create a directory */ |
72129 | struct dentry * oprofilefs_mkdir(struct super_block * sb, struct dentry * root, | 71907 | struct dentry * oprofilefs_mkdir(struct super_block * sb, struct dentry * root, |
72130 | diff --git a/include/linux/pci_hotplug.h b/include/linux/pci_hotplug.h | 71908 | diff --git a/include/linux/pci_hotplug.h b/include/linux/pci_hotplug.h |
72131 | index 45fc162..01a4068 100644 | 71909 | index 8db71dc..a76bf2c 100644 |
72132 | --- a/include/linux/pci_hotplug.h | 71910 | --- a/include/linux/pci_hotplug.h |
72133 | +++ b/include/linux/pci_hotplug.h | 71911 | +++ b/include/linux/pci_hotplug.h |
72134 | @@ -80,7 +80,8 @@ struct hotplug_slot_ops { | 71912 | @@ -80,7 +80,8 @@ struct hotplug_slot_ops { |
@@ -72142,10 +71920,10 @@ index 45fc162..01a4068 100644 | |||
72142 | /** | 71920 | /** |
72143 | * struct hotplug_slot_info - used to notify the hotplug pci core of the state of the slot | 71921 | * struct hotplug_slot_info - used to notify the hotplug pci core of the state of the slot |
72144 | diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h | 71922 | diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h |
72145 | index 2f522a3..494e45f 100644 | 71923 | index c5b6dbf..b124155 100644 |
72146 | --- a/include/linux/perf_event.h | 71924 | --- a/include/linux/perf_event.h |
72147 | +++ b/include/linux/perf_event.h | 71925 | +++ b/include/linux/perf_event.h |
72148 | @@ -333,8 +333,8 @@ struct perf_event { | 71926 | @@ -318,8 +318,8 @@ struct perf_event { |
72149 | 71927 | ||
72150 | enum perf_event_active_state state; | 71928 | enum perf_event_active_state state; |
72151 | unsigned int attach_state; | 71929 | unsigned int attach_state; |
@@ -72156,7 +71934,7 @@ index 2f522a3..494e45f 100644 | |||
72156 | 71934 | ||
72157 | /* | 71935 | /* |
72158 | * These are the total time in nanoseconds that the event | 71936 | * These are the total time in nanoseconds that the event |
72159 | @@ -385,8 +385,8 @@ struct perf_event { | 71937 | @@ -370,8 +370,8 @@ struct perf_event { |
72160 | * These accumulate total time (in nanoseconds) that children | 71938 | * These accumulate total time (in nanoseconds) that children |
72161 | * events have been enabled and running, respectively. | 71939 | * events have been enabled and running, respectively. |
72162 | */ | 71940 | */ |
@@ -72167,7 +71945,7 @@ index 2f522a3..494e45f 100644 | |||
72167 | 71945 | ||
72168 | /* | 71946 | /* |
72169 | * Protect attach/detach and child_list: | 71947 | * Protect attach/detach and child_list: |
72170 | @@ -703,7 +703,7 @@ static inline void perf_callchain_store(struct perf_callchain_entry *entry, u64 | 71948 | @@ -692,7 +692,7 @@ static inline void perf_callchain_store(struct perf_callchain_entry *entry, u64 |
72171 | entry->ip[entry->nr++] = ip; | 71949 | entry->ip[entry->nr++] = ip; |
72172 | } | 71950 | } |
72173 | 71951 | ||
@@ -72176,7 +71954,7 @@ index 2f522a3..494e45f 100644 | |||
72176 | extern int sysctl_perf_event_mlock; | 71954 | extern int sysctl_perf_event_mlock; |
72177 | extern int sysctl_perf_event_sample_rate; | 71955 | extern int sysctl_perf_event_sample_rate; |
72178 | 71956 | ||
72179 | @@ -711,19 +711,24 @@ extern int perf_proc_update_handler(struct ctl_table *table, int write, | 71957 | @@ -700,19 +700,24 @@ extern int perf_proc_update_handler(struct ctl_table *table, int write, |
72180 | void __user *buffer, size_t *lenp, | 71958 | void __user *buffer, size_t *lenp, |
72181 | loff_t *ppos); | 71959 | loff_t *ppos); |
72182 | 71960 | ||
@@ -72204,7 +71982,7 @@ index 2f522a3..494e45f 100644 | |||
72204 | } | 71982 | } |
72205 | 71983 | ||
72206 | extern void perf_event_init(void); | 71984 | extern void perf_event_init(void); |
72207 | @@ -811,7 +816,7 @@ static inline void perf_restore_debug_store(void) { } | 71985 | @@ -806,7 +811,7 @@ static inline void perf_restore_debug_store(void) { } |
72208 | */ | 71986 | */ |
72209 | #define perf_cpu_notifier(fn) \ | 71987 | #define perf_cpu_notifier(fn) \ |
72210 | do { \ | 71988 | do { \ |
@@ -72213,28 +71991,30 @@ index 2f522a3..494e45f 100644 | |||
72213 | { .notifier_call = fn, .priority = CPU_PRI_PERF }; \ | 71991 | { .notifier_call = fn, .priority = CPU_PRI_PERF }; \ |
72214 | unsigned long cpu = smp_processor_id(); \ | 71992 | unsigned long cpu = smp_processor_id(); \ |
72215 | unsigned long flags; \ | 71993 | unsigned long flags; \ |
72216 | @@ -830,7 +835,7 @@ do { \ | 71994 | @@ -826,7 +831,7 @@ struct perf_pmu_events_attr { |
72217 | struct perf_pmu_events_attr { | ||
72218 | struct device_attribute attr; | 71995 | struct device_attribute attr; |
72219 | u64 id; | 71996 | u64 id; |
71997 | const char *event_str; | ||
72220 | -}; | 71998 | -}; |
72221 | +} __do_const; | 71999 | +} __do_const; |
72222 | 72000 | ||
72223 | #define PMU_EVENT_ATTR(_name, _var, _id, _show) \ | 72001 | #define PMU_EVENT_ATTR(_name, _var, _id, _show) \ |
72224 | static struct perf_pmu_events_attr _var = { \ | 72002 | static struct perf_pmu_events_attr _var = { \ |
72225 | diff --git a/include/linux/pipe_fs_i.h b/include/linux/pipe_fs_i.h | 72003 | diff --git a/include/linux/pipe_fs_i.h b/include/linux/pipe_fs_i.h |
72226 | index ad1a427..6419649 100644 | 72004 | index b8809fe..ae4ccd0 100644 |
72227 | --- a/include/linux/pipe_fs_i.h | 72005 | --- a/include/linux/pipe_fs_i.h |
72228 | +++ b/include/linux/pipe_fs_i.h | 72006 | +++ b/include/linux/pipe_fs_i.h |
72229 | @@ -45,9 +45,9 @@ struct pipe_buffer { | 72007 | @@ -47,10 +47,10 @@ struct pipe_inode_info { |
72230 | struct pipe_inode_info { | 72008 | struct mutex mutex; |
72231 | wait_queue_head_t wait; | 72009 | wait_queue_head_t wait; |
72232 | unsigned int nrbufs, curbuf, buffers; | 72010 | unsigned int nrbufs, curbuf, buffers; |
72233 | - unsigned int readers; | 72011 | - unsigned int readers; |
72234 | - unsigned int writers; | 72012 | - unsigned int writers; |
72013 | - unsigned int files; | ||
72235 | - unsigned int waiting_writers; | 72014 | - unsigned int waiting_writers; |
72236 | + atomic_t readers; | 72015 | + atomic_t readers; |
72237 | + atomic_t writers; | 72016 | + atomic_t writers; |
72017 | + atomic_t files; | ||
72238 | + atomic_t waiting_writers; | 72018 | + atomic_t waiting_writers; |
72239 | unsigned int r_counter; | 72019 | unsigned int r_counter; |
72240 | unsigned int w_counter; | 72020 | unsigned int w_counter; |
@@ -72252,10 +72032,10 @@ index 5f28cae..3d23723 100644 | |||
72252 | 72032 | ||
72253 | extern void s5p_ehci_set_platdata(struct s5p_ehci_platdata *pd); | 72033 | extern void s5p_ehci_set_platdata(struct s5p_ehci_platdata *pd); |
72254 | 72034 | ||
72255 | diff --git a/include/linux/platform_data/usb-exynos.h b/include/linux/platform_data/usb-exynos.h | 72035 | diff --git a/include/linux/platform_data/usb-ohci-exynos.h b/include/linux/platform_data/usb-ohci-exynos.h |
72256 | index c256c59..8ea94c7 100644 | 72036 | index c256c59..8ea94c7 100644 |
72257 | --- a/include/linux/platform_data/usb-exynos.h | 72037 | --- a/include/linux/platform_data/usb-ohci-exynos.h |
72258 | +++ b/include/linux/platform_data/usb-exynos.h | 72038 | +++ b/include/linux/platform_data/usb-ohci-exynos.h |
72259 | @@ -14,7 +14,7 @@ | 72039 | @@ -14,7 +14,7 @@ |
72260 | struct exynos4_ohci_platdata { | 72040 | struct exynos4_ohci_platdata { |
72261 | int (*phy_init)(struct platform_device *pdev, int type); | 72041 | int (*phy_init)(struct platform_device *pdev, int type); |
@@ -72346,19 +72126,19 @@ index 4ea1d37..80f4b33 100644 | |||
72346 | /* | 72126 | /* |
72347 | * The return value from decompress routine is the length of the | 72127 | * The return value from decompress routine is the length of the |
72348 | diff --git a/include/linux/printk.h b/include/linux/printk.h | 72128 | diff --git a/include/linux/printk.h b/include/linux/printk.h |
72349 | index 822171f..12b30e8 100644 | 72129 | index 22c7052..ad3fa0a 100644 |
72350 | --- a/include/linux/printk.h | 72130 | --- a/include/linux/printk.h |
72351 | +++ b/include/linux/printk.h | 72131 | +++ b/include/linux/printk.h |
72352 | @@ -98,6 +98,8 @@ int no_printk(const char *fmt, ...) | 72132 | @@ -106,6 +106,8 @@ static inline __printf(1, 2) __cold |
72353 | extern asmlinkage __printf(1, 2) | 72133 | void early_printk(const char *s, ...) { } |
72354 | void early_printk(const char *fmt, ...); | 72134 | #endif |
72355 | 72135 | ||
72356 | +extern int kptr_restrict; | 72136 | +extern int kptr_restrict; |
72357 | + | 72137 | + |
72358 | #ifdef CONFIG_PRINTK | 72138 | #ifdef CONFIG_PRINTK |
72359 | asmlinkage __printf(5, 0) | 72139 | asmlinkage __printf(5, 0) |
72360 | int vprintk_emit(int facility, int level, | 72140 | int vprintk_emit(int facility, int level, |
72361 | @@ -132,7 +134,6 @@ extern bool printk_timed_ratelimit(unsigned long *caller_jiffies, | 72141 | @@ -140,7 +142,6 @@ extern bool printk_timed_ratelimit(unsigned long *caller_jiffies, |
72362 | 72142 | ||
72363 | extern int printk_delay_msec; | 72143 | extern int printk_delay_msec; |
72364 | extern int dmesg_restrict; | 72144 | extern int dmesg_restrict; |
@@ -72367,10 +72147,10 @@ index 822171f..12b30e8 100644 | |||
72367 | extern void wake_up_klogd(void); | 72147 | extern void wake_up_klogd(void); |
72368 | 72148 | ||
72369 | diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h | 72149 | diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h |
72370 | index 94dfb2a..88b9d3b 100644 | 72150 | index 608e60a..c26f864 100644 |
72371 | --- a/include/linux/proc_fs.h | 72151 | --- a/include/linux/proc_fs.h |
72372 | +++ b/include/linux/proc_fs.h | 72152 | +++ b/include/linux/proc_fs.h |
72373 | @@ -165,6 +165,18 @@ static inline struct proc_dir_entry *proc_create(const char *name, umode_t mode, | 72153 | @@ -34,6 +34,19 @@ static inline struct proc_dir_entry *proc_create( |
72374 | return proc_create_data(name, mode, parent, proc_fops, NULL); | 72154 | return proc_create_data(name, mode, parent, proc_fops, NULL); |
72375 | } | 72155 | } |
72376 | 72156 | ||
@@ -72386,23 +72166,28 @@ index 94dfb2a..88b9d3b 100644 | |||
72386 | +#endif | 72166 | +#endif |
72387 | +} | 72167 | +} |
72388 | + | 72168 | + |
72389 | static inline struct proc_dir_entry *create_proc_read_entry(const char *name, | 72169 | + |
72390 | umode_t mode, struct proc_dir_entry *base, | 72170 | extern void proc_set_size(struct proc_dir_entry *, loff_t); |
72391 | read_proc_t *read_proc, void * data) | 72171 | extern void proc_set_user(struct proc_dir_entry *, kuid_t, kgid_t); |
72392 | @@ -266,7 +278,7 @@ struct proc_ns_operations { | 72172 | extern void *PDE_DATA(const struct inode *); |
72173 | diff --git a/include/linux/proc_ns.h b/include/linux/proc_ns.h | ||
72174 | index 34a1e10..03a6d03 100644 | ||
72175 | --- a/include/linux/proc_ns.h | ||
72176 | +++ b/include/linux/proc_ns.h | ||
72177 | @@ -14,7 +14,7 @@ struct proc_ns_operations { | ||
72393 | void (*put)(void *ns); | 72178 | void (*put)(void *ns); |
72394 | int (*install)(struct nsproxy *nsproxy, void *ns); | 72179 | int (*install)(struct nsproxy *nsproxy, void *ns); |
72395 | unsigned int (*inum)(void *ns); | 72180 | unsigned int (*inum)(void *ns); |
72396 | -}; | 72181 | -}; |
72397 | +} __do_const; | 72182 | +} __do_const; |
72398 | extern const struct proc_ns_operations netns_operations; | 72183 | |
72399 | extern const struct proc_ns_operations utsns_operations; | 72184 | struct proc_ns { |
72400 | extern const struct proc_ns_operations ipcns_operations; | 72185 | void *ns; |
72401 | diff --git a/include/linux/random.h b/include/linux/random.h | 72186 | diff --git a/include/linux/random.h b/include/linux/random.h |
72402 | index 347ce55..880f97c 100644 | 72187 | index 3b9377d..61b506a 100644 |
72403 | --- a/include/linux/random.h | 72188 | --- a/include/linux/random.h |
72404 | +++ b/include/linux/random.h | 72189 | +++ b/include/linux/random.h |
72405 | @@ -39,6 +39,11 @@ void prandom_seed(u32 seed); | 72190 | @@ -32,6 +32,11 @@ void prandom_seed(u32 seed); |
72406 | u32 prandom_u32_state(struct rnd_state *); | 72191 | u32 prandom_u32_state(struct rnd_state *); |
72407 | void prandom_bytes_state(struct rnd_state *state, void *buf, int nbytes); | 72192 | void prandom_bytes_state(struct rnd_state *state, void *buf, int nbytes); |
72408 | 72193 | ||
@@ -72415,7 +72200,7 @@ index 347ce55..880f97c 100644 | |||
72415 | * Handle minimum values for seeds | 72200 | * Handle minimum values for seeds |
72416 | */ | 72201 | */ |
72417 | diff --git a/include/linux/rculist.h b/include/linux/rculist.h | 72202 | diff --git a/include/linux/rculist.h b/include/linux/rculist.h |
72418 | index 8089e35..3a0d59a 100644 | 72203 | index f4b1001..8ddb2b6 100644 |
72419 | --- a/include/linux/rculist.h | 72204 | --- a/include/linux/rculist.h |
72420 | +++ b/include/linux/rculist.h | 72205 | +++ b/include/linux/rculist.h |
72421 | @@ -44,6 +44,9 @@ extern void __list_add_rcu(struct list_head *new, | 72206 | @@ -44,6 +44,9 @@ extern void __list_add_rcu(struct list_head *new, |
@@ -72516,10 +72301,10 @@ index 8e0c9fe..ac4d221 100644 | |||
72516 | /** | 72301 | /** |
72517 | * struct user_regset_view - available regsets | 72302 | * struct user_regset_view - available regsets |
72518 | diff --git a/include/linux/relay.h b/include/linux/relay.h | 72303 | diff --git a/include/linux/relay.h b/include/linux/relay.h |
72519 | index 91cacc3..b55ff74 100644 | 72304 | index d7c8359..818daf5 100644 |
72520 | --- a/include/linux/relay.h | 72305 | --- a/include/linux/relay.h |
72521 | +++ b/include/linux/relay.h | 72306 | +++ b/include/linux/relay.h |
72522 | @@ -160,7 +160,7 @@ struct rchan_callbacks | 72307 | @@ -157,7 +157,7 @@ struct rchan_callbacks |
72523 | * The callback should return 0 if successful, negative if not. | 72308 | * The callback should return 0 if successful, negative if not. |
72524 | */ | 72309 | */ |
72525 | int (*remove_buf_file)(struct dentry *dentry); | 72310 | int (*remove_buf_file)(struct dentry *dentry); |
@@ -72529,10 +72314,10 @@ index 91cacc3..b55ff74 100644 | |||
72529 | /* | 72314 | /* |
72530 | * CONFIG_RELAY kernel API, kernel/relay.c | 72315 | * CONFIG_RELAY kernel API, kernel/relay.c |
72531 | diff --git a/include/linux/rio.h b/include/linux/rio.h | 72316 | diff --git a/include/linux/rio.h b/include/linux/rio.h |
72532 | index a3e7842..d973ca6 100644 | 72317 | index 18e0993..8ab5b21 100644 |
72533 | --- a/include/linux/rio.h | 72318 | --- a/include/linux/rio.h |
72534 | +++ b/include/linux/rio.h | 72319 | +++ b/include/linux/rio.h |
72535 | @@ -339,7 +339,7 @@ struct rio_ops { | 72320 | @@ -345,7 +345,7 @@ struct rio_ops { |
72536 | int (*map_inb)(struct rio_mport *mport, dma_addr_t lstart, | 72321 | int (*map_inb)(struct rio_mport *mport, dma_addr_t lstart, |
72537 | u64 rstart, u32 size, u32 flags); | 72322 | u64 rstart, u32 size, u32 flags); |
72538 | void (*unmap_inb)(struct rio_mport *mport, dma_addr_t lstart); | 72323 | void (*unmap_inb)(struct rio_mport *mport, dma_addr_t lstart); |
@@ -72557,7 +72342,7 @@ index 6dacb93..6174423 100644 | |||
72557 | static inline void anon_vma_merge(struct vm_area_struct *vma, | 72342 | static inline void anon_vma_merge(struct vm_area_struct *vma, |
72558 | struct vm_area_struct *next) | 72343 | struct vm_area_struct *next) |
72559 | diff --git a/include/linux/sched.h b/include/linux/sched.h | 72344 | diff --git a/include/linux/sched.h b/include/linux/sched.h |
72560 | index be4e742..01f1387 100644 | 72345 | index 178a8d9..450bf11 100644 |
72561 | --- a/include/linux/sched.h | 72346 | --- a/include/linux/sched.h |
72562 | +++ b/include/linux/sched.h | 72347 | +++ b/include/linux/sched.h |
72563 | @@ -62,6 +62,7 @@ struct bio_list; | 72348 | @@ -62,6 +62,7 @@ struct bio_list; |
@@ -72568,7 +72353,7 @@ index be4e742..01f1387 100644 | |||
72568 | 72353 | ||
72569 | /* | 72354 | /* |
72570 | * List of flags we want to share for kernel threads, | 72355 | * List of flags we want to share for kernel threads, |
72571 | @@ -315,7 +316,7 @@ extern char __sched_text_start[], __sched_text_end[]; | 72356 | @@ -303,7 +304,7 @@ extern char __sched_text_start[], __sched_text_end[]; |
72572 | extern int in_sched_functions(unsigned long addr); | 72357 | extern int in_sched_functions(unsigned long addr); |
72573 | 72358 | ||
72574 | #define MAX_SCHEDULE_TIMEOUT LONG_MAX | 72359 | #define MAX_SCHEDULE_TIMEOUT LONG_MAX |
@@ -72577,8 +72362,8 @@ index be4e742..01f1387 100644 | |||
72577 | extern signed long schedule_timeout_interruptible(signed long timeout); | 72362 | extern signed long schedule_timeout_interruptible(signed long timeout); |
72578 | extern signed long schedule_timeout_killable(signed long timeout); | 72363 | extern signed long schedule_timeout_killable(signed long timeout); |
72579 | extern signed long schedule_timeout_uninterruptible(signed long timeout); | 72364 | extern signed long schedule_timeout_uninterruptible(signed long timeout); |
72580 | @@ -329,6 +330,18 @@ struct user_namespace; | 72365 | @@ -314,6 +315,19 @@ struct nsproxy; |
72581 | #include <linux/aio.h> | 72366 | struct user_namespace; |
72582 | 72367 | ||
72583 | #ifdef CONFIG_MMU | 72368 | #ifdef CONFIG_MMU |
72584 | + | 72369 | + |
@@ -72593,10 +72378,11 @@ index be4e742..01f1387 100644 | |||
72593 | + | 72378 | + |
72594 | +extern bool check_heap_stack_gap(const struct vm_area_struct *vma, unsigned long addr, unsigned long len, unsigned long offset); | 72379 | +extern bool check_heap_stack_gap(const struct vm_area_struct *vma, unsigned long addr, unsigned long len, unsigned long offset); |
72595 | +extern unsigned long skip_heap_stack_gap(const struct vm_area_struct *vma, unsigned long len, unsigned long offset); | 72380 | +extern unsigned long skip_heap_stack_gap(const struct vm_area_struct *vma, unsigned long len, unsigned long offset); |
72381 | + | ||
72596 | extern void arch_pick_mmap_layout(struct mm_struct *mm); | 72382 | extern void arch_pick_mmap_layout(struct mm_struct *mm); |
72597 | extern unsigned long | 72383 | extern unsigned long |
72598 | arch_get_unmapped_area(struct file *, unsigned long, unsigned long, | 72384 | arch_get_unmapped_area(struct file *, unsigned long, unsigned long, |
72599 | @@ -605,6 +618,17 @@ struct signal_struct { | 72385 | @@ -591,6 +605,17 @@ struct signal_struct { |
72600 | #ifdef CONFIG_TASKSTATS | 72386 | #ifdef CONFIG_TASKSTATS |
72601 | struct taskstats *stats; | 72387 | struct taskstats *stats; |
72602 | #endif | 72388 | #endif |
@@ -72613,8 +72399,8 @@ index be4e742..01f1387 100644 | |||
72613 | + | 72399 | + |
72614 | #ifdef CONFIG_AUDIT | 72400 | #ifdef CONFIG_AUDIT |
72615 | unsigned audit_tty; | 72401 | unsigned audit_tty; |
72616 | struct tty_audit_buf *tty_audit_buf; | 72402 | unsigned audit_tty_log_passwd; |
72617 | @@ -683,6 +707,14 @@ struct user_struct { | 72403 | @@ -671,6 +696,14 @@ struct user_struct { |
72618 | struct key *session_keyring; /* UID's default session keyring */ | 72404 | struct key *session_keyring; /* UID's default session keyring */ |
72619 | #endif | 72405 | #endif |
72620 | 72406 | ||
@@ -72629,16 +72415,7 @@ index be4e742..01f1387 100644 | |||
72629 | /* Hash table maintenance information */ | 72415 | /* Hash table maintenance information */ |
72630 | struct hlist_node uidhash_node; | 72416 | struct hlist_node uidhash_node; |
72631 | kuid_t uid; | 72417 | kuid_t uid; |
72632 | @@ -1082,7 +1114,7 @@ struct sched_class { | 72418 | @@ -1158,8 +1191,8 @@ struct task_struct { |
72633 | #ifdef CONFIG_FAIR_GROUP_SCHED | ||
72634 | void (*task_move_group) (struct task_struct *p, int on_rq); | ||
72635 | #endif | ||
72636 | -}; | ||
72637 | +} __do_const; | ||
72638 | |||
72639 | struct load_weight { | ||
72640 | unsigned long weight, inv_weight; | ||
72641 | @@ -1323,8 +1355,8 @@ struct task_struct { | ||
72642 | struct list_head thread_group; | 72419 | struct list_head thread_group; |
72643 | 72420 | ||
72644 | struct completion *vfork_done; /* for vfork() */ | 72421 | struct completion *vfork_done; /* for vfork() */ |
@@ -72649,7 +72426,7 @@ index be4e742..01f1387 100644 | |||
72649 | 72426 | ||
72650 | cputime_t utime, stime, utimescaled, stimescaled; | 72427 | cputime_t utime, stime, utimescaled, stimescaled; |
72651 | cputime_t gtime; | 72428 | cputime_t gtime; |
72652 | @@ -1349,11 +1381,6 @@ struct task_struct { | 72429 | @@ -1184,11 +1217,6 @@ struct task_struct { |
72653 | struct task_cputime cputime_expires; | 72430 | struct task_cputime cputime_expires; |
72654 | struct list_head cpu_timers[3]; | 72431 | struct list_head cpu_timers[3]; |
72655 | 72432 | ||
@@ -72661,7 +72438,7 @@ index be4e742..01f1387 100644 | |||
72661 | char comm[TASK_COMM_LEN]; /* executable name excluding path | 72438 | char comm[TASK_COMM_LEN]; /* executable name excluding path |
72662 | - access with [gs]et_task_comm (which lock | 72439 | - access with [gs]et_task_comm (which lock |
72663 | it with task_lock()) | 72440 | it with task_lock()) |
72664 | @@ -1370,6 +1397,10 @@ struct task_struct { | 72441 | @@ -1205,6 +1233,10 @@ struct task_struct { |
72665 | #endif | 72442 | #endif |
72666 | /* CPU-specific state of this task */ | 72443 | /* CPU-specific state of this task */ |
72667 | struct thread_struct thread; | 72444 | struct thread_struct thread; |
@@ -72672,7 +72449,7 @@ index be4e742..01f1387 100644 | |||
72672 | /* filesystem information */ | 72449 | /* filesystem information */ |
72673 | struct fs_struct *fs; | 72450 | struct fs_struct *fs; |
72674 | /* open file information */ | 72451 | /* open file information */ |
72675 | @@ -1443,6 +1474,10 @@ struct task_struct { | 72452 | @@ -1278,6 +1310,10 @@ struct task_struct { |
72676 | gfp_t lockdep_reclaim_gfp; | 72453 | gfp_t lockdep_reclaim_gfp; |
72677 | #endif | 72454 | #endif |
72678 | 72455 | ||
@@ -72683,7 +72460,7 @@ index be4e742..01f1387 100644 | |||
72683 | /* journalling filesystem info */ | 72460 | /* journalling filesystem info */ |
72684 | void *journal_info; | 72461 | void *journal_info; |
72685 | 72462 | ||
72686 | @@ -1481,6 +1516,10 @@ struct task_struct { | 72463 | @@ -1316,6 +1352,10 @@ struct task_struct { |
72687 | /* cg_list protected by css_set_lock and tsk->alloc_lock */ | 72464 | /* cg_list protected by css_set_lock and tsk->alloc_lock */ |
72688 | struct list_head cg_list; | 72465 | struct list_head cg_list; |
72689 | #endif | 72466 | #endif |
@@ -72694,9 +72471,9 @@ index be4e742..01f1387 100644 | |||
72694 | #ifdef CONFIG_FUTEX | 72471 | #ifdef CONFIG_FUTEX |
72695 | struct robust_list_head __user *robust_list; | 72472 | struct robust_list_head __user *robust_list; |
72696 | #ifdef CONFIG_COMPAT | 72473 | #ifdef CONFIG_COMPAT |
72697 | @@ -1577,8 +1616,74 @@ struct task_struct { | 72474 | @@ -1416,8 +1456,76 @@ struct task_struct { |
72698 | #ifdef CONFIG_UPROBES | 72475 | unsigned int sequential_io; |
72699 | struct uprobe_task *utask; | 72476 | unsigned int sequential_io_avg; |
72700 | #endif | 72477 | #endif |
72701 | + | 72478 | + |
72702 | +#ifdef CONFIG_GRKERNSEC | 72479 | +#ifdef CONFIG_GRKERNSEC |
@@ -72762,6 +72539,8 @@ index be4e742..01f1387 100644 | |||
72762 | +extern void (*pax_set_initial_flags_func)(struct linux_binprm *bprm); | 72539 | +extern void (*pax_set_initial_flags_func)(struct linux_binprm *bprm); |
72763 | +#endif | 72540 | +#endif |
72764 | + | 72541 | + |
72542 | +struct path; | ||
72543 | +extern char *pax_get_path(const struct path *path, char *buf, int buflen); | ||
72765 | +extern void pax_report_fault(struct pt_regs *regs, void *pc, void *sp); | 72544 | +extern void pax_report_fault(struct pt_regs *regs, void *pc, void *sp); |
72766 | +extern void pax_report_insns(struct pt_regs *regs, void *pc, void *sp); | 72545 | +extern void pax_report_insns(struct pt_regs *regs, void *pc, void *sp); |
72767 | +extern void pax_report_refcount_overflow(struct pt_regs *regs); | 72546 | +extern void pax_report_refcount_overflow(struct pt_regs *regs); |
@@ -72769,7 +72548,7 @@ index be4e742..01f1387 100644 | |||
72769 | /* Future-safe accessor for struct task_struct's cpus_allowed. */ | 72548 | /* Future-safe accessor for struct task_struct's cpus_allowed. */ |
72770 | #define tsk_cpus_allowed(tsk) (&(tsk)->cpus_allowed) | 72549 | #define tsk_cpus_allowed(tsk) (&(tsk)->cpus_allowed) |
72771 | 72550 | ||
72772 | @@ -1637,7 +1742,7 @@ struct pid_namespace; | 72551 | @@ -1476,7 +1584,7 @@ struct pid_namespace; |
72773 | pid_t __task_pid_nr_ns(struct task_struct *task, enum pid_type type, | 72552 | pid_t __task_pid_nr_ns(struct task_struct *task, enum pid_type type, |
72774 | struct pid_namespace *ns); | 72553 | struct pid_namespace *ns); |
72775 | 72554 | ||
@@ -72778,7 +72557,7 @@ index be4e742..01f1387 100644 | |||
72778 | { | 72557 | { |
72779 | return tsk->pid; | 72558 | return tsk->pid; |
72780 | } | 72559 | } |
72781 | @@ -2073,7 +2178,9 @@ void yield(void); | 72560 | @@ -1919,7 +2027,9 @@ void yield(void); |
72782 | extern struct exec_domain default_exec_domain; | 72561 | extern struct exec_domain default_exec_domain; |
72783 | 72562 | ||
72784 | union thread_union { | 72563 | union thread_union { |
@@ -72788,7 +72567,7 @@ index be4e742..01f1387 100644 | |||
72788 | unsigned long stack[THREAD_SIZE/sizeof(long)]; | 72567 | unsigned long stack[THREAD_SIZE/sizeof(long)]; |
72789 | }; | 72568 | }; |
72790 | 72569 | ||
72791 | @@ -2106,6 +2213,7 @@ extern struct pid_namespace init_pid_ns; | 72570 | @@ -1952,6 +2062,7 @@ extern struct pid_namespace init_pid_ns; |
72792 | */ | 72571 | */ |
72793 | 72572 | ||
72794 | extern struct task_struct *find_task_by_vpid(pid_t nr); | 72573 | extern struct task_struct *find_task_by_vpid(pid_t nr); |
@@ -72796,7 +72575,7 @@ index be4e742..01f1387 100644 | |||
72796 | extern struct task_struct *find_task_by_pid_ns(pid_t nr, | 72575 | extern struct task_struct *find_task_by_pid_ns(pid_t nr, |
72797 | struct pid_namespace *ns); | 72576 | struct pid_namespace *ns); |
72798 | 72577 | ||
72799 | @@ -2272,7 +2380,7 @@ extern void __cleanup_sighand(struct sighand_struct *); | 72578 | @@ -2118,7 +2229,7 @@ extern void __cleanup_sighand(struct sighand_struct *); |
72800 | extern void exit_itimers(struct signal_struct *); | 72579 | extern void exit_itimers(struct signal_struct *); |
72801 | extern void flush_itimer_signals(void); | 72580 | extern void flush_itimer_signals(void); |
72802 | 72581 | ||
@@ -72805,7 +72584,7 @@ index be4e742..01f1387 100644 | |||
72805 | 72584 | ||
72806 | extern int allow_signal(int); | 72585 | extern int allow_signal(int); |
72807 | extern int disallow_signal(int); | 72586 | extern int disallow_signal(int); |
72808 | @@ -2463,9 +2571,9 @@ static inline unsigned long *end_of_stack(struct task_struct *p) | 72587 | @@ -2309,9 +2420,9 @@ static inline unsigned long *end_of_stack(struct task_struct *p) |
72809 | 72588 | ||
72810 | #endif | 72589 | #endif |
72811 | 72590 | ||
@@ -72830,7 +72609,7 @@ index bf8086b..962b035 100644 | |||
72830 | extern unsigned int sysctl_sched_latency; | 72609 | extern unsigned int sysctl_sched_latency; |
72831 | extern unsigned int sysctl_sched_min_granularity; | 72610 | extern unsigned int sysctl_sched_min_granularity; |
72832 | diff --git a/include/linux/security.h b/include/linux/security.h | 72611 | diff --git a/include/linux/security.h b/include/linux/security.h |
72833 | index 032c366..2c1c2dc2 100644 | 72612 | index 4686491..2bd210e 100644 |
72834 | --- a/include/linux/security.h | 72613 | --- a/include/linux/security.h |
72835 | +++ b/include/linux/security.h | 72614 | +++ b/include/linux/security.h |
72836 | @@ -26,6 +26,7 @@ | 72615 | @@ -26,6 +26,7 @@ |
@@ -72842,7 +72621,7 @@ index 032c366..2c1c2dc2 100644 | |||
72842 | struct linux_binprm; | 72621 | struct linux_binprm; |
72843 | struct cred; | 72622 | struct cred; |
72844 | diff --git a/include/linux/seq_file.h b/include/linux/seq_file.h | 72623 | diff --git a/include/linux/seq_file.h b/include/linux/seq_file.h |
72845 | index 68a04a3..866e6a1 100644 | 72624 | index 2da29ac..aac448ec 100644 |
72846 | --- a/include/linux/seq_file.h | 72625 | --- a/include/linux/seq_file.h |
72847 | +++ b/include/linux/seq_file.h | 72626 | +++ b/include/linux/seq_file.h |
72848 | @@ -26,6 +26,9 @@ struct seq_file { | 72627 | @@ -26,6 +26,9 @@ struct seq_file { |
@@ -72879,10 +72658,10 @@ index 429c199..4d42e38 100644 | |||
72879 | 72658 | ||
72880 | /* shm_mode upper byte flags */ | 72659 | /* shm_mode upper byte flags */ |
72881 | diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h | 72660 | diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h |
72882 | index 1f2803c..4858a3d 100644 | 72661 | index dec1748..112c1f9 100644 |
72883 | --- a/include/linux/skbuff.h | 72662 | --- a/include/linux/skbuff.h |
72884 | +++ b/include/linux/skbuff.h | 72663 | +++ b/include/linux/skbuff.h |
72885 | @@ -599,7 +599,7 @@ extern bool skb_try_coalesce(struct sk_buff *to, struct sk_buff *from, | 72664 | @@ -640,7 +640,7 @@ extern bool skb_try_coalesce(struct sk_buff *to, struct sk_buff *from, |
72886 | extern struct sk_buff *__alloc_skb(unsigned int size, | 72665 | extern struct sk_buff *__alloc_skb(unsigned int size, |
72887 | gfp_t priority, int flags, int node); | 72666 | gfp_t priority, int flags, int node); |
72888 | extern struct sk_buff *build_skb(void *data, unsigned int frag_size); | 72667 | extern struct sk_buff *build_skb(void *data, unsigned int frag_size); |
@@ -72891,7 +72670,7 @@ index 1f2803c..4858a3d 100644 | |||
72891 | gfp_t priority) | 72670 | gfp_t priority) |
72892 | { | 72671 | { |
72893 | return __alloc_skb(size, priority, 0, NUMA_NO_NODE); | 72672 | return __alloc_skb(size, priority, 0, NUMA_NO_NODE); |
72894 | @@ -709,7 +709,7 @@ static inline struct skb_shared_hwtstamps *skb_hwtstamps(struct sk_buff *skb) | 72673 | @@ -756,7 +756,7 @@ static inline struct skb_shared_hwtstamps *skb_hwtstamps(struct sk_buff *skb) |
72895 | */ | 72674 | */ |
72896 | static inline int skb_queue_empty(const struct sk_buff_head *list) | 72675 | static inline int skb_queue_empty(const struct sk_buff_head *list) |
72897 | { | 72676 | { |
@@ -72900,7 +72679,7 @@ index 1f2803c..4858a3d 100644 | |||
72900 | } | 72679 | } |
72901 | 72680 | ||
72902 | /** | 72681 | /** |
72903 | @@ -722,7 +722,7 @@ static inline int skb_queue_empty(const struct sk_buff_head *list) | 72682 | @@ -769,7 +769,7 @@ static inline int skb_queue_empty(const struct sk_buff_head *list) |
72904 | static inline bool skb_queue_is_last(const struct sk_buff_head *list, | 72683 | static inline bool skb_queue_is_last(const struct sk_buff_head *list, |
72905 | const struct sk_buff *skb) | 72684 | const struct sk_buff *skb) |
72906 | { | 72685 | { |
@@ -72909,7 +72688,7 @@ index 1f2803c..4858a3d 100644 | |||
72909 | } | 72688 | } |
72910 | 72689 | ||
72911 | /** | 72690 | /** |
72912 | @@ -735,7 +735,7 @@ static inline bool skb_queue_is_last(const struct sk_buff_head *list, | 72691 | @@ -782,7 +782,7 @@ static inline bool skb_queue_is_last(const struct sk_buff_head *list, |
72913 | static inline bool skb_queue_is_first(const struct sk_buff_head *list, | 72692 | static inline bool skb_queue_is_first(const struct sk_buff_head *list, |
72914 | const struct sk_buff *skb) | 72693 | const struct sk_buff *skb) |
72915 | { | 72694 | { |
@@ -72918,7 +72697,7 @@ index 1f2803c..4858a3d 100644 | |||
72918 | } | 72697 | } |
72919 | 72698 | ||
72920 | /** | 72699 | /** |
72921 | @@ -1756,7 +1756,7 @@ static inline int pskb_network_may_pull(struct sk_buff *skb, unsigned int len) | 72700 | @@ -1848,7 +1848,7 @@ static inline int pskb_network_may_pull(struct sk_buff *skb, unsigned int len) |
72922 | * NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8) | 72701 | * NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8) |
72923 | */ | 72702 | */ |
72924 | #ifndef NET_SKB_PAD | 72703 | #ifndef NET_SKB_PAD |
@@ -72927,7 +72706,7 @@ index 1f2803c..4858a3d 100644 | |||
72927 | #endif | 72706 | #endif |
72928 | 72707 | ||
72929 | extern int ___pskb_trim(struct sk_buff *skb, unsigned int len); | 72708 | extern int ___pskb_trim(struct sk_buff *skb, unsigned int len); |
72930 | @@ -2351,7 +2351,7 @@ extern struct sk_buff *skb_recv_datagram(struct sock *sk, unsigned flags, | 72709 | @@ -2443,7 +2443,7 @@ extern struct sk_buff *skb_recv_datagram(struct sock *sk, unsigned flags, |
72931 | int noblock, int *err); | 72710 | int noblock, int *err); |
72932 | extern unsigned int datagram_poll(struct file *file, struct socket *sock, | 72711 | extern unsigned int datagram_poll(struct file *file, struct socket *sock, |
72933 | struct poll_table_struct *wait); | 72712 | struct poll_table_struct *wait); |
@@ -72936,7 +72715,7 @@ index 1f2803c..4858a3d 100644 | |||
72936 | int offset, struct iovec *to, | 72715 | int offset, struct iovec *to, |
72937 | int size); | 72716 | int size); |
72938 | extern int skb_copy_and_csum_datagram_iovec(struct sk_buff *skb, | 72717 | extern int skb_copy_and_csum_datagram_iovec(struct sk_buff *skb, |
72939 | @@ -2641,6 +2641,9 @@ static inline void nf_reset(struct sk_buff *skb) | 72718 | @@ -2733,6 +2733,9 @@ static inline void nf_reset(struct sk_buff *skb) |
72940 | nf_bridge_put(skb->nf_bridge); | 72719 | nf_bridge_put(skb->nf_bridge); |
72941 | skb->nf_bridge = NULL; | 72720 | skb->nf_bridge = NULL; |
72942 | #endif | 72721 | #endif |
@@ -72947,10 +72726,10 @@ index 1f2803c..4858a3d 100644 | |||
72947 | 72726 | ||
72948 | static inline void nf_reset_trace(struct sk_buff *skb) | 72727 | static inline void nf_reset_trace(struct sk_buff *skb) |
72949 | diff --git a/include/linux/slab.h b/include/linux/slab.h | 72728 | diff --git a/include/linux/slab.h b/include/linux/slab.h |
72950 | index 5d168d7..720bff3 100644 | 72729 | index 0c62175..f016ac1 100644 |
72951 | --- a/include/linux/slab.h | 72730 | --- a/include/linux/slab.h |
72952 | +++ b/include/linux/slab.h | 72731 | +++ b/include/linux/slab.h |
72953 | @@ -12,13 +12,20 @@ | 72732 | @@ -12,15 +12,29 @@ |
72954 | #include <linux/gfp.h> | 72733 | #include <linux/gfp.h> |
72955 | #include <linux/types.h> | 72734 | #include <linux/types.h> |
72956 | #include <linux/workqueue.h> | 72735 | #include <linux/workqueue.h> |
@@ -72971,8 +72750,17 @@ index 5d168d7..720bff3 100644 | |||
72971 | + | 72750 | + |
72972 | #define SLAB_RED_ZONE 0x00000400UL /* DEBUG: Red zone objs in a cache */ | 72751 | #define SLAB_RED_ZONE 0x00000400UL /* DEBUG: Red zone objs in a cache */ |
72973 | #define SLAB_POISON 0x00000800UL /* DEBUG: Poison objects */ | 72752 | #define SLAB_POISON 0x00000800UL /* DEBUG: Poison objects */ |
72753 | + | ||
72754 | +#ifdef CONFIG_PAX_MEMORY_SANITIZE | ||
72755 | +#define SLAB_NO_SANITIZE 0x00001000UL /* PaX: Do not sanitize objs on free */ | ||
72756 | +#else | ||
72757 | +#define SLAB_NO_SANITIZE 0x00000000UL | ||
72758 | +#endif | ||
72759 | + | ||
72974 | #define SLAB_HWCACHE_ALIGN 0x00002000UL /* Align objs on cache lines */ | 72760 | #define SLAB_HWCACHE_ALIGN 0x00002000UL /* Align objs on cache lines */ |
72975 | @@ -89,10 +96,13 @@ | 72761 | #define SLAB_CACHE_DMA 0x00004000UL /* Use GFP_DMA memory */ |
72762 | #define SLAB_STORE_USER 0x00010000UL /* DEBUG: Store the last owner for bug hunting */ | ||
72763 | @@ -89,10 +103,13 @@ | ||
72976 | * ZERO_SIZE_PTR can be passed to kfree though in the same way that NULL can. | 72764 | * ZERO_SIZE_PTR can be passed to kfree though in the same way that NULL can. |
72977 | * Both make kfree a no-op. | 72765 | * Both make kfree a no-op. |
72978 | */ | 72766 | */ |
@@ -72987,9 +72775,18 @@ index 5d168d7..720bff3 100644 | |||
72987 | - (unsigned long)ZERO_SIZE_PTR) | 72775 | - (unsigned long)ZERO_SIZE_PTR) |
72988 | +#define ZERO_OR_NULL_PTR(x) ((unsigned long)(x) - 1 >= (unsigned long)ZERO_SIZE_PTR - 1) | 72776 | +#define ZERO_OR_NULL_PTR(x) ((unsigned long)(x) - 1 >= (unsigned long)ZERO_SIZE_PTR - 1) |
72989 | 72777 | ||
72778 | |||
72779 | struct mem_cgroup; | ||
72780 | @@ -132,6 +149,8 @@ void * __must_check krealloc(const void *, size_t, gfp_t); | ||
72781 | void kfree(const void *); | ||
72782 | void kzfree(const void *); | ||
72783 | size_t ksize(const void *); | ||
72784 | +const char *check_heap_object(const void *ptr, unsigned long n); | ||
72785 | +bool is_usercopy_object(const void *ptr); | ||
72786 | |||
72990 | /* | 72787 | /* |
72991 | * Common fields provided in kmem_cache by all slab allocators | 72788 | * Some archs want to perform DMA into kmalloc caches and need a guaranteed |
72992 | @@ -112,7 +122,7 @@ struct kmem_cache { | 72789 | @@ -164,7 +183,7 @@ struct kmem_cache { |
72993 | unsigned int align; /* Alignment as calculated */ | 72790 | unsigned int align; /* Alignment as calculated */ |
72994 | unsigned long flags; /* Active flags on the slab */ | 72791 | unsigned long flags; /* Active flags on the slab */ |
72995 | const char *name; /* Slab name for sysfs */ | 72792 | const char *name; /* Slab name for sysfs */ |
@@ -72998,16 +72795,27 @@ index 5d168d7..720bff3 100644 | |||
72998 | void (*ctor)(void *); /* Called on object slot creation */ | 72795 | void (*ctor)(void *); /* Called on object slot creation */ |
72999 | struct list_head list; /* List of all slab caches on the system */ | 72796 | struct list_head list; /* List of all slab caches on the system */ |
73000 | }; | 72797 | }; |
73001 | @@ -232,6 +242,8 @@ void * __must_check krealloc(const void *, size_t, gfp_t); | 72798 | @@ -226,6 +245,10 @@ extern struct kmem_cache *kmalloc_caches[KMALLOC_SHIFT_HIGH + 1]; |
73002 | void kfree(const void *); | 72799 | extern struct kmem_cache *kmalloc_dma_caches[KMALLOC_SHIFT_HIGH + 1]; |
73003 | void kzfree(const void *); | 72800 | #endif |
73004 | size_t ksize(const void *); | ||
73005 | +const char *check_heap_object(const void *ptr, unsigned long n); | ||
73006 | +bool is_usercopy_object(const void *ptr); | ||
73007 | 72801 | ||
72802 | +#ifdef CONFIG_PAX_USERCOPY_SLABS | ||
72803 | +extern struct kmem_cache *kmalloc_usercopy_caches[KMALLOC_SHIFT_HIGH + 1]; | ||
72804 | +#endif | ||
72805 | + | ||
73008 | /* | 72806 | /* |
73009 | * Allocator specific definitions. These are mainly used to establish optimized | 72807 | * Figure out which kmalloc slab an allocation of a certain size |
73010 | @@ -311,6 +323,7 @@ size_t ksize(const void *); | 72808 | * belongs to. |
72809 | @@ -234,7 +257,7 @@ extern struct kmem_cache *kmalloc_dma_caches[KMALLOC_SHIFT_HIGH + 1]; | ||
72810 | * 2 = 120 .. 192 bytes | ||
72811 | * n = 2^(n-1) .. 2^n -1 | ||
72812 | */ | ||
72813 | -static __always_inline int kmalloc_index(size_t size) | ||
72814 | +static __always_inline __size_overflow(1) int kmalloc_index(size_t size) | ||
72815 | { | ||
72816 | if (!size) | ||
72817 | return 0; | ||
72818 | @@ -406,6 +429,7 @@ void print_slabinfo_header(struct seq_file *m); | ||
73011 | * for general use, and so are not documented here. For a full list of | 72819 | * for general use, and so are not documented here. For a full list of |
73012 | * potential flags, always refer to linux/gfp.h. | 72820 | * potential flags, always refer to linux/gfp.h. |
73013 | */ | 72821 | */ |
@@ -73015,7 +72823,7 @@ index 5d168d7..720bff3 100644 | |||
73015 | static inline void *kmalloc_array(size_t n, size_t size, gfp_t flags) | 72823 | static inline void *kmalloc_array(size_t n, size_t size, gfp_t flags) |
73016 | { | 72824 | { |
73017 | if (size != 0 && n > SIZE_MAX / size) | 72825 | if (size != 0 && n > SIZE_MAX / size) |
73018 | @@ -370,7 +383,7 @@ static inline void *kmem_cache_alloc_node(struct kmem_cache *cachep, | 72826 | @@ -465,7 +489,7 @@ static inline void *kmem_cache_alloc_node(struct kmem_cache *cachep, |
73019 | #if defined(CONFIG_DEBUG_SLAB) || defined(CONFIG_SLUB) || \ | 72827 | #if defined(CONFIG_DEBUG_SLAB) || defined(CONFIG_SLUB) || \ |
73020 | (defined(CONFIG_SLAB) && defined(CONFIG_TRACING)) || \ | 72828 | (defined(CONFIG_SLAB) && defined(CONFIG_TRACING)) || \ |
73021 | (defined(CONFIG_SLOB) && defined(CONFIG_TRACING)) | 72829 | (defined(CONFIG_SLOB) && defined(CONFIG_TRACING)) |
@@ -73024,7 +72832,7 @@ index 5d168d7..720bff3 100644 | |||
73024 | #define kmalloc_track_caller(size, flags) \ | 72832 | #define kmalloc_track_caller(size, flags) \ |
73025 | __kmalloc_track_caller(size, flags, _RET_IP_) | 72833 | __kmalloc_track_caller(size, flags, _RET_IP_) |
73026 | #else | 72834 | #else |
73027 | @@ -390,7 +403,7 @@ extern void *__kmalloc_track_caller(size_t, gfp_t, unsigned long); | 72835 | @@ -485,7 +509,7 @@ extern void *__kmalloc_track_caller(size_t, gfp_t, unsigned long); |
73028 | #if defined(CONFIG_DEBUG_SLAB) || defined(CONFIG_SLUB) || \ | 72836 | #if defined(CONFIG_DEBUG_SLAB) || defined(CONFIG_SLUB) || \ |
73029 | (defined(CONFIG_SLAB) && defined(CONFIG_TRACING)) || \ | 72837 | (defined(CONFIG_SLAB) && defined(CONFIG_TRACING)) || \ |
73030 | (defined(CONFIG_SLOB) && defined(CONFIG_TRACING)) | 72838 | (defined(CONFIG_SLOB) && defined(CONFIG_TRACING)) |
@@ -73034,10 +72842,10 @@ index 5d168d7..720bff3 100644 | |||
73034 | __kmalloc_node_track_caller(size, flags, node, \ | 72842 | __kmalloc_node_track_caller(size, flags, node, \ |
73035 | _RET_IP_) | 72843 | _RET_IP_) |
73036 | diff --git a/include/linux/slab_def.h b/include/linux/slab_def.h | 72844 | diff --git a/include/linux/slab_def.h b/include/linux/slab_def.h |
73037 | index 8bb6e0e..8eb0dbe 100644 | 72845 | index cd40158..4e2f7af 100644 |
73038 | --- a/include/linux/slab_def.h | 72846 | --- a/include/linux/slab_def.h |
73039 | +++ b/include/linux/slab_def.h | 72847 | +++ b/include/linux/slab_def.h |
73040 | @@ -52,7 +52,7 @@ struct kmem_cache { | 72848 | @@ -50,7 +50,7 @@ struct kmem_cache { |
73041 | /* 4) cache creation/removal */ | 72849 | /* 4) cache creation/removal */ |
73042 | const char *name; | 72850 | const char *name; |
73043 | struct list_head list; | 72851 | struct list_head list; |
@@ -73046,7 +72854,7 @@ index 8bb6e0e..8eb0dbe 100644 | |||
73046 | int object_size; | 72854 | int object_size; |
73047 | int align; | 72855 | int align; |
73048 | 72856 | ||
73049 | @@ -68,10 +68,10 @@ struct kmem_cache { | 72857 | @@ -66,10 +66,14 @@ struct kmem_cache { |
73050 | unsigned long node_allocs; | 72858 | unsigned long node_allocs; |
73051 | unsigned long node_frees; | 72859 | unsigned long node_frees; |
73052 | unsigned long node_overflow; | 72860 | unsigned long node_overflow; |
@@ -73058,20 +72866,15 @@ index 8bb6e0e..8eb0dbe 100644 | |||
73058 | + atomic_unchecked_t allocmiss; | 72866 | + atomic_unchecked_t allocmiss; |
73059 | + atomic_unchecked_t freehit; | 72867 | + atomic_unchecked_t freehit; |
73060 | + atomic_unchecked_t freemiss; | 72868 | + atomic_unchecked_t freemiss; |
72869 | +#ifdef CONFIG_PAX_MEMORY_SANITIZE | ||
72870 | + atomic_unchecked_t sanitized; | ||
72871 | + atomic_unchecked_t not_sanitized; | ||
72872 | +#endif | ||
73061 | 72873 | ||
73062 | /* | 72874 | /* |
73063 | * If debugging is enabled, then the allocator can add additional | 72875 | * If debugging is enabled, then the allocator can add additional |
73064 | @@ -111,11 +111,16 @@ struct cache_sizes { | 72876 | @@ -103,7 +107,7 @@ struct kmem_cache { |
73065 | #ifdef CONFIG_ZONE_DMA | ||
73066 | struct kmem_cache *cs_dmacachep; | ||
73067 | #endif | ||
73068 | + | ||
73069 | +#ifdef CONFIG_PAX_USERCOPY_SLABS | ||
73070 | + struct kmem_cache *cs_usercopycachep; | ||
73071 | +#endif | ||
73072 | + | ||
73073 | }; | 72877 | }; |
73074 | extern struct cache_sizes malloc_sizes[]; | ||
73075 | 72878 | ||
73076 | void *kmem_cache_alloc(struct kmem_cache *, gfp_t); | 72879 | void *kmem_cache_alloc(struct kmem_cache *, gfp_t); |
73077 | -void *__kmalloc(size_t size, gfp_t flags); | 72880 | -void *__kmalloc(size_t size, gfp_t flags); |
@@ -73079,21 +72882,21 @@ index 8bb6e0e..8eb0dbe 100644 | |||
73079 | 72882 | ||
73080 | #ifdef CONFIG_TRACING | 72883 | #ifdef CONFIG_TRACING |
73081 | extern void *kmem_cache_alloc_trace(struct kmem_cache *, gfp_t, size_t); | 72884 | extern void *kmem_cache_alloc_trace(struct kmem_cache *, gfp_t, size_t); |
73082 | @@ -152,6 +157,13 @@ found: | 72885 | @@ -136,6 +140,13 @@ static __always_inline void *kmalloc(size_t size, gfp_t flags) |
73083 | cachep = malloc_sizes[i].cs_dmacachep; | 72886 | cachep = kmalloc_dma_caches[i]; |
73084 | else | 72887 | else |
73085 | #endif | 72888 | #endif |
73086 | + | 72889 | + |
73087 | +#ifdef CONFIG_PAX_USERCOPY_SLABS | 72890 | +#ifdef CONFIG_PAX_USERCOPY_SLABS |
73088 | + if (flags & GFP_USERCOPY) | 72891 | + if (flags & GFP_USERCOPY) |
73089 | + cachep = malloc_sizes[i].cs_usercopycachep; | 72892 | + cachep = kmalloc_usercopy_caches[i]; |
73090 | + else | 72893 | + else |
73091 | +#endif | 72894 | +#endif |
73092 | + | 72895 | + |
73093 | cachep = malloc_sizes[i].cs_cachep; | 72896 | cachep = kmalloc_caches[i]; |
73094 | 72897 | ||
73095 | ret = kmem_cache_alloc_trace(cachep, flags, size); | 72898 | ret = kmem_cache_alloc_trace(cachep, flags, size); |
73096 | @@ -162,7 +174,7 @@ found: | 72899 | @@ -146,7 +157,7 @@ static __always_inline void *kmalloc(size_t size, gfp_t flags) |
73097 | } | 72900 | } |
73098 | 72901 | ||
73099 | #ifdef CONFIG_NUMA | 72902 | #ifdef CONFIG_NUMA |
@@ -73102,18 +72905,18 @@ index 8bb6e0e..8eb0dbe 100644 | |||
73102 | extern void *kmem_cache_alloc_node(struct kmem_cache *, gfp_t flags, int node); | 72905 | extern void *kmem_cache_alloc_node(struct kmem_cache *, gfp_t flags, int node); |
73103 | 72906 | ||
73104 | #ifdef CONFIG_TRACING | 72907 | #ifdef CONFIG_TRACING |
73105 | @@ -205,6 +217,13 @@ found: | 72908 | @@ -185,6 +196,13 @@ static __always_inline void *kmalloc_node(size_t size, gfp_t flags, int node) |
73106 | cachep = malloc_sizes[i].cs_dmacachep; | 72909 | cachep = kmalloc_dma_caches[i]; |
73107 | else | 72910 | else |
73108 | #endif | 72911 | #endif |
73109 | + | 72912 | + |
73110 | +#ifdef CONFIG_PAX_USERCOPY_SLABS | 72913 | +#ifdef CONFIG_PAX_USERCOPY_SLABS |
73111 | + if (flags & GFP_USERCOPY) | 72914 | + if (flags & GFP_USERCOPY) |
73112 | + cachep = malloc_sizes[i].cs_usercopycachep; | 72915 | + cachep = kmalloc_usercopy_caches[i]; |
73113 | + else | 72916 | + else |
73114 | +#endif | 72917 | +#endif |
73115 | + | 72918 | + |
73116 | cachep = malloc_sizes[i].cs_cachep; | 72919 | cachep = kmalloc_caches[i]; |
73117 | 72920 | ||
73118 | return kmem_cache_alloc_node_trace(cachep, flags, node, size); | 72921 | return kmem_cache_alloc_node_trace(cachep, flags, node, size); |
73119 | diff --git a/include/linux/slob_def.h b/include/linux/slob_def.h | 72922 | diff --git a/include/linux/slob_def.h b/include/linux/slob_def.h |
@@ -73139,10 +72942,10 @@ index f28e14a..7831211 100644 | |||
73139 | return kmalloc(size, flags); | 72942 | return kmalloc(size, flags); |
73140 | } | 72943 | } |
73141 | diff --git a/include/linux/slub_def.h b/include/linux/slub_def.h | 72944 | diff --git a/include/linux/slub_def.h b/include/linux/slub_def.h |
73142 | index 9db4825..ed42fb5 100644 | 72945 | index 027276f..092bfe8 100644 |
73143 | --- a/include/linux/slub_def.h | 72946 | --- a/include/linux/slub_def.h |
73144 | +++ b/include/linux/slub_def.h | 72947 | +++ b/include/linux/slub_def.h |
73145 | @@ -91,7 +91,7 @@ struct kmem_cache { | 72948 | @@ -80,7 +80,7 @@ struct kmem_cache { |
73146 | struct kmem_cache_order_objects max; | 72949 | struct kmem_cache_order_objects max; |
73147 | struct kmem_cache_order_objects min; | 72950 | struct kmem_cache_order_objects min; |
73148 | gfp_t allocflags; /* gfp flags to use on each alloc */ | 72951 | gfp_t allocflags; /* gfp flags to use on each alloc */ |
@@ -73151,17 +72954,8 @@ index 9db4825..ed42fb5 100644 | |||
73151 | void (*ctor)(void *); | 72954 | void (*ctor)(void *); |
73152 | int inuse; /* Offset to metadata */ | 72955 | int inuse; /* Offset to metadata */ |
73153 | int align; /* Alignment */ | 72956 | int align; /* Alignment */ |
73154 | @@ -156,7 +156,7 @@ extern struct kmem_cache *kmalloc_caches[SLUB_PAGE_SHIFT]; | 72957 | @@ -105,7 +105,7 @@ struct kmem_cache { |
73155 | * Sorry that the following has to be that ugly but some versions of GCC | 72958 | }; |
73156 | * have trouble with constant propagation and loops. | ||
73157 | */ | ||
73158 | -static __always_inline int kmalloc_index(size_t size) | ||
73159 | +static __always_inline __size_overflow(1) int kmalloc_index(size_t size) | ||
73160 | { | ||
73161 | if (!size) | ||
73162 | return 0; | ||
73163 | @@ -221,7 +221,7 @@ static __always_inline struct kmem_cache *kmalloc_slab(size_t size) | ||
73164 | } | ||
73165 | 72959 | ||
73166 | void *kmem_cache_alloc(struct kmem_cache *, gfp_t); | 72960 | void *kmem_cache_alloc(struct kmem_cache *, gfp_t); |
73167 | -void *__kmalloc(size_t size, gfp_t flags); | 72961 | -void *__kmalloc(size_t size, gfp_t flags); |
@@ -73169,7 +72963,7 @@ index 9db4825..ed42fb5 100644 | |||
73169 | 72963 | ||
73170 | static __always_inline void * | 72964 | static __always_inline void * |
73171 | kmalloc_order(size_t size, gfp_t flags, unsigned int order) | 72965 | kmalloc_order(size_t size, gfp_t flags, unsigned int order) |
73172 | @@ -265,7 +265,7 @@ kmalloc_order_trace(size_t size, gfp_t flags, unsigned int order) | 72966 | @@ -149,7 +149,7 @@ kmalloc_order_trace(size_t size, gfp_t flags, unsigned int order) |
73173 | } | 72967 | } |
73174 | #endif | 72968 | #endif |
73175 | 72969 | ||
@@ -73178,7 +72972,7 @@ index 9db4825..ed42fb5 100644 | |||
73178 | { | 72972 | { |
73179 | unsigned int order = get_order(size); | 72973 | unsigned int order = get_order(size); |
73180 | return kmalloc_order_trace(size, flags, order); | 72974 | return kmalloc_order_trace(size, flags, order); |
73181 | @@ -290,7 +290,7 @@ static __always_inline void *kmalloc(size_t size, gfp_t flags) | 72975 | @@ -175,7 +175,7 @@ static __always_inline void *kmalloc(size_t size, gfp_t flags) |
73182 | } | 72976 | } |
73183 | 72977 | ||
73184 | #ifdef CONFIG_NUMA | 72978 | #ifdef CONFIG_NUMA |
@@ -73188,10 +72982,10 @@ index 9db4825..ed42fb5 100644 | |||
73188 | 72982 | ||
73189 | #ifdef CONFIG_TRACING | 72983 | #ifdef CONFIG_TRACING |
73190 | diff --git a/include/linux/sock_diag.h b/include/linux/sock_diag.h | 72984 | diff --git a/include/linux/sock_diag.h b/include/linux/sock_diag.h |
73191 | index e8d702e..0a56eb4 100644 | 72985 | index 54f91d3..be2c379 100644 |
73192 | --- a/include/linux/sock_diag.h | 72986 | --- a/include/linux/sock_diag.h |
73193 | +++ b/include/linux/sock_diag.h | 72987 | +++ b/include/linux/sock_diag.h |
73194 | @@ -10,7 +10,7 @@ struct sock; | 72988 | @@ -11,7 +11,7 @@ struct sock; |
73195 | struct sock_diag_handler { | 72989 | struct sock_diag_handler { |
73196 | __u8 family; | 72990 | __u8 family; |
73197 | int (*dump)(struct sk_buff *skb, struct nlmsghdr *nlh); | 72991 | int (*dump)(struct sk_buff *skb, struct nlmsghdr *nlh); |
@@ -73248,7 +73042,7 @@ index 07d8e53..dc934c9 100644 | |||
73248 | 73042 | ||
73249 | #endif /* _LINUX_SUNRPC_ADDR_H */ | 73043 | #endif /* _LINUX_SUNRPC_ADDR_H */ |
73250 | diff --git a/include/linux/sunrpc/clnt.h b/include/linux/sunrpc/clnt.h | 73044 | diff --git a/include/linux/sunrpc/clnt.h b/include/linux/sunrpc/clnt.h |
73251 | index 2cf4ffa..470d140 100644 | 73045 | index bfe11be..12bc8c4 100644 |
73252 | --- a/include/linux/sunrpc/clnt.h | 73046 | --- a/include/linux/sunrpc/clnt.h |
73253 | +++ b/include/linux/sunrpc/clnt.h | 73047 | +++ b/include/linux/sunrpc/clnt.h |
73254 | @@ -96,7 +96,7 @@ struct rpc_procinfo { | 73048 | @@ -96,7 +96,7 @@ struct rpc_procinfo { |
@@ -73330,10 +73124,25 @@ index a5ffd32..0935dea 100644 | |||
73330 | extern dma_addr_t swiotlb_map_page(struct device *dev, struct page *page, | 73124 | extern dma_addr_t swiotlb_map_page(struct device *dev, struct page *page, |
73331 | unsigned long offset, size_t size, | 73125 | unsigned long offset, size_t size, |
73332 | diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h | 73126 | diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h |
73333 | index 313a8e0..6b273a9 100644 | 73127 | index 4147d70..d356a10 100644 |
73334 | --- a/include/linux/syscalls.h | 73128 | --- a/include/linux/syscalls.h |
73335 | +++ b/include/linux/syscalls.h | 73129 | +++ b/include/linux/syscalls.h |
73336 | @@ -418,11 +418,11 @@ asmlinkage long sys_sync(void); | 73130 | @@ -97,8 +97,12 @@ struct sigaltstack; |
73131 | #define __MAP(n,...) __MAP##n(__VA_ARGS__) | ||
73132 | |||
73133 | #define __SC_DECL(t, a) t a | ||
73134 | -#define __TYPE_IS_LL(t) (__same_type((t)0, 0LL) || __same_type((t)0, 0ULL)) | ||
73135 | -#define __SC_LONG(t, a) __typeof(__builtin_choose_expr(__TYPE_IS_LL(t), 0LL, 0L)) a | ||
73136 | +#define __TYPE_IS_SL(t) (__same_type((t)0, 0L)) | ||
73137 | +#define __TYPE_IS_UL(t) (__same_type((t)0, 0UL)) | ||
73138 | +#define __TYPE_IS_SLL(t) (__same_type((t)0, 0LL)) | ||
73139 | +#define __TYPE_IS_ULL(t) (__same_type((t)0, 0ULL)) | ||
73140 | +#define __TYPE_IS_LL(t) (__TYPE_IS_SLL(t) || __TYPE_IS_ULL(t)) | ||
73141 | +#define __SC_LONG(t, a) __typeof(__builtin_choose_expr(__TYPE_IS_LL(t), __builtin_choose_expr(__TYPE_IS_ULL(t), 0ULL, 0LL), __builtin_choose_expr(__TYPE_IS_UL(t), 0UL, 0L))) a | ||
73142 | #define __SC_CAST(t, a) (t) a | ||
73143 | #define __SC_ARGS(t, a) a | ||
73144 | #define __SC_TEST(t, a) (void)BUILD_BUG_ON_ZERO(!__TYPE_IS_LL(t) && sizeof(t) > sizeof(long)) | ||
73145 | @@ -362,11 +366,11 @@ asmlinkage long sys_sync(void); | ||
73337 | asmlinkage long sys_fsync(unsigned int fd); | 73146 | asmlinkage long sys_fsync(unsigned int fd); |
73338 | asmlinkage long sys_fdatasync(unsigned int fd); | 73147 | asmlinkage long sys_fdatasync(unsigned int fd); |
73339 | asmlinkage long sys_bdflush(int func, long data); | 73148 | asmlinkage long sys_bdflush(int func, long data); |
@@ -73349,7 +73158,7 @@ index 313a8e0..6b273a9 100644 | |||
73349 | asmlinkage long sys_truncate(const char __user *path, long length); | 73158 | asmlinkage long sys_truncate(const char __user *path, long length); |
73350 | asmlinkage long sys_ftruncate(unsigned int fd, unsigned long length); | 73159 | asmlinkage long sys_ftruncate(unsigned int fd, unsigned long length); |
73351 | asmlinkage long sys_stat(const char __user *filename, | 73160 | asmlinkage long sys_stat(const char __user *filename, |
73352 | @@ -634,7 +634,7 @@ asmlinkage long sys_getsockname(int, struct sockaddr __user *, int __user *); | 73161 | @@ -578,7 +582,7 @@ asmlinkage long sys_getsockname(int, struct sockaddr __user *, int __user *); |
73353 | asmlinkage long sys_getpeername(int, struct sockaddr __user *, int __user *); | 73162 | asmlinkage long sys_getpeername(int, struct sockaddr __user *, int __user *); |
73354 | asmlinkage long sys_send(int, void __user *, size_t, unsigned); | 73163 | asmlinkage long sys_send(int, void __user *, size_t, unsigned); |
73355 | asmlinkage long sys_sendto(int, void __user *, size_t, unsigned, | 73164 | asmlinkage long sys_sendto(int, void __user *, size_t, unsigned, |
@@ -73479,7 +73288,7 @@ index e7e0473..7989295 100644 | |||
73479 | 73288 | ||
73480 | #endif /* _LINUX_THREAD_INFO_H */ | 73289 | #endif /* _LINUX_THREAD_INFO_H */ |
73481 | diff --git a/include/linux/tty.h b/include/linux/tty.h | 73290 | diff --git a/include/linux/tty.h b/include/linux/tty.h |
73482 | index c75d886..04cb148 100644 | 73291 | index 8780bd2..d1ae08b 100644 |
73483 | --- a/include/linux/tty.h | 73292 | --- a/include/linux/tty.h |
73484 | +++ b/include/linux/tty.h | 73293 | +++ b/include/linux/tty.h |
73485 | @@ -194,7 +194,7 @@ struct tty_port { | 73294 | @@ -194,7 +194,7 @@ struct tty_port { |
@@ -73491,7 +73300,7 @@ index c75d886..04cb148 100644 | |||
73491 | wait_queue_head_t open_wait; /* Open waiters */ | 73300 | wait_queue_head_t open_wait; /* Open waiters */ |
73492 | wait_queue_head_t close_wait; /* Close waiters */ | 73301 | wait_queue_head_t close_wait; /* Close waiters */ |
73493 | wait_queue_head_t delta_msr_wait; /* Modem status change */ | 73302 | wait_queue_head_t delta_msr_wait; /* Modem status change */ |
73494 | @@ -515,7 +515,7 @@ extern int tty_port_open(struct tty_port *port, | 73303 | @@ -550,7 +550,7 @@ extern int tty_port_open(struct tty_port *port, |
73495 | struct tty_struct *tty, struct file *filp); | 73304 | struct tty_struct *tty, struct file *filp); |
73496 | static inline int tty_port_users(struct tty_port *port) | 73305 | static inline int tty_port_users(struct tty_port *port) |
73497 | { | 73306 | { |
@@ -73514,13 +73323,13 @@ index 756a609..b302dd6 100644 | |||
73514 | struct tty_driver { | 73323 | struct tty_driver { |
73515 | int magic; /* magic number for this structure */ | 73324 | int magic; /* magic number for this structure */ |
73516 | diff --git a/include/linux/tty_ldisc.h b/include/linux/tty_ldisc.h | 73325 | diff --git a/include/linux/tty_ldisc.h b/include/linux/tty_ldisc.h |
73517 | index 455a0d7..bf97ff5 100644 | 73326 | index 58390c7..95e214c 100644 |
73518 | --- a/include/linux/tty_ldisc.h | 73327 | --- a/include/linux/tty_ldisc.h |
73519 | +++ b/include/linux/tty_ldisc.h | 73328 | +++ b/include/linux/tty_ldisc.h |
73520 | @@ -146,7 +146,7 @@ struct tty_ldisc_ops { | 73329 | @@ -146,7 +146,7 @@ struct tty_ldisc_ops { |
73521 | 73330 | ||
73522 | struct module *owner; | 73331 | struct module *owner; |
73523 | 73332 | ||
73524 | - int refcount; | 73333 | - int refcount; |
73525 | + atomic_t refcount; | 73334 | + atomic_t refcount; |
73526 | }; | 73335 | }; |
@@ -73642,10 +73451,10 @@ index 99c1b4d..562e6f3 100644 | |||
73642 | 73451 | ||
73643 | static inline void put_unaligned_le16(u16 val, void *p) | 73452 | static inline void put_unaligned_le16(u16 val, void *p) |
73644 | diff --git a/include/linux/usb.h b/include/linux/usb.h | 73453 | diff --git a/include/linux/usb.h b/include/linux/usb.h |
73645 | index 4d22d0f..8d0e8f8 100644 | 73454 | index a0bee5a..5533a52 100644 |
73646 | --- a/include/linux/usb.h | 73455 | --- a/include/linux/usb.h |
73647 | +++ b/include/linux/usb.h | 73456 | +++ b/include/linux/usb.h |
73648 | @@ -554,7 +554,7 @@ struct usb_device { | 73457 | @@ -552,7 +552,7 @@ struct usb_device { |
73649 | int maxchild; | 73458 | int maxchild; |
73650 | 73459 | ||
73651 | u32 quirks; | 73460 | u32 quirks; |
@@ -73654,7 +73463,7 @@ index 4d22d0f..8d0e8f8 100644 | |||
73654 | 73463 | ||
73655 | unsigned long active_duration; | 73464 | unsigned long active_duration; |
73656 | 73465 | ||
73657 | @@ -1604,7 +1604,7 @@ void usb_buffer_unmap_sg(const struct usb_device *dev, int is_in, | 73466 | @@ -1607,7 +1607,7 @@ void usb_buffer_unmap_sg(const struct usb_device *dev, int is_in, |
73658 | 73467 | ||
73659 | extern int usb_control_msg(struct usb_device *dev, unsigned int pipe, | 73468 | extern int usb_control_msg(struct usb_device *dev, unsigned int pipe, |
73660 | __u8 request, __u8 requesttype, __u16 value, __u16 index, | 73469 | __u8 request, __u8 requesttype, __u16 value, __u16 index, |
@@ -73664,7 +73473,7 @@ index 4d22d0f..8d0e8f8 100644 | |||
73664 | void *data, int len, int *actual_length, int timeout); | 73473 | void *data, int len, int *actual_length, int timeout); |
73665 | extern int usb_bulk_msg(struct usb_device *usb_dev, unsigned int pipe, | 73474 | extern int usb_bulk_msg(struct usb_device *usb_dev, unsigned int pipe, |
73666 | diff --git a/include/linux/usb/renesas_usbhs.h b/include/linux/usb/renesas_usbhs.h | 73475 | diff --git a/include/linux/usb/renesas_usbhs.h b/include/linux/usb/renesas_usbhs.h |
73667 | index c5d36c6..108f4f9 100644 | 73476 | index e452ba6..78f8e80 100644 |
73668 | --- a/include/linux/usb/renesas_usbhs.h | 73477 | --- a/include/linux/usb/renesas_usbhs.h |
73669 | +++ b/include/linux/usb/renesas_usbhs.h | 73478 | +++ b/include/linux/usb/renesas_usbhs.h |
73670 | @@ -39,7 +39,7 @@ enum { | 73479 | @@ -39,7 +39,7 @@ enum { |
@@ -73718,10 +73527,10 @@ index 6f8fbcf..8259001 100644 | |||
73718 | + MODULE_GRSEC | 73527 | + MODULE_GRSEC |
73719 | 73528 | ||
73720 | diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h | 73529 | diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h |
73721 | index 6071e91..4c73b47 100644 | 73530 | index 7d5773a..541c01c 100644 |
73722 | --- a/include/linux/vmalloc.h | 73531 | --- a/include/linux/vmalloc.h |
73723 | +++ b/include/linux/vmalloc.h | 73532 | +++ b/include/linux/vmalloc.h |
73724 | @@ -14,6 +14,11 @@ struct vm_area_struct; /* vma defining user mapping in mm_types.h */ | 73533 | @@ -16,6 +16,11 @@ struct vm_area_struct; /* vma defining user mapping in mm_types.h */ |
73725 | #define VM_USERMAP 0x00000008 /* suitable for remap_vmalloc_range */ | 73534 | #define VM_USERMAP 0x00000008 /* suitable for remap_vmalloc_range */ |
73726 | #define VM_VPAGES 0x00000010 /* buffer for pages was vmalloc'ed */ | 73535 | #define VM_VPAGES 0x00000010 /* buffer for pages was vmalloc'ed */ |
73727 | #define VM_UNLIST 0x00000020 /* vm_struct is not listed in vmlist */ | 73536 | #define VM_UNLIST 0x00000020 /* vm_struct is not listed in vmlist */ |
@@ -73733,7 +73542,7 @@ index 6071e91..4c73b47 100644 | |||
73733 | /* bits [20..32] reserved for arch specific ioremap internals */ | 73542 | /* bits [20..32] reserved for arch specific ioremap internals */ |
73734 | 73543 | ||
73735 | /* | 73544 | /* |
73736 | @@ -62,7 +67,7 @@ extern void *vmalloc_32_user(unsigned long size); | 73545 | @@ -75,7 +80,7 @@ extern void *vmalloc_32_user(unsigned long size); |
73737 | extern void *__vmalloc(unsigned long size, gfp_t gfp_mask, pgprot_t prot); | 73546 | extern void *__vmalloc(unsigned long size, gfp_t gfp_mask, pgprot_t prot); |
73738 | extern void *__vmalloc_node_range(unsigned long size, unsigned long align, | 73547 | extern void *__vmalloc_node_range(unsigned long size, unsigned long align, |
73739 | unsigned long start, unsigned long end, gfp_t gfp_mask, | 73548 | unsigned long start, unsigned long end, gfp_t gfp_mask, |
@@ -73742,7 +73551,7 @@ index 6071e91..4c73b47 100644 | |||
73742 | extern void vfree(const void *addr); | 73551 | extern void vfree(const void *addr); |
73743 | 73552 | ||
73744 | extern void *vmap(struct page **pages, unsigned int count, | 73553 | extern void *vmap(struct page **pages, unsigned int count, |
73745 | @@ -124,8 +129,8 @@ extern struct vm_struct *alloc_vm_area(size_t size, pte_t **ptes); | 73554 | @@ -137,8 +142,8 @@ extern struct vm_struct *alloc_vm_area(size_t size, pte_t **ptes); |
73746 | extern void free_vm_area(struct vm_struct *area); | 73555 | extern void free_vm_area(struct vm_struct *area); |
73747 | 73556 | ||
73748 | /* for /dev/kmem */ | 73557 | /* for /dev/kmem */ |
@@ -73754,10 +73563,10 @@ index 6071e91..4c73b47 100644 | |||
73754 | /* | 73563 | /* |
73755 | * Internals. Dont't use.. | 73564 | * Internals. Dont't use.. |
73756 | diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h | 73565 | diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h |
73757 | index 5fd71a7..e5ef9a9 100644 | 73566 | index c586679..f06b389 100644 |
73758 | --- a/include/linux/vmstat.h | 73567 | --- a/include/linux/vmstat.h |
73759 | +++ b/include/linux/vmstat.h | 73568 | +++ b/include/linux/vmstat.h |
73760 | @@ -95,18 +95,18 @@ static inline void vm_events_fold_cpu(int cpu) | 73569 | @@ -90,18 +90,18 @@ static inline void vm_events_fold_cpu(int cpu) |
73761 | /* | 73570 | /* |
73762 | * Zone based page accounting with per cpu differentials. | 73571 | * Zone based page accounting with per cpu differentials. |
73763 | */ | 73572 | */ |
@@ -73780,7 +73589,7 @@ index 5fd71a7..e5ef9a9 100644 | |||
73780 | #ifdef CONFIG_SMP | 73589 | #ifdef CONFIG_SMP |
73781 | if (x < 0) | 73590 | if (x < 0) |
73782 | x = 0; | 73591 | x = 0; |
73783 | @@ -117,7 +117,7 @@ static inline unsigned long global_page_state(enum zone_stat_item item) | 73592 | @@ -112,7 +112,7 @@ static inline unsigned long global_page_state(enum zone_stat_item item) |
73784 | static inline unsigned long zone_page_state(struct zone *zone, | 73593 | static inline unsigned long zone_page_state(struct zone *zone, |
73785 | enum zone_stat_item item) | 73594 | enum zone_stat_item item) |
73786 | { | 73595 | { |
@@ -73789,7 +73598,7 @@ index 5fd71a7..e5ef9a9 100644 | |||
73789 | #ifdef CONFIG_SMP | 73598 | #ifdef CONFIG_SMP |
73790 | if (x < 0) | 73599 | if (x < 0) |
73791 | x = 0; | 73600 | x = 0; |
73792 | @@ -134,7 +134,7 @@ static inline unsigned long zone_page_state(struct zone *zone, | 73601 | @@ -129,7 +129,7 @@ static inline unsigned long zone_page_state(struct zone *zone, |
73793 | static inline unsigned long zone_page_state_snapshot(struct zone *zone, | 73602 | static inline unsigned long zone_page_state_snapshot(struct zone *zone, |
73794 | enum zone_stat_item item) | 73603 | enum zone_stat_item item) |
73795 | { | 73604 | { |
@@ -73798,7 +73607,7 @@ index 5fd71a7..e5ef9a9 100644 | |||
73798 | 73607 | ||
73799 | #ifdef CONFIG_SMP | 73608 | #ifdef CONFIG_SMP |
73800 | int cpu; | 73609 | int cpu; |
73801 | @@ -226,8 +226,8 @@ static inline void __mod_zone_page_state(struct zone *zone, | 73610 | @@ -221,8 +221,8 @@ static inline void __mod_zone_page_state(struct zone *zone, |
73802 | 73611 | ||
73803 | static inline void __inc_zone_state(struct zone *zone, enum zone_stat_item item) | 73612 | static inline void __inc_zone_state(struct zone *zone, enum zone_stat_item item) |
73804 | { | 73613 | { |
@@ -73809,7 +73618,7 @@ index 5fd71a7..e5ef9a9 100644 | |||
73809 | } | 73618 | } |
73810 | 73619 | ||
73811 | static inline void __inc_zone_page_state(struct page *page, | 73620 | static inline void __inc_zone_page_state(struct page *page, |
73812 | @@ -238,8 +238,8 @@ static inline void __inc_zone_page_state(struct page *page, | 73621 | @@ -233,8 +233,8 @@ static inline void __inc_zone_page_state(struct page *page, |
73813 | 73622 | ||
73814 | static inline void __dec_zone_state(struct zone *zone, enum zone_stat_item item) | 73623 | static inline void __dec_zone_state(struct zone *zone, enum zone_stat_item item) |
73815 | { | 73624 | { |
@@ -73877,18 +73686,6 @@ index 95d1c91..6798cca 100644 | |||
73877 | 73686 | ||
73878 | /* | 73687 | /* |
73879 | * Newer version of video_device, handled by videodev2.c | 73688 | * Newer version of video_device, handled by videodev2.c |
73880 | diff --git a/include/media/v4l2-ioctl.h b/include/media/v4l2-ioctl.h | ||
73881 | index 4118ad1..cb7e25f 100644 | ||
73882 | --- a/include/media/v4l2-ioctl.h | ||
73883 | +++ b/include/media/v4l2-ioctl.h | ||
73884 | @@ -284,7 +284,6 @@ struct v4l2_ioctl_ops { | ||
73885 | bool valid_prio, int cmd, void *arg); | ||
73886 | }; | ||
73887 | |||
73888 | - | ||
73889 | /* v4l debugging and diagnostics */ | ||
73890 | |||
73891 | /* Debug bitmask flags to be used on V4L2 */ | ||
73892 | diff --git a/include/net/9p/transport.h b/include/net/9p/transport.h | 73689 | diff --git a/include/net/9p/transport.h b/include/net/9p/transport.h |
73893 | index adcbb20..62c2559 100644 | 73690 | index adcbb20..62c2559 100644 |
73894 | --- a/include/net/9p/transport.h | 73691 | --- a/include/net/9p/transport.h |
@@ -73902,22 +73699,8 @@ index adcbb20..62c2559 100644 | |||
73902 | 73699 | ||
73903 | void v9fs_register_trans(struct p9_trans_module *m); | 73700 | void v9fs_register_trans(struct p9_trans_module *m); |
73904 | void v9fs_unregister_trans(struct p9_trans_module *m); | 73701 | void v9fs_unregister_trans(struct p9_trans_module *m); |
73905 | diff --git a/include/net/addrconf.h b/include/net/addrconf.h | ||
73906 | index 84a6440..dbc6db7 100644 | ||
73907 | --- a/include/net/addrconf.h | ||
73908 | +++ b/include/net/addrconf.h | ||
73909 | @@ -86,6 +86,9 @@ extern int ipv6_dev_get_saddr(struct net *net, | ||
73910 | const struct in6_addr *daddr, | ||
73911 | unsigned int srcprefs, | ||
73912 | struct in6_addr *saddr); | ||
73913 | +extern int __ipv6_get_lladdr(struct inet6_dev *idev, | ||
73914 | + struct in6_addr *addr, | ||
73915 | + unsigned char banned_flags); | ||
73916 | extern int ipv6_get_lladdr(struct net_device *dev, | ||
73917 | struct in6_addr *addr, | ||
73918 | unsigned char banned_flags); | ||
73919 | diff --git a/include/net/bluetooth/l2cap.h b/include/net/bluetooth/l2cap.h | 73702 | diff --git a/include/net/bluetooth/l2cap.h b/include/net/bluetooth/l2cap.h |
73920 | index cdd3302..76f8ede 100644 | 73703 | index fb94cf1..7c0c987 100644 |
73921 | --- a/include/net/bluetooth/l2cap.h | 73704 | --- a/include/net/bluetooth/l2cap.h |
73922 | +++ b/include/net/bluetooth/l2cap.h | 73705 | +++ b/include/net/bluetooth/l2cap.h |
73923 | @@ -551,7 +551,7 @@ struct l2cap_ops { | 73706 | @@ -551,7 +551,7 @@ struct l2cap_ops { |
@@ -73930,7 +73713,7 @@ index cdd3302..76f8ede 100644 | |||
73930 | struct l2cap_conn { | 73713 | struct l2cap_conn { |
73931 | struct hci_conn *hcon; | 73714 | struct hci_conn *hcon; |
73932 | diff --git a/include/net/caif/cfctrl.h b/include/net/caif/cfctrl.h | 73715 | diff --git a/include/net/caif/cfctrl.h b/include/net/caif/cfctrl.h |
73933 | index 9e5425b..8136ffc 100644 | 73716 | index f2ae33d..c457cf0 100644 |
73934 | --- a/include/net/caif/cfctrl.h | 73717 | --- a/include/net/caif/cfctrl.h |
73935 | +++ b/include/net/caif/cfctrl.h | 73718 | +++ b/include/net/caif/cfctrl.h |
73936 | @@ -52,7 +52,7 @@ struct cfctrl_rsp { | 73719 | @@ -52,7 +52,7 @@ struct cfctrl_rsp { |
@@ -73966,10 +73749,10 @@ index 628e11b..4c475df 100644 | |||
73966 | 73749 | ||
73967 | #endif | 73750 | #endif |
73968 | diff --git a/include/net/genetlink.h b/include/net/genetlink.h | 73751 | diff --git a/include/net/genetlink.h b/include/net/genetlink.h |
73969 | index bdfbe68..4402ebe 100644 | 73752 | index 93024a4..eeb6b6e 100644 |
73970 | --- a/include/net/genetlink.h | 73753 | --- a/include/net/genetlink.h |
73971 | +++ b/include/net/genetlink.h | 73754 | +++ b/include/net/genetlink.h |
73972 | @@ -118,7 +118,7 @@ struct genl_ops { | 73755 | @@ -119,7 +119,7 @@ struct genl_ops { |
73973 | struct netlink_callback *cb); | 73756 | struct netlink_callback *cb); |
73974 | int (*done)(struct netlink_callback *cb); | 73757 | int (*done)(struct netlink_callback *cb); |
73975 | struct list_head ops_list; | 73758 | struct list_head ops_list; |
@@ -73992,7 +73775,7 @@ index 734d9b5..48a9a4b 100644 | |||
73992 | return; | 73775 | return; |
73993 | } | 73776 | } |
73994 | diff --git a/include/net/inet_connection_sock.h b/include/net/inet_connection_sock.h | 73777 | diff --git a/include/net/inet_connection_sock.h b/include/net/inet_connection_sock.h |
73995 | index 1832927..ce39aea 100644 | 73778 | index de2c785..0588a6b 100644 |
73996 | --- a/include/net/inet_connection_sock.h | 73779 | --- a/include/net/inet_connection_sock.h |
73997 | +++ b/include/net/inet_connection_sock.h | 73780 | +++ b/include/net/inet_connection_sock.h |
73998 | @@ -62,7 +62,7 @@ struct inet_connection_sock_af_ops { | 73781 | @@ -62,7 +62,7 @@ struct inet_connection_sock_af_ops { |
@@ -74060,10 +73843,10 @@ index e49db91..76a81de 100644 | |||
74060 | fib_info_update_nh_saddr((net), &FIB_RES_NH(res))) | 73843 | fib_info_update_nh_saddr((net), &FIB_RES_NH(res))) |
74061 | #define FIB_RES_GW(res) (FIB_RES_NH(res).nh_gw) | 73844 | #define FIB_RES_GW(res) (FIB_RES_NH(res).nh_gw) |
74062 | diff --git a/include/net/ip_vs.h b/include/net/ip_vs.h | 73845 | diff --git a/include/net/ip_vs.h b/include/net/ip_vs.h |
74063 | index fce8e6b..3ca4916 100644 | 73846 | index 4c062cc..3562c31 100644 |
74064 | --- a/include/net/ip_vs.h | 73847 | --- a/include/net/ip_vs.h |
74065 | +++ b/include/net/ip_vs.h | 73848 | +++ b/include/net/ip_vs.h |
74066 | @@ -599,7 +599,7 @@ struct ip_vs_conn { | 73849 | @@ -612,7 +612,7 @@ struct ip_vs_conn { |
74067 | struct ip_vs_conn *control; /* Master control connection */ | 73850 | struct ip_vs_conn *control; /* Master control connection */ |
74068 | atomic_t n_control; /* Number of controlled ones */ | 73851 | atomic_t n_control; /* Number of controlled ones */ |
74069 | struct ip_vs_dest *dest; /* real server */ | 73852 | struct ip_vs_dest *dest; /* real server */ |
@@ -74072,7 +73855,7 @@ index fce8e6b..3ca4916 100644 | |||
74072 | 73855 | ||
74073 | /* packet transmitter for different forwarding methods. If it | 73856 | /* packet transmitter for different forwarding methods. If it |
74074 | mangles the packet, it must return NF_DROP or better NF_STOLEN, | 73857 | mangles the packet, it must return NF_DROP or better NF_STOLEN, |
74075 | @@ -737,7 +737,7 @@ struct ip_vs_dest { | 73858 | @@ -761,7 +761,7 @@ struct ip_vs_dest { |
74076 | __be16 port; /* port number of the server */ | 73859 | __be16 port; /* port number of the server */ |
74077 | union nf_inet_addr addr; /* IP address of the server */ | 73860 | union nf_inet_addr addr; /* IP address of the server */ |
74078 | volatile unsigned int flags; /* dest status flags */ | 73861 | volatile unsigned int flags; /* dest status flags */ |
@@ -74081,7 +73864,7 @@ index fce8e6b..3ca4916 100644 | |||
74081 | atomic_t weight; /* server weight */ | 73864 | atomic_t weight; /* server weight */ |
74082 | 73865 | ||
74083 | atomic_t refcnt; /* reference counter */ | 73866 | atomic_t refcnt; /* reference counter */ |
74084 | @@ -981,11 +981,11 @@ struct netns_ipvs { | 73867 | @@ -1013,11 +1013,11 @@ struct netns_ipvs { |
74085 | /* ip_vs_lblc */ | 73868 | /* ip_vs_lblc */ |
74086 | int sysctl_lblc_expiration; | 73869 | int sysctl_lblc_expiration; |
74087 | struct ctl_table_header *lblc_ctl_header; | 73870 | struct ctl_table_header *lblc_ctl_header; |
@@ -74188,10 +73971,10 @@ index 567c681..cd73ac0 100644 | |||
74188 | struct llc_sap_state { | 73971 | struct llc_sap_state { |
74189 | u8 curr_state; | 73972 | u8 curr_state; |
74190 | diff --git a/include/net/mac80211.h b/include/net/mac80211.h | 73973 | diff --git a/include/net/mac80211.h b/include/net/mac80211.h |
74191 | index f7eba13..91ed983 100644 | 73974 | index 885898a..cdace34 100644 |
74192 | --- a/include/net/mac80211.h | 73975 | --- a/include/net/mac80211.h |
74193 | +++ b/include/net/mac80211.h | 73976 | +++ b/include/net/mac80211.h |
74194 | @@ -4119,7 +4119,7 @@ struct rate_control_ops { | 73977 | @@ -4205,7 +4205,7 @@ struct rate_control_ops { |
74195 | void (*add_sta_debugfs)(void *priv, void *priv_sta, | 73978 | void (*add_sta_debugfs)(void *priv, void *priv_sta, |
74196 | struct dentry *dir); | 73979 | struct dentry *dir); |
74197 | void (*remove_sta_debugfs)(void *priv, void *priv_sta); | 73980 | void (*remove_sta_debugfs)(void *priv, void *priv_sta); |
@@ -74214,10 +73997,10 @@ index 7e748ad..5c6229b 100644 | |||
74214 | struct pneigh_entry { | 73997 | struct pneigh_entry { |
74215 | struct pneigh_entry *next; | 73998 | struct pneigh_entry *next; |
74216 | diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h | 73999 | diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h |
74217 | index de644bc..dfbcc4c 100644 | 74000 | index b176978..ea169f4 100644 |
74218 | --- a/include/net/net_namespace.h | 74001 | --- a/include/net/net_namespace.h |
74219 | +++ b/include/net/net_namespace.h | 74002 | +++ b/include/net/net_namespace.h |
74220 | @@ -115,7 +115,7 @@ struct net { | 74003 | @@ -117,7 +117,7 @@ struct net { |
74221 | #endif | 74004 | #endif |
74222 | struct netns_ipvs *ipvs; | 74005 | struct netns_ipvs *ipvs; |
74223 | struct sock *diag_nlsk; | 74006 | struct sock *diag_nlsk; |
@@ -74226,7 +74009,7 @@ index de644bc..dfbcc4c 100644 | |||
74226 | }; | 74009 | }; |
74227 | 74010 | ||
74228 | /* | 74011 | /* |
74229 | @@ -272,7 +272,11 @@ static inline struct net *read_pnet(struct net * const *pnet) | 74012 | @@ -274,7 +274,11 @@ static inline struct net *read_pnet(struct net * const *pnet) |
74230 | #define __net_init __init | 74013 | #define __net_init __init |
74231 | #define __net_exit __exit_refok | 74014 | #define __net_exit __exit_refok |
74232 | #define __net_initdata __initdata | 74015 | #define __net_initdata __initdata |
@@ -74238,7 +74021,7 @@ index de644bc..dfbcc4c 100644 | |||
74238 | #endif | 74021 | #endif |
74239 | 74022 | ||
74240 | struct pernet_operations { | 74023 | struct pernet_operations { |
74241 | @@ -282,7 +286,7 @@ struct pernet_operations { | 74024 | @@ -284,7 +288,7 @@ struct pernet_operations { |
74242 | void (*exit_batch)(struct list_head *net_exit_list); | 74025 | void (*exit_batch)(struct list_head *net_exit_list); |
74243 | int *id; | 74026 | int *id; |
74244 | size_t size; | 74027 | size_t size; |
@@ -74247,7 +74030,7 @@ index de644bc..dfbcc4c 100644 | |||
74247 | 74030 | ||
74248 | /* | 74031 | /* |
74249 | * Use these carefully. If you implement a network device and it | 74032 | * Use these carefully. If you implement a network device and it |
74250 | @@ -330,12 +334,12 @@ static inline void unregister_net_sysctl_table(struct ctl_table_header *header) | 74033 | @@ -332,12 +336,12 @@ static inline void unregister_net_sysctl_table(struct ctl_table_header *header) |
74251 | 74034 | ||
74252 | static inline int rt_genid(struct net *net) | 74035 | static inline int rt_genid(struct net *net) |
74253 | { | 74036 | { |
@@ -74327,6 +74110,19 @@ index 2ba9de8..47bd6c7 100644 | |||
74327 | 74110 | ||
74328 | #ifdef CONFIG_IP_MROUTE | 74111 | #ifdef CONFIG_IP_MROUTE |
74329 | #ifndef CONFIG_IP_MROUTE_MULTIPLE_TABLES | 74112 | #ifndef CONFIG_IP_MROUTE_MULTIPLE_TABLES |
74113 | diff --git a/include/net/netns/ipv6.h b/include/net/netns/ipv6.h | ||
74114 | index 005e2c2..023d340 100644 | ||
74115 | --- a/include/net/netns/ipv6.h | ||
74116 | +++ b/include/net/netns/ipv6.h | ||
74117 | @@ -71,7 +71,7 @@ struct netns_ipv6 { | ||
74118 | struct fib_rules_ops *mr6_rules_ops; | ||
74119 | #endif | ||
74120 | #endif | ||
74121 | - atomic_t dev_addr_genid; | ||
74122 | + atomic_unchecked_t dev_addr_genid; | ||
74123 | }; | ||
74124 | |||
74125 | #if IS_ENABLED(CONFIG_NF_DEFRAG_IPV6) | ||
74330 | diff --git a/include/net/protocol.h b/include/net/protocol.h | 74126 | diff --git a/include/net/protocol.h b/include/net/protocol.h |
74331 | index 047c047..b9dad15 100644 | 74127 | index 047c047..b9dad15 100644 |
74332 | --- a/include/net/protocol.h | 74128 | --- a/include/net/protocol.h |
@@ -74350,7 +74146,7 @@ index 047c047..b9dad15 100644 | |||
74350 | #define INET6_PROTO_NOPOLICY 0x1 | 74146 | #define INET6_PROTO_NOPOLICY 0x1 |
74351 | #define INET6_PROTO_FINAL 0x2 | 74147 | #define INET6_PROTO_FINAL 0x2 |
74352 | diff --git a/include/net/rtnetlink.h b/include/net/rtnetlink.h | 74148 | diff --git a/include/net/rtnetlink.h b/include/net/rtnetlink.h |
74353 | index 5a15fab..d799ea7 100644 | 74149 | index 7026648..584cc8c 100644 |
74354 | --- a/include/net/rtnetlink.h | 74150 | --- a/include/net/rtnetlink.h |
74355 | +++ b/include/net/rtnetlink.h | 74151 | +++ b/include/net/rtnetlink.h |
74356 | @@ -81,7 +81,7 @@ struct rtnl_link_ops { | 74152 | @@ -81,7 +81,7 @@ struct rtnl_link_ops { |
@@ -74363,7 +74159,7 @@ index 5a15fab..d799ea7 100644 | |||
74363 | extern int __rtnl_link_register(struct rtnl_link_ops *ops); | 74159 | extern int __rtnl_link_register(struct rtnl_link_ops *ops); |
74364 | extern void __rtnl_link_unregister(struct rtnl_link_ops *ops); | 74160 | extern void __rtnl_link_unregister(struct rtnl_link_ops *ops); |
74365 | diff --git a/include/net/sctp/sctp.h b/include/net/sctp/sctp.h | 74161 | diff --git a/include/net/sctp/sctp.h b/include/net/sctp/sctp.h |
74366 | index df85a0c..19ac300 100644 | 74162 | index cd89510..d67810f 100644 |
74367 | --- a/include/net/sctp/sctp.h | 74163 | --- a/include/net/sctp/sctp.h |
74368 | +++ b/include/net/sctp/sctp.h | 74164 | +++ b/include/net/sctp/sctp.h |
74369 | @@ -330,9 +330,9 @@ do { \ | 74165 | @@ -330,9 +330,9 @@ do { \ |
@@ -74402,10 +74198,10 @@ index 2a82d13..62a31c2 100644 | |||
74402 | 74198 | ||
74403 | /* Get the size of a DATA chunk payload. */ | 74199 | /* Get the size of a DATA chunk payload. */ |
74404 | diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h | 74200 | diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h |
74405 | index 0e0f9d2..cd05ebb 100644 | 74201 | index 1bd4c41..9250b5b 100644 |
74406 | --- a/include/net/sctp/structs.h | 74202 | --- a/include/net/sctp/structs.h |
74407 | +++ b/include/net/sctp/structs.h | 74203 | +++ b/include/net/sctp/structs.h |
74408 | @@ -517,7 +517,7 @@ struct sctp_pf { | 74204 | @@ -516,7 +516,7 @@ struct sctp_pf { |
74409 | struct sctp_association *asoc); | 74205 | struct sctp_association *asoc); |
74410 | void (*addr_v4map) (struct sctp_sock *, union sctp_addr *); | 74206 | void (*addr_v4map) (struct sctp_sock *, union sctp_addr *); |
74411 | struct sctp_af *af; | 74207 | struct sctp_af *af; |
@@ -74414,20 +74210,8 @@ index 0e0f9d2..cd05ebb 100644 | |||
74414 | 74210 | ||
74415 | 74211 | ||
74416 | /* Structure to track chunk fragments that have been acked, but peer | 74212 | /* Structure to track chunk fragments that have been acked, but peer |
74417 | diff --git a/include/net/secure_seq.h b/include/net/secure_seq.h | ||
74418 | index c2e542b..6ca975b 100644 | ||
74419 | --- a/include/net/secure_seq.h | ||
74420 | +++ b/include/net/secure_seq.h | ||
74421 | @@ -3,6 +3,7 @@ | ||
74422 | |||
74423 | #include <linux/types.h> | ||
74424 | |||
74425 | +extern void net_secret_init(void); | ||
74426 | extern __u32 secure_ip_id(__be32 daddr); | ||
74427 | extern __u32 secure_ipv6_id(const __be32 daddr[4]); | ||
74428 | extern u32 secure_ipv4_port_ephemeral(__be32 saddr, __be32 daddr, __be16 dport); | ||
74429 | diff --git a/include/net/sock.h b/include/net/sock.h | 74213 | diff --git a/include/net/sock.h b/include/net/sock.h |
74430 | index 0be480a..586232f 100644 | 74214 | index 66772cf..25bc45b 100644 |
74431 | --- a/include/net/sock.h | 74215 | --- a/include/net/sock.h |
74432 | +++ b/include/net/sock.h | 74216 | +++ b/include/net/sock.h |
74433 | @@ -325,7 +325,7 @@ struct sock { | 74217 | @@ -325,7 +325,7 @@ struct sock { |
@@ -74439,7 +74223,7 @@ index 0be480a..586232f 100644 | |||
74439 | int sk_rcvbuf; | 74223 | int sk_rcvbuf; |
74440 | 74224 | ||
74441 | struct sk_filter __rcu *sk_filter; | 74225 | struct sk_filter __rcu *sk_filter; |
74442 | @@ -1796,7 +1796,7 @@ static inline void sk_nocaps_add(struct sock *sk, netdev_features_t flags) | 74226 | @@ -1797,7 +1797,7 @@ static inline void sk_nocaps_add(struct sock *sk, netdev_features_t flags) |
74443 | } | 74227 | } |
74444 | 74228 | ||
74445 | static inline int skb_do_copy_data_nocache(struct sock *sk, struct sk_buff *skb, | 74229 | static inline int skb_do_copy_data_nocache(struct sock *sk, struct sk_buff *skb, |
@@ -74448,7 +74232,7 @@ index 0be480a..586232f 100644 | |||
74448 | int copy, int offset) | 74232 | int copy, int offset) |
74449 | { | 74233 | { |
74450 | if (skb->ip_summed == CHECKSUM_NONE) { | 74234 | if (skb->ip_summed == CHECKSUM_NONE) { |
74451 | @@ -2055,7 +2055,7 @@ static inline void sk_stream_moderate_sndbuf(struct sock *sk) | 74235 | @@ -2056,7 +2056,7 @@ static inline void sk_stream_moderate_sndbuf(struct sock *sk) |
74452 | } | 74236 | } |
74453 | } | 74237 | } |
74454 | 74238 | ||
@@ -74458,10 +74242,10 @@ index 0be480a..586232f 100644 | |||
74458 | /** | 74242 | /** |
74459 | * sk_page_frag - return an appropriate page_frag | 74243 | * sk_page_frag - return an appropriate page_frag |
74460 | diff --git a/include/net/tcp.h b/include/net/tcp.h | 74244 | diff --git a/include/net/tcp.h b/include/net/tcp.h |
74461 | index a345480..3c65cf4 100644 | 74245 | index 5bba80f..8520a82 100644 |
74462 | --- a/include/net/tcp.h | 74246 | --- a/include/net/tcp.h |
74463 | +++ b/include/net/tcp.h | 74247 | +++ b/include/net/tcp.h |
74464 | @@ -529,7 +529,7 @@ extern void tcp_retransmit_timer(struct sock *sk); | 74248 | @@ -524,7 +524,7 @@ extern void tcp_retransmit_timer(struct sock *sk); |
74465 | extern void tcp_xmit_retransmit_queue(struct sock *); | 74249 | extern void tcp_xmit_retransmit_queue(struct sock *); |
74466 | extern void tcp_simple_retransmit(struct sock *); | 74250 | extern void tcp_simple_retransmit(struct sock *); |
74467 | extern int tcp_trim_head(struct sock *, struct sk_buff *, u32); | 74251 | extern int tcp_trim_head(struct sock *, struct sk_buff *, u32); |
@@ -74470,7 +74254,7 @@ index a345480..3c65cf4 100644 | |||
74470 | 74254 | ||
74471 | extern void tcp_send_probe0(struct sock *); | 74255 | extern void tcp_send_probe0(struct sock *); |
74472 | extern void tcp_send_partial(struct sock *); | 74256 | extern void tcp_send_partial(struct sock *); |
74473 | @@ -700,8 +700,8 @@ struct tcp_skb_cb { | 74257 | @@ -697,8 +697,8 @@ struct tcp_skb_cb { |
74474 | struct inet6_skb_parm h6; | 74258 | struct inet6_skb_parm h6; |
74475 | #endif | 74259 | #endif |
74476 | } header; /* For incoming frames */ | 74260 | } header; /* For incoming frames */ |
@@ -74481,7 +74265,7 @@ index a345480..3c65cf4 100644 | |||
74481 | __u32 when; /* used to compute rtt's */ | 74265 | __u32 when; /* used to compute rtt's */ |
74482 | __u8 tcp_flags; /* TCP header flags. (tcp[13]) */ | 74266 | __u8 tcp_flags; /* TCP header flags. (tcp[13]) */ |
74483 | 74267 | ||
74484 | @@ -715,7 +715,7 @@ struct tcp_skb_cb { | 74268 | @@ -712,7 +712,7 @@ struct tcp_skb_cb { |
74485 | 74269 | ||
74486 | __u8 ip_dsfield; /* IPv4 tos or IPv6 dsfield */ | 74270 | __u8 ip_dsfield; /* IPv4 tos or IPv6 dsfield */ |
74487 | /* 1 byte hole */ | 74271 | /* 1 byte hole */ |
@@ -74490,23 +74274,11 @@ index a345480..3c65cf4 100644 | |||
74490 | }; | 74274 | }; |
74491 | 74275 | ||
74492 | #define TCP_SKB_CB(__skb) ((struct tcp_skb_cb *)&((__skb)->cb[0])) | 74276 | #define TCP_SKB_CB(__skb) ((struct tcp_skb_cb *)&((__skb)->cb[0])) |
74493 | diff --git a/include/net/udp.h b/include/net/udp.h | ||
74494 | index 065f379..ad99eed 100644 | ||
74495 | --- a/include/net/udp.h | ||
74496 | +++ b/include/net/udp.h | ||
74497 | @@ -181,6 +181,7 @@ extern int udp_get_port(struct sock *sk, unsigned short snum, | ||
74498 | extern void udp_err(struct sk_buff *, u32); | ||
74499 | extern int udp_sendmsg(struct kiocb *iocb, struct sock *sk, | ||
74500 | struct msghdr *msg, size_t len); | ||
74501 | +extern int udp_push_pending_frames(struct sock *sk); | ||
74502 | extern void udp_flush_pending_frames(struct sock *sk); | ||
74503 | extern int udp_rcv(struct sk_buff *skb); | ||
74504 | extern int udp_ioctl(struct sock *sk, int cmd, unsigned long arg); | ||
74505 | diff --git a/include/net/xfrm.h b/include/net/xfrm.h | 74277 | diff --git a/include/net/xfrm.h b/include/net/xfrm.h |
74506 | index 24c8886..e6fb816 100644 | 74278 | index 94ce082..62b278d 100644 |
74507 | --- a/include/net/xfrm.h | 74279 | --- a/include/net/xfrm.h |
74508 | +++ b/include/net/xfrm.h | 74280 | +++ b/include/net/xfrm.h |
74509 | @@ -304,7 +304,7 @@ struct xfrm_policy_afinfo { | 74281 | @@ -305,7 +305,7 @@ struct xfrm_policy_afinfo { |
74510 | struct net_device *dev, | 74282 | struct net_device *dev, |
74511 | const struct flowi *fl); | 74283 | const struct flowi *fl); |
74512 | struct dst_entry *(*blackhole_route)(struct net *net, struct dst_entry *orig); | 74284 | struct dst_entry *(*blackhole_route)(struct net *net, struct dst_entry *orig); |
@@ -74515,7 +74287,7 @@ index 24c8886..e6fb816 100644 | |||
74515 | 74287 | ||
74516 | extern int xfrm_policy_register_afinfo(struct xfrm_policy_afinfo *afinfo); | 74288 | extern int xfrm_policy_register_afinfo(struct xfrm_policy_afinfo *afinfo); |
74517 | extern int xfrm_policy_unregister_afinfo(struct xfrm_policy_afinfo *afinfo); | 74289 | extern int xfrm_policy_unregister_afinfo(struct xfrm_policy_afinfo *afinfo); |
74518 | @@ -340,7 +340,7 @@ struct xfrm_state_afinfo { | 74290 | @@ -341,7 +341,7 @@ struct xfrm_state_afinfo { |
74519 | struct sk_buff *skb); | 74291 | struct sk_buff *skb); |
74520 | int (*transport_finish)(struct sk_buff *skb, | 74292 | int (*transport_finish)(struct sk_buff *skb, |
74521 | int async); | 74293 | int async); |
@@ -74524,7 +74296,7 @@ index 24c8886..e6fb816 100644 | |||
74524 | 74296 | ||
74525 | extern int xfrm_state_register_afinfo(struct xfrm_state_afinfo *afinfo); | 74297 | extern int xfrm_state_register_afinfo(struct xfrm_state_afinfo *afinfo); |
74526 | extern int xfrm_state_unregister_afinfo(struct xfrm_state_afinfo *afinfo); | 74298 | extern int xfrm_state_unregister_afinfo(struct xfrm_state_afinfo *afinfo); |
74527 | @@ -423,7 +423,7 @@ struct xfrm_mode { | 74299 | @@ -424,7 +424,7 @@ struct xfrm_mode { |
74528 | struct module *owner; | 74300 | struct module *owner; |
74529 | unsigned int encap; | 74301 | unsigned int encap; |
74530 | int flags; | 74302 | int flags; |
@@ -74533,7 +74305,7 @@ index 24c8886..e6fb816 100644 | |||
74533 | 74305 | ||
74534 | /* Flags for xfrm_mode. */ | 74306 | /* Flags for xfrm_mode. */ |
74535 | enum { | 74307 | enum { |
74536 | @@ -520,7 +520,7 @@ struct xfrm_policy { | 74308 | @@ -521,7 +521,7 @@ struct xfrm_policy { |
74537 | struct timer_list timer; | 74309 | struct timer_list timer; |
74538 | 74310 | ||
74539 | struct flow_cache_object flo; | 74311 | struct flow_cache_object flo; |
@@ -74577,7 +74349,7 @@ index e1379b4..67eafbe 100644 | |||
74577 | u8 qfull; | 74349 | u8 qfull; |
74578 | enum fc_lport_state state; | 74350 | enum fc_lport_state state; |
74579 | diff --git a/include/scsi/scsi_device.h b/include/scsi/scsi_device.h | 74351 | diff --git a/include/scsi/scsi_device.h b/include/scsi/scsi_device.h |
74580 | index a7f9cba..b1f44d0 100644 | 74352 | index cc64587..608f523 100644 |
74581 | --- a/include/scsi/scsi_device.h | 74353 | --- a/include/scsi/scsi_device.h |
74582 | +++ b/include/scsi/scsi_device.h | 74354 | +++ b/include/scsi/scsi_device.h |
74583 | @@ -171,9 +171,9 @@ struct scsi_device { | 74355 | @@ -171,9 +171,9 @@ struct scsi_device { |
@@ -74608,10 +74380,10 @@ index b797e8f..8e2c3aa 100644 | |||
74608 | 74380 | ||
74609 | /** | 74381 | /** |
74610 | diff --git a/include/sound/compress_driver.h b/include/sound/compress_driver.h | 74382 | diff --git a/include/sound/compress_driver.h b/include/sound/compress_driver.h |
74611 | index ff6c741..393815f 100644 | 74383 | index 9031a26..750d592 100644 |
74612 | --- a/include/sound/compress_driver.h | 74384 | --- a/include/sound/compress_driver.h |
74613 | +++ b/include/sound/compress_driver.h | 74385 | +++ b/include/sound/compress_driver.h |
74614 | @@ -130,7 +130,7 @@ struct snd_compr_ops { | 74386 | @@ -128,7 +128,7 @@ struct snd_compr_ops { |
74615 | struct snd_compr_caps *caps); | 74387 | struct snd_compr_caps *caps); |
74616 | int (*get_codec_caps) (struct snd_compr_stream *stream, | 74388 | int (*get_codec_caps) (struct snd_compr_stream *stream, |
74617 | struct snd_compr_codec_caps *codec); | 74389 | struct snd_compr_codec_caps *codec); |
@@ -74621,10 +74393,10 @@ index ff6c741..393815f 100644 | |||
74621 | /** | 74393 | /** |
74622 | * struct snd_compr: Compressed device | 74394 | * struct snd_compr: Compressed device |
74623 | diff --git a/include/sound/soc.h b/include/sound/soc.h | 74395 | diff --git a/include/sound/soc.h b/include/sound/soc.h |
74624 | index a6a059c..2243336 100644 | 74396 | index 85c1522..f44bad1 100644 |
74625 | --- a/include/sound/soc.h | 74397 | --- a/include/sound/soc.h |
74626 | +++ b/include/sound/soc.h | 74398 | +++ b/include/sound/soc.h |
74627 | @@ -771,7 +771,7 @@ struct snd_soc_codec_driver { | 74399 | @@ -781,7 +781,7 @@ struct snd_soc_codec_driver { |
74628 | /* probe ordering - for components with runtime dependencies */ | 74400 | /* probe ordering - for components with runtime dependencies */ |
74629 | int probe_order; | 74401 | int probe_order; |
74630 | int remove_order; | 74402 | int remove_order; |
@@ -74633,7 +74405,7 @@ index a6a059c..2243336 100644 | |||
74633 | 74405 | ||
74634 | /* SoC platform interface */ | 74406 | /* SoC platform interface */ |
74635 | struct snd_soc_platform_driver { | 74407 | struct snd_soc_platform_driver { |
74636 | @@ -817,7 +817,7 @@ struct snd_soc_platform_driver { | 74408 | @@ -827,7 +827,7 @@ struct snd_soc_platform_driver { |
74637 | unsigned int (*read)(struct snd_soc_platform *, unsigned int); | 74409 | unsigned int (*read)(struct snd_soc_platform *, unsigned int); |
74638 | int (*write)(struct snd_soc_platform *, unsigned int, unsigned int); | 74410 | int (*write)(struct snd_soc_platform *, unsigned int, unsigned int); |
74639 | int (*bespoke_trigger)(struct snd_pcm_substream *, int); | 74411 | int (*bespoke_trigger)(struct snd_pcm_substream *, int); |
@@ -74643,10 +74415,10 @@ index a6a059c..2243336 100644 | |||
74643 | struct snd_soc_platform { | 74415 | struct snd_soc_platform { |
74644 | const char *name; | 74416 | const char *name; |
74645 | diff --git a/include/target/target_core_base.h b/include/target/target_core_base.h | 74417 | diff --git a/include/target/target_core_base.h b/include/target/target_core_base.h |
74646 | index f8640f3..b72d113 100644 | 74418 | index 4ea4f98..a63629b 100644 |
74647 | --- a/include/target/target_core_base.h | 74419 | --- a/include/target/target_core_base.h |
74648 | +++ b/include/target/target_core_base.h | 74420 | +++ b/include/target/target_core_base.h |
74649 | @@ -658,7 +658,7 @@ struct se_device { | 74421 | @@ -653,7 +653,7 @@ struct se_device { |
74650 | spinlock_t stats_lock; | 74422 | spinlock_t stats_lock; |
74651 | /* Active commands on this virtual SE device */ | 74423 | /* Active commands on this virtual SE device */ |
74652 | atomic_t simple_cmds; | 74424 | atomic_t simple_cmds; |
@@ -74826,7 +74598,7 @@ index d876736..ccce5c0 100644 | |||
74826 | #define __cpu_to_le64s(x) do { (void)(x); } while (0) | 74598 | #define __cpu_to_le64s(x) do { (void)(x); } while (0) |
74827 | #define __le64_to_cpus(x) do { (void)(x); } while (0) | 74599 | #define __le64_to_cpus(x) do { (void)(x); } while (0) |
74828 | diff --git a/include/uapi/linux/elf.h b/include/uapi/linux/elf.h | 74600 | diff --git a/include/uapi/linux/elf.h b/include/uapi/linux/elf.h |
74829 | index 8072d35..e77aeb8 100644 | 74601 | index ef6103b..d4e65dd 100644 |
74830 | --- a/include/uapi/linux/elf.h | 74602 | --- a/include/uapi/linux/elf.h |
74831 | +++ b/include/uapi/linux/elf.h | 74603 | +++ b/include/uapi/linux/elf.h |
74832 | @@ -37,6 +37,17 @@ typedef __s64 Elf64_Sxword; | 74604 | @@ -37,6 +37,17 @@ typedef __s64 Elf64_Sxword; |
@@ -74885,24 +74657,6 @@ index 8072d35..e77aeb8 100644 | |||
74885 | #define ELFMAG0 0x7f /* EI_MAG */ | 74657 | #define ELFMAG0 0x7f /* EI_MAG */ |
74886 | #define ELFMAG1 'E' | 74658 | #define ELFMAG1 'E' |
74887 | #define ELFMAG2 'L' | 74659 | #define ELFMAG2 'L' |
74888 | diff --git a/include/uapi/linux/if_pppox.h b/include/uapi/linux/if_pppox.h | ||
74889 | index 0b46fd5..e36a4ae 100644 | ||
74890 | --- a/include/uapi/linux/if_pppox.h | ||
74891 | +++ b/include/uapi/linux/if_pppox.h | ||
74892 | @@ -135,11 +135,11 @@ struct pppoe_tag { | ||
74893 | |||
74894 | struct pppoe_hdr { | ||
74895 | #if defined(__LITTLE_ENDIAN_BITFIELD) | ||
74896 | - __u8 ver : 4; | ||
74897 | __u8 type : 4; | ||
74898 | + __u8 ver : 4; | ||
74899 | #elif defined(__BIG_ENDIAN_BITFIELD) | ||
74900 | - __u8 type : 4; | ||
74901 | __u8 ver : 4; | ||
74902 | + __u8 type : 4; | ||
74903 | #else | ||
74904 | #error "Please fix <asm/byteorder.h>" | ||
74905 | #endif | ||
74906 | diff --git a/include/uapi/linux/personality.h b/include/uapi/linux/personality.h | 74660 | diff --git a/include/uapi/linux/personality.h b/include/uapi/linux/personality.h |
74907 | index aa169c4..6a2771d 100644 | 74661 | index aa169c4..6a2771d 100644 |
74908 | --- a/include/uapi/linux/personality.h | 74662 | --- a/include/uapi/linux/personality.h |
@@ -75023,10 +74777,10 @@ index 1a91850..28573f8 100644 | |||
75023 | void *pmi_pal; | 74777 | void *pmi_pal; |
75024 | u8 *vbe_state_orig; /* | 74778 | u8 *vbe_state_orig; /* |
75025 | diff --git a/init/Kconfig b/init/Kconfig | 74779 | diff --git a/init/Kconfig b/init/Kconfig |
75026 | index 5341d72..153f24f 100644 | 74780 | index 2d9b831..ae4c8ac 100644 |
75027 | --- a/init/Kconfig | 74781 | --- a/init/Kconfig |
75028 | +++ b/init/Kconfig | 74782 | +++ b/init/Kconfig |
75029 | @@ -984,6 +984,7 @@ endif # CGROUPS | 74783 | @@ -1029,6 +1029,7 @@ endif # CGROUPS |
75030 | 74784 | ||
75031 | config CHECKPOINT_RESTORE | 74785 | config CHECKPOINT_RESTORE |
75032 | bool "Checkpoint/restore support" if EXPERT | 74786 | bool "Checkpoint/restore support" if EXPERT |
@@ -75034,7 +74788,7 @@ index 5341d72..153f24f 100644 | |||
75034 | default n | 74788 | default n |
75035 | help | 74789 | help |
75036 | Enables additional kernel features in a sake of checkpoint/restore. | 74790 | Enables additional kernel features in a sake of checkpoint/restore. |
75037 | @@ -1471,7 +1472,7 @@ config SLUB_DEBUG | 74791 | @@ -1516,7 +1517,7 @@ config SLUB_DEBUG |
75038 | 74792 | ||
75039 | config COMPAT_BRK | 74793 | config COMPAT_BRK |
75040 | bool "Disable heap randomization" | 74794 | bool "Disable heap randomization" |
@@ -75043,7 +74797,7 @@ index 5341d72..153f24f 100644 | |||
75043 | help | 74797 | help |
75044 | Randomizing heap placement makes heap exploits harder, but it | 74798 | Randomizing heap placement makes heap exploits harder, but it |
75045 | also breaks ancient binaries (including anything libc5 based). | 74799 | also breaks ancient binaries (including anything libc5 based). |
75046 | @@ -1734,7 +1735,7 @@ config INIT_ALL_POSSIBLE | 74800 | @@ -1779,7 +1780,7 @@ config INIT_ALL_POSSIBLE |
75047 | config STOP_MACHINE | 74801 | config STOP_MACHINE |
75048 | bool | 74802 | bool |
75049 | default y | 74803 | default y |
@@ -75148,7 +74902,7 @@ index f5b978a..69dbfe8 100644 | |||
75148 | if (!S_ISBLK(stat.st_mode)) | 74902 | if (!S_ISBLK(stat.st_mode)) |
75149 | return 0; | 74903 | return 0; |
75150 | diff --git a/init/do_mounts_initrd.c b/init/do_mounts_initrd.c | 74904 | diff --git a/init/do_mounts_initrd.c b/init/do_mounts_initrd.c |
75151 | index a32ec1c..60a6659 100644 | 74905 | index 3e0878e..8a9d7a0 100644 |
75152 | --- a/init/do_mounts_initrd.c | 74906 | --- a/init/do_mounts_initrd.c |
75153 | +++ b/init/do_mounts_initrd.c | 74907 | +++ b/init/do_mounts_initrd.c |
75154 | @@ -37,13 +37,13 @@ static int init_linuxrc(struct subprocess_info *info, struct cred *new) | 74908 | @@ -37,13 +37,13 @@ static int init_linuxrc(struct subprocess_info *info, struct cred *new) |
@@ -75169,7 +74923,7 @@ index a32ec1c..60a6659 100644 | |||
75169 | sys_setsid(); | 74923 | sys_setsid(); |
75170 | return 0; | 74924 | return 0; |
75171 | } | 74925 | } |
75172 | @@ -58,8 +58,8 @@ static void __init handle_initrd(void) | 74926 | @@ -59,8 +59,8 @@ static void __init handle_initrd(void) |
75173 | create_dev("/dev/root.old", Root_RAM0); | 74927 | create_dev("/dev/root.old", Root_RAM0); |
75174 | /* mount initrd on rootfs' /root */ | 74928 | /* mount initrd on rootfs' /root */ |
75175 | mount_block_root("/dev/root.old", root_mountflags & ~MS_RDONLY); | 74929 | mount_block_root("/dev/root.old", root_mountflags & ~MS_RDONLY); |
@@ -75180,7 +74934,7 @@ index a32ec1c..60a6659 100644 | |||
75180 | 74934 | ||
75181 | /* try loading default modules from initrd */ | 74935 | /* try loading default modules from initrd */ |
75182 | load_default_modules(); | 74936 | load_default_modules(); |
75183 | @@ -76,31 +76,31 @@ static void __init handle_initrd(void) | 74937 | @@ -80,31 +80,31 @@ static void __init handle_initrd(void) |
75184 | current->flags &= ~PF_FREEZER_SKIP; | 74938 | current->flags &= ~PF_FREEZER_SKIP; |
75185 | 74939 | ||
75186 | /* move initrd to rootfs' /old */ | 74940 | /* move initrd to rootfs' /old */ |
@@ -75219,7 +74973,7 @@ index a32ec1c..60a6659 100644 | |||
75219 | printk(KERN_NOTICE "Trying to free ramdisk memory ... "); | 74973 | printk(KERN_NOTICE "Trying to free ramdisk memory ... "); |
75220 | if (fd < 0) { | 74974 | if (fd < 0) { |
75221 | error = fd; | 74975 | error = fd; |
75222 | @@ -123,11 +123,11 @@ int __init initrd_load(void) | 74976 | @@ -127,11 +127,11 @@ int __init initrd_load(void) |
75223 | * mounted in the normal path. | 74977 | * mounted in the normal path. |
75224 | */ | 74978 | */ |
75225 | if (rd_load_image("/initrd.image") && ROOT_DEV != Root_RAM0) { | 74979 | if (rd_load_image("/initrd.image") && ROOT_DEV != Root_RAM0) { |
@@ -75400,10 +75154,10 @@ index a67ef9d..2d17ed9 100644 | |||
75400 | #ifdef CONFIG_BLK_DEV_RAM | 75154 | #ifdef CONFIG_BLK_DEV_RAM |
75401 | int fd; | 75155 | int fd; |
75402 | diff --git a/init/main.c b/init/main.c | 75156 | diff --git a/init/main.c b/init/main.c |
75403 | index 63534a1..85feae2 100644 | 75157 | index 9484f4b..4c01430 100644 |
75404 | --- a/init/main.c | 75158 | --- a/init/main.c |
75405 | +++ b/init/main.c | 75159 | +++ b/init/main.c |
75406 | @@ -98,6 +98,8 @@ static inline void mark_rodata_ro(void) { } | 75160 | @@ -100,6 +100,8 @@ static inline void mark_rodata_ro(void) { } |
75407 | extern void tc_init(void); | 75161 | extern void tc_init(void); |
75408 | #endif | 75162 | #endif |
75409 | 75163 | ||
@@ -75412,7 +75166,7 @@ index 63534a1..85feae2 100644 | |||
75412 | /* | 75166 | /* |
75413 | * Debug helper: via this flag we know that we are in 'early bootup code' | 75167 | * Debug helper: via this flag we know that we are in 'early bootup code' |
75414 | * where only the boot processor is running with IRQ disabled. This means | 75168 | * where only the boot processor is running with IRQ disabled. This means |
75415 | @@ -151,6 +153,64 @@ static int __init set_reset_devices(char *str) | 75169 | @@ -153,6 +155,64 @@ static int __init set_reset_devices(char *str) |
75416 | 75170 | ||
75417 | __setup("reset_devices", set_reset_devices); | 75171 | __setup("reset_devices", set_reset_devices); |
75418 | 75172 | ||
@@ -75477,7 +75231,16 @@ index 63534a1..85feae2 100644 | |||
75477 | static const char * argv_init[MAX_INIT_ARGS+2] = { "init", NULL, }; | 75231 | static const char * argv_init[MAX_INIT_ARGS+2] = { "init", NULL, }; |
75478 | const char * envp_init[MAX_INIT_ENVS+2] = { "HOME=/", "TERM=linux", NULL, }; | 75232 | const char * envp_init[MAX_INIT_ENVS+2] = { "HOME=/", "TERM=linux", NULL, }; |
75479 | static const char *panic_later, *panic_param; | 75233 | static const char *panic_later, *panic_param; |
75480 | @@ -683,6 +743,7 @@ int __init_or_module do_one_initcall(initcall_t fn) | 75234 | @@ -655,8 +715,6 @@ static void __init do_ctors(void) |
75235 | bool initcall_debug; | ||
75236 | core_param(initcall_debug, initcall_debug, bool, 0644); | ||
75237 | |||
75238 | -static char msgbuf[64]; | ||
75239 | - | ||
75240 | static int __init_or_module do_one_initcall_debug(initcall_t fn) | ||
75241 | { | ||
75242 | ktime_t calltime, delta, rettime; | ||
75243 | @@ -679,23 +737,22 @@ int __init_or_module do_one_initcall(initcall_t fn) | ||
75481 | { | 75244 | { |
75482 | int count = preempt_count(); | 75245 | int count = preempt_count(); |
75483 | int ret; | 75246 | int ret; |
@@ -75485,11 +75248,13 @@ index 63534a1..85feae2 100644 | |||
75485 | 75248 | ||
75486 | if (initcall_debug) | 75249 | if (initcall_debug) |
75487 | ret = do_one_initcall_debug(fn); | 75250 | ret = do_one_initcall_debug(fn); |
75488 | @@ -695,15 +756,15 @@ int __init_or_module do_one_initcall(initcall_t fn) | 75251 | else |
75489 | sprintf(msgbuf, "error code %d ", ret); | 75252 | ret = fn(); |
75490 | 75253 | ||
75254 | - msgbuf[0] = 0; | ||
75255 | - | ||
75491 | if (preempt_count() != count) { | 75256 | if (preempt_count() != count) { |
75492 | - strlcat(msgbuf, "preemption imbalance ", sizeof(msgbuf)); | 75257 | - sprintf(msgbuf, "preemption imbalance "); |
75493 | + msg1 = " preemption imbalance"; | 75258 | + msg1 = " preemption imbalance"; |
75494 | preempt_count() = count; | 75259 | preempt_count() = count; |
75495 | } | 75260 | } |
@@ -75498,14 +75263,12 @@ index 63534a1..85feae2 100644 | |||
75498 | + msg2 = " disabled interrupts"; | 75263 | + msg2 = " disabled interrupts"; |
75499 | local_irq_enable(); | 75264 | local_irq_enable(); |
75500 | } | 75265 | } |
75501 | - if (msgbuf[0]) { | 75266 | - WARN(msgbuf[0], "initcall %pF returned with %s\n", fn, msgbuf); |
75502 | - printk("initcall %pF returned with %s\n", fn, msgbuf); | 75267 | + WARN(*msg1 || *msg2, "initcall %pF returned with%s%s\n", fn, msg1, msg2); |
75503 | + if (msgbuf[0] || *msg1 || *msg2) { | ||
75504 | + printk("initcall %pF returned with %s%s%s\n", fn, msgbuf, msg1, msg2); | ||
75505 | } | ||
75506 | 75268 | ||
75507 | return ret; | 75269 | return ret; |
75508 | @@ -757,8 +818,14 @@ static void __init do_initcall_level(int level) | 75270 | } |
75271 | @@ -748,8 +805,14 @@ static void __init do_initcall_level(int level) | ||
75509 | level, level, | 75272 | level, level, |
75510 | &repair_env_string); | 75273 | &repair_env_string); |
75511 | 75274 | ||
@@ -75521,7 +75284,7 @@ index 63534a1..85feae2 100644 | |||
75521 | } | 75284 | } |
75522 | 75285 | ||
75523 | static void __init do_initcalls(void) | 75286 | static void __init do_initcalls(void) |
75524 | @@ -792,8 +859,14 @@ static void __init do_pre_smp_initcalls(void) | 75287 | @@ -783,8 +846,14 @@ static void __init do_pre_smp_initcalls(void) |
75525 | { | 75288 | { |
75526 | initcall_t *fn; | 75289 | initcall_t *fn; |
75527 | 75290 | ||
@@ -75537,7 +75300,7 @@ index 63534a1..85feae2 100644 | |||
75537 | } | 75300 | } |
75538 | 75301 | ||
75539 | /* | 75302 | /* |
75540 | @@ -811,8 +884,8 @@ static int run_init_process(const char *init_filename) | 75303 | @@ -802,8 +871,8 @@ static int run_init_process(const char *init_filename) |
75541 | { | 75304 | { |
75542 | argv_init[0] = init_filename; | 75305 | argv_init[0] = init_filename; |
75543 | return do_execve(init_filename, | 75306 | return do_execve(init_filename, |
@@ -75548,16 +75311,16 @@ index 63534a1..85feae2 100644 | |||
75548 | } | 75311 | } |
75549 | 75312 | ||
75550 | static noinline void __init kernel_init_freeable(void); | 75313 | static noinline void __init kernel_init_freeable(void); |
75551 | @@ -890,7 +963,7 @@ static noinline void __init kernel_init_freeable(void) | 75314 | @@ -880,7 +949,7 @@ static noinline void __init kernel_init_freeable(void) |
75552 | do_basic_setup(); | 75315 | do_basic_setup(); |
75553 | 75316 | ||
75554 | /* Open the /dev/console on the rootfs, this should never fail */ | 75317 | /* Open the /dev/console on the rootfs, this should never fail */ |
75555 | - if (sys_open((const char __user *) "/dev/console", O_RDWR, 0) < 0) | 75318 | - if (sys_open((const char __user *) "/dev/console", O_RDWR, 0) < 0) |
75556 | + if (sys_open((const char __force_user *) "/dev/console", O_RDWR, 0) < 0) | 75319 | + if (sys_open((const char __force_user *) "/dev/console", O_RDWR, 0) < 0) |
75557 | printk(KERN_WARNING "Warning: unable to open an initial console.\n"); | 75320 | pr_err("Warning: unable to open an initial console.\n"); |
75558 | 75321 | ||
75559 | (void) sys_dup(0); | 75322 | (void) sys_dup(0); |
75560 | @@ -903,11 +976,13 @@ static noinline void __init kernel_init_freeable(void) | 75323 | @@ -893,11 +962,13 @@ static noinline void __init kernel_init_freeable(void) |
75561 | if (!ramdisk_execute_command) | 75324 | if (!ramdisk_execute_command) |
75562 | ramdisk_execute_command = "/init"; | 75325 | ramdisk_execute_command = "/init"; |
75563 | 75326 | ||
@@ -75647,10 +75410,10 @@ index e4e47f6..a85e0ad 100644 | |||
75647 | if (u->mq_bytes + mq_bytes < u->mq_bytes || | 75410 | if (u->mq_bytes + mq_bytes < u->mq_bytes || |
75648 | u->mq_bytes + mq_bytes > rlimit(RLIMIT_MSGQUEUE)) { | 75411 | u->mq_bytes + mq_bytes > rlimit(RLIMIT_MSGQUEUE)) { |
75649 | diff --git a/ipc/msg.c b/ipc/msg.c | 75412 | diff --git a/ipc/msg.c b/ipc/msg.c |
75650 | index fede1d0..9778e0f8 100644 | 75413 | index d0c6d96..69a893c 100644 |
75651 | --- a/ipc/msg.c | 75414 | --- a/ipc/msg.c |
75652 | +++ b/ipc/msg.c | 75415 | +++ b/ipc/msg.c |
75653 | @@ -309,18 +309,19 @@ static inline int msg_security(struct kern_ipc_perm *ipcp, int msgflg) | 75416 | @@ -296,18 +296,19 @@ static inline int msg_security(struct kern_ipc_perm *ipcp, int msgflg) |
75654 | return security_msg_queue_associate(msq, msgflg); | 75417 | return security_msg_queue_associate(msq, msgflg); |
75655 | } | 75418 | } |
75656 | 75419 | ||
@@ -75676,10 +75439,10 @@ index fede1d0..9778e0f8 100644 | |||
75676 | msg_params.flg = msgflg; | 75439 | msg_params.flg = msgflg; |
75677 | 75440 | ||
75678 | diff --git a/ipc/sem.c b/ipc/sem.c | 75441 | diff --git a/ipc/sem.c b/ipc/sem.c |
75679 | index 58d31f1..cce7a55 100644 | 75442 | index 70480a3..f4e8262 100644 |
75680 | --- a/ipc/sem.c | 75443 | --- a/ipc/sem.c |
75681 | +++ b/ipc/sem.c | 75444 | +++ b/ipc/sem.c |
75682 | @@ -364,10 +364,15 @@ static inline int sem_more_checks(struct kern_ipc_perm *ipcp, | 75445 | @@ -460,10 +460,15 @@ static inline int sem_more_checks(struct kern_ipc_perm *ipcp, |
75683 | return 0; | 75446 | return 0; |
75684 | } | 75447 | } |
75685 | 75448 | ||
@@ -75696,7 +75459,7 @@ index 58d31f1..cce7a55 100644 | |||
75696 | struct ipc_params sem_params; | 75459 | struct ipc_params sem_params; |
75697 | 75460 | ||
75698 | ns = current->nsproxy->ipc_ns; | 75461 | ns = current->nsproxy->ipc_ns; |
75699 | @@ -375,10 +380,6 @@ SYSCALL_DEFINE3(semget, key_t, key, int, nsems, int, semflg) | 75462 | @@ -471,10 +476,6 @@ SYSCALL_DEFINE3(semget, key_t, key, int, nsems, int, semflg) |
75700 | if (nsems < 0 || nsems > ns->sc_semmsl) | 75463 | if (nsems < 0 || nsems > ns->sc_semmsl) |
75701 | return -EINVAL; | 75464 | return -EINVAL; |
75702 | 75465 | ||
@@ -75802,10 +75565,10 @@ index 7e199fa..180a1ca 100644 | |||
75802 | shm_unlock(shp); | 75565 | shm_unlock(shp); |
75803 | 75566 | ||
75804 | diff --git a/kernel/acct.c b/kernel/acct.c | 75567 | diff --git a/kernel/acct.c b/kernel/acct.c |
75805 | index b9bd7f0..1762b4a 100644 | 75568 | index 8d6e145..33e0b1e 100644 |
75806 | --- a/kernel/acct.c | 75569 | --- a/kernel/acct.c |
75807 | +++ b/kernel/acct.c | 75570 | +++ b/kernel/acct.c |
75808 | @@ -550,7 +550,7 @@ static void do_acct_process(struct bsd_acct_struct *acct, | 75571 | @@ -556,7 +556,7 @@ static void do_acct_process(struct bsd_acct_struct *acct, |
75809 | */ | 75572 | */ |
75810 | flim = current->signal->rlim[RLIMIT_FSIZE].rlim_cur; | 75573 | flim = current->signal->rlim[RLIMIT_FSIZE].rlim_cur; |
75811 | current->signal->rlim[RLIMIT_FSIZE].rlim_cur = RLIM_INFINITY; | 75574 | current->signal->rlim[RLIMIT_FSIZE].rlim_cur = RLIM_INFINITY; |
@@ -75815,10 +75578,10 @@ index b9bd7f0..1762b4a 100644 | |||
75815 | current->signal->rlim[RLIMIT_FSIZE].rlim_cur = flim; | 75578 | current->signal->rlim[RLIMIT_FSIZE].rlim_cur = flim; |
75816 | set_fs(fs); | 75579 | set_fs(fs); |
75817 | diff --git a/kernel/audit.c b/kernel/audit.c | 75580 | diff --git a/kernel/audit.c b/kernel/audit.c |
75818 | index 8a667f10..7375e3f 100644 | 75581 | index 91e53d0..d9e3ec4 100644 |
75819 | --- a/kernel/audit.c | 75582 | --- a/kernel/audit.c |
75820 | +++ b/kernel/audit.c | 75583 | +++ b/kernel/audit.c |
75821 | @@ -116,7 +116,7 @@ u32 audit_sig_sid = 0; | 75584 | @@ -118,7 +118,7 @@ u32 audit_sig_sid = 0; |
75822 | 3) suppressed due to audit_rate_limit | 75585 | 3) suppressed due to audit_rate_limit |
75823 | 4) suppressed due to audit_backlog_limit | 75586 | 4) suppressed due to audit_backlog_limit |
75824 | */ | 75587 | */ |
@@ -75827,7 +75590,7 @@ index 8a667f10..7375e3f 100644 | |||
75827 | 75590 | ||
75828 | /* The netlink socket. */ | 75591 | /* The netlink socket. */ |
75829 | static struct sock *audit_sock; | 75592 | static struct sock *audit_sock; |
75830 | @@ -238,7 +238,7 @@ void audit_log_lost(const char *message) | 75593 | @@ -240,7 +240,7 @@ void audit_log_lost(const char *message) |
75831 | unsigned long now; | 75594 | unsigned long now; |
75832 | int print; | 75595 | int print; |
75833 | 75596 | ||
@@ -75836,7 +75599,7 @@ index 8a667f10..7375e3f 100644 | |||
75836 | 75599 | ||
75837 | print = (audit_failure == AUDIT_FAIL_PANIC || !audit_rate_limit); | 75600 | print = (audit_failure == AUDIT_FAIL_PANIC || !audit_rate_limit); |
75838 | 75601 | ||
75839 | @@ -257,7 +257,7 @@ void audit_log_lost(const char *message) | 75602 | @@ -259,7 +259,7 @@ void audit_log_lost(const char *message) |
75840 | printk(KERN_WARNING | 75603 | printk(KERN_WARNING |
75841 | "audit: audit_lost=%d audit_rate_limit=%d " | 75604 | "audit: audit_lost=%d audit_rate_limit=%d " |
75842 | "audit_backlog_limit=%d\n", | 75605 | "audit_backlog_limit=%d\n", |
@@ -75845,7 +75608,7 @@ index 8a667f10..7375e3f 100644 | |||
75845 | audit_rate_limit, | 75608 | audit_rate_limit, |
75846 | audit_backlog_limit); | 75609 | audit_backlog_limit); |
75847 | audit_panic(message); | 75610 | audit_panic(message); |
75848 | @@ -681,7 +681,7 @@ static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh) | 75611 | @@ -664,7 +664,7 @@ static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh) |
75849 | status_set.pid = audit_pid; | 75612 | status_set.pid = audit_pid; |
75850 | status_set.rate_limit = audit_rate_limit; | 75613 | status_set.rate_limit = audit_rate_limit; |
75851 | status_set.backlog_limit = audit_backlog_limit; | 75614 | status_set.backlog_limit = audit_backlog_limit; |
@@ -75854,11 +75617,24 @@ index 8a667f10..7375e3f 100644 | |||
75854 | status_set.backlog = skb_queue_len(&audit_skb_queue); | 75617 | status_set.backlog = skb_queue_len(&audit_skb_queue); |
75855 | audit_send_reply(NETLINK_CB(skb).portid, seq, AUDIT_GET, 0, 0, | 75618 | audit_send_reply(NETLINK_CB(skb).portid, seq, AUDIT_GET, 0, 0, |
75856 | &status_set, sizeof(status_set)); | 75619 | &status_set, sizeof(status_set)); |
75620 | diff --git a/kernel/auditfilter.c b/kernel/auditfilter.c | ||
75621 | index 6bd4a90..0ee9eff 100644 | ||
75622 | --- a/kernel/auditfilter.c | ||
75623 | +++ b/kernel/auditfilter.c | ||
75624 | @@ -423,7 +423,7 @@ static struct audit_entry *audit_data_to_entry(struct audit_rule_data *data, | ||
75625 | f->lsm_rule = NULL; | ||
75626 | |||
75627 | /* Support legacy tests for a valid loginuid */ | ||
75628 | - if ((f->type == AUDIT_LOGINUID) && (f->val == 4294967295)) { | ||
75629 | + if ((f->type == AUDIT_LOGINUID) && (f->val == 4294967295U)) { | ||
75630 | f->type = AUDIT_LOGINUID_SET; | ||
75631 | f->val = 0; | ||
75632 | } | ||
75857 | diff --git a/kernel/auditsc.c b/kernel/auditsc.c | 75633 | diff --git a/kernel/auditsc.c b/kernel/auditsc.c |
75858 | index c4b72b0..8654c4e 100644 | 75634 | index 3c8a601..3a416f6 100644 |
75859 | --- a/kernel/auditsc.c | 75635 | --- a/kernel/auditsc.c |
75860 | +++ b/kernel/auditsc.c | 75636 | +++ b/kernel/auditsc.c |
75861 | @@ -2295,7 +2295,7 @@ int auditsc_get_stamp(struct audit_context *ctx, | 75637 | @@ -1956,7 +1956,7 @@ int auditsc_get_stamp(struct audit_context *ctx, |
75862 | } | 75638 | } |
75863 | 75639 | ||
75864 | /* global counter which is incremented every time something logs in */ | 75640 | /* global counter which is incremented every time something logs in */ |
@@ -75867,7 +75643,7 @@ index c4b72b0..8654c4e 100644 | |||
75867 | 75643 | ||
75868 | /** | 75644 | /** |
75869 | * audit_set_loginuid - set current task's audit_context loginuid | 75645 | * audit_set_loginuid - set current task's audit_context loginuid |
75870 | @@ -2319,7 +2319,7 @@ int audit_set_loginuid(kuid_t loginuid) | 75646 | @@ -1980,7 +1980,7 @@ int audit_set_loginuid(kuid_t loginuid) |
75871 | return -EPERM; | 75647 | return -EPERM; |
75872 | #endif /* CONFIG_AUDIT_LOGINUID_IMMUTABLE */ | 75648 | #endif /* CONFIG_AUDIT_LOGINUID_IMMUTABLE */ |
75873 | 75649 | ||
@@ -75973,10 +75749,10 @@ index f6c2ce5..982c0f9 100644 | |||
75973 | + return ns_capable_nolog(ns, cap) && kuid_has_mapping(ns, inode->i_uid); | 75749 | + return ns_capable_nolog(ns, cap) && kuid_has_mapping(ns, inode->i_uid); |
75974 | +} | 75750 | +} |
75975 | diff --git a/kernel/cgroup.c b/kernel/cgroup.c | 75751 | diff --git a/kernel/cgroup.c b/kernel/cgroup.c |
75976 | index 526f4ba..19cca33 100644 | 75752 | index c6e77ef..af531a0 100644 |
75977 | --- a/kernel/cgroup.c | 75753 | --- a/kernel/cgroup.c |
75978 | +++ b/kernel/cgroup.c | 75754 | +++ b/kernel/cgroup.c |
75979 | @@ -5580,7 +5580,7 @@ static int cgroup_css_links_read(struct cgroup *cont, | 75755 | @@ -5391,7 +5391,7 @@ static int cgroup_css_links_read(struct cgroup *cont, |
75980 | struct css_set *cg = link->cg; | 75756 | struct css_set *cg = link->cg; |
75981 | struct task_struct *task; | 75757 | struct task_struct *task; |
75982 | int count = 0; | 75758 | int count = 0; |
@@ -75986,7 +75762,7 @@ index 526f4ba..19cca33 100644 | |||
75986 | if (count++ > MAX_TASKS_SHOWN_PER_CSS) { | 75762 | if (count++ > MAX_TASKS_SHOWN_PER_CSS) { |
75987 | seq_puts(seq, " ...\n"); | 75763 | seq_puts(seq, " ...\n"); |
75988 | diff --git a/kernel/compat.c b/kernel/compat.c | 75764 | diff --git a/kernel/compat.c b/kernel/compat.c |
75989 | index 19971d8..02fe2df 100644 | 75765 | index 0a09e48..f44f3f0 100644 |
75990 | --- a/kernel/compat.c | 75766 | --- a/kernel/compat.c |
75991 | +++ b/kernel/compat.c | 75767 | +++ b/kernel/compat.c |
75992 | @@ -13,6 +13,7 @@ | 75768 | @@ -13,6 +13,7 @@ |
@@ -76033,16 +75809,7 @@ index 19971d8..02fe2df 100644 | |||
76033 | set_fs(old_fs); | 75809 | set_fs(old_fs); |
76034 | 75810 | ||
76035 | if (!ret) { | 75811 | if (!ret) { |
76036 | @@ -523,7 +524,7 @@ asmlinkage long compat_sys_getrusage(int who, struct compat_rusage __user *ru) | 75812 | @@ -533,8 +534,8 @@ COMPAT_SYSCALL_DEFINE4(wait4, |
76037 | mm_segment_t old_fs = get_fs(); | ||
76038 | |||
76039 | set_fs(KERNEL_DS); | ||
76040 | - ret = sys_getrusage(who, (struct rusage __user *) &r); | ||
76041 | + ret = sys_getrusage(who, (struct rusage __force_user *) &r); | ||
76042 | set_fs(old_fs); | ||
76043 | |||
76044 | if (ret) | ||
76045 | @@ -552,8 +553,8 @@ COMPAT_SYSCALL_DEFINE4(wait4, | ||
76046 | set_fs (KERNEL_DS); | 75813 | set_fs (KERNEL_DS); |
76047 | ret = sys_wait4(pid, | 75814 | ret = sys_wait4(pid, |
76048 | (stat_addr ? | 75815 | (stat_addr ? |
@@ -76053,7 +75820,7 @@ index 19971d8..02fe2df 100644 | |||
76053 | set_fs (old_fs); | 75820 | set_fs (old_fs); |
76054 | 75821 | ||
76055 | if (ret > 0) { | 75822 | if (ret > 0) { |
76056 | @@ -579,8 +580,8 @@ COMPAT_SYSCALL_DEFINE5(waitid, | 75823 | @@ -560,8 +561,8 @@ COMPAT_SYSCALL_DEFINE5(waitid, |
76057 | memset(&info, 0, sizeof(info)); | 75824 | memset(&info, 0, sizeof(info)); |
76058 | 75825 | ||
76059 | set_fs(KERNEL_DS); | 75826 | set_fs(KERNEL_DS); |
@@ -76064,7 +75831,7 @@ index 19971d8..02fe2df 100644 | |||
76064 | set_fs(old_fs); | 75831 | set_fs(old_fs); |
76065 | 75832 | ||
76066 | if ((ret < 0) || (info.si_signo == 0)) | 75833 | if ((ret < 0) || (info.si_signo == 0)) |
76067 | @@ -714,8 +715,8 @@ long compat_sys_timer_settime(timer_t timer_id, int flags, | 75834 | @@ -695,8 +696,8 @@ long compat_sys_timer_settime(timer_t timer_id, int flags, |
76068 | oldfs = get_fs(); | 75835 | oldfs = get_fs(); |
76069 | set_fs(KERNEL_DS); | 75836 | set_fs(KERNEL_DS); |
76070 | err = sys_timer_settime(timer_id, flags, | 75837 | err = sys_timer_settime(timer_id, flags, |
@@ -76075,7 +75842,7 @@ index 19971d8..02fe2df 100644 | |||
76075 | set_fs(oldfs); | 75842 | set_fs(oldfs); |
76076 | if (!err && old && put_compat_itimerspec(old, &oldts)) | 75843 | if (!err && old && put_compat_itimerspec(old, &oldts)) |
76077 | return -EFAULT; | 75844 | return -EFAULT; |
76078 | @@ -732,7 +733,7 @@ long compat_sys_timer_gettime(timer_t timer_id, | 75845 | @@ -713,7 +714,7 @@ long compat_sys_timer_gettime(timer_t timer_id, |
76079 | oldfs = get_fs(); | 75846 | oldfs = get_fs(); |
76080 | set_fs(KERNEL_DS); | 75847 | set_fs(KERNEL_DS); |
76081 | err = sys_timer_gettime(timer_id, | 75848 | err = sys_timer_gettime(timer_id, |
@@ -76084,7 +75851,7 @@ index 19971d8..02fe2df 100644 | |||
76084 | set_fs(oldfs); | 75851 | set_fs(oldfs); |
76085 | if (!err && put_compat_itimerspec(setting, &ts)) | 75852 | if (!err && put_compat_itimerspec(setting, &ts)) |
76086 | return -EFAULT; | 75853 | return -EFAULT; |
76087 | @@ -751,7 +752,7 @@ long compat_sys_clock_settime(clockid_t which_clock, | 75854 | @@ -732,7 +733,7 @@ long compat_sys_clock_settime(clockid_t which_clock, |
76088 | oldfs = get_fs(); | 75855 | oldfs = get_fs(); |
76089 | set_fs(KERNEL_DS); | 75856 | set_fs(KERNEL_DS); |
76090 | err = sys_clock_settime(which_clock, | 75857 | err = sys_clock_settime(which_clock, |
@@ -76093,7 +75860,7 @@ index 19971d8..02fe2df 100644 | |||
76093 | set_fs(oldfs); | 75860 | set_fs(oldfs); |
76094 | return err; | 75861 | return err; |
76095 | } | 75862 | } |
76096 | @@ -766,7 +767,7 @@ long compat_sys_clock_gettime(clockid_t which_clock, | 75863 | @@ -747,7 +748,7 @@ long compat_sys_clock_gettime(clockid_t which_clock, |
76097 | oldfs = get_fs(); | 75864 | oldfs = get_fs(); |
76098 | set_fs(KERNEL_DS); | 75865 | set_fs(KERNEL_DS); |
76099 | err = sys_clock_gettime(which_clock, | 75866 | err = sys_clock_gettime(which_clock, |
@@ -76102,7 +75869,7 @@ index 19971d8..02fe2df 100644 | |||
76102 | set_fs(oldfs); | 75869 | set_fs(oldfs); |
76103 | if (!err && put_compat_timespec(&ts, tp)) | 75870 | if (!err && put_compat_timespec(&ts, tp)) |
76104 | return -EFAULT; | 75871 | return -EFAULT; |
76105 | @@ -786,7 +787,7 @@ long compat_sys_clock_adjtime(clockid_t which_clock, | 75872 | @@ -767,7 +768,7 @@ long compat_sys_clock_adjtime(clockid_t which_clock, |
76106 | 75873 | ||
76107 | oldfs = get_fs(); | 75874 | oldfs = get_fs(); |
76108 | set_fs(KERNEL_DS); | 75875 | set_fs(KERNEL_DS); |
@@ -76111,7 +75878,7 @@ index 19971d8..02fe2df 100644 | |||
76111 | set_fs(oldfs); | 75878 | set_fs(oldfs); |
76112 | 75879 | ||
76113 | err = compat_put_timex(utp, &txc); | 75880 | err = compat_put_timex(utp, &txc); |
76114 | @@ -806,7 +807,7 @@ long compat_sys_clock_getres(clockid_t which_clock, | 75881 | @@ -787,7 +788,7 @@ long compat_sys_clock_getres(clockid_t which_clock, |
76115 | oldfs = get_fs(); | 75882 | oldfs = get_fs(); |
76116 | set_fs(KERNEL_DS); | 75883 | set_fs(KERNEL_DS); |
76117 | err = sys_clock_getres(which_clock, | 75884 | err = sys_clock_getres(which_clock, |
@@ -76120,7 +75887,7 @@ index 19971d8..02fe2df 100644 | |||
76120 | set_fs(oldfs); | 75887 | set_fs(oldfs); |
76121 | if (!err && tp && put_compat_timespec(&ts, tp)) | 75888 | if (!err && tp && put_compat_timespec(&ts, tp)) |
76122 | return -EFAULT; | 75889 | return -EFAULT; |
76123 | @@ -818,9 +819,9 @@ static long compat_clock_nanosleep_restart(struct restart_block *restart) | 75890 | @@ -799,9 +800,9 @@ static long compat_clock_nanosleep_restart(struct restart_block *restart) |
76124 | long err; | 75891 | long err; |
76125 | mm_segment_t oldfs; | 75892 | mm_segment_t oldfs; |
76126 | struct timespec tu; | 75893 | struct timespec tu; |
@@ -76132,7 +75899,7 @@ index 19971d8..02fe2df 100644 | |||
76132 | oldfs = get_fs(); | 75899 | oldfs = get_fs(); |
76133 | set_fs(KERNEL_DS); | 75900 | set_fs(KERNEL_DS); |
76134 | err = clock_nanosleep_restart(restart); | 75901 | err = clock_nanosleep_restart(restart); |
76135 | @@ -852,8 +853,8 @@ long compat_sys_clock_nanosleep(clockid_t which_clock, int flags, | 75902 | @@ -833,8 +834,8 @@ long compat_sys_clock_nanosleep(clockid_t which_clock, int flags, |
76136 | oldfs = get_fs(); | 75903 | oldfs = get_fs(); |
76137 | set_fs(KERNEL_DS); | 75904 | set_fs(KERNEL_DS); |
76138 | err = sys_clock_nanosleep(which_clock, flags, | 75905 | err = sys_clock_nanosleep(which_clock, flags, |
@@ -76144,7 +75911,7 @@ index 19971d8..02fe2df 100644 | |||
76144 | 75911 | ||
76145 | if ((err == -ERESTART_RESTARTBLOCK) && rmtp && | 75912 | if ((err == -ERESTART_RESTARTBLOCK) && rmtp && |
76146 | diff --git a/kernel/configs.c b/kernel/configs.c | 75913 | diff --git a/kernel/configs.c b/kernel/configs.c |
76147 | index 42e8fa0..9e7406b 100644 | 75914 | index c18b1f1..b9a0132 100644 |
76148 | --- a/kernel/configs.c | 75915 | --- a/kernel/configs.c |
76149 | +++ b/kernel/configs.c | 75916 | +++ b/kernel/configs.c |
76150 | @@ -74,8 +74,19 @@ static int __init ikconfig_init(void) | 75917 | @@ -74,8 +74,19 @@ static int __init ikconfig_init(void) |
@@ -76310,7 +76077,7 @@ index e0573a4..3874e41 100644 | |||
76310 | 76077 | ||
76311 | /** | 76078 | /** |
76312 | diff --git a/kernel/debug/debug_core.c b/kernel/debug/debug_core.c | 76079 | diff --git a/kernel/debug/debug_core.c b/kernel/debug/debug_core.c |
76313 | index c26278f..e323fb8 100644 | 76080 | index 0506d44..2c20034 100644 |
76314 | --- a/kernel/debug/debug_core.c | 76081 | --- a/kernel/debug/debug_core.c |
76315 | +++ b/kernel/debug/debug_core.c | 76082 | +++ b/kernel/debug/debug_core.c |
76316 | @@ -123,7 +123,7 @@ static DEFINE_RAW_SPINLOCK(dbg_slave_lock); | 76083 | @@ -123,7 +123,7 @@ static DEFINE_RAW_SPINLOCK(dbg_slave_lock); |
@@ -76396,10 +76163,10 @@ index 00eb8f7..d7e3244 100644 | |||
76396 | #ifdef CONFIG_MODULE_UNLOAD | 76163 | #ifdef CONFIG_MODULE_UNLOAD |
76397 | { | 76164 | { |
76398 | diff --git a/kernel/events/core.c b/kernel/events/core.c | 76165 | diff --git a/kernel/events/core.c b/kernel/events/core.c |
76399 | index f8ddcfb..77c06ec 100644 | 76166 | index e76e495..cbfe63a 100644 |
76400 | --- a/kernel/events/core.c | 76167 | --- a/kernel/events/core.c |
76401 | +++ b/kernel/events/core.c | 76168 | +++ b/kernel/events/core.c |
76402 | @@ -154,8 +154,15 @@ static struct srcu_struct pmus_srcu; | 76169 | @@ -156,8 +156,15 @@ static struct srcu_struct pmus_srcu; |
76403 | * 0 - disallow raw tracepoint access for unpriv | 76170 | * 0 - disallow raw tracepoint access for unpriv |
76404 | * 1 - disallow cpu events for unpriv | 76171 | * 1 - disallow cpu events for unpriv |
76405 | * 2 - disallow kernel profiling for unpriv | 76172 | * 2 - disallow kernel profiling for unpriv |
@@ -76416,7 +76183,7 @@ index f8ddcfb..77c06ec 100644 | |||
76416 | 76183 | ||
76417 | /* Minimum for 512 kiB + 1 user control page */ | 76184 | /* Minimum for 512 kiB + 1 user control page */ |
76418 | int sysctl_perf_event_mlock __read_mostly = 512 + (PAGE_SIZE / 1024); /* 'free' kiB per user */ | 76185 | int sysctl_perf_event_mlock __read_mostly = 512 + (PAGE_SIZE / 1024); /* 'free' kiB per user */ |
76419 | @@ -182,7 +189,7 @@ int perf_proc_update_handler(struct ctl_table *table, int write, | 76186 | @@ -184,7 +191,7 @@ int perf_proc_update_handler(struct ctl_table *table, int write, |
76420 | return 0; | 76187 | return 0; |
76421 | } | 76188 | } |
76422 | 76189 | ||
@@ -76425,7 +76192,7 @@ index f8ddcfb..77c06ec 100644 | |||
76425 | 76192 | ||
76426 | static void cpu_ctx_sched_out(struct perf_cpu_context *cpuctx, | 76193 | static void cpu_ctx_sched_out(struct perf_cpu_context *cpuctx, |
76427 | enum event_type_t event_type); | 76194 | enum event_type_t event_type); |
76428 | @@ -2674,7 +2681,7 @@ static void __perf_event_read(void *info) | 76195 | @@ -2747,7 +2754,7 @@ static void __perf_event_read(void *info) |
76429 | 76196 | ||
76430 | static inline u64 perf_event_count(struct perf_event *event) | 76197 | static inline u64 perf_event_count(struct perf_event *event) |
76431 | { | 76198 | { |
@@ -76434,7 +76201,7 @@ index f8ddcfb..77c06ec 100644 | |||
76434 | } | 76201 | } |
76435 | 76202 | ||
76436 | static u64 perf_event_read(struct perf_event *event) | 76203 | static u64 perf_event_read(struct perf_event *event) |
76437 | @@ -3020,9 +3027,9 @@ u64 perf_event_read_value(struct perf_event *event, u64 *enabled, u64 *running) | 76204 | @@ -3093,9 +3100,9 @@ u64 perf_event_read_value(struct perf_event *event, u64 *enabled, u64 *running) |
76438 | mutex_lock(&event->child_mutex); | 76205 | mutex_lock(&event->child_mutex); |
76439 | total += perf_event_read(event); | 76206 | total += perf_event_read(event); |
76440 | *enabled += event->total_time_enabled + | 76207 | *enabled += event->total_time_enabled + |
@@ -76446,7 +76213,7 @@ index f8ddcfb..77c06ec 100644 | |||
76446 | 76213 | ||
76447 | list_for_each_entry(child, &event->child_list, child_list) { | 76214 | list_for_each_entry(child, &event->child_list, child_list) { |
76448 | total += perf_event_read(child); | 76215 | total += perf_event_read(child); |
76449 | @@ -3408,10 +3415,10 @@ void perf_event_update_userpage(struct perf_event *event) | 76216 | @@ -3481,10 +3488,10 @@ void perf_event_update_userpage(struct perf_event *event) |
76450 | userpg->offset -= local64_read(&event->hw.prev_count); | 76217 | userpg->offset -= local64_read(&event->hw.prev_count); |
76451 | 76218 | ||
76452 | userpg->time_enabled = enabled + | 76219 | userpg->time_enabled = enabled + |
@@ -76459,7 +76226,7 @@ index f8ddcfb..77c06ec 100644 | |||
76459 | 76226 | ||
76460 | arch_perf_update_userpage(userpg, now); | 76227 | arch_perf_update_userpage(userpg, now); |
76461 | 76228 | ||
76462 | @@ -3961,7 +3968,7 @@ perf_output_sample_ustack(struct perf_output_handle *handle, u64 dump_size, | 76229 | @@ -4034,7 +4041,7 @@ perf_output_sample_ustack(struct perf_output_handle *handle, u64 dump_size, |
76463 | 76230 | ||
76464 | /* Data. */ | 76231 | /* Data. */ |
76465 | sp = perf_user_stack_pointer(regs); | 76232 | sp = perf_user_stack_pointer(regs); |
@@ -76468,7 +76235,7 @@ index f8ddcfb..77c06ec 100644 | |||
76468 | dyn_size = dump_size - rem; | 76235 | dyn_size = dump_size - rem; |
76469 | 76236 | ||
76470 | perf_output_skip(handle, rem); | 76237 | perf_output_skip(handle, rem); |
76471 | @@ -4049,11 +4056,11 @@ static void perf_output_read_one(struct perf_output_handle *handle, | 76238 | @@ -4122,11 +4129,11 @@ static void perf_output_read_one(struct perf_output_handle *handle, |
76472 | values[n++] = perf_event_count(event); | 76239 | values[n++] = perf_event_count(event); |
76473 | if (read_format & PERF_FORMAT_TOTAL_TIME_ENABLED) { | 76240 | if (read_format & PERF_FORMAT_TOTAL_TIME_ENABLED) { |
76474 | values[n++] = enabled + | 76241 | values[n++] = enabled + |
@@ -76482,7 +76249,7 @@ index f8ddcfb..77c06ec 100644 | |||
76482 | } | 76249 | } |
76483 | if (read_format & PERF_FORMAT_ID) | 76250 | if (read_format & PERF_FORMAT_ID) |
76484 | values[n++] = primary_event_id(event); | 76251 | values[n++] = primary_event_id(event); |
76485 | @@ -4801,12 +4808,12 @@ static void perf_event_mmap_event(struct perf_mmap_event *mmap_event) | 76252 | @@ -4835,12 +4842,12 @@ static void perf_event_mmap_event(struct perf_mmap_event *mmap_event) |
76486 | * need to add enough zero bytes after the string to handle | 76253 | * need to add enough zero bytes after the string to handle |
76487 | * the 64bit alignment we do later. | 76254 | * the 64bit alignment we do later. |
76488 | */ | 76255 | */ |
@@ -76497,7 +76264,7 @@ index f8ddcfb..77c06ec 100644 | |||
76497 | if (IS_ERR(name)) { | 76264 | if (IS_ERR(name)) { |
76498 | name = strncpy(tmp, "//toolong", sizeof(tmp)); | 76265 | name = strncpy(tmp, "//toolong", sizeof(tmp)); |
76499 | goto got_name; | 76266 | goto got_name; |
76500 | @@ -6242,7 +6249,7 @@ perf_event_alloc(struct perf_event_attr *attr, int cpu, | 76267 | @@ -6262,7 +6269,7 @@ perf_event_alloc(struct perf_event_attr *attr, int cpu, |
76501 | event->parent = parent_event; | 76268 | event->parent = parent_event; |
76502 | 76269 | ||
76503 | event->ns = get_pid_ns(task_active_pid_ns(current)); | 76270 | event->ns = get_pid_ns(task_active_pid_ns(current)); |
@@ -76506,7 +76273,7 @@ index f8ddcfb..77c06ec 100644 | |||
76506 | 76273 | ||
76507 | event->state = PERF_EVENT_STATE_INACTIVE; | 76274 | event->state = PERF_EVENT_STATE_INACTIVE; |
76508 | 76275 | ||
76509 | @@ -6552,6 +6559,11 @@ SYSCALL_DEFINE5(perf_event_open, | 76276 | @@ -6572,6 +6579,11 @@ SYSCALL_DEFINE5(perf_event_open, |
76510 | if (flags & ~PERF_FLAG_ALL) | 76277 | if (flags & ~PERF_FLAG_ALL) |
76511 | return -EINVAL; | 76278 | return -EINVAL; |
76512 | 76279 | ||
@@ -76518,7 +76285,7 @@ index f8ddcfb..77c06ec 100644 | |||
76518 | err = perf_copy_attr(attr_uptr, &attr); | 76285 | err = perf_copy_attr(attr_uptr, &attr); |
76519 | if (err) | 76286 | if (err) |
76520 | return err; | 76287 | return err; |
76521 | @@ -6884,10 +6896,10 @@ static void sync_child_event(struct perf_event *child_event, | 76288 | @@ -6904,10 +6916,10 @@ static void sync_child_event(struct perf_event *child_event, |
76522 | /* | 76289 | /* |
76523 | * Add back the child's count to the parent's count: | 76290 | * Add back the child's count to the parent's count: |
76524 | */ | 76291 | */ |
@@ -76571,7 +76338,7 @@ index ca65997..cc8cee4 100644 | |||
76571 | /* Callchain handling */ | 76338 | /* Callchain handling */ |
76572 | extern struct perf_callchain_entry * | 76339 | extern struct perf_callchain_entry * |
76573 | diff --git a/kernel/exit.c b/kernel/exit.c | 76340 | diff --git a/kernel/exit.c b/kernel/exit.c |
76574 | index 60bc027..ca6d727 100644 | 76341 | index 7bb73f9..d7978ed 100644 |
76575 | --- a/kernel/exit.c | 76342 | --- a/kernel/exit.c |
76576 | +++ b/kernel/exit.c | 76343 | +++ b/kernel/exit.c |
76577 | @@ -172,6 +172,10 @@ void release_task(struct task_struct * p) | 76344 | @@ -172,6 +172,10 @@ void release_task(struct task_struct * p) |
@@ -76594,7 +76361,7 @@ index 60bc027..ca6d727 100644 | |||
76594 | recalc_sigpending(); | 76361 | recalc_sigpending(); |
76595 | spin_unlock_irq(¤t->sighand->siglock); | 76362 | spin_unlock_irq(¤t->sighand->siglock); |
76596 | return 0; | 76363 | return 0; |
76597 | @@ -710,6 +714,8 @@ void do_exit(long code) | 76364 | @@ -709,6 +713,8 @@ void do_exit(long code) |
76598 | struct task_struct *tsk = current; | 76365 | struct task_struct *tsk = current; |
76599 | int group_dead; | 76366 | int group_dead; |
76600 | 76367 | ||
@@ -76603,7 +76370,7 @@ index 60bc027..ca6d727 100644 | |||
76603 | profile_task_exit(tsk); | 76370 | profile_task_exit(tsk); |
76604 | 76371 | ||
76605 | WARN_ON(blk_needs_flush_plug(tsk)); | 76372 | WARN_ON(blk_needs_flush_plug(tsk)); |
76606 | @@ -726,7 +732,6 @@ void do_exit(long code) | 76373 | @@ -725,7 +731,6 @@ void do_exit(long code) |
76607 | * mm_release()->clear_child_tid() from writing to a user-controlled | 76374 | * mm_release()->clear_child_tid() from writing to a user-controlled |
76608 | * kernel address. | 76375 | * kernel address. |
76609 | */ | 76376 | */ |
@@ -76611,7 +76378,7 @@ index 60bc027..ca6d727 100644 | |||
76611 | 76378 | ||
76612 | ptrace_event(PTRACE_EVENT_EXIT, code); | 76379 | ptrace_event(PTRACE_EVENT_EXIT, code); |
76613 | 76380 | ||
76614 | @@ -785,6 +790,9 @@ void do_exit(long code) | 76381 | @@ -784,6 +789,9 @@ void do_exit(long code) |
76615 | tsk->exit_code = code; | 76382 | tsk->exit_code = code; |
76616 | taskstats_exit(tsk, group_dead); | 76383 | taskstats_exit(tsk, group_dead); |
76617 | 76384 | ||
@@ -76631,10 +76398,10 @@ index 60bc027..ca6d727 100644 | |||
76631 | { | 76398 | { |
76632 | struct signal_struct *sig = current->signal; | 76399 | struct signal_struct *sig = current->signal; |
76633 | diff --git a/kernel/fork.c b/kernel/fork.c | 76400 | diff --git a/kernel/fork.c b/kernel/fork.c |
76634 | index 1766d32..c0e44e2 100644 | 76401 | index 987b28a..e0102b2 100644 |
76635 | --- a/kernel/fork.c | 76402 | --- a/kernel/fork.c |
76636 | +++ b/kernel/fork.c | 76403 | +++ b/kernel/fork.c |
76637 | @@ -318,7 +318,7 @@ static struct task_struct *dup_task_struct(struct task_struct *orig) | 76404 | @@ -319,7 +319,7 @@ static struct task_struct *dup_task_struct(struct task_struct *orig) |
76638 | *stackend = STACK_END_MAGIC; /* for overflow detection */ | 76405 | *stackend = STACK_END_MAGIC; /* for overflow detection */ |
76639 | 76406 | ||
76640 | #ifdef CONFIG_CC_STACKPROTECTOR | 76407 | #ifdef CONFIG_CC_STACKPROTECTOR |
@@ -76643,7 +76410,7 @@ index 1766d32..c0e44e2 100644 | |||
76643 | #endif | 76410 | #endif |
76644 | 76411 | ||
76645 | /* | 76412 | /* |
76646 | @@ -344,13 +344,81 @@ free_tsk: | 76413 | @@ -345,13 +345,81 @@ free_tsk: |
76647 | } | 76414 | } |
76648 | 76415 | ||
76649 | #ifdef CONFIG_MMU | 76416 | #ifdef CONFIG_MMU |
@@ -76727,7 +76494,7 @@ index 1766d32..c0e44e2 100644 | |||
76727 | 76494 | ||
76728 | uprobe_start_dup_mmap(); | 76495 | uprobe_start_dup_mmap(); |
76729 | down_write(&oldmm->mmap_sem); | 76496 | down_write(&oldmm->mmap_sem); |
76730 | @@ -364,8 +432,8 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm) | 76497 | @@ -365,8 +433,8 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm) |
76731 | mm->locked_vm = 0; | 76498 | mm->locked_vm = 0; |
76732 | mm->mmap = NULL; | 76499 | mm->mmap = NULL; |
76733 | mm->mmap_cache = NULL; | 76500 | mm->mmap_cache = NULL; |
@@ -76738,7 +76505,7 @@ index 1766d32..c0e44e2 100644 | |||
76738 | mm->map_count = 0; | 76505 | mm->map_count = 0; |
76739 | cpumask_clear(mm_cpumask(mm)); | 76506 | cpumask_clear(mm_cpumask(mm)); |
76740 | mm->mm_rb = RB_ROOT; | 76507 | mm->mm_rb = RB_ROOT; |
76741 | @@ -381,57 +449,15 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm) | 76508 | @@ -382,57 +450,15 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm) |
76742 | 76509 | ||
76743 | prev = NULL; | 76510 | prev = NULL; |
76744 | for (mpnt = oldmm->mmap; mpnt; mpnt = mpnt->vm_next) { | 76511 | for (mpnt = oldmm->mmap; mpnt; mpnt = mpnt->vm_next) { |
@@ -76800,7 +76567,7 @@ index 1766d32..c0e44e2 100644 | |||
76800 | } | 76567 | } |
76801 | 76568 | ||
76802 | /* | 76569 | /* |
76803 | @@ -463,6 +489,31 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm) | 76570 | @@ -464,6 +490,31 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm) |
76804 | if (retval) | 76571 | if (retval) |
76805 | goto out; | 76572 | goto out; |
76806 | } | 76573 | } |
@@ -76832,7 +76599,7 @@ index 1766d32..c0e44e2 100644 | |||
76832 | /* a new mm has just been created */ | 76599 | /* a new mm has just been created */ |
76833 | arch_dup_mmap(oldmm, mm); | 76600 | arch_dup_mmap(oldmm, mm); |
76834 | retval = 0; | 76601 | retval = 0; |
76835 | @@ -472,14 +523,6 @@ out: | 76602 | @@ -473,14 +524,6 @@ out: |
76836 | up_write(&oldmm->mmap_sem); | 76603 | up_write(&oldmm->mmap_sem); |
76837 | uprobe_end_dup_mmap(); | 76604 | uprobe_end_dup_mmap(); |
76838 | return retval; | 76605 | return retval; |
@@ -76847,7 +76614,7 @@ index 1766d32..c0e44e2 100644 | |||
76847 | } | 76614 | } |
76848 | 76615 | ||
76849 | static inline int mm_alloc_pgd(struct mm_struct *mm) | 76616 | static inline int mm_alloc_pgd(struct mm_struct *mm) |
76850 | @@ -694,8 +737,8 @@ struct mm_struct *mm_access(struct task_struct *task, unsigned int mode) | 76617 | @@ -695,8 +738,8 @@ struct mm_struct *mm_access(struct task_struct *task, unsigned int mode) |
76851 | return ERR_PTR(err); | 76618 | return ERR_PTR(err); |
76852 | 76619 | ||
76853 | mm = get_task_mm(task); | 76620 | mm = get_task_mm(task); |
@@ -76858,7 +76625,7 @@ index 1766d32..c0e44e2 100644 | |||
76858 | mmput(mm); | 76625 | mmput(mm); |
76859 | mm = ERR_PTR(-EACCES); | 76626 | mm = ERR_PTR(-EACCES); |
76860 | } | 76627 | } |
76861 | @@ -917,13 +960,20 @@ static int copy_fs(unsigned long clone_flags, struct task_struct *tsk) | 76628 | @@ -918,13 +961,20 @@ static int copy_fs(unsigned long clone_flags, struct task_struct *tsk) |
76862 | spin_unlock(&fs->lock); | 76629 | spin_unlock(&fs->lock); |
76863 | return -EAGAIN; | 76630 | return -EAGAIN; |
76864 | } | 76631 | } |
@@ -76880,7 +76647,7 @@ index 1766d32..c0e44e2 100644 | |||
76880 | return 0; | 76647 | return 0; |
76881 | } | 76648 | } |
76882 | 76649 | ||
76883 | @@ -1196,6 +1246,9 @@ static struct task_struct *copy_process(unsigned long clone_flags, | 76650 | @@ -1197,10 +1247,13 @@ static struct task_struct *copy_process(unsigned long clone_flags, |
76884 | DEBUG_LOCKS_WARN_ON(!p->softirqs_enabled); | 76651 | DEBUG_LOCKS_WARN_ON(!p->softirqs_enabled); |
76885 | #endif | 76652 | #endif |
76886 | retval = -EAGAIN; | 76653 | retval = -EAGAIN; |
@@ -76889,8 +76656,14 @@ index 1766d32..c0e44e2 100644 | |||
76889 | + | 76656 | + |
76890 | if (atomic_read(&p->real_cred->user->processes) >= | 76657 | if (atomic_read(&p->real_cred->user->processes) >= |
76891 | task_rlimit(p, RLIMIT_NPROC)) { | 76658 | task_rlimit(p, RLIMIT_NPROC)) { |
76892 | if (!capable(CAP_SYS_ADMIN) && !capable(CAP_SYS_RESOURCE) && | 76659 | - if (!capable(CAP_SYS_ADMIN) && !capable(CAP_SYS_RESOURCE) && |
76893 | @@ -1441,6 +1494,11 @@ static struct task_struct *copy_process(unsigned long clone_flags, | 76660 | - p->real_cred->user != INIT_USER) |
76661 | + if (p->real_cred->user != INIT_USER && | ||
76662 | + !capable(CAP_SYS_RESOURCE) && !capable(CAP_SYS_ADMIN)) | ||
76663 | goto bad_fork_free; | ||
76664 | } | ||
76665 | current->flags &= ~PF_NPROC_EXCEEDED; | ||
76666 | @@ -1446,6 +1499,11 @@ static struct task_struct *copy_process(unsigned long clone_flags, | ||
76894 | goto bad_fork_free_pid; | 76667 | goto bad_fork_free_pid; |
76895 | } | 76668 | } |
76896 | 76669 | ||
@@ -76902,7 +76675,7 @@ index 1766d32..c0e44e2 100644 | |||
76902 | if (clone_flags & CLONE_THREAD) { | 76675 | if (clone_flags & CLONE_THREAD) { |
76903 | current->signal->nr_threads++; | 76676 | current->signal->nr_threads++; |
76904 | atomic_inc(¤t->signal->live); | 76677 | atomic_inc(¤t->signal->live); |
76905 | @@ -1524,6 +1582,8 @@ bad_fork_cleanup_count: | 76678 | @@ -1529,6 +1587,8 @@ bad_fork_cleanup_count: |
76906 | bad_fork_free: | 76679 | bad_fork_free: |
76907 | free_task(p); | 76680 | free_task(p); |
76908 | fork_out: | 76681 | fork_out: |
@@ -76911,7 +76684,7 @@ index 1766d32..c0e44e2 100644 | |||
76911 | return ERR_PTR(retval); | 76684 | return ERR_PTR(retval); |
76912 | } | 76685 | } |
76913 | 76686 | ||
76914 | @@ -1574,6 +1634,23 @@ long do_fork(unsigned long clone_flags, | 76687 | @@ -1579,6 +1639,23 @@ long do_fork(unsigned long clone_flags, |
76915 | return -EINVAL; | 76688 | return -EINVAL; |
76916 | } | 76689 | } |
76917 | 76690 | ||
@@ -76935,7 +76708,7 @@ index 1766d32..c0e44e2 100644 | |||
76935 | /* | 76708 | /* |
76936 | * Determine whether and which event to report to ptracer. When | 76709 | * Determine whether and which event to report to ptracer. When |
76937 | * called from kernel_thread or CLONE_UNTRACED is explicitly | 76710 | * called from kernel_thread or CLONE_UNTRACED is explicitly |
76938 | @@ -1608,6 +1685,8 @@ long do_fork(unsigned long clone_flags, | 76711 | @@ -1613,6 +1690,8 @@ long do_fork(unsigned long clone_flags, |
76939 | if (clone_flags & CLONE_PARENT_SETTID) | 76712 | if (clone_flags & CLONE_PARENT_SETTID) |
76940 | put_user(nr, parent_tidptr); | 76713 | put_user(nr, parent_tidptr); |
76941 | 76714 | ||
@@ -76944,7 +76717,16 @@ index 1766d32..c0e44e2 100644 | |||
76944 | if (clone_flags & CLONE_VFORK) { | 76717 | if (clone_flags & CLONE_VFORK) { |
76945 | p->vfork_done = &vfork; | 76718 | p->vfork_done = &vfork; |
76946 | init_completion(&vfork); | 76719 | init_completion(&vfork); |
76947 | @@ -1761,7 +1840,7 @@ static int unshare_fs(unsigned long unshare_flags, struct fs_struct **new_fsp) | 76720 | @@ -1723,7 +1802,7 @@ void __init proc_caches_init(void) |
76721 | mm_cachep = kmem_cache_create("mm_struct", | ||
76722 | sizeof(struct mm_struct), ARCH_MIN_MMSTRUCT_ALIGN, | ||
76723 | SLAB_HWCACHE_ALIGN|SLAB_PANIC|SLAB_NOTRACK, NULL); | ||
76724 | - vm_area_cachep = KMEM_CACHE(vm_area_struct, SLAB_PANIC); | ||
76725 | + vm_area_cachep = KMEM_CACHE(vm_area_struct, SLAB_PANIC | SLAB_NO_SANITIZE); | ||
76726 | mmap_init(); | ||
76727 | nsproxy_cache_init(); | ||
76728 | } | ||
76729 | @@ -1763,7 +1842,7 @@ static int unshare_fs(unsigned long unshare_flags, struct fs_struct **new_fsp) | ||
76948 | return 0; | 76730 | return 0; |
76949 | 76731 | ||
76950 | /* don't need lock here; in the worst case we'll do useless copy */ | 76732 | /* don't need lock here; in the worst case we'll do useless copy */ |
@@ -76953,7 +76735,7 @@ index 1766d32..c0e44e2 100644 | |||
76953 | return 0; | 76735 | return 0; |
76954 | 76736 | ||
76955 | *new_fsp = copy_fs_struct(fs); | 76737 | *new_fsp = copy_fs_struct(fs); |
76956 | @@ -1873,7 +1952,8 @@ SYSCALL_DEFINE1(unshare, unsigned long, unshare_flags) | 76738 | @@ -1875,7 +1954,8 @@ SYSCALL_DEFINE1(unshare, unsigned long, unshare_flags) |
76957 | fs = current->fs; | 76739 | fs = current->fs; |
76958 | spin_lock(&fs->lock); | 76740 | spin_lock(&fs->lock); |
76959 | current->fs = new_fs; | 76741 | current->fs = new_fs; |
@@ -77046,67 +76828,19 @@ index 9b22d03..6295b62 100644 | |||
77046 | prev->next = info->next; | 76828 | prev->next = info->next; |
77047 | else | 76829 | else |
77048 | diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c | 76830 | diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c |
77049 | index 7ef5556..f67a983 100644 | 76831 | index 2288fbd..0f3941f 100644 |
77050 | --- a/kernel/hrtimer.c | 76832 | --- a/kernel/hrtimer.c |
77051 | +++ b/kernel/hrtimer.c | 76833 | +++ b/kernel/hrtimer.c |
77052 | @@ -709,17 +709,20 @@ static int hrtimer_switch_to_hres(void) | 76834 | @@ -1435,7 +1435,7 @@ void hrtimer_peek_ahead_timers(void) |
77053 | return 1; | ||
77054 | } | ||
77055 | |||
77056 | +static void clock_was_set_work(struct work_struct *work) | ||
77057 | +{ | ||
77058 | + clock_was_set(); | ||
77059 | +} | ||
77060 | + | ||
77061 | +static DECLARE_WORK(hrtimer_work, clock_was_set_work); | ||
77062 | + | ||
77063 | /* | ||
77064 | - * Called from timekeeping code to reprogramm the hrtimer interrupt | ||
77065 | - * device. If called from the timer interrupt context we defer it to | ||
77066 | - * softirq context. | ||
77067 | + * Called from timekeeping and resume code to reprogramm the hrtimer | ||
77068 | + * interrupt device on all cpus. | ||
77069 | */ | ||
77070 | void clock_was_set_delayed(void) | ||
77071 | { | ||
77072 | - struct hrtimer_cpu_base *cpu_base = &__get_cpu_var(hrtimer_bases); | ||
77073 | - | ||
77074 | - cpu_base->clock_was_set = 1; | ||
77075 | - __raise_softirq_irqoff(HRTIMER_SOFTIRQ); | ||
77076 | + schedule_work(&hrtimer_work); | ||
77077 | } | ||
77078 | |||
77079 | #else | ||
77080 | @@ -768,8 +771,10 @@ void hrtimers_resume(void) | ||
77081 | WARN_ONCE(!irqs_disabled(), | ||
77082 | KERN_INFO "hrtimers_resume() called with IRQs enabled!"); | ||
77083 | |||
77084 | + /* Retrigger on the local CPU */ | ||
77085 | retrigger_next_event(NULL); | ||
77086 | - timerfd_clock_was_set(); | ||
77087 | + /* And schedule a retrigger for all others */ | ||
77088 | + clock_was_set_delayed(); | ||
77089 | } | ||
77090 | |||
77091 | static inline void timer_stats_hrtimer_set_start_info(struct hrtimer *timer) | ||
77092 | @@ -1416,15 +1421,8 @@ void hrtimer_peek_ahead_timers(void) | ||
77093 | local_irq_restore(flags); | 76835 | local_irq_restore(flags); |
77094 | } | 76836 | } |
77095 | 76837 | ||
77096 | -static void run_hrtimer_softirq(struct softirq_action *h) | 76838 | -static void run_hrtimer_softirq(struct softirq_action *h) |
77097 | +static void run_hrtimer_softirq(void) | 76839 | +static void run_hrtimer_softirq(void) |
77098 | { | 76840 | { |
77099 | - struct hrtimer_cpu_base *cpu_base = &__get_cpu_var(hrtimer_bases); | ||
77100 | - | ||
77101 | - if (cpu_base->clock_was_set) { | ||
77102 | - cpu_base->clock_was_set = 0; | ||
77103 | - clock_was_set(); | ||
77104 | - } | ||
77105 | - | ||
77106 | hrtimer_peek_ahead_timers(); | 76841 | hrtimer_peek_ahead_timers(); |
77107 | } | 76842 | } |
77108 | 76843 | @@ -1770,7 +1770,7 @@ static int __cpuinit hrtimer_cpu_notify(struct notifier_block *self, | |
77109 | @@ -1758,7 +1756,7 @@ static int __cpuinit hrtimer_cpu_notify(struct notifier_block *self, | ||
77110 | return NOTIFY_OK; | 76844 | return NOTIFY_OK; |
77111 | } | 76845 | } |
77112 | 76846 | ||
@@ -77172,7 +76906,7 @@ index 60f48fa..7f3a770 100644 | |||
77172 | 76906 | ||
77173 | static int | 76907 | static int |
77174 | diff --git a/kernel/kallsyms.c b/kernel/kallsyms.c | 76908 | diff --git a/kernel/kallsyms.c b/kernel/kallsyms.c |
77175 | index 2169fee..706ccca 100644 | 76909 | index 3127ad5..159d880 100644 |
77176 | --- a/kernel/kallsyms.c | 76910 | --- a/kernel/kallsyms.c |
77177 | +++ b/kernel/kallsyms.c | 76911 | +++ b/kernel/kallsyms.c |
77178 | @@ -11,6 +11,9 @@ | 76912 | @@ -11,6 +11,9 @@ |
@@ -77248,7 +76982,7 @@ index 2169fee..706ccca 100644 | |||
77248 | if (all_var) | 76982 | if (all_var) |
77249 | return is_kernel(addr); | 76983 | return is_kernel(addr); |
77250 | 76984 | ||
77251 | @@ -470,7 +509,6 @@ static unsigned long get_ksymbol_core(struct kallsym_iter *iter) | 76985 | @@ -480,7 +519,6 @@ static unsigned long get_ksymbol_core(struct kallsym_iter *iter) |
77252 | 76986 | ||
77253 | static void reset_iter(struct kallsym_iter *iter, loff_t new_pos) | 76987 | static void reset_iter(struct kallsym_iter *iter, loff_t new_pos) |
77254 | { | 76988 | { |
@@ -77256,7 +76990,7 @@ index 2169fee..706ccca 100644 | |||
77256 | iter->nameoff = get_symbol_offset(new_pos); | 76990 | iter->nameoff = get_symbol_offset(new_pos); |
77257 | iter->pos = new_pos; | 76991 | iter->pos = new_pos; |
77258 | } | 76992 | } |
77259 | @@ -518,6 +556,11 @@ static int s_show(struct seq_file *m, void *p) | 76993 | @@ -528,6 +566,11 @@ static int s_show(struct seq_file *m, void *p) |
77260 | { | 76994 | { |
77261 | struct kallsym_iter *iter = m->private; | 76995 | struct kallsym_iter *iter = m->private; |
77262 | 76996 | ||
@@ -77268,7 +77002,7 @@ index 2169fee..706ccca 100644 | |||
77268 | /* Some debugging symbols have no name. Ignore them. */ | 77002 | /* Some debugging symbols have no name. Ignore them. */ |
77269 | if (!iter->name[0]) | 77003 | if (!iter->name[0]) |
77270 | return 0; | 77004 | return 0; |
77271 | @@ -531,6 +574,7 @@ static int s_show(struct seq_file *m, void *p) | 77005 | @@ -541,6 +584,7 @@ static int s_show(struct seq_file *m, void *p) |
77272 | */ | 77006 | */ |
77273 | type = iter->exported ? toupper(iter->type) : | 77007 | type = iter->exported ? toupper(iter->type) : |
77274 | tolower(iter->type); | 77008 | tolower(iter->type); |
@@ -77276,7 +77010,7 @@ index 2169fee..706ccca 100644 | |||
77276 | seq_printf(m, "%pK %c %s\t[%s]\n", (void *)iter->value, | 77010 | seq_printf(m, "%pK %c %s\t[%s]\n", (void *)iter->value, |
77277 | type, iter->name, iter->module_name); | 77011 | type, iter->name, iter->module_name); |
77278 | } else | 77012 | } else |
77279 | @@ -556,7 +600,7 @@ static int kallsyms_open(struct inode *inode, struct file *file) | 77013 | @@ -566,7 +610,7 @@ static int kallsyms_open(struct inode *inode, struct file *file) |
77280 | struct kallsym_iter *iter; | 77014 | struct kallsym_iter *iter; |
77281 | int ret; | 77015 | int ret; |
77282 | 77016 | ||
@@ -77301,10 +77035,10 @@ index e30ac0f..3528cac 100644 | |||
77301 | 77035 | ||
77302 | /* | 77036 | /* |
77303 | diff --git a/kernel/kexec.c b/kernel/kexec.c | 77037 | diff --git a/kernel/kexec.c b/kernel/kexec.c |
77304 | index ffd4e11..c3ff6bf 100644 | 77038 | index 59f7b55..4022f65 100644 |
77305 | --- a/kernel/kexec.c | 77039 | --- a/kernel/kexec.c |
77306 | +++ b/kernel/kexec.c | 77040 | +++ b/kernel/kexec.c |
77307 | @@ -1048,7 +1048,8 @@ asmlinkage long compat_sys_kexec_load(unsigned long entry, | 77041 | @@ -1041,7 +1041,8 @@ asmlinkage long compat_sys_kexec_load(unsigned long entry, |
77308 | unsigned long flags) | 77042 | unsigned long flags) |
77309 | { | 77043 | { |
77310 | struct compat_kexec_segment in; | 77044 | struct compat_kexec_segment in; |
@@ -77315,7 +77049,7 @@ index ffd4e11..c3ff6bf 100644 | |||
77315 | 77049 | ||
77316 | /* Don't allow clients that don't understand the native | 77050 | /* Don't allow clients that don't understand the native |
77317 | diff --git a/kernel/kmod.c b/kernel/kmod.c | 77051 | diff --git a/kernel/kmod.c b/kernel/kmod.c |
77318 | index 8985c87..f539dbe 100644 | 77052 | index 8241906..d625f2c 100644 |
77319 | --- a/kernel/kmod.c | 77053 | --- a/kernel/kmod.c |
77320 | +++ b/kernel/kmod.c | 77054 | +++ b/kernel/kmod.c |
77321 | @@ -75,7 +75,7 @@ static void free_modprobe_argv(struct subprocess_info *info) | 77055 | @@ -75,7 +75,7 @@ static void free_modprobe_argv(struct subprocess_info *info) |
@@ -77325,9 +77059,9 @@ index 8985c87..f539dbe 100644 | |||
77325 | -static int call_modprobe(char *module_name, int wait) | 77059 | -static int call_modprobe(char *module_name, int wait) |
77326 | +static int call_modprobe(char *module_name, char *module_param, int wait) | 77060 | +static int call_modprobe(char *module_name, char *module_param, int wait) |
77327 | { | 77061 | { |
77062 | struct subprocess_info *info; | ||
77328 | static char *envp[] = { | 77063 | static char *envp[] = { |
77329 | "HOME=/", | 77064 | @@ -85,7 +85,7 @@ static int call_modprobe(char *module_name, int wait) |
77330 | @@ -84,7 +84,7 @@ static int call_modprobe(char *module_name, int wait) | ||
77331 | NULL | 77065 | NULL |
77332 | }; | 77066 | }; |
77333 | 77067 | ||
@@ -77336,7 +77070,7 @@ index 8985c87..f539dbe 100644 | |||
77336 | if (!argv) | 77070 | if (!argv) |
77337 | goto out; | 77071 | goto out; |
77338 | 77072 | ||
77339 | @@ -96,7 +96,8 @@ static int call_modprobe(char *module_name, int wait) | 77073 | @@ -97,7 +97,8 @@ static int call_modprobe(char *module_name, int wait) |
77340 | argv[1] = "-q"; | 77074 | argv[1] = "-q"; |
77341 | argv[2] = "--"; | 77075 | argv[2] = "--"; |
77342 | argv[3] = module_name; /* check free_modprobe_argv() */ | 77076 | argv[3] = module_name; /* check free_modprobe_argv() */ |
@@ -77344,9 +77078,9 @@ index 8985c87..f539dbe 100644 | |||
77344 | + argv[4] = module_param; | 77078 | + argv[4] = module_param; |
77345 | + argv[5] = NULL; | 77079 | + argv[5] = NULL; |
77346 | 77080 | ||
77347 | return call_usermodehelper_fns(modprobe_path, argv, envp, | 77081 | info = call_usermodehelper_setup(modprobe_path, argv, envp, GFP_KERNEL, |
77348 | wait | UMH_KILLABLE, NULL, free_modprobe_argv, NULL); | 77082 | NULL, free_modprobe_argv, NULL); |
77349 | @@ -121,9 +122,8 @@ out: | 77083 | @@ -129,9 +130,8 @@ out: |
77350 | * If module auto-loading support is disabled then this function | 77084 | * If module auto-loading support is disabled then this function |
77351 | * becomes a no-operation. | 77085 | * becomes a no-operation. |
77352 | */ | 77086 | */ |
@@ -77357,7 +77091,7 @@ index 8985c87..f539dbe 100644 | |||
77357 | char module_name[MODULE_NAME_LEN]; | 77091 | char module_name[MODULE_NAME_LEN]; |
77358 | unsigned int max_modprobes; | 77092 | unsigned int max_modprobes; |
77359 | int ret; | 77093 | int ret; |
77360 | @@ -139,9 +139,7 @@ int __request_module(bool wait, const char *fmt, ...) | 77094 | @@ -147,9 +147,7 @@ int __request_module(bool wait, const char *fmt, ...) |
77361 | */ | 77095 | */ |
77362 | WARN_ON_ONCE(wait && current_is_async()); | 77096 | WARN_ON_ONCE(wait && current_is_async()); |
77363 | 77097 | ||
@@ -77368,7 +77102,7 @@ index 8985c87..f539dbe 100644 | |||
77368 | if (ret >= MODULE_NAME_LEN) | 77102 | if (ret >= MODULE_NAME_LEN) |
77369 | return -ENAMETOOLONG; | 77103 | return -ENAMETOOLONG; |
77370 | 77104 | ||
77371 | @@ -149,6 +147,20 @@ int __request_module(bool wait, const char *fmt, ...) | 77105 | @@ -157,6 +155,20 @@ int __request_module(bool wait, const char *fmt, ...) |
77372 | if (ret) | 77106 | if (ret) |
77373 | return ret; | 77107 | return ret; |
77374 | 77108 | ||
@@ -77389,7 +77123,7 @@ index 8985c87..f539dbe 100644 | |||
77389 | /* If modprobe needs a service that is in a module, we get a recursive | 77123 | /* If modprobe needs a service that is in a module, we get a recursive |
77390 | * loop. Limit the number of running kmod threads to max_threads/2 or | 77124 | * loop. Limit the number of running kmod threads to max_threads/2 or |
77391 | * MAX_KMOD_CONCURRENT, whichever is the smaller. A cleaner method | 77125 | * MAX_KMOD_CONCURRENT, whichever is the smaller. A cleaner method |
77392 | @@ -177,11 +189,52 @@ int __request_module(bool wait, const char *fmt, ...) | 77126 | @@ -185,11 +197,52 @@ int __request_module(bool wait, const char *fmt, ...) |
77393 | 77127 | ||
77394 | trace_module_request(module_name, wait, _RET_IP_); | 77128 | trace_module_request(module_name, wait, _RET_IP_); |
77395 | 77129 | ||
@@ -77443,7 +77177,7 @@ index 8985c87..f539dbe 100644 | |||
77443 | EXPORT_SYMBOL(__request_module); | 77177 | EXPORT_SYMBOL(__request_module); |
77444 | #endif /* CONFIG_MODULES */ | 77178 | #endif /* CONFIG_MODULES */ |
77445 | 77179 | ||
77446 | @@ -292,7 +345,7 @@ static int wait_for_helper(void *data) | 77180 | @@ -300,7 +353,7 @@ static int wait_for_helper(void *data) |
77447 | * | 77181 | * |
77448 | * Thus the __user pointer cast is valid here. | 77182 | * Thus the __user pointer cast is valid here. |
77449 | */ | 77183 | */ |
@@ -77452,7 +77186,7 @@ index 8985c87..f539dbe 100644 | |||
77452 | 77186 | ||
77453 | /* | 77187 | /* |
77454 | * If ret is 0, either ____call_usermodehelper failed and the | 77188 | * If ret is 0, either ____call_usermodehelper failed and the |
77455 | @@ -649,7 +702,7 @@ EXPORT_SYMBOL(call_usermodehelper_fns); | 77189 | @@ -651,7 +704,7 @@ EXPORT_SYMBOL(call_usermodehelper); |
77456 | static int proc_cap_handler(struct ctl_table *table, int write, | 77190 | static int proc_cap_handler(struct ctl_table *table, int write, |
77457 | void __user *buffer, size_t *lenp, loff_t *ppos) | 77191 | void __user *buffer, size_t *lenp, loff_t *ppos) |
77458 | { | 77192 | { |
@@ -77462,7 +77196,7 @@ index 8985c87..f539dbe 100644 | |||
77462 | kernel_cap_t new_cap; | 77196 | kernel_cap_t new_cap; |
77463 | int err, i; | 77197 | int err, i; |
77464 | diff --git a/kernel/kprobes.c b/kernel/kprobes.c | 77198 | diff --git a/kernel/kprobes.c b/kernel/kprobes.c |
77465 | index 3fed7f0..a3f95ed 100644 | 77199 | index bddf3b2..07b90dd 100644 |
77466 | --- a/kernel/kprobes.c | 77200 | --- a/kernel/kprobes.c |
77467 | +++ b/kernel/kprobes.c | 77201 | +++ b/kernel/kprobes.c |
77468 | @@ -185,7 +185,7 @@ static kprobe_opcode_t __kprobes *__get_insn_slot(struct kprobe_insn_cache *c) | 77202 | @@ -185,7 +185,7 @@ static kprobe_opcode_t __kprobes *__get_insn_slot(struct kprobe_insn_cache *c) |
@@ -77483,7 +77217,7 @@ index 3fed7f0..a3f95ed 100644 | |||
77483 | kfree(kip); | 77217 | kfree(kip); |
77484 | } | 77218 | } |
77485 | return 1; | 77219 | return 1; |
77486 | @@ -2073,7 +2073,7 @@ static int __init init_kprobes(void) | 77220 | @@ -2083,7 +2083,7 @@ static int __init init_kprobes(void) |
77487 | { | 77221 | { |
77488 | int i, err = 0; | 77222 | int i, err = 0; |
77489 | unsigned long offset = 0, size = 0; | 77223 | unsigned long offset = 0, size = 0; |
@@ -77492,7 +77226,7 @@ index 3fed7f0..a3f95ed 100644 | |||
77492 | const char *symbol_name; | 77226 | const char *symbol_name; |
77493 | void *addr; | 77227 | void *addr; |
77494 | struct kprobe_blackpoint *kb; | 77228 | struct kprobe_blackpoint *kb; |
77495 | @@ -2158,11 +2158,11 @@ static void __kprobes report_probe(struct seq_file *pi, struct kprobe *p, | 77229 | @@ -2168,11 +2168,11 @@ static void __kprobes report_probe(struct seq_file *pi, struct kprobe *p, |
77496 | kprobe_type = "k"; | 77230 | kprobe_type = "k"; |
77497 | 77231 | ||
77498 | if (sym) | 77232 | if (sym) |
@@ -77506,7 +77240,7 @@ index 3fed7f0..a3f95ed 100644 | |||
77506 | p->addr, kprobe_type, p->addr); | 77240 | p->addr, kprobe_type, p->addr); |
77507 | 77241 | ||
77508 | if (!pp) | 77242 | if (!pp) |
77509 | @@ -2199,7 +2199,7 @@ static int __kprobes show_kprobe_addr(struct seq_file *pi, void *v) | 77243 | @@ -2209,7 +2209,7 @@ static int __kprobes show_kprobe_addr(struct seq_file *pi, void *v) |
77510 | const char *sym = NULL; | 77244 | const char *sym = NULL; |
77511 | unsigned int i = *(loff_t *) v; | 77245 | unsigned int i = *(loff_t *) v; |
77512 | unsigned long offset = 0; | 77246 | unsigned long offset = 0; |
@@ -77538,10 +77272,10 @@ index 6ada93c..dce7d5d 100644 | |||
77538 | .name = "notes", | 77272 | .name = "notes", |
77539 | .mode = S_IRUGO, | 77273 | .mode = S_IRUGO, |
77540 | diff --git a/kernel/lockdep.c b/kernel/lockdep.c | 77274 | diff --git a/kernel/lockdep.c b/kernel/lockdep.c |
77541 | index 8a0efac..56f1e2d 100644 | 77275 | index 1f3186b..bb7dbc6 100644 |
77542 | --- a/kernel/lockdep.c | 77276 | --- a/kernel/lockdep.c |
77543 | +++ b/kernel/lockdep.c | 77277 | +++ b/kernel/lockdep.c |
77544 | @@ -590,6 +590,10 @@ static int static_obj(void *obj) | 77278 | @@ -596,6 +596,10 @@ static int static_obj(void *obj) |
77545 | end = (unsigned long) &_end, | 77279 | end = (unsigned long) &_end, |
77546 | addr = (unsigned long) obj; | 77280 | addr = (unsigned long) obj; |
77547 | 77281 | ||
@@ -77552,7 +77286,7 @@ index 8a0efac..56f1e2d 100644 | |||
77552 | /* | 77286 | /* |
77553 | * static variable? | 77287 | * static variable? |
77554 | */ | 77288 | */ |
77555 | @@ -730,6 +734,7 @@ register_lock_class(struct lockdep_map *lock, unsigned int subclass, int force) | 77289 | @@ -736,6 +740,7 @@ register_lock_class(struct lockdep_map *lock, unsigned int subclass, int force) |
77556 | if (!static_obj(lock->key)) { | 77290 | if (!static_obj(lock->key)) { |
77557 | debug_locks_off(); | 77291 | debug_locks_off(); |
77558 | printk("INFO: trying to register non-static key.\n"); | 77292 | printk("INFO: trying to register non-static key.\n"); |
@@ -77560,7 +77294,7 @@ index 8a0efac..56f1e2d 100644 | |||
77560 | printk("the code is fine but needs lockdep annotation.\n"); | 77294 | printk("the code is fine but needs lockdep annotation.\n"); |
77561 | printk("turning off the locking correctness validator.\n"); | 77295 | printk("turning off the locking correctness validator.\n"); |
77562 | dump_stack(); | 77296 | dump_stack(); |
77563 | @@ -3078,7 +3083,7 @@ static int __lock_acquire(struct lockdep_map *lock, unsigned int subclass, | 77297 | @@ -3080,7 +3085,7 @@ static int __lock_acquire(struct lockdep_map *lock, unsigned int subclass, |
77564 | if (!class) | 77298 | if (!class) |
77565 | return 0; | 77299 | return 0; |
77566 | } | 77300 | } |
@@ -77619,7 +77353,7 @@ index b2c71c5..7b88d63 100644 | |||
77619 | seq_printf(m, "%40s %14lu %29s %pS\n", | 77353 | seq_printf(m, "%40s %14lu %29s %pS\n", |
77620 | name, stats->contending_point[i], | 77354 | name, stats->contending_point[i], |
77621 | diff --git a/kernel/module.c b/kernel/module.c | 77355 | diff --git a/kernel/module.c b/kernel/module.c |
77622 | index a55f61b..1561428 100644 | 77356 | index fa53db8..6f17200 100644 |
77623 | --- a/kernel/module.c | 77357 | --- a/kernel/module.c |
77624 | +++ b/kernel/module.c | 77358 | +++ b/kernel/module.c |
77625 | @@ -61,6 +61,7 @@ | 77359 | @@ -61,6 +61,7 @@ |
@@ -77685,7 +77419,7 @@ index a55f61b..1561428 100644 | |||
77685 | } | 77419 | } |
77686 | 77420 | ||
77687 | static struct module_attribute modinfo_initsize = | 77421 | static struct module_attribute modinfo_initsize = |
77688 | @@ -1312,7 +1314,7 @@ resolve_symbol_wait(struct module *mod, | 77422 | @@ -1313,7 +1315,7 @@ resolve_symbol_wait(struct module *mod, |
77689 | */ | 77423 | */ |
77690 | #ifdef CONFIG_SYSFS | 77424 | #ifdef CONFIG_SYSFS |
77691 | 77425 | ||
@@ -77694,7 +77428,7 @@ index a55f61b..1561428 100644 | |||
77694 | static inline bool sect_empty(const Elf_Shdr *sect) | 77428 | static inline bool sect_empty(const Elf_Shdr *sect) |
77695 | { | 77429 | { |
77696 | return !(sect->sh_flags & SHF_ALLOC) || sect->sh_size == 0; | 77430 | return !(sect->sh_flags & SHF_ALLOC) || sect->sh_size == 0; |
77697 | @@ -1452,7 +1454,7 @@ static void add_notes_attrs(struct module *mod, const struct load_info *info) | 77431 | @@ -1453,7 +1455,7 @@ static void add_notes_attrs(struct module *mod, const struct load_info *info) |
77698 | { | 77432 | { |
77699 | unsigned int notes, loaded, i; | 77433 | unsigned int notes, loaded, i; |
77700 | struct module_notes_attrs *notes_attrs; | 77434 | struct module_notes_attrs *notes_attrs; |
@@ -77703,7 +77437,7 @@ index a55f61b..1561428 100644 | |||
77703 | 77437 | ||
77704 | /* failed to create section attributes, so can't create notes */ | 77438 | /* failed to create section attributes, so can't create notes */ |
77705 | if (!mod->sect_attrs) | 77439 | if (!mod->sect_attrs) |
77706 | @@ -1564,7 +1566,7 @@ static void del_usage_links(struct module *mod) | 77440 | @@ -1565,7 +1567,7 @@ static void del_usage_links(struct module *mod) |
77707 | static int module_add_modinfo_attrs(struct module *mod) | 77441 | static int module_add_modinfo_attrs(struct module *mod) |
77708 | { | 77442 | { |
77709 | struct module_attribute *attr; | 77443 | struct module_attribute *attr; |
@@ -77712,7 +77446,7 @@ index a55f61b..1561428 100644 | |||
77712 | int error = 0; | 77446 | int error = 0; |
77713 | int i; | 77447 | int i; |
77714 | 77448 | ||
77715 | @@ -1778,21 +1780,21 @@ static void set_section_ro_nx(void *base, | 77449 | @@ -1779,21 +1781,21 @@ static void set_section_ro_nx(void *base, |
77716 | 77450 | ||
77717 | static void unset_module_core_ro_nx(struct module *mod) | 77451 | static void unset_module_core_ro_nx(struct module *mod) |
77718 | { | 77452 | { |
@@ -77742,7 +77476,7 @@ index a55f61b..1561428 100644 | |||
77742 | set_memory_rw); | 77476 | set_memory_rw); |
77743 | } | 77477 | } |
77744 | 77478 | ||
77745 | @@ -1805,14 +1807,14 @@ void set_all_modules_text_rw(void) | 77479 | @@ -1806,14 +1808,14 @@ void set_all_modules_text_rw(void) |
77746 | list_for_each_entry_rcu(mod, &modules, list) { | 77480 | list_for_each_entry_rcu(mod, &modules, list) { |
77747 | if (mod->state == MODULE_STATE_UNFORMED) | 77481 | if (mod->state == MODULE_STATE_UNFORMED) |
77748 | continue; | 77482 | continue; |
@@ -77763,7 +77497,7 @@ index a55f61b..1561428 100644 | |||
77763 | set_memory_rw); | 77497 | set_memory_rw); |
77764 | } | 77498 | } |
77765 | } | 77499 | } |
77766 | @@ -1828,14 +1830,14 @@ void set_all_modules_text_ro(void) | 77500 | @@ -1829,14 +1831,14 @@ void set_all_modules_text_ro(void) |
77767 | list_for_each_entry_rcu(mod, &modules, list) { | 77501 | list_for_each_entry_rcu(mod, &modules, list) { |
77768 | if (mod->state == MODULE_STATE_UNFORMED) | 77502 | if (mod->state == MODULE_STATE_UNFORMED) |
77769 | continue; | 77503 | continue; |
@@ -77784,7 +77518,7 @@ index a55f61b..1561428 100644 | |||
77784 | set_memory_ro); | 77518 | set_memory_ro); |
77785 | } | 77519 | } |
77786 | } | 77520 | } |
77787 | @@ -1886,16 +1888,19 @@ static void free_module(struct module *mod) | 77521 | @@ -1887,16 +1889,19 @@ static void free_module(struct module *mod) |
77788 | 77522 | ||
77789 | /* This may be NULL, but that's OK */ | 77523 | /* This may be NULL, but that's OK */ |
77790 | unset_module_init_ro_nx(mod); | 77524 | unset_module_init_ro_nx(mod); |
@@ -77807,7 +77541,7 @@ index a55f61b..1561428 100644 | |||
77807 | 77541 | ||
77808 | #ifdef CONFIG_MPU | 77542 | #ifdef CONFIG_MPU |
77809 | update_protections(current->mm); | 77543 | update_protections(current->mm); |
77810 | @@ -1965,9 +1970,31 @@ static int simplify_symbols(struct module *mod, const struct load_info *info) | 77544 | @@ -1966,9 +1971,31 @@ static int simplify_symbols(struct module *mod, const struct load_info *info) |
77811 | int ret = 0; | 77545 | int ret = 0; |
77812 | const struct kernel_symbol *ksym; | 77546 | const struct kernel_symbol *ksym; |
77813 | 77547 | ||
@@ -77839,7 +77573,7 @@ index a55f61b..1561428 100644 | |||
77839 | switch (sym[i].st_shndx) { | 77573 | switch (sym[i].st_shndx) { |
77840 | case SHN_COMMON: | 77574 | case SHN_COMMON: |
77841 | /* We compiled with -fno-common. These are not | 77575 | /* We compiled with -fno-common. These are not |
77842 | @@ -1988,7 +2015,9 @@ static int simplify_symbols(struct module *mod, const struct load_info *info) | 77576 | @@ -1989,7 +2016,9 @@ static int simplify_symbols(struct module *mod, const struct load_info *info) |
77843 | ksym = resolve_symbol_wait(mod, info, name); | 77577 | ksym = resolve_symbol_wait(mod, info, name); |
77844 | /* Ok if resolved. */ | 77578 | /* Ok if resolved. */ |
77845 | if (ksym && !IS_ERR(ksym)) { | 77579 | if (ksym && !IS_ERR(ksym)) { |
@@ -77849,7 +77583,7 @@ index a55f61b..1561428 100644 | |||
77849 | break; | 77583 | break; |
77850 | } | 77584 | } |
77851 | 77585 | ||
77852 | @@ -2007,11 +2036,20 @@ static int simplify_symbols(struct module *mod, const struct load_info *info) | 77586 | @@ -2008,11 +2037,20 @@ static int simplify_symbols(struct module *mod, const struct load_info *info) |
77853 | secbase = (unsigned long)mod_percpu(mod); | 77587 | secbase = (unsigned long)mod_percpu(mod); |
77854 | else | 77588 | else |
77855 | secbase = info->sechdrs[sym[i].st_shndx].sh_addr; | 77589 | secbase = info->sechdrs[sym[i].st_shndx].sh_addr; |
@@ -77870,7 +77604,7 @@ index a55f61b..1561428 100644 | |||
77870 | return ret; | 77604 | return ret; |
77871 | } | 77605 | } |
77872 | 77606 | ||
77873 | @@ -2095,22 +2133,12 @@ static void layout_sections(struct module *mod, struct load_info *info) | 77607 | @@ -2096,22 +2134,12 @@ static void layout_sections(struct module *mod, struct load_info *info) |
77874 | || s->sh_entsize != ~0UL | 77608 | || s->sh_entsize != ~0UL |
77875 | || strstarts(sname, ".init")) | 77609 | || strstarts(sname, ".init")) |
77876 | continue; | 77610 | continue; |
@@ -77897,7 +77631,7 @@ index a55f61b..1561428 100644 | |||
77897 | } | 77631 | } |
77898 | 77632 | ||
77899 | pr_debug("Init section allocation order:\n"); | 77633 | pr_debug("Init section allocation order:\n"); |
77900 | @@ -2124,23 +2152,13 @@ static void layout_sections(struct module *mod, struct load_info *info) | 77634 | @@ -2125,23 +2153,13 @@ static void layout_sections(struct module *mod, struct load_info *info) |
77901 | || s->sh_entsize != ~0UL | 77635 | || s->sh_entsize != ~0UL |
77902 | || !strstarts(sname, ".init")) | 77636 | || !strstarts(sname, ".init")) |
77903 | continue; | 77637 | continue; |
@@ -77926,7 +77660,7 @@ index a55f61b..1561428 100644 | |||
77926 | } | 77660 | } |
77927 | } | 77661 | } |
77928 | 77662 | ||
77929 | @@ -2313,7 +2331,7 @@ static void layout_symtab(struct module *mod, struct load_info *info) | 77663 | @@ -2314,7 +2332,7 @@ static void layout_symtab(struct module *mod, struct load_info *info) |
77930 | 77664 | ||
77931 | /* Put symbol section at end of init part of module. */ | 77665 | /* Put symbol section at end of init part of module. */ |
77932 | symsect->sh_flags |= SHF_ALLOC; | 77666 | symsect->sh_flags |= SHF_ALLOC; |
@@ -77935,7 +77669,7 @@ index a55f61b..1561428 100644 | |||
77935 | info->index.sym) | INIT_OFFSET_MASK; | 77669 | info->index.sym) | INIT_OFFSET_MASK; |
77936 | pr_debug("\t%s\n", info->secstrings + symsect->sh_name); | 77670 | pr_debug("\t%s\n", info->secstrings + symsect->sh_name); |
77937 | 77671 | ||
77938 | @@ -2330,13 +2348,13 @@ static void layout_symtab(struct module *mod, struct load_info *info) | 77672 | @@ -2331,13 +2349,13 @@ static void layout_symtab(struct module *mod, struct load_info *info) |
77939 | } | 77673 | } |
77940 | 77674 | ||
77941 | /* Append room for core symbols at end of core part. */ | 77675 | /* Append room for core symbols at end of core part. */ |
@@ -77953,7 +77687,7 @@ index a55f61b..1561428 100644 | |||
77953 | info->index.str) | INIT_OFFSET_MASK; | 77687 | info->index.str) | INIT_OFFSET_MASK; |
77954 | pr_debug("\t%s\n", info->secstrings + strsect->sh_name); | 77688 | pr_debug("\t%s\n", info->secstrings + strsect->sh_name); |
77955 | } | 77689 | } |
77956 | @@ -2354,12 +2372,14 @@ static void add_kallsyms(struct module *mod, const struct load_info *info) | 77690 | @@ -2355,12 +2373,14 @@ static void add_kallsyms(struct module *mod, const struct load_info *info) |
77957 | /* Make sure we get permanent strtab: don't use info->strtab. */ | 77691 | /* Make sure we get permanent strtab: don't use info->strtab. */ |
77958 | mod->strtab = (void *)info->sechdrs[info->index.str].sh_addr; | 77692 | mod->strtab = (void *)info->sechdrs[info->index.str].sh_addr; |
77959 | 77693 | ||
@@ -77970,7 +77704,7 @@ index a55f61b..1561428 100644 | |||
77970 | src = mod->symtab; | 77704 | src = mod->symtab; |
77971 | for (ndst = i = 0; i < mod->num_symtab; i++) { | 77705 | for (ndst = i = 0; i < mod->num_symtab; i++) { |
77972 | if (i == 0 || | 77706 | if (i == 0 || |
77973 | @@ -2371,6 +2391,8 @@ static void add_kallsyms(struct module *mod, const struct load_info *info) | 77707 | @@ -2372,6 +2392,8 @@ static void add_kallsyms(struct module *mod, const struct load_info *info) |
77974 | } | 77708 | } |
77975 | } | 77709 | } |
77976 | mod->core_num_syms = ndst; | 77710 | mod->core_num_syms = ndst; |
@@ -77979,7 +77713,7 @@ index a55f61b..1561428 100644 | |||
77979 | } | 77713 | } |
77980 | #else | 77714 | #else |
77981 | static inline void layout_symtab(struct module *mod, struct load_info *info) | 77715 | static inline void layout_symtab(struct module *mod, struct load_info *info) |
77982 | @@ -2404,17 +2426,33 @@ void * __weak module_alloc(unsigned long size) | 77716 | @@ -2405,17 +2427,33 @@ void * __weak module_alloc(unsigned long size) |
77983 | return vmalloc_exec(size); | 77717 | return vmalloc_exec(size); |
77984 | } | 77718 | } |
77985 | 77719 | ||
@@ -78018,7 +77752,7 @@ index a55f61b..1561428 100644 | |||
78018 | mutex_unlock(&module_mutex); | 77752 | mutex_unlock(&module_mutex); |
78019 | } | 77753 | } |
78020 | return ret; | 77754 | return ret; |
78021 | @@ -2690,8 +2728,14 @@ static struct module *setup_load_info(struct load_info *info, int flags) | 77755 | @@ -2691,8 +2729,14 @@ static struct module *setup_load_info(struct load_info *info, int flags) |
78022 | static int check_modinfo(struct module *mod, struct load_info *info, int flags) | 77756 | static int check_modinfo(struct module *mod, struct load_info *info, int flags) |
78023 | { | 77757 | { |
78024 | const char *modmagic = get_modinfo(info, "vermagic"); | 77758 | const char *modmagic = get_modinfo(info, "vermagic"); |
@@ -78033,7 +77767,7 @@ index a55f61b..1561428 100644 | |||
78033 | if (flags & MODULE_INIT_IGNORE_VERMAGIC) | 77767 | if (flags & MODULE_INIT_IGNORE_VERMAGIC) |
78034 | modmagic = NULL; | 77768 | modmagic = NULL; |
78035 | 77769 | ||
78036 | @@ -2717,7 +2761,7 @@ static int check_modinfo(struct module *mod, struct load_info *info, int flags) | 77770 | @@ -2718,7 +2762,7 @@ static int check_modinfo(struct module *mod, struct load_info *info, int flags) |
78037 | } | 77771 | } |
78038 | 77772 | ||
78039 | /* Set up license info based on the info section */ | 77773 | /* Set up license info based on the info section */ |
@@ -78042,7 +77776,7 @@ index a55f61b..1561428 100644 | |||
78042 | 77776 | ||
78043 | return 0; | 77777 | return 0; |
78044 | } | 77778 | } |
78045 | @@ -2811,7 +2855,7 @@ static int move_module(struct module *mod, struct load_info *info) | 77779 | @@ -2799,7 +2843,7 @@ static int move_module(struct module *mod, struct load_info *info) |
78046 | void *ptr; | 77780 | void *ptr; |
78047 | 77781 | ||
78048 | /* Do the allocs. */ | 77782 | /* Do the allocs. */ |
@@ -78051,7 +77785,7 @@ index a55f61b..1561428 100644 | |||
78051 | /* | 77785 | /* |
78052 | * The pointer to this block is stored in the module structure | 77786 | * The pointer to this block is stored in the module structure |
78053 | * which is inside the block. Just mark it as not being a | 77787 | * which is inside the block. Just mark it as not being a |
78054 | @@ -2821,11 +2865,11 @@ static int move_module(struct module *mod, struct load_info *info) | 77788 | @@ -2809,11 +2853,11 @@ static int move_module(struct module *mod, struct load_info *info) |
78055 | if (!ptr) | 77789 | if (!ptr) |
78056 | return -ENOMEM; | 77790 | return -ENOMEM; |
78057 | 77791 | ||
@@ -78067,17 +77801,20 @@ index a55f61b..1561428 100644 | |||
78067 | /* | 77801 | /* |
78068 | * The pointer to this block is stored in the module structure | 77802 | * The pointer to this block is stored in the module structure |
78069 | * which is inside the block. This block doesn't need to be | 77803 | * which is inside the block. This block doesn't need to be |
78070 | @@ -2834,13 +2878,45 @@ static int move_module(struct module *mod, struct load_info *info) | 77804 | @@ -2822,13 +2866,45 @@ static int move_module(struct module *mod, struct load_info *info) |
78071 | */ | 77805 | */ |
78072 | kmemleak_ignore(ptr); | 77806 | kmemleak_ignore(ptr); |
78073 | if (!ptr) { | 77807 | if (!ptr) { |
78074 | - module_free(mod, mod->module_core); | 77808 | - module_free(mod, mod->module_core); |
78075 | + module_free(mod, mod->module_core_rw); | 77809 | + module_free(mod, mod->module_core_rw); |
78076 | + return -ENOMEM; | 77810 | return -ENOMEM; |
78077 | + } | 77811 | } |
77812 | - memset(ptr, 0, mod->init_size); | ||
77813 | - mod->module_init = ptr; | ||
78078 | + memset(ptr, 0, mod->init_size_rw); | 77814 | + memset(ptr, 0, mod->init_size_rw); |
78079 | + mod->module_init_rw = ptr; | 77815 | + mod->module_init_rw = ptr; |
78080 | + } else | 77816 | } else |
77817 | - mod->module_init = NULL; | ||
78081 | + mod->module_init_rw = NULL; | 77818 | + mod->module_init_rw = NULL; |
78082 | + | 77819 | + |
78083 | + ptr = module_alloc_update_bounds_rx(mod->core_size_rx); | 77820 | + ptr = module_alloc_update_bounds_rx(mod->core_size_rx); |
@@ -78102,22 +77839,19 @@ index a55f61b..1561428 100644 | |||
78102 | + if (mod->module_init_rw) | 77839 | + if (mod->module_init_rw) |
78103 | + module_free(mod, mod->module_init_rw); | 77840 | + module_free(mod, mod->module_init_rw); |
78104 | + module_free(mod, mod->module_core_rw); | 77841 | + module_free(mod, mod->module_core_rw); |
78105 | return -ENOMEM; | 77842 | + return -ENOMEM; |
78106 | } | 77843 | + } |
78107 | - memset(ptr, 0, mod->init_size); | ||
78108 | - mod->module_init = ptr; | ||
78109 | + | 77844 | + |
78110 | + pax_open_kernel(); | 77845 | + pax_open_kernel(); |
78111 | + memset(ptr, 0, mod->init_size_rx); | 77846 | + memset(ptr, 0, mod->init_size_rx); |
78112 | + pax_close_kernel(); | 77847 | + pax_close_kernel(); |
78113 | + mod->module_init_rx = ptr; | 77848 | + mod->module_init_rx = ptr; |
78114 | } else | 77849 | + } else |
78115 | - mod->module_init = NULL; | ||
78116 | + mod->module_init_rx = NULL; | 77850 | + mod->module_init_rx = NULL; |
78117 | 77851 | ||
78118 | /* Transfer each section which specifies SHF_ALLOC */ | 77852 | /* Transfer each section which specifies SHF_ALLOC */ |
78119 | pr_debug("final section addresses:\n"); | 77853 | pr_debug("final section addresses:\n"); |
78120 | @@ -2851,16 +2927,45 @@ static int move_module(struct module *mod, struct load_info *info) | 77854 | @@ -2839,16 +2915,45 @@ static int move_module(struct module *mod, struct load_info *info) |
78121 | if (!(shdr->sh_flags & SHF_ALLOC)) | 77855 | if (!(shdr->sh_flags & SHF_ALLOC)) |
78122 | continue; | 77856 | continue; |
78123 | 77857 | ||
@@ -78170,7 +77904,7 @@ index a55f61b..1561428 100644 | |||
78170 | pr_debug("\t0x%lx %s\n", | 77904 | pr_debug("\t0x%lx %s\n", |
78171 | (long)shdr->sh_addr, info->secstrings + shdr->sh_name); | 77905 | (long)shdr->sh_addr, info->secstrings + shdr->sh_name); |
78172 | } | 77906 | } |
78173 | @@ -2917,12 +3022,12 @@ static void flush_module_icache(const struct module *mod) | 77907 | @@ -2905,12 +3010,12 @@ static void flush_module_icache(const struct module *mod) |
78174 | * Do it before processing of module parameters, so the module | 77908 | * Do it before processing of module parameters, so the module |
78175 | * can provide parameter accessor functions of its own. | 77909 | * can provide parameter accessor functions of its own. |
78176 | */ | 77910 | */ |
@@ -78189,7 +77923,7 @@ index a55f61b..1561428 100644 | |||
78189 | 77923 | ||
78190 | set_fs(old_fs); | 77924 | set_fs(old_fs); |
78191 | } | 77925 | } |
78192 | @@ -2989,8 +3094,10 @@ static int alloc_module_percpu(struct module *mod, struct load_info *info) | 77926 | @@ -2977,8 +3082,10 @@ static int alloc_module_percpu(struct module *mod, struct load_info *info) |
78193 | static void module_deallocate(struct module *mod, struct load_info *info) | 77927 | static void module_deallocate(struct module *mod, struct load_info *info) |
78194 | { | 77928 | { |
78195 | percpu_modfree(mod); | 77929 | percpu_modfree(mod); |
@@ -78202,7 +77936,7 @@ index a55f61b..1561428 100644 | |||
78202 | } | 77936 | } |
78203 | 77937 | ||
78204 | int __weak module_finalize(const Elf_Ehdr *hdr, | 77938 | int __weak module_finalize(const Elf_Ehdr *hdr, |
78205 | @@ -3003,7 +3110,9 @@ int __weak module_finalize(const Elf_Ehdr *hdr, | 77939 | @@ -2991,7 +3098,9 @@ int __weak module_finalize(const Elf_Ehdr *hdr, |
78206 | static int post_relocation(struct module *mod, const struct load_info *info) | 77940 | static int post_relocation(struct module *mod, const struct load_info *info) |
78207 | { | 77941 | { |
78208 | /* Sort exception table now relocations are done. */ | 77942 | /* Sort exception table now relocations are done. */ |
@@ -78212,7 +77946,7 @@ index a55f61b..1561428 100644 | |||
78212 | 77946 | ||
78213 | /* Copy relocated percpu area over. */ | 77947 | /* Copy relocated percpu area over. */ |
78214 | percpu_modcopy(mod, (void *)info->sechdrs[info->index.pcpu].sh_addr, | 77948 | percpu_modcopy(mod, (void *)info->sechdrs[info->index.pcpu].sh_addr, |
78215 | @@ -3057,16 +3166,16 @@ static int do_init_module(struct module *mod) | 77949 | @@ -3045,16 +3154,16 @@ static int do_init_module(struct module *mod) |
78216 | MODULE_STATE_COMING, mod); | 77950 | MODULE_STATE_COMING, mod); |
78217 | 77951 | ||
78218 | /* Set RO and NX regions for core */ | 77952 | /* Set RO and NX regions for core */ |
@@ -78237,7 +77971,7 @@ index a55f61b..1561428 100644 | |||
78237 | 77971 | ||
78238 | do_mod_ctors(mod); | 77972 | do_mod_ctors(mod); |
78239 | /* Start the module */ | 77973 | /* Start the module */ |
78240 | @@ -3128,11 +3237,12 @@ static int do_init_module(struct module *mod) | 77974 | @@ -3116,11 +3225,12 @@ static int do_init_module(struct module *mod) |
78241 | mod->strtab = mod->core_strtab; | 77975 | mod->strtab = mod->core_strtab; |
78242 | #endif | 77976 | #endif |
78243 | unset_module_init_ro_nx(mod); | 77977 | unset_module_init_ro_nx(mod); |
@@ -78255,7 +77989,7 @@ index a55f61b..1561428 100644 | |||
78255 | mutex_unlock(&module_mutex); | 77989 | mutex_unlock(&module_mutex); |
78256 | wake_up_all(&module_wq); | 77990 | wake_up_all(&module_wq); |
78257 | 77991 | ||
78258 | @@ -3264,9 +3374,38 @@ static int load_module(struct load_info *info, const char __user *uargs, | 77992 | @@ -3252,9 +3362,38 @@ static int load_module(struct load_info *info, const char __user *uargs, |
78259 | if (err) | 77993 | if (err) |
78260 | goto free_unload; | 77994 | goto free_unload; |
78261 | 77995 | ||
@@ -78294,7 +78028,7 @@ index a55f61b..1561428 100644 | |||
78294 | /* Fix up syms, so that st_value is a pointer to location. */ | 78028 | /* Fix up syms, so that st_value is a pointer to location. */ |
78295 | err = simplify_symbols(mod, info); | 78029 | err = simplify_symbols(mod, info); |
78296 | if (err < 0) | 78030 | if (err < 0) |
78297 | @@ -3282,13 +3421,6 @@ static int load_module(struct load_info *info, const char __user *uargs, | 78031 | @@ -3270,13 +3409,6 @@ static int load_module(struct load_info *info, const char __user *uargs, |
78298 | 78032 | ||
78299 | flush_module_icache(mod); | 78033 | flush_module_icache(mod); |
78300 | 78034 | ||
@@ -78308,7 +78042,7 @@ index a55f61b..1561428 100644 | |||
78308 | dynamic_debug_setup(info->debug, info->num_debug); | 78042 | dynamic_debug_setup(info->debug, info->num_debug); |
78309 | 78043 | ||
78310 | /* Finally it's fully formed, ready to start executing. */ | 78044 | /* Finally it's fully formed, ready to start executing. */ |
78311 | @@ -3323,11 +3455,10 @@ static int load_module(struct load_info *info, const char __user *uargs, | 78045 | @@ -3311,11 +3443,10 @@ static int load_module(struct load_info *info, const char __user *uargs, |
78312 | ddebug_cleanup: | 78046 | ddebug_cleanup: |
78313 | dynamic_debug_remove(info->debug); | 78047 | dynamic_debug_remove(info->debug); |
78314 | synchronize_sched(); | 78048 | synchronize_sched(); |
@@ -78321,7 +78055,7 @@ index a55f61b..1561428 100644 | |||
78321 | free_unload: | 78055 | free_unload: |
78322 | module_unload_free(mod); | 78056 | module_unload_free(mod); |
78323 | unlink_mod: | 78057 | unlink_mod: |
78324 | @@ -3410,10 +3541,16 @@ static const char *get_ksymbol(struct module *mod, | 78058 | @@ -3398,10 +3529,16 @@ static const char *get_ksymbol(struct module *mod, |
78325 | unsigned long nextval; | 78059 | unsigned long nextval; |
78326 | 78060 | ||
78327 | /* At worse, next value is at end of module */ | 78061 | /* At worse, next value is at end of module */ |
@@ -78341,7 +78075,7 @@ index a55f61b..1561428 100644 | |||
78341 | 78075 | ||
78342 | /* Scan for closest preceding symbol, and next symbol. (ELF | 78076 | /* Scan for closest preceding symbol, and next symbol. (ELF |
78343 | starts real symbols at 1). */ | 78077 | starts real symbols at 1). */ |
78344 | @@ -3666,7 +3803,7 @@ static int m_show(struct seq_file *m, void *p) | 78078 | @@ -3654,7 +3791,7 @@ static int m_show(struct seq_file *m, void *p) |
78345 | return 0; | 78079 | return 0; |
78346 | 78080 | ||
78347 | seq_printf(m, "%s %u", | 78081 | seq_printf(m, "%s %u", |
@@ -78350,7 +78084,7 @@ index a55f61b..1561428 100644 | |||
78350 | print_unload_info(m, mod); | 78084 | print_unload_info(m, mod); |
78351 | 78085 | ||
78352 | /* Informative for users. */ | 78086 | /* Informative for users. */ |
78353 | @@ -3675,7 +3812,7 @@ static int m_show(struct seq_file *m, void *p) | 78087 | @@ -3663,7 +3800,7 @@ static int m_show(struct seq_file *m, void *p) |
78354 | mod->state == MODULE_STATE_COMING ? "Loading": | 78088 | mod->state == MODULE_STATE_COMING ? "Loading": |
78355 | "Live"); | 78089 | "Live"); |
78356 | /* Used by oprofile and other similar tools. */ | 78090 | /* Used by oprofile and other similar tools. */ |
@@ -78359,7 +78093,7 @@ index a55f61b..1561428 100644 | |||
78359 | 78093 | ||
78360 | /* Taints info */ | 78094 | /* Taints info */ |
78361 | if (mod->taints) | 78095 | if (mod->taints) |
78362 | @@ -3711,7 +3848,17 @@ static const struct file_operations proc_modules_operations = { | 78096 | @@ -3699,7 +3836,17 @@ static const struct file_operations proc_modules_operations = { |
78363 | 78097 | ||
78364 | static int __init proc_modules_init(void) | 78098 | static int __init proc_modules_init(void) |
78365 | { | 78099 | { |
@@ -78377,7 +78111,7 @@ index a55f61b..1561428 100644 | |||
78377 | return 0; | 78111 | return 0; |
78378 | } | 78112 | } |
78379 | module_init(proc_modules_init); | 78113 | module_init(proc_modules_init); |
78380 | @@ -3772,14 +3919,14 @@ struct module *__module_address(unsigned long addr) | 78114 | @@ -3760,14 +3907,14 @@ struct module *__module_address(unsigned long addr) |
78381 | { | 78115 | { |
78382 | struct module *mod; | 78116 | struct module *mod; |
78383 | 78117 | ||
@@ -78395,7 +78129,7 @@ index a55f61b..1561428 100644 | |||
78395 | return mod; | 78129 | return mod; |
78396 | } | 78130 | } |
78397 | return NULL; | 78131 | return NULL; |
78398 | @@ -3814,11 +3961,20 @@ bool is_module_text_address(unsigned long addr) | 78132 | @@ -3802,11 +3949,20 @@ bool is_module_text_address(unsigned long addr) |
78399 | */ | 78133 | */ |
78400 | struct module *__module_text_address(unsigned long addr) | 78134 | struct module *__module_text_address(unsigned long addr) |
78401 | { | 78135 | { |
@@ -78468,10 +78202,28 @@ index 0799fd3..d06ae3b 100644 | |||
78468 | extern void debug_mutex_init(struct mutex *lock, const char *name, | 78202 | extern void debug_mutex_init(struct mutex *lock, const char *name, |
78469 | struct lock_class_key *key); | 78203 | struct lock_class_key *key); |
78470 | diff --git a/kernel/mutex.c b/kernel/mutex.c | 78204 | diff --git a/kernel/mutex.c b/kernel/mutex.c |
78471 | index 52f2301..73f7528 100644 | 78205 | index ad53a66..f1bf8bc 100644 |
78472 | --- a/kernel/mutex.c | 78206 | --- a/kernel/mutex.c |
78473 | +++ b/kernel/mutex.c | 78207 | +++ b/kernel/mutex.c |
78474 | @@ -199,7 +199,7 @@ __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass, | 78208 | @@ -134,7 +134,7 @@ void mspin_lock(struct mspin_node **lock, struct mspin_node *node) |
78209 | node->locked = 1; | ||
78210 | return; | ||
78211 | } | ||
78212 | - ACCESS_ONCE(prev->next) = node; | ||
78213 | + ACCESS_ONCE_RW(prev->next) = node; | ||
78214 | smp_wmb(); | ||
78215 | /* Wait until the lock holder passes the lock down */ | ||
78216 | while (!ACCESS_ONCE(node->locked)) | ||
78217 | @@ -155,7 +155,7 @@ static void mspin_unlock(struct mspin_node **lock, struct mspin_node *node) | ||
78218 | while (!(next = ACCESS_ONCE(node->next))) | ||
78219 | arch_mutex_cpu_relax(); | ||
78220 | } | ||
78221 | - ACCESS_ONCE(next->locked) = 1; | ||
78222 | + ACCESS_ONCE_RW(next->locked) = 1; | ||
78223 | smp_wmb(); | ||
78224 | } | ||
78225 | |||
78226 | @@ -341,7 +341,7 @@ slowpath: | ||
78475 | spin_lock_mutex(&lock->wait_lock, flags); | 78227 | spin_lock_mutex(&lock->wait_lock, flags); |
78476 | 78228 | ||
78477 | debug_mutex_lock_common(lock, &waiter); | 78229 | debug_mutex_lock_common(lock, &waiter); |
@@ -78480,7 +78232,7 @@ index 52f2301..73f7528 100644 | |||
78480 | 78232 | ||
78481 | /* add waiting tasks to the end of the waitqueue (FIFO): */ | 78233 | /* add waiting tasks to the end of the waitqueue (FIFO): */ |
78482 | list_add_tail(&waiter.list, &lock->wait_list); | 78234 | list_add_tail(&waiter.list, &lock->wait_list); |
78483 | @@ -228,8 +228,7 @@ __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass, | 78235 | @@ -371,8 +371,7 @@ slowpath: |
78484 | * TASK_UNINTERRUPTIBLE case.) | 78236 | * TASK_UNINTERRUPTIBLE case.) |
78485 | */ | 78237 | */ |
78486 | if (unlikely(signal_pending_state(state, task))) { | 78238 | if (unlikely(signal_pending_state(state, task))) { |
@@ -78490,7 +78242,7 @@ index 52f2301..73f7528 100644 | |||
78490 | mutex_release(&lock->dep_map, 1, ip); | 78242 | mutex_release(&lock->dep_map, 1, ip); |
78491 | spin_unlock_mutex(&lock->wait_lock, flags); | 78243 | spin_unlock_mutex(&lock->wait_lock, flags); |
78492 | 78244 | ||
78493 | @@ -248,7 +247,7 @@ __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass, | 78245 | @@ -391,7 +390,7 @@ slowpath: |
78494 | done: | 78246 | done: |
78495 | lock_acquired(&lock->dep_map, ip); | 78247 | lock_acquired(&lock->dep_map, ip); |
78496 | /* got the lock - rejoice! */ | 78248 | /* got the lock - rejoice! */ |
@@ -78556,19 +78308,19 @@ index 2d5cc4c..d9ea600 100644 | |||
78556 | return -ENOENT; | 78308 | return -ENOENT; |
78557 | } | 78309 | } |
78558 | diff --git a/kernel/panic.c b/kernel/panic.c | 78310 | diff --git a/kernel/panic.c b/kernel/panic.c |
78559 | index 7c57cc9..28f1b3f 100644 | 78311 | index 167ec09..0dda5f9 100644 |
78560 | --- a/kernel/panic.c | 78312 | --- a/kernel/panic.c |
78561 | +++ b/kernel/panic.c | 78313 | +++ b/kernel/panic.c |
78562 | @@ -403,7 +403,7 @@ static void warn_slowpath_common(const char *file, int line, void *caller, | 78314 | @@ -400,7 +400,7 @@ static void warn_slowpath_common(const char *file, int line, void *caller, |
78563 | const char *board; | 78315 | unsigned taint, struct slowpath_args *args) |
78564 | 78316 | { | |
78565 | printk(KERN_WARNING "------------[ cut here ]------------\n"); | 78317 | printk(KERN_WARNING "------------[ cut here ]------------\n"); |
78566 | - printk(KERN_WARNING "WARNING: at %s:%d %pS()\n", file, line, caller); | 78318 | - printk(KERN_WARNING "WARNING: at %s:%d %pS()\n", file, line, caller); |
78567 | + printk(KERN_WARNING "WARNING: at %s:%d %pA()\n", file, line, caller); | 78319 | + printk(KERN_WARNING "WARNING: at %s:%d %pA()\n", file, line, caller); |
78568 | board = dmi_get_system_info(DMI_PRODUCT_NAME); | 78320 | |
78569 | if (board) | 78321 | if (args) |
78570 | printk(KERN_WARNING "Hardware name: %s\n", board); | 78322 | vprintk(args->fmt, args->args); |
78571 | @@ -459,7 +459,8 @@ EXPORT_SYMBOL(warn_slowpath_null); | 78323 | @@ -453,7 +453,8 @@ EXPORT_SYMBOL(warn_slowpath_null); |
78572 | */ | 78324 | */ |
78573 | void __stack_chk_fail(void) | 78325 | void __stack_chk_fail(void) |
78574 | { | 78326 | { |
@@ -78579,7 +78331,7 @@ index 7c57cc9..28f1b3f 100644 | |||
78579 | } | 78331 | } |
78580 | EXPORT_SYMBOL(__stack_chk_fail); | 78332 | EXPORT_SYMBOL(__stack_chk_fail); |
78581 | diff --git a/kernel/pid.c b/kernel/pid.c | 78333 | diff --git a/kernel/pid.c b/kernel/pid.c |
78582 | index 047dc62..418d74b 100644 | 78334 | index 0db3e79..95b9dc2 100644 |
78583 | --- a/kernel/pid.c | 78335 | --- a/kernel/pid.c |
78584 | +++ b/kernel/pid.c | 78336 | +++ b/kernel/pid.c |
78585 | @@ -33,6 +33,7 @@ | 78337 | @@ -33,6 +33,7 @@ |
@@ -78590,7 +78342,7 @@ index 047dc62..418d74b 100644 | |||
78590 | #include <linux/pid_namespace.h> | 78342 | #include <linux/pid_namespace.h> |
78591 | #include <linux/init_task.h> | 78343 | #include <linux/init_task.h> |
78592 | #include <linux/syscalls.h> | 78344 | #include <linux/syscalls.h> |
78593 | @@ -46,7 +47,7 @@ struct pid init_struct_pid = INIT_STRUCT_PID; | 78345 | @@ -47,7 +48,7 @@ struct pid init_struct_pid = INIT_STRUCT_PID; |
78594 | 78346 | ||
78595 | int pid_max = PID_MAX_DEFAULT; | 78347 | int pid_max = PID_MAX_DEFAULT; |
78596 | 78348 | ||
@@ -78599,7 +78351,7 @@ index 047dc62..418d74b 100644 | |||
78599 | 78351 | ||
78600 | int pid_max_min = RESERVED_PIDS + 1; | 78352 | int pid_max_min = RESERVED_PIDS + 1; |
78601 | int pid_max_max = PID_MAX_LIMIT; | 78353 | int pid_max_max = PID_MAX_LIMIT; |
78602 | @@ -440,10 +441,18 @@ EXPORT_SYMBOL(pid_task); | 78354 | @@ -442,10 +443,18 @@ EXPORT_SYMBOL(pid_task); |
78603 | */ | 78355 | */ |
78604 | struct task_struct *find_task_by_pid_ns(pid_t nr, struct pid_namespace *ns) | 78356 | struct task_struct *find_task_by_pid_ns(pid_t nr, struct pid_namespace *ns) |
78605 | { | 78357 | { |
@@ -78619,7 +78371,7 @@ index 047dc62..418d74b 100644 | |||
78619 | } | 78371 | } |
78620 | 78372 | ||
78621 | struct task_struct *find_task_by_vpid(pid_t vnr) | 78373 | struct task_struct *find_task_by_vpid(pid_t vnr) |
78622 | @@ -451,6 +460,14 @@ struct task_struct *find_task_by_vpid(pid_t vnr) | 78374 | @@ -453,6 +462,14 @@ struct task_struct *find_task_by_vpid(pid_t vnr) |
78623 | return find_task_by_pid_ns(vnr, task_active_pid_ns(current)); | 78375 | return find_task_by_pid_ns(vnr, task_active_pid_ns(current)); |
78624 | } | 78376 | } |
78625 | 78377 | ||
@@ -78635,10 +78387,10 @@ index 047dc62..418d74b 100644 | |||
78635 | { | 78387 | { |
78636 | struct pid *pid; | 78388 | struct pid *pid; |
78637 | diff --git a/kernel/pid_namespace.c b/kernel/pid_namespace.c | 78389 | diff --git a/kernel/pid_namespace.c b/kernel/pid_namespace.c |
78638 | index bea15bd..789f3d0 100644 | 78390 | index 6917e8e..9909aeb 100644 |
78639 | --- a/kernel/pid_namespace.c | 78391 | --- a/kernel/pid_namespace.c |
78640 | +++ b/kernel/pid_namespace.c | 78392 | +++ b/kernel/pid_namespace.c |
78641 | @@ -249,7 +249,7 @@ static int pid_ns_ctl_handler(struct ctl_table *table, int write, | 78393 | @@ -247,7 +247,7 @@ static int pid_ns_ctl_handler(struct ctl_table *table, int write, |
78642 | void __user *buffer, size_t *lenp, loff_t *ppos) | 78394 | void __user *buffer, size_t *lenp, loff_t *ppos) |
78643 | { | 78395 | { |
78644 | struct pid_namespace *pid_ns = task_active_pid_ns(current); | 78396 | struct pid_namespace *pid_ns = task_active_pid_ns(current); |
@@ -78648,10 +78400,10 @@ index bea15bd..789f3d0 100644 | |||
78648 | if (write && !ns_capable(pid_ns->user_ns, CAP_SYS_ADMIN)) | 78400 | if (write && !ns_capable(pid_ns->user_ns, CAP_SYS_ADMIN)) |
78649 | return -EPERM; | 78401 | return -EPERM; |
78650 | diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c | 78402 | diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c |
78651 | index 8fd709c..542bf4b 100644 | 78403 | index 42670e9..8719c2f 100644 |
78652 | --- a/kernel/posix-cpu-timers.c | 78404 | --- a/kernel/posix-cpu-timers.c |
78653 | +++ b/kernel/posix-cpu-timers.c | 78405 | +++ b/kernel/posix-cpu-timers.c |
78654 | @@ -1592,14 +1592,14 @@ struct k_clock clock_posix_cpu = { | 78406 | @@ -1636,14 +1636,14 @@ struct k_clock clock_posix_cpu = { |
78655 | 78407 | ||
78656 | static __init int init_posix_cpu_timers(void) | 78408 | static __init int init_posix_cpu_timers(void) |
78657 | { | 78409 | { |
@@ -78669,18 +78421,18 @@ index 8fd709c..542bf4b 100644 | |||
78669 | .clock_get = thread_cpu_clock_get, | 78421 | .clock_get = thread_cpu_clock_get, |
78670 | .timer_create = thread_cpu_timer_create, | 78422 | .timer_create = thread_cpu_timer_create, |
78671 | diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c | 78423 | diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c |
78672 | index 6edbb2c..334f085 100644 | 78424 | index 424c2d4..a9194f7 100644 |
78673 | --- a/kernel/posix-timers.c | 78425 | --- a/kernel/posix-timers.c |
78674 | +++ b/kernel/posix-timers.c | 78426 | +++ b/kernel/posix-timers.c |
78675 | @@ -43,6 +43,7 @@ | 78427 | @@ -43,6 +43,7 @@ |
78676 | #include <linux/idr.h> | 78428 | #include <linux/hash.h> |
78677 | #include <linux/posix-clock.h> | 78429 | #include <linux/posix-clock.h> |
78678 | #include <linux/posix-timers.h> | 78430 | #include <linux/posix-timers.h> |
78679 | +#include <linux/grsecurity.h> | 78431 | +#include <linux/grsecurity.h> |
78680 | #include <linux/syscalls.h> | 78432 | #include <linux/syscalls.h> |
78681 | #include <linux/wait.h> | 78433 | #include <linux/wait.h> |
78682 | #include <linux/workqueue.h> | 78434 | #include <linux/workqueue.h> |
78683 | @@ -129,7 +130,7 @@ static DEFINE_SPINLOCK(idr_lock); | 78435 | @@ -122,7 +123,7 @@ static DEFINE_SPINLOCK(hash_lock); |
78684 | * which we beg off on and pass to do_sys_settimeofday(). | 78436 | * which we beg off on and pass to do_sys_settimeofday(). |
78685 | */ | 78437 | */ |
78686 | 78438 | ||
@@ -78689,7 +78441,7 @@ index 6edbb2c..334f085 100644 | |||
78689 | 78441 | ||
78690 | /* | 78442 | /* |
78691 | * These ones are defined below. | 78443 | * These ones are defined below. |
78692 | @@ -227,7 +228,7 @@ static int posix_get_boottime(const clockid_t which_clock, struct timespec *tp) | 78444 | @@ -275,7 +276,7 @@ static int posix_get_tai(clockid_t which_clock, struct timespec *tp) |
78693 | */ | 78445 | */ |
78694 | static __init int init_posix_timers(void) | 78446 | static __init int init_posix_timers(void) |
78695 | { | 78447 | { |
@@ -78698,7 +78450,7 @@ index 6edbb2c..334f085 100644 | |||
78698 | .clock_getres = hrtimer_get_res, | 78450 | .clock_getres = hrtimer_get_res, |
78699 | .clock_get = posix_clock_realtime_get, | 78451 | .clock_get = posix_clock_realtime_get, |
78700 | .clock_set = posix_clock_realtime_set, | 78452 | .clock_set = posix_clock_realtime_set, |
78701 | @@ -239,7 +240,7 @@ static __init int init_posix_timers(void) | 78453 | @@ -287,7 +288,7 @@ static __init int init_posix_timers(void) |
78702 | .timer_get = common_timer_get, | 78454 | .timer_get = common_timer_get, |
78703 | .timer_del = common_timer_del, | 78455 | .timer_del = common_timer_del, |
78704 | }; | 78456 | }; |
@@ -78707,7 +78459,7 @@ index 6edbb2c..334f085 100644 | |||
78707 | .clock_getres = hrtimer_get_res, | 78459 | .clock_getres = hrtimer_get_res, |
78708 | .clock_get = posix_ktime_get_ts, | 78460 | .clock_get = posix_ktime_get_ts, |
78709 | .nsleep = common_nsleep, | 78461 | .nsleep = common_nsleep, |
78710 | @@ -249,19 +250,19 @@ static __init int init_posix_timers(void) | 78462 | @@ -297,19 +298,19 @@ static __init int init_posix_timers(void) |
78711 | .timer_get = common_timer_get, | 78463 | .timer_get = common_timer_get, |
78712 | .timer_del = common_timer_del, | 78464 | .timer_del = common_timer_del, |
78713 | }; | 78465 | }; |
@@ -78726,12 +78478,21 @@ index 6edbb2c..334f085 100644 | |||
78726 | .clock_getres = posix_get_coarse_res, | 78478 | .clock_getres = posix_get_coarse_res, |
78727 | .clock_get = posix_get_monotonic_coarse, | 78479 | .clock_get = posix_get_monotonic_coarse, |
78728 | }; | 78480 | }; |
78481 | - struct k_clock clock_tai = { | ||
78482 | + static struct k_clock clock_tai = { | ||
78483 | .clock_getres = hrtimer_get_res, | ||
78484 | .clock_get = posix_get_tai, | ||
78485 | .nsleep = common_nsleep, | ||
78486 | @@ -319,7 +320,7 @@ static __init int init_posix_timers(void) | ||
78487 | .timer_get = common_timer_get, | ||
78488 | .timer_del = common_timer_del, | ||
78489 | }; | ||
78729 | - struct k_clock clock_boottime = { | 78490 | - struct k_clock clock_boottime = { |
78730 | + static struct k_clock clock_boottime = { | 78491 | + static struct k_clock clock_boottime = { |
78731 | .clock_getres = hrtimer_get_res, | 78492 | .clock_getres = hrtimer_get_res, |
78732 | .clock_get = posix_get_boottime, | 78493 | .clock_get = posix_get_boottime, |
78733 | .nsleep = common_nsleep, | 78494 | .nsleep = common_nsleep, |
78734 | @@ -473,7 +474,7 @@ void posix_timers_register_clock(const clockid_t clock_id, | 78495 | @@ -531,7 +532,7 @@ void posix_timers_register_clock(const clockid_t clock_id, |
78735 | return; | 78496 | return; |
78736 | } | 78497 | } |
78737 | 78498 | ||
@@ -78740,7 +78501,7 @@ index 6edbb2c..334f085 100644 | |||
78740 | } | 78501 | } |
78741 | EXPORT_SYMBOL_GPL(posix_timers_register_clock); | 78502 | EXPORT_SYMBOL_GPL(posix_timers_register_clock); |
78742 | 78503 | ||
78743 | @@ -519,9 +520,9 @@ static struct k_clock *clockid_to_kclock(const clockid_t id) | 78504 | @@ -577,9 +578,9 @@ static struct k_clock *clockid_to_kclock(const clockid_t id) |
78744 | return (id & CLOCKFD_MASK) == CLOCKFD ? | 78505 | return (id & CLOCKFD_MASK) == CLOCKFD ? |
78745 | &clock_posix_dynamic : &clock_posix_cpu; | 78506 | &clock_posix_dynamic : &clock_posix_cpu; |
78746 | 78507 | ||
@@ -78752,7 +78513,7 @@ index 6edbb2c..334f085 100644 | |||
78752 | } | 78513 | } |
78753 | 78514 | ||
78754 | static int common_timer_create(struct k_itimer *new_timer) | 78515 | static int common_timer_create(struct k_itimer *new_timer) |
78755 | @@ -964,6 +965,13 @@ SYSCALL_DEFINE2(clock_settime, const clockid_t, which_clock, | 78516 | @@ -1011,6 +1012,13 @@ SYSCALL_DEFINE2(clock_settime, const clockid_t, which_clock, |
78756 | if (copy_from_user(&new_tp, tp, sizeof (*tp))) | 78517 | if (copy_from_user(&new_tp, tp, sizeof (*tp))) |
78757 | return -EFAULT; | 78518 | return -EFAULT; |
78758 | 78519 | ||
@@ -78766,20 +78527,6 @@ index 6edbb2c..334f085 100644 | |||
78766 | return kc->clock_set(which_clock, &new_tp); | 78527 | return kc->clock_set(which_clock, &new_tp); |
78767 | } | 78528 | } |
78768 | 78529 | ||
78769 | diff --git a/kernel/power/autosleep.c b/kernel/power/autosleep.c | ||
78770 | index c6422ff..9012ecf 100644 | ||
78771 | --- a/kernel/power/autosleep.c | ||
78772 | +++ b/kernel/power/autosleep.c | ||
78773 | @@ -32,7 +32,8 @@ static void try_to_suspend(struct work_struct *work) | ||
78774 | |||
78775 | mutex_lock(&autosleep_lock); | ||
78776 | |||
78777 | - if (!pm_save_wakeup_count(initial_count)) { | ||
78778 | + if (!pm_save_wakeup_count(initial_count) || | ||
78779 | + system_state != SYSTEM_RUNNING) { | ||
78780 | mutex_unlock(&autosleep_lock); | ||
78781 | goto out; | ||
78782 | } | ||
78783 | diff --git a/kernel/power/process.c b/kernel/power/process.c | 78530 | diff --git a/kernel/power/process.c b/kernel/power/process.c |
78784 | index 98088e0..aaf95c0 100644 | 78531 | index 98088e0..aaf95c0 100644 |
78785 | --- a/kernel/power/process.c | 78532 | --- a/kernel/power/process.c |
@@ -78824,10 +78571,10 @@ index 98088e0..aaf95c0 100644 | |||
78824 | 78571 | ||
78825 | if (pm_wakeup_pending()) { | 78572 | if (pm_wakeup_pending()) { |
78826 | diff --git a/kernel/printk.c b/kernel/printk.c | 78573 | diff --git a/kernel/printk.c b/kernel/printk.c |
78827 | index 0e4eba6a..d58ebf0 100644 | 78574 | index d37d45c..ab918b3 100644 |
78828 | --- a/kernel/printk.c | 78575 | --- a/kernel/printk.c |
78829 | +++ b/kernel/printk.c | 78576 | +++ b/kernel/printk.c |
78830 | @@ -395,6 +395,11 @@ static int check_syslog_permissions(int type, bool from_file) | 78577 | @@ -390,6 +390,11 @@ static int check_syslog_permissions(int type, bool from_file) |
78831 | if (from_file && type != SYSLOG_ACTION_OPEN) | 78578 | if (from_file && type != SYSLOG_ACTION_OPEN) |
78832 | return 0; | 78579 | return 0; |
78833 | 78580 | ||
@@ -78840,7 +78587,7 @@ index 0e4eba6a..d58ebf0 100644 | |||
78840 | if (capable(CAP_SYSLOG)) | 78587 | if (capable(CAP_SYSLOG)) |
78841 | return 0; | 78588 | return 0; |
78842 | diff --git a/kernel/profile.c b/kernel/profile.c | 78589 | diff --git a/kernel/profile.c b/kernel/profile.c |
78843 | index dc3384e..0de5b49 100644 | 78590 | index 0bf4007..6234708 100644 |
78844 | --- a/kernel/profile.c | 78591 | --- a/kernel/profile.c |
78845 | +++ b/kernel/profile.c | 78592 | +++ b/kernel/profile.c |
78846 | @@ -37,7 +37,7 @@ struct profile_hit { | 78593 | @@ -37,7 +37,7 @@ struct profile_hit { |
@@ -78901,10 +78648,10 @@ index dc3384e..0de5b49 100644 | |||
78901 | } | 78648 | } |
78902 | 78649 | ||
78903 | diff --git a/kernel/ptrace.c b/kernel/ptrace.c | 78650 | diff --git a/kernel/ptrace.c b/kernel/ptrace.c |
78904 | index acbd284..00bb0c9 100644 | 78651 | index 335a7ae..3bbbceb 100644 |
78905 | --- a/kernel/ptrace.c | 78652 | --- a/kernel/ptrace.c |
78906 | +++ b/kernel/ptrace.c | 78653 | +++ b/kernel/ptrace.c |
78907 | @@ -324,7 +324,7 @@ static int ptrace_attach(struct task_struct *task, long request, | 78654 | @@ -326,7 +326,7 @@ static int ptrace_attach(struct task_struct *task, long request, |
78908 | if (seize) | 78655 | if (seize) |
78909 | flags |= PT_SEIZED; | 78656 | flags |= PT_SEIZED; |
78910 | rcu_read_lock(); | 78657 | rcu_read_lock(); |
@@ -78913,7 +78660,7 @@ index acbd284..00bb0c9 100644 | |||
78913 | flags |= PT_PTRACE_CAP; | 78660 | flags |= PT_PTRACE_CAP; |
78914 | rcu_read_unlock(); | 78661 | rcu_read_unlock(); |
78915 | task->ptrace = flags; | 78662 | task->ptrace = flags; |
78916 | @@ -535,7 +535,7 @@ int ptrace_readdata(struct task_struct *tsk, unsigned long src, char __user *dst | 78663 | @@ -537,7 +537,7 @@ int ptrace_readdata(struct task_struct *tsk, unsigned long src, char __user *dst |
78917 | break; | 78664 | break; |
78918 | return -EIO; | 78665 | return -EIO; |
78919 | } | 78666 | } |
@@ -78922,7 +78669,7 @@ index acbd284..00bb0c9 100644 | |||
78922 | return -EFAULT; | 78669 | return -EFAULT; |
78923 | copied += retval; | 78670 | copied += retval; |
78924 | src += retval; | 78671 | src += retval; |
78925 | @@ -726,7 +726,7 @@ int ptrace_request(struct task_struct *child, long request, | 78672 | @@ -805,7 +805,7 @@ int ptrace_request(struct task_struct *child, long request, |
78926 | bool seized = child->ptrace & PT_SEIZED; | 78673 | bool seized = child->ptrace & PT_SEIZED; |
78927 | int ret = -EIO; | 78674 | int ret = -EIO; |
78928 | siginfo_t siginfo, *si; | 78675 | siginfo_t siginfo, *si; |
@@ -78931,7 +78678,7 @@ index acbd284..00bb0c9 100644 | |||
78931 | unsigned long __user *datalp = datavp; | 78678 | unsigned long __user *datalp = datavp; |
78932 | unsigned long flags; | 78679 | unsigned long flags; |
78933 | 78680 | ||
78934 | @@ -928,14 +928,21 @@ SYSCALL_DEFINE4(ptrace, long, request, long, pid, unsigned long, addr, | 78681 | @@ -1011,14 +1011,21 @@ SYSCALL_DEFINE4(ptrace, long, request, long, pid, unsigned long, addr, |
78935 | goto out; | 78682 | goto out; |
78936 | } | 78683 | } |
78937 | 78684 | ||
@@ -78954,7 +78701,7 @@ index acbd284..00bb0c9 100644 | |||
78954 | goto out_put_task_struct; | 78701 | goto out_put_task_struct; |
78955 | } | 78702 | } |
78956 | 78703 | ||
78957 | @@ -963,7 +970,7 @@ int generic_ptrace_peekdata(struct task_struct *tsk, unsigned long addr, | 78704 | @@ -1046,7 +1053,7 @@ int generic_ptrace_peekdata(struct task_struct *tsk, unsigned long addr, |
78958 | copied = access_process_vm(tsk, addr, &tmp, sizeof(tmp), 0); | 78705 | copied = access_process_vm(tsk, addr, &tmp, sizeof(tmp), 0); |
78959 | if (copied != sizeof(tmp)) | 78706 | if (copied != sizeof(tmp)) |
78960 | return -EIO; | 78707 | return -EIO; |
@@ -78963,7 +78710,7 @@ index acbd284..00bb0c9 100644 | |||
78963 | } | 78710 | } |
78964 | 78711 | ||
78965 | int generic_ptrace_pokedata(struct task_struct *tsk, unsigned long addr, | 78712 | int generic_ptrace_pokedata(struct task_struct *tsk, unsigned long addr, |
78966 | @@ -1057,7 +1064,7 @@ int compat_ptrace_request(struct task_struct *child, compat_long_t request, | 78713 | @@ -1140,7 +1147,7 @@ int compat_ptrace_request(struct task_struct *child, compat_long_t request, |
78967 | } | 78714 | } |
78968 | 78715 | ||
78969 | asmlinkage long compat_sys_ptrace(compat_long_t request, compat_long_t pid, | 78716 | asmlinkage long compat_sys_ptrace(compat_long_t request, compat_long_t pid, |
@@ -78972,7 +78719,7 @@ index acbd284..00bb0c9 100644 | |||
78972 | { | 78719 | { |
78973 | struct task_struct *child; | 78720 | struct task_struct *child; |
78974 | long ret; | 78721 | long ret; |
78975 | @@ -1073,14 +1080,21 @@ asmlinkage long compat_sys_ptrace(compat_long_t request, compat_long_t pid, | 78722 | @@ -1156,14 +1163,21 @@ asmlinkage long compat_sys_ptrace(compat_long_t request, compat_long_t pid, |
78976 | goto out; | 78723 | goto out; |
78977 | } | 78724 | } |
78978 | 78725 | ||
@@ -79215,10 +78962,10 @@ index e1f3a8c..42c94a2 100644 | |||
79215 | for (i = 0; i < RCU_TORTURE_PIPE_LEN + 1; i++) { | 78962 | for (i = 0; i < RCU_TORTURE_PIPE_LEN + 1; i++) { |
79216 | per_cpu(rcu_torture_count, cpu)[i] = 0; | 78963 | per_cpu(rcu_torture_count, cpu)[i] = 0; |
79217 | diff --git a/kernel/rcutree.c b/kernel/rcutree.c | 78964 | diff --git a/kernel/rcutree.c b/kernel/rcutree.c |
79218 | index 5b8ad82..59e1f64 100644 | 78965 | index 3538001..e379e0b 100644 |
79219 | --- a/kernel/rcutree.c | 78966 | --- a/kernel/rcutree.c |
79220 | +++ b/kernel/rcutree.c | 78967 | +++ b/kernel/rcutree.c |
79221 | @@ -353,9 +353,9 @@ static void rcu_eqs_enter_common(struct rcu_dynticks *rdtp, long long oldval, | 78968 | @@ -358,9 +358,9 @@ static void rcu_eqs_enter_common(struct rcu_dynticks *rdtp, long long oldval, |
79222 | rcu_prepare_for_idle(smp_processor_id()); | 78969 | rcu_prepare_for_idle(smp_processor_id()); |
79223 | /* CPUs seeing atomic_inc() must see prior RCU read-side crit sects */ | 78970 | /* CPUs seeing atomic_inc() must see prior RCU read-side crit sects */ |
79224 | smp_mb__before_atomic_inc(); /* See above. */ | 78971 | smp_mb__before_atomic_inc(); /* See above. */ |
@@ -79230,7 +78977,7 @@ index 5b8ad82..59e1f64 100644 | |||
79230 | 78977 | ||
79231 | /* | 78978 | /* |
79232 | * It is illegal to enter an extended quiescent state while | 78979 | * It is illegal to enter an extended quiescent state while |
79233 | @@ -491,10 +491,10 @@ static void rcu_eqs_exit_common(struct rcu_dynticks *rdtp, long long oldval, | 78980 | @@ -496,10 +496,10 @@ static void rcu_eqs_exit_common(struct rcu_dynticks *rdtp, long long oldval, |
79234 | int user) | 78981 | int user) |
79235 | { | 78982 | { |
79236 | smp_mb__before_atomic_inc(); /* Force ordering w/previous sojourn. */ | 78983 | smp_mb__before_atomic_inc(); /* Force ordering w/previous sojourn. */ |
@@ -79243,7 +78990,7 @@ index 5b8ad82..59e1f64 100644 | |||
79243 | rcu_cleanup_after_idle(smp_processor_id()); | 78990 | rcu_cleanup_after_idle(smp_processor_id()); |
79244 | trace_rcu_dyntick("End", oldval, rdtp->dynticks_nesting); | 78991 | trace_rcu_dyntick("End", oldval, rdtp->dynticks_nesting); |
79245 | if (!user && !is_idle_task(current)) { | 78992 | if (!user && !is_idle_task(current)) { |
79246 | @@ -633,14 +633,14 @@ void rcu_nmi_enter(void) | 78993 | @@ -638,14 +638,14 @@ void rcu_nmi_enter(void) |
79247 | struct rcu_dynticks *rdtp = &__get_cpu_var(rcu_dynticks); | 78994 | struct rcu_dynticks *rdtp = &__get_cpu_var(rcu_dynticks); |
79248 | 78995 | ||
79249 | if (rdtp->dynticks_nmi_nesting == 0 && | 78996 | if (rdtp->dynticks_nmi_nesting == 0 && |
@@ -79261,7 +79008,7 @@ index 5b8ad82..59e1f64 100644 | |||
79261 | } | 79008 | } |
79262 | 79009 | ||
79263 | /** | 79010 | /** |
79264 | @@ -659,9 +659,9 @@ void rcu_nmi_exit(void) | 79011 | @@ -664,9 +664,9 @@ void rcu_nmi_exit(void) |
79265 | return; | 79012 | return; |
79266 | /* CPUs seeing atomic_inc() must see prior RCU read-side crit sects */ | 79013 | /* CPUs seeing atomic_inc() must see prior RCU read-side crit sects */ |
79267 | smp_mb__before_atomic_inc(); /* See above. */ | 79014 | smp_mb__before_atomic_inc(); /* See above. */ |
@@ -79273,7 +79020,7 @@ index 5b8ad82..59e1f64 100644 | |||
79273 | } | 79020 | } |
79274 | 79021 | ||
79275 | /** | 79022 | /** |
79276 | @@ -675,7 +675,7 @@ int rcu_is_cpu_idle(void) | 79023 | @@ -680,7 +680,7 @@ int rcu_is_cpu_idle(void) |
79277 | int ret; | 79024 | int ret; |
79278 | 79025 | ||
79279 | preempt_disable(); | 79026 | preempt_disable(); |
@@ -79282,7 +79029,7 @@ index 5b8ad82..59e1f64 100644 | |||
79282 | preempt_enable(); | 79029 | preempt_enable(); |
79283 | return ret; | 79030 | return ret; |
79284 | } | 79031 | } |
79285 | @@ -743,7 +743,7 @@ static int rcu_is_cpu_rrupt_from_idle(void) | 79032 | @@ -748,7 +748,7 @@ static int rcu_is_cpu_rrupt_from_idle(void) |
79286 | */ | 79033 | */ |
79287 | static int dyntick_save_progress_counter(struct rcu_data *rdp) | 79034 | static int dyntick_save_progress_counter(struct rcu_data *rdp) |
79288 | { | 79035 | { |
@@ -79291,7 +79038,7 @@ index 5b8ad82..59e1f64 100644 | |||
79291 | return (rdp->dynticks_snap & 0x1) == 0; | 79038 | return (rdp->dynticks_snap & 0x1) == 0; |
79292 | } | 79039 | } |
79293 | 79040 | ||
79294 | @@ -758,7 +758,7 @@ static int rcu_implicit_dynticks_qs(struct rcu_data *rdp) | 79041 | @@ -763,7 +763,7 @@ static int rcu_implicit_dynticks_qs(struct rcu_data *rdp) |
79295 | unsigned int curr; | 79042 | unsigned int curr; |
79296 | unsigned int snap; | 79043 | unsigned int snap; |
79297 | 79044 | ||
@@ -79300,7 +79047,28 @@ index 5b8ad82..59e1f64 100644 | |||
79300 | snap = (unsigned int)rdp->dynticks_snap; | 79047 | snap = (unsigned int)rdp->dynticks_snap; |
79301 | 79048 | ||
79302 | /* | 79049 | /* |
79303 | @@ -1698,7 +1698,7 @@ rcu_send_cbs_to_orphanage(int cpu, struct rcu_state *rsp, | 79050 | @@ -1440,9 +1440,9 @@ static int rcu_gp_init(struct rcu_state *rsp) |
79051 | rdp = this_cpu_ptr(rsp->rda); | ||
79052 | rcu_preempt_check_blocked_tasks(rnp); | ||
79053 | rnp->qsmask = rnp->qsmaskinit; | ||
79054 | - ACCESS_ONCE(rnp->gpnum) = rsp->gpnum; | ||
79055 | + ACCESS_ONCE_RW(rnp->gpnum) = rsp->gpnum; | ||
79056 | WARN_ON_ONCE(rnp->completed != rsp->completed); | ||
79057 | - ACCESS_ONCE(rnp->completed) = rsp->completed; | ||
79058 | + ACCESS_ONCE_RW(rnp->completed) = rsp->completed; | ||
79059 | if (rnp == rdp->mynode) | ||
79060 | rcu_start_gp_per_cpu(rsp, rnp, rdp); | ||
79061 | rcu_preempt_boost_start_gp(rnp); | ||
79062 | @@ -1524,7 +1524,7 @@ static void rcu_gp_cleanup(struct rcu_state *rsp) | ||
79063 | */ | ||
79064 | rcu_for_each_node_breadth_first(rsp, rnp) { | ||
79065 | raw_spin_lock_irq(&rnp->lock); | ||
79066 | - ACCESS_ONCE(rnp->completed) = rsp->gpnum; | ||
79067 | + ACCESS_ONCE_RW(rnp->completed) = rsp->gpnum; | ||
79068 | rdp = this_cpu_ptr(rsp->rda); | ||
79069 | if (rnp == rdp->mynode) | ||
79070 | __rcu_process_gp_end(rsp, rnp, rdp); | ||
79071 | @@ -1855,7 +1855,7 @@ rcu_send_cbs_to_orphanage(int cpu, struct rcu_state *rsp, | ||
79304 | rsp->qlen += rdp->qlen; | 79072 | rsp->qlen += rdp->qlen; |
79305 | rdp->n_cbs_orphaned += rdp->qlen; | 79073 | rdp->n_cbs_orphaned += rdp->qlen; |
79306 | rdp->qlen_lazy = 0; | 79074 | rdp->qlen_lazy = 0; |
@@ -79309,7 +79077,7 @@ index 5b8ad82..59e1f64 100644 | |||
79309 | } | 79077 | } |
79310 | 79078 | ||
79311 | /* | 79079 | /* |
79312 | @@ -1944,7 +1944,7 @@ static void rcu_do_batch(struct rcu_state *rsp, struct rcu_data *rdp) | 79080 | @@ -2101,7 +2101,7 @@ static void rcu_do_batch(struct rcu_state *rsp, struct rcu_data *rdp) |
79313 | } | 79081 | } |
79314 | smp_mb(); /* List handling before counting for rcu_barrier(). */ | 79082 | smp_mb(); /* List handling before counting for rcu_barrier(). */ |
79315 | rdp->qlen_lazy -= count_lazy; | 79083 | rdp->qlen_lazy -= count_lazy; |
@@ -79318,7 +79086,7 @@ index 5b8ad82..59e1f64 100644 | |||
79318 | rdp->n_cbs_invoked += count; | 79086 | rdp->n_cbs_invoked += count; |
79319 | 79087 | ||
79320 | /* Reinstate batch limit if we have worked down the excess. */ | 79088 | /* Reinstate batch limit if we have worked down the excess. */ |
79321 | @@ -2137,7 +2137,7 @@ __rcu_process_callbacks(struct rcu_state *rsp) | 79089 | @@ -2295,7 +2295,7 @@ __rcu_process_callbacks(struct rcu_state *rsp) |
79322 | /* | 79090 | /* |
79323 | * Do RCU core processing for the current CPU. | 79091 | * Do RCU core processing for the current CPU. |
79324 | */ | 79092 | */ |
@@ -79327,7 +79095,7 @@ index 5b8ad82..59e1f64 100644 | |||
79327 | { | 79095 | { |
79328 | struct rcu_state *rsp; | 79096 | struct rcu_state *rsp; |
79329 | 79097 | ||
79330 | @@ -2260,7 +2260,7 @@ __call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu), | 79098 | @@ -2419,7 +2419,7 @@ __call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu), |
79331 | local_irq_restore(flags); | 79099 | local_irq_restore(flags); |
79332 | return; | 79100 | return; |
79333 | } | 79101 | } |
@@ -79336,7 +79104,7 @@ index 5b8ad82..59e1f64 100644 | |||
79336 | if (lazy) | 79104 | if (lazy) |
79337 | rdp->qlen_lazy++; | 79105 | rdp->qlen_lazy++; |
79338 | else | 79106 | else |
79339 | @@ -2469,11 +2469,11 @@ void synchronize_sched_expedited(void) | 79107 | @@ -2628,11 +2628,11 @@ void synchronize_sched_expedited(void) |
79340 | * counter wrap on a 32-bit system. Quite a few more CPUs would of | 79108 | * counter wrap on a 32-bit system. Quite a few more CPUs would of |
79341 | * course be required on a 64-bit system. | 79109 | * course be required on a 64-bit system. |
79342 | */ | 79110 | */ |
@@ -79350,7 +79118,7 @@ index 5b8ad82..59e1f64 100644 | |||
79350 | return; | 79118 | return; |
79351 | } | 79119 | } |
79352 | 79120 | ||
79353 | @@ -2481,7 +2481,7 @@ void synchronize_sched_expedited(void) | 79121 | @@ -2640,7 +2640,7 @@ void synchronize_sched_expedited(void) |
79354 | * Take a ticket. Note that atomic_inc_return() implies a | 79122 | * Take a ticket. Note that atomic_inc_return() implies a |
79355 | * full memory barrier. | 79123 | * full memory barrier. |
79356 | */ | 79124 | */ |
@@ -79359,7 +79127,7 @@ index 5b8ad82..59e1f64 100644 | |||
79359 | firstsnap = snap; | 79127 | firstsnap = snap; |
79360 | get_online_cpus(); | 79128 | get_online_cpus(); |
79361 | WARN_ON_ONCE(cpu_is_offline(raw_smp_processor_id())); | 79129 | WARN_ON_ONCE(cpu_is_offline(raw_smp_processor_id())); |
79362 | @@ -2494,14 +2494,14 @@ void synchronize_sched_expedited(void) | 79130 | @@ -2653,14 +2653,14 @@ void synchronize_sched_expedited(void) |
79363 | synchronize_sched_expedited_cpu_stop, | 79131 | synchronize_sched_expedited_cpu_stop, |
79364 | NULL) == -EAGAIN) { | 79132 | NULL) == -EAGAIN) { |
79365 | put_online_cpus(); | 79133 | put_online_cpus(); |
@@ -79376,7 +79144,7 @@ index 5b8ad82..59e1f64 100644 | |||
79376 | return; | 79144 | return; |
79377 | } | 79145 | } |
79378 | 79146 | ||
79379 | @@ -2510,7 +2510,7 @@ void synchronize_sched_expedited(void) | 79147 | @@ -2669,7 +2669,7 @@ void synchronize_sched_expedited(void) |
79380 | udelay(trycount * num_online_cpus()); | 79148 | udelay(trycount * num_online_cpus()); |
79381 | } else { | 79149 | } else { |
79382 | wait_rcu_gp(call_rcu_sched); | 79150 | wait_rcu_gp(call_rcu_sched); |
@@ -79385,7 +79153,7 @@ index 5b8ad82..59e1f64 100644 | |||
79385 | return; | 79153 | return; |
79386 | } | 79154 | } |
79387 | 79155 | ||
79388 | @@ -2519,7 +2519,7 @@ void synchronize_sched_expedited(void) | 79156 | @@ -2678,7 +2678,7 @@ void synchronize_sched_expedited(void) |
79389 | if (ULONG_CMP_GE((ulong)s, (ulong)firstsnap)) { | 79157 | if (ULONG_CMP_GE((ulong)s, (ulong)firstsnap)) { |
79390 | /* ensure test happens before caller kfree */ | 79158 | /* ensure test happens before caller kfree */ |
79391 | smp_mb__before_atomic_inc(); /* ^^^ */ | 79159 | smp_mb__before_atomic_inc(); /* ^^^ */ |
@@ -79394,7 +79162,7 @@ index 5b8ad82..59e1f64 100644 | |||
79394 | return; | 79162 | return; |
79395 | } | 79163 | } |
79396 | 79164 | ||
79397 | @@ -2531,10 +2531,10 @@ void synchronize_sched_expedited(void) | 79165 | @@ -2690,10 +2690,10 @@ void synchronize_sched_expedited(void) |
79398 | * period works for us. | 79166 | * period works for us. |
79399 | */ | 79167 | */ |
79400 | get_online_cpus(); | 79168 | get_online_cpus(); |
@@ -79407,7 +79175,7 @@ index 5b8ad82..59e1f64 100644 | |||
79407 | 79175 | ||
79408 | /* | 79176 | /* |
79409 | * Everyone up to our most recent fetch is covered by our grace | 79177 | * Everyone up to our most recent fetch is covered by our grace |
79410 | @@ -2543,16 +2543,16 @@ void synchronize_sched_expedited(void) | 79178 | @@ -2702,16 +2702,16 @@ void synchronize_sched_expedited(void) |
79411 | * than we did already did their update. | 79179 | * than we did already did their update. |
79412 | */ | 79180 | */ |
79413 | do { | 79181 | do { |
@@ -79427,7 +79195,7 @@ index 5b8ad82..59e1f64 100644 | |||
79427 | 79195 | ||
79428 | put_online_cpus(); | 79196 | put_online_cpus(); |
79429 | } | 79197 | } |
79430 | @@ -2726,7 +2726,7 @@ static void _rcu_barrier(struct rcu_state *rsp) | 79198 | @@ -2893,7 +2893,7 @@ static void _rcu_barrier(struct rcu_state *rsp) |
79431 | * ACCESS_ONCE() to prevent the compiler from speculating | 79199 | * ACCESS_ONCE() to prevent the compiler from speculating |
79432 | * the increment to precede the early-exit check. | 79200 | * the increment to precede the early-exit check. |
79433 | */ | 79201 | */ |
@@ -79436,7 +79204,7 @@ index 5b8ad82..59e1f64 100644 | |||
79436 | WARN_ON_ONCE((rsp->n_barrier_done & 0x1) != 1); | 79204 | WARN_ON_ONCE((rsp->n_barrier_done & 0x1) != 1); |
79437 | _rcu_barrier_trace(rsp, "Inc1", -1, rsp->n_barrier_done); | 79205 | _rcu_barrier_trace(rsp, "Inc1", -1, rsp->n_barrier_done); |
79438 | smp_mb(); /* Order ->n_barrier_done increment with below mechanism. */ | 79206 | smp_mb(); /* Order ->n_barrier_done increment with below mechanism. */ |
79439 | @@ -2776,7 +2776,7 @@ static void _rcu_barrier(struct rcu_state *rsp) | 79207 | @@ -2943,7 +2943,7 @@ static void _rcu_barrier(struct rcu_state *rsp) |
79440 | 79208 | ||
79441 | /* Increment ->n_barrier_done to prevent duplicate work. */ | 79209 | /* Increment ->n_barrier_done to prevent duplicate work. */ |
79442 | smp_mb(); /* Keep increment after above mechanism. */ | 79210 | smp_mb(); /* Keep increment after above mechanism. */ |
@@ -79445,7 +79213,7 @@ index 5b8ad82..59e1f64 100644 | |||
79445 | WARN_ON_ONCE((rsp->n_barrier_done & 0x1) != 0); | 79213 | WARN_ON_ONCE((rsp->n_barrier_done & 0x1) != 0); |
79446 | _rcu_barrier_trace(rsp, "Inc2", -1, rsp->n_barrier_done); | 79214 | _rcu_barrier_trace(rsp, "Inc2", -1, rsp->n_barrier_done); |
79447 | smp_mb(); /* Keep increment before caller's subsequent code. */ | 79215 | smp_mb(); /* Keep increment before caller's subsequent code. */ |
79448 | @@ -2821,10 +2821,10 @@ rcu_boot_init_percpu_data(int cpu, struct rcu_state *rsp) | 79216 | @@ -2988,10 +2988,10 @@ rcu_boot_init_percpu_data(int cpu, struct rcu_state *rsp) |
79449 | rdp->grpmask = 1UL << (cpu - rdp->mynode->grplo); | 79217 | rdp->grpmask = 1UL << (cpu - rdp->mynode->grplo); |
79450 | init_callback_list(rdp); | 79218 | init_callback_list(rdp); |
79451 | rdp->qlen_lazy = 0; | 79219 | rdp->qlen_lazy = 0; |
@@ -79458,7 +79226,7 @@ index 5b8ad82..59e1f64 100644 | |||
79458 | rdp->cpu = cpu; | 79226 | rdp->cpu = cpu; |
79459 | rdp->rsp = rsp; | 79227 | rdp->rsp = rsp; |
79460 | rcu_boot_init_nocb_percpu_data(rdp); | 79228 | rcu_boot_init_nocb_percpu_data(rdp); |
79461 | @@ -2857,8 +2857,8 @@ rcu_init_percpu_data(int cpu, struct rcu_state *rsp, int preemptible) | 79229 | @@ -3024,8 +3024,8 @@ rcu_init_percpu_data(int cpu, struct rcu_state *rsp, int preemptible) |
79462 | rdp->blimit = blimit; | 79230 | rdp->blimit = blimit; |
79463 | init_callback_list(rdp); /* Re-enable callbacks on this CPU. */ | 79231 | init_callback_list(rdp); /* Re-enable callbacks on this CPU. */ |
79464 | rdp->dynticks->dynticks_nesting = DYNTICK_TASK_EXIT_IDLE; | 79232 | rdp->dynticks->dynticks_nesting = DYNTICK_TASK_EXIT_IDLE; |
@@ -79466,10 +79234,10 @@ index 5b8ad82..59e1f64 100644 | |||
79466 | - (atomic_read(&rdp->dynticks->dynticks) & ~0x1) + 1); | 79234 | - (atomic_read(&rdp->dynticks->dynticks) & ~0x1) + 1); |
79467 | + atomic_set_unchecked(&rdp->dynticks->dynticks, | 79235 | + atomic_set_unchecked(&rdp->dynticks->dynticks, |
79468 | + (atomic_read_unchecked(&rdp->dynticks->dynticks) & ~0x1) + 1); | 79236 | + (atomic_read_unchecked(&rdp->dynticks->dynticks) & ~0x1) + 1); |
79469 | rcu_prepare_for_idle_init(cpu); | ||
79470 | raw_spin_unlock(&rnp->lock); /* irqs remain disabled. */ | 79237 | raw_spin_unlock(&rnp->lock); /* irqs remain disabled. */ |
79471 | 79238 | ||
79472 | @@ -2964,7 +2964,7 @@ static int __init rcu_spawn_gp_kthread(void) | 79239 | /* Add CPU to rcu_node bitmasks. */ |
79240 | @@ -3120,7 +3120,7 @@ static int __init rcu_spawn_gp_kthread(void) | ||
79473 | struct task_struct *t; | 79241 | struct task_struct *t; |
79474 | 79242 | ||
79475 | for_each_rcu_flavor(rsp) { | 79243 | for_each_rcu_flavor(rsp) { |
@@ -79479,19 +79247,19 @@ index 5b8ad82..59e1f64 100644 | |||
79479 | rnp = rcu_get_root(rsp); | 79247 | rnp = rcu_get_root(rsp); |
79480 | raw_spin_lock_irqsave(&rnp->lock, flags); | 79248 | raw_spin_lock_irqsave(&rnp->lock, flags); |
79481 | diff --git a/kernel/rcutree.h b/kernel/rcutree.h | 79249 | diff --git a/kernel/rcutree.h b/kernel/rcutree.h |
79482 | index c896b50..c357252 100644 | 79250 | index 4df5034..5ee93f2 100644 |
79483 | --- a/kernel/rcutree.h | 79251 | --- a/kernel/rcutree.h |
79484 | +++ b/kernel/rcutree.h | 79252 | +++ b/kernel/rcutree.h |
79485 | @@ -86,7 +86,7 @@ struct rcu_dynticks { | 79253 | @@ -87,7 +87,7 @@ struct rcu_dynticks { |
79486 | long long dynticks_nesting; /* Track irq/process nesting level. */ | 79254 | long long dynticks_nesting; /* Track irq/process nesting level. */ |
79487 | /* Process level is worth LLONG_MAX/2. */ | 79255 | /* Process level is worth LLONG_MAX/2. */ |
79488 | int dynticks_nmi_nesting; /* Track NMI nesting level. */ | 79256 | int dynticks_nmi_nesting; /* Track NMI nesting level. */ |
79489 | - atomic_t dynticks; /* Even value for idle, else odd. */ | 79257 | - atomic_t dynticks; /* Even value for idle, else odd. */ |
79490 | + atomic_unchecked_t dynticks;/* Even value for idle, else odd. */ | 79258 | + atomic_unchecked_t dynticks;/* Even value for idle, else odd. */ |
79491 | #ifdef CONFIG_RCU_FAST_NO_HZ | 79259 | #ifdef CONFIG_RCU_FAST_NO_HZ |
79492 | int dyntick_drain; /* Prepare-for-idle state variable. */ | 79260 | bool all_lazy; /* Are all CPU's CBs lazy? */ |
79493 | unsigned long dyntick_holdoff; | 79261 | unsigned long nonlazy_posted; |
79494 | @@ -416,17 +416,17 @@ struct rcu_state { | 79262 | @@ -414,17 +414,17 @@ struct rcu_state { |
79495 | /* _rcu_barrier(). */ | 79263 | /* _rcu_barrier(). */ |
79496 | /* End of fields guarded by barrier_mutex. */ | 79264 | /* End of fields guarded by barrier_mutex. */ |
79497 | 79265 | ||
@@ -79521,10 +79289,10 @@ index c896b50..c357252 100644 | |||
79521 | unsigned long jiffies_force_qs; /* Time at which to invoke */ | 79289 | unsigned long jiffies_force_qs; /* Time at which to invoke */ |
79522 | /* force_quiescent_state(). */ | 79290 | /* force_quiescent_state(). */ |
79523 | diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h | 79291 | diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h |
79524 | index c1cc7e1..f62e436 100644 | 79292 | index 3db5a37..b395fb35 100644 |
79525 | --- a/kernel/rcutree_plugin.h | 79293 | --- a/kernel/rcutree_plugin.h |
79526 | +++ b/kernel/rcutree_plugin.h | 79294 | +++ b/kernel/rcutree_plugin.h |
79527 | @@ -892,7 +892,7 @@ void synchronize_rcu_expedited(void) | 79295 | @@ -903,7 +903,7 @@ void synchronize_rcu_expedited(void) |
79528 | 79296 | ||
79529 | /* Clean up and exit. */ | 79297 | /* Clean up and exit. */ |
79530 | smp_mb(); /* ensure expedited GP seen before counter increment. */ | 79298 | smp_mb(); /* ensure expedited GP seen before counter increment. */ |
@@ -79533,7 +79301,7 @@ index c1cc7e1..f62e436 100644 | |||
79533 | unlock_mb_ret: | 79301 | unlock_mb_ret: |
79534 | mutex_unlock(&sync_rcu_preempt_exp_mutex); | 79302 | mutex_unlock(&sync_rcu_preempt_exp_mutex); |
79535 | mb_ret: | 79303 | mb_ret: |
79536 | @@ -1440,7 +1440,7 @@ static void rcu_boost_kthread_setaffinity(struct rcu_node *rnp, int outgoingcpu) | 79304 | @@ -1451,7 +1451,7 @@ static void rcu_boost_kthread_setaffinity(struct rcu_node *rnp, int outgoingcpu) |
79537 | free_cpumask_var(cm); | 79305 | free_cpumask_var(cm); |
79538 | } | 79306 | } |
79539 | 79307 | ||
@@ -79542,16 +79310,16 @@ index c1cc7e1..f62e436 100644 | |||
79542 | .store = &rcu_cpu_kthread_task, | 79310 | .store = &rcu_cpu_kthread_task, |
79543 | .thread_should_run = rcu_cpu_kthread_should_run, | 79311 | .thread_should_run = rcu_cpu_kthread_should_run, |
79544 | .thread_fn = rcu_cpu_kthread, | 79312 | .thread_fn = rcu_cpu_kthread, |
79545 | @@ -2072,7 +2072,7 @@ static void print_cpu_stall_info(struct rcu_state *rsp, int cpu) | 79313 | @@ -1916,7 +1916,7 @@ static void print_cpu_stall_info(struct rcu_state *rsp, int cpu) |
79546 | print_cpu_stall_fast_no_hz(fast_no_hz, cpu); | 79314 | print_cpu_stall_fast_no_hz(fast_no_hz, cpu); |
79547 | printk(KERN_ERR "\t%d: (%lu %s) idle=%03x/%llx/%d %s\n", | 79315 | printk(KERN_ERR "\t%d: (%lu %s) idle=%03x/%llx/%d softirq=%u/%u %s\n", |
79548 | cpu, ticks_value, ticks_title, | 79316 | cpu, ticks_value, ticks_title, |
79549 | - atomic_read(&rdtp->dynticks) & 0xfff, | 79317 | - atomic_read(&rdtp->dynticks) & 0xfff, |
79550 | + atomic_read_unchecked(&rdtp->dynticks) & 0xfff, | 79318 | + atomic_read_unchecked(&rdtp->dynticks) & 0xfff, |
79551 | rdtp->dynticks_nesting, rdtp->dynticks_nmi_nesting, | 79319 | rdtp->dynticks_nesting, rdtp->dynticks_nmi_nesting, |
79320 | rdp->softirq_snap, kstat_softirqs_cpu(RCU_SOFTIRQ, cpu), | ||
79552 | fast_no_hz); | 79321 | fast_no_hz); |
79553 | } | 79322 | @@ -2079,7 +2079,7 @@ static void __call_rcu_nocb_enqueue(struct rcu_data *rdp, |
79554 | @@ -2192,7 +2192,7 @@ static void __call_rcu_nocb_enqueue(struct rcu_data *rdp, | ||
79555 | 79323 | ||
79556 | /* Enqueue the callback on the nocb list and update counts. */ | 79324 | /* Enqueue the callback on the nocb list and update counts. */ |
79557 | old_rhpp = xchg(&rdp->nocb_tail, rhtp); | 79325 | old_rhpp = xchg(&rdp->nocb_tail, rhtp); |
@@ -79560,7 +79328,7 @@ index c1cc7e1..f62e436 100644 | |||
79560 | atomic_long_add(rhcount, &rdp->nocb_q_count); | 79328 | atomic_long_add(rhcount, &rdp->nocb_q_count); |
79561 | atomic_long_add(rhcount_lazy, &rdp->nocb_q_count_lazy); | 79329 | atomic_long_add(rhcount_lazy, &rdp->nocb_q_count_lazy); |
79562 | 79330 | ||
79563 | @@ -2384,12 +2384,12 @@ static int rcu_nocb_kthread(void *arg) | 79331 | @@ -2219,12 +2219,12 @@ static int rcu_nocb_kthread(void *arg) |
79564 | * Extract queued callbacks, update counts, and wait | 79332 | * Extract queued callbacks, update counts, and wait |
79565 | * for a grace period to elapse. | 79333 | * for a grace period to elapse. |
79566 | */ | 79334 | */ |
@@ -79573,10 +79341,10 @@ index c1cc7e1..f62e436 100644 | |||
79573 | - ACCESS_ONCE(rdp->nocb_p_count_lazy) += cl; | 79341 | - ACCESS_ONCE(rdp->nocb_p_count_lazy) += cl; |
79574 | + ACCESS_ONCE_RW(rdp->nocb_p_count) += c; | 79342 | + ACCESS_ONCE_RW(rdp->nocb_p_count) += c; |
79575 | + ACCESS_ONCE_RW(rdp->nocb_p_count_lazy) += cl; | 79343 | + ACCESS_ONCE_RW(rdp->nocb_p_count_lazy) += cl; |
79576 | wait_rcu_gp(rdp->rsp->call_remote); | 79344 | rcu_nocb_wait_gp(rdp); |
79577 | 79345 | ||
79578 | /* Each pass through the following loop invokes a callback. */ | 79346 | /* Each pass through the following loop invokes a callback. */ |
79579 | @@ -2411,8 +2411,8 @@ static int rcu_nocb_kthread(void *arg) | 79347 | @@ -2246,8 +2246,8 @@ static int rcu_nocb_kthread(void *arg) |
79580 | list = next; | 79348 | list = next; |
79581 | } | 79349 | } |
79582 | trace_rcu_batch_end(rdp->rsp->name, c, !!list, 0, 0, 1); | 79350 | trace_rcu_batch_end(rdp->rsp->name, c, !!list, 0, 0, 1); |
@@ -79587,9 +79355,9 @@ index c1cc7e1..f62e436 100644 | |||
79587 | rdp->n_nocbs_invoked += c; | 79355 | rdp->n_nocbs_invoked += c; |
79588 | } | 79356 | } |
79589 | return 0; | 79357 | return 0; |
79590 | @@ -2438,7 +2438,7 @@ static void __init rcu_spawn_nocb_kthreads(struct rcu_state *rsp) | 79358 | @@ -2274,7 +2274,7 @@ static void __init rcu_spawn_nocb_kthreads(struct rcu_state *rsp) |
79591 | rdp = per_cpu_ptr(rsp->rda, cpu); | 79359 | t = kthread_run(rcu_nocb_kthread, rdp, |
79592 | t = kthread_run(rcu_nocb_kthread, rdp, "rcuo%d", cpu); | 79360 | "rcuo%c/%d", rsp->abbr, cpu); |
79593 | BUG_ON(IS_ERR(t)); | 79361 | BUG_ON(IS_ERR(t)); |
79594 | - ACCESS_ONCE(rdp->nocb_kthread) = t; | 79362 | - ACCESS_ONCE(rdp->nocb_kthread) = t; |
79595 | + ACCESS_ONCE_RW(rdp->nocb_kthread) = t; | 79363 | + ACCESS_ONCE_RW(rdp->nocb_kthread) = t; |
@@ -79597,10 +79365,10 @@ index c1cc7e1..f62e436 100644 | |||
79597 | } | 79365 | } |
79598 | 79366 | ||
79599 | diff --git a/kernel/rcutree_trace.c b/kernel/rcutree_trace.c | 79367 | diff --git a/kernel/rcutree_trace.c b/kernel/rcutree_trace.c |
79600 | index 93f8e8f..cf812ae 100644 | 79368 | index cf6c174..a8f4b50 100644 |
79601 | --- a/kernel/rcutree_trace.c | 79369 | --- a/kernel/rcutree_trace.c |
79602 | +++ b/kernel/rcutree_trace.c | 79370 | +++ b/kernel/rcutree_trace.c |
79603 | @@ -123,7 +123,7 @@ static void print_one_rcu_data(struct seq_file *m, struct rcu_data *rdp) | 79371 | @@ -121,7 +121,7 @@ static void print_one_rcu_data(struct seq_file *m, struct rcu_data *rdp) |
79604 | ulong2long(rdp->completed), ulong2long(rdp->gpnum), | 79372 | ulong2long(rdp->completed), ulong2long(rdp->gpnum), |
79605 | rdp->passed_quiesce, rdp->qs_pending); | 79373 | rdp->passed_quiesce, rdp->qs_pending); |
79606 | seq_printf(m, " dt=%d/%llx/%d df=%lu", | 79374 | seq_printf(m, " dt=%d/%llx/%d df=%lu", |
@@ -79609,7 +79377,7 @@ index 93f8e8f..cf812ae 100644 | |||
79609 | rdp->dynticks->dynticks_nesting, | 79377 | rdp->dynticks->dynticks_nesting, |
79610 | rdp->dynticks->dynticks_nmi_nesting, | 79378 | rdp->dynticks->dynticks_nmi_nesting, |
79611 | rdp->dynticks_fqs); | 79379 | rdp->dynticks_fqs); |
79612 | @@ -184,17 +184,17 @@ static int show_rcuexp(struct seq_file *m, void *v) | 79380 | @@ -182,17 +182,17 @@ static int show_rcuexp(struct seq_file *m, void *v) |
79613 | struct rcu_state *rsp = (struct rcu_state *)m->private; | 79381 | struct rcu_state *rsp = (struct rcu_state *)m->private; |
79614 | 79382 | ||
79615 | seq_printf(m, "s=%lu d=%lu w=%lu tf=%lu wd1=%lu wd2=%lu n=%lu sc=%lu dt=%lu dl=%lu dx=%lu\n", | 79383 | seq_printf(m, "s=%lu d=%lu w=%lu tf=%lu wd1=%lu wd2=%lu n=%lu sc=%lu dt=%lu dl=%lu dx=%lu\n", |
@@ -79638,10 +79406,10 @@ index 93f8e8f..cf812ae 100644 | |||
79638 | } | 79406 | } |
79639 | 79407 | ||
79640 | diff --git a/kernel/resource.c b/kernel/resource.c | 79408 | diff --git a/kernel/resource.c b/kernel/resource.c |
79641 | index 73f35d4..4684fc4 100644 | 79409 | index d738698..5f8e60a 100644 |
79642 | --- a/kernel/resource.c | 79410 | --- a/kernel/resource.c |
79643 | +++ b/kernel/resource.c | 79411 | +++ b/kernel/resource.c |
79644 | @@ -143,8 +143,18 @@ static const struct file_operations proc_iomem_operations = { | 79412 | @@ -152,8 +152,18 @@ static const struct file_operations proc_iomem_operations = { |
79645 | 79413 | ||
79646 | static int __init ioresources_init(void) | 79414 | static int __init ioresources_init(void) |
79647 | { | 79415 | { |
@@ -79661,10 +79429,10 @@ index 73f35d4..4684fc4 100644 | |||
79661 | } | 79429 | } |
79662 | __initcall(ioresources_init); | 79430 | __initcall(ioresources_init); |
79663 | diff --git a/kernel/rtmutex-tester.c b/kernel/rtmutex-tester.c | 79431 | diff --git a/kernel/rtmutex-tester.c b/kernel/rtmutex-tester.c |
79664 | index 7890b10..8b68605f 100644 | 79432 | index 1d96dd0..994ff19 100644 |
79665 | --- a/kernel/rtmutex-tester.c | 79433 | --- a/kernel/rtmutex-tester.c |
79666 | +++ b/kernel/rtmutex-tester.c | 79434 | +++ b/kernel/rtmutex-tester.c |
79667 | @@ -21,7 +21,7 @@ | 79435 | @@ -22,7 +22,7 @@ |
79668 | #define MAX_RT_TEST_MUTEXES 8 | 79436 | #define MAX_RT_TEST_MUTEXES 8 |
79669 | 79437 | ||
79670 | static spinlock_t rttest_lock; | 79438 | static spinlock_t rttest_lock; |
@@ -79673,7 +79441,7 @@ index 7890b10..8b68605f 100644 | |||
79673 | 79441 | ||
79674 | struct test_thread_data { | 79442 | struct test_thread_data { |
79675 | int opcode; | 79443 | int opcode; |
79676 | @@ -62,7 +62,7 @@ static int handle_op(struct test_thread_data *td, int lockwakeup) | 79444 | @@ -63,7 +63,7 @@ static int handle_op(struct test_thread_data *td, int lockwakeup) |
79677 | 79445 | ||
79678 | case RTTEST_LOCKCONT: | 79446 | case RTTEST_LOCKCONT: |
79679 | td->mutexes[td->opdata] = 1; | 79447 | td->mutexes[td->opdata] = 1; |
@@ -79682,7 +79450,7 @@ index 7890b10..8b68605f 100644 | |||
79682 | return 0; | 79450 | return 0; |
79683 | 79451 | ||
79684 | case RTTEST_RESET: | 79452 | case RTTEST_RESET: |
79685 | @@ -75,7 +75,7 @@ static int handle_op(struct test_thread_data *td, int lockwakeup) | 79453 | @@ -76,7 +76,7 @@ static int handle_op(struct test_thread_data *td, int lockwakeup) |
79686 | return 0; | 79454 | return 0; |
79687 | 79455 | ||
79688 | case RTTEST_RESETEVENT: | 79456 | case RTTEST_RESETEVENT: |
@@ -79691,7 +79459,7 @@ index 7890b10..8b68605f 100644 | |||
79691 | return 0; | 79459 | return 0; |
79692 | 79460 | ||
79693 | default: | 79461 | default: |
79694 | @@ -92,9 +92,9 @@ static int handle_op(struct test_thread_data *td, int lockwakeup) | 79462 | @@ -93,9 +93,9 @@ static int handle_op(struct test_thread_data *td, int lockwakeup) |
79695 | return ret; | 79463 | return ret; |
79696 | 79464 | ||
79697 | td->mutexes[id] = 1; | 79465 | td->mutexes[id] = 1; |
@@ -79703,7 +79471,7 @@ index 7890b10..8b68605f 100644 | |||
79703 | td->mutexes[id] = 4; | 79471 | td->mutexes[id] = 4; |
79704 | return 0; | 79472 | return 0; |
79705 | 79473 | ||
79706 | @@ -105,9 +105,9 @@ static int handle_op(struct test_thread_data *td, int lockwakeup) | 79474 | @@ -106,9 +106,9 @@ static int handle_op(struct test_thread_data *td, int lockwakeup) |
79707 | return ret; | 79475 | return ret; |
79708 | 79476 | ||
79709 | td->mutexes[id] = 1; | 79477 | td->mutexes[id] = 1; |
@@ -79715,7 +79483,7 @@ index 7890b10..8b68605f 100644 | |||
79715 | td->mutexes[id] = ret ? 0 : 4; | 79483 | td->mutexes[id] = ret ? 0 : 4; |
79716 | return ret ? -EINTR : 0; | 79484 | return ret ? -EINTR : 0; |
79717 | 79485 | ||
79718 | @@ -116,9 +116,9 @@ static int handle_op(struct test_thread_data *td, int lockwakeup) | 79486 | @@ -117,9 +117,9 @@ static int handle_op(struct test_thread_data *td, int lockwakeup) |
79719 | if (id < 0 || id >= MAX_RT_TEST_MUTEXES || td->mutexes[id] != 4) | 79487 | if (id < 0 || id >= MAX_RT_TEST_MUTEXES || td->mutexes[id] != 4) |
79720 | return ret; | 79488 | return ret; |
79721 | 79489 | ||
@@ -79727,7 +79495,7 @@ index 7890b10..8b68605f 100644 | |||
79727 | td->mutexes[id] = 0; | 79495 | td->mutexes[id] = 0; |
79728 | return 0; | 79496 | return 0; |
79729 | 79497 | ||
79730 | @@ -165,7 +165,7 @@ void schedule_rt_mutex_test(struct rt_mutex *mutex) | 79498 | @@ -166,7 +166,7 @@ void schedule_rt_mutex_test(struct rt_mutex *mutex) |
79731 | break; | 79499 | break; |
79732 | 79500 | ||
79733 | td->mutexes[dat] = 2; | 79501 | td->mutexes[dat] = 2; |
@@ -79736,7 +79504,7 @@ index 7890b10..8b68605f 100644 | |||
79736 | break; | 79504 | break; |
79737 | 79505 | ||
79738 | default: | 79506 | default: |
79739 | @@ -185,7 +185,7 @@ void schedule_rt_mutex_test(struct rt_mutex *mutex) | 79507 | @@ -186,7 +186,7 @@ void schedule_rt_mutex_test(struct rt_mutex *mutex) |
79740 | return; | 79508 | return; |
79741 | 79509 | ||
79742 | td->mutexes[dat] = 3; | 79510 | td->mutexes[dat] = 3; |
@@ -79745,7 +79513,7 @@ index 7890b10..8b68605f 100644 | |||
79745 | break; | 79513 | break; |
79746 | 79514 | ||
79747 | case RTTEST_LOCKNOWAIT: | 79515 | case RTTEST_LOCKNOWAIT: |
79748 | @@ -197,7 +197,7 @@ void schedule_rt_mutex_test(struct rt_mutex *mutex) | 79516 | @@ -198,7 +198,7 @@ void schedule_rt_mutex_test(struct rt_mutex *mutex) |
79749 | return; | 79517 | return; |
79750 | 79518 | ||
79751 | td->mutexes[dat] = 1; | 79519 | td->mutexes[dat] = 1; |
@@ -79777,10 +79545,10 @@ index 64de5f8..7735e12 100644 | |||
79777 | #ifdef CONFIG_RT_GROUP_SCHED | 79545 | #ifdef CONFIG_RT_GROUP_SCHED |
79778 | /* | 79546 | /* |
79779 | diff --git a/kernel/sched/core.c b/kernel/sched/core.c | 79547 | diff --git a/kernel/sched/core.c b/kernel/sched/core.c |
79780 | index 67d0465..4cf9361 100644 | 79548 | index e8b3350..d83d44e 100644 |
79781 | --- a/kernel/sched/core.c | 79549 | --- a/kernel/sched/core.c |
79782 | +++ b/kernel/sched/core.c | 79550 | +++ b/kernel/sched/core.c |
79783 | @@ -3406,7 +3406,7 @@ EXPORT_SYMBOL(wait_for_completion_interruptible); | 79551 | @@ -3440,7 +3440,7 @@ EXPORT_SYMBOL(wait_for_completion_interruptible); |
79784 | * The return value is -ERESTARTSYS if interrupted, 0 if timed out, | 79552 | * The return value is -ERESTARTSYS if interrupted, 0 if timed out, |
79785 | * positive (at least 1, or number of jiffies left till timeout) if completed. | 79553 | * positive (at least 1, or number of jiffies left till timeout) if completed. |
79786 | */ | 79554 | */ |
@@ -79789,7 +79557,7 @@ index 67d0465..4cf9361 100644 | |||
79789 | wait_for_completion_interruptible_timeout(struct completion *x, | 79557 | wait_for_completion_interruptible_timeout(struct completion *x, |
79790 | unsigned long timeout) | 79558 | unsigned long timeout) |
79791 | { | 79559 | { |
79792 | @@ -3423,7 +3423,7 @@ EXPORT_SYMBOL(wait_for_completion_interruptible_timeout); | 79560 | @@ -3457,7 +3457,7 @@ EXPORT_SYMBOL(wait_for_completion_interruptible_timeout); |
79793 | * | 79561 | * |
79794 | * The return value is -ERESTARTSYS if interrupted, 0 if completed. | 79562 | * The return value is -ERESTARTSYS if interrupted, 0 if completed. |
79795 | */ | 79563 | */ |
@@ -79798,7 +79566,7 @@ index 67d0465..4cf9361 100644 | |||
79798 | { | 79566 | { |
79799 | long t = wait_for_common(x, MAX_SCHEDULE_TIMEOUT, TASK_KILLABLE); | 79567 | long t = wait_for_common(x, MAX_SCHEDULE_TIMEOUT, TASK_KILLABLE); |
79800 | if (t == -ERESTARTSYS) | 79568 | if (t == -ERESTARTSYS) |
79801 | @@ -3444,7 +3444,7 @@ EXPORT_SYMBOL(wait_for_completion_killable); | 79569 | @@ -3478,7 +3478,7 @@ EXPORT_SYMBOL(wait_for_completion_killable); |
79802 | * The return value is -ERESTARTSYS if interrupted, 0 if timed out, | 79570 | * The return value is -ERESTARTSYS if interrupted, 0 if timed out, |
79803 | * positive (at least 1, or number of jiffies left till timeout) if completed. | 79571 | * positive (at least 1, or number of jiffies left till timeout) if completed. |
79804 | */ | 79572 | */ |
@@ -79807,7 +79575,7 @@ index 67d0465..4cf9361 100644 | |||
79807 | wait_for_completion_killable_timeout(struct completion *x, | 79575 | wait_for_completion_killable_timeout(struct completion *x, |
79808 | unsigned long timeout) | 79576 | unsigned long timeout) |
79809 | { | 79577 | { |
79810 | @@ -3670,6 +3670,8 @@ int can_nice(const struct task_struct *p, const int nice) | 79578 | @@ -3704,6 +3704,8 @@ int can_nice(const struct task_struct *p, const int nice) |
79811 | /* convert nice value [19,-20] to rlimit style value [1,40] */ | 79579 | /* convert nice value [19,-20] to rlimit style value [1,40] */ |
79812 | int nice_rlim = 20 - nice; | 79580 | int nice_rlim = 20 - nice; |
79813 | 79581 | ||
@@ -79816,7 +79584,7 @@ index 67d0465..4cf9361 100644 | |||
79816 | return (nice_rlim <= task_rlimit(p, RLIMIT_NICE) || | 79584 | return (nice_rlim <= task_rlimit(p, RLIMIT_NICE) || |
79817 | capable(CAP_SYS_NICE)); | 79585 | capable(CAP_SYS_NICE)); |
79818 | } | 79586 | } |
79819 | @@ -3703,7 +3705,8 @@ SYSCALL_DEFINE1(nice, int, increment) | 79587 | @@ -3737,7 +3739,8 @@ SYSCALL_DEFINE1(nice, int, increment) |
79820 | if (nice > 19) | 79588 | if (nice > 19) |
79821 | nice = 19; | 79589 | nice = 19; |
79822 | 79590 | ||
@@ -79826,7 +79594,7 @@ index 67d0465..4cf9361 100644 | |||
79826 | return -EPERM; | 79594 | return -EPERM; |
79827 | 79595 | ||
79828 | retval = security_task_setnice(current, nice); | 79596 | retval = security_task_setnice(current, nice); |
79829 | @@ -3857,6 +3860,7 @@ recheck: | 79597 | @@ -3891,6 +3894,7 @@ recheck: |
79830 | unsigned long rlim_rtprio = | 79598 | unsigned long rlim_rtprio = |
79831 | task_rlimit(p, RLIMIT_RTPRIO); | 79599 | task_rlimit(p, RLIMIT_RTPRIO); |
79832 | 79600 | ||
@@ -79834,7 +79602,7 @@ index 67d0465..4cf9361 100644 | |||
79834 | /* can't set/change the rt policy */ | 79602 | /* can't set/change the rt policy */ |
79835 | if (policy != p->policy && !rlim_rtprio) | 79603 | if (policy != p->policy && !rlim_rtprio) |
79836 | return -EPERM; | 79604 | return -EPERM; |
79837 | @@ -4954,7 +4958,7 @@ static void migrate_tasks(unsigned int dead_cpu) | 79605 | @@ -4988,7 +4992,7 @@ static void migrate_tasks(unsigned int dead_cpu) |
79838 | 79606 | ||
79839 | #if defined(CONFIG_SCHED_DEBUG) && defined(CONFIG_SYSCTL) | 79607 | #if defined(CONFIG_SCHED_DEBUG) && defined(CONFIG_SYSCTL) |
79840 | 79608 | ||
@@ -79843,7 +79611,7 @@ index 67d0465..4cf9361 100644 | |||
79843 | { | 79611 | { |
79844 | .procname = "sched_domain", | 79612 | .procname = "sched_domain", |
79845 | .mode = 0555, | 79613 | .mode = 0555, |
79846 | @@ -4971,17 +4975,17 @@ static struct ctl_table sd_ctl_root[] = { | 79614 | @@ -5005,17 +5009,17 @@ static struct ctl_table sd_ctl_root[] = { |
79847 | {} | 79615 | {} |
79848 | }; | 79616 | }; |
79849 | 79617 | ||
@@ -79865,7 +79633,7 @@ index 67d0465..4cf9361 100644 | |||
79865 | 79633 | ||
79866 | /* | 79634 | /* |
79867 | * In the intermediate directories, both the child directory and | 79635 | * In the intermediate directories, both the child directory and |
79868 | @@ -4989,22 +4993,25 @@ static void sd_free_ctl_entry(struct ctl_table **tablep) | 79636 | @@ -5023,22 +5027,25 @@ static void sd_free_ctl_entry(struct ctl_table **tablep) |
79869 | * will always be set. In the lowest directory the names are | 79637 | * will always be set. In the lowest directory the names are |
79870 | * static strings and all have proc handlers. | 79638 | * static strings and all have proc handlers. |
79871 | */ | 79639 | */ |
@@ -79897,7 +79665,7 @@ index 67d0465..4cf9361 100644 | |||
79897 | const char *procname, void *data, int maxlen, | 79665 | const char *procname, void *data, int maxlen, |
79898 | umode_t mode, proc_handler *proc_handler, | 79666 | umode_t mode, proc_handler *proc_handler, |
79899 | bool load_idx) | 79667 | bool load_idx) |
79900 | @@ -5024,7 +5031,7 @@ set_table_entry(struct ctl_table *entry, | 79668 | @@ -5058,7 +5065,7 @@ set_table_entry(struct ctl_table *entry, |
79901 | static struct ctl_table * | 79669 | static struct ctl_table * |
79902 | sd_alloc_ctl_domain_table(struct sched_domain *sd) | 79670 | sd_alloc_ctl_domain_table(struct sched_domain *sd) |
79903 | { | 79671 | { |
@@ -79906,7 +79674,7 @@ index 67d0465..4cf9361 100644 | |||
79906 | 79674 | ||
79907 | if (table == NULL) | 79675 | if (table == NULL) |
79908 | return NULL; | 79676 | return NULL; |
79909 | @@ -5059,9 +5066,9 @@ sd_alloc_ctl_domain_table(struct sched_domain *sd) | 79677 | @@ -5093,9 +5100,9 @@ sd_alloc_ctl_domain_table(struct sched_domain *sd) |
79910 | return table; | 79678 | return table; |
79911 | } | 79679 | } |
79912 | 79680 | ||
@@ -79918,7 +79686,7 @@ index 67d0465..4cf9361 100644 | |||
79918 | struct sched_domain *sd; | 79686 | struct sched_domain *sd; |
79919 | int domain_num = 0, i; | 79687 | int domain_num = 0, i; |
79920 | char buf[32]; | 79688 | char buf[32]; |
79921 | @@ -5088,11 +5095,13 @@ static struct ctl_table_header *sd_sysctl_header; | 79689 | @@ -5122,11 +5129,13 @@ static struct ctl_table_header *sd_sysctl_header; |
79922 | static void register_sched_domain_sysctl(void) | 79690 | static void register_sched_domain_sysctl(void) |
79923 | { | 79691 | { |
79924 | int i, cpu_num = num_possible_cpus(); | 79692 | int i, cpu_num = num_possible_cpus(); |
@@ -79933,7 +79701,7 @@ index 67d0465..4cf9361 100644 | |||
79933 | 79701 | ||
79934 | if (entry == NULL) | 79702 | if (entry == NULL) |
79935 | return; | 79703 | return; |
79936 | @@ -5115,8 +5124,12 @@ static void unregister_sched_domain_sysctl(void) | 79704 | @@ -5149,8 +5158,12 @@ static void unregister_sched_domain_sysctl(void) |
79937 | if (sd_sysctl_header) | 79705 | if (sd_sysctl_header) |
79938 | unregister_sysctl_table(sd_sysctl_header); | 79706 | unregister_sysctl_table(sd_sysctl_header); |
79939 | sd_sysctl_header = NULL; | 79707 | sd_sysctl_header = NULL; |
@@ -79948,7 +79716,7 @@ index 67d0465..4cf9361 100644 | |||
79948 | } | 79716 | } |
79949 | #else | 79717 | #else |
79950 | static void register_sched_domain_sysctl(void) | 79718 | static void register_sched_domain_sysctl(void) |
79951 | @@ -5215,7 +5228,7 @@ migration_call(struct notifier_block *nfb, unsigned long action, void *hcpu) | 79719 | @@ -5249,7 +5262,7 @@ migration_call(struct notifier_block *nfb, unsigned long action, void *hcpu) |
79952 | * happens before everything else. This has to be lower priority than | 79720 | * happens before everything else. This has to be lower priority than |
79953 | * the notifier in the perf_event subsystem, though. | 79721 | * the notifier in the perf_event subsystem, though. |
79954 | */ | 79722 | */ |
@@ -79958,10 +79726,10 @@ index 67d0465..4cf9361 100644 | |||
79958 | .priority = CPU_PRI_MIGRATION, | 79726 | .priority = CPU_PRI_MIGRATION, |
79959 | }; | 79727 | }; |
79960 | diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c | 79728 | diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c |
79961 | index 7a33e59..2f7730c 100644 | 79729 | index c61a614..d7f3d7e 100644 |
79962 | --- a/kernel/sched/fair.c | 79730 | --- a/kernel/sched/fair.c |
79963 | +++ b/kernel/sched/fair.c | 79731 | +++ b/kernel/sched/fair.c |
79964 | @@ -830,7 +830,7 @@ void task_numa_fault(int node, int pages, bool migrated) | 79732 | @@ -831,7 +831,7 @@ void task_numa_fault(int node, int pages, bool migrated) |
79965 | 79733 | ||
79966 | static void reset_ptenuma_scan(struct task_struct *p) | 79734 | static void reset_ptenuma_scan(struct task_struct *p) |
79967 | { | 79735 | { |
@@ -79970,7 +79738,7 @@ index 7a33e59..2f7730c 100644 | |||
79970 | p->mm->numa_scan_offset = 0; | 79738 | p->mm->numa_scan_offset = 0; |
79971 | } | 79739 | } |
79972 | 79740 | ||
79973 | @@ -5654,7 +5654,7 @@ static void nohz_idle_balance(int this_cpu, enum cpu_idle_type idle) { } | 79741 | @@ -5686,7 +5686,7 @@ static void nohz_idle_balance(int this_cpu, enum cpu_idle_type idle) { } |
79974 | * run_rebalance_domains is triggered when needed from the scheduler tick. | 79742 | * run_rebalance_domains is triggered when needed from the scheduler tick. |
79975 | * Also triggered for nohz idle balancing (with nohz_balancing_kick set). | 79743 | * Also triggered for nohz idle balancing (with nohz_balancing_kick set). |
79976 | */ | 79744 | */ |
@@ -79979,11 +79747,24 @@ index 7a33e59..2f7730c 100644 | |||
79979 | { | 79747 | { |
79980 | int this_cpu = smp_processor_id(); | 79748 | int this_cpu = smp_processor_id(); |
79981 | struct rq *this_rq = cpu_rq(this_cpu); | 79749 | struct rq *this_rq = cpu_rq(this_cpu); |
79750 | diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h | ||
79751 | index ce39224d..0e09343 100644 | ||
79752 | --- a/kernel/sched/sched.h | ||
79753 | +++ b/kernel/sched/sched.h | ||
79754 | @@ -1009,7 +1009,7 @@ struct sched_class { | ||
79755 | #ifdef CONFIG_FAIR_GROUP_SCHED | ||
79756 | void (*task_move_group) (struct task_struct *p, int on_rq); | ||
79757 | #endif | ||
79758 | -}; | ||
79759 | +} __do_const; | ||
79760 | |||
79761 | #define sched_class_highest (&stop_sched_class) | ||
79762 | #define for_each_class(class) \ | ||
79982 | diff --git a/kernel/signal.c b/kernel/signal.c | 79763 | diff --git a/kernel/signal.c b/kernel/signal.c |
79983 | index 598dc06..471310a 100644 | 79764 | index 113411b..17190e2 100644 |
79984 | --- a/kernel/signal.c | 79765 | --- a/kernel/signal.c |
79985 | +++ b/kernel/signal.c | 79766 | +++ b/kernel/signal.c |
79986 | @@ -50,12 +50,12 @@ static struct kmem_cache *sigqueue_cachep; | 79767 | @@ -51,12 +51,12 @@ static struct kmem_cache *sigqueue_cachep; |
79987 | 79768 | ||
79988 | int print_fatal_signals __read_mostly; | 79769 | int print_fatal_signals __read_mostly; |
79989 | 79770 | ||
@@ -79998,7 +79779,7 @@ index 598dc06..471310a 100644 | |||
79998 | { | 79779 | { |
79999 | /* Is it explicitly or implicitly ignored? */ | 79780 | /* Is it explicitly or implicitly ignored? */ |
80000 | return handler == SIG_IGN || | 79781 | return handler == SIG_IGN || |
80001 | @@ -64,7 +64,7 @@ static int sig_handler_ignored(void __user *handler, int sig) | 79782 | @@ -65,7 +65,7 @@ static int sig_handler_ignored(void __user *handler, int sig) |
80002 | 79783 | ||
80003 | static int sig_task_ignored(struct task_struct *t, int sig, bool force) | 79784 | static int sig_task_ignored(struct task_struct *t, int sig, bool force) |
80004 | { | 79785 | { |
@@ -80007,7 +79788,7 @@ index 598dc06..471310a 100644 | |||
80007 | 79788 | ||
80008 | handler = sig_handler(t, sig); | 79789 | handler = sig_handler(t, sig); |
80009 | 79790 | ||
80010 | @@ -368,6 +368,9 @@ __sigqueue_alloc(int sig, struct task_struct *t, gfp_t flags, int override_rlimi | 79791 | @@ -369,6 +369,9 @@ __sigqueue_alloc(int sig, struct task_struct *t, gfp_t flags, int override_rlimi |
80011 | atomic_inc(&user->sigpending); | 79792 | atomic_inc(&user->sigpending); |
80012 | rcu_read_unlock(); | 79793 | rcu_read_unlock(); |
80013 | 79794 | ||
@@ -80017,7 +79798,7 @@ index 598dc06..471310a 100644 | |||
80017 | if (override_rlimit || | 79798 | if (override_rlimit || |
80018 | atomic_read(&user->sigpending) <= | 79799 | atomic_read(&user->sigpending) <= |
80019 | task_rlimit(t, RLIMIT_SIGPENDING)) { | 79800 | task_rlimit(t, RLIMIT_SIGPENDING)) { |
80020 | @@ -495,7 +498,7 @@ flush_signal_handlers(struct task_struct *t, int force_default) | 79801 | @@ -496,7 +499,7 @@ flush_signal_handlers(struct task_struct *t, int force_default) |
80021 | 79802 | ||
80022 | int unhandled_signal(struct task_struct *tsk, int sig) | 79803 | int unhandled_signal(struct task_struct *tsk, int sig) |
80023 | { | 79804 | { |
@@ -80026,7 +79807,7 @@ index 598dc06..471310a 100644 | |||
80026 | if (is_global_init(tsk)) | 79807 | if (is_global_init(tsk)) |
80027 | return 1; | 79808 | return 1; |
80028 | if (handler != SIG_IGN && handler != SIG_DFL) | 79809 | if (handler != SIG_IGN && handler != SIG_DFL) |
80029 | @@ -815,6 +818,13 @@ static int check_kill_permission(int sig, struct siginfo *info, | 79810 | @@ -816,6 +819,13 @@ static int check_kill_permission(int sig, struct siginfo *info, |
80030 | } | 79811 | } |
80031 | } | 79812 | } |
80032 | 79813 | ||
@@ -80040,7 +79821,7 @@ index 598dc06..471310a 100644 | |||
80040 | return security_task_kill(t, info, sig, 0); | 79821 | return security_task_kill(t, info, sig, 0); |
80041 | } | 79822 | } |
80042 | 79823 | ||
80043 | @@ -1197,7 +1207,7 @@ __group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p) | 79824 | @@ -1199,7 +1209,7 @@ __group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p) |
80044 | return send_signal(sig, info, p, 1); | 79825 | return send_signal(sig, info, p, 1); |
80045 | } | 79826 | } |
80046 | 79827 | ||
@@ -80049,7 +79830,7 @@ index 598dc06..471310a 100644 | |||
80049 | specific_send_sig_info(int sig, struct siginfo *info, struct task_struct *t) | 79830 | specific_send_sig_info(int sig, struct siginfo *info, struct task_struct *t) |
80050 | { | 79831 | { |
80051 | return send_signal(sig, info, t, 0); | 79832 | return send_signal(sig, info, t, 0); |
80052 | @@ -1234,6 +1244,7 @@ force_sig_info(int sig, struct siginfo *info, struct task_struct *t) | 79833 | @@ -1236,6 +1246,7 @@ force_sig_info(int sig, struct siginfo *info, struct task_struct *t) |
80053 | unsigned long int flags; | 79834 | unsigned long int flags; |
80054 | int ret, blocked, ignored; | 79835 | int ret, blocked, ignored; |
80055 | struct k_sigaction *action; | 79836 | struct k_sigaction *action; |
@@ -80057,7 +79838,7 @@ index 598dc06..471310a 100644 | |||
80057 | 79838 | ||
80058 | spin_lock_irqsave(&t->sighand->siglock, flags); | 79839 | spin_lock_irqsave(&t->sighand->siglock, flags); |
80059 | action = &t->sighand->action[sig-1]; | 79840 | action = &t->sighand->action[sig-1]; |
80060 | @@ -1248,9 +1259,18 @@ force_sig_info(int sig, struct siginfo *info, struct task_struct *t) | 79841 | @@ -1250,9 +1261,18 @@ force_sig_info(int sig, struct siginfo *info, struct task_struct *t) |
80061 | } | 79842 | } |
80062 | if (action->sa.sa_handler == SIG_DFL) | 79843 | if (action->sa.sa_handler == SIG_DFL) |
80063 | t->signal->flags &= ~SIGNAL_UNKILLABLE; | 79844 | t->signal->flags &= ~SIGNAL_UNKILLABLE; |
@@ -80076,7 +79857,7 @@ index 598dc06..471310a 100644 | |||
80076 | return ret; | 79857 | return ret; |
80077 | } | 79858 | } |
80078 | 79859 | ||
80079 | @@ -1317,8 +1337,11 @@ int group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p) | 79860 | @@ -1319,8 +1339,11 @@ int group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p) |
80080 | ret = check_kill_permission(sig, info, p); | 79861 | ret = check_kill_permission(sig, info, p); |
80081 | rcu_read_unlock(); | 79862 | rcu_read_unlock(); |
80082 | 79863 | ||
@@ -80089,7 +79870,7 @@ index 598dc06..471310a 100644 | |||
80089 | 79870 | ||
80090 | return ret; | 79871 | return ret; |
80091 | } | 79872 | } |
80092 | @@ -2923,7 +2946,15 @@ do_send_specific(pid_t tgid, pid_t pid, int sig, struct siginfo *info) | 79873 | @@ -2926,7 +2949,15 @@ do_send_specific(pid_t tgid, pid_t pid, int sig, struct siginfo *info) |
80093 | int error = -ESRCH; | 79874 | int error = -ESRCH; |
80094 | 79875 | ||
80095 | rcu_read_lock(); | 79876 | rcu_read_lock(); |
@@ -80106,7 +79887,7 @@ index 598dc06..471310a 100644 | |||
80106 | if (p && (tgid <= 0 || task_tgid_vnr(p) == tgid)) { | 79887 | if (p && (tgid <= 0 || task_tgid_vnr(p) == tgid)) { |
80107 | error = check_kill_permission(sig, info, p); | 79888 | error = check_kill_permission(sig, info, p); |
80108 | /* | 79889 | /* |
80109 | @@ -3237,8 +3268,8 @@ COMPAT_SYSCALL_DEFINE2(sigaltstack, | 79890 | @@ -3240,8 +3271,8 @@ COMPAT_SYSCALL_DEFINE2(sigaltstack, |
80110 | } | 79891 | } |
80111 | seg = get_fs(); | 79892 | seg = get_fs(); |
80112 | set_fs(KERNEL_DS); | 79893 | set_fs(KERNEL_DS); |
@@ -80118,7 +79899,7 @@ index 598dc06..471310a 100644 | |||
80118 | set_fs(seg); | 79899 | set_fs(seg); |
80119 | if (ret >= 0 && uoss_ptr) { | 79900 | if (ret >= 0 && uoss_ptr) { |
80120 | diff --git a/kernel/smp.c b/kernel/smp.c | 79901 | diff --git a/kernel/smp.c b/kernel/smp.c |
80121 | index 8e451f3..8322029 100644 | 79902 | index 4dba0f7..fe9f773 100644 |
80122 | --- a/kernel/smp.c | 79903 | --- a/kernel/smp.c |
80123 | +++ b/kernel/smp.c | 79904 | +++ b/kernel/smp.c |
80124 | @@ -73,7 +73,7 @@ hotplug_cfd(struct notifier_block *nfb, unsigned long action, void *hcpu) | 79905 | @@ -73,7 +73,7 @@ hotplug_cfd(struct notifier_block *nfb, unsigned long action, void *hcpu) |
@@ -80153,7 +79934,7 @@ index 02fc5c9..e54c335 100644 | |||
80153 | mutex_unlock(&smpboot_threads_lock); | 79934 | mutex_unlock(&smpboot_threads_lock); |
80154 | put_online_cpus(); | 79935 | put_online_cpus(); |
80155 | diff --git a/kernel/softirq.c b/kernel/softirq.c | 79936 | diff --git a/kernel/softirq.c b/kernel/softirq.c |
80156 | index d93dcb1..1cd8a71 100644 | 79937 | index 3d6833f..da6d93d 100644 |
80157 | --- a/kernel/softirq.c | 79938 | --- a/kernel/softirq.c |
80158 | +++ b/kernel/softirq.c | 79939 | +++ b/kernel/softirq.c |
80159 | @@ -53,11 +53,11 @@ irq_cpustat_t irq_stat[NR_CPUS] ____cacheline_aligned; | 79940 | @@ -53,11 +53,11 @@ irq_cpustat_t irq_stat[NR_CPUS] ____cacheline_aligned; |
@@ -80179,7 +79960,7 @@ index d93dcb1..1cd8a71 100644 | |||
80179 | trace_softirq_exit(vec_nr); | 79960 | trace_softirq_exit(vec_nr); |
80180 | if (unlikely(prev_count != preempt_count())) { | 79961 | if (unlikely(prev_count != preempt_count())) { |
80181 | printk(KERN_ERR "huh, entered softirq %u %s %p" | 79962 | printk(KERN_ERR "huh, entered softirq %u %s %p" |
80182 | @@ -396,7 +396,7 @@ void __raise_softirq_irqoff(unsigned int nr) | 79963 | @@ -405,7 +405,7 @@ void __raise_softirq_irqoff(unsigned int nr) |
80183 | or_softirq_pending(1UL << nr); | 79964 | or_softirq_pending(1UL << nr); |
80184 | } | 79965 | } |
80185 | 79966 | ||
@@ -80188,7 +79969,7 @@ index d93dcb1..1cd8a71 100644 | |||
80188 | { | 79969 | { |
80189 | softirq_vec[nr].action = action; | 79970 | softirq_vec[nr].action = action; |
80190 | } | 79971 | } |
80191 | @@ -452,7 +452,7 @@ void __tasklet_hi_schedule_first(struct tasklet_struct *t) | 79972 | @@ -461,7 +461,7 @@ void __tasklet_hi_schedule_first(struct tasklet_struct *t) |
80192 | 79973 | ||
80193 | EXPORT_SYMBOL(__tasklet_hi_schedule_first); | 79974 | EXPORT_SYMBOL(__tasklet_hi_schedule_first); |
80194 | 79975 | ||
@@ -80197,7 +79978,7 @@ index d93dcb1..1cd8a71 100644 | |||
80197 | { | 79978 | { |
80198 | struct tasklet_struct *list; | 79979 | struct tasklet_struct *list; |
80199 | 79980 | ||
80200 | @@ -487,7 +487,7 @@ static void tasklet_action(struct softirq_action *a) | 79981 | @@ -496,7 +496,7 @@ static void tasklet_action(struct softirq_action *a) |
80201 | } | 79982 | } |
80202 | } | 79983 | } |
80203 | 79984 | ||
@@ -80206,7 +79987,7 @@ index d93dcb1..1cd8a71 100644 | |||
80206 | { | 79987 | { |
80207 | struct tasklet_struct *list; | 79988 | struct tasklet_struct *list; |
80208 | 79989 | ||
80209 | @@ -723,7 +723,7 @@ static int __cpuinit remote_softirq_cpu_notify(struct notifier_block *self, | 79990 | @@ -730,7 +730,7 @@ static int __cpuinit remote_softirq_cpu_notify(struct notifier_block *self, |
80210 | return NOTIFY_OK; | 79991 | return NOTIFY_OK; |
80211 | } | 79992 | } |
80212 | 79993 | ||
@@ -80215,7 +79996,7 @@ index d93dcb1..1cd8a71 100644 | |||
80215 | .notifier_call = remote_softirq_cpu_notify, | 79996 | .notifier_call = remote_softirq_cpu_notify, |
80216 | }; | 79997 | }; |
80217 | 79998 | ||
80218 | @@ -840,11 +840,11 @@ static int __cpuinit cpu_callback(struct notifier_block *nfb, | 79999 | @@ -847,11 +847,11 @@ static int __cpuinit cpu_callback(struct notifier_block *nfb, |
80219 | return NOTIFY_OK; | 80000 | return NOTIFY_OK; |
80220 | } | 80001 | } |
80221 | 80002 | ||
@@ -80246,10 +80027,10 @@ index 01d5ccb..cdcbee6 100644 | |||
80246 | return idx; | 80027 | return idx; |
80247 | } | 80028 | } |
80248 | diff --git a/kernel/sys.c b/kernel/sys.c | 80029 | diff --git a/kernel/sys.c b/kernel/sys.c |
80249 | index e5f0aca..8d58b1f 100644 | 80030 | index 2bbd9a7..0875671 100644 |
80250 | --- a/kernel/sys.c | 80031 | --- a/kernel/sys.c |
80251 | +++ b/kernel/sys.c | 80032 | +++ b/kernel/sys.c |
80252 | @@ -158,6 +158,12 @@ static int set_one_prio(struct task_struct *p, int niceval, int error) | 80033 | @@ -163,6 +163,12 @@ static int set_one_prio(struct task_struct *p, int niceval, int error) |
80253 | error = -EACCES; | 80034 | error = -EACCES; |
80254 | goto out; | 80035 | goto out; |
80255 | } | 80036 | } |
@@ -80262,7 +80043,7 @@ index e5f0aca..8d58b1f 100644 | |||
80262 | no_nice = security_task_setnice(p, niceval); | 80043 | no_nice = security_task_setnice(p, niceval); |
80263 | if (no_nice) { | 80044 | if (no_nice) { |
80264 | error = no_nice; | 80045 | error = no_nice; |
80265 | @@ -621,6 +627,9 @@ SYSCALL_DEFINE2(setregid, gid_t, rgid, gid_t, egid) | 80046 | @@ -626,6 +632,9 @@ SYSCALL_DEFINE2(setregid, gid_t, rgid, gid_t, egid) |
80266 | goto error; | 80047 | goto error; |
80267 | } | 80048 | } |
80268 | 80049 | ||
@@ -80272,7 +80053,7 @@ index e5f0aca..8d58b1f 100644 | |||
80272 | if (rgid != (gid_t) -1 || | 80053 | if (rgid != (gid_t) -1 || |
80273 | (egid != (gid_t) -1 && !gid_eq(kegid, old->gid))) | 80054 | (egid != (gid_t) -1 && !gid_eq(kegid, old->gid))) |
80274 | new->sgid = new->egid; | 80055 | new->sgid = new->egid; |
80275 | @@ -656,6 +665,10 @@ SYSCALL_DEFINE1(setgid, gid_t, gid) | 80056 | @@ -661,6 +670,10 @@ SYSCALL_DEFINE1(setgid, gid_t, gid) |
80276 | old = current_cred(); | 80057 | old = current_cred(); |
80277 | 80058 | ||
80278 | retval = -EPERM; | 80059 | retval = -EPERM; |
@@ -80283,7 +80064,7 @@ index e5f0aca..8d58b1f 100644 | |||
80283 | if (nsown_capable(CAP_SETGID)) | 80064 | if (nsown_capable(CAP_SETGID)) |
80284 | new->gid = new->egid = new->sgid = new->fsgid = kgid; | 80065 | new->gid = new->egid = new->sgid = new->fsgid = kgid; |
80285 | else if (gid_eq(kgid, old->gid) || gid_eq(kgid, old->sgid)) | 80066 | else if (gid_eq(kgid, old->gid) || gid_eq(kgid, old->sgid)) |
80286 | @@ -673,7 +686,7 @@ error: | 80067 | @@ -678,7 +691,7 @@ error: |
80287 | /* | 80068 | /* |
80288 | * change the user struct in a credentials set to match the new UID | 80069 | * change the user struct in a credentials set to match the new UID |
80289 | */ | 80070 | */ |
@@ -80292,7 +80073,7 @@ index e5f0aca..8d58b1f 100644 | |||
80292 | { | 80073 | { |
80293 | struct user_struct *new_user; | 80074 | struct user_struct *new_user; |
80294 | 80075 | ||
80295 | @@ -753,6 +766,9 @@ SYSCALL_DEFINE2(setreuid, uid_t, ruid, uid_t, euid) | 80076 | @@ -758,6 +771,9 @@ SYSCALL_DEFINE2(setreuid, uid_t, ruid, uid_t, euid) |
80296 | goto error; | 80077 | goto error; |
80297 | } | 80078 | } |
80298 | 80079 | ||
@@ -80302,7 +80083,7 @@ index e5f0aca..8d58b1f 100644 | |||
80302 | if (!uid_eq(new->uid, old->uid)) { | 80083 | if (!uid_eq(new->uid, old->uid)) { |
80303 | retval = set_user(new); | 80084 | retval = set_user(new); |
80304 | if (retval < 0) | 80085 | if (retval < 0) |
80305 | @@ -803,6 +819,12 @@ SYSCALL_DEFINE1(setuid, uid_t, uid) | 80086 | @@ -808,6 +824,12 @@ SYSCALL_DEFINE1(setuid, uid_t, uid) |
80306 | old = current_cred(); | 80087 | old = current_cred(); |
80307 | 80088 | ||
80308 | retval = -EPERM; | 80089 | retval = -EPERM; |
@@ -80315,7 +80096,7 @@ index e5f0aca..8d58b1f 100644 | |||
80315 | if (nsown_capable(CAP_SETUID)) { | 80096 | if (nsown_capable(CAP_SETUID)) { |
80316 | new->suid = new->uid = kuid; | 80097 | new->suid = new->uid = kuid; |
80317 | if (!uid_eq(kuid, old->uid)) { | 80098 | if (!uid_eq(kuid, old->uid)) { |
80318 | @@ -872,6 +894,9 @@ SYSCALL_DEFINE3(setresuid, uid_t, ruid, uid_t, euid, uid_t, suid) | 80099 | @@ -877,6 +899,9 @@ SYSCALL_DEFINE3(setresuid, uid_t, ruid, uid_t, euid, uid_t, suid) |
80319 | goto error; | 80100 | goto error; |
80320 | } | 80101 | } |
80321 | 80102 | ||
@@ -80325,7 +80106,7 @@ index e5f0aca..8d58b1f 100644 | |||
80325 | if (ruid != (uid_t) -1) { | 80106 | if (ruid != (uid_t) -1) { |
80326 | new->uid = kruid; | 80107 | new->uid = kruid; |
80327 | if (!uid_eq(kruid, old->uid)) { | 80108 | if (!uid_eq(kruid, old->uid)) { |
80328 | @@ -954,6 +979,9 @@ SYSCALL_DEFINE3(setresgid, gid_t, rgid, gid_t, egid, gid_t, sgid) | 80109 | @@ -959,6 +984,9 @@ SYSCALL_DEFINE3(setresgid, gid_t, rgid, gid_t, egid, gid_t, sgid) |
80329 | goto error; | 80110 | goto error; |
80330 | } | 80111 | } |
80331 | 80112 | ||
@@ -80335,7 +80116,7 @@ index e5f0aca..8d58b1f 100644 | |||
80335 | if (rgid != (gid_t) -1) | 80116 | if (rgid != (gid_t) -1) |
80336 | new->gid = krgid; | 80117 | new->gid = krgid; |
80337 | if (egid != (gid_t) -1) | 80118 | if (egid != (gid_t) -1) |
80338 | @@ -1015,12 +1043,16 @@ SYSCALL_DEFINE1(setfsuid, uid_t, uid) | 80119 | @@ -1020,12 +1048,16 @@ SYSCALL_DEFINE1(setfsuid, uid_t, uid) |
80339 | uid_eq(kuid, old->suid) || uid_eq(kuid, old->fsuid) || | 80120 | uid_eq(kuid, old->suid) || uid_eq(kuid, old->fsuid) || |
80340 | nsown_capable(CAP_SETUID)) { | 80121 | nsown_capable(CAP_SETUID)) { |
80341 | if (!uid_eq(kuid, old->fsuid)) { | 80122 | if (!uid_eq(kuid, old->fsuid)) { |
@@ -80352,7 +80133,7 @@ index e5f0aca..8d58b1f 100644 | |||
80352 | abort_creds(new); | 80133 | abort_creds(new); |
80353 | return old_fsuid; | 80134 | return old_fsuid; |
80354 | 80135 | ||
80355 | @@ -1053,12 +1085,16 @@ SYSCALL_DEFINE1(setfsgid, gid_t, gid) | 80136 | @@ -1058,12 +1090,16 @@ SYSCALL_DEFINE1(setfsgid, gid_t, gid) |
80356 | if (gid_eq(kgid, old->gid) || gid_eq(kgid, old->egid) || | 80137 | if (gid_eq(kgid, old->gid) || gid_eq(kgid, old->egid) || |
80357 | gid_eq(kgid, old->sgid) || gid_eq(kgid, old->fsgid) || | 80138 | gid_eq(kgid, old->sgid) || gid_eq(kgid, old->fsgid) || |
80358 | nsown_capable(CAP_SETGID)) { | 80139 | nsown_capable(CAP_SETGID)) { |
@@ -80369,7 +80150,7 @@ index e5f0aca..8d58b1f 100644 | |||
80369 | abort_creds(new); | 80150 | abort_creds(new); |
80370 | return old_fsgid; | 80151 | return old_fsgid; |
80371 | 80152 | ||
80372 | @@ -1366,19 +1402,19 @@ SYSCALL_DEFINE1(olduname, struct oldold_utsname __user *, name) | 80153 | @@ -1432,19 +1468,19 @@ SYSCALL_DEFINE1(olduname, struct oldold_utsname __user *, name) |
80373 | return -EFAULT; | 80154 | return -EFAULT; |
80374 | 80155 | ||
80375 | down_read(&uts_sem); | 80156 | down_read(&uts_sem); |
@@ -80394,7 +80175,7 @@ index e5f0aca..8d58b1f 100644 | |||
80394 | __OLD_UTS_LEN); | 80175 | __OLD_UTS_LEN); |
80395 | error |= __put_user(0, name->machine + __OLD_UTS_LEN); | 80176 | error |= __put_user(0, name->machine + __OLD_UTS_LEN); |
80396 | up_read(&uts_sem); | 80177 | up_read(&uts_sem); |
80397 | @@ -1580,6 +1616,13 @@ int do_prlimit(struct task_struct *tsk, unsigned int resource, | 80178 | @@ -1646,6 +1682,13 @@ int do_prlimit(struct task_struct *tsk, unsigned int resource, |
80398 | */ | 80179 | */ |
80399 | new_rlim->rlim_cur = 1; | 80180 | new_rlim->rlim_cur = 1; |
80400 | } | 80181 | } |
@@ -80409,7 +80190,7 @@ index e5f0aca..8d58b1f 100644 | |||
80409 | if (!retval) { | 80190 | if (!retval) { |
80410 | if (old_rlim) | 80191 | if (old_rlim) |
80411 | diff --git a/kernel/sysctl.c b/kernel/sysctl.c | 80192 | diff --git a/kernel/sysctl.c b/kernel/sysctl.c |
80412 | index afc1dc6..f6cf355 100644 | 80193 | index 9edcf45..713c960 100644 |
80413 | --- a/kernel/sysctl.c | 80194 | --- a/kernel/sysctl.c |
80414 | +++ b/kernel/sysctl.c | 80195 | +++ b/kernel/sysctl.c |
80415 | @@ -93,7 +93,6 @@ | 80196 | @@ -93,7 +93,6 @@ |
@@ -80420,7 +80201,7 @@ index afc1dc6..f6cf355 100644 | |||
80420 | /* External variables not in a header file. */ | 80201 | /* External variables not in a header file. */ |
80421 | extern int sysctl_overcommit_memory; | 80202 | extern int sysctl_overcommit_memory; |
80422 | extern int sysctl_overcommit_ratio; | 80203 | extern int sysctl_overcommit_ratio; |
80423 | @@ -120,18 +119,18 @@ extern int blk_iopoll_enabled; | 80204 | @@ -119,18 +118,18 @@ extern int blk_iopoll_enabled; |
80424 | 80205 | ||
80425 | /* Constants used for minimum and maximum */ | 80206 | /* Constants used for minimum and maximum */ |
80426 | #ifdef CONFIG_LOCKUP_DETECTOR | 80207 | #ifdef CONFIG_LOCKUP_DETECTOR |
@@ -80448,7 +80229,7 @@ index afc1dc6..f6cf355 100644 | |||
80448 | #endif | 80229 | #endif |
80449 | 80230 | ||
80450 | /* this is needed for the proc_doulongvec_minmax of vm_dirty_bytes */ | 80231 | /* this is needed for the proc_doulongvec_minmax of vm_dirty_bytes */ |
80451 | @@ -178,10 +177,8 @@ static int proc_taint(struct ctl_table *table, int write, | 80232 | @@ -177,10 +176,8 @@ static int proc_taint(struct ctl_table *table, int write, |
80452 | void __user *buffer, size_t *lenp, loff_t *ppos); | 80233 | void __user *buffer, size_t *lenp, loff_t *ppos); |
80453 | #endif | 80234 | #endif |
80454 | 80235 | ||
@@ -80459,7 +80240,7 @@ index afc1dc6..f6cf355 100644 | |||
80459 | 80240 | ||
80460 | static int proc_dointvec_minmax_coredump(struct ctl_table *table, int write, | 80241 | static int proc_dointvec_minmax_coredump(struct ctl_table *table, int write, |
80461 | void __user *buffer, size_t *lenp, loff_t *ppos); | 80242 | void __user *buffer, size_t *lenp, loff_t *ppos); |
80462 | @@ -212,6 +209,8 @@ static int sysrq_sysctl_handler(ctl_table *table, int write, | 80243 | @@ -211,6 +208,8 @@ static int sysrq_sysctl_handler(ctl_table *table, int write, |
80463 | 80244 | ||
80464 | #endif | 80245 | #endif |
80465 | 80246 | ||
@@ -80468,7 +80249,7 @@ index afc1dc6..f6cf355 100644 | |||
80468 | static struct ctl_table kern_table[]; | 80249 | static struct ctl_table kern_table[]; |
80469 | static struct ctl_table vm_table[]; | 80250 | static struct ctl_table vm_table[]; |
80470 | static struct ctl_table fs_table[]; | 80251 | static struct ctl_table fs_table[]; |
80471 | @@ -226,6 +225,20 @@ extern struct ctl_table epoll_table[]; | 80252 | @@ -225,6 +224,20 @@ extern struct ctl_table epoll_table[]; |
80472 | int sysctl_legacy_va_layout; | 80253 | int sysctl_legacy_va_layout; |
80473 | #endif | 80254 | #endif |
80474 | 80255 | ||
@@ -80489,7 +80270,7 @@ index afc1dc6..f6cf355 100644 | |||
80489 | /* The default sysctl tables: */ | 80270 | /* The default sysctl tables: */ |
80490 | 80271 | ||
80491 | static struct ctl_table sysctl_base_table[] = { | 80272 | static struct ctl_table sysctl_base_table[] = { |
80492 | @@ -274,6 +287,22 @@ static int max_extfrag_threshold = 1000; | 80273 | @@ -273,6 +286,22 @@ static int max_extfrag_threshold = 1000; |
80493 | #endif | 80274 | #endif |
80494 | 80275 | ||
80495 | static struct ctl_table kern_table[] = { | 80276 | static struct ctl_table kern_table[] = { |
@@ -80512,7 +80293,7 @@ index afc1dc6..f6cf355 100644 | |||
80512 | { | 80293 | { |
80513 | .procname = "sched_child_runs_first", | 80294 | .procname = "sched_child_runs_first", |
80514 | .data = &sysctl_sched_child_runs_first, | 80295 | .data = &sysctl_sched_child_runs_first, |
80515 | @@ -608,7 +637,7 @@ static struct ctl_table kern_table[] = { | 80296 | @@ -607,7 +636,7 @@ static struct ctl_table kern_table[] = { |
80516 | .data = &modprobe_path, | 80297 | .data = &modprobe_path, |
80517 | .maxlen = KMOD_PATH_LEN, | 80298 | .maxlen = KMOD_PATH_LEN, |
80518 | .mode = 0644, | 80299 | .mode = 0644, |
@@ -80521,7 +80302,7 @@ index afc1dc6..f6cf355 100644 | |||
80521 | }, | 80302 | }, |
80522 | { | 80303 | { |
80523 | .procname = "modules_disabled", | 80304 | .procname = "modules_disabled", |
80524 | @@ -775,16 +804,20 @@ static struct ctl_table kern_table[] = { | 80305 | @@ -774,16 +803,20 @@ static struct ctl_table kern_table[] = { |
80525 | .extra1 = &zero, | 80306 | .extra1 = &zero, |
80526 | .extra2 = &one, | 80307 | .extra2 = &one, |
80527 | }, | 80308 | }, |
@@ -80543,7 +80324,7 @@ index afc1dc6..f6cf355 100644 | |||
80543 | { | 80324 | { |
80544 | .procname = "ngroups_max", | 80325 | .procname = "ngroups_max", |
80545 | .data = &ngroups_max, | 80326 | .data = &ngroups_max, |
80546 | @@ -1026,10 +1059,17 @@ static struct ctl_table kern_table[] = { | 80327 | @@ -1025,10 +1058,17 @@ static struct ctl_table kern_table[] = { |
80547 | */ | 80328 | */ |
80548 | { | 80329 | { |
80549 | .procname = "perf_event_paranoid", | 80330 | .procname = "perf_event_paranoid", |
@@ -80564,7 +80345,7 @@ index afc1dc6..f6cf355 100644 | |||
80564 | }, | 80345 | }, |
80565 | { | 80346 | { |
80566 | .procname = "perf_event_mlock_kb", | 80347 | .procname = "perf_event_mlock_kb", |
80567 | @@ -1283,6 +1323,13 @@ static struct ctl_table vm_table[] = { | 80348 | @@ -1282,6 +1322,13 @@ static struct ctl_table vm_table[] = { |
80568 | .proc_handler = proc_dointvec_minmax, | 80349 | .proc_handler = proc_dointvec_minmax, |
80569 | .extra1 = &zero, | 80350 | .extra1 = &zero, |
80570 | }, | 80351 | }, |
@@ -80578,7 +80359,7 @@ index afc1dc6..f6cf355 100644 | |||
80578 | #else | 80359 | #else |
80579 | { | 80360 | { |
80580 | .procname = "nr_trim_pages", | 80361 | .procname = "nr_trim_pages", |
80581 | @@ -1733,6 +1780,16 @@ int proc_dostring(struct ctl_table *table, int write, | 80362 | @@ -1746,6 +1793,16 @@ int proc_dostring(struct ctl_table *table, int write, |
80582 | buffer, lenp, ppos); | 80363 | buffer, lenp, ppos); |
80583 | } | 80364 | } |
80584 | 80365 | ||
@@ -80595,7 +80376,7 @@ index afc1dc6..f6cf355 100644 | |||
80595 | static size_t proc_skip_spaces(char **buf) | 80376 | static size_t proc_skip_spaces(char **buf) |
80596 | { | 80377 | { |
80597 | size_t ret; | 80378 | size_t ret; |
80598 | @@ -1838,6 +1895,8 @@ static int proc_put_long(void __user **buf, size_t *size, unsigned long val, | 80379 | @@ -1851,6 +1908,8 @@ static int proc_put_long(void __user **buf, size_t *size, unsigned long val, |
80599 | len = strlen(tmp); | 80380 | len = strlen(tmp); |
80600 | if (len > *size) | 80381 | if (len > *size) |
80601 | len = *size; | 80382 | len = *size; |
@@ -80604,7 +80385,7 @@ index afc1dc6..f6cf355 100644 | |||
80604 | if (copy_to_user(*buf, tmp, len)) | 80385 | if (copy_to_user(*buf, tmp, len)) |
80605 | return -EFAULT; | 80386 | return -EFAULT; |
80606 | *size -= len; | 80387 | *size -= len; |
80607 | @@ -2002,7 +2061,7 @@ int proc_dointvec(struct ctl_table *table, int write, | 80388 | @@ -2015,7 +2074,7 @@ int proc_dointvec(struct ctl_table *table, int write, |
80608 | static int proc_taint(struct ctl_table *table, int write, | 80389 | static int proc_taint(struct ctl_table *table, int write, |
80609 | void __user *buffer, size_t *lenp, loff_t *ppos) | 80390 | void __user *buffer, size_t *lenp, loff_t *ppos) |
80610 | { | 80391 | { |
@@ -80613,7 +80394,7 @@ index afc1dc6..f6cf355 100644 | |||
80613 | unsigned long tmptaint = get_taint(); | 80394 | unsigned long tmptaint = get_taint(); |
80614 | int err; | 80395 | int err; |
80615 | 80396 | ||
80616 | @@ -2030,7 +2089,6 @@ static int proc_taint(struct ctl_table *table, int write, | 80397 | @@ -2043,7 +2102,6 @@ static int proc_taint(struct ctl_table *table, int write, |
80617 | return err; | 80398 | return err; |
80618 | } | 80399 | } |
80619 | 80400 | ||
@@ -80621,7 +80402,7 @@ index afc1dc6..f6cf355 100644 | |||
80621 | static int proc_dointvec_minmax_sysadmin(struct ctl_table *table, int write, | 80402 | static int proc_dointvec_minmax_sysadmin(struct ctl_table *table, int write, |
80622 | void __user *buffer, size_t *lenp, loff_t *ppos) | 80403 | void __user *buffer, size_t *lenp, loff_t *ppos) |
80623 | { | 80404 | { |
80624 | @@ -2039,7 +2097,6 @@ static int proc_dointvec_minmax_sysadmin(struct ctl_table *table, int write, | 80405 | @@ -2052,7 +2110,6 @@ static int proc_dointvec_minmax_sysadmin(struct ctl_table *table, int write, |
80625 | 80406 | ||
80626 | return proc_dointvec_minmax(table, write, buffer, lenp, ppos); | 80407 | return proc_dointvec_minmax(table, write, buffer, lenp, ppos); |
80627 | } | 80408 | } |
@@ -80629,7 +80410,7 @@ index afc1dc6..f6cf355 100644 | |||
80629 | 80410 | ||
80630 | struct do_proc_dointvec_minmax_conv_param { | 80411 | struct do_proc_dointvec_minmax_conv_param { |
80631 | int *min; | 80412 | int *min; |
80632 | @@ -2186,8 +2243,11 @@ static int __do_proc_doulongvec_minmax(void *data, struct ctl_table *table, int | 80413 | @@ -2199,8 +2256,11 @@ static int __do_proc_doulongvec_minmax(void *data, struct ctl_table *table, int |
80633 | *i = val; | 80414 | *i = val; |
80634 | } else { | 80415 | } else { |
80635 | val = convdiv * (*i) / convmul; | 80416 | val = convdiv * (*i) / convmul; |
@@ -80642,7 +80423,7 @@ index afc1dc6..f6cf355 100644 | |||
80642 | err = proc_put_long(&buffer, &left, val, false); | 80423 | err = proc_put_long(&buffer, &left, val, false); |
80643 | if (err) | 80424 | if (err) |
80644 | break; | 80425 | break; |
80645 | @@ -2579,6 +2639,12 @@ int proc_dostring(struct ctl_table *table, int write, | 80426 | @@ -2592,6 +2652,12 @@ int proc_dostring(struct ctl_table *table, int write, |
80646 | return -ENOSYS; | 80427 | return -ENOSYS; |
80647 | } | 80428 | } |
80648 | 80429 | ||
@@ -80655,7 +80436,7 @@ index afc1dc6..f6cf355 100644 | |||
80655 | int proc_dointvec(struct ctl_table *table, int write, | 80436 | int proc_dointvec(struct ctl_table *table, int write, |
80656 | void __user *buffer, size_t *lenp, loff_t *ppos) | 80437 | void __user *buffer, size_t *lenp, loff_t *ppos) |
80657 | { | 80438 | { |
80658 | @@ -2635,5 +2701,6 @@ EXPORT_SYMBOL(proc_dointvec_minmax); | 80439 | @@ -2648,5 +2714,6 @@ EXPORT_SYMBOL(proc_dointvec_minmax); |
80659 | EXPORT_SYMBOL(proc_dointvec_userhz_jiffies); | 80440 | EXPORT_SYMBOL(proc_dointvec_userhz_jiffies); |
80660 | EXPORT_SYMBOL(proc_dointvec_ms_jiffies); | 80441 | EXPORT_SYMBOL(proc_dointvec_ms_jiffies); |
80661 | EXPORT_SYMBOL(proc_dostring); | 80442 | EXPORT_SYMBOL(proc_dostring); |
@@ -80690,10 +80471,10 @@ index 145bb4d..b2aa969 100644 | |||
80690 | return cmd_attr_register_cpumask(info); | 80471 | return cmd_attr_register_cpumask(info); |
80691 | else if (info->attrs[TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK]) | 80472 | else if (info->attrs[TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK]) |
80692 | diff --git a/kernel/time.c b/kernel/time.c | 80473 | diff --git a/kernel/time.c b/kernel/time.c |
80693 | index f8342a4..288f13b 100644 | 80474 | index d3617db..c98bbe9 100644 |
80694 | --- a/kernel/time.c | 80475 | --- a/kernel/time.c |
80695 | +++ b/kernel/time.c | 80476 | +++ b/kernel/time.c |
80696 | @@ -171,6 +171,11 @@ int do_sys_settimeofday(const struct timespec *tv, const struct timezone *tz) | 80477 | @@ -172,6 +172,11 @@ int do_sys_settimeofday(const struct timespec *tv, const struct timezone *tz) |
80697 | return error; | 80478 | return error; |
80698 | 80479 | ||
80699 | if (tz) { | 80480 | if (tz) { |
@@ -80705,7 +80486,7 @@ index f8342a4..288f13b 100644 | |||
80705 | sys_tz = *tz; | 80486 | sys_tz = *tz; |
80706 | update_vsyscall_tz(); | 80487 | update_vsyscall_tz(); |
80707 | if (firsttime) { | 80488 | if (firsttime) { |
80708 | @@ -501,7 +506,7 @@ EXPORT_SYMBOL(usecs_to_jiffies); | 80489 | @@ -502,7 +507,7 @@ EXPORT_SYMBOL(usecs_to_jiffies); |
80709 | * The >> (NSEC_JIFFIE_SC - SEC_JIFFIE_SC) converts the scaled nsec | 80490 | * The >> (NSEC_JIFFIE_SC - SEC_JIFFIE_SC) converts the scaled nsec |
80710 | * value to a scaled second value. | 80491 | * value to a scaled second value. |
80711 | */ | 80492 | */ |
@@ -80727,21 +80508,8 @@ index f11d83b..d016d91 100644 | |||
80727 | .clock_getres = alarm_clock_getres, | 80508 | .clock_getres = alarm_clock_getres, |
80728 | .clock_get = alarm_clock_get, | 80509 | .clock_get = alarm_clock_get, |
80729 | .timer_create = alarm_timer_create, | 80510 | .timer_create = alarm_timer_create, |
80730 | diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c | ||
80731 | index 90ad470..1814e9a 100644 | ||
80732 | --- a/kernel/time/tick-broadcast.c | ||
80733 | +++ b/kernel/time/tick-broadcast.c | ||
80734 | @@ -138,7 +138,7 @@ int tick_device_uses_broadcast(struct clock_event_device *dev, int cpu) | ||
80735 | * then clear the broadcast bit. | ||
80736 | */ | ||
80737 | if (!(dev->features & CLOCK_EVT_FEAT_C3STOP)) { | ||
80738 | - int cpu = smp_processor_id(); | ||
80739 | + cpu = smp_processor_id(); | ||
80740 | cpumask_clear_cpu(cpu, tick_get_broadcast_mask()); | ||
80741 | tick_broadcast_clear_oneshot(cpu); | ||
80742 | } else { | ||
80743 | diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c | 80511 | diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c |
80744 | index 183df62..59b1442 100644 | 80512 | index baeeb5c..c22704a 100644 |
80745 | --- a/kernel/time/timekeeping.c | 80513 | --- a/kernel/time/timekeeping.c |
80746 | +++ b/kernel/time/timekeeping.c | 80514 | +++ b/kernel/time/timekeeping.c |
80747 | @@ -15,6 +15,7 @@ | 80515 | @@ -15,6 +15,7 @@ |
@@ -80752,20 +80520,20 @@ index 183df62..59b1442 100644 | |||
80752 | #include <linux/syscore_ops.h> | 80520 | #include <linux/syscore_ops.h> |
80753 | #include <linux/clocksource.h> | 80521 | #include <linux/clocksource.h> |
80754 | #include <linux/jiffies.h> | 80522 | #include <linux/jiffies.h> |
80755 | @@ -448,6 +449,8 @@ int do_settimeofday(const struct timespec *tv) | 80523 | @@ -495,6 +496,8 @@ int do_settimeofday(const struct timespec *tv) |
80756 | if (!timespec_valid_strict(tv)) | 80524 | if (!timespec_valid_strict(tv)) |
80757 | return -EINVAL; | 80525 | return -EINVAL; |
80758 | 80526 | ||
80759 | + gr_log_timechange(); | 80527 | + gr_log_timechange(); |
80760 | + | 80528 | + |
80761 | write_seqlock_irqsave(&tk->lock, flags); | 80529 | raw_spin_lock_irqsave(&timekeeper_lock, flags); |
80530 | write_seqcount_begin(&timekeeper_seq); | ||
80762 | 80531 | ||
80763 | timekeeping_forward_now(tk); | ||
80764 | diff --git a/kernel/time/timer_list.c b/kernel/time/timer_list.c | 80532 | diff --git a/kernel/time/timer_list.c b/kernel/time/timer_list.c |
80765 | index af5a7e9..715611a 100644 | 80533 | index 3bdf283..cc68d83 100644 |
80766 | --- a/kernel/time/timer_list.c | 80534 | --- a/kernel/time/timer_list.c |
80767 | +++ b/kernel/time/timer_list.c | 80535 | +++ b/kernel/time/timer_list.c |
80768 | @@ -38,12 +38,16 @@ DECLARE_PER_CPU(struct hrtimer_cpu_base, hrtimer_bases); | 80536 | @@ -45,12 +45,16 @@ DECLARE_PER_CPU(struct hrtimer_cpu_base, hrtimer_bases); |
80769 | 80537 | ||
80770 | static void print_name_offset(struct seq_file *m, void *sym) | 80538 | static void print_name_offset(struct seq_file *m, void *sym) |
80771 | { | 80539 | { |
@@ -80782,7 +80550,7 @@ index af5a7e9..715611a 100644 | |||
80782 | } | 80550 | } |
80783 | 80551 | ||
80784 | static void | 80552 | static void |
80785 | @@ -112,7 +116,11 @@ next_one: | 80553 | @@ -119,7 +123,11 @@ next_one: |
80786 | static void | 80554 | static void |
80787 | print_base(struct seq_file *m, struct hrtimer_clock_base *base, u64 now) | 80555 | print_base(struct seq_file *m, struct hrtimer_clock_base *base, u64 now) |
80788 | { | 80556 | { |
@@ -80794,7 +80562,7 @@ index af5a7e9..715611a 100644 | |||
80794 | SEQ_printf(m, " .index: %d\n", | 80562 | SEQ_printf(m, " .index: %d\n", |
80795 | base->index); | 80563 | base->index); |
80796 | SEQ_printf(m, " .resolution: %Lu nsecs\n", | 80564 | SEQ_printf(m, " .resolution: %Lu nsecs\n", |
80797 | @@ -293,7 +301,11 @@ static int __init init_timer_list_procfs(void) | 80565 | @@ -355,7 +363,11 @@ static int __init init_timer_list_procfs(void) |
80798 | { | 80566 | { |
80799 | struct proc_dir_entry *pe; | 80567 | struct proc_dir_entry *pe; |
80800 | 80568 | ||
@@ -80880,10 +80648,10 @@ index 0b537f2..40d6c20 100644 | |||
80880 | return -ENOMEM; | 80648 | return -ENOMEM; |
80881 | return 0; | 80649 | return 0; |
80882 | diff --git a/kernel/timer.c b/kernel/timer.c | 80650 | diff --git a/kernel/timer.c b/kernel/timer.c |
80883 | index 3361cff..0751080 100644 | 80651 | index 15bc1b4..32da49c 100644 |
80884 | --- a/kernel/timer.c | 80652 | --- a/kernel/timer.c |
80885 | +++ b/kernel/timer.c | 80653 | +++ b/kernel/timer.c |
80886 | @@ -1365,7 +1365,7 @@ void update_process_times(int user_tick) | 80654 | @@ -1366,7 +1366,7 @@ void update_process_times(int user_tick) |
80887 | /* | 80655 | /* |
80888 | * This function runs timers and the timer-tq in bottom half context. | 80656 | * This function runs timers and the timer-tq in bottom half context. |
80889 | */ | 80657 | */ |
@@ -80892,7 +80660,7 @@ index 3361cff..0751080 100644 | |||
80892 | { | 80660 | { |
80893 | struct tvec_base *base = __this_cpu_read(tvec_bases); | 80661 | struct tvec_base *base = __this_cpu_read(tvec_bases); |
80894 | 80662 | ||
80895 | @@ -1483,7 +1483,7 @@ static void process_timeout(unsigned long __data) | 80663 | @@ -1429,7 +1429,7 @@ static void process_timeout(unsigned long __data) |
80896 | * | 80664 | * |
80897 | * In all cases the return value is guaranteed to be non-negative. | 80665 | * In all cases the return value is guaranteed to be non-negative. |
80898 | */ | 80666 | */ |
@@ -80901,7 +80669,7 @@ index 3361cff..0751080 100644 | |||
80901 | { | 80669 | { |
80902 | struct timer_list timer; | 80670 | struct timer_list timer; |
80903 | unsigned long expire; | 80671 | unsigned long expire; |
80904 | @@ -1774,7 +1774,7 @@ static int __cpuinit timer_cpu_notify(struct notifier_block *self, | 80672 | @@ -1635,7 +1635,7 @@ static int __cpuinit timer_cpu_notify(struct notifier_block *self, |
80905 | return NOTIFY_OK; | 80673 | return NOTIFY_OK; |
80906 | } | 80674 | } |
80907 | 80675 | ||
@@ -80911,7 +80679,7 @@ index 3361cff..0751080 100644 | |||
80911 | }; | 80679 | }; |
80912 | 80680 | ||
80913 | diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c | 80681 | diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c |
80914 | index 5a0f781..1497f95 100644 | 80682 | index b8b8560..75b1a09 100644 |
80915 | --- a/kernel/trace/blktrace.c | 80683 | --- a/kernel/trace/blktrace.c |
80916 | +++ b/kernel/trace/blktrace.c | 80684 | +++ b/kernel/trace/blktrace.c |
80917 | @@ -317,7 +317,7 @@ static ssize_t blk_dropped_read(struct file *filp, char __user *buffer, | 80685 | @@ -317,7 +317,7 @@ static ssize_t blk_dropped_read(struct file *filp, char __user *buffer, |
@@ -80942,10 +80710,10 @@ index 5a0f781..1497f95 100644 | |||
80942 | ret = -EIO; | 80710 | ret = -EIO; |
80943 | bt->dropped_file = debugfs_create_file("dropped", 0444, dir, bt, | 80711 | bt->dropped_file = debugfs_create_file("dropped", 0444, dir, bt, |
80944 | diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c | 80712 | diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c |
80945 | index 0a0e2a6..943495e 100644 | 80713 | index 6c508ff..ee55a13 100644 |
80946 | --- a/kernel/trace/ftrace.c | 80714 | --- a/kernel/trace/ftrace.c |
80947 | +++ b/kernel/trace/ftrace.c | 80715 | +++ b/kernel/trace/ftrace.c |
80948 | @@ -1909,12 +1909,17 @@ ftrace_code_disable(struct module *mod, struct dyn_ftrace *rec) | 80716 | @@ -1915,12 +1915,17 @@ ftrace_code_disable(struct module *mod, struct dyn_ftrace *rec) |
80949 | if (unlikely(ftrace_disabled)) | 80717 | if (unlikely(ftrace_disabled)) |
80950 | return 0; | 80718 | return 0; |
80951 | 80719 | ||
@@ -80965,16 +80733,7 @@ index 0a0e2a6..943495e 100644 | |||
80965 | } | 80733 | } |
80966 | 80734 | ||
80967 | /* | 80735 | /* |
80968 | @@ -2986,7 +2991,7 @@ static void ftrace_free_entry_rcu(struct rcu_head *rhp) | 80736 | @@ -3931,8 +3936,10 @@ static int ftrace_process_locs(struct module *mod, |
80969 | |||
80970 | int | ||
80971 | register_ftrace_function_probe(char *glob, struct ftrace_probe_ops *ops, | ||
80972 | - void *data) | ||
80973 | + void *data) | ||
80974 | { | ||
80975 | struct ftrace_func_probe *entry; | ||
80976 | struct ftrace_page *pg; | ||
80977 | @@ -3854,8 +3859,10 @@ static int ftrace_process_locs(struct module *mod, | ||
80978 | if (!count) | 80737 | if (!count) |
80979 | return 0; | 80738 | return 0; |
80980 | 80739 | ||
@@ -80985,7 +80744,7 @@ index 0a0e2a6..943495e 100644 | |||
80985 | 80744 | ||
80986 | start_pg = ftrace_allocate_pages(count); | 80745 | start_pg = ftrace_allocate_pages(count); |
80987 | if (!start_pg) | 80746 | if (!start_pg) |
80988 | @@ -4574,8 +4581,6 @@ ftrace_enable_sysctl(struct ctl_table *table, int write, | 80747 | @@ -4655,8 +4662,6 @@ ftrace_enable_sysctl(struct ctl_table *table, int write, |
80989 | #ifdef CONFIG_FUNCTION_GRAPH_TRACER | 80748 | #ifdef CONFIG_FUNCTION_GRAPH_TRACER |
80990 | 80749 | ||
80991 | static int ftrace_graph_active; | 80750 | static int ftrace_graph_active; |
@@ -80994,7 +80753,7 @@ index 0a0e2a6..943495e 100644 | |||
80994 | int ftrace_graph_entry_stub(struct ftrace_graph_ent *trace) | 80753 | int ftrace_graph_entry_stub(struct ftrace_graph_ent *trace) |
80995 | { | 80754 | { |
80996 | return 0; | 80755 | return 0; |
80997 | @@ -4719,6 +4724,10 @@ ftrace_suspend_notifier_call(struct notifier_block *bl, unsigned long state, | 80756 | @@ -4800,6 +4805,10 @@ ftrace_suspend_notifier_call(struct notifier_block *bl, unsigned long state, |
80998 | return NOTIFY_DONE; | 80757 | return NOTIFY_DONE; |
80999 | } | 80758 | } |
81000 | 80759 | ||
@@ -81005,7 +80764,7 @@ index 0a0e2a6..943495e 100644 | |||
81005 | int register_ftrace_graph(trace_func_graph_ret_t retfunc, | 80764 | int register_ftrace_graph(trace_func_graph_ret_t retfunc, |
81006 | trace_func_graph_ent_t entryfunc) | 80765 | trace_func_graph_ent_t entryfunc) |
81007 | { | 80766 | { |
81008 | @@ -4732,7 +4741,6 @@ int register_ftrace_graph(trace_func_graph_ret_t retfunc, | 80767 | @@ -4813,7 +4822,6 @@ int register_ftrace_graph(trace_func_graph_ret_t retfunc, |
81009 | goto out; | 80768 | goto out; |
81010 | } | 80769 | } |
81011 | 80770 | ||
@@ -81014,10 +80773,10 @@ index 0a0e2a6..943495e 100644 | |||
81014 | 80773 | ||
81015 | ftrace_graph_active++; | 80774 | ftrace_graph_active++; |
81016 | diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c | 80775 | diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c |
81017 | index 6989df2..c2265cf 100644 | 80776 | index e444ff8..438b8f4 100644 |
81018 | --- a/kernel/trace/ring_buffer.c | 80777 | --- a/kernel/trace/ring_buffer.c |
81019 | +++ b/kernel/trace/ring_buffer.c | 80778 | +++ b/kernel/trace/ring_buffer.c |
81020 | @@ -349,9 +349,9 @@ struct buffer_data_page { | 80779 | @@ -352,9 +352,9 @@ struct buffer_data_page { |
81021 | */ | 80780 | */ |
81022 | struct buffer_page { | 80781 | struct buffer_page { |
81023 | struct list_head list; /* list of buffer pages */ | 80782 | struct list_head list; /* list of buffer pages */ |
@@ -81029,7 +80788,7 @@ index 6989df2..c2265cf 100644 | |||
81029 | unsigned long real_end; /* real end of data */ | 80788 | unsigned long real_end; /* real end of data */ |
81030 | struct buffer_data_page *page; /* Actual data page */ | 80789 | struct buffer_data_page *page; /* Actual data page */ |
81031 | }; | 80790 | }; |
81032 | @@ -464,8 +464,8 @@ struct ring_buffer_per_cpu { | 80791 | @@ -473,8 +473,8 @@ struct ring_buffer_per_cpu { |
81033 | unsigned long last_overrun; | 80792 | unsigned long last_overrun; |
81034 | local_t entries_bytes; | 80793 | local_t entries_bytes; |
81035 | local_t entries; | 80794 | local_t entries; |
@@ -81040,7 +80799,7 @@ index 6989df2..c2265cf 100644 | |||
81040 | local_t dropped_events; | 80799 | local_t dropped_events; |
81041 | local_t committing; | 80800 | local_t committing; |
81042 | local_t commits; | 80801 | local_t commits; |
81043 | @@ -864,8 +864,8 @@ static int rb_tail_page_update(struct ring_buffer_per_cpu *cpu_buffer, | 80802 | @@ -992,8 +992,8 @@ static int rb_tail_page_update(struct ring_buffer_per_cpu *cpu_buffer, |
81044 | * | 80803 | * |
81045 | * We add a counter to the write field to denote this. | 80804 | * We add a counter to the write field to denote this. |
81046 | */ | 80805 | */ |
@@ -81051,7 +80810,7 @@ index 6989df2..c2265cf 100644 | |||
81051 | 80810 | ||
81052 | /* | 80811 | /* |
81053 | * Just make sure we have seen our old_write and synchronize | 80812 | * Just make sure we have seen our old_write and synchronize |
81054 | @@ -893,8 +893,8 @@ static int rb_tail_page_update(struct ring_buffer_per_cpu *cpu_buffer, | 80813 | @@ -1021,8 +1021,8 @@ static int rb_tail_page_update(struct ring_buffer_per_cpu *cpu_buffer, |
81055 | * cmpxchg to only update if an interrupt did not already | 80814 | * cmpxchg to only update if an interrupt did not already |
81056 | * do it for us. If the cmpxchg fails, we don't care. | 80815 | * do it for us. If the cmpxchg fails, we don't care. |
81057 | */ | 80816 | */ |
@@ -81062,7 +80821,7 @@ index 6989df2..c2265cf 100644 | |||
81062 | 80821 | ||
81063 | /* | 80822 | /* |
81064 | * No need to worry about races with clearing out the commit. | 80823 | * No need to worry about races with clearing out the commit. |
81065 | @@ -1253,12 +1253,12 @@ static void rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer); | 80824 | @@ -1386,12 +1386,12 @@ static void rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer); |
81066 | 80825 | ||
81067 | static inline unsigned long rb_page_entries(struct buffer_page *bpage) | 80826 | static inline unsigned long rb_page_entries(struct buffer_page *bpage) |
81068 | { | 80827 | { |
@@ -81077,7 +80836,7 @@ index 6989df2..c2265cf 100644 | |||
81077 | } | 80836 | } |
81078 | 80837 | ||
81079 | static int | 80838 | static int |
81080 | @@ -1353,7 +1353,7 @@ rb_remove_pages(struct ring_buffer_per_cpu *cpu_buffer, unsigned int nr_pages) | 80839 | @@ -1486,7 +1486,7 @@ rb_remove_pages(struct ring_buffer_per_cpu *cpu_buffer, unsigned int nr_pages) |
81081 | * bytes consumed in ring buffer from here. | 80840 | * bytes consumed in ring buffer from here. |
81082 | * Increment overrun to account for the lost events. | 80841 | * Increment overrun to account for the lost events. |
81083 | */ | 80842 | */ |
@@ -81086,7 +80845,7 @@ index 6989df2..c2265cf 100644 | |||
81086 | local_sub(BUF_PAGE_SIZE, &cpu_buffer->entries_bytes); | 80845 | local_sub(BUF_PAGE_SIZE, &cpu_buffer->entries_bytes); |
81087 | } | 80846 | } |
81088 | 80847 | ||
81089 | @@ -1909,7 +1909,7 @@ rb_handle_head_page(struct ring_buffer_per_cpu *cpu_buffer, | 80848 | @@ -2063,7 +2063,7 @@ rb_handle_head_page(struct ring_buffer_per_cpu *cpu_buffer, |
81090 | * it is our responsibility to update | 80849 | * it is our responsibility to update |
81091 | * the counters. | 80850 | * the counters. |
81092 | */ | 80851 | */ |
@@ -81095,7 +80854,7 @@ index 6989df2..c2265cf 100644 | |||
81095 | local_sub(BUF_PAGE_SIZE, &cpu_buffer->entries_bytes); | 80854 | local_sub(BUF_PAGE_SIZE, &cpu_buffer->entries_bytes); |
81096 | 80855 | ||
81097 | /* | 80856 | /* |
81098 | @@ -2059,7 +2059,7 @@ rb_reset_tail(struct ring_buffer_per_cpu *cpu_buffer, | 80857 | @@ -2213,7 +2213,7 @@ rb_reset_tail(struct ring_buffer_per_cpu *cpu_buffer, |
81099 | if (tail == BUF_PAGE_SIZE) | 80858 | if (tail == BUF_PAGE_SIZE) |
81100 | tail_page->real_end = 0; | 80859 | tail_page->real_end = 0; |
81101 | 80860 | ||
@@ -81104,7 +80863,7 @@ index 6989df2..c2265cf 100644 | |||
81104 | return; | 80863 | return; |
81105 | } | 80864 | } |
81106 | 80865 | ||
81107 | @@ -2094,7 +2094,7 @@ rb_reset_tail(struct ring_buffer_per_cpu *cpu_buffer, | 80866 | @@ -2248,7 +2248,7 @@ rb_reset_tail(struct ring_buffer_per_cpu *cpu_buffer, |
81108 | rb_event_set_padding(event); | 80867 | rb_event_set_padding(event); |
81109 | 80868 | ||
81110 | /* Set the write back to the previous setting */ | 80869 | /* Set the write back to the previous setting */ |
@@ -81113,7 +80872,7 @@ index 6989df2..c2265cf 100644 | |||
81113 | return; | 80872 | return; |
81114 | } | 80873 | } |
81115 | 80874 | ||
81116 | @@ -2106,7 +2106,7 @@ rb_reset_tail(struct ring_buffer_per_cpu *cpu_buffer, | 80875 | @@ -2260,7 +2260,7 @@ rb_reset_tail(struct ring_buffer_per_cpu *cpu_buffer, |
81117 | 80876 | ||
81118 | /* Set write to end of buffer */ | 80877 | /* Set write to end of buffer */ |
81119 | length = (tail + length) - BUF_PAGE_SIZE; | 80878 | length = (tail + length) - BUF_PAGE_SIZE; |
@@ -81122,7 +80881,7 @@ index 6989df2..c2265cf 100644 | |||
81122 | } | 80881 | } |
81123 | 80882 | ||
81124 | /* | 80883 | /* |
81125 | @@ -2132,7 +2132,7 @@ rb_move_tail(struct ring_buffer_per_cpu *cpu_buffer, | 80884 | @@ -2286,7 +2286,7 @@ rb_move_tail(struct ring_buffer_per_cpu *cpu_buffer, |
81126 | * about it. | 80885 | * about it. |
81127 | */ | 80886 | */ |
81128 | if (unlikely(next_page == commit_page)) { | 80887 | if (unlikely(next_page == commit_page)) { |
@@ -81131,7 +80890,7 @@ index 6989df2..c2265cf 100644 | |||
81131 | goto out_reset; | 80890 | goto out_reset; |
81132 | } | 80891 | } |
81133 | 80892 | ||
81134 | @@ -2188,7 +2188,7 @@ rb_move_tail(struct ring_buffer_per_cpu *cpu_buffer, | 80893 | @@ -2342,7 +2342,7 @@ rb_move_tail(struct ring_buffer_per_cpu *cpu_buffer, |
81135 | cpu_buffer->tail_page) && | 80894 | cpu_buffer->tail_page) && |
81136 | (cpu_buffer->commit_page == | 80895 | (cpu_buffer->commit_page == |
81137 | cpu_buffer->reader_page))) { | 80896 | cpu_buffer->reader_page))) { |
@@ -81140,7 +80899,7 @@ index 6989df2..c2265cf 100644 | |||
81140 | goto out_reset; | 80899 | goto out_reset; |
81141 | } | 80900 | } |
81142 | } | 80901 | } |
81143 | @@ -2236,7 +2236,7 @@ __rb_reserve_next(struct ring_buffer_per_cpu *cpu_buffer, | 80902 | @@ -2390,7 +2390,7 @@ __rb_reserve_next(struct ring_buffer_per_cpu *cpu_buffer, |
81144 | length += RB_LEN_TIME_EXTEND; | 80903 | length += RB_LEN_TIME_EXTEND; |
81145 | 80904 | ||
81146 | tail_page = cpu_buffer->tail_page; | 80905 | tail_page = cpu_buffer->tail_page; |
@@ -81149,7 +80908,7 @@ index 6989df2..c2265cf 100644 | |||
81149 | 80908 | ||
81150 | /* set write to only the index of the write */ | 80909 | /* set write to only the index of the write */ |
81151 | write &= RB_WRITE_MASK; | 80910 | write &= RB_WRITE_MASK; |
81152 | @@ -2253,7 +2253,7 @@ __rb_reserve_next(struct ring_buffer_per_cpu *cpu_buffer, | 80911 | @@ -2407,7 +2407,7 @@ __rb_reserve_next(struct ring_buffer_per_cpu *cpu_buffer, |
81153 | kmemcheck_annotate_bitfield(event, bitfield); | 80912 | kmemcheck_annotate_bitfield(event, bitfield); |
81154 | rb_update_event(cpu_buffer, event, length, add_timestamp, delta); | 80913 | rb_update_event(cpu_buffer, event, length, add_timestamp, delta); |
81155 | 80914 | ||
@@ -81158,7 +80917,7 @@ index 6989df2..c2265cf 100644 | |||
81158 | 80917 | ||
81159 | /* | 80918 | /* |
81160 | * If this is the first commit on the page, then update | 80919 | * If this is the first commit on the page, then update |
81161 | @@ -2286,7 +2286,7 @@ rb_try_to_discard(struct ring_buffer_per_cpu *cpu_buffer, | 80920 | @@ -2440,7 +2440,7 @@ rb_try_to_discard(struct ring_buffer_per_cpu *cpu_buffer, |
81162 | 80921 | ||
81163 | if (bpage->page == (void *)addr && rb_page_write(bpage) == old_index) { | 80922 | if (bpage->page == (void *)addr && rb_page_write(bpage) == old_index) { |
81164 | unsigned long write_mask = | 80923 | unsigned long write_mask = |
@@ -81167,7 +80926,7 @@ index 6989df2..c2265cf 100644 | |||
81167 | unsigned long event_length = rb_event_length(event); | 80926 | unsigned long event_length = rb_event_length(event); |
81168 | /* | 80927 | /* |
81169 | * This is on the tail page. It is possible that | 80928 | * This is on the tail page. It is possible that |
81170 | @@ -2296,7 +2296,7 @@ rb_try_to_discard(struct ring_buffer_per_cpu *cpu_buffer, | 80929 | @@ -2450,7 +2450,7 @@ rb_try_to_discard(struct ring_buffer_per_cpu *cpu_buffer, |
81171 | */ | 80930 | */ |
81172 | old_index += write_mask; | 80931 | old_index += write_mask; |
81173 | new_index += write_mask; | 80932 | new_index += write_mask; |
@@ -81176,7 +80935,7 @@ index 6989df2..c2265cf 100644 | |||
81176 | if (index == old_index) { | 80935 | if (index == old_index) { |
81177 | /* update counters */ | 80936 | /* update counters */ |
81178 | local_sub(event_length, &cpu_buffer->entries_bytes); | 80937 | local_sub(event_length, &cpu_buffer->entries_bytes); |
81179 | @@ -2670,7 +2670,7 @@ rb_decrement_entry(struct ring_buffer_per_cpu *cpu_buffer, | 80938 | @@ -2842,7 +2842,7 @@ rb_decrement_entry(struct ring_buffer_per_cpu *cpu_buffer, |
81180 | 80939 | ||
81181 | /* Do the likely case first */ | 80940 | /* Do the likely case first */ |
81182 | if (likely(bpage->page == (void *)addr)) { | 80941 | if (likely(bpage->page == (void *)addr)) { |
@@ -81185,7 +80944,7 @@ index 6989df2..c2265cf 100644 | |||
81185 | return; | 80944 | return; |
81186 | } | 80945 | } |
81187 | 80946 | ||
81188 | @@ -2682,7 +2682,7 @@ rb_decrement_entry(struct ring_buffer_per_cpu *cpu_buffer, | 80947 | @@ -2854,7 +2854,7 @@ rb_decrement_entry(struct ring_buffer_per_cpu *cpu_buffer, |
81189 | start = bpage; | 80948 | start = bpage; |
81190 | do { | 80949 | do { |
81191 | if (bpage->page == (void *)addr) { | 80950 | if (bpage->page == (void *)addr) { |
@@ -81194,7 +80953,7 @@ index 6989df2..c2265cf 100644 | |||
81194 | return; | 80953 | return; |
81195 | } | 80954 | } |
81196 | rb_inc_page(cpu_buffer, &bpage); | 80955 | rb_inc_page(cpu_buffer, &bpage); |
81197 | @@ -2964,7 +2964,7 @@ static inline unsigned long | 80956 | @@ -3138,7 +3138,7 @@ static inline unsigned long |
81198 | rb_num_of_entries(struct ring_buffer_per_cpu *cpu_buffer) | 80957 | rb_num_of_entries(struct ring_buffer_per_cpu *cpu_buffer) |
81199 | { | 80958 | { |
81200 | return local_read(&cpu_buffer->entries) - | 80959 | return local_read(&cpu_buffer->entries) - |
@@ -81203,7 +80962,7 @@ index 6989df2..c2265cf 100644 | |||
81203 | } | 80962 | } |
81204 | 80963 | ||
81205 | /** | 80964 | /** |
81206 | @@ -3053,7 +3053,7 @@ unsigned long ring_buffer_overrun_cpu(struct ring_buffer *buffer, int cpu) | 80965 | @@ -3227,7 +3227,7 @@ unsigned long ring_buffer_overrun_cpu(struct ring_buffer *buffer, int cpu) |
81207 | return 0; | 80966 | return 0; |
81208 | 80967 | ||
81209 | cpu_buffer = buffer->buffers[cpu]; | 80968 | cpu_buffer = buffer->buffers[cpu]; |
@@ -81212,7 +80971,7 @@ index 6989df2..c2265cf 100644 | |||
81212 | 80971 | ||
81213 | return ret; | 80972 | return ret; |
81214 | } | 80973 | } |
81215 | @@ -3076,7 +3076,7 @@ ring_buffer_commit_overrun_cpu(struct ring_buffer *buffer, int cpu) | 80974 | @@ -3250,7 +3250,7 @@ ring_buffer_commit_overrun_cpu(struct ring_buffer *buffer, int cpu) |
81216 | return 0; | 80975 | return 0; |
81217 | 80976 | ||
81218 | cpu_buffer = buffer->buffers[cpu]; | 80977 | cpu_buffer = buffer->buffers[cpu]; |
@@ -81221,7 +80980,7 @@ index 6989df2..c2265cf 100644 | |||
81221 | 80980 | ||
81222 | return ret; | 80981 | return ret; |
81223 | } | 80982 | } |
81224 | @@ -3161,7 +3161,7 @@ unsigned long ring_buffer_overruns(struct ring_buffer *buffer) | 80983 | @@ -3335,7 +3335,7 @@ unsigned long ring_buffer_overruns(struct ring_buffer *buffer) |
81225 | /* if you care about this being correct, lock the buffer */ | 80984 | /* if you care about this being correct, lock the buffer */ |
81226 | for_each_buffer_cpu(buffer, cpu) { | 80985 | for_each_buffer_cpu(buffer, cpu) { |
81227 | cpu_buffer = buffer->buffers[cpu]; | 80986 | cpu_buffer = buffer->buffers[cpu]; |
@@ -81230,7 +80989,7 @@ index 6989df2..c2265cf 100644 | |||
81230 | } | 80989 | } |
81231 | 80990 | ||
81232 | return overruns; | 80991 | return overruns; |
81233 | @@ -3337,8 +3337,8 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer) | 80992 | @@ -3511,8 +3511,8 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer) |
81234 | /* | 80993 | /* |
81235 | * Reset the reader page to size zero. | 80994 | * Reset the reader page to size zero. |
81236 | */ | 80995 | */ |
@@ -81241,7 +81000,7 @@ index 6989df2..c2265cf 100644 | |||
81241 | local_set(&cpu_buffer->reader_page->page->commit, 0); | 81000 | local_set(&cpu_buffer->reader_page->page->commit, 0); |
81242 | cpu_buffer->reader_page->real_end = 0; | 81001 | cpu_buffer->reader_page->real_end = 0; |
81243 | 81002 | ||
81244 | @@ -3372,7 +3372,7 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer) | 81003 | @@ -3546,7 +3546,7 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer) |
81245 | * want to compare with the last_overrun. | 81004 | * want to compare with the last_overrun. |
81246 | */ | 81005 | */ |
81247 | smp_mb(); | 81006 | smp_mb(); |
@@ -81250,7 +81009,7 @@ index 6989df2..c2265cf 100644 | |||
81250 | 81009 | ||
81251 | /* | 81010 | /* |
81252 | * Here's the tricky part. | 81011 | * Here's the tricky part. |
81253 | @@ -3942,8 +3942,8 @@ rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer) | 81012 | @@ -4116,8 +4116,8 @@ rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer) |
81254 | 81013 | ||
81255 | cpu_buffer->head_page | 81014 | cpu_buffer->head_page |
81256 | = list_entry(cpu_buffer->pages, struct buffer_page, list); | 81015 | = list_entry(cpu_buffer->pages, struct buffer_page, list); |
@@ -81261,7 +81020,7 @@ index 6989df2..c2265cf 100644 | |||
81261 | local_set(&cpu_buffer->head_page->page->commit, 0); | 81020 | local_set(&cpu_buffer->head_page->page->commit, 0); |
81262 | 81021 | ||
81263 | cpu_buffer->head_page->read = 0; | 81022 | cpu_buffer->head_page->read = 0; |
81264 | @@ -3953,14 +3953,14 @@ rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer) | 81023 | @@ -4127,14 +4127,14 @@ rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer) |
81265 | 81024 | ||
81266 | INIT_LIST_HEAD(&cpu_buffer->reader_page->list); | 81025 | INIT_LIST_HEAD(&cpu_buffer->reader_page->list); |
81267 | INIT_LIST_HEAD(&cpu_buffer->new_pages); | 81026 | INIT_LIST_HEAD(&cpu_buffer->new_pages); |
@@ -81280,7 +81039,7 @@ index 6989df2..c2265cf 100644 | |||
81280 | local_set(&cpu_buffer->dropped_events, 0); | 81039 | local_set(&cpu_buffer->dropped_events, 0); |
81281 | local_set(&cpu_buffer->entries, 0); | 81040 | local_set(&cpu_buffer->entries, 0); |
81282 | local_set(&cpu_buffer->committing, 0); | 81041 | local_set(&cpu_buffer->committing, 0); |
81283 | @@ -4364,8 +4364,8 @@ int ring_buffer_read_page(struct ring_buffer *buffer, | 81042 | @@ -4538,8 +4538,8 @@ int ring_buffer_read_page(struct ring_buffer *buffer, |
81284 | rb_init_page(bpage); | 81043 | rb_init_page(bpage); |
81285 | bpage = reader->page; | 81044 | bpage = reader->page; |
81286 | reader->page = *data_page; | 81045 | reader->page = *data_page; |
@@ -81292,77 +81051,36 @@ index 6989df2..c2265cf 100644 | |||
81292 | *data_page = bpage; | 81051 | *data_page = bpage; |
81293 | 81052 | ||
81294 | diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c | 81053 | diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c |
81295 | index 3f28192..9afb0a9 100644 | 81054 | index 0b936d8..306a7eb 100644 |
81296 | --- a/kernel/trace/trace.c | 81055 | --- a/kernel/trace/trace.c |
81297 | +++ b/kernel/trace/trace.c | 81056 | +++ b/kernel/trace/trace.c |
81298 | @@ -683,7 +683,15 @@ __update_max_tr(struct trace_array *tr, struct task_struct *tsk, int cpu) | 81057 | @@ -3302,7 +3302,7 @@ int trace_keep_overwrite(struct tracer *tracer, u32 mask, int set) |
81299 | |||
81300 | memcpy(max_data->comm, tsk->comm, TASK_COMM_LEN); | ||
81301 | max_data->pid = tsk->pid; | ||
81302 | - max_data->uid = task_uid(tsk); | ||
81303 | + /* | ||
81304 | + * If tsk == current, then use current_uid(), as that does not use | ||
81305 | + * RCU. The irq tracer can be called out of RCU scope. | ||
81306 | + */ | ||
81307 | + if (tsk == current) | ||
81308 | + max_data->uid = current_uid(); | ||
81309 | + else | ||
81310 | + max_data->uid = task_uid(tsk); | ||
81311 | + | ||
81312 | max_data->nice = tsk->static_prio - 20 - MAX_RT_PRIO; | ||
81313 | max_data->policy = tsk->policy; | ||
81314 | max_data->rt_priority = tsk->rt_priority; | ||
81315 | @@ -2893,7 +2901,7 @@ int trace_keep_overwrite(struct tracer *tracer, u32 mask, int set) | ||
81316 | return 0; | 81058 | return 0; |
81317 | } | 81059 | } |
81318 | 81060 | ||
81319 | -int set_tracer_flag(unsigned int mask, int enabled) | 81061 | -int set_tracer_flag(struct trace_array *tr, unsigned int mask, int enabled) |
81320 | +int set_tracer_flag(unsigned long mask, int enabled) | 81062 | +int set_tracer_flag(struct trace_array *tr, unsigned long mask, int enabled) |
81321 | { | 81063 | { |
81322 | /* do nothing if flag is already set */ | 81064 | /* do nothing if flag is already set */ |
81323 | if (!!(trace_flags & mask) == !!enabled) | 81065 | if (!!(trace_flags & mask) == !!enabled) |
81324 | @@ -4637,10 +4645,9 @@ static const struct file_operations tracing_dyn_info_fops = { | ||
81325 | }; | ||
81326 | #endif | ||
81327 | |||
81328 | -static struct dentry *d_tracer; | ||
81329 | - | ||
81330 | struct dentry *tracing_init_dentry(void) | ||
81331 | { | ||
81332 | + static struct dentry *d_tracer; | ||
81333 | static int once; | ||
81334 | |||
81335 | if (d_tracer) | ||
81336 | @@ -4660,10 +4667,9 @@ struct dentry *tracing_init_dentry(void) | ||
81337 | return d_tracer; | ||
81338 | } | ||
81339 | |||
81340 | -static struct dentry *d_percpu; | ||
81341 | - | ||
81342 | static struct dentry *tracing_dentry_percpu(void) | ||
81343 | { | ||
81344 | + static struct dentry *d_percpu; | ||
81345 | static int once; | ||
81346 | struct dentry *d_tracer; | ||
81347 | |||
81348 | diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h | 81066 | diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h |
81349 | index 2081971..09f861e 100644 | 81067 | index 51b4448..7be601f 100644 |
81350 | --- a/kernel/trace/trace.h | 81068 | --- a/kernel/trace/trace.h |
81351 | +++ b/kernel/trace/trace.h | 81069 | +++ b/kernel/trace/trace.h |
81352 | @@ -948,7 +948,7 @@ extern const char *__stop___trace_bprintk_fmt[]; | 81070 | @@ -1035,7 +1035,7 @@ extern const char *__stop___trace_bprintk_fmt[]; |
81353 | void trace_printk_init_buffers(void); | 81071 | void trace_printk_init_buffers(void); |
81354 | void trace_printk_start_comm(void); | 81072 | void trace_printk_start_comm(void); |
81355 | int trace_keep_overwrite(struct tracer *tracer, u32 mask, int set); | 81073 | int trace_keep_overwrite(struct tracer *tracer, u32 mask, int set); |
81356 | -int set_tracer_flag(unsigned int mask, int enabled); | 81074 | -int set_tracer_flag(struct trace_array *tr, unsigned int mask, int enabled); |
81357 | +int set_tracer_flag(unsigned long mask, int enabled); | 81075 | +int set_tracer_flag(struct trace_array *tr, unsigned long mask, int enabled); |
81358 | 81076 | ||
81359 | #undef FTRACE_ENTRY | 81077 | /* |
81360 | #define FTRACE_ENTRY(call, struct_name, id, tstruct, print, filter) \ | 81078 | * Normal trace_printk() and friends allocates special buffers |
81361 | diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c | 81079 | diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c |
81362 | index 57e9b28..eebe41c 100644 | 81080 | index 6dfd48b..a6d88d0 100644 |
81363 | --- a/kernel/trace/trace_events.c | 81081 | --- a/kernel/trace/trace_events.c |
81364 | +++ b/kernel/trace/trace_events.c | 81082 | +++ b/kernel/trace/trace_events.c |
81365 | @@ -1329,10 +1329,6 @@ static LIST_HEAD(ftrace_module_file_list); | 81083 | @@ -1731,10 +1731,6 @@ static LIST_HEAD(ftrace_module_file_list); |
81366 | struct ftrace_module_file_ops { | 81084 | struct ftrace_module_file_ops { |
81367 | struct list_head list; | 81085 | struct list_head list; |
81368 | struct module *mod; | 81086 | struct module *mod; |
@@ -81373,7 +81091,7 @@ index 57e9b28..eebe41c 100644 | |||
81373 | }; | 81091 | }; |
81374 | 81092 | ||
81375 | static struct ftrace_module_file_ops * | 81093 | static struct ftrace_module_file_ops * |
81376 | @@ -1353,17 +1349,12 @@ trace_create_file_ops(struct module *mod) | 81094 | @@ -1775,17 +1771,12 @@ trace_create_file_ops(struct module *mod) |
81377 | 81095 | ||
81378 | file_ops->mod = mod; | 81096 | file_ops->mod = mod; |
81379 | 81097 | ||
@@ -81397,19 +81115,19 @@ index 57e9b28..eebe41c 100644 | |||
81397 | 81115 | ||
81398 | list_add(&file_ops->list, &ftrace_module_file_list); | 81116 | list_add(&file_ops->list, &ftrace_module_file_list); |
81399 | 81117 | ||
81400 | @@ -1387,8 +1378,8 @@ static void trace_module_add_events(struct module *mod) | 81118 | @@ -1878,8 +1869,8 @@ __trace_add_new_mod_event(struct ftrace_event_call *call, |
81401 | 81119 | struct ftrace_module_file_ops *file_ops) | |
81402 | for_each_event(call, start, end) { | 81120 | { |
81403 | __trace_add_event_call(*call, mod, | 81121 | return __trace_add_new_event(call, tr, |
81404 | - &file_ops->id, &file_ops->enable, | 81122 | - &file_ops->id, &file_ops->enable, |
81405 | - &file_ops->filter, &file_ops->format); | 81123 | - &file_ops->filter, &file_ops->format); |
81406 | + &mod->trace_id, &mod->trace_enable, | 81124 | + &file_ops->mod->trace_id, &file_ops->mod->trace_enable, |
81407 | + &mod->trace_filter, &mod->trace_format); | 81125 | + &file_ops->mod->trace_filter, &file_ops->mod->trace_format); |
81408 | } | ||
81409 | } | 81126 | } |
81410 | 81127 | ||
81128 | #else | ||
81411 | diff --git a/kernel/trace/trace_mmiotrace.c b/kernel/trace/trace_mmiotrace.c | 81129 | diff --git a/kernel/trace/trace_mmiotrace.c b/kernel/trace/trace_mmiotrace.c |
81412 | index fd3c8aa..5f324a6 100644 | 81130 | index a5e8f48..a9690d2 100644 |
81413 | --- a/kernel/trace/trace_mmiotrace.c | 81131 | --- a/kernel/trace/trace_mmiotrace.c |
81414 | +++ b/kernel/trace/trace_mmiotrace.c | 81132 | +++ b/kernel/trace/trace_mmiotrace.c |
81415 | @@ -24,7 +24,7 @@ struct header_iter { | 81133 | @@ -24,7 +24,7 @@ struct header_iter { |
@@ -81427,7 +81145,7 @@ index fd3c8aa..5f324a6 100644 | |||
81427 | { | 81145 | { |
81428 | - unsigned long cnt = atomic_xchg(&dropped_count, 0); | 81146 | - unsigned long cnt = atomic_xchg(&dropped_count, 0); |
81429 | + unsigned long cnt = atomic_xchg_unchecked(&dropped_count, 0); | 81147 | + unsigned long cnt = atomic_xchg_unchecked(&dropped_count, 0); |
81430 | unsigned long over = ring_buffer_overruns(iter->tr->buffer); | 81148 | unsigned long over = ring_buffer_overruns(iter->trace_buffer->buffer); |
81431 | 81149 | ||
81432 | if (over > prev_overruns) | 81150 | if (over > prev_overruns) |
81433 | @@ -317,7 +317,7 @@ static void __trace_mmiotrace_rw(struct trace_array *tr, | 81151 | @@ -317,7 +317,7 @@ static void __trace_mmiotrace_rw(struct trace_array *tr, |
@@ -81449,10 +81167,10 @@ index fd3c8aa..5f324a6 100644 | |||
81449 | } | 81167 | } |
81450 | entry = ring_buffer_event_data(event); | 81168 | entry = ring_buffer_event_data(event); |
81451 | diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c | 81169 | diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c |
81452 | index 697e88d..1a79993 100644 | 81170 | index bb922d9..2a54a257 100644 |
81453 | --- a/kernel/trace/trace_output.c | 81171 | --- a/kernel/trace/trace_output.c |
81454 | +++ b/kernel/trace/trace_output.c | 81172 | +++ b/kernel/trace/trace_output.c |
81455 | @@ -278,7 +278,7 @@ int trace_seq_path(struct trace_seq *s, const struct path *path) | 81173 | @@ -294,7 +294,7 @@ int trace_seq_path(struct trace_seq *s, const struct path *path) |
81456 | 81174 | ||
81457 | p = d_path(path, s->buffer + s->len, PAGE_SIZE - s->len); | 81175 | p = d_path(path, s->buffer + s->len, PAGE_SIZE - s->len); |
81458 | if (!IS_ERR(p)) { | 81176 | if (!IS_ERR(p)) { |
@@ -81461,7 +81179,7 @@ index 697e88d..1a79993 100644 | |||
81461 | if (p) { | 81179 | if (p) { |
81462 | s->len = p - s->buffer; | 81180 | s->len = p - s->buffer; |
81463 | return 1; | 81181 | return 1; |
81464 | @@ -851,14 +851,16 @@ int register_ftrace_event(struct trace_event *event) | 81182 | @@ -893,14 +893,16 @@ int register_ftrace_event(struct trace_event *event) |
81465 | goto out; | 81183 | goto out; |
81466 | } | 81184 | } |
81467 | 81185 | ||
@@ -81496,7 +81214,7 @@ index b20428c..4845a10 100644 | |||
81496 | 81214 | ||
81497 | local_irq_save(flags); | 81215 | local_irq_save(flags); |
81498 | diff --git a/kernel/user_namespace.c b/kernel/user_namespace.c | 81216 | diff --git a/kernel/user_namespace.c b/kernel/user_namespace.c |
81499 | index e134d8f..a018cdd 100644 | 81217 | index d8c30db..e065e89 100644 |
81500 | --- a/kernel/user_namespace.c | 81218 | --- a/kernel/user_namespace.c |
81501 | +++ b/kernel/user_namespace.c | 81219 | +++ b/kernel/user_namespace.c |
81502 | @@ -853,7 +853,7 @@ static int userns_install(struct nsproxy *nsproxy, void *ns) | 81220 | @@ -853,7 +853,7 @@ static int userns_install(struct nsproxy *nsproxy, void *ns) |
@@ -81522,10 +81240,10 @@ index 4f69f9a..7c6f8f8 100644 | |||
81522 | memcpy(&uts_table, table, sizeof(uts_table)); | 81240 | memcpy(&uts_table, table, sizeof(uts_table)); |
81523 | uts_table.data = get_uts(table, write); | 81241 | uts_table.data = get_uts(table, write); |
81524 | diff --git a/kernel/watchdog.c b/kernel/watchdog.c | 81242 | diff --git a/kernel/watchdog.c b/kernel/watchdog.c |
81525 | index 4a94467..80a6f9c 100644 | 81243 | index 05039e3..17490c7 100644 |
81526 | --- a/kernel/watchdog.c | 81244 | --- a/kernel/watchdog.c |
81527 | +++ b/kernel/watchdog.c | 81245 | +++ b/kernel/watchdog.c |
81528 | @@ -526,7 +526,7 @@ int proc_dowatchdog(struct ctl_table *table, int write, | 81246 | @@ -531,7 +531,7 @@ int proc_dowatchdog(struct ctl_table *table, int write, |
81529 | } | 81247 | } |
81530 | #endif /* CONFIG_SYSCTL */ | 81248 | #endif /* CONFIG_SYSCTL */ |
81531 | 81249 | ||
@@ -81534,8 +81252,21 @@ index 4a94467..80a6f9c 100644 | |||
81534 | .store = &softlockup_watchdog, | 81252 | .store = &softlockup_watchdog, |
81535 | .thread_should_run = watchdog_should_run, | 81253 | .thread_should_run = watchdog_should_run, |
81536 | .thread_fn = watchdog, | 81254 | .thread_fn = watchdog, |
81255 | diff --git a/kernel/workqueue.c b/kernel/workqueue.c | ||
81256 | index ee8e29a..410568e 100644 | ||
81257 | --- a/kernel/workqueue.c | ||
81258 | +++ b/kernel/workqueue.c | ||
81259 | @@ -4584,7 +4584,7 @@ static void rebind_workers(struct worker_pool *pool) | ||
81260 | WARN_ON_ONCE(!(worker_flags & WORKER_UNBOUND)); | ||
81261 | worker_flags |= WORKER_REBOUND; | ||
81262 | worker_flags &= ~WORKER_UNBOUND; | ||
81263 | - ACCESS_ONCE(worker->flags) = worker_flags; | ||
81264 | + ACCESS_ONCE_RW(worker->flags) = worker_flags; | ||
81265 | } | ||
81266 | |||
81267 | spin_unlock_irq(&pool->lock); | ||
81537 | diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug | 81268 | diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug |
81538 | index 28be08c..47bab92 100644 | 81269 | index 74fdc5c..3310593 100644 |
81539 | --- a/lib/Kconfig.debug | 81270 | --- a/lib/Kconfig.debug |
81540 | +++ b/lib/Kconfig.debug | 81271 | +++ b/lib/Kconfig.debug |
81541 | @@ -549,7 +549,7 @@ config DEBUG_MUTEXES | 81272 | @@ -549,7 +549,7 @@ config DEBUG_MUTEXES |
@@ -81573,7 +81304,16 @@ index 28be08c..47bab92 100644 | |||
81573 | select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM_UNWIND | 81304 | select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM_UNWIND |
81574 | select KALLSYMS | 81305 | select KALLSYMS |
81575 | select KALLSYMS_ALL | 81306 | select KALLSYMS_ALL |
81576 | @@ -1310,7 +1311,7 @@ config INTERVAL_TREE_TEST | 81307 | @@ -1298,7 +1299,7 @@ config ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS |
81308 | config DEBUG_STRICT_USER_COPY_CHECKS | ||
81309 | bool "Strict user copy size checks" | ||
81310 | depends on ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS | ||
81311 | - depends on DEBUG_KERNEL && !TRACE_BRANCH_PROFILING | ||
81312 | + depends on DEBUG_KERNEL && !TRACE_BRANCH_PROFILING && !PAX_SIZE_OVERFLOW | ||
81313 | help | ||
81314 | Enabling this option turns a certain set of sanity checks for user | ||
81315 | copy operations into compile time failures. | ||
81316 | @@ -1328,7 +1329,7 @@ config INTERVAL_TREE_TEST | ||
81577 | 81317 | ||
81578 | config PROVIDE_OHCI1394_DMA_INIT | 81318 | config PROVIDE_OHCI1394_DMA_INIT |
81579 | bool "Remote debugging over FireWire early on boot" | 81319 | bool "Remote debugging over FireWire early on boot" |
@@ -81582,7 +81322,7 @@ index 28be08c..47bab92 100644 | |||
81582 | help | 81322 | help |
81583 | If you want to debug problems which hang or crash the kernel early | 81323 | If you want to debug problems which hang or crash the kernel early |
81584 | on boot and the crashing machine has a FireWire port, you can use | 81324 | on boot and the crashing machine has a FireWire port, you can use |
81585 | @@ -1339,7 +1340,7 @@ config PROVIDE_OHCI1394_DMA_INIT | 81325 | @@ -1357,7 +1358,7 @@ config PROVIDE_OHCI1394_DMA_INIT |
81586 | 81326 | ||
81587 | config FIREWIRE_OHCI_REMOTE_DMA | 81327 | config FIREWIRE_OHCI_REMOTE_DMA |
81588 | bool "Remote debugging over FireWire with firewire-ohci" | 81328 | bool "Remote debugging over FireWire with firewire-ohci" |
@@ -81592,10 +81332,10 @@ index 28be08c..47bab92 100644 | |||
81592 | This option lets you use the FireWire bus for remote debugging | 81332 | This option lets you use the FireWire bus for remote debugging |
81593 | with help of the firewire-ohci driver. It enables unfiltered | 81333 | with help of the firewire-ohci driver. It enables unfiltered |
81594 | diff --git a/lib/Makefile b/lib/Makefile | 81334 | diff --git a/lib/Makefile b/lib/Makefile |
81595 | index 6e2cc56..9b13738 100644 | 81335 | index c55a037..fb46e3b 100644 |
81596 | --- a/lib/Makefile | 81336 | --- a/lib/Makefile |
81597 | +++ b/lib/Makefile | 81337 | +++ b/lib/Makefile |
81598 | @@ -47,7 +47,7 @@ obj-$(CONFIG_GENERIC_HWEIGHT) += hweight.o | 81338 | @@ -50,7 +50,7 @@ obj-$(CONFIG_GENERIC_HWEIGHT) += hweight.o |
81599 | 81339 | ||
81600 | obj-$(CONFIG_BTREE) += btree.o | 81340 | obj-$(CONFIG_BTREE) += btree.o |
81601 | obj-$(CONFIG_DEBUG_PREEMPT) += smp_processor_id.o | 81341 | obj-$(CONFIG_DEBUG_PREEMPT) += smp_processor_id.o |
@@ -81786,7 +81526,7 @@ index bd2bea9..6b3c95e 100644 | |||
81786 | return false; | 81526 | return false; |
81787 | 81527 | ||
81788 | diff --git a/lib/kobject.c b/lib/kobject.c | 81528 | diff --git a/lib/kobject.c b/lib/kobject.c |
81789 | index a654866..d8bb115 100644 | 81529 | index b7e29a6..2f3ca75 100644 |
81790 | --- a/lib/kobject.c | 81530 | --- a/lib/kobject.c |
81791 | +++ b/lib/kobject.c | 81531 | +++ b/lib/kobject.c |
81792 | @@ -805,7 +805,7 @@ static struct kset *kset_create(const char *name, | 81532 | @@ -805,7 +805,7 @@ static struct kset *kset_create(const char *name, |
@@ -82038,8 +81778,22 @@ index d23762e..e21eab2 100644 | |||
82038 | { | 81778 | { |
82039 | phys_addr_t paddr = dma_to_phys(hwdev, dev_addr); | 81779 | phys_addr_t paddr = dma_to_phys(hwdev, dev_addr); |
82040 | 81780 | ||
81781 | diff --git a/lib/usercopy.c b/lib/usercopy.c | ||
81782 | index 4f5b1dd..7cab418 100644 | ||
81783 | --- a/lib/usercopy.c | ||
81784 | +++ b/lib/usercopy.c | ||
81785 | @@ -7,3 +7,9 @@ void copy_from_user_overflow(void) | ||
81786 | WARN(1, "Buffer overflow detected!\n"); | ||
81787 | } | ||
81788 | EXPORT_SYMBOL(copy_from_user_overflow); | ||
81789 | + | ||
81790 | +void copy_to_user_overflow(void) | ||
81791 | +{ | ||
81792 | + WARN(1, "Buffer overflow detected!\n"); | ||
81793 | +} | ||
81794 | +EXPORT_SYMBOL(copy_to_user_overflow); | ||
82041 | diff --git a/lib/vsprintf.c b/lib/vsprintf.c | 81795 | diff --git a/lib/vsprintf.c b/lib/vsprintf.c |
82042 | index 0d62fd7..b7bc911 100644 | 81796 | index e149c64..24aa71a 100644 |
82043 | --- a/lib/vsprintf.c | 81797 | --- a/lib/vsprintf.c |
82044 | +++ b/lib/vsprintf.c | 81798 | +++ b/lib/vsprintf.c |
82045 | @@ -16,6 +16,9 @@ | 81799 | @@ -16,6 +16,9 @@ |
@@ -82052,7 +81806,7 @@ index 0d62fd7..b7bc911 100644 | |||
82052 | #include <stdarg.h> | 81806 | #include <stdarg.h> |
82053 | #include <linux/module.h> /* for KSYM_SYMBOL_LEN */ | 81807 | #include <linux/module.h> /* for KSYM_SYMBOL_LEN */ |
82054 | #include <linux/types.h> | 81808 | #include <linux/types.h> |
82055 | @@ -974,7 +977,11 @@ char *netdev_feature_string(char *buf, char *end, const u8 *addr, | 81809 | @@ -981,7 +984,11 @@ char *netdev_feature_string(char *buf, char *end, const u8 *addr, |
82056 | return number(buf, end, *(const netdev_features_t *)addr, spec); | 81810 | return number(buf, end, *(const netdev_features_t *)addr, spec); |
82057 | } | 81811 | } |
82058 | 81812 | ||
@@ -82064,16 +81818,15 @@ index 0d62fd7..b7bc911 100644 | |||
82064 | 81818 | ||
82065 | /* | 81819 | /* |
82066 | * Show a '%p' thing. A kernel extension is that the '%p' is followed | 81820 | * Show a '%p' thing. A kernel extension is that the '%p' is followed |
82067 | @@ -988,6 +995,8 @@ int kptr_restrict __read_mostly; | 81821 | @@ -994,6 +1001,7 @@ int kptr_restrict __read_mostly; |
81822 | * - 'f' For simple symbolic function names without offset | ||
82068 | * - 'S' For symbolic direct pointers with offset | 81823 | * - 'S' For symbolic direct pointers with offset |
82069 | * - 's' For symbolic direct pointers without offset | 81824 | * - 's' For symbolic direct pointers without offset |
82070 | * - 'B' For backtraced symbolic direct pointers with offset | ||
82071 | + * - 'A' For symbolic direct pointers with offset approved for use with GRKERNSEC_HIDESYM | 81825 | + * - 'A' For symbolic direct pointers with offset approved for use with GRKERNSEC_HIDESYM |
82072 | + * - 'a' For symbolic direct pointers without offset approved for use with GRKERNSEC_HIDESYM | 81826 | * - '[FfSs]R' as above with __builtin_extract_return_addr() translation |
81827 | * - 'B' For backtraced symbolic direct pointers with offset | ||
82073 | * - 'R' For decoded struct resource, e.g., [mem 0x0-0x1f 64bit pref] | 81828 | * - 'R' For decoded struct resource, e.g., [mem 0x0-0x1f 64bit pref] |
82074 | * - 'r' For raw struct resource, e.g., [mem 0x0-0x1f flags 0x201] | 81829 | @@ -1052,12 +1060,12 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, |
82075 | * - 'M' For a 6-byte MAC address, it prints the address in the | ||
82076 | @@ -1044,12 +1053,12 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, | ||
82077 | 81830 | ||
82078 | if (!ptr && *fmt != 'K') { | 81831 | if (!ptr && *fmt != 'K') { |
82079 | /* | 81832 | /* |
@@ -82088,20 +81841,20 @@ index 0d62fd7..b7bc911 100644 | |||
82088 | } | 81841 | } |
82089 | 81842 | ||
82090 | switch (*fmt) { | 81843 | switch (*fmt) { |
82091 | @@ -1059,6 +1068,12 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, | 81844 | @@ -1067,6 +1075,12 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, |
82092 | /* Fallthrough */ | 81845 | /* Fallthrough */ |
82093 | case 'S': | 81846 | case 'S': |
82094 | case 's': | 81847 | case 's': |
82095 | +#ifdef CONFIG_GRKERNSEC_HIDESYM | 81848 | +#ifdef CONFIG_GRKERNSEC_HIDESYM |
82096 | + break; | 81849 | + break; |
82097 | +#else | 81850 | +#else |
82098 | + return symbol_string(buf, end, ptr, spec, *fmt); | 81851 | + return symbol_string(buf, end, ptr, spec, fmt); |
82099 | +#endif | 81852 | +#endif |
82100 | + case 'A': | 81853 | + case 'A': |
82101 | case 'B': | 81854 | case 'B': |
82102 | return symbol_string(buf, end, ptr, spec, *fmt); | 81855 | return symbol_string(buf, end, ptr, spec, fmt); |
82103 | case 'R': | 81856 | case 'R': |
82104 | @@ -1099,6 +1114,8 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, | 81857 | @@ -1107,6 +1121,8 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, |
82105 | va_end(va); | 81858 | va_end(va); |
82106 | return buf; | 81859 | return buf; |
82107 | } | 81860 | } |
@@ -82110,7 +81863,7 @@ index 0d62fd7..b7bc911 100644 | |||
82110 | case 'K': | 81863 | case 'K': |
82111 | /* | 81864 | /* |
82112 | * %pK cannot be used in IRQ context because its test | 81865 | * %pK cannot be used in IRQ context because its test |
82113 | @@ -1128,6 +1145,21 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, | 81866 | @@ -1136,6 +1152,21 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, |
82114 | return number(buf, end, | 81867 | return number(buf, end, |
82115 | (unsigned long long) *((phys_addr_t *)ptr), spec); | 81868 | (unsigned long long) *((phys_addr_t *)ptr), spec); |
82116 | } | 81869 | } |
@@ -82132,7 +81885,7 @@ index 0d62fd7..b7bc911 100644 | |||
82132 | spec.flags |= SMALL; | 81885 | spec.flags |= SMALL; |
82133 | if (spec.field_width == -1) { | 81886 | if (spec.field_width == -1) { |
82134 | spec.field_width = default_width; | 81887 | spec.field_width = default_width; |
82135 | @@ -1849,11 +1881,11 @@ int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf) | 81888 | @@ -1857,11 +1888,11 @@ int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf) |
82136 | typeof(type) value; \ | 81889 | typeof(type) value; \ |
82137 | if (sizeof(type) == 8) { \ | 81890 | if (sizeof(type) == 8) { \ |
82138 | args = PTR_ALIGN(args, sizeof(u32)); \ | 81891 | args = PTR_ALIGN(args, sizeof(u32)); \ |
@@ -82147,7 +81900,7 @@ index 0d62fd7..b7bc911 100644 | |||
82147 | } \ | 81900 | } \ |
82148 | args += sizeof(type); \ | 81901 | args += sizeof(type); \ |
82149 | value; \ | 81902 | value; \ |
82150 | @@ -1916,7 +1948,7 @@ int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf) | 81903 | @@ -1924,7 +1955,7 @@ int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf) |
82151 | case FORMAT_TYPE_STR: { | 81904 | case FORMAT_TYPE_STR: { |
82152 | const char *str_arg = args; | 81905 | const char *str_arg = args; |
82153 | args += strlen(str_arg) + 1; | 81906 | args += strlen(str_arg) + 1; |
@@ -82164,10 +81917,10 @@ index 0000000..7cd6065 | |||
82164 | @@ -0,0 +1 @@ | 81917 | @@ -0,0 +1 @@ |
82165 | +-grsec | 81918 | +-grsec |
82166 | diff --git a/mm/Kconfig b/mm/Kconfig | 81919 | diff --git a/mm/Kconfig b/mm/Kconfig |
82167 | index 3bea74f..e821c99 100644 | 81920 | index e742d06..c56fdd8 100644 |
82168 | --- a/mm/Kconfig | 81921 | --- a/mm/Kconfig |
82169 | +++ b/mm/Kconfig | 81922 | +++ b/mm/Kconfig |
82170 | @@ -311,10 +311,10 @@ config KSM | 81923 | @@ -317,10 +317,10 @@ config KSM |
82171 | root has set /sys/kernel/mm/ksm/run to 1 (if CONFIG_SYSFS is set). | 81924 | root has set /sys/kernel/mm/ksm/run to 1 (if CONFIG_SYSFS is set). |
82172 | 81925 | ||
82173 | config DEFAULT_MMAP_MIN_ADDR | 81926 | config DEFAULT_MMAP_MIN_ADDR |
@@ -82181,7 +81934,7 @@ index 3bea74f..e821c99 100644 | |||
82181 | This is the portion of low virtual memory which should be protected | 81934 | This is the portion of low virtual memory which should be protected |
82182 | from userspace allocation. Keeping a user from writing to low pages | 81935 | from userspace allocation. Keeping a user from writing to low pages |
82183 | can help reduce the impact of kernel NULL pointer bugs. | 81936 | can help reduce the impact of kernel NULL pointer bugs. |
82184 | @@ -345,7 +345,7 @@ config MEMORY_FAILURE | 81937 | @@ -351,7 +351,7 @@ config MEMORY_FAILURE |
82185 | 81938 | ||
82186 | config HWPOISON_INJECT | 81939 | config HWPOISON_INJECT |
82187 | tristate "HWPoison pages injector" | 81940 | tristate "HWPoison pages injector" |
@@ -82191,10 +81944,10 @@ index 3bea74f..e821c99 100644 | |||
82191 | 81944 | ||
82192 | config NOMMU_INITIAL_TRIM_EXCESS | 81945 | config NOMMU_INITIAL_TRIM_EXCESS |
82193 | diff --git a/mm/backing-dev.c b/mm/backing-dev.c | 81946 | diff --git a/mm/backing-dev.c b/mm/backing-dev.c |
82194 | index 41733c5..d80d7a9 100644 | 81947 | index 5025174..9fc1c5c 100644 |
82195 | --- a/mm/backing-dev.c | 81948 | --- a/mm/backing-dev.c |
82196 | +++ b/mm/backing-dev.c | 81949 | +++ b/mm/backing-dev.c |
82197 | @@ -716,7 +716,6 @@ EXPORT_SYMBOL(bdi_destroy); | 81950 | @@ -515,7 +515,6 @@ EXPORT_SYMBOL(bdi_destroy); |
82198 | int bdi_setup_and_register(struct backing_dev_info *bdi, char *name, | 81951 | int bdi_setup_and_register(struct backing_dev_info *bdi, char *name, |
82199 | unsigned int cap) | 81952 | unsigned int cap) |
82200 | { | 81953 | { |
@@ -82202,7 +81955,7 @@ index 41733c5..d80d7a9 100644 | |||
82202 | int err; | 81955 | int err; |
82203 | 81956 | ||
82204 | bdi->name = name; | 81957 | bdi->name = name; |
82205 | @@ -725,8 +724,7 @@ int bdi_setup_and_register(struct backing_dev_info *bdi, char *name, | 81958 | @@ -524,8 +523,7 @@ int bdi_setup_and_register(struct backing_dev_info *bdi, char *name, |
82206 | if (err) | 81959 | if (err) |
82207 | return err; | 81960 | return err; |
82208 | 81961 | ||
@@ -82213,10 +81966,10 @@ index 41733c5..d80d7a9 100644 | |||
82213 | bdi_destroy(bdi); | 81966 | bdi_destroy(bdi); |
82214 | return err; | 81967 | return err; |
82215 | diff --git a/mm/filemap.c b/mm/filemap.c | 81968 | diff --git a/mm/filemap.c b/mm/filemap.c |
82216 | index e1979fd..dda5120 100644 | 81969 | index 7905fe7..e60faa8 100644 |
82217 | --- a/mm/filemap.c | 81970 | --- a/mm/filemap.c |
82218 | +++ b/mm/filemap.c | 81971 | +++ b/mm/filemap.c |
82219 | @@ -1748,7 +1748,7 @@ int generic_file_mmap(struct file * file, struct vm_area_struct * vma) | 81972 | @@ -1766,7 +1766,7 @@ int generic_file_mmap(struct file * file, struct vm_area_struct * vma) |
82220 | struct address_space *mapping = file->f_mapping; | 81973 | struct address_space *mapping = file->f_mapping; |
82221 | 81974 | ||
82222 | if (!mapping->a_ops->readpage) | 81975 | if (!mapping->a_ops->readpage) |
@@ -82225,7 +81978,7 @@ index e1979fd..dda5120 100644 | |||
82225 | file_accessed(file); | 81978 | file_accessed(file); |
82226 | vma->vm_ops = &generic_file_vm_ops; | 81979 | vma->vm_ops = &generic_file_vm_ops; |
82227 | return 0; | 81980 | return 0; |
82228 | @@ -2088,6 +2088,7 @@ inline int generic_write_checks(struct file *file, loff_t *pos, size_t *count, i | 81981 | @@ -2106,6 +2106,7 @@ inline int generic_write_checks(struct file *file, loff_t *pos, size_t *count, i |
82229 | *pos = i_size_read(inode); | 81982 | *pos = i_size_read(inode); |
82230 | 81983 | ||
82231 | if (limit != RLIM_INFINITY) { | 81984 | if (limit != RLIM_INFINITY) { |
@@ -82278,7 +82031,7 @@ index b32b70c..e512eb0 100644 | |||
82278 | set_page_address(page, (void *)vaddr); | 82031 | set_page_address(page, (void *)vaddr); |
82279 | 82032 | ||
82280 | diff --git a/mm/hugetlb.c b/mm/hugetlb.c | 82033 | diff --git a/mm/hugetlb.c b/mm/hugetlb.c |
82281 | index 2baa6e3..cd0a264 100644 | 82034 | index 5cf99bf..28634c8 100644 |
82282 | --- a/mm/hugetlb.c | 82035 | --- a/mm/hugetlb.c |
82283 | +++ b/mm/hugetlb.c | 82036 | +++ b/mm/hugetlb.c |
82284 | @@ -2022,15 +2022,17 @@ static int hugetlb_sysctl_handler_common(bool obey_mempolicy, | 82037 | @@ -2022,15 +2022,17 @@ static int hugetlb_sysctl_handler_common(bool obey_mempolicy, |
@@ -82323,7 +82076,7 @@ index 2baa6e3..cd0a264 100644 | |||
82323 | if (ret) | 82076 | if (ret) |
82324 | goto out; | 82077 | goto out; |
82325 | 82078 | ||
82326 | @@ -2529,6 +2533,27 @@ static int unmap_ref_private(struct mm_struct *mm, struct vm_area_struct *vma, | 82079 | @@ -2545,6 +2549,27 @@ static int unmap_ref_private(struct mm_struct *mm, struct vm_area_struct *vma, |
82327 | return 1; | 82080 | return 1; |
82328 | } | 82081 | } |
82329 | 82082 | ||
@@ -82351,7 +82104,7 @@ index 2baa6e3..cd0a264 100644 | |||
82351 | /* | 82104 | /* |
82352 | * Hugetlb_cow() should be called with page lock of the original hugepage held. | 82105 | * Hugetlb_cow() should be called with page lock of the original hugepage held. |
82353 | * Called with hugetlb_instantiation_mutex held and pte_page locked so we | 82106 | * Called with hugetlb_instantiation_mutex held and pte_page locked so we |
82354 | @@ -2647,6 +2672,11 @@ retry_avoidcopy: | 82107 | @@ -2663,6 +2688,11 @@ retry_avoidcopy: |
82355 | make_huge_pte(vma, new_page, 1)); | 82108 | make_huge_pte(vma, new_page, 1)); |
82356 | page_remove_rmap(old_page); | 82109 | page_remove_rmap(old_page); |
82357 | hugepage_add_new_anon_rmap(new_page, vma, address); | 82110 | hugepage_add_new_anon_rmap(new_page, vma, address); |
@@ -82363,7 +82116,7 @@ index 2baa6e3..cd0a264 100644 | |||
82363 | /* Make the old page be freed below */ | 82116 | /* Make the old page be freed below */ |
82364 | new_page = old_page; | 82117 | new_page = old_page; |
82365 | } | 82118 | } |
82366 | @@ -2805,6 +2835,10 @@ retry: | 82119 | @@ -2821,6 +2851,10 @@ retry: |
82367 | && (vma->vm_flags & VM_SHARED))); | 82120 | && (vma->vm_flags & VM_SHARED))); |
82368 | set_huge_pte_at(mm, address, ptep, new_pte); | 82121 | set_huge_pte_at(mm, address, ptep, new_pte); |
82369 | 82122 | ||
@@ -82374,7 +82127,7 @@ index 2baa6e3..cd0a264 100644 | |||
82374 | if ((flags & FAULT_FLAG_WRITE) && !(vma->vm_flags & VM_SHARED)) { | 82127 | if ((flags & FAULT_FLAG_WRITE) && !(vma->vm_flags & VM_SHARED)) { |
82375 | /* Optimization, do the COW without a second fault */ | 82128 | /* Optimization, do the COW without a second fault */ |
82376 | ret = hugetlb_cow(mm, vma, address, ptep, new_pte, page); | 82129 | ret = hugetlb_cow(mm, vma, address, ptep, new_pte, page); |
82377 | @@ -2834,6 +2868,10 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma, | 82130 | @@ -2850,6 +2884,10 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma, |
82378 | static DEFINE_MUTEX(hugetlb_instantiation_mutex); | 82131 | static DEFINE_MUTEX(hugetlb_instantiation_mutex); |
82379 | struct hstate *h = hstate_vma(vma); | 82132 | struct hstate *h = hstate_vma(vma); |
82380 | 82133 | ||
@@ -82385,7 +82138,7 @@ index 2baa6e3..cd0a264 100644 | |||
82385 | address &= huge_page_mask(h); | 82138 | address &= huge_page_mask(h); |
82386 | 82139 | ||
82387 | ptep = huge_pte_offset(mm, address); | 82140 | ptep = huge_pte_offset(mm, address); |
82388 | @@ -2847,6 +2885,26 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma, | 82141 | @@ -2863,6 +2901,26 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma, |
82389 | VM_FAULT_SET_HINDEX(hstate_index(h)); | 82142 | VM_FAULT_SET_HINDEX(hstate_index(h)); |
82390 | } | 82143 | } |
82391 | 82144 | ||
@@ -82469,7 +82222,7 @@ index d53adf9..03a24bf 100644 | |||
82469 | set_fs(old_fs); | 82222 | set_fs(old_fs); |
82470 | 82223 | ||
82471 | diff --git a/mm/madvise.c b/mm/madvise.c | 82224 | diff --git a/mm/madvise.c b/mm/madvise.c |
82472 | index c58c94b..86ec14e 100644 | 82225 | index 7055883..aafb1ed 100644 |
82473 | --- a/mm/madvise.c | 82226 | --- a/mm/madvise.c |
82474 | +++ b/mm/madvise.c | 82227 | +++ b/mm/madvise.c |
82475 | @@ -51,6 +51,10 @@ static long madvise_behavior(struct vm_area_struct * vma, | 82228 | @@ -51,6 +51,10 @@ static long madvise_behavior(struct vm_area_struct * vma, |
@@ -82531,25 +82284,25 @@ index c58c94b..86ec14e 100644 | |||
82531 | return 0; | 82284 | return 0; |
82532 | } | 82285 | } |
82533 | 82286 | ||
82534 | @@ -491,6 +522,16 @@ SYSCALL_DEFINE3(madvise, unsigned long, start, size_t, len_in, int, behavior) | 82287 | @@ -485,6 +516,16 @@ SYSCALL_DEFINE3(madvise, unsigned long, start, size_t, len_in, int, behavior) |
82535 | if (end < start) | 82288 | if (end < start) |
82536 | goto out; | 82289 | return error; |
82537 | 82290 | ||
82538 | +#ifdef CONFIG_PAX_SEGMEXEC | 82291 | +#ifdef CONFIG_PAX_SEGMEXEC |
82539 | + if (current->mm->pax_flags & MF_PAX_SEGMEXEC) { | 82292 | + if (current->mm->pax_flags & MF_PAX_SEGMEXEC) { |
82540 | + if (end > SEGMEXEC_TASK_SIZE) | 82293 | + if (end > SEGMEXEC_TASK_SIZE) |
82541 | + goto out; | 82294 | + return error; |
82542 | + } else | 82295 | + } else |
82543 | +#endif | 82296 | +#endif |
82544 | + | 82297 | + |
82545 | + if (end > TASK_SIZE) | 82298 | + if (end > TASK_SIZE) |
82546 | + goto out; | 82299 | + return error; |
82547 | + | 82300 | + |
82548 | error = 0; | 82301 | error = 0; |
82549 | if (end == start) | 82302 | if (end == start) |
82550 | goto out; | 82303 | return error; |
82551 | diff --git a/mm/memory-failure.c b/mm/memory-failure.c | 82304 | diff --git a/mm/memory-failure.c b/mm/memory-failure.c |
82552 | index df0694c..bc95539 100644 | 82305 | index ceb0c7f..b2b8e94 100644 |
82553 | --- a/mm/memory-failure.c | 82306 | --- a/mm/memory-failure.c |
82554 | +++ b/mm/memory-failure.c | 82307 | +++ b/mm/memory-failure.c |
82555 | @@ -61,7 +61,7 @@ int sysctl_memory_failure_early_kill __read_mostly = 0; | 82308 | @@ -61,7 +61,7 @@ int sysctl_memory_failure_early_kill __read_mostly = 0; |
@@ -82666,10 +82419,10 @@ index df0694c..bc95539 100644 | |||
82666 | } else { | 82419 | } else { |
82667 | pr_info("soft offline: %#lx: isolation failed: %d, page count %d, type %lx\n", | 82420 | pr_info("soft offline: %#lx: isolation failed: %d, page count %d, type %lx\n", |
82668 | diff --git a/mm/memory.c b/mm/memory.c | 82421 | diff --git a/mm/memory.c b/mm/memory.c |
82669 | index ba94dec..08ffe0d 100644 | 82422 | index 61a262b..77a94d1 100644 |
82670 | --- a/mm/memory.c | 82423 | --- a/mm/memory.c |
82671 | +++ b/mm/memory.c | 82424 | +++ b/mm/memory.c |
82672 | @@ -438,6 +438,7 @@ static inline void free_pmd_range(struct mmu_gather *tlb, pud_t *pud, | 82425 | @@ -429,6 +429,7 @@ static inline void free_pmd_range(struct mmu_gather *tlb, pud_t *pud, |
82673 | free_pte_range(tlb, pmd, addr); | 82426 | free_pte_range(tlb, pmd, addr); |
82674 | } while (pmd++, addr = next, addr != end); | 82427 | } while (pmd++, addr = next, addr != end); |
82675 | 82428 | ||
@@ -82677,7 +82430,7 @@ index ba94dec..08ffe0d 100644 | |||
82677 | start &= PUD_MASK; | 82430 | start &= PUD_MASK; |
82678 | if (start < floor) | 82431 | if (start < floor) |
82679 | return; | 82432 | return; |
82680 | @@ -452,6 +453,8 @@ static inline void free_pmd_range(struct mmu_gather *tlb, pud_t *pud, | 82433 | @@ -443,6 +444,8 @@ static inline void free_pmd_range(struct mmu_gather *tlb, pud_t *pud, |
82681 | pmd = pmd_offset(pud, start); | 82434 | pmd = pmd_offset(pud, start); |
82682 | pud_clear(pud); | 82435 | pud_clear(pud); |
82683 | pmd_free_tlb(tlb, pmd, start); | 82436 | pmd_free_tlb(tlb, pmd, start); |
@@ -82686,7 +82439,7 @@ index ba94dec..08ffe0d 100644 | |||
82686 | } | 82439 | } |
82687 | 82440 | ||
82688 | static inline void free_pud_range(struct mmu_gather *tlb, pgd_t *pgd, | 82441 | static inline void free_pud_range(struct mmu_gather *tlb, pgd_t *pgd, |
82689 | @@ -471,6 +474,7 @@ static inline void free_pud_range(struct mmu_gather *tlb, pgd_t *pgd, | 82442 | @@ -462,6 +465,7 @@ static inline void free_pud_range(struct mmu_gather *tlb, pgd_t *pgd, |
82690 | free_pmd_range(tlb, pud, addr, next, floor, ceiling); | 82443 | free_pmd_range(tlb, pud, addr, next, floor, ceiling); |
82691 | } while (pud++, addr = next, addr != end); | 82444 | } while (pud++, addr = next, addr != end); |
82692 | 82445 | ||
@@ -82694,7 +82447,7 @@ index ba94dec..08ffe0d 100644 | |||
82694 | start &= PGDIR_MASK; | 82447 | start &= PGDIR_MASK; |
82695 | if (start < floor) | 82448 | if (start < floor) |
82696 | return; | 82449 | return; |
82697 | @@ -485,6 +489,8 @@ static inline void free_pud_range(struct mmu_gather *tlb, pgd_t *pgd, | 82450 | @@ -476,6 +480,8 @@ static inline void free_pud_range(struct mmu_gather *tlb, pgd_t *pgd, |
82698 | pud = pud_offset(pgd, start); | 82451 | pud = pud_offset(pgd, start); |
82699 | pgd_clear(pgd); | 82452 | pgd_clear(pgd); |
82700 | pud_free_tlb(tlb, pud, start); | 82453 | pud_free_tlb(tlb, pud, start); |
@@ -82703,7 +82456,7 @@ index ba94dec..08ffe0d 100644 | |||
82703 | } | 82456 | } |
82704 | 82457 | ||
82705 | /* | 82458 | /* |
82706 | @@ -1644,12 +1650,6 @@ no_page_table: | 82459 | @@ -1635,12 +1641,6 @@ no_page_table: |
82707 | return page; | 82460 | return page; |
82708 | } | 82461 | } |
82709 | 82462 | ||
@@ -82716,7 +82469,7 @@ index ba94dec..08ffe0d 100644 | |||
82716 | /** | 82469 | /** |
82717 | * __get_user_pages() - pin user pages in memory | 82470 | * __get_user_pages() - pin user pages in memory |
82718 | * @tsk: task_struct of target task | 82471 | * @tsk: task_struct of target task |
82719 | @@ -1736,10 +1736,10 @@ long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm, | 82472 | @@ -1727,10 +1727,10 @@ long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm, |
82720 | 82473 | ||
82721 | i = 0; | 82474 | i = 0; |
82722 | 82475 | ||
@@ -82729,7 +82482,7 @@ index ba94dec..08ffe0d 100644 | |||
82729 | if (!vma && in_gate_area(mm, start)) { | 82482 | if (!vma && in_gate_area(mm, start)) { |
82730 | unsigned long pg = start & PAGE_MASK; | 82483 | unsigned long pg = start & PAGE_MASK; |
82731 | pgd_t *pgd; | 82484 | pgd_t *pgd; |
82732 | @@ -1788,7 +1788,7 @@ long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm, | 82485 | @@ -1779,7 +1779,7 @@ long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm, |
82733 | goto next_page; | 82486 | goto next_page; |
82734 | } | 82487 | } |
82735 | 82488 | ||
@@ -82738,7 +82491,7 @@ index ba94dec..08ffe0d 100644 | |||
82738 | (vma->vm_flags & (VM_IO | VM_PFNMAP)) || | 82491 | (vma->vm_flags & (VM_IO | VM_PFNMAP)) || |
82739 | !(vm_flags & vma->vm_flags)) | 82492 | !(vm_flags & vma->vm_flags)) |
82740 | return i ? : -EFAULT; | 82493 | return i ? : -EFAULT; |
82741 | @@ -1817,11 +1817,6 @@ long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm, | 82494 | @@ -1808,11 +1808,6 @@ long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm, |
82742 | int ret; | 82495 | int ret; |
82743 | unsigned int fault_flags = 0; | 82496 | unsigned int fault_flags = 0; |
82744 | 82497 | ||
@@ -82750,7 +82503,7 @@ index ba94dec..08ffe0d 100644 | |||
82750 | if (foll_flags & FOLL_WRITE) | 82503 | if (foll_flags & FOLL_WRITE) |
82751 | fault_flags |= FAULT_FLAG_WRITE; | 82504 | fault_flags |= FAULT_FLAG_WRITE; |
82752 | if (nonblocking) | 82505 | if (nonblocking) |
82753 | @@ -1901,7 +1896,7 @@ next_page: | 82506 | @@ -1892,7 +1887,7 @@ next_page: |
82754 | start += page_increm * PAGE_SIZE; | 82507 | start += page_increm * PAGE_SIZE; |
82755 | nr_pages -= page_increm; | 82508 | nr_pages -= page_increm; |
82756 | } while (nr_pages && start < vma->vm_end); | 82509 | } while (nr_pages && start < vma->vm_end); |
@@ -82759,7 +82512,7 @@ index ba94dec..08ffe0d 100644 | |||
82759 | return i; | 82512 | return i; |
82760 | } | 82513 | } |
82761 | EXPORT_SYMBOL(__get_user_pages); | 82514 | EXPORT_SYMBOL(__get_user_pages); |
82762 | @@ -2108,6 +2103,10 @@ static int insert_page(struct vm_area_struct *vma, unsigned long addr, | 82515 | @@ -2099,6 +2094,10 @@ static int insert_page(struct vm_area_struct *vma, unsigned long addr, |
82763 | page_add_file_rmap(page); | 82516 | page_add_file_rmap(page); |
82764 | set_pte_at(mm, addr, pte, mk_pte(page, prot)); | 82517 | set_pte_at(mm, addr, pte, mk_pte(page, prot)); |
82765 | 82518 | ||
@@ -82770,7 +82523,7 @@ index ba94dec..08ffe0d 100644 | |||
82770 | retval = 0; | 82523 | retval = 0; |
82771 | pte_unmap_unlock(pte, ptl); | 82524 | pte_unmap_unlock(pte, ptl); |
82772 | return retval; | 82525 | return retval; |
82773 | @@ -2152,9 +2151,21 @@ int vm_insert_page(struct vm_area_struct *vma, unsigned long addr, | 82526 | @@ -2143,9 +2142,21 @@ int vm_insert_page(struct vm_area_struct *vma, unsigned long addr, |
82774 | if (!page_count(page)) | 82527 | if (!page_count(page)) |
82775 | return -EINVAL; | 82528 | return -EINVAL; |
82776 | if (!(vma->vm_flags & VM_MIXEDMAP)) { | 82529 | if (!(vma->vm_flags & VM_MIXEDMAP)) { |
@@ -82792,7 +82545,7 @@ index ba94dec..08ffe0d 100644 | |||
82792 | } | 82545 | } |
82793 | return insert_page(vma, addr, page, vma->vm_page_prot); | 82546 | return insert_page(vma, addr, page, vma->vm_page_prot); |
82794 | } | 82547 | } |
82795 | @@ -2237,6 +2248,7 @@ int vm_insert_mixed(struct vm_area_struct *vma, unsigned long addr, | 82548 | @@ -2228,6 +2239,7 @@ int vm_insert_mixed(struct vm_area_struct *vma, unsigned long addr, |
82796 | unsigned long pfn) | 82549 | unsigned long pfn) |
82797 | { | 82550 | { |
82798 | BUG_ON(!(vma->vm_flags & VM_MIXEDMAP)); | 82551 | BUG_ON(!(vma->vm_flags & VM_MIXEDMAP)); |
@@ -82800,7 +82553,7 @@ index ba94dec..08ffe0d 100644 | |||
82800 | 82553 | ||
82801 | if (addr < vma->vm_start || addr >= vma->vm_end) | 82554 | if (addr < vma->vm_start || addr >= vma->vm_end) |
82802 | return -EFAULT; | 82555 | return -EFAULT; |
82803 | @@ -2484,7 +2496,9 @@ static int apply_to_pmd_range(struct mm_struct *mm, pud_t *pud, | 82556 | @@ -2475,7 +2487,9 @@ static int apply_to_pmd_range(struct mm_struct *mm, pud_t *pud, |
82804 | 82557 | ||
82805 | BUG_ON(pud_huge(*pud)); | 82558 | BUG_ON(pud_huge(*pud)); |
82806 | 82559 | ||
@@ -82811,7 +82564,7 @@ index ba94dec..08ffe0d 100644 | |||
82811 | if (!pmd) | 82564 | if (!pmd) |
82812 | return -ENOMEM; | 82565 | return -ENOMEM; |
82813 | do { | 82566 | do { |
82814 | @@ -2504,7 +2518,9 @@ static int apply_to_pud_range(struct mm_struct *mm, pgd_t *pgd, | 82567 | @@ -2495,7 +2509,9 @@ static int apply_to_pud_range(struct mm_struct *mm, pgd_t *pgd, |
82815 | unsigned long next; | 82568 | unsigned long next; |
82816 | int err; | 82569 | int err; |
82817 | 82570 | ||
@@ -82822,7 +82575,7 @@ index ba94dec..08ffe0d 100644 | |||
82822 | if (!pud) | 82575 | if (!pud) |
82823 | return -ENOMEM; | 82576 | return -ENOMEM; |
82824 | do { | 82577 | do { |
82825 | @@ -2592,6 +2608,186 @@ static inline void cow_user_page(struct page *dst, struct page *src, unsigned lo | 82578 | @@ -2583,6 +2599,186 @@ static inline void cow_user_page(struct page *dst, struct page *src, unsigned lo |
82826 | copy_user_highpage(dst, src, va, vma); | 82579 | copy_user_highpage(dst, src, va, vma); |
82827 | } | 82580 | } |
82828 | 82581 | ||
@@ -83009,7 +82762,7 @@ index ba94dec..08ffe0d 100644 | |||
83009 | /* | 82762 | /* |
83010 | * This routine handles present pages, when users try to write | 82763 | * This routine handles present pages, when users try to write |
83011 | * to a shared page. It is done by copying the page to a new address | 82764 | * to a shared page. It is done by copying the page to a new address |
83012 | @@ -2808,6 +3004,12 @@ gotten: | 82765 | @@ -2799,6 +2995,12 @@ gotten: |
83013 | */ | 82766 | */ |
83014 | page_table = pte_offset_map_lock(mm, pmd, address, &ptl); | 82767 | page_table = pte_offset_map_lock(mm, pmd, address, &ptl); |
83015 | if (likely(pte_same(*page_table, orig_pte))) { | 82768 | if (likely(pte_same(*page_table, orig_pte))) { |
@@ -83022,7 +82775,7 @@ index ba94dec..08ffe0d 100644 | |||
83022 | if (old_page) { | 82775 | if (old_page) { |
83023 | if (!PageAnon(old_page)) { | 82776 | if (!PageAnon(old_page)) { |
83024 | dec_mm_counter_fast(mm, MM_FILEPAGES); | 82777 | dec_mm_counter_fast(mm, MM_FILEPAGES); |
83025 | @@ -2859,6 +3061,10 @@ gotten: | 82778 | @@ -2850,6 +3052,10 @@ gotten: |
83026 | page_remove_rmap(old_page); | 82779 | page_remove_rmap(old_page); |
83027 | } | 82780 | } |
83028 | 82781 | ||
@@ -83033,7 +82786,7 @@ index ba94dec..08ffe0d 100644 | |||
83033 | /* Free the old page.. */ | 82786 | /* Free the old page.. */ |
83034 | new_page = old_page; | 82787 | new_page = old_page; |
83035 | ret |= VM_FAULT_WRITE; | 82788 | ret |= VM_FAULT_WRITE; |
83036 | @@ -3134,6 +3340,11 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma, | 82789 | @@ -3125,6 +3331,11 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma, |
83037 | swap_free(entry); | 82790 | swap_free(entry); |
83038 | if (vm_swap_full() || (vma->vm_flags & VM_LOCKED) || PageMlocked(page)) | 82791 | if (vm_swap_full() || (vma->vm_flags & VM_LOCKED) || PageMlocked(page)) |
83039 | try_to_free_swap(page); | 82792 | try_to_free_swap(page); |
@@ -83045,7 +82798,7 @@ index ba94dec..08ffe0d 100644 | |||
83045 | unlock_page(page); | 82798 | unlock_page(page); |
83046 | if (page != swapcache) { | 82799 | if (page != swapcache) { |
83047 | /* | 82800 | /* |
83048 | @@ -3157,6 +3368,11 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma, | 82801 | @@ -3148,6 +3359,11 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma, |
83049 | 82802 | ||
83050 | /* No need to invalidate - it was non-present before */ | 82803 | /* No need to invalidate - it was non-present before */ |
83051 | update_mmu_cache(vma, address, page_table); | 82804 | update_mmu_cache(vma, address, page_table); |
@@ -83057,7 +82810,7 @@ index ba94dec..08ffe0d 100644 | |||
83057 | unlock: | 82810 | unlock: |
83058 | pte_unmap_unlock(page_table, ptl); | 82811 | pte_unmap_unlock(page_table, ptl); |
83059 | out: | 82812 | out: |
83060 | @@ -3176,40 +3392,6 @@ out_release: | 82813 | @@ -3167,40 +3383,6 @@ out_release: |
83061 | } | 82814 | } |
83062 | 82815 | ||
83063 | /* | 82816 | /* |
@@ -83098,7 +82851,7 @@ index ba94dec..08ffe0d 100644 | |||
83098 | * We enter with non-exclusive mmap_sem (to exclude vma changes, | 82851 | * We enter with non-exclusive mmap_sem (to exclude vma changes, |
83099 | * but allow concurrent faults), and pte mapped but not yet locked. | 82852 | * but allow concurrent faults), and pte mapped but not yet locked. |
83100 | * We return with mmap_sem still held, but pte unmapped and unlocked. | 82853 | * We return with mmap_sem still held, but pte unmapped and unlocked. |
83101 | @@ -3218,27 +3400,23 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma, | 82854 | @@ -3209,27 +3391,23 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma, |
83102 | unsigned long address, pte_t *page_table, pmd_t *pmd, | 82855 | unsigned long address, pte_t *page_table, pmd_t *pmd, |
83103 | unsigned int flags) | 82856 | unsigned int flags) |
83104 | { | 82857 | { |
@@ -83131,7 +82884,7 @@ index ba94dec..08ffe0d 100644 | |||
83131 | if (unlikely(anon_vma_prepare(vma))) | 82884 | if (unlikely(anon_vma_prepare(vma))) |
83132 | goto oom; | 82885 | goto oom; |
83133 | page = alloc_zeroed_user_highpage_movable(vma, address); | 82886 | page = alloc_zeroed_user_highpage_movable(vma, address); |
83134 | @@ -3257,6 +3435,11 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma, | 82887 | @@ -3253,6 +3431,11 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma, |
83135 | if (!pte_none(*page_table)) | 82888 | if (!pte_none(*page_table)) |
83136 | goto release; | 82889 | goto release; |
83137 | 82890 | ||
@@ -83143,7 +82896,7 @@ index ba94dec..08ffe0d 100644 | |||
83143 | inc_mm_counter_fast(mm, MM_ANONPAGES); | 82896 | inc_mm_counter_fast(mm, MM_ANONPAGES); |
83144 | page_add_new_anon_rmap(page, vma, address); | 82897 | page_add_new_anon_rmap(page, vma, address); |
83145 | setpte: | 82898 | setpte: |
83146 | @@ -3264,6 +3447,12 @@ setpte: | 82899 | @@ -3260,6 +3443,12 @@ setpte: |
83147 | 82900 | ||
83148 | /* No need to invalidate - it was non-present before */ | 82901 | /* No need to invalidate - it was non-present before */ |
83149 | update_mmu_cache(vma, address, page_table); | 82902 | update_mmu_cache(vma, address, page_table); |
@@ -83156,7 +82909,7 @@ index ba94dec..08ffe0d 100644 | |||
83156 | unlock: | 82909 | unlock: |
83157 | pte_unmap_unlock(page_table, ptl); | 82910 | pte_unmap_unlock(page_table, ptl); |
83158 | return 0; | 82911 | return 0; |
83159 | @@ -3407,6 +3596,12 @@ static int __do_fault(struct mm_struct *mm, struct vm_area_struct *vma, | 82912 | @@ -3403,6 +3592,12 @@ static int __do_fault(struct mm_struct *mm, struct vm_area_struct *vma, |
83160 | */ | 82913 | */ |
83161 | /* Only go through if we didn't race with anybody else... */ | 82914 | /* Only go through if we didn't race with anybody else... */ |
83162 | if (likely(pte_same(*page_table, orig_pte))) { | 82915 | if (likely(pte_same(*page_table, orig_pte))) { |
@@ -83169,7 +82922,7 @@ index ba94dec..08ffe0d 100644 | |||
83169 | flush_icache_page(vma, page); | 82922 | flush_icache_page(vma, page); |
83170 | entry = mk_pte(page, vma->vm_page_prot); | 82923 | entry = mk_pte(page, vma->vm_page_prot); |
83171 | if (flags & FAULT_FLAG_WRITE) | 82924 | if (flags & FAULT_FLAG_WRITE) |
83172 | @@ -3426,6 +3621,14 @@ static int __do_fault(struct mm_struct *mm, struct vm_area_struct *vma, | 82925 | @@ -3422,6 +3617,14 @@ static int __do_fault(struct mm_struct *mm, struct vm_area_struct *vma, |
83173 | 82926 | ||
83174 | /* no need to invalidate: a not-present page won't be cached */ | 82927 | /* no need to invalidate: a not-present page won't be cached */ |
83175 | update_mmu_cache(vma, address, page_table); | 82928 | update_mmu_cache(vma, address, page_table); |
@@ -83184,7 +82937,7 @@ index ba94dec..08ffe0d 100644 | |||
83184 | } else { | 82937 | } else { |
83185 | if (cow_page) | 82938 | if (cow_page) |
83186 | mem_cgroup_uncharge_page(cow_page); | 82939 | mem_cgroup_uncharge_page(cow_page); |
83187 | @@ -3747,6 +3950,12 @@ int handle_pte_fault(struct mm_struct *mm, | 82940 | @@ -3743,6 +3946,12 @@ int handle_pte_fault(struct mm_struct *mm, |
83188 | if (flags & FAULT_FLAG_WRITE) | 82941 | if (flags & FAULT_FLAG_WRITE) |
83189 | flush_tlb_fix_spurious_fault(vma, address); | 82942 | flush_tlb_fix_spurious_fault(vma, address); |
83190 | } | 82943 | } |
@@ -83197,7 +82950,7 @@ index ba94dec..08ffe0d 100644 | |||
83197 | unlock: | 82950 | unlock: |
83198 | pte_unmap_unlock(pte, ptl); | 82951 | pte_unmap_unlock(pte, ptl); |
83199 | return 0; | 82952 | return 0; |
83200 | @@ -3763,6 +3972,10 @@ int handle_mm_fault(struct mm_struct *mm, struct vm_area_struct *vma, | 82953 | @@ -3759,6 +3968,10 @@ int handle_mm_fault(struct mm_struct *mm, struct vm_area_struct *vma, |
83201 | pmd_t *pmd; | 82954 | pmd_t *pmd; |
83202 | pte_t *pte; | 82955 | pte_t *pte; |
83203 | 82956 | ||
@@ -83208,7 +82961,7 @@ index ba94dec..08ffe0d 100644 | |||
83208 | __set_current_state(TASK_RUNNING); | 82961 | __set_current_state(TASK_RUNNING); |
83209 | 82962 | ||
83210 | count_vm_event(PGFAULT); | 82963 | count_vm_event(PGFAULT); |
83211 | @@ -3774,6 +3987,34 @@ int handle_mm_fault(struct mm_struct *mm, struct vm_area_struct *vma, | 82964 | @@ -3770,6 +3983,34 @@ int handle_mm_fault(struct mm_struct *mm, struct vm_area_struct *vma, |
83212 | if (unlikely(is_vm_hugetlb_page(vma))) | 82965 | if (unlikely(is_vm_hugetlb_page(vma))) |
83213 | return hugetlb_fault(mm, vma, address, flags); | 82966 | return hugetlb_fault(mm, vma, address, flags); |
83214 | 82967 | ||
@@ -83243,7 +82996,7 @@ index ba94dec..08ffe0d 100644 | |||
83243 | retry: | 82996 | retry: |
83244 | pgd = pgd_offset(mm, address); | 82997 | pgd = pgd_offset(mm, address); |
83245 | pud = pud_alloc(mm, pgd, address); | 82998 | pud = pud_alloc(mm, pgd, address); |
83246 | @@ -3872,6 +4113,23 @@ int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address) | 82999 | @@ -3868,6 +4109,23 @@ int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address) |
83247 | spin_unlock(&mm->page_table_lock); | 83000 | spin_unlock(&mm->page_table_lock); |
83248 | return 0; | 83001 | return 0; |
83249 | } | 83002 | } |
@@ -83267,7 +83020,7 @@ index ba94dec..08ffe0d 100644 | |||
83267 | #endif /* __PAGETABLE_PUD_FOLDED */ | 83020 | #endif /* __PAGETABLE_PUD_FOLDED */ |
83268 | 83021 | ||
83269 | #ifndef __PAGETABLE_PMD_FOLDED | 83022 | #ifndef __PAGETABLE_PMD_FOLDED |
83270 | @@ -3902,6 +4160,30 @@ int __pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address) | 83023 | @@ -3898,6 +4156,30 @@ int __pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address) |
83271 | spin_unlock(&mm->page_table_lock); | 83024 | spin_unlock(&mm->page_table_lock); |
83272 | return 0; | 83025 | return 0; |
83273 | } | 83026 | } |
@@ -83298,7 +83051,7 @@ index ba94dec..08ffe0d 100644 | |||
83298 | #endif /* __PAGETABLE_PMD_FOLDED */ | 83051 | #endif /* __PAGETABLE_PMD_FOLDED */ |
83299 | 83052 | ||
83300 | #if !defined(__HAVE_ARCH_GATE_AREA) | 83053 | #if !defined(__HAVE_ARCH_GATE_AREA) |
83301 | @@ -3915,7 +4197,7 @@ static int __init gate_vma_init(void) | 83054 | @@ -3911,7 +4193,7 @@ static int __init gate_vma_init(void) |
83302 | gate_vma.vm_start = FIXADDR_USER_START; | 83055 | gate_vma.vm_start = FIXADDR_USER_START; |
83303 | gate_vma.vm_end = FIXADDR_USER_END; | 83056 | gate_vma.vm_end = FIXADDR_USER_END; |
83304 | gate_vma.vm_flags = VM_READ | VM_MAYREAD | VM_EXEC | VM_MAYEXEC; | 83057 | gate_vma.vm_flags = VM_READ | VM_MAYREAD | VM_EXEC | VM_MAYEXEC; |
@@ -83307,7 +83060,7 @@ index ba94dec..08ffe0d 100644 | |||
83307 | 83060 | ||
83308 | return 0; | 83061 | return 0; |
83309 | } | 83062 | } |
83310 | @@ -4049,8 +4331,8 @@ out: | 83063 | @@ -4045,8 +4327,8 @@ out: |
83311 | return ret; | 83064 | return ret; |
83312 | } | 83065 | } |
83313 | 83066 | ||
@@ -83318,7 +83071,7 @@ index ba94dec..08ffe0d 100644 | |||
83318 | { | 83071 | { |
83319 | resource_size_t phys_addr; | 83072 | resource_size_t phys_addr; |
83320 | unsigned long prot = 0; | 83073 | unsigned long prot = 0; |
83321 | @@ -4075,8 +4357,8 @@ int generic_access_phys(struct vm_area_struct *vma, unsigned long addr, | 83074 | @@ -4071,8 +4353,8 @@ int generic_access_phys(struct vm_area_struct *vma, unsigned long addr, |
83322 | * Access another process' address space as given in mm. If non-NULL, use the | 83075 | * Access another process' address space as given in mm. If non-NULL, use the |
83323 | * given task for page fault accounting. | 83076 | * given task for page fault accounting. |
83324 | */ | 83077 | */ |
@@ -83329,7 +83082,7 @@ index ba94dec..08ffe0d 100644 | |||
83329 | { | 83082 | { |
83330 | struct vm_area_struct *vma; | 83083 | struct vm_area_struct *vma; |
83331 | void *old_buf = buf; | 83084 | void *old_buf = buf; |
83332 | @@ -4084,7 +4366,7 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm, | 83085 | @@ -4080,7 +4362,7 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm, |
83333 | down_read(&mm->mmap_sem); | 83086 | down_read(&mm->mmap_sem); |
83334 | /* ignore errors, just check how much was successfully transferred */ | 83087 | /* ignore errors, just check how much was successfully transferred */ |
83335 | while (len) { | 83088 | while (len) { |
@@ -83338,7 +83091,7 @@ index ba94dec..08ffe0d 100644 | |||
83338 | void *maddr; | 83091 | void *maddr; |
83339 | struct page *page = NULL; | 83092 | struct page *page = NULL; |
83340 | 83093 | ||
83341 | @@ -4143,8 +4425,8 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm, | 83094 | @@ -4139,8 +4421,8 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm, |
83342 | * | 83095 | * |
83343 | * The caller must hold a reference on @mm. | 83096 | * The caller must hold a reference on @mm. |
83344 | */ | 83097 | */ |
@@ -83349,7 +83102,7 @@ index ba94dec..08ffe0d 100644 | |||
83349 | { | 83102 | { |
83350 | return __access_remote_vm(NULL, mm, addr, buf, len, write); | 83103 | return __access_remote_vm(NULL, mm, addr, buf, len, write); |
83351 | } | 83104 | } |
83352 | @@ -4154,11 +4436,11 @@ int access_remote_vm(struct mm_struct *mm, unsigned long addr, | 83105 | @@ -4150,11 +4432,11 @@ int access_remote_vm(struct mm_struct *mm, unsigned long addr, |
83353 | * Source/target buffer must be kernel space, | 83106 | * Source/target buffer must be kernel space, |
83354 | * Do not walk the page table directly, use get_user_pages | 83107 | * Do not walk the page table directly, use get_user_pages |
83355 | */ | 83108 | */ |
@@ -83445,10 +83198,10 @@ index 7431001..0f8344e 100644 | |||
83445 | capable(CAP_SYS_NICE) ? MPOL_MF_MOVE_ALL : MPOL_MF_MOVE); | 83198 | capable(CAP_SYS_NICE) ? MPOL_MF_MOVE_ALL : MPOL_MF_MOVE); |
83446 | 83199 | ||
83447 | diff --git a/mm/migrate.c b/mm/migrate.c | 83200 | diff --git a/mm/migrate.c b/mm/migrate.c |
83448 | index c04d9af..0b41805 100644 | 83201 | index 6f0c244..6d1ae32 100644 |
83449 | --- a/mm/migrate.c | 83202 | --- a/mm/migrate.c |
83450 | +++ b/mm/migrate.c | 83203 | +++ b/mm/migrate.c |
83451 | @@ -1395,8 +1395,7 @@ SYSCALL_DEFINE6(move_pages, pid_t, pid, unsigned long, nr_pages, | 83204 | @@ -1399,8 +1399,7 @@ SYSCALL_DEFINE6(move_pages, pid_t, pid, unsigned long, nr_pages, |
83452 | */ | 83205 | */ |
83453 | tcred = __task_cred(task); | 83206 | tcred = __task_cred(task); |
83454 | if (!uid_eq(cred->euid, tcred->suid) && !uid_eq(cred->euid, tcred->uid) && | 83207 | if (!uid_eq(cred->euid, tcred->suid) && !uid_eq(cred->euid, tcred->uid) && |
@@ -83530,18 +83283,18 @@ index 79b7cf7..9944291 100644 | |||
83530 | capable(CAP_IPC_LOCK)) | 83283 | capable(CAP_IPC_LOCK)) |
83531 | ret = do_mlockall(flags); | 83284 | ret = do_mlockall(flags); |
83532 | diff --git a/mm/mmap.c b/mm/mmap.c | 83285 | diff --git a/mm/mmap.c b/mm/mmap.c |
83533 | index 0dceed8..a559c2e 100644 | 83286 | index f681e18..623110e 100644 |
83534 | --- a/mm/mmap.c | 83287 | --- a/mm/mmap.c |
83535 | +++ b/mm/mmap.c | 83288 | +++ b/mm/mmap.c |
83536 | @@ -33,6 +33,7 @@ | 83289 | @@ -36,6 +36,7 @@ |
83537 | #include <linux/uprobes.h> | ||
83538 | #include <linux/rbtree_augmented.h> | ||
83539 | #include <linux/sched/sysctl.h> | 83290 | #include <linux/sched/sysctl.h> |
83291 | #include <linux/notifier.h> | ||
83292 | #include <linux/memory.h> | ||
83540 | +#include <linux/random.h> | 83293 | +#include <linux/random.h> |
83541 | 83294 | ||
83542 | #include <asm/uaccess.h> | 83295 | #include <asm/uaccess.h> |
83543 | #include <asm/cacheflush.h> | 83296 | #include <asm/cacheflush.h> |
83544 | @@ -49,6 +50,16 @@ | 83297 | @@ -52,6 +53,16 @@ |
83545 | #define arch_rebalance_pgtables(addr, len) (addr) | 83298 | #define arch_rebalance_pgtables(addr, len) (addr) |
83546 | #endif | 83299 | #endif |
83547 | 83300 | ||
@@ -83558,7 +83311,7 @@ index 0dceed8..a559c2e 100644 | |||
83558 | static void unmap_region(struct mm_struct *mm, | 83311 | static void unmap_region(struct mm_struct *mm, |
83559 | struct vm_area_struct *vma, struct vm_area_struct *prev, | 83312 | struct vm_area_struct *vma, struct vm_area_struct *prev, |
83560 | unsigned long start, unsigned long end); | 83313 | unsigned long start, unsigned long end); |
83561 | @@ -68,22 +79,32 @@ static void unmap_region(struct mm_struct *mm, | 83314 | @@ -71,16 +82,25 @@ static void unmap_region(struct mm_struct *mm, |
83562 | * x: (no) no x: (no) yes x: (no) yes x: (yes) yes | 83315 | * x: (no) no x: (no) yes x: (no) yes x: (yes) yes |
83563 | * | 83316 | * |
83564 | */ | 83317 | */ |
@@ -83587,14 +83340,15 @@ index 0dceed8..a559c2e 100644 | |||
83587 | } | 83340 | } |
83588 | EXPORT_SYMBOL(vm_get_page_prot); | 83341 | EXPORT_SYMBOL(vm_get_page_prot); |
83589 | 83342 | ||
83590 | int sysctl_overcommit_memory __read_mostly = OVERCOMMIT_GUESS; /* heuristic overcommit */ | 83343 | @@ -89,6 +109,7 @@ int sysctl_overcommit_ratio __read_mostly = 50; /* default is 50% */ |
83591 | int sysctl_overcommit_ratio __read_mostly = 50; /* default is 50% */ | ||
83592 | int sysctl_max_map_count __read_mostly = DEFAULT_MAX_MAP_COUNT; | 83344 | int sysctl_max_map_count __read_mostly = DEFAULT_MAX_MAP_COUNT; |
83345 | unsigned long sysctl_user_reserve_kbytes __read_mostly = 1UL << 17; /* 128MB */ | ||
83346 | unsigned long sysctl_admin_reserve_kbytes __read_mostly = 1UL << 13; /* 8MB */ | ||
83593 | +unsigned long sysctl_heap_stack_gap __read_mostly = 64*1024; | 83347 | +unsigned long sysctl_heap_stack_gap __read_mostly = 64*1024; |
83594 | /* | 83348 | /* |
83595 | * Make sure vm_committed_as in one cacheline and not cacheline shared with | 83349 | * Make sure vm_committed_as in one cacheline and not cacheline shared with |
83596 | * other variables. It can be updated by several CPUs frequently. | 83350 | * other variables. It can be updated by several CPUs frequently. |
83597 | @@ -239,6 +260,7 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma) | 83351 | @@ -247,6 +268,7 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma) |
83598 | struct vm_area_struct *next = vma->vm_next; | 83352 | struct vm_area_struct *next = vma->vm_next; |
83599 | 83353 | ||
83600 | might_sleep(); | 83354 | might_sleep(); |
@@ -83602,7 +83356,7 @@ index 0dceed8..a559c2e 100644 | |||
83602 | if (vma->vm_ops && vma->vm_ops->close) | 83356 | if (vma->vm_ops && vma->vm_ops->close) |
83603 | vma->vm_ops->close(vma); | 83357 | vma->vm_ops->close(vma); |
83604 | if (vma->vm_file) | 83358 | if (vma->vm_file) |
83605 | @@ -283,6 +305,7 @@ SYSCALL_DEFINE1(brk, unsigned long, brk) | 83359 | @@ -291,6 +313,7 @@ SYSCALL_DEFINE1(brk, unsigned long, brk) |
83606 | * not page aligned -Ram Gupta | 83360 | * not page aligned -Ram Gupta |
83607 | */ | 83361 | */ |
83608 | rlim = rlimit(RLIMIT_DATA); | 83362 | rlim = rlimit(RLIMIT_DATA); |
@@ -83610,7 +83364,7 @@ index 0dceed8..a559c2e 100644 | |||
83610 | if (rlim < RLIM_INFINITY && (brk - mm->start_brk) + | 83364 | if (rlim < RLIM_INFINITY && (brk - mm->start_brk) + |
83611 | (mm->end_data - mm->start_data) > rlim) | 83365 | (mm->end_data - mm->start_data) > rlim) |
83612 | goto out; | 83366 | goto out; |
83613 | @@ -897,6 +920,12 @@ static int | 83367 | @@ -933,6 +956,12 @@ static int |
83614 | can_vma_merge_before(struct vm_area_struct *vma, unsigned long vm_flags, | 83368 | can_vma_merge_before(struct vm_area_struct *vma, unsigned long vm_flags, |
83615 | struct anon_vma *anon_vma, struct file *file, pgoff_t vm_pgoff) | 83369 | struct anon_vma *anon_vma, struct file *file, pgoff_t vm_pgoff) |
83616 | { | 83370 | { |
@@ -83623,7 +83377,7 @@ index 0dceed8..a559c2e 100644 | |||
83623 | if (is_mergeable_vma(vma, file, vm_flags) && | 83377 | if (is_mergeable_vma(vma, file, vm_flags) && |
83624 | is_mergeable_anon_vma(anon_vma, vma->anon_vma, vma)) { | 83378 | is_mergeable_anon_vma(anon_vma, vma->anon_vma, vma)) { |
83625 | if (vma->vm_pgoff == vm_pgoff) | 83379 | if (vma->vm_pgoff == vm_pgoff) |
83626 | @@ -916,6 +945,12 @@ static int | 83380 | @@ -952,6 +981,12 @@ static int |
83627 | can_vma_merge_after(struct vm_area_struct *vma, unsigned long vm_flags, | 83381 | can_vma_merge_after(struct vm_area_struct *vma, unsigned long vm_flags, |
83628 | struct anon_vma *anon_vma, struct file *file, pgoff_t vm_pgoff) | 83382 | struct anon_vma *anon_vma, struct file *file, pgoff_t vm_pgoff) |
83629 | { | 83383 | { |
@@ -83636,7 +83390,7 @@ index 0dceed8..a559c2e 100644 | |||
83636 | if (is_mergeable_vma(vma, file, vm_flags) && | 83390 | if (is_mergeable_vma(vma, file, vm_flags) && |
83637 | is_mergeable_anon_vma(anon_vma, vma->anon_vma, vma)) { | 83391 | is_mergeable_anon_vma(anon_vma, vma->anon_vma, vma)) { |
83638 | pgoff_t vm_pglen; | 83392 | pgoff_t vm_pglen; |
83639 | @@ -958,13 +993,20 @@ can_vma_merge_after(struct vm_area_struct *vma, unsigned long vm_flags, | 83393 | @@ -994,13 +1029,20 @@ can_vma_merge_after(struct vm_area_struct *vma, unsigned long vm_flags, |
83640 | struct vm_area_struct *vma_merge(struct mm_struct *mm, | 83394 | struct vm_area_struct *vma_merge(struct mm_struct *mm, |
83641 | struct vm_area_struct *prev, unsigned long addr, | 83395 | struct vm_area_struct *prev, unsigned long addr, |
83642 | unsigned long end, unsigned long vm_flags, | 83396 | unsigned long end, unsigned long vm_flags, |
@@ -83658,7 +83412,7 @@ index 0dceed8..a559c2e 100644 | |||
83658 | /* | 83412 | /* |
83659 | * We later require that vma->vm_flags == vm_flags, | 83413 | * We later require that vma->vm_flags == vm_flags, |
83660 | * so this tests vma->vm_flags & VM_SPECIAL, too. | 83414 | * so this tests vma->vm_flags & VM_SPECIAL, too. |
83661 | @@ -980,6 +1022,15 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm, | 83415 | @@ -1016,6 +1058,15 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm, |
83662 | if (next && next->vm_end == end) /* cases 6, 7, 8 */ | 83416 | if (next && next->vm_end == end) /* cases 6, 7, 8 */ |
83663 | next = next->vm_next; | 83417 | next = next->vm_next; |
83664 | 83418 | ||
@@ -83674,7 +83428,7 @@ index 0dceed8..a559c2e 100644 | |||
83674 | /* | 83428 | /* |
83675 | * Can it merge with the predecessor? | 83429 | * Can it merge with the predecessor? |
83676 | */ | 83430 | */ |
83677 | @@ -999,9 +1050,24 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm, | 83431 | @@ -1035,9 +1086,24 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm, |
83678 | /* cases 1, 6 */ | 83432 | /* cases 1, 6 */ |
83679 | err = vma_adjust(prev, prev->vm_start, | 83433 | err = vma_adjust(prev, prev->vm_start, |
83680 | next->vm_end, prev->vm_pgoff, NULL); | 83434 | next->vm_end, prev->vm_pgoff, NULL); |
@@ -83700,7 +83454,7 @@ index 0dceed8..a559c2e 100644 | |||
83700 | if (err) | 83454 | if (err) |
83701 | return NULL; | 83455 | return NULL; |
83702 | khugepaged_enter_vma_merge(prev); | 83456 | khugepaged_enter_vma_merge(prev); |
83703 | @@ -1015,12 +1081,27 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm, | 83457 | @@ -1051,12 +1117,27 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm, |
83704 | mpol_equal(policy, vma_policy(next)) && | 83458 | mpol_equal(policy, vma_policy(next)) && |
83705 | can_vma_merge_before(next, vm_flags, | 83459 | can_vma_merge_before(next, vm_flags, |
83706 | anon_vma, file, pgoff+pglen)) { | 83460 | anon_vma, file, pgoff+pglen)) { |
@@ -83730,7 +83484,7 @@ index 0dceed8..a559c2e 100644 | |||
83730 | if (err) | 83484 | if (err) |
83731 | return NULL; | 83485 | return NULL; |
83732 | khugepaged_enter_vma_merge(area); | 83486 | khugepaged_enter_vma_merge(area); |
83733 | @@ -1129,8 +1210,10 @@ none: | 83487 | @@ -1165,8 +1246,10 @@ none: |
83734 | void vm_stat_account(struct mm_struct *mm, unsigned long flags, | 83488 | void vm_stat_account(struct mm_struct *mm, unsigned long flags, |
83735 | struct file *file, long pages) | 83489 | struct file *file, long pages) |
83736 | { | 83490 | { |
@@ -83743,7 +83497,7 @@ index 0dceed8..a559c2e 100644 | |||
83743 | 83497 | ||
83744 | mm->total_vm += pages; | 83498 | mm->total_vm += pages; |
83745 | 83499 | ||
83746 | @@ -1138,7 +1221,7 @@ void vm_stat_account(struct mm_struct *mm, unsigned long flags, | 83500 | @@ -1174,7 +1257,7 @@ void vm_stat_account(struct mm_struct *mm, unsigned long flags, |
83747 | mm->shared_vm += pages; | 83501 | mm->shared_vm += pages; |
83748 | if ((flags & (VM_EXEC|VM_WRITE)) == VM_EXEC) | 83502 | if ((flags & (VM_EXEC|VM_WRITE)) == VM_EXEC) |
83749 | mm->exec_vm += pages; | 83503 | mm->exec_vm += pages; |
@@ -83752,7 +83506,7 @@ index 0dceed8..a559c2e 100644 | |||
83752 | mm->stack_vm += pages; | 83506 | mm->stack_vm += pages; |
83753 | } | 83507 | } |
83754 | #endif /* CONFIG_PROC_FS */ | 83508 | #endif /* CONFIG_PROC_FS */ |
83755 | @@ -1177,7 +1260,7 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr, | 83509 | @@ -1213,7 +1296,7 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr, |
83756 | * (the exception is when the underlying filesystem is noexec | 83510 | * (the exception is when the underlying filesystem is noexec |
83757 | * mounted, in which case we dont add PROT_EXEC.) | 83511 | * mounted, in which case we dont add PROT_EXEC.) |
83758 | */ | 83512 | */ |
@@ -83761,7 +83515,7 @@ index 0dceed8..a559c2e 100644 | |||
83761 | if (!(file && (file->f_path.mnt->mnt_flags & MNT_NOEXEC))) | 83515 | if (!(file && (file->f_path.mnt->mnt_flags & MNT_NOEXEC))) |
83762 | prot |= PROT_EXEC; | 83516 | prot |= PROT_EXEC; |
83763 | 83517 | ||
83764 | @@ -1203,7 +1286,7 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr, | 83518 | @@ -1239,7 +1322,7 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr, |
83765 | /* Obtain the address to map to. we verify (or select) it and ensure | 83519 | /* Obtain the address to map to. we verify (or select) it and ensure |
83766 | * that it represents a valid section of the address space. | 83520 | * that it represents a valid section of the address space. |
83767 | */ | 83521 | */ |
@@ -83770,12 +83524,19 @@ index 0dceed8..a559c2e 100644 | |||
83770 | if (addr & ~PAGE_MASK) | 83524 | if (addr & ~PAGE_MASK) |
83771 | return addr; | 83525 | return addr; |
83772 | 83526 | ||
83773 | @@ -1214,6 +1297,36 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr, | 83527 | @@ -1250,6 +1333,43 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr, |
83774 | vm_flags = calc_vm_prot_bits(prot) | calc_vm_flag_bits(flags) | | 83528 | vm_flags = calc_vm_prot_bits(prot) | calc_vm_flag_bits(flags) | |
83775 | mm->def_flags | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC; | 83529 | mm->def_flags | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC; |
83776 | 83530 | ||
83777 | +#ifdef CONFIG_PAX_MPROTECT | 83531 | +#ifdef CONFIG_PAX_MPROTECT |
83778 | + if (mm->pax_flags & MF_PAX_MPROTECT) { | 83532 | + if (mm->pax_flags & MF_PAX_MPROTECT) { |
83533 | + | ||
83534 | +#ifdef CONFIG_GRKERNSEC_RWXMAP_LOG | ||
83535 | + if (file && (vm_flags & VM_EXEC) && mm->binfmt && | ||
83536 | + mm->binfmt->handle_mmap) | ||
83537 | + mm->binfmt->handle_mmap(file); | ||
83538 | +#endif | ||
83539 | + | ||
83779 | +#ifndef CONFIG_PAX_MPROTECT_COMPAT | 83540 | +#ifndef CONFIG_PAX_MPROTECT_COMPAT |
83780 | + if ((vm_flags & (VM_WRITE | VM_EXEC)) == (VM_WRITE | VM_EXEC)) { | 83541 | + if ((vm_flags & (VM_WRITE | VM_EXEC)) == (VM_WRITE | VM_EXEC)) { |
83781 | + gr_log_rwxmmap(file); | 83542 | + gr_log_rwxmmap(file); |
@@ -83807,7 +83568,7 @@ index 0dceed8..a559c2e 100644 | |||
83807 | if (flags & MAP_LOCKED) | 83568 | if (flags & MAP_LOCKED) |
83808 | if (!can_do_mlock()) | 83569 | if (!can_do_mlock()) |
83809 | return -EPERM; | 83570 | return -EPERM; |
83810 | @@ -1225,6 +1338,7 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr, | 83571 | @@ -1261,6 +1381,7 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr, |
83811 | locked += mm->locked_vm; | 83572 | locked += mm->locked_vm; |
83812 | lock_limit = rlimit(RLIMIT_MEMLOCK); | 83573 | lock_limit = rlimit(RLIMIT_MEMLOCK); |
83813 | lock_limit >>= PAGE_SHIFT; | 83574 | lock_limit >>= PAGE_SHIFT; |
@@ -83815,7 +83576,7 @@ index 0dceed8..a559c2e 100644 | |||
83815 | if (locked > lock_limit && !capable(CAP_IPC_LOCK)) | 83576 | if (locked > lock_limit && !capable(CAP_IPC_LOCK)) |
83816 | return -EAGAIN; | 83577 | return -EAGAIN; |
83817 | } | 83578 | } |
83818 | @@ -1305,6 +1419,9 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr, | 83579 | @@ -1341,6 +1462,9 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr, |
83819 | vm_flags |= VM_NORESERVE; | 83580 | vm_flags |= VM_NORESERVE; |
83820 | } | 83581 | } |
83821 | 83582 | ||
@@ -83825,7 +83586,7 @@ index 0dceed8..a559c2e 100644 | |||
83825 | addr = mmap_region(file, addr, len, vm_flags, pgoff); | 83586 | addr = mmap_region(file, addr, len, vm_flags, pgoff); |
83826 | if (!IS_ERR_VALUE(addr) && | 83587 | if (!IS_ERR_VALUE(addr) && |
83827 | ((vm_flags & VM_LOCKED) || | 83588 | ((vm_flags & VM_LOCKED) || |
83828 | @@ -1396,7 +1513,7 @@ int vma_wants_writenotify(struct vm_area_struct *vma) | 83589 | @@ -1432,7 +1556,7 @@ int vma_wants_writenotify(struct vm_area_struct *vma) |
83829 | vm_flags_t vm_flags = vma->vm_flags; | 83590 | vm_flags_t vm_flags = vma->vm_flags; |
83830 | 83591 | ||
83831 | /* If it was private or non-writable, the write bit is already clear */ | 83592 | /* If it was private or non-writable, the write bit is already clear */ |
@@ -83834,7 +83595,7 @@ index 0dceed8..a559c2e 100644 | |||
83834 | return 0; | 83595 | return 0; |
83835 | 83596 | ||
83836 | /* The backer wishes to know when pages are first written to? */ | 83597 | /* The backer wishes to know when pages are first written to? */ |
83837 | @@ -1444,16 +1561,30 @@ unsigned long mmap_region(struct file *file, unsigned long addr, | 83598 | @@ -1480,7 +1604,22 @@ unsigned long mmap_region(struct file *file, unsigned long addr, |
83838 | unsigned long charged = 0; | 83599 | unsigned long charged = 0; |
83839 | struct inode *inode = file ? file_inode(file) : NULL; | 83600 | struct inode *inode = file ? file_inode(file) : NULL; |
83840 | 83601 | ||
@@ -83848,6 +83609,17 @@ index 0dceed8..a559c2e 100644 | |||
83848 | + */ | 83609 | + */ |
83849 | + verify_mm_writelocked(mm); | 83610 | + verify_mm_writelocked(mm); |
83850 | + | 83611 | + |
83612 | /* Check against address space limit. */ | ||
83613 | + | ||
83614 | +#ifdef CONFIG_PAX_RANDMMAP | ||
83615 | + if (!(mm->pax_flags & MF_PAX_RANDMMAP) || (vm_flags & (VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC))) | ||
83616 | +#endif | ||
83617 | + | ||
83618 | if (!may_expand_vm(mm, len >> PAGE_SHIFT)) { | ||
83619 | unsigned long nr_pages; | ||
83620 | |||
83621 | @@ -1499,11 +1638,10 @@ unsigned long mmap_region(struct file *file, unsigned long addr, | ||
83622 | |||
83851 | /* Clear old maps */ | 83623 | /* Clear old maps */ |
83852 | error = -ENOMEM; | 83624 | error = -ENOMEM; |
83853 | -munmap_back: | 83625 | -munmap_back: |
@@ -83858,16 +83630,8 @@ index 0dceed8..a559c2e 100644 | |||
83858 | + BUG_ON(find_vma_links(mm, addr, addr + len, &prev, &rb_link, &rb_parent)); | 83630 | + BUG_ON(find_vma_links(mm, addr, addr + len, &prev, &rb_link, &rb_parent)); |
83859 | } | 83631 | } |
83860 | 83632 | ||
83861 | /* Check against address space limit. */ | 83633 | /* |
83862 | + | 83634 | @@ -1534,6 +1672,16 @@ munmap_back: |
83863 | +#ifdef CONFIG_PAX_RANDMMAP | ||
83864 | + if (!(mm->pax_flags & MF_PAX_RANDMMAP) || (vm_flags & (VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC))) | ||
83865 | +#endif | ||
83866 | + | ||
83867 | if (!may_expand_vm(mm, len >> PAGE_SHIFT)) | ||
83868 | return -ENOMEM; | ||
83869 | |||
83870 | @@ -1485,6 +1616,16 @@ munmap_back: | ||
83871 | goto unacct_error; | 83635 | goto unacct_error; |
83872 | } | 83636 | } |
83873 | 83637 | ||
@@ -83884,7 +83648,7 @@ index 0dceed8..a559c2e 100644 | |||
83884 | vma->vm_mm = mm; | 83648 | vma->vm_mm = mm; |
83885 | vma->vm_start = addr; | 83649 | vma->vm_start = addr; |
83886 | vma->vm_end = addr + len; | 83650 | vma->vm_end = addr + len; |
83887 | @@ -1509,6 +1650,13 @@ munmap_back: | 83651 | @@ -1558,6 +1706,13 @@ munmap_back: |
83888 | if (error) | 83652 | if (error) |
83889 | goto unmap_and_free_vma; | 83653 | goto unmap_and_free_vma; |
83890 | 83654 | ||
@@ -83898,7 +83662,7 @@ index 0dceed8..a559c2e 100644 | |||
83898 | /* Can addr have changed?? | 83662 | /* Can addr have changed?? |
83899 | * | 83663 | * |
83900 | * Answer: Yes, several device drivers can do it in their | 83664 | * Answer: Yes, several device drivers can do it in their |
83901 | @@ -1547,6 +1695,11 @@ munmap_back: | 83665 | @@ -1596,6 +1751,11 @@ munmap_back: |
83902 | vma_link(mm, vma, prev, rb_link, rb_parent); | 83666 | vma_link(mm, vma, prev, rb_link, rb_parent); |
83903 | file = vma->vm_file; | 83667 | file = vma->vm_file; |
83904 | 83668 | ||
@@ -83910,7 +83674,7 @@ index 0dceed8..a559c2e 100644 | |||
83910 | /* Once vma denies write, undo our temporary denial count */ | 83674 | /* Once vma denies write, undo our temporary denial count */ |
83911 | if (correct_wcount) | 83675 | if (correct_wcount) |
83912 | atomic_inc(&inode->i_writecount); | 83676 | atomic_inc(&inode->i_writecount); |
83913 | @@ -1554,6 +1707,7 @@ out: | 83677 | @@ -1603,6 +1763,7 @@ out: |
83914 | perf_event_mmap(vma); | 83678 | perf_event_mmap(vma); |
83915 | 83679 | ||
83916 | vm_stat_account(mm, vm_flags, file, len >> PAGE_SHIFT); | 83680 | vm_stat_account(mm, vm_flags, file, len >> PAGE_SHIFT); |
@@ -83918,7 +83682,7 @@ index 0dceed8..a559c2e 100644 | |||
83918 | if (vm_flags & VM_LOCKED) { | 83682 | if (vm_flags & VM_LOCKED) { |
83919 | if (!((vm_flags & VM_SPECIAL) || is_vm_hugetlb_page(vma) || | 83683 | if (!((vm_flags & VM_SPECIAL) || is_vm_hugetlb_page(vma) || |
83920 | vma == get_gate_vma(current->mm))) | 83684 | vma == get_gate_vma(current->mm))) |
83921 | @@ -1577,6 +1731,12 @@ unmap_and_free_vma: | 83685 | @@ -1626,6 +1787,12 @@ unmap_and_free_vma: |
83922 | unmap_region(mm, vma, prev, vma->vm_start, vma->vm_end); | 83686 | unmap_region(mm, vma, prev, vma->vm_start, vma->vm_end); |
83923 | charged = 0; | 83687 | charged = 0; |
83924 | free_vma: | 83688 | free_vma: |
@@ -83931,7 +83695,7 @@ index 0dceed8..a559c2e 100644 | |||
83931 | kmem_cache_free(vm_area_cachep, vma); | 83695 | kmem_cache_free(vm_area_cachep, vma); |
83932 | unacct_error: | 83696 | unacct_error: |
83933 | if (charged) | 83697 | if (charged) |
83934 | @@ -1584,7 +1744,63 @@ unacct_error: | 83698 | @@ -1633,7 +1800,63 @@ unacct_error: |
83935 | return error; | 83699 | return error; |
83936 | } | 83700 | } |
83937 | 83701 | ||
@@ -83940,7 +83704,7 @@ index 0dceed8..a559c2e 100644 | |||
83940 | +unsigned long gr_rand_threadstack_offset(const struct mm_struct *mm, const struct file *filp, unsigned long flags) | 83704 | +unsigned long gr_rand_threadstack_offset(const struct mm_struct *mm, const struct file *filp, unsigned long flags) |
83941 | +{ | 83705 | +{ |
83942 | + if ((mm->pax_flags & MF_PAX_RANDMMAP) && !filp && (flags & MAP_STACK)) | 83706 | + if ((mm->pax_flags & MF_PAX_RANDMMAP) && !filp && (flags & MAP_STACK)) |
83943 | + return ((random32() & 0xFF) + 1) << PAGE_SHIFT; | 83707 | + return ((prandom_u32() & 0xFF) + 1) << PAGE_SHIFT; |
83944 | + | 83708 | + |
83945 | + return 0; | 83709 | + return 0; |
83946 | +} | 83710 | +} |
@@ -83967,7 +83731,7 @@ index 0dceed8..a559c2e 100644 | |||
83967 | + return sysctl_heap_stack_gap <= vma->vm_start - addr - len; | 83731 | + return sysctl_heap_stack_gap <= vma->vm_start - addr - len; |
83968 | +#ifdef CONFIG_STACK_GROWSUP | 83732 | +#ifdef CONFIG_STACK_GROWSUP |
83969 | + else if (vma->vm_prev && (vma->vm_prev->vm_flags & VM_GROWSUP)) | 83733 | + else if (vma->vm_prev && (vma->vm_prev->vm_flags & VM_GROWSUP)) |
83970 | + return addr - vma->vm_prev->vm_end <= sysctl_heap_stack_gap; | 83734 | + return addr - vma->vm_prev->vm_end >= sysctl_heap_stack_gap; |
83971 | +#endif | 83735 | +#endif |
83972 | + else if (offset) | 83736 | + else if (offset) |
83973 | + return offset <= vma->vm_start - addr - len; | 83737 | + return offset <= vma->vm_start - addr - len; |
@@ -83996,7 +83760,7 @@ index 0dceed8..a559c2e 100644 | |||
83996 | { | 83760 | { |
83997 | /* | 83761 | /* |
83998 | * We implement the search by looking for an rbtree node that | 83762 | * We implement the search by looking for an rbtree node that |
83999 | @@ -1632,11 +1848,29 @@ unsigned long unmapped_area(struct vm_unmapped_area_info *info) | 83763 | @@ -1681,11 +1904,29 @@ unsigned long unmapped_area(struct vm_unmapped_area_info *info) |
84000 | } | 83764 | } |
84001 | } | 83765 | } |
84002 | 83766 | ||
@@ -84027,7 +83791,7 @@ index 0dceed8..a559c2e 100644 | |||
84027 | if (gap_end >= low_limit && gap_end - gap_start >= length) | 83791 | if (gap_end >= low_limit && gap_end - gap_start >= length) |
84028 | goto found; | 83792 | goto found; |
84029 | 83793 | ||
84030 | @@ -1686,7 +1920,7 @@ found: | 83794 | @@ -1735,7 +1976,7 @@ found: |
84031 | return gap_start; | 83795 | return gap_start; |
84032 | } | 83796 | } |
84033 | 83797 | ||
@@ -84036,7 +83800,7 @@ index 0dceed8..a559c2e 100644 | |||
84036 | { | 83800 | { |
84037 | struct mm_struct *mm = current->mm; | 83801 | struct mm_struct *mm = current->mm; |
84038 | struct vm_area_struct *vma; | 83802 | struct vm_area_struct *vma; |
84039 | @@ -1740,6 +1974,24 @@ check_current: | 83803 | @@ -1789,6 +2030,24 @@ check_current: |
84040 | gap_end = vma->vm_start; | 83804 | gap_end = vma->vm_start; |
84041 | if (gap_end < low_limit) | 83805 | if (gap_end < low_limit) |
84042 | return -ENOMEM; | 83806 | return -ENOMEM; |
@@ -84061,7 +83825,7 @@ index 0dceed8..a559c2e 100644 | |||
84061 | if (gap_start <= high_limit && gap_end - gap_start >= length) | 83825 | if (gap_start <= high_limit && gap_end - gap_start >= length) |
84062 | goto found; | 83826 | goto found; |
84063 | 83827 | ||
84064 | @@ -1803,6 +2055,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, | 83828 | @@ -1852,6 +2111,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, |
84065 | struct mm_struct *mm = current->mm; | 83829 | struct mm_struct *mm = current->mm; |
84066 | struct vm_area_struct *vma; | 83830 | struct vm_area_struct *vma; |
84067 | struct vm_unmapped_area_info info; | 83831 | struct vm_unmapped_area_info info; |
@@ -84069,7 +83833,7 @@ index 0dceed8..a559c2e 100644 | |||
84069 | 83833 | ||
84070 | if (len > TASK_SIZE) | 83834 | if (len > TASK_SIZE) |
84071 | return -ENOMEM; | 83835 | return -ENOMEM; |
84072 | @@ -1810,29 +2063,45 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, | 83836 | @@ -1859,29 +2119,45 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, |
84073 | if (flags & MAP_FIXED) | 83837 | if (flags & MAP_FIXED) |
84074 | return addr; | 83838 | return addr; |
84075 | 83839 | ||
@@ -84118,7 +83882,7 @@ index 0dceed8..a559c2e 100644 | |||
84118 | mm->free_area_cache = addr; | 83882 | mm->free_area_cache = addr; |
84119 | } | 83883 | } |
84120 | 83884 | ||
84121 | @@ -1850,6 +2119,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, | 83885 | @@ -1899,6 +2175,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, |
84122 | struct mm_struct *mm = current->mm; | 83886 | struct mm_struct *mm = current->mm; |
84123 | unsigned long addr = addr0; | 83887 | unsigned long addr = addr0; |
84124 | struct vm_unmapped_area_info info; | 83888 | struct vm_unmapped_area_info info; |
@@ -84126,7 +83890,7 @@ index 0dceed8..a559c2e 100644 | |||
84126 | 83890 | ||
84127 | /* requested length too big for entire address space */ | 83891 | /* requested length too big for entire address space */ |
84128 | if (len > TASK_SIZE) | 83892 | if (len > TASK_SIZE) |
84129 | @@ -1858,12 +2128,15 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, | 83893 | @@ -1907,12 +2184,15 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, |
84130 | if (flags & MAP_FIXED) | 83894 | if (flags & MAP_FIXED) |
84131 | return addr; | 83895 | return addr; |
84132 | 83896 | ||
@@ -84144,7 +83908,7 @@ index 0dceed8..a559c2e 100644 | |||
84144 | return addr; | 83908 | return addr; |
84145 | } | 83909 | } |
84146 | 83910 | ||
84147 | @@ -1872,6 +2145,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, | 83911 | @@ -1921,6 +2201,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, |
84148 | info.low_limit = PAGE_SIZE; | 83912 | info.low_limit = PAGE_SIZE; |
84149 | info.high_limit = mm->mmap_base; | 83913 | info.high_limit = mm->mmap_base; |
84150 | info.align_mask = 0; | 83914 | info.align_mask = 0; |
@@ -84152,7 +83916,7 @@ index 0dceed8..a559c2e 100644 | |||
84152 | addr = vm_unmapped_area(&info); | 83916 | addr = vm_unmapped_area(&info); |
84153 | 83917 | ||
84154 | /* | 83918 | /* |
84155 | @@ -1884,6 +2158,12 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, | 83919 | @@ -1933,6 +2214,12 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, |
84156 | VM_BUG_ON(addr != -ENOMEM); | 83920 | VM_BUG_ON(addr != -ENOMEM); |
84157 | info.flags = 0; | 83921 | info.flags = 0; |
84158 | info.low_limit = TASK_UNMAPPED_BASE; | 83922 | info.low_limit = TASK_UNMAPPED_BASE; |
@@ -84165,7 +83929,7 @@ index 0dceed8..a559c2e 100644 | |||
84165 | info.high_limit = TASK_SIZE; | 83929 | info.high_limit = TASK_SIZE; |
84166 | addr = vm_unmapped_area(&info); | 83930 | addr = vm_unmapped_area(&info); |
84167 | } | 83931 | } |
84168 | @@ -1894,6 +2174,12 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, | 83932 | @@ -1943,6 +2230,12 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, |
84169 | 83933 | ||
84170 | void arch_unmap_area_topdown(struct mm_struct *mm, unsigned long addr) | 83934 | void arch_unmap_area_topdown(struct mm_struct *mm, unsigned long addr) |
84171 | { | 83935 | { |
@@ -84178,7 +83942,7 @@ index 0dceed8..a559c2e 100644 | |||
84178 | /* | 83942 | /* |
84179 | * Is this a new hole at the highest possible address? | 83943 | * Is this a new hole at the highest possible address? |
84180 | */ | 83944 | */ |
84181 | @@ -1901,8 +2187,10 @@ void arch_unmap_area_topdown(struct mm_struct *mm, unsigned long addr) | 83945 | @@ -1950,8 +2243,10 @@ void arch_unmap_area_topdown(struct mm_struct *mm, unsigned long addr) |
84182 | mm->free_area_cache = addr; | 83946 | mm->free_area_cache = addr; |
84183 | 83947 | ||
84184 | /* dont allow allocations above current base */ | 83948 | /* dont allow allocations above current base */ |
@@ -84190,7 +83954,7 @@ index 0dceed8..a559c2e 100644 | |||
84190 | } | 83954 | } |
84191 | 83955 | ||
84192 | unsigned long | 83956 | unsigned long |
84193 | @@ -2001,6 +2289,28 @@ find_vma_prev(struct mm_struct *mm, unsigned long addr, | 83957 | @@ -2047,6 +2342,28 @@ find_vma_prev(struct mm_struct *mm, unsigned long addr, |
84194 | return vma; | 83958 | return vma; |
84195 | } | 83959 | } |
84196 | 83960 | ||
@@ -84219,7 +83983,7 @@ index 0dceed8..a559c2e 100644 | |||
84219 | /* | 83983 | /* |
84220 | * Verify that the stack growth is acceptable and | 83984 | * Verify that the stack growth is acceptable and |
84221 | * update accounting. This is shared with both the | 83985 | * update accounting. This is shared with both the |
84222 | @@ -2017,6 +2327,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns | 83986 | @@ -2063,6 +2380,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns |
84223 | return -ENOMEM; | 83987 | return -ENOMEM; |
84224 | 83988 | ||
84225 | /* Stack limit test */ | 83989 | /* Stack limit test */ |
@@ -84227,7 +83991,7 @@ index 0dceed8..a559c2e 100644 | |||
84227 | if (size > ACCESS_ONCE(rlim[RLIMIT_STACK].rlim_cur)) | 83991 | if (size > ACCESS_ONCE(rlim[RLIMIT_STACK].rlim_cur)) |
84228 | return -ENOMEM; | 83992 | return -ENOMEM; |
84229 | 83993 | ||
84230 | @@ -2027,6 +2338,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns | 83994 | @@ -2073,6 +2391,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns |
84231 | locked = mm->locked_vm + grow; | 83995 | locked = mm->locked_vm + grow; |
84232 | limit = ACCESS_ONCE(rlim[RLIMIT_MEMLOCK].rlim_cur); | 83996 | limit = ACCESS_ONCE(rlim[RLIMIT_MEMLOCK].rlim_cur); |
84233 | limit >>= PAGE_SHIFT; | 83997 | limit >>= PAGE_SHIFT; |
@@ -84235,7 +83999,7 @@ index 0dceed8..a559c2e 100644 | |||
84235 | if (locked > limit && !capable(CAP_IPC_LOCK)) | 83999 | if (locked > limit && !capable(CAP_IPC_LOCK)) |
84236 | return -ENOMEM; | 84000 | return -ENOMEM; |
84237 | } | 84001 | } |
84238 | @@ -2056,37 +2368,48 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns | 84002 | @@ -2102,37 +2421,48 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns |
84239 | * PA-RISC uses this for its stack; IA64 for its Register Backing Store. | 84003 | * PA-RISC uses this for its stack; IA64 for its Register Backing Store. |
84240 | * vma is the last one with address > vma->vm_end. Have to extend vma. | 84004 | * vma is the last one with address > vma->vm_end. Have to extend vma. |
84241 | */ | 84005 | */ |
@@ -84293,7 +84057,7 @@ index 0dceed8..a559c2e 100644 | |||
84293 | unsigned long size, grow; | 84057 | unsigned long size, grow; |
84294 | 84058 | ||
84295 | size = address - vma->vm_start; | 84059 | size = address - vma->vm_start; |
84296 | @@ -2121,6 +2444,8 @@ int expand_upwards(struct vm_area_struct *vma, unsigned long address) | 84060 | @@ -2167,6 +2497,8 @@ int expand_upwards(struct vm_area_struct *vma, unsigned long address) |
84297 | } | 84061 | } |
84298 | } | 84062 | } |
84299 | } | 84063 | } |
@@ -84302,7 +84066,7 @@ index 0dceed8..a559c2e 100644 | |||
84302 | vma_unlock_anon_vma(vma); | 84066 | vma_unlock_anon_vma(vma); |
84303 | khugepaged_enter_vma_merge(vma); | 84067 | khugepaged_enter_vma_merge(vma); |
84304 | validate_mm(vma->vm_mm); | 84068 | validate_mm(vma->vm_mm); |
84305 | @@ -2135,6 +2460,8 @@ int expand_downwards(struct vm_area_struct *vma, | 84069 | @@ -2181,6 +2513,8 @@ int expand_downwards(struct vm_area_struct *vma, |
84306 | unsigned long address) | 84070 | unsigned long address) |
84307 | { | 84071 | { |
84308 | int error; | 84072 | int error; |
@@ -84311,7 +84075,7 @@ index 0dceed8..a559c2e 100644 | |||
84311 | 84075 | ||
84312 | /* | 84076 | /* |
84313 | * We must make sure the anon_vma is allocated | 84077 | * We must make sure the anon_vma is allocated |
84314 | @@ -2148,6 +2475,15 @@ int expand_downwards(struct vm_area_struct *vma, | 84078 | @@ -2194,6 +2528,15 @@ int expand_downwards(struct vm_area_struct *vma, |
84315 | if (error) | 84079 | if (error) |
84316 | return error; | 84080 | return error; |
84317 | 84081 | ||
@@ -84327,7 +84091,7 @@ index 0dceed8..a559c2e 100644 | |||
84327 | vma_lock_anon_vma(vma); | 84091 | vma_lock_anon_vma(vma); |
84328 | 84092 | ||
84329 | /* | 84093 | /* |
84330 | @@ -2157,9 +2493,17 @@ int expand_downwards(struct vm_area_struct *vma, | 84094 | @@ -2203,9 +2546,17 @@ int expand_downwards(struct vm_area_struct *vma, |
84331 | */ | 84095 | */ |
84332 | 84096 | ||
84333 | /* Somebody else might have raced and expanded it already */ | 84097 | /* Somebody else might have raced and expanded it already */ |
@@ -84346,7 +84110,7 @@ index 0dceed8..a559c2e 100644 | |||
84346 | size = vma->vm_end - address; | 84110 | size = vma->vm_end - address; |
84347 | grow = (vma->vm_start - address) >> PAGE_SHIFT; | 84111 | grow = (vma->vm_start - address) >> PAGE_SHIFT; |
84348 | 84112 | ||
84349 | @@ -2184,13 +2528,27 @@ int expand_downwards(struct vm_area_struct *vma, | 84113 | @@ -2230,13 +2581,27 @@ int expand_downwards(struct vm_area_struct *vma, |
84350 | vma->vm_pgoff -= grow; | 84114 | vma->vm_pgoff -= grow; |
84351 | anon_vma_interval_tree_post_update_vma(vma); | 84115 | anon_vma_interval_tree_post_update_vma(vma); |
84352 | vma_gap_update(vma); | 84116 | vma_gap_update(vma); |
@@ -84374,7 +84138,7 @@ index 0dceed8..a559c2e 100644 | |||
84374 | khugepaged_enter_vma_merge(vma); | 84138 | khugepaged_enter_vma_merge(vma); |
84375 | validate_mm(vma->vm_mm); | 84139 | validate_mm(vma->vm_mm); |
84376 | return error; | 84140 | return error; |
84377 | @@ -2288,6 +2646,13 @@ static void remove_vma_list(struct mm_struct *mm, struct vm_area_struct *vma) | 84141 | @@ -2334,6 +2699,13 @@ static void remove_vma_list(struct mm_struct *mm, struct vm_area_struct *vma) |
84378 | do { | 84142 | do { |
84379 | long nrpages = vma_pages(vma); | 84143 | long nrpages = vma_pages(vma); |
84380 | 84144 | ||
@@ -84388,7 +84152,7 @@ index 0dceed8..a559c2e 100644 | |||
84388 | if (vma->vm_flags & VM_ACCOUNT) | 84152 | if (vma->vm_flags & VM_ACCOUNT) |
84389 | nr_accounted += nrpages; | 84153 | nr_accounted += nrpages; |
84390 | vm_stat_account(mm, vma->vm_flags, vma->vm_file, -nrpages); | 84154 | vm_stat_account(mm, vma->vm_flags, vma->vm_file, -nrpages); |
84391 | @@ -2333,6 +2698,16 @@ detach_vmas_to_be_unmapped(struct mm_struct *mm, struct vm_area_struct *vma, | 84155 | @@ -2379,6 +2751,16 @@ detach_vmas_to_be_unmapped(struct mm_struct *mm, struct vm_area_struct *vma, |
84392 | insertion_point = (prev ? &prev->vm_next : &mm->mmap); | 84156 | insertion_point = (prev ? &prev->vm_next : &mm->mmap); |
84393 | vma->vm_prev = NULL; | 84157 | vma->vm_prev = NULL; |
84394 | do { | 84158 | do { |
@@ -84405,7 +84169,7 @@ index 0dceed8..a559c2e 100644 | |||
84405 | vma_rb_erase(vma, &mm->mm_rb); | 84169 | vma_rb_erase(vma, &mm->mm_rb); |
84406 | mm->map_count--; | 84170 | mm->map_count--; |
84407 | tail_vma = vma; | 84171 | tail_vma = vma; |
84408 | @@ -2364,14 +2739,33 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma, | 84172 | @@ -2410,14 +2792,33 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma, |
84409 | struct vm_area_struct *new; | 84173 | struct vm_area_struct *new; |
84410 | int err = -ENOMEM; | 84174 | int err = -ENOMEM; |
84411 | 84175 | ||
@@ -84439,7 +84203,7 @@ index 0dceed8..a559c2e 100644 | |||
84439 | /* most fields are the same, copy all, and then fixup */ | 84203 | /* most fields are the same, copy all, and then fixup */ |
84440 | *new = *vma; | 84204 | *new = *vma; |
84441 | 84205 | ||
84442 | @@ -2384,6 +2778,22 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma, | 84206 | @@ -2430,6 +2831,22 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma, |
84443 | new->vm_pgoff += ((addr - vma->vm_start) >> PAGE_SHIFT); | 84207 | new->vm_pgoff += ((addr - vma->vm_start) >> PAGE_SHIFT); |
84444 | } | 84208 | } |
84445 | 84209 | ||
@@ -84462,7 +84226,7 @@ index 0dceed8..a559c2e 100644 | |||
84462 | pol = mpol_dup(vma_policy(vma)); | 84226 | pol = mpol_dup(vma_policy(vma)); |
84463 | if (IS_ERR(pol)) { | 84227 | if (IS_ERR(pol)) { |
84464 | err = PTR_ERR(pol); | 84228 | err = PTR_ERR(pol); |
84465 | @@ -2406,6 +2816,36 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma, | 84229 | @@ -2452,6 +2869,36 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma, |
84466 | else | 84230 | else |
84467 | err = vma_adjust(vma, vma->vm_start, addr, vma->vm_pgoff, new); | 84231 | err = vma_adjust(vma, vma->vm_start, addr, vma->vm_pgoff, new); |
84468 | 84232 | ||
@@ -84499,7 +84263,7 @@ index 0dceed8..a559c2e 100644 | |||
84499 | /* Success. */ | 84263 | /* Success. */ |
84500 | if (!err) | 84264 | if (!err) |
84501 | return 0; | 84265 | return 0; |
84502 | @@ -2415,10 +2855,18 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma, | 84266 | @@ -2461,10 +2908,18 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma, |
84503 | new->vm_ops->close(new); | 84267 | new->vm_ops->close(new); |
84504 | if (new->vm_file) | 84268 | if (new->vm_file) |
84505 | fput(new->vm_file); | 84269 | fput(new->vm_file); |
@@ -84519,7 +84283,7 @@ index 0dceed8..a559c2e 100644 | |||
84519 | kmem_cache_free(vm_area_cachep, new); | 84283 | kmem_cache_free(vm_area_cachep, new); |
84520 | out_err: | 84284 | out_err: |
84521 | return err; | 84285 | return err; |
84522 | @@ -2431,6 +2879,15 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma, | 84286 | @@ -2477,6 +2932,15 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma, |
84523 | int split_vma(struct mm_struct *mm, struct vm_area_struct *vma, | 84287 | int split_vma(struct mm_struct *mm, struct vm_area_struct *vma, |
84524 | unsigned long addr, int new_below) | 84288 | unsigned long addr, int new_below) |
84525 | { | 84289 | { |
@@ -84535,7 +84299,7 @@ index 0dceed8..a559c2e 100644 | |||
84535 | if (mm->map_count >= sysctl_max_map_count) | 84299 | if (mm->map_count >= sysctl_max_map_count) |
84536 | return -ENOMEM; | 84300 | return -ENOMEM; |
84537 | 84301 | ||
84538 | @@ -2442,11 +2899,30 @@ int split_vma(struct mm_struct *mm, struct vm_area_struct *vma, | 84302 | @@ -2488,11 +2952,30 @@ int split_vma(struct mm_struct *mm, struct vm_area_struct *vma, |
84539 | * work. This now handles partial unmappings. | 84303 | * work. This now handles partial unmappings. |
84540 | * Jeremy Fitzhardinge <jeremy@goop.org> | 84304 | * Jeremy Fitzhardinge <jeremy@goop.org> |
84541 | */ | 84305 | */ |
@@ -84566,7 +84330,7 @@ index 0dceed8..a559c2e 100644 | |||
84566 | if ((start & ~PAGE_MASK) || start > TASK_SIZE || len > TASK_SIZE-start) | 84330 | if ((start & ~PAGE_MASK) || start > TASK_SIZE || len > TASK_SIZE-start) |
84567 | return -EINVAL; | 84331 | return -EINVAL; |
84568 | 84332 | ||
84569 | @@ -2521,6 +2997,8 @@ int do_munmap(struct mm_struct *mm, unsigned long start, size_t len) | 84333 | @@ -2567,6 +3050,8 @@ int do_munmap(struct mm_struct *mm, unsigned long start, size_t len) |
84570 | /* Fix up all other VM information */ | 84334 | /* Fix up all other VM information */ |
84571 | remove_vma_list(mm, vma); | 84335 | remove_vma_list(mm, vma); |
84572 | 84336 | ||
@@ -84575,7 +84339,7 @@ index 0dceed8..a559c2e 100644 | |||
84575 | return 0; | 84339 | return 0; |
84576 | } | 84340 | } |
84577 | 84341 | ||
84578 | @@ -2529,6 +3007,13 @@ int vm_munmap(unsigned long start, size_t len) | 84342 | @@ -2575,6 +3060,13 @@ int vm_munmap(unsigned long start, size_t len) |
84579 | int ret; | 84343 | int ret; |
84580 | struct mm_struct *mm = current->mm; | 84344 | struct mm_struct *mm = current->mm; |
84581 | 84345 | ||
@@ -84589,7 +84353,7 @@ index 0dceed8..a559c2e 100644 | |||
84589 | down_write(&mm->mmap_sem); | 84353 | down_write(&mm->mmap_sem); |
84590 | ret = do_munmap(mm, start, len); | 84354 | ret = do_munmap(mm, start, len); |
84591 | up_write(&mm->mmap_sem); | 84355 | up_write(&mm->mmap_sem); |
84592 | @@ -2542,16 +3027,6 @@ SYSCALL_DEFINE2(munmap, unsigned long, addr, size_t, len) | 84356 | @@ -2588,16 +3080,6 @@ SYSCALL_DEFINE2(munmap, unsigned long, addr, size_t, len) |
84593 | return vm_munmap(addr, len); | 84357 | return vm_munmap(addr, len); |
84594 | } | 84358 | } |
84595 | 84359 | ||
@@ -84606,7 +84370,7 @@ index 0dceed8..a559c2e 100644 | |||
84606 | /* | 84370 | /* |
84607 | * this is really a simplified "do_mmap". it only handles | 84371 | * this is really a simplified "do_mmap". it only handles |
84608 | * anonymous maps. eventually we may be able to do some | 84372 | * anonymous maps. eventually we may be able to do some |
84609 | @@ -2565,6 +3040,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) | 84373 | @@ -2611,6 +3093,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) |
84610 | struct rb_node ** rb_link, * rb_parent; | 84374 | struct rb_node ** rb_link, * rb_parent; |
84611 | pgoff_t pgoff = addr >> PAGE_SHIFT; | 84375 | pgoff_t pgoff = addr >> PAGE_SHIFT; |
84612 | int error; | 84376 | int error; |
@@ -84614,7 +84378,7 @@ index 0dceed8..a559c2e 100644 | |||
84614 | 84378 | ||
84615 | len = PAGE_ALIGN(len); | 84379 | len = PAGE_ALIGN(len); |
84616 | if (!len) | 84380 | if (!len) |
84617 | @@ -2572,16 +3048,30 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) | 84381 | @@ -2618,16 +3101,30 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) |
84618 | 84382 | ||
84619 | flags = VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags; | 84383 | flags = VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags; |
84620 | 84384 | ||
@@ -84646,7 +84410,7 @@ index 0dceed8..a559c2e 100644 | |||
84646 | locked += mm->locked_vm; | 84410 | locked += mm->locked_vm; |
84647 | lock_limit = rlimit(RLIMIT_MEMLOCK); | 84411 | lock_limit = rlimit(RLIMIT_MEMLOCK); |
84648 | lock_limit >>= PAGE_SHIFT; | 84412 | lock_limit >>= PAGE_SHIFT; |
84649 | @@ -2598,21 +3088,20 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) | 84413 | @@ -2644,21 +3141,20 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) |
84650 | /* | 84414 | /* |
84651 | * Clear old maps. this also does some error checking for us | 84415 | * Clear old maps. this also does some error checking for us |
84652 | */ | 84416 | */ |
@@ -84671,7 +84435,7 @@ index 0dceed8..a559c2e 100644 | |||
84671 | return -ENOMEM; | 84435 | return -ENOMEM; |
84672 | 84436 | ||
84673 | /* Can we just expand an old private anonymous mapping? */ | 84437 | /* Can we just expand an old private anonymous mapping? */ |
84674 | @@ -2626,7 +3115,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) | 84438 | @@ -2672,7 +3168,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) |
84675 | */ | 84439 | */ |
84676 | vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL); | 84440 | vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL); |
84677 | if (!vma) { | 84441 | if (!vma) { |
@@ -84680,7 +84444,7 @@ index 0dceed8..a559c2e 100644 | |||
84680 | return -ENOMEM; | 84444 | return -ENOMEM; |
84681 | } | 84445 | } |
84682 | 84446 | ||
84683 | @@ -2640,9 +3129,10 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) | 84447 | @@ -2686,9 +3182,10 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) |
84684 | vma_link(mm, vma, prev, rb_link, rb_parent); | 84448 | vma_link(mm, vma, prev, rb_link, rb_parent); |
84685 | out: | 84449 | out: |
84686 | perf_event_mmap(vma); | 84450 | perf_event_mmap(vma); |
@@ -84693,7 +84457,7 @@ index 0dceed8..a559c2e 100644 | |||
84693 | return addr; | 84457 | return addr; |
84694 | } | 84458 | } |
84695 | 84459 | ||
84696 | @@ -2704,6 +3194,7 @@ void exit_mmap(struct mm_struct *mm) | 84460 | @@ -2750,6 +3247,7 @@ void exit_mmap(struct mm_struct *mm) |
84697 | while (vma) { | 84461 | while (vma) { |
84698 | if (vma->vm_flags & VM_ACCOUNT) | 84462 | if (vma->vm_flags & VM_ACCOUNT) |
84699 | nr_accounted += vma_pages(vma); | 84463 | nr_accounted += vma_pages(vma); |
@@ -84701,7 +84465,7 @@ index 0dceed8..a559c2e 100644 | |||
84701 | vma = remove_vma(vma); | 84465 | vma = remove_vma(vma); |
84702 | } | 84466 | } |
84703 | vm_unacct_memory(nr_accounted); | 84467 | vm_unacct_memory(nr_accounted); |
84704 | @@ -2720,6 +3211,13 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma) | 84468 | @@ -2766,6 +3264,13 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma) |
84705 | struct vm_area_struct *prev; | 84469 | struct vm_area_struct *prev; |
84706 | struct rb_node **rb_link, *rb_parent; | 84470 | struct rb_node **rb_link, *rb_parent; |
84707 | 84471 | ||
@@ -84715,7 +84479,7 @@ index 0dceed8..a559c2e 100644 | |||
84715 | /* | 84479 | /* |
84716 | * The vm_pgoff of a purely anonymous vma should be irrelevant | 84480 | * The vm_pgoff of a purely anonymous vma should be irrelevant |
84717 | * until its first write fault, when page's anon_vma and index | 84481 | * until its first write fault, when page's anon_vma and index |
84718 | @@ -2743,7 +3241,21 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma) | 84482 | @@ -2789,7 +3294,21 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma) |
84719 | security_vm_enough_memory_mm(mm, vma_pages(vma))) | 84483 | security_vm_enough_memory_mm(mm, vma_pages(vma))) |
84720 | return -ENOMEM; | 84484 | return -ENOMEM; |
84721 | 84485 | ||
@@ -84737,7 +84501,7 @@ index 0dceed8..a559c2e 100644 | |||
84737 | return 0; | 84501 | return 0; |
84738 | } | 84502 | } |
84739 | 84503 | ||
84740 | @@ -2763,6 +3275,8 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap, | 84504 | @@ -2809,6 +3328,8 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap, |
84741 | struct mempolicy *pol; | 84505 | struct mempolicy *pol; |
84742 | bool faulted_in_anon_vma = true; | 84506 | bool faulted_in_anon_vma = true; |
84743 | 84507 | ||
@@ -84746,7 +84510,7 @@ index 0dceed8..a559c2e 100644 | |||
84746 | /* | 84510 | /* |
84747 | * If anonymous vma has not yet been faulted, update new pgoff | 84511 | * If anonymous vma has not yet been faulted, update new pgoff |
84748 | * to match new location, to increase its chance of merging. | 84512 | * to match new location, to increase its chance of merging. |
84749 | @@ -2829,6 +3343,39 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap, | 84513 | @@ -2875,6 +3396,39 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap, |
84750 | return NULL; | 84514 | return NULL; |
84751 | } | 84515 | } |
84752 | 84516 | ||
@@ -84786,7 +84550,7 @@ index 0dceed8..a559c2e 100644 | |||
84786 | /* | 84550 | /* |
84787 | * Return true if the calling process may expand its vm space by the passed | 84551 | * Return true if the calling process may expand its vm space by the passed |
84788 | * number of pages | 84552 | * number of pages |
84789 | @@ -2840,6 +3387,7 @@ int may_expand_vm(struct mm_struct *mm, unsigned long npages) | 84553 | @@ -2886,6 +3440,7 @@ int may_expand_vm(struct mm_struct *mm, unsigned long npages) |
84790 | 84554 | ||
84791 | lim = rlimit(RLIMIT_AS) >> PAGE_SHIFT; | 84555 | lim = rlimit(RLIMIT_AS) >> PAGE_SHIFT; |
84792 | 84556 | ||
@@ -84794,7 +84558,7 @@ index 0dceed8..a559c2e 100644 | |||
84794 | if (cur + npages > lim) | 84558 | if (cur + npages > lim) |
84795 | return 0; | 84559 | return 0; |
84796 | return 1; | 84560 | return 1; |
84797 | @@ -2910,6 +3458,22 @@ int install_special_mapping(struct mm_struct *mm, | 84561 | @@ -2956,6 +3511,22 @@ int install_special_mapping(struct mm_struct *mm, |
84798 | vma->vm_start = addr; | 84562 | vma->vm_start = addr; |
84799 | vma->vm_end = addr + len; | 84563 | vma->vm_end = addr + len; |
84800 | 84564 | ||
@@ -84818,7 +84582,7 @@ index 0dceed8..a559c2e 100644 | |||
84818 | vma->vm_page_prot = vm_get_page_prot(vma->vm_flags); | 84582 | vma->vm_page_prot = vm_get_page_prot(vma->vm_flags); |
84819 | 84583 | ||
84820 | diff --git a/mm/mprotect.c b/mm/mprotect.c | 84584 | diff --git a/mm/mprotect.c b/mm/mprotect.c |
84821 | index 94722a4..07d9926 100644 | 84585 | index 94722a4..e661e29 100644 |
84822 | --- a/mm/mprotect.c | 84586 | --- a/mm/mprotect.c |
84823 | +++ b/mm/mprotect.c | 84587 | +++ b/mm/mprotect.c |
84824 | @@ -23,10 +23,18 @@ | 84588 | @@ -23,10 +23,18 @@ |
@@ -85029,7 +84793,7 @@ index 94722a4..07d9926 100644 | |||
85029 | /* newflags >> 4 shift VM_MAY% in place of VM_% */ | 84793 | /* newflags >> 4 shift VM_MAY% in place of VM_% */ |
85030 | if ((newflags & ~(newflags >> 4)) & (VM_READ | VM_WRITE | VM_EXEC)) { | 84794 | if ((newflags & ~(newflags >> 4)) & (VM_READ | VM_WRITE | VM_EXEC)) { |
85031 | + if (prot & (PROT_WRITE | PROT_EXEC)) | 84795 | + if (prot & (PROT_WRITE | PROT_EXEC)) |
85032 | + gr_log_rwxmprotect(vma->vm_file); | 84796 | + gr_log_rwxmprotect(vma); |
85033 | + | 84797 | + |
85034 | + error = -EACCES; | 84798 | + error = -EACCES; |
85035 | + goto out; | 84799 | + goto out; |
@@ -85157,18 +84921,18 @@ index 463a257..c0c7a92 100644 | |||
85157 | out: | 84921 | out: |
85158 | if (ret & ~PAGE_MASK) | 84922 | if (ret & ~PAGE_MASK) |
85159 | diff --git a/mm/nommu.c b/mm/nommu.c | 84923 | diff --git a/mm/nommu.c b/mm/nommu.c |
85160 | index e001768..9b52b30 100644 | 84924 | index 298884d..5f74980 100644 |
85161 | --- a/mm/nommu.c | 84925 | --- a/mm/nommu.c |
85162 | +++ b/mm/nommu.c | 84926 | +++ b/mm/nommu.c |
85163 | @@ -63,7 +63,6 @@ int sysctl_overcommit_memory = OVERCOMMIT_GUESS; /* heuristic overcommit */ | 84927 | @@ -65,7 +65,6 @@ int sysctl_max_map_count = DEFAULT_MAX_MAP_COUNT; |
85164 | int sysctl_overcommit_ratio = 50; /* default is 50% */ | ||
85165 | int sysctl_max_map_count = DEFAULT_MAX_MAP_COUNT; | ||
85166 | int sysctl_nr_trim_pages = CONFIG_NOMMU_INITIAL_TRIM_EXCESS; | 84928 | int sysctl_nr_trim_pages = CONFIG_NOMMU_INITIAL_TRIM_EXCESS; |
84929 | unsigned long sysctl_user_reserve_kbytes __read_mostly = 1UL << 17; /* 128MB */ | ||
84930 | unsigned long sysctl_admin_reserve_kbytes __read_mostly = 1UL << 13; /* 8MB */ | ||
85167 | -int heap_stack_gap = 0; | 84931 | -int heap_stack_gap = 0; |
85168 | 84932 | ||
85169 | atomic_long_t mmap_pages_allocated; | 84933 | atomic_long_t mmap_pages_allocated; |
85170 | 84934 | ||
85171 | @@ -841,15 +840,6 @@ struct vm_area_struct *find_vma(struct mm_struct *mm, unsigned long addr) | 84935 | @@ -842,15 +841,6 @@ struct vm_area_struct *find_vma(struct mm_struct *mm, unsigned long addr) |
85172 | EXPORT_SYMBOL(find_vma); | 84936 | EXPORT_SYMBOL(find_vma); |
85173 | 84937 | ||
85174 | /* | 84938 | /* |
@@ -85184,7 +84948,7 @@ index e001768..9b52b30 100644 | |||
85184 | * expand a stack to a given address | 84948 | * expand a stack to a given address |
85185 | * - not supported under NOMMU conditions | 84949 | * - not supported under NOMMU conditions |
85186 | */ | 84950 | */ |
85187 | @@ -1560,6 +1550,7 @@ int split_vma(struct mm_struct *mm, struct vm_area_struct *vma, | 84951 | @@ -1561,6 +1551,7 @@ int split_vma(struct mm_struct *mm, struct vm_area_struct *vma, |
85188 | 84952 | ||
85189 | /* most fields are the same, copy all, and then fixup */ | 84953 | /* most fields are the same, copy all, and then fixup */ |
85190 | *new = *vma; | 84954 | *new = *vma; |
@@ -85192,7 +84956,7 @@ index e001768..9b52b30 100644 | |||
85192 | *region = *vma->vm_region; | 84956 | *region = *vma->vm_region; |
85193 | new->vm_region = region; | 84957 | new->vm_region = region; |
85194 | 84958 | ||
85195 | @@ -1992,8 +1983,8 @@ int generic_file_remap_pages(struct vm_area_struct *vma, unsigned long addr, | 84959 | @@ -1995,8 +1986,8 @@ int generic_file_remap_pages(struct vm_area_struct *vma, unsigned long addr, |
85196 | } | 84960 | } |
85197 | EXPORT_SYMBOL(generic_file_remap_pages); | 84961 | EXPORT_SYMBOL(generic_file_remap_pages); |
85198 | 84962 | ||
@@ -85203,7 +84967,7 @@ index e001768..9b52b30 100644 | |||
85203 | { | 84967 | { |
85204 | struct vm_area_struct *vma; | 84968 | struct vm_area_struct *vma; |
85205 | 84969 | ||
85206 | @@ -2034,8 +2025,8 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm, | 84970 | @@ -2037,8 +2028,8 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm, |
85207 | * | 84971 | * |
85208 | * The caller must hold a reference on @mm. | 84972 | * The caller must hold a reference on @mm. |
85209 | */ | 84973 | */ |
@@ -85214,7 +84978,7 @@ index e001768..9b52b30 100644 | |||
85214 | { | 84978 | { |
85215 | return __access_remote_vm(NULL, mm, addr, buf, len, write); | 84979 | return __access_remote_vm(NULL, mm, addr, buf, len, write); |
85216 | } | 84980 | } |
85217 | @@ -2044,7 +2035,7 @@ int access_remote_vm(struct mm_struct *mm, unsigned long addr, | 84981 | @@ -2047,7 +2038,7 @@ int access_remote_vm(struct mm_struct *mm, unsigned long addr, |
85218 | * Access another process' address space. | 84982 | * Access another process' address space. |
85219 | * - source/target buffer must be kernel space | 84983 | * - source/target buffer must be kernel space |
85220 | */ | 84984 | */ |
@@ -85224,7 +84988,7 @@ index e001768..9b52b30 100644 | |||
85224 | struct mm_struct *mm; | 84988 | struct mm_struct *mm; |
85225 | 84989 | ||
85226 | diff --git a/mm/page-writeback.c b/mm/page-writeback.c | 84990 | diff --git a/mm/page-writeback.c b/mm/page-writeback.c |
85227 | index efe6814..64b4701 100644 | 84991 | index 4514ad7..92eaa1c 100644 |
85228 | --- a/mm/page-writeback.c | 84992 | --- a/mm/page-writeback.c |
85229 | +++ b/mm/page-writeback.c | 84993 | +++ b/mm/page-writeback.c |
85230 | @@ -659,7 +659,7 @@ unsigned long bdi_dirty_limit(struct backing_dev_info *bdi, unsigned long dirty) | 84994 | @@ -659,7 +659,7 @@ unsigned long bdi_dirty_limit(struct backing_dev_info *bdi, unsigned long dirty) |
@@ -85246,18 +85010,18 @@ index efe6814..64b4701 100644 | |||
85246 | .next = NULL, | 85010 | .next = NULL, |
85247 | }; | 85011 | }; |
85248 | diff --git a/mm/page_alloc.c b/mm/page_alloc.c | 85012 | diff --git a/mm/page_alloc.c b/mm/page_alloc.c |
85249 | index ab62b75..410422f 100644 | 85013 | index 2ee0fd3..6e2edfb 100644 |
85250 | --- a/mm/page_alloc.c | 85014 | --- a/mm/page_alloc.c |
85251 | +++ b/mm/page_alloc.c | 85015 | +++ b/mm/page_alloc.c |
85252 | @@ -59,6 +59,7 @@ | 85016 | @@ -60,6 +60,7 @@ |
85253 | #include <linux/migrate.h> | ||
85254 | #include <linux/page-debug-flags.h> | 85017 | #include <linux/page-debug-flags.h> |
85018 | #include <linux/hugetlb.h> | ||
85255 | #include <linux/sched/rt.h> | 85019 | #include <linux/sched/rt.h> |
85256 | +#include <linux/random.h> | 85020 | +#include <linux/random.h> |
85257 | 85021 | ||
85258 | #include <asm/tlbflush.h> | 85022 | #include <asm/tlbflush.h> |
85259 | #include <asm/div64.h> | 85023 | #include <asm/div64.h> |
85260 | @@ -344,7 +345,7 @@ out: | 85024 | @@ -345,7 +346,7 @@ out: |
85261 | * This usage means that zero-order pages may not be compound. | 85025 | * This usage means that zero-order pages may not be compound. |
85262 | */ | 85026 | */ |
85263 | 85027 | ||
@@ -85266,7 +85030,7 @@ index ab62b75..410422f 100644 | |||
85266 | { | 85030 | { |
85267 | __free_pages_ok(page, compound_order(page)); | 85031 | __free_pages_ok(page, compound_order(page)); |
85268 | } | 85032 | } |
85269 | @@ -701,6 +702,10 @@ static bool free_pages_prepare(struct page *page, unsigned int order) | 85033 | @@ -702,6 +703,10 @@ static bool free_pages_prepare(struct page *page, unsigned int order) |
85270 | int i; | 85034 | int i; |
85271 | int bad = 0; | 85035 | int bad = 0; |
85272 | 85036 | ||
@@ -85277,7 +85041,7 @@ index ab62b75..410422f 100644 | |||
85277 | trace_mm_page_free(page, order); | 85041 | trace_mm_page_free(page, order); |
85278 | kmemcheck_free_shadow(page, order); | 85042 | kmemcheck_free_shadow(page, order); |
85279 | 85043 | ||
85280 | @@ -716,6 +721,12 @@ static bool free_pages_prepare(struct page *page, unsigned int order) | 85044 | @@ -717,6 +722,12 @@ static bool free_pages_prepare(struct page *page, unsigned int order) |
85281 | debug_check_no_obj_freed(page_address(page), | 85045 | debug_check_no_obj_freed(page_address(page), |
85282 | PAGE_SIZE << order); | 85046 | PAGE_SIZE << order); |
85283 | } | 85047 | } |
@@ -85290,7 +85054,7 @@ index ab62b75..410422f 100644 | |||
85290 | arch_free_page(page, order); | 85054 | arch_free_page(page, order); |
85291 | kernel_map_pages(page, 1 << order, 0); | 85055 | kernel_map_pages(page, 1 << order, 0); |
85292 | 85056 | ||
85293 | @@ -738,6 +749,19 @@ static void __free_pages_ok(struct page *page, unsigned int order) | 85057 | @@ -739,6 +750,19 @@ static void __free_pages_ok(struct page *page, unsigned int order) |
85294 | local_irq_restore(flags); | 85058 | local_irq_restore(flags); |
85295 | } | 85059 | } |
85296 | 85060 | ||
@@ -85310,7 +85074,7 @@ index ab62b75..410422f 100644 | |||
85310 | /* | 85074 | /* |
85311 | * Read access to zone->managed_pages is safe because it's unsigned long, | 85075 | * Read access to zone->managed_pages is safe because it's unsigned long, |
85312 | * but we still need to serialize writers. Currently all callers of | 85076 | * but we still need to serialize writers. Currently all callers of |
85313 | @@ -760,6 +784,19 @@ void __meminit __free_pages_bootmem(struct page *page, unsigned int order) | 85077 | @@ -761,6 +785,19 @@ void __meminit __free_pages_bootmem(struct page *page, unsigned int order) |
85314 | set_page_count(p, 0); | 85078 | set_page_count(p, 0); |
85315 | } | 85079 | } |
85316 | 85080 | ||
@@ -85330,7 +85094,7 @@ index ab62b75..410422f 100644 | |||
85330 | page_zone(page)->managed_pages += 1 << order; | 85094 | page_zone(page)->managed_pages += 1 << order; |
85331 | set_page_refcounted(page); | 85095 | set_page_refcounted(page); |
85332 | __free_pages(page, order); | 85096 | __free_pages(page, order); |
85333 | @@ -869,8 +906,10 @@ static int prep_new_page(struct page *page, int order, gfp_t gfp_flags) | 85097 | @@ -870,8 +907,10 @@ static int prep_new_page(struct page *page, int order, gfp_t gfp_flags) |
85334 | arch_alloc_page(page, order); | 85098 | arch_alloc_page(page, order); |
85335 | kernel_map_pages(page, 1 << order, 1); | 85099 | kernel_map_pages(page, 1 << order, 1); |
85336 | 85100 | ||
@@ -85342,10 +85106,10 @@ index ab62b75..410422f 100644 | |||
85342 | if (order && (gfp_flags & __GFP_COMP)) | 85106 | if (order && (gfp_flags & __GFP_COMP)) |
85343 | prep_compound_page(page, order); | 85107 | prep_compound_page(page, order); |
85344 | diff --git a/mm/page_io.c b/mm/page_io.c | 85108 | diff --git a/mm/page_io.c b/mm/page_io.c |
85345 | index 6182870..4bba6a2 100644 | 85109 | index a8a3ef4..7260a60 100644 |
85346 | --- a/mm/page_io.c | 85110 | --- a/mm/page_io.c |
85347 | +++ b/mm/page_io.c | 85111 | +++ b/mm/page_io.c |
85348 | @@ -205,7 +205,7 @@ int swap_writepage(struct page *page, struct writeback_control *wbc) | 85112 | @@ -214,7 +214,7 @@ int __swap_writepage(struct page *page, struct writeback_control *wbc, |
85349 | struct file *swap_file = sis->swap_file; | 85113 | struct file *swap_file = sis->swap_file; |
85350 | struct address_space *mapping = swap_file->f_mapping; | 85114 | struct address_space *mapping = swap_file->f_mapping; |
85351 | struct iovec iov = { | 85115 | struct iovec iov = { |
@@ -85419,7 +85183,7 @@ index fd26d04..0cea1b0 100644 | |||
85419 | if (!mm || IS_ERR(mm)) { | 85183 | if (!mm || IS_ERR(mm)) { |
85420 | rc = IS_ERR(mm) ? PTR_ERR(mm) : -ESRCH; | 85184 | rc = IS_ERR(mm) ? PTR_ERR(mm) : -ESRCH; |
85421 | diff --git a/mm/rmap.c b/mm/rmap.c | 85185 | diff --git a/mm/rmap.c b/mm/rmap.c |
85422 | index 807c96b..0e05279 100644 | 85186 | index 6280da8..b5c090e 100644 |
85423 | --- a/mm/rmap.c | 85187 | --- a/mm/rmap.c |
85424 | +++ b/mm/rmap.c | 85188 | +++ b/mm/rmap.c |
85425 | @@ -163,6 +163,10 @@ int anon_vma_prepare(struct vm_area_struct *vma) | 85189 | @@ -163,6 +163,10 @@ int anon_vma_prepare(struct vm_area_struct *vma) |
@@ -85508,20 +85272,33 @@ index 807c96b..0e05279 100644 | |||
85508 | { | 85272 | { |
85509 | struct anon_vma_chain *avc; | 85273 | struct anon_vma_chain *avc; |
85510 | struct anon_vma *anon_vma; | 85274 | struct anon_vma *anon_vma; |
85275 | @@ -373,8 +407,10 @@ static void anon_vma_ctor(void *data) | ||
85276 | void __init anon_vma_init(void) | ||
85277 | { | ||
85278 | anon_vma_cachep = kmem_cache_create("anon_vma", sizeof(struct anon_vma), | ||
85279 | - 0, SLAB_DESTROY_BY_RCU|SLAB_PANIC, anon_vma_ctor); | ||
85280 | - anon_vma_chain_cachep = KMEM_CACHE(anon_vma_chain, SLAB_PANIC); | ||
85281 | + 0, SLAB_DESTROY_BY_RCU|SLAB_PANIC|SLAB_NO_SANITIZE, | ||
85282 | + anon_vma_ctor); | ||
85283 | + anon_vma_chain_cachep = KMEM_CACHE(anon_vma_chain, | ||
85284 | + SLAB_PANIC|SLAB_NO_SANITIZE); | ||
85285 | } | ||
85286 | |||
85287 | /* | ||
85511 | diff --git a/mm/shmem.c b/mm/shmem.c | 85288 | diff --git a/mm/shmem.c b/mm/shmem.c |
85512 | index 1c44af7..cefe9a6 100644 | 85289 | index 5e6a842..b41916e 100644 |
85513 | --- a/mm/shmem.c | 85290 | --- a/mm/shmem.c |
85514 | +++ b/mm/shmem.c | 85291 | +++ b/mm/shmem.c |
85515 | @@ -31,7 +31,7 @@ | 85292 | @@ -33,7 +33,7 @@ |
85516 | #include <linux/export.h> | ||
85517 | #include <linux/swap.h> | 85293 | #include <linux/swap.h> |
85294 | #include <linux/aio.h> | ||
85518 | 85295 | ||
85519 | -static struct vfsmount *shm_mnt; | 85296 | -static struct vfsmount *shm_mnt; |
85520 | +struct vfsmount *shm_mnt; | 85297 | +struct vfsmount *shm_mnt; |
85521 | 85298 | ||
85522 | #ifdef CONFIG_SHMEM | 85299 | #ifdef CONFIG_SHMEM |
85523 | /* | 85300 | /* |
85524 | @@ -75,7 +75,7 @@ static struct vfsmount *shm_mnt; | 85301 | @@ -77,7 +77,7 @@ static struct vfsmount *shm_mnt; |
85525 | #define BOGO_DIRENT_SIZE 20 | 85302 | #define BOGO_DIRENT_SIZE 20 |
85526 | 85303 | ||
85527 | /* Symlink up to this size is kmalloc'ed instead of using a swappable page */ | 85304 | /* Symlink up to this size is kmalloc'ed instead of using a swappable page */ |
@@ -85530,7 +85307,7 @@ index 1c44af7..cefe9a6 100644 | |||
85530 | 85307 | ||
85531 | /* | 85308 | /* |
85532 | * shmem_fallocate and shmem_writepage communicate via inode->i_private | 85309 | * shmem_fallocate and shmem_writepage communicate via inode->i_private |
85533 | @@ -2201,6 +2201,11 @@ static const struct xattr_handler *shmem_xattr_handlers[] = { | 85310 | @@ -2203,6 +2203,11 @@ static const struct xattr_handler *shmem_xattr_handlers[] = { |
85534 | static int shmem_xattr_validate(const char *name) | 85311 | static int shmem_xattr_validate(const char *name) |
85535 | { | 85312 | { |
85536 | struct { const char *prefix; size_t len; } arr[] = { | 85313 | struct { const char *prefix; size_t len; } arr[] = { |
@@ -85542,7 +85319,7 @@ index 1c44af7..cefe9a6 100644 | |||
85542 | { XATTR_SECURITY_PREFIX, XATTR_SECURITY_PREFIX_LEN }, | 85319 | { XATTR_SECURITY_PREFIX, XATTR_SECURITY_PREFIX_LEN }, |
85543 | { XATTR_TRUSTED_PREFIX, XATTR_TRUSTED_PREFIX_LEN } | 85320 | { XATTR_TRUSTED_PREFIX, XATTR_TRUSTED_PREFIX_LEN } |
85544 | }; | 85321 | }; |
85545 | @@ -2256,6 +2261,15 @@ static int shmem_setxattr(struct dentry *dentry, const char *name, | 85322 | @@ -2258,6 +2263,15 @@ static int shmem_setxattr(struct dentry *dentry, const char *name, |
85546 | if (err) | 85323 | if (err) |
85547 | return err; | 85324 | return err; |
85548 | 85325 | ||
@@ -85558,7 +85335,7 @@ index 1c44af7..cefe9a6 100644 | |||
85558 | return simple_xattr_set(&info->xattrs, name, value, size, flags); | 85335 | return simple_xattr_set(&info->xattrs, name, value, size, flags); |
85559 | } | 85336 | } |
85560 | 85337 | ||
85561 | @@ -2568,8 +2582,7 @@ int shmem_fill_super(struct super_block *sb, void *data, int silent) | 85338 | @@ -2570,8 +2584,7 @@ int shmem_fill_super(struct super_block *sb, void *data, int silent) |
85562 | int err = -ENOMEM; | 85339 | int err = -ENOMEM; |
85563 | 85340 | ||
85564 | /* Round up to L1_CACHE_BYTES to resist false sharing */ | 85341 | /* Round up to L1_CACHE_BYTES to resist false sharing */ |
@@ -85569,19 +85346,10 @@ index 1c44af7..cefe9a6 100644 | |||
85569 | return -ENOMEM; | 85346 | return -ENOMEM; |
85570 | 85347 | ||
85571 | diff --git a/mm/slab.c b/mm/slab.c | 85348 | diff --git a/mm/slab.c b/mm/slab.c |
85572 | index 856e4a1..fafb820 100644 | 85349 | index bd88411..2d46fd6 100644 |
85573 | --- a/mm/slab.c | 85350 | --- a/mm/slab.c |
85574 | +++ b/mm/slab.c | 85351 | +++ b/mm/slab.c |
85575 | @@ -306,7 +306,7 @@ struct kmem_list3 { | 85352 | @@ -366,10 +366,12 @@ static void kmem_cache_node_init(struct kmem_cache_node *parent) |
85576 | * Need this for bootstrapping a per node allocator. | ||
85577 | */ | ||
85578 | #define NUM_INIT_LISTS (3 * MAX_NUMNODES) | ||
85579 | -static struct kmem_list3 __initdata initkmem_list3[NUM_INIT_LISTS]; | ||
85580 | +static struct kmem_list3 initkmem_list3[NUM_INIT_LISTS]; | ||
85581 | #define CACHE_CACHE 0 | ||
85582 | #define SIZE_AC MAX_NUMNODES | ||
85583 | #define SIZE_L3 (2 * MAX_NUMNODES) | ||
85584 | @@ -407,10 +407,10 @@ static void kmem_list3_init(struct kmem_list3 *parent) | ||
85585 | if ((x)->max_freeable < i) \ | 85353 | if ((x)->max_freeable < i) \ |
85586 | (x)->max_freeable = i; \ | 85354 | (x)->max_freeable = i; \ |
85587 | } while (0) | 85355 | } while (0) |
@@ -85593,10 +85361,21 @@ index 856e4a1..fafb820 100644 | |||
85593 | +#define STATS_INC_ALLOCMISS(x) atomic_inc_unchecked(&(x)->allocmiss) | 85361 | +#define STATS_INC_ALLOCMISS(x) atomic_inc_unchecked(&(x)->allocmiss) |
85594 | +#define STATS_INC_FREEHIT(x) atomic_inc_unchecked(&(x)->freehit) | 85362 | +#define STATS_INC_FREEHIT(x) atomic_inc_unchecked(&(x)->freehit) |
85595 | +#define STATS_INC_FREEMISS(x) atomic_inc_unchecked(&(x)->freemiss) | 85363 | +#define STATS_INC_FREEMISS(x) atomic_inc_unchecked(&(x)->freemiss) |
85364 | +#define STATS_INC_SANITIZED(x) atomic_inc_unchecked(&(x)->sanitized) | ||
85365 | +#define STATS_INC_NOT_SANITIZED(x) atomic_inc_unchecked(&(x)->not_sanitized) | ||
85596 | #else | 85366 | #else |
85597 | #define STATS_INC_ACTIVE(x) do { } while (0) | 85367 | #define STATS_INC_ACTIVE(x) do { } while (0) |
85598 | #define STATS_DEC_ACTIVE(x) do { } while (0) | 85368 | #define STATS_DEC_ACTIVE(x) do { } while (0) |
85599 | @@ -518,7 +518,7 @@ static inline void *index_to_obj(struct kmem_cache *cache, struct slab *slab, | 85369 | @@ -386,6 +388,8 @@ static void kmem_cache_node_init(struct kmem_cache_node *parent) |
85370 | #define STATS_INC_ALLOCMISS(x) do { } while (0) | ||
85371 | #define STATS_INC_FREEHIT(x) do { } while (0) | ||
85372 | #define STATS_INC_FREEMISS(x) do { } while (0) | ||
85373 | +#define STATS_INC_SANITIZED(x) do { } while (0) | ||
85374 | +#define STATS_INC_NOT_SANITIZED(x) do { } while (0) | ||
85375 | #endif | ||
85376 | |||
85377 | #if DEBUG | ||
85378 | @@ -477,7 +481,7 @@ static inline void *index_to_obj(struct kmem_cache *cache, struct slab *slab, | ||
85600 | * reciprocal_divide(offset, cache->reciprocal_buffer_size) | 85379 | * reciprocal_divide(offset, cache->reciprocal_buffer_size) |
85601 | */ | 85380 | */ |
85602 | static inline unsigned int obj_to_index(const struct kmem_cache *cache, | 85381 | static inline unsigned int obj_to_index(const struct kmem_cache *cache, |
@@ -85605,36 +85384,7 @@ index 856e4a1..fafb820 100644 | |||
85605 | { | 85384 | { |
85606 | u32 offset = (obj - slab->s_mem); | 85385 | u32 offset = (obj - slab->s_mem); |
85607 | return reciprocal_divide(offset, cache->reciprocal_buffer_size); | 85386 | return reciprocal_divide(offset, cache->reciprocal_buffer_size); |
85608 | @@ -539,12 +539,13 @@ EXPORT_SYMBOL(malloc_sizes); | 85387 | @@ -1384,7 +1388,7 @@ static int __cpuinit cpuup_callback(struct notifier_block *nfb, |
85609 | struct cache_names { | ||
85610 | char *name; | ||
85611 | char *name_dma; | ||
85612 | + char *name_usercopy; | ||
85613 | }; | ||
85614 | |||
85615 | static struct cache_names __initdata cache_names[] = { | ||
85616 | -#define CACHE(x) { .name = "size-" #x, .name_dma = "size-" #x "(DMA)" }, | ||
85617 | +#define CACHE(x) { .name = "size-" #x, .name_dma = "size-" #x "(DMA)", .name_usercopy = "size-" #x "(USERCOPY)" }, | ||
85618 | #include <linux/kmalloc_sizes.h> | ||
85619 | - {NULL,} | ||
85620 | + {NULL} | ||
85621 | #undef CACHE | ||
85622 | }; | ||
85623 | |||
85624 | @@ -729,6 +730,12 @@ static inline struct kmem_cache *__find_general_cachep(size_t size, | ||
85625 | if (unlikely(gfpflags & GFP_DMA)) | ||
85626 | return csizep->cs_dmacachep; | ||
85627 | #endif | ||
85628 | + | ||
85629 | +#ifdef CONFIG_PAX_USERCOPY_SLABS | ||
85630 | + if (unlikely(gfpflags & GFP_USERCOPY)) | ||
85631 | + return csizep->cs_usercopycachep; | ||
85632 | +#endif | ||
85633 | + | ||
85634 | return csizep->cs_cachep; | ||
85635 | } | ||
85636 | |||
85637 | @@ -1482,7 +1489,7 @@ static int __cpuinit cpuup_callback(struct notifier_block *nfb, | ||
85638 | return notifier_from_errno(err); | 85388 | return notifier_from_errno(err); |
85639 | } | 85389 | } |
85640 | 85390 | ||
@@ -85643,44 +85393,44 @@ index 856e4a1..fafb820 100644 | |||
85643 | &cpuup_callback, NULL, 0 | 85393 | &cpuup_callback, NULL, 0 |
85644 | }; | 85394 | }; |
85645 | 85395 | ||
85646 | @@ -1667,12 +1674,12 @@ void __init kmem_cache_init(void) | 85396 | @@ -1565,12 +1569,12 @@ void __init kmem_cache_init(void) |
85647 | */ | 85397 | */ |
85648 | 85398 | ||
85649 | sizes[INDEX_AC].cs_cachep = create_kmalloc_cache(names[INDEX_AC].name, | 85399 | kmalloc_caches[INDEX_AC] = create_kmalloc_cache("kmalloc-ac", |
85650 | - sizes[INDEX_AC].cs_size, ARCH_KMALLOC_FLAGS); | 85400 | - kmalloc_size(INDEX_AC), ARCH_KMALLOC_FLAGS); |
85651 | + sizes[INDEX_AC].cs_size, ARCH_KMALLOC_FLAGS|SLAB_USERCOPY); | 85401 | + kmalloc_size(INDEX_AC), SLAB_USERCOPY | ARCH_KMALLOC_FLAGS); |
85652 | 85402 | ||
85653 | if (INDEX_AC != INDEX_L3) | 85403 | if (INDEX_AC != INDEX_NODE) |
85654 | sizes[INDEX_L3].cs_cachep = | 85404 | kmalloc_caches[INDEX_NODE] = |
85655 | create_kmalloc_cache(names[INDEX_L3].name, | 85405 | create_kmalloc_cache("kmalloc-node", |
85656 | - sizes[INDEX_L3].cs_size, ARCH_KMALLOC_FLAGS); | 85406 | - kmalloc_size(INDEX_NODE), ARCH_KMALLOC_FLAGS); |
85657 | + sizes[INDEX_L3].cs_size, ARCH_KMALLOC_FLAGS|SLAB_USERCOPY); | 85407 | + kmalloc_size(INDEX_NODE), SLAB_USERCOPY | ARCH_KMALLOC_FLAGS); |
85658 | 85408 | ||
85659 | slab_early_init = 0; | 85409 | slab_early_init = 0; |
85660 | 85410 | ||
85661 | @@ -1686,13 +1693,20 @@ void __init kmem_cache_init(void) | 85411 | @@ -3583,6 +3587,21 @@ static inline void __cache_free(struct kmem_cache *cachep, void *objp, |
85662 | */ | 85412 | struct array_cache *ac = cpu_cache_get(cachep); |
85663 | if (!sizes->cs_cachep) | ||
85664 | sizes->cs_cachep = create_kmalloc_cache(names->name, | ||
85665 | - sizes->cs_size, ARCH_KMALLOC_FLAGS); | ||
85666 | + sizes->cs_size, ARCH_KMALLOC_FLAGS|SLAB_USERCOPY); | ||
85667 | 85413 | ||
85668 | #ifdef CONFIG_ZONE_DMA | 85414 | check_irq_off(); |
85669 | sizes->cs_dmacachep = create_kmalloc_cache( | ||
85670 | names->name_dma, sizes->cs_size, | ||
85671 | SLAB_CACHE_DMA|ARCH_KMALLOC_FLAGS); | ||
85672 | #endif | ||
85673 | + | 85415 | + |
85674 | +#ifdef CONFIG_PAX_USERCOPY_SLABS | 85416 | +#ifdef CONFIG_PAX_MEMORY_SANITIZE |
85675 | + sizes->cs_usercopycachep = create_kmalloc_cache( | 85417 | + if (pax_sanitize_slab) { |
85676 | + names->name_usercopy, sizes->cs_size, | 85418 | + if (!(cachep->flags & (SLAB_POISON | SLAB_NO_SANITIZE))) { |
85677 | + ARCH_KMALLOC_FLAGS|SLAB_USERCOPY); | 85419 | + memset(objp, PAX_MEMORY_SANITIZE_VALUE, cachep->object_size); |
85420 | + | ||
85421 | + if (cachep->ctor) | ||
85422 | + cachep->ctor(objp); | ||
85423 | + | ||
85424 | + STATS_INC_SANITIZED(cachep); | ||
85425 | + } else | ||
85426 | + STATS_INC_NOT_SANITIZED(cachep); | ||
85427 | + } | ||
85678 | +#endif | 85428 | +#endif |
85679 | + | 85429 | + |
85680 | sizes++; | 85430 | kmemleak_free_recursive(objp, cachep->flags); |
85681 | names++; | 85431 | objp = cache_free_debugcheck(cachep, objp, caller); |
85682 | } | 85432 | |
85683 | @@ -3924,6 +3938,7 @@ void kfree(const void *objp) | 85433 | @@ -3800,6 +3819,7 @@ void kfree(const void *objp) |
85684 | 85434 | ||
85685 | if (unlikely(ZERO_OR_NULL_PTR(objp))) | 85435 | if (unlikely(ZERO_OR_NULL_PTR(objp))) |
85686 | return; | 85436 | return; |
@@ -85688,7 +85438,7 @@ index 856e4a1..fafb820 100644 | |||
85688 | local_irq_save(flags); | 85438 | local_irq_save(flags); |
85689 | kfree_debugcheck(objp); | 85439 | kfree_debugcheck(objp); |
85690 | c = virt_to_cache(objp); | 85440 | c = virt_to_cache(objp); |
85691 | @@ -4365,10 +4380,10 @@ void slabinfo_show_stats(struct seq_file *m, struct kmem_cache *cachep) | 85441 | @@ -4241,14 +4261,22 @@ void slabinfo_show_stats(struct seq_file *m, struct kmem_cache *cachep) |
85692 | } | 85442 | } |
85693 | /* cpu stats */ | 85443 | /* cpu stats */ |
85694 | { | 85444 | { |
@@ -85703,7 +85453,19 @@ index 856e4a1..fafb820 100644 | |||
85703 | 85453 | ||
85704 | seq_printf(m, " : cpustat %6lu %6lu %6lu %6lu", | 85454 | seq_printf(m, " : cpustat %6lu %6lu %6lu %6lu", |
85705 | allochit, allocmiss, freehit, freemiss); | 85455 | allochit, allocmiss, freehit, freemiss); |
85706 | @@ -4600,13 +4615,71 @@ static const struct file_operations proc_slabstats_operations = { | 85456 | } |
85457 | +#ifdef CONFIG_PAX_MEMORY_SANITIZE | ||
85458 | + { | ||
85459 | + unsigned long sanitized = atomic_read_unchecked(&cachep->sanitized); | ||
85460 | + unsigned long not_sanitized = atomic_read_unchecked(&cachep->not_sanitized); | ||
85461 | + | ||
85462 | + seq_printf(m, " : pax %6lu %6lu", sanitized, not_sanitized); | ||
85463 | + } | ||
85464 | +#endif | ||
85465 | #endif | ||
85466 | } | ||
85467 | |||
85468 | @@ -4476,13 +4504,71 @@ static const struct file_operations proc_slabstats_operations = { | ||
85707 | static int __init slab_proc_init(void) | 85469 | static int __init slab_proc_init(void) |
85708 | { | 85470 | { |
85709 | #ifdef CONFIG_DEBUG_SLAB_LEAK | 85471 | #ifdef CONFIG_DEBUG_SLAB_LEAK |
@@ -85777,19 +85539,36 @@ index 856e4a1..fafb820 100644 | |||
85777 | * ksize - get the actual amount of memory allocated for a given object | 85539 | * ksize - get the actual amount of memory allocated for a given object |
85778 | * @objp: Pointer to the object | 85540 | * @objp: Pointer to the object |
85779 | diff --git a/mm/slab.h b/mm/slab.h | 85541 | diff --git a/mm/slab.h b/mm/slab.h |
85780 | index 34a98d6..73633d1 100644 | 85542 | index f96b49e..db1d204 100644 |
85781 | --- a/mm/slab.h | 85543 | --- a/mm/slab.h |
85782 | +++ b/mm/slab.h | 85544 | +++ b/mm/slab.h |
85783 | @@ -58,7 +58,7 @@ __kmem_cache_alias(struct mem_cgroup *memcg, const char *name, size_t size, | 85545 | @@ -32,6 +32,15 @@ extern struct list_head slab_caches; |
85546 | /* The slab cache that manages slab cache information */ | ||
85547 | extern struct kmem_cache *kmem_cache; | ||
85548 | |||
85549 | +#ifdef CONFIG_PAX_MEMORY_SANITIZE | ||
85550 | +#ifdef CONFIG_X86_64 | ||
85551 | +#define PAX_MEMORY_SANITIZE_VALUE '\xfe' | ||
85552 | +#else | ||
85553 | +#define PAX_MEMORY_SANITIZE_VALUE '\xff' | ||
85554 | +#endif | ||
85555 | +extern bool pax_sanitize_slab; | ||
85556 | +#endif | ||
85557 | + | ||
85558 | unsigned long calculate_alignment(unsigned long flags, | ||
85559 | unsigned long align, unsigned long size); | ||
85560 | |||
85561 | @@ -67,7 +76,8 @@ __kmem_cache_alias(struct mem_cgroup *memcg, const char *name, size_t size, | ||
85784 | 85562 | ||
85785 | /* Legal flag mask for kmem_cache_create(), for various configurations */ | 85563 | /* Legal flag mask for kmem_cache_create(), for various configurations */ |
85786 | #define SLAB_CORE_FLAGS (SLAB_HWCACHE_ALIGN | SLAB_CACHE_DMA | SLAB_PANIC | \ | 85564 | #define SLAB_CORE_FLAGS (SLAB_HWCACHE_ALIGN | SLAB_CACHE_DMA | SLAB_PANIC | \ |
85787 | - SLAB_DESTROY_BY_RCU | SLAB_DEBUG_OBJECTS ) | 85565 | - SLAB_DESTROY_BY_RCU | SLAB_DEBUG_OBJECTS ) |
85788 | + SLAB_DESTROY_BY_RCU | SLAB_DEBUG_OBJECTS | SLAB_USERCOPY) | 85566 | + SLAB_DESTROY_BY_RCU | SLAB_DEBUG_OBJECTS | \ |
85567 | + SLAB_USERCOPY | SLAB_NO_SANITIZE) | ||
85789 | 85568 | ||
85790 | #if defined(CONFIG_DEBUG_SLAB) | 85569 | #if defined(CONFIG_DEBUG_SLAB) |
85791 | #define SLAB_DEBUG_FLAGS (SLAB_RED_ZONE | SLAB_POISON | SLAB_STORE_USER) | 85570 | #define SLAB_DEBUG_FLAGS (SLAB_RED_ZONE | SLAB_POISON | SLAB_STORE_USER) |
85792 | @@ -220,6 +220,9 @@ static inline struct kmem_cache *cache_from_obj(struct kmem_cache *s, void *x) | 85571 | @@ -229,6 +239,9 @@ static inline struct kmem_cache *cache_from_obj(struct kmem_cache *s, void *x) |
85793 | return s; | 85572 | return s; |
85794 | 85573 | ||
85795 | page = virt_to_head_page(x); | 85574 | page = virt_to_head_page(x); |
@@ -85800,10 +85579,10 @@ index 34a98d6..73633d1 100644 | |||
85800 | if (slab_equal_or_root(cachep, s)) | 85579 | if (slab_equal_or_root(cachep, s)) |
85801 | return cachep; | 85580 | return cachep; |
85802 | diff --git a/mm/slab_common.c b/mm/slab_common.c | 85581 | diff --git a/mm/slab_common.c b/mm/slab_common.c |
85803 | index 3f3cd97..93b0236 100644 | 85582 | index 2d41450..4efe6ee 100644 |
85804 | --- a/mm/slab_common.c | 85583 | --- a/mm/slab_common.c |
85805 | +++ b/mm/slab_common.c | 85584 | +++ b/mm/slab_common.c |
85806 | @@ -22,7 +22,7 @@ | 85585 | @@ -22,11 +22,22 @@ |
85807 | 85586 | ||
85808 | #include "slab.h" | 85587 | #include "slab.h" |
85809 | 85588 | ||
@@ -85812,7 +85591,22 @@ index 3f3cd97..93b0236 100644 | |||
85812 | LIST_HEAD(slab_caches); | 85591 | LIST_HEAD(slab_caches); |
85813 | DEFINE_MUTEX(slab_mutex); | 85592 | DEFINE_MUTEX(slab_mutex); |
85814 | struct kmem_cache *kmem_cache; | 85593 | struct kmem_cache *kmem_cache; |
85815 | @@ -209,7 +209,7 @@ kmem_cache_create_memcg(struct mem_cgroup *memcg, const char *name, size_t size, | 85594 | |
85595 | +#ifdef CONFIG_PAX_MEMORY_SANITIZE | ||
85596 | +bool pax_sanitize_slab __read_only = true; | ||
85597 | +static int __init pax_sanitize_slab_setup(char *str) | ||
85598 | +{ | ||
85599 | + pax_sanitize_slab = !!simple_strtol(str, NULL, 0); | ||
85600 | + printk("%sabled PaX slab sanitization\n", pax_sanitize_slab ? "En" : "Dis"); | ||
85601 | + return 1; | ||
85602 | +} | ||
85603 | +__setup("pax_sanitize_slab=", pax_sanitize_slab_setup); | ||
85604 | +#endif | ||
85605 | + | ||
85606 | #ifdef CONFIG_DEBUG_VM | ||
85607 | static int kmem_cache_sanity_check(struct mem_cgroup *memcg, const char *name, | ||
85608 | size_t size) | ||
85609 | @@ -209,7 +220,7 @@ kmem_cache_create_memcg(struct mem_cgroup *memcg, const char *name, size_t size, | ||
85816 | 85610 | ||
85817 | err = __kmem_cache_create(s, flags); | 85611 | err = __kmem_cache_create(s, flags); |
85818 | if (!err) { | 85612 | if (!err) { |
@@ -85821,7 +85615,7 @@ index 3f3cd97..93b0236 100644 | |||
85821 | list_add(&s->list, &slab_caches); | 85615 | list_add(&s->list, &slab_caches); |
85822 | memcg_cache_list_add(memcg, s); | 85616 | memcg_cache_list_add(memcg, s); |
85823 | } else { | 85617 | } else { |
85824 | @@ -255,8 +255,7 @@ void kmem_cache_destroy(struct kmem_cache *s) | 85618 | @@ -255,8 +266,7 @@ void kmem_cache_destroy(struct kmem_cache *s) |
85825 | 85619 | ||
85826 | get_online_cpus(); | 85620 | get_online_cpus(); |
85827 | mutex_lock(&slab_mutex); | 85621 | mutex_lock(&slab_mutex); |
@@ -85831,8 +85625,8 @@ index 3f3cd97..93b0236 100644 | |||
85831 | list_del(&s->list); | 85625 | list_del(&s->list); |
85832 | 85626 | ||
85833 | if (!__kmem_cache_shutdown(s)) { | 85627 | if (!__kmem_cache_shutdown(s)) { |
85834 | @@ -302,7 +301,7 @@ void __init create_boot_cache(struct kmem_cache *s, const char *name, size_t siz | 85628 | @@ -302,7 +312,7 @@ void __init create_boot_cache(struct kmem_cache *s, const char *name, size_t siz |
85835 | panic("Creation of kmalloc slab %s size=%zd failed. Reason %d\n", | 85629 | panic("Creation of kmalloc slab %s size=%zu failed. Reason %d\n", |
85836 | name, size, err); | 85630 | name, size, err); |
85837 | 85631 | ||
85838 | - s->refcount = -1; /* Exempt from merging for now */ | 85632 | - s->refcount = -1; /* Exempt from merging for now */ |
@@ -85840,7 +85634,7 @@ index 3f3cd97..93b0236 100644 | |||
85840 | } | 85634 | } |
85841 | 85635 | ||
85842 | struct kmem_cache *__init create_kmalloc_cache(const char *name, size_t size, | 85636 | struct kmem_cache *__init create_kmalloc_cache(const char *name, size_t size, |
85843 | @@ -315,7 +314,7 @@ struct kmem_cache *__init create_kmalloc_cache(const char *name, size_t size, | 85637 | @@ -315,7 +325,7 @@ struct kmem_cache *__init create_kmalloc_cache(const char *name, size_t size, |
85844 | 85638 | ||
85845 | create_boot_cache(s, name, size, flags); | 85639 | create_boot_cache(s, name, size, flags); |
85846 | list_add(&s->list, &slab_caches); | 85640 | list_add(&s->list, &slab_caches); |
@@ -85849,8 +85643,90 @@ index 3f3cd97..93b0236 100644 | |||
85849 | return s; | 85643 | return s; |
85850 | } | 85644 | } |
85851 | 85645 | ||
85646 | @@ -327,6 +337,11 @@ struct kmem_cache *kmalloc_dma_caches[KMALLOC_SHIFT_HIGH + 1]; | ||
85647 | EXPORT_SYMBOL(kmalloc_dma_caches); | ||
85648 | #endif | ||
85649 | |||
85650 | +#ifdef CONFIG_PAX_USERCOPY_SLABS | ||
85651 | +struct kmem_cache *kmalloc_usercopy_caches[KMALLOC_SHIFT_HIGH + 1]; | ||
85652 | +EXPORT_SYMBOL(kmalloc_usercopy_caches); | ||
85653 | +#endif | ||
85654 | + | ||
85655 | /* | ||
85656 | * Conversion table for small slabs sizes / 8 to the index in the | ||
85657 | * kmalloc array. This is necessary for slabs < 192 since we have non power | ||
85658 | @@ -391,6 +406,13 @@ struct kmem_cache *kmalloc_slab(size_t size, gfp_t flags) | ||
85659 | return kmalloc_dma_caches[index]; | ||
85660 | |||
85661 | #endif | ||
85662 | + | ||
85663 | +#ifdef CONFIG_PAX_USERCOPY_SLABS | ||
85664 | + if (unlikely((flags & GFP_USERCOPY))) | ||
85665 | + return kmalloc_usercopy_caches[index]; | ||
85666 | + | ||
85667 | +#endif | ||
85668 | + | ||
85669 | return kmalloc_caches[index]; | ||
85670 | } | ||
85671 | |||
85672 | @@ -447,7 +469,7 @@ void __init create_kmalloc_caches(unsigned long flags) | ||
85673 | for (i = KMALLOC_SHIFT_LOW; i <= KMALLOC_SHIFT_HIGH; i++) { | ||
85674 | if (!kmalloc_caches[i]) { | ||
85675 | kmalloc_caches[i] = create_kmalloc_cache(NULL, | ||
85676 | - 1 << i, flags); | ||
85677 | + 1 << i, SLAB_USERCOPY | flags); | ||
85678 | } | ||
85679 | |||
85680 | /* | ||
85681 | @@ -456,10 +478,10 @@ void __init create_kmalloc_caches(unsigned long flags) | ||
85682 | * earlier power of two caches | ||
85683 | */ | ||
85684 | if (KMALLOC_MIN_SIZE <= 32 && !kmalloc_caches[1] && i == 6) | ||
85685 | - kmalloc_caches[1] = create_kmalloc_cache(NULL, 96, flags); | ||
85686 | + kmalloc_caches[1] = create_kmalloc_cache(NULL, 96, SLAB_USERCOPY | flags); | ||
85687 | |||
85688 | if (KMALLOC_MIN_SIZE <= 64 && !kmalloc_caches[2] && i == 7) | ||
85689 | - kmalloc_caches[2] = create_kmalloc_cache(NULL, 192, flags); | ||
85690 | + kmalloc_caches[2] = create_kmalloc_cache(NULL, 192, SLAB_USERCOPY | flags); | ||
85691 | } | ||
85692 | |||
85693 | /* Kmalloc array is now usable */ | ||
85694 | @@ -492,6 +514,23 @@ void __init create_kmalloc_caches(unsigned long flags) | ||
85695 | } | ||
85696 | } | ||
85697 | #endif | ||
85698 | + | ||
85699 | +#ifdef CONFIG_PAX_USERCOPY_SLABS | ||
85700 | + for (i = 0; i <= KMALLOC_SHIFT_HIGH; i++) { | ||
85701 | + struct kmem_cache *s = kmalloc_caches[i]; | ||
85702 | + | ||
85703 | + if (s) { | ||
85704 | + int size = kmalloc_size(i); | ||
85705 | + char *n = kasprintf(GFP_NOWAIT, | ||
85706 | + "usercopy-kmalloc-%d", size); | ||
85707 | + | ||
85708 | + BUG_ON(!n); | ||
85709 | + kmalloc_usercopy_caches[i] = create_kmalloc_cache(n, | ||
85710 | + size, SLAB_USERCOPY | flags); | ||
85711 | + } | ||
85712 | + } | ||
85713 | +#endif | ||
85714 | + | ||
85715 | } | ||
85716 | #endif /* !CONFIG_SLOB */ | ||
85717 | |||
85718 | @@ -516,6 +555,9 @@ void print_slabinfo_header(struct seq_file *m) | ||
85719 | seq_puts(m, " : globalstat <listallocs> <maxobjs> <grown> <reaped> " | ||
85720 | "<error> <maxfreeable> <nodeallocs> <remotefrees> <alienoverflow>"); | ||
85721 | seq_puts(m, " : cpustat <allochit> <allocmiss> <freehit> <freemiss>"); | ||
85722 | +#ifdef CONFIG_PAX_MEMORY_SANITIZE | ||
85723 | + seq_puts(m, " : pax <sanitized> <not_sanitized>"); | ||
85724 | +#endif | ||
85725 | #endif | ||
85726 | seq_putc(m, '\n'); | ||
85727 | } | ||
85852 | diff --git a/mm/slob.c b/mm/slob.c | 85728 | diff --git a/mm/slob.c b/mm/slob.c |
85853 | index eeed4a0..6ee34ec 100644 | 85729 | index eeed4a0..bb0e9ab 100644 |
85854 | --- a/mm/slob.c | 85730 | --- a/mm/slob.c |
85855 | +++ b/mm/slob.c | 85731 | +++ b/mm/slob.c |
85856 | @@ -157,7 +157,7 @@ static void set_slob(slob_t *s, slobidx_t size, slob_t *next) | 85732 | @@ -157,7 +157,7 @@ static void set_slob(slob_t *s, slobidx_t size, slob_t *next) |
@@ -85905,7 +85781,7 @@ index eeed4a0..6ee34ec 100644 | |||
85905 | current->reclaim_state->reclaimed_slab += 1 << order; | 85781 | current->reclaim_state->reclaimed_slab += 1 << order; |
85906 | - free_pages((unsigned long)b, order); | 85782 | - free_pages((unsigned long)b, order); |
85907 | + __ClearPageSlab(sp); | 85783 | + __ClearPageSlab(sp); |
85908 | + reset_page_mapcount(sp); | 85784 | + page_mapcount_reset(sp); |
85909 | + sp->private = 0; | 85785 | + sp->private = 0; |
85910 | + __free_pages(sp, order); | 85786 | + __free_pages(sp, order); |
85911 | } | 85787 | } |
@@ -85931,7 +85807,7 @@ index eeed4a0..6ee34ec 100644 | |||
85931 | INIT_LIST_HEAD(&sp->list); | 85807 | INIT_LIST_HEAD(&sp->list); |
85932 | set_slob(b, SLOB_UNITS(PAGE_SIZE), b + SLOB_UNITS(PAGE_SIZE)); | 85808 | set_slob(b, SLOB_UNITS(PAGE_SIZE), b + SLOB_UNITS(PAGE_SIZE)); |
85933 | set_slob_page_free(sp, slob_list); | 85809 | set_slob_page_free(sp, slob_list); |
85934 | @@ -359,9 +363,7 @@ static void slob_free(void *block, int size) | 85810 | @@ -359,12 +363,15 @@ static void slob_free(void *block, int size) |
85935 | if (slob_page_free(sp)) | 85811 | if (slob_page_free(sp)) |
85936 | clear_slob_page_free(sp); | 85812 | clear_slob_page_free(sp); |
85937 | spin_unlock_irqrestore(&slob_lock, flags); | 85813 | spin_unlock_irqrestore(&slob_lock, flags); |
@@ -85942,7 +85818,15 @@ index eeed4a0..6ee34ec 100644 | |||
85942 | return; | 85818 | return; |
85943 | } | 85819 | } |
85944 | 85820 | ||
85945 | @@ -424,11 +426,10 @@ out: | 85821 | +#ifdef CONFIG_PAX_MEMORY_SANITIZE |
85822 | + if (pax_sanitize_slab) | ||
85823 | + memset(block, PAX_MEMORY_SANITIZE_VALUE, size); | ||
85824 | +#endif | ||
85825 | + | ||
85826 | if (!slob_page_free(sp)) { | ||
85827 | /* This slob page is about to become partially free. Easy! */ | ||
85828 | sp->units = units; | ||
85829 | @@ -424,11 +431,10 @@ out: | ||
85946 | */ | 85830 | */ |
85947 | 85831 | ||
85948 | static __always_inline void * | 85832 | static __always_inline void * |
@@ -85957,7 +85841,7 @@ index eeed4a0..6ee34ec 100644 | |||
85957 | 85841 | ||
85958 | gfp &= gfp_allowed_mask; | 85842 | gfp &= gfp_allowed_mask; |
85959 | 85843 | ||
85960 | @@ -442,23 +443,41 @@ __do_kmalloc_node(size_t size, gfp_t gfp, int node, unsigned long caller) | 85844 | @@ -442,23 +448,41 @@ __do_kmalloc_node(size_t size, gfp_t gfp, int node, unsigned long caller) |
85961 | 85845 | ||
85962 | if (!m) | 85846 | if (!m) |
85963 | return NULL; | 85847 | return NULL; |
@@ -86002,7 +85886,7 @@ index eeed4a0..6ee34ec 100644 | |||
86002 | return ret; | 85886 | return ret; |
86003 | } | 85887 | } |
86004 | 85888 | ||
86005 | @@ -493,34 +512,112 @@ void kfree(const void *block) | 85889 | @@ -493,34 +517,112 @@ void kfree(const void *block) |
86006 | return; | 85890 | return; |
86007 | kmemleak_free(block); | 85891 | kmemleak_free(block); |
86008 | 85892 | ||
@@ -86019,7 +85903,7 @@ index eeed4a0..6ee34ec 100644 | |||
86019 | + slob_free(m, m[0].units + align); | 85903 | + slob_free(m, m[0].units + align); |
86020 | + } else { | 85904 | + } else { |
86021 | + __ClearPageSlab(sp); | 85905 | + __ClearPageSlab(sp); |
86022 | + reset_page_mapcount(sp); | 85906 | + page_mapcount_reset(sp); |
86023 | + sp->private = 0; | 85907 | + sp->private = 0; |
86024 | __free_pages(sp, compound_order(sp)); | 85908 | __free_pages(sp, compound_order(sp)); |
86025 | + } | 85909 | + } |
@@ -86124,7 +86008,7 @@ index eeed4a0..6ee34ec 100644 | |||
86124 | } | 86008 | } |
86125 | EXPORT_SYMBOL(ksize); | 86009 | EXPORT_SYMBOL(ksize); |
86126 | 86010 | ||
86127 | @@ -536,23 +633,33 @@ int __kmem_cache_create(struct kmem_cache *c, unsigned long flags) | 86011 | @@ -536,23 +638,33 @@ int __kmem_cache_create(struct kmem_cache *c, unsigned long flags) |
86128 | 86012 | ||
86129 | void *kmem_cache_alloc_node(struct kmem_cache *c, gfp_t flags, int node) | 86013 | void *kmem_cache_alloc_node(struct kmem_cache *c, gfp_t flags, int node) |
86130 | { | 86014 | { |
@@ -86160,7 +86044,7 @@ index eeed4a0..6ee34ec 100644 | |||
86160 | 86044 | ||
86161 | if (c->ctor) | 86045 | if (c->ctor) |
86162 | c->ctor(b); | 86046 | c->ctor(b); |
86163 | @@ -564,10 +671,14 @@ EXPORT_SYMBOL(kmem_cache_alloc_node); | 86047 | @@ -564,10 +676,14 @@ EXPORT_SYMBOL(kmem_cache_alloc_node); |
86164 | 86048 | ||
86165 | static void __kmem_cache_free(void *b, int size) | 86049 | static void __kmem_cache_free(void *b, int size) |
86166 | { | 86050 | { |
@@ -86177,7 +86061,7 @@ index eeed4a0..6ee34ec 100644 | |||
86177 | } | 86061 | } |
86178 | 86062 | ||
86179 | static void kmem_rcu_free(struct rcu_head *head) | 86063 | static void kmem_rcu_free(struct rcu_head *head) |
86180 | @@ -580,17 +691,31 @@ static void kmem_rcu_free(struct rcu_head *head) | 86064 | @@ -580,17 +696,31 @@ static void kmem_rcu_free(struct rcu_head *head) |
86181 | 86065 | ||
86182 | void kmem_cache_free(struct kmem_cache *c, void *b) | 86066 | void kmem_cache_free(struct kmem_cache *c, void *b) |
86183 | { | 86067 | { |
@@ -86213,10 +86097,10 @@ index eeed4a0..6ee34ec 100644 | |||
86213 | EXPORT_SYMBOL(kmem_cache_free); | 86097 | EXPORT_SYMBOL(kmem_cache_free); |
86214 | 86098 | ||
86215 | diff --git a/mm/slub.c b/mm/slub.c | 86099 | diff --git a/mm/slub.c b/mm/slub.c |
86216 | index 4aec537..8043df1 100644 | 86100 | index 57707f0..7857bd3 100644 |
86217 | --- a/mm/slub.c | 86101 | --- a/mm/slub.c |
86218 | +++ b/mm/slub.c | 86102 | +++ b/mm/slub.c |
86219 | @@ -197,7 +197,7 @@ struct track { | 86103 | @@ -198,7 +198,7 @@ struct track { |
86220 | 86104 | ||
86221 | enum track_item { TRACK_ALLOC, TRACK_FREE }; | 86105 | enum track_item { TRACK_ALLOC, TRACK_FREE }; |
86222 | 86106 | ||
@@ -86225,7 +86109,7 @@ index 4aec537..8043df1 100644 | |||
86225 | static int sysfs_slab_add(struct kmem_cache *); | 86109 | static int sysfs_slab_add(struct kmem_cache *); |
86226 | static int sysfs_slab_alias(struct kmem_cache *, const char *); | 86110 | static int sysfs_slab_alias(struct kmem_cache *, const char *); |
86227 | static void sysfs_slab_remove(struct kmem_cache *); | 86111 | static void sysfs_slab_remove(struct kmem_cache *); |
86228 | @@ -518,7 +518,7 @@ static void print_track(const char *s, struct track *t) | 86112 | @@ -519,7 +519,7 @@ static void print_track(const char *s, struct track *t) |
86229 | if (!t->addr) | 86113 | if (!t->addr) |
86230 | return; | 86114 | return; |
86231 | 86115 | ||
@@ -86234,7 +86118,22 @@ index 4aec537..8043df1 100644 | |||
86234 | s, (void *)t->addr, jiffies - t->when, t->cpu, t->pid); | 86118 | s, (void *)t->addr, jiffies - t->when, t->cpu, t->pid); |
86235 | #ifdef CONFIG_STACKTRACE | 86119 | #ifdef CONFIG_STACKTRACE |
86236 | { | 86120 | { |
86237 | @@ -2653,7 +2653,7 @@ static int slub_min_objects; | 86121 | @@ -2594,6 +2594,14 @@ static __always_inline void slab_free(struct kmem_cache *s, |
86122 | |||
86123 | slab_free_hook(s, x); | ||
86124 | |||
86125 | +#ifdef CONFIG_PAX_MEMORY_SANITIZE | ||
86126 | + if (pax_sanitize_slab && !(s->flags & SLAB_NO_SANITIZE)) { | ||
86127 | + memset(x, PAX_MEMORY_SANITIZE_VALUE, s->object_size); | ||
86128 | + if (s->ctor) | ||
86129 | + s->ctor(x); | ||
86130 | + } | ||
86131 | +#endif | ||
86132 | + | ||
86133 | redo: | ||
86134 | /* | ||
86135 | * Determine the currently cpus per cpu slab. | ||
86136 | @@ -2661,7 +2669,7 @@ static int slub_min_objects; | ||
86238 | * Merge control. If this is set then no merging of slab caches will occur. | 86137 | * Merge control. If this is set then no merging of slab caches will occur. |
86239 | * (Could be removed. This was introduced to pacify the merge skeptics.) | 86138 | * (Could be removed. This was introduced to pacify the merge skeptics.) |
86240 | */ | 86139 | */ |
@@ -86243,32 +86142,17 @@ index 4aec537..8043df1 100644 | |||
86243 | 86142 | ||
86244 | /* | 86143 | /* |
86245 | * Calculate the order of allocation given an slab object size. | 86144 | * Calculate the order of allocation given an slab object size. |
86246 | @@ -3181,6 +3181,10 @@ EXPORT_SYMBOL(kmalloc_caches); | 86145 | @@ -2938,6 +2946,9 @@ static int calculate_sizes(struct kmem_cache *s, int forced_order) |
86247 | static struct kmem_cache *kmalloc_dma_caches[SLUB_PAGE_SHIFT]; | 86146 | s->inuse = size; |
86248 | #endif | ||
86249 | |||
86250 | +#ifdef CONFIG_PAX_USERCOPY_SLABS | ||
86251 | +static struct kmem_cache *kmalloc_usercopy_caches[SLUB_PAGE_SHIFT]; | ||
86252 | +#endif | ||
86253 | + | ||
86254 | static int __init setup_slub_min_order(char *str) | ||
86255 | { | ||
86256 | get_option(&str, &slub_min_order); | ||
86257 | @@ -3272,6 +3276,13 @@ static struct kmem_cache *get_slab(size_t size, gfp_t flags) | ||
86258 | return kmalloc_dma_caches[index]; | ||
86259 | 86147 | ||
86260 | #endif | 86148 | if (((flags & (SLAB_DESTROY_BY_RCU | SLAB_POISON)) || |
86261 | + | 86149 | +#ifdef CONFIG_PAX_MEMORY_SANITIZE |
86262 | +#ifdef CONFIG_PAX_USERCOPY_SLABS | 86150 | + (pax_sanitize_slab && !(flags & SLAB_NO_SANITIZE)) || |
86263 | + if (flags & SLAB_USERCOPY) | ||
86264 | + return kmalloc_usercopy_caches[index]; | ||
86265 | + | ||
86266 | +#endif | 86151 | +#endif |
86267 | + | 86152 | s->ctor)) { |
86268 | return kmalloc_caches[index]; | 86153 | /* |
86269 | } | 86154 | * Relocate free pointer after the object if it is not |
86270 | 86155 | @@ -3283,6 +3294,59 @@ void *__kmalloc_node(size_t size, gfp_t flags, int node) | |
86271 | @@ -3340,6 +3351,59 @@ void *__kmalloc_node(size_t size, gfp_t flags, int node) | ||
86272 | EXPORT_SYMBOL(__kmalloc_node); | 86156 | EXPORT_SYMBOL(__kmalloc_node); |
86273 | #endif | 86157 | #endif |
86274 | 86158 | ||
@@ -86328,7 +86212,7 @@ index 4aec537..8043df1 100644 | |||
86328 | size_t ksize(const void *object) | 86212 | size_t ksize(const void *object) |
86329 | { | 86213 | { |
86330 | struct page *page; | 86214 | struct page *page; |
86331 | @@ -3404,6 +3468,7 @@ void kfree(const void *x) | 86215 | @@ -3347,6 +3411,7 @@ void kfree(const void *x) |
86332 | if (unlikely(ZERO_OR_NULL_PTR(x))) | 86216 | if (unlikely(ZERO_OR_NULL_PTR(x))) |
86333 | return; | 86217 | return; |
86334 | 86218 | ||
@@ -86336,51 +86220,7 @@ index 4aec537..8043df1 100644 | |||
86336 | page = virt_to_head_page(x); | 86220 | page = virt_to_head_page(x); |
86337 | if (unlikely(!PageSlab(page))) { | 86221 | if (unlikely(!PageSlab(page))) { |
86338 | BUG_ON(!PageCompound(page)); | 86222 | BUG_ON(!PageCompound(page)); |
86339 | @@ -3712,17 +3777,17 @@ void __init kmem_cache_init(void) | 86223 | @@ -3652,7 +3717,7 @@ static int slab_unmergeable(struct kmem_cache *s) |
86340 | |||
86341 | /* Caches that are not of the two-to-the-power-of size */ | ||
86342 | if (KMALLOC_MIN_SIZE <= 32) { | ||
86343 | - kmalloc_caches[1] = create_kmalloc_cache("kmalloc-96", 96, 0); | ||
86344 | + kmalloc_caches[1] = create_kmalloc_cache("kmalloc-96", 96, SLAB_USERCOPY); | ||
86345 | caches++; | ||
86346 | } | ||
86347 | |||
86348 | if (KMALLOC_MIN_SIZE <= 64) { | ||
86349 | - kmalloc_caches[2] = create_kmalloc_cache("kmalloc-192", 192, 0); | ||
86350 | + kmalloc_caches[2] = create_kmalloc_cache("kmalloc-192", 192, SLAB_USERCOPY); | ||
86351 | caches++; | ||
86352 | } | ||
86353 | |||
86354 | for (i = KMALLOC_SHIFT_LOW; i < SLUB_PAGE_SHIFT; i++) { | ||
86355 | - kmalloc_caches[i] = create_kmalloc_cache("kmalloc", 1 << i, 0); | ||
86356 | + kmalloc_caches[i] = create_kmalloc_cache("kmalloc", 1 << i, SLAB_USERCOPY); | ||
86357 | caches++; | ||
86358 | } | ||
86359 | |||
86360 | @@ -3764,6 +3829,22 @@ void __init kmem_cache_init(void) | ||
86361 | } | ||
86362 | } | ||
86363 | #endif | ||
86364 | + | ||
86365 | +#ifdef CONFIG_PAX_USERCOPY_SLABS | ||
86366 | + for (i = 0; i < SLUB_PAGE_SHIFT; i++) { | ||
86367 | + struct kmem_cache *s = kmalloc_caches[i]; | ||
86368 | + | ||
86369 | + if (s && s->size) { | ||
86370 | + char *name = kasprintf(GFP_NOWAIT, | ||
86371 | + "usercopy-kmalloc-%d", s->object_size); | ||
86372 | + | ||
86373 | + BUG_ON(!name); | ||
86374 | + kmalloc_usercopy_caches[i] = create_kmalloc_cache(name, | ||
86375 | + s->object_size, SLAB_USERCOPY); | ||
86376 | + } | ||
86377 | + } | ||
86378 | +#endif | ||
86379 | + | ||
86380 | printk(KERN_INFO | ||
86381 | "SLUB: Genslabs=%d, HWalign=%d, Order=%d-%d, MinObjects=%d," | ||
86382 | " CPUs=%d, Nodes=%d\n", | ||
86383 | @@ -3790,7 +3871,7 @@ static int slab_unmergeable(struct kmem_cache *s) | ||
86384 | /* | 86224 | /* |
86385 | * We may have set a slab to be unmergeable during bootstrap. | 86225 | * We may have set a slab to be unmergeable during bootstrap. |
86386 | */ | 86226 | */ |
@@ -86389,7 +86229,7 @@ index 4aec537..8043df1 100644 | |||
86389 | return 1; | 86229 | return 1; |
86390 | 86230 | ||
86391 | return 0; | 86231 | return 0; |
86392 | @@ -3848,7 +3929,7 @@ __kmem_cache_alias(struct mem_cgroup *memcg, const char *name, size_t size, | 86232 | @@ -3710,7 +3775,7 @@ __kmem_cache_alias(struct mem_cgroup *memcg, const char *name, size_t size, |
86393 | 86233 | ||
86394 | s = find_mergeable(memcg, size, align, flags, name, ctor); | 86234 | s = find_mergeable(memcg, size, align, flags, name, ctor); |
86395 | if (s) { | 86235 | if (s) { |
@@ -86398,7 +86238,7 @@ index 4aec537..8043df1 100644 | |||
86398 | /* | 86238 | /* |
86399 | * Adjust the object sizes so that we clear | 86239 | * Adjust the object sizes so that we clear |
86400 | * the complete object on kzalloc. | 86240 | * the complete object on kzalloc. |
86401 | @@ -3857,7 +3938,7 @@ __kmem_cache_alias(struct mem_cgroup *memcg, const char *name, size_t size, | 86241 | @@ -3719,7 +3784,7 @@ __kmem_cache_alias(struct mem_cgroup *memcg, const char *name, size_t size, |
86402 | s->inuse = max_t(int, s->inuse, ALIGN(size, sizeof(void *))); | 86242 | s->inuse = max_t(int, s->inuse, ALIGN(size, sizeof(void *))); |
86403 | 86243 | ||
86404 | if (sysfs_slab_alias(s, name)) { | 86244 | if (sysfs_slab_alias(s, name)) { |
@@ -86407,7 +86247,7 @@ index 4aec537..8043df1 100644 | |||
86407 | s = NULL; | 86247 | s = NULL; |
86408 | } | 86248 | } |
86409 | } | 86249 | } |
86410 | @@ -3919,7 +4000,7 @@ static int __cpuinit slab_cpuup_callback(struct notifier_block *nfb, | 86250 | @@ -3781,7 +3846,7 @@ static int __cpuinit slab_cpuup_callback(struct notifier_block *nfb, |
86411 | return NOTIFY_OK; | 86251 | return NOTIFY_OK; |
86412 | } | 86252 | } |
86413 | 86253 | ||
@@ -86416,7 +86256,7 @@ index 4aec537..8043df1 100644 | |||
86416 | .notifier_call = slab_cpuup_callback | 86256 | .notifier_call = slab_cpuup_callback |
86417 | }; | 86257 | }; |
86418 | 86258 | ||
86419 | @@ -3977,7 +4058,7 @@ void *__kmalloc_node_track_caller(size_t size, gfp_t gfpflags, | 86259 | @@ -3839,7 +3904,7 @@ void *__kmalloc_node_track_caller(size_t size, gfp_t gfpflags, |
86420 | } | 86260 | } |
86421 | #endif | 86261 | #endif |
86422 | 86262 | ||
@@ -86425,7 +86265,7 @@ index 4aec537..8043df1 100644 | |||
86425 | static int count_inuse(struct page *page) | 86265 | static int count_inuse(struct page *page) |
86426 | { | 86266 | { |
86427 | return page->inuse; | 86267 | return page->inuse; |
86428 | @@ -4364,12 +4445,12 @@ static void resiliency_test(void) | 86268 | @@ -4226,12 +4291,12 @@ static void resiliency_test(void) |
86429 | validate_slab_cache(kmalloc_caches[9]); | 86269 | validate_slab_cache(kmalloc_caches[9]); |
86430 | } | 86270 | } |
86431 | #else | 86271 | #else |
@@ -86440,7 +86280,7 @@ index 4aec537..8043df1 100644 | |||
86440 | enum slab_stat_type { | 86280 | enum slab_stat_type { |
86441 | SL_ALL, /* All slabs */ | 86281 | SL_ALL, /* All slabs */ |
86442 | SL_PARTIAL, /* Only partially allocated slabs */ | 86282 | SL_PARTIAL, /* Only partially allocated slabs */ |
86443 | @@ -4613,7 +4694,7 @@ SLAB_ATTR_RO(ctor); | 86283 | @@ -4475,7 +4540,7 @@ SLAB_ATTR_RO(ctor); |
86444 | 86284 | ||
86445 | static ssize_t aliases_show(struct kmem_cache *s, char *buf) | 86285 | static ssize_t aliases_show(struct kmem_cache *s, char *buf) |
86446 | { | 86286 | { |
@@ -86449,7 +86289,32 @@ index 4aec537..8043df1 100644 | |||
86449 | } | 86289 | } |
86450 | SLAB_ATTR_RO(aliases); | 86290 | SLAB_ATTR_RO(aliases); |
86451 | 86291 | ||
86452 | @@ -5266,6 +5347,7 @@ static char *create_unique_id(struct kmem_cache *s) | 86292 | @@ -4563,6 +4628,14 @@ static ssize_t cache_dma_show(struct kmem_cache *s, char *buf) |
86293 | SLAB_ATTR_RO(cache_dma); | ||
86294 | #endif | ||
86295 | |||
86296 | +#ifdef CONFIG_PAX_USERCOPY_SLABS | ||
86297 | +static ssize_t usercopy_show(struct kmem_cache *s, char *buf) | ||
86298 | +{ | ||
86299 | + return sprintf(buf, "%d\n", !!(s->flags & SLAB_USERCOPY)); | ||
86300 | +} | ||
86301 | +SLAB_ATTR_RO(usercopy); | ||
86302 | +#endif | ||
86303 | + | ||
86304 | static ssize_t destroy_by_rcu_show(struct kmem_cache *s, char *buf) | ||
86305 | { | ||
86306 | return sprintf(buf, "%d\n", !!(s->flags & SLAB_DESTROY_BY_RCU)); | ||
86307 | @@ -4897,6 +4970,9 @@ static struct attribute *slab_attrs[] = { | ||
86308 | #ifdef CONFIG_ZONE_DMA | ||
86309 | &cache_dma_attr.attr, | ||
86310 | #endif | ||
86311 | +#ifdef CONFIG_PAX_USERCOPY_SLABS | ||
86312 | + &usercopy_attr.attr, | ||
86313 | +#endif | ||
86314 | #ifdef CONFIG_NUMA | ||
86315 | &remote_node_defrag_ratio_attr.attr, | ||
86316 | #endif | ||
86317 | @@ -5128,6 +5204,7 @@ static char *create_unique_id(struct kmem_cache *s) | ||
86453 | return name; | 86318 | return name; |
86454 | } | 86319 | } |
86455 | 86320 | ||
@@ -86457,7 +86322,7 @@ index 4aec537..8043df1 100644 | |||
86457 | static int sysfs_slab_add(struct kmem_cache *s) | 86322 | static int sysfs_slab_add(struct kmem_cache *s) |
86458 | { | 86323 | { |
86459 | int err; | 86324 | int err; |
86460 | @@ -5289,7 +5371,7 @@ static int sysfs_slab_add(struct kmem_cache *s) | 86325 | @@ -5151,7 +5228,7 @@ static int sysfs_slab_add(struct kmem_cache *s) |
86461 | } | 86326 | } |
86462 | 86327 | ||
86463 | s->kobj.kset = slab_kset; | 86328 | s->kobj.kset = slab_kset; |
@@ -86466,7 +86331,7 @@ index 4aec537..8043df1 100644 | |||
86466 | if (err) { | 86331 | if (err) { |
86467 | kobject_put(&s->kobj); | 86332 | kobject_put(&s->kobj); |
86468 | return err; | 86333 | return err; |
86469 | @@ -5323,6 +5405,7 @@ static void sysfs_slab_remove(struct kmem_cache *s) | 86334 | @@ -5185,6 +5262,7 @@ static void sysfs_slab_remove(struct kmem_cache *s) |
86470 | kobject_del(&s->kobj); | 86335 | kobject_del(&s->kobj); |
86471 | kobject_put(&s->kobj); | 86336 | kobject_put(&s->kobj); |
86472 | } | 86337 | } |
@@ -86474,7 +86339,7 @@ index 4aec537..8043df1 100644 | |||
86474 | 86339 | ||
86475 | /* | 86340 | /* |
86476 | * Need to buffer aliases during bootup until sysfs becomes | 86341 | * Need to buffer aliases during bootup until sysfs becomes |
86477 | @@ -5336,6 +5419,7 @@ struct saved_alias { | 86342 | @@ -5198,6 +5276,7 @@ struct saved_alias { |
86478 | 86343 | ||
86479 | static struct saved_alias *alias_list; | 86344 | static struct saved_alias *alias_list; |
86480 | 86345 | ||
@@ -86482,7 +86347,7 @@ index 4aec537..8043df1 100644 | |||
86482 | static int sysfs_slab_alias(struct kmem_cache *s, const char *name) | 86347 | static int sysfs_slab_alias(struct kmem_cache *s, const char *name) |
86483 | { | 86348 | { |
86484 | struct saved_alias *al; | 86349 | struct saved_alias *al; |
86485 | @@ -5358,6 +5442,7 @@ static int sysfs_slab_alias(struct kmem_cache *s, const char *name) | 86350 | @@ -5220,6 +5299,7 @@ static int sysfs_slab_alias(struct kmem_cache *s, const char *name) |
86486 | alias_list = al; | 86351 | alias_list = al; |
86487 | return 0; | 86352 | return 0; |
86488 | } | 86353 | } |
@@ -86491,10 +86356,10 @@ index 4aec537..8043df1 100644 | |||
86491 | static int __init slab_sysfs_init(void) | 86356 | static int __init slab_sysfs_init(void) |
86492 | { | 86357 | { |
86493 | diff --git a/mm/sparse-vmemmap.c b/mm/sparse-vmemmap.c | 86358 | diff --git a/mm/sparse-vmemmap.c b/mm/sparse-vmemmap.c |
86494 | index 1b7e22a..3fcd4f3 100644 | 86359 | index 27eeab3..7c3f7f2 100644 |
86495 | --- a/mm/sparse-vmemmap.c | 86360 | --- a/mm/sparse-vmemmap.c |
86496 | +++ b/mm/sparse-vmemmap.c | 86361 | +++ b/mm/sparse-vmemmap.c |
86497 | @@ -128,7 +128,7 @@ pud_t * __meminit vmemmap_pud_populate(pgd_t *pgd, unsigned long addr, int node) | 86362 | @@ -130,7 +130,7 @@ pud_t * __meminit vmemmap_pud_populate(pgd_t *pgd, unsigned long addr, int node) |
86498 | void *p = vmemmap_alloc_block(PAGE_SIZE, node); | 86363 | void *p = vmemmap_alloc_block(PAGE_SIZE, node); |
86499 | if (!p) | 86364 | if (!p) |
86500 | return NULL; | 86365 | return NULL; |
@@ -86503,7 +86368,7 @@ index 1b7e22a..3fcd4f3 100644 | |||
86503 | } | 86368 | } |
86504 | return pud; | 86369 | return pud; |
86505 | } | 86370 | } |
86506 | @@ -140,7 +140,7 @@ pgd_t * __meminit vmemmap_pgd_populate(unsigned long addr, int node) | 86371 | @@ -142,7 +142,7 @@ pgd_t * __meminit vmemmap_pgd_populate(unsigned long addr, int node) |
86507 | void *p = vmemmap_alloc_block(PAGE_SIZE, node); | 86372 | void *p = vmemmap_alloc_block(PAGE_SIZE, node); |
86508 | if (!p) | 86373 | if (!p) |
86509 | return NULL; | 86374 | return NULL; |
@@ -86513,10 +86378,10 @@ index 1b7e22a..3fcd4f3 100644 | |||
86513 | return pgd; | 86378 | return pgd; |
86514 | } | 86379 | } |
86515 | diff --git a/mm/sparse.c b/mm/sparse.c | 86380 | diff --git a/mm/sparse.c b/mm/sparse.c |
86516 | index 7ca6dc8..6472aa1 100644 | 86381 | index 1c91f0d3..485470a 100644 |
86517 | --- a/mm/sparse.c | 86382 | --- a/mm/sparse.c |
86518 | +++ b/mm/sparse.c | 86383 | +++ b/mm/sparse.c |
86519 | @@ -783,7 +783,7 @@ static void clear_hwpoisoned_pages(struct page *memmap, int nr_pages) | 86384 | @@ -761,7 +761,7 @@ static void clear_hwpoisoned_pages(struct page *memmap, int nr_pages) |
86520 | 86385 | ||
86521 | for (i = 0; i < PAGES_PER_SECTION; i++) { | 86386 | for (i = 0; i < PAGES_PER_SECTION; i++) { |
86522 | if (PageHWPoison(&memmap[i])) { | 86387 | if (PageHWPoison(&memmap[i])) { |
@@ -86526,18 +86391,18 @@ index 7ca6dc8..6472aa1 100644 | |||
86526 | } | 86391 | } |
86527 | } | 86392 | } |
86528 | diff --git a/mm/swap.c b/mm/swap.c | 86393 | diff --git a/mm/swap.c b/mm/swap.c |
86529 | index 8a529a0..154ef26 100644 | 86394 | index dfd7d71..ccdf688 100644 |
86530 | --- a/mm/swap.c | 86395 | --- a/mm/swap.c |
86531 | +++ b/mm/swap.c | 86396 | +++ b/mm/swap.c |
86532 | @@ -30,6 +30,7 @@ | 86397 | @@ -31,6 +31,7 @@ |
86533 | #include <linux/backing-dev.h> | ||
86534 | #include <linux/memcontrol.h> | 86398 | #include <linux/memcontrol.h> |
86535 | #include <linux/gfp.h> | 86399 | #include <linux/gfp.h> |
86400 | #include <linux/uio.h> | ||
86536 | +#include <linux/hugetlb.h> | 86401 | +#include <linux/hugetlb.h> |
86537 | 86402 | ||
86538 | #include "internal.h" | 86403 | #include "internal.h" |
86539 | 86404 | ||
86540 | @@ -72,6 +73,8 @@ static void __put_compound_page(struct page *page) | 86405 | @@ -73,6 +74,8 @@ static void __put_compound_page(struct page *page) |
86541 | 86406 | ||
86542 | __page_cache_release(page); | 86407 | __page_cache_release(page); |
86543 | dtor = get_compound_page_dtor(page); | 86408 | dtor = get_compound_page_dtor(page); |
@@ -86547,7 +86412,7 @@ index 8a529a0..154ef26 100644 | |||
86547 | } | 86412 | } |
86548 | 86413 | ||
86549 | diff --git a/mm/swapfile.c b/mm/swapfile.c | 86414 | diff --git a/mm/swapfile.c b/mm/swapfile.c |
86550 | index a1f7772..9e982ac 100644 | 86415 | index 746af55b..7ac94ae 100644 |
86551 | --- a/mm/swapfile.c | 86416 | --- a/mm/swapfile.c |
86552 | +++ b/mm/swapfile.c | 86417 | +++ b/mm/swapfile.c |
86553 | @@ -66,7 +66,7 @@ static DEFINE_MUTEX(swapon_mutex); | 86418 | @@ -66,7 +66,7 @@ static DEFINE_MUTEX(swapon_mutex); |
@@ -86559,7 +86424,7 @@ index a1f7772..9e982ac 100644 | |||
86559 | 86424 | ||
86560 | static inline unsigned char swap_count(unsigned char ent) | 86425 | static inline unsigned char swap_count(unsigned char ent) |
86561 | { | 86426 | { |
86562 | @@ -1683,7 +1683,7 @@ SYSCALL_DEFINE1(swapoff, const char __user *, specialfile) | 86427 | @@ -1684,7 +1684,7 @@ SYSCALL_DEFINE1(swapoff, const char __user *, specialfile) |
86563 | } | 86428 | } |
86564 | filp_close(swap_file, NULL); | 86429 | filp_close(swap_file, NULL); |
86565 | err = 0; | 86430 | err = 0; |
@@ -86568,7 +86433,7 @@ index a1f7772..9e982ac 100644 | |||
86568 | wake_up_interruptible(&proc_poll_wait); | 86433 | wake_up_interruptible(&proc_poll_wait); |
86569 | 86434 | ||
86570 | out_dput: | 86435 | out_dput: |
86571 | @@ -1700,8 +1700,8 @@ static unsigned swaps_poll(struct file *file, poll_table *wait) | 86436 | @@ -1701,8 +1701,8 @@ static unsigned swaps_poll(struct file *file, poll_table *wait) |
86572 | 86437 | ||
86573 | poll_wait(file, &proc_poll_wait, wait); | 86438 | poll_wait(file, &proc_poll_wait, wait); |
86574 | 86439 | ||
@@ -86579,7 +86444,7 @@ index a1f7772..9e982ac 100644 | |||
86579 | return POLLIN | POLLRDNORM | POLLERR | POLLPRI; | 86444 | return POLLIN | POLLRDNORM | POLLERR | POLLPRI; |
86580 | } | 86445 | } |
86581 | 86446 | ||
86582 | @@ -1799,7 +1799,7 @@ static int swaps_open(struct inode *inode, struct file *file) | 86447 | @@ -1800,7 +1800,7 @@ static int swaps_open(struct inode *inode, struct file *file) |
86583 | return ret; | 86448 | return ret; |
86584 | 86449 | ||
86585 | seq = file->private_data; | 86450 | seq = file->private_data; |
@@ -86588,7 +86453,7 @@ index a1f7772..9e982ac 100644 | |||
86588 | return 0; | 86453 | return 0; |
86589 | } | 86454 | } |
86590 | 86455 | ||
86591 | @@ -2142,7 +2142,7 @@ SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags) | 86456 | @@ -2143,7 +2143,7 @@ SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags) |
86592 | (frontswap_map) ? "FS" : ""); | 86457 | (frontswap_map) ? "FS" : ""); |
86593 | 86458 | ||
86594 | mutex_unlock(&swapon_mutex); | 86459 | mutex_unlock(&swapon_mutex); |
@@ -86615,10 +86480,10 @@ index ab1424d..7c5bd5a 100644 | |||
86615 | mm->unmap_area = arch_unmap_area; | 86480 | mm->unmap_area = arch_unmap_area; |
86616 | } | 86481 | } |
86617 | diff --git a/mm/vmalloc.c b/mm/vmalloc.c | 86482 | diff --git a/mm/vmalloc.c b/mm/vmalloc.c |
86618 | index 0f751f2..2bc3bd1 100644 | 86483 | index d365724..6cae7c2 100644 |
86619 | --- a/mm/vmalloc.c | 86484 | --- a/mm/vmalloc.c |
86620 | +++ b/mm/vmalloc.c | 86485 | +++ b/mm/vmalloc.c |
86621 | @@ -39,8 +39,19 @@ static void vunmap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end) | 86486 | @@ -59,8 +59,19 @@ static void vunmap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end) |
86622 | 86487 | ||
86623 | pte = pte_offset_kernel(pmd, addr); | 86488 | pte = pte_offset_kernel(pmd, addr); |
86624 | do { | 86489 | do { |
@@ -86640,7 +86505,7 @@ index 0f751f2..2bc3bd1 100644 | |||
86640 | } while (pte++, addr += PAGE_SIZE, addr != end); | 86505 | } while (pte++, addr += PAGE_SIZE, addr != end); |
86641 | } | 86506 | } |
86642 | 86507 | ||
86643 | @@ -100,16 +111,29 @@ static int vmap_pte_range(pmd_t *pmd, unsigned long addr, | 86508 | @@ -120,16 +131,29 @@ static int vmap_pte_range(pmd_t *pmd, unsigned long addr, |
86644 | pte = pte_alloc_kernel(pmd, addr); | 86509 | pte = pte_alloc_kernel(pmd, addr); |
86645 | if (!pte) | 86510 | if (!pte) |
86646 | return -ENOMEM; | 86511 | return -ENOMEM; |
@@ -86672,7 +86537,7 @@ index 0f751f2..2bc3bd1 100644 | |||
86672 | return 0; | 86537 | return 0; |
86673 | } | 86538 | } |
86674 | 86539 | ||
86675 | @@ -119,7 +143,7 @@ static int vmap_pmd_range(pud_t *pud, unsigned long addr, | 86540 | @@ -139,7 +163,7 @@ static int vmap_pmd_range(pud_t *pud, unsigned long addr, |
86676 | pmd_t *pmd; | 86541 | pmd_t *pmd; |
86677 | unsigned long next; | 86542 | unsigned long next; |
86678 | 86543 | ||
@@ -86681,7 +86546,7 @@ index 0f751f2..2bc3bd1 100644 | |||
86681 | if (!pmd) | 86546 | if (!pmd) |
86682 | return -ENOMEM; | 86547 | return -ENOMEM; |
86683 | do { | 86548 | do { |
86684 | @@ -136,7 +160,7 @@ static int vmap_pud_range(pgd_t *pgd, unsigned long addr, | 86549 | @@ -156,7 +180,7 @@ static int vmap_pud_range(pgd_t *pgd, unsigned long addr, |
86685 | pud_t *pud; | 86550 | pud_t *pud; |
86686 | unsigned long next; | 86551 | unsigned long next; |
86687 | 86552 | ||
@@ -86690,7 +86555,7 @@ index 0f751f2..2bc3bd1 100644 | |||
86690 | if (!pud) | 86555 | if (!pud) |
86691 | return -ENOMEM; | 86556 | return -ENOMEM; |
86692 | do { | 86557 | do { |
86693 | @@ -196,6 +220,12 @@ int is_vmalloc_or_module_addr(const void *x) | 86558 | @@ -216,6 +240,12 @@ int is_vmalloc_or_module_addr(const void *x) |
86694 | if (addr >= MODULES_VADDR && addr < MODULES_END) | 86559 | if (addr >= MODULES_VADDR && addr < MODULES_END) |
86695 | return 1; | 86560 | return 1; |
86696 | #endif | 86561 | #endif |
@@ -86703,7 +86568,7 @@ index 0f751f2..2bc3bd1 100644 | |||
86703 | return is_vmalloc_addr(x); | 86568 | return is_vmalloc_addr(x); |
86704 | } | 86569 | } |
86705 | 86570 | ||
86706 | @@ -216,8 +246,14 @@ struct page *vmalloc_to_page(const void *vmalloc_addr) | 86571 | @@ -236,8 +266,14 @@ struct page *vmalloc_to_page(const void *vmalloc_addr) |
86707 | 86572 | ||
86708 | if (!pgd_none(*pgd)) { | 86573 | if (!pgd_none(*pgd)) { |
86709 | pud_t *pud = pud_offset(pgd, addr); | 86574 | pud_t *pud = pud_offset(pgd, addr); |
@@ -86718,7 +86583,7 @@ index 0f751f2..2bc3bd1 100644 | |||
86718 | if (!pmd_none(*pmd)) { | 86583 | if (!pmd_none(*pmd)) { |
86719 | pte_t *ptep, pte; | 86584 | pte_t *ptep, pte; |
86720 | 86585 | ||
86721 | @@ -329,7 +365,7 @@ static void purge_vmap_area_lazy(void); | 86586 | @@ -339,7 +375,7 @@ static void purge_vmap_area_lazy(void); |
86722 | * Allocate a region of KVA of the specified size and alignment, within the | 86587 | * Allocate a region of KVA of the specified size and alignment, within the |
86723 | * vstart and vend. | 86588 | * vstart and vend. |
86724 | */ | 86589 | */ |
@@ -86727,7 +86592,7 @@ index 0f751f2..2bc3bd1 100644 | |||
86727 | unsigned long align, | 86592 | unsigned long align, |
86728 | unsigned long vstart, unsigned long vend, | 86593 | unsigned long vstart, unsigned long vend, |
86729 | int node, gfp_t gfp_mask) | 86594 | int node, gfp_t gfp_mask) |
86730 | @@ -1328,6 +1364,16 @@ static struct vm_struct *__get_vm_area_node(unsigned long size, | 86595 | @@ -1337,6 +1373,16 @@ static struct vm_struct *__get_vm_area_node(unsigned long size, |
86731 | struct vm_struct *area; | 86596 | struct vm_struct *area; |
86732 | 86597 | ||
86733 | BUG_ON(in_interrupt()); | 86598 | BUG_ON(in_interrupt()); |
@@ -86744,7 +86609,7 @@ index 0f751f2..2bc3bd1 100644 | |||
86744 | if (flags & VM_IOREMAP) { | 86609 | if (flags & VM_IOREMAP) { |
86745 | int bit = fls(size); | 86610 | int bit = fls(size); |
86746 | 86611 | ||
86747 | @@ -1569,6 +1615,11 @@ void *vmap(struct page **pages, unsigned int count, | 86612 | @@ -1581,6 +1627,11 @@ void *vmap(struct page **pages, unsigned int count, |
86748 | if (count > totalram_pages) | 86613 | if (count > totalram_pages) |
86749 | return NULL; | 86614 | return NULL; |
86750 | 86615 | ||
@@ -86756,7 +86621,7 @@ index 0f751f2..2bc3bd1 100644 | |||
86756 | area = get_vm_area_caller((count << PAGE_SHIFT), flags, | 86621 | area = get_vm_area_caller((count << PAGE_SHIFT), flags, |
86757 | __builtin_return_address(0)); | 86622 | __builtin_return_address(0)); |
86758 | if (!area) | 86623 | if (!area) |
86759 | @@ -1670,6 +1721,13 @@ void *__vmalloc_node_range(unsigned long size, unsigned long align, | 86624 | @@ -1682,6 +1733,13 @@ void *__vmalloc_node_range(unsigned long size, unsigned long align, |
86760 | if (!size || (size >> PAGE_SHIFT) > totalram_pages) | 86625 | if (!size || (size >> PAGE_SHIFT) > totalram_pages) |
86761 | goto fail; | 86626 | goto fail; |
86762 | 86627 | ||
@@ -86770,7 +86635,7 @@ index 0f751f2..2bc3bd1 100644 | |||
86770 | area = __get_vm_area_node(size, align, VM_ALLOC | VM_UNLIST, | 86635 | area = __get_vm_area_node(size, align, VM_ALLOC | VM_UNLIST, |
86771 | start, end, node, gfp_mask, caller); | 86636 | start, end, node, gfp_mask, caller); |
86772 | if (!area) | 86637 | if (!area) |
86773 | @@ -1845,10 +1903,9 @@ EXPORT_SYMBOL(vzalloc_node); | 86638 | @@ -1858,10 +1916,9 @@ EXPORT_SYMBOL(vzalloc_node); |
86774 | * For tight control over page level allocator and protection flags | 86639 | * For tight control over page level allocator and protection flags |
86775 | * use __vmalloc() instead. | 86640 | * use __vmalloc() instead. |
86776 | */ | 86641 | */ |
@@ -86782,7 +86647,7 @@ index 0f751f2..2bc3bd1 100644 | |||
86782 | NUMA_NO_NODE, __builtin_return_address(0)); | 86647 | NUMA_NO_NODE, __builtin_return_address(0)); |
86783 | } | 86648 | } |
86784 | 86649 | ||
86785 | @@ -2139,6 +2196,8 @@ int remap_vmalloc_range(struct vm_area_struct *vma, void *addr, | 86650 | @@ -2168,6 +2225,8 @@ int remap_vmalloc_range(struct vm_area_struct *vma, void *addr, |
86786 | unsigned long uaddr = vma->vm_start; | 86651 | unsigned long uaddr = vma->vm_start; |
86787 | unsigned long usize = vma->vm_end - vma->vm_start; | 86652 | unsigned long usize = vma->vm_end - vma->vm_start; |
86788 | 86653 | ||
@@ -86791,7 +86656,7 @@ index 0f751f2..2bc3bd1 100644 | |||
86791 | if ((PAGE_SIZE-1) & (unsigned long)addr) | 86656 | if ((PAGE_SIZE-1) & (unsigned long)addr) |
86792 | return -EINVAL; | 86657 | return -EINVAL; |
86793 | 86658 | ||
86794 | @@ -2578,7 +2637,11 @@ static int s_show(struct seq_file *m, void *p) | 86659 | @@ -2629,7 +2688,11 @@ static int s_show(struct seq_file *m, void *p) |
86795 | v->addr, v->addr + v->size, v->size); | 86660 | v->addr, v->addr + v->size, v->size); |
86796 | 86661 | ||
86797 | if (v->caller) | 86662 | if (v->caller) |
@@ -86804,10 +86669,10 @@ index 0f751f2..2bc3bd1 100644 | |||
86804 | if (v->nr_pages) | 86669 | if (v->nr_pages) |
86805 | seq_printf(m, " pages=%d", v->nr_pages); | 86670 | seq_printf(m, " pages=%d", v->nr_pages); |
86806 | diff --git a/mm/vmstat.c b/mm/vmstat.c | 86671 | diff --git a/mm/vmstat.c b/mm/vmstat.c |
86807 | index e1d8ed1..253fa3c 100644 | 86672 | index f42745e..62f8346 100644 |
86808 | --- a/mm/vmstat.c | 86673 | --- a/mm/vmstat.c |
86809 | +++ b/mm/vmstat.c | 86674 | +++ b/mm/vmstat.c |
86810 | @@ -78,7 +78,7 @@ void vm_events_fold_cpu(int cpu) | 86675 | @@ -76,7 +76,7 @@ void vm_events_fold_cpu(int cpu) |
86811 | * | 86676 | * |
86812 | * vm_stat contains the global counters | 86677 | * vm_stat contains the global counters |
86813 | */ | 86678 | */ |
@@ -86816,7 +86681,7 @@ index e1d8ed1..253fa3c 100644 | |||
86816 | EXPORT_SYMBOL(vm_stat); | 86681 | EXPORT_SYMBOL(vm_stat); |
86817 | 86682 | ||
86818 | #ifdef CONFIG_SMP | 86683 | #ifdef CONFIG_SMP |
86819 | @@ -454,7 +454,7 @@ void refresh_cpu_vm_stats(int cpu) | 86684 | @@ -452,7 +452,7 @@ void refresh_cpu_vm_stats(int cpu) |
86820 | v = p->vm_stat_diff[i]; | 86685 | v = p->vm_stat_diff[i]; |
86821 | p->vm_stat_diff[i] = 0; | 86686 | p->vm_stat_diff[i] = 0; |
86822 | local_irq_restore(flags); | 86687 | local_irq_restore(flags); |
@@ -86825,7 +86690,7 @@ index e1d8ed1..253fa3c 100644 | |||
86825 | global_diff[i] += v; | 86690 | global_diff[i] += v; |
86826 | #ifdef CONFIG_NUMA | 86691 | #ifdef CONFIG_NUMA |
86827 | /* 3 seconds idle till flush */ | 86692 | /* 3 seconds idle till flush */ |
86828 | @@ -492,7 +492,7 @@ void refresh_cpu_vm_stats(int cpu) | 86693 | @@ -490,7 +490,7 @@ void refresh_cpu_vm_stats(int cpu) |
86829 | 86694 | ||
86830 | for (i = 0; i < NR_VM_ZONE_STAT_ITEMS; i++) | 86695 | for (i = 0; i < NR_VM_ZONE_STAT_ITEMS; i++) |
86831 | if (global_diff[i]) | 86696 | if (global_diff[i]) |
@@ -86833,8 +86698,8 @@ index e1d8ed1..253fa3c 100644 | |||
86833 | + atomic_long_add_unchecked(global_diff[i], &vm_stat[i]); | 86698 | + atomic_long_add_unchecked(global_diff[i], &vm_stat[i]); |
86834 | } | 86699 | } |
86835 | 86700 | ||
86836 | void drain_zonestat(struct zone *zone, struct per_cpu_pageset *pset) | 86701 | /* |
86837 | @@ -503,8 +503,8 @@ void drain_zonestat(struct zone *zone, struct per_cpu_pageset *pset) | 86702 | @@ -505,8 +505,8 @@ void drain_zonestat(struct zone *zone, struct per_cpu_pageset *pset) |
86838 | if (pset->vm_stat_diff[i]) { | 86703 | if (pset->vm_stat_diff[i]) { |
86839 | int v = pset->vm_stat_diff[i]; | 86704 | int v = pset->vm_stat_diff[i]; |
86840 | pset->vm_stat_diff[i] = 0; | 86705 | pset->vm_stat_diff[i] = 0; |
@@ -86845,7 +86710,7 @@ index e1d8ed1..253fa3c 100644 | |||
86845 | } | 86710 | } |
86846 | } | 86711 | } |
86847 | #endif | 86712 | #endif |
86848 | @@ -1224,7 +1224,7 @@ static int __cpuinit vmstat_cpuup_callback(struct notifier_block *nfb, | 86713 | @@ -1226,7 +1226,7 @@ static int __cpuinit vmstat_cpuup_callback(struct notifier_block *nfb, |
86849 | return NOTIFY_OK; | 86714 | return NOTIFY_OK; |
86850 | } | 86715 | } |
86851 | 86716 | ||
@@ -86854,7 +86719,7 @@ index e1d8ed1..253fa3c 100644 | |||
86854 | { &vmstat_cpuup_callback, NULL, 0 }; | 86719 | { &vmstat_cpuup_callback, NULL, 0 }; |
86855 | #endif | 86720 | #endif |
86856 | 86721 | ||
86857 | @@ -1239,10 +1239,20 @@ static int __init setup_vmstat(void) | 86722 | @@ -1241,10 +1241,20 @@ static int __init setup_vmstat(void) |
86858 | start_cpu_timer(cpu); | 86723 | start_cpu_timer(cpu); |
86859 | #endif | 86724 | #endif |
86860 | #ifdef CONFIG_PROC_FS | 86725 | #ifdef CONFIG_PROC_FS |
@@ -86880,24 +86745,10 @@ index e1d8ed1..253fa3c 100644 | |||
86880 | return 0; | 86745 | return 0; |
86881 | } | 86746 | } |
86882 | diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c | 86747 | diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c |
86883 | index 85addcd..c429a13 100644 | 86748 | index 9424f37..6aabf19 100644 |
86884 | --- a/net/8021q/vlan.c | 86749 | --- a/net/8021q/vlan.c |
86885 | +++ b/net/8021q/vlan.c | 86750 | +++ b/net/8021q/vlan.c |
86886 | @@ -114,6 +114,13 @@ void unregister_vlan_dev(struct net_device *dev, struct list_head *head) | 86751 | @@ -469,7 +469,7 @@ out: |
86887 | if (vlan_id) | ||
86888 | vlan_vid_del(real_dev, vlan_id); | ||
86889 | |||
86890 | + /* Take it out of our own structures, but be sure to interlock with | ||
86891 | + * HW accelerating devices or SW vlan input packet processing if | ||
86892 | + * VLAN is not 0 (leave it there for 802.1p). | ||
86893 | + */ | ||
86894 | + if (vlan_id) | ||
86895 | + vlan_vid_del(real_dev, vlan_id); | ||
86896 | + | ||
86897 | /* Get rid of the vlan's reference to real_dev */ | ||
86898 | dev_put(real_dev); | ||
86899 | } | ||
86900 | @@ -496,7 +503,7 @@ out: | ||
86901 | return NOTIFY_DONE; | 86752 | return NOTIFY_DONE; |
86902 | } | 86753 | } |
86903 | 86754 | ||
@@ -86906,7 +86757,7 @@ index 85addcd..c429a13 100644 | |||
86906 | .notifier_call = vlan_device_event, | 86757 | .notifier_call = vlan_device_event, |
86907 | }; | 86758 | }; |
86908 | 86759 | ||
86909 | @@ -571,8 +578,7 @@ static int vlan_ioctl_handler(struct net *net, void __user *arg) | 86760 | @@ -544,8 +544,7 @@ static int vlan_ioctl_handler(struct net *net, void __user *arg) |
86910 | err = -EPERM; | 86761 | err = -EPERM; |
86911 | if (!ns_capable(net->user_ns, CAP_NET_ADMIN)) | 86762 | if (!ns_capable(net->user_ns, CAP_NET_ADMIN)) |
86912 | break; | 86763 | break; |
@@ -86916,44 +86767,6 @@ index 85addcd..c429a13 100644 | |||
86916 | struct vlan_net *vn; | 86767 | struct vlan_net *vn; |
86917 | 86768 | ||
86918 | vn = net_generic(net, vlan_net_id); | 86769 | vn = net_generic(net, vlan_net_id); |
86919 | diff --git a/net/8021q/vlan_core.c b/net/8021q/vlan_core.c | ||
86920 | index f3b6f51..6c205fc 100644 | ||
86921 | --- a/net/8021q/vlan_core.c | ||
86922 | +++ b/net/8021q/vlan_core.c | ||
86923 | @@ -8,7 +8,7 @@ | ||
86924 | bool vlan_do_receive(struct sk_buff **skbp) | ||
86925 | { | ||
86926 | struct sk_buff *skb = *skbp; | ||
86927 | - u16 vlan_id = skb->vlan_tci & VLAN_VID_MASK; | ||
86928 | + u16 vlan_id = vlan_tx_tag_get_id(skb); | ||
86929 | struct net_device *vlan_dev; | ||
86930 | struct vlan_pcpu_stats *rx_stats; | ||
86931 | |||
86932 | diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c | ||
86933 | index 63bd98c..c09b2b0 100644 | ||
86934 | --- a/net/8021q/vlan_dev.c | ||
86935 | +++ b/net/8021q/vlan_dev.c | ||
86936 | @@ -73,6 +73,8 @@ vlan_dev_get_egress_qos_mask(struct net_device *dev, struct sk_buff *skb) | ||
86937 | { | ||
86938 | struct vlan_priority_tci_mapping *mp; | ||
86939 | |||
86940 | + smp_rmb(); /* coupled with smp_wmb() in vlan_dev_set_egress_priority() */ | ||
86941 | + | ||
86942 | mp = vlan_dev_priv(dev)->egress_priority_map[(skb->priority & 0xF)]; | ||
86943 | while (mp) { | ||
86944 | if (mp->priority == skb->priority) { | ||
86945 | @@ -248,6 +250,11 @@ int vlan_dev_set_egress_priority(const struct net_device *dev, | ||
86946 | np->next = mp; | ||
86947 | np->priority = skb_prio; | ||
86948 | np->vlan_qos = vlan_qos; | ||
86949 | + /* Before inserting this element in hash table, make sure all its fields | ||
86950 | + * are committed to memory. | ||
86951 | + * coupled with smp_rmb() in vlan_dev_get_egress_qos_mask() | ||
86952 | + */ | ||
86953 | + smp_wmb(); | ||
86954 | vlan->egress_priority_map[skb_prio & 0xF] = np; | ||
86955 | if (vlan_qos) | ||
86956 | vlan->nr_egress_mappings++; | ||
86957 | diff --git a/net/9p/mod.c b/net/9p/mod.c | 86770 | diff --git a/net/9p/mod.c b/net/9p/mod.c |
86958 | index 6ab36ae..6f1841b 100644 | 86771 | index 6ab36ae..6f1841b 100644 |
86959 | --- a/net/9p/mod.c | 86772 | --- a/net/9p/mod.c |
@@ -86976,27 +86789,6 @@ index 6ab36ae..6f1841b 100644 | |||
86976 | spin_unlock(&v9fs_trans_lock); | 86789 | spin_unlock(&v9fs_trans_lock); |
86977 | } | 86790 | } |
86978 | EXPORT_SYMBOL(v9fs_unregister_trans); | 86791 | EXPORT_SYMBOL(v9fs_unregister_trans); |
86979 | diff --git a/net/9p/trans_common.c b/net/9p/trans_common.c | ||
86980 | index de8df95..2ee3879 100644 | ||
86981 | --- a/net/9p/trans_common.c | ||
86982 | +++ b/net/9p/trans_common.c | ||
86983 | @@ -24,11 +24,11 @@ | ||
86984 | */ | ||
86985 | void p9_release_pages(struct page **pages, int nr_pages) | ||
86986 | { | ||
86987 | - int i = 0; | ||
86988 | - while (pages[i] && nr_pages--) { | ||
86989 | - put_page(pages[i]); | ||
86990 | - i++; | ||
86991 | - } | ||
86992 | + int i; | ||
86993 | + | ||
86994 | + for (i = 0; i < nr_pages; i++) | ||
86995 | + if (pages[i]) | ||
86996 | + put_page(pages[i]); | ||
86997 | } | ||
86998 | EXPORT_SYMBOL(p9_release_pages); | ||
86999 | |||
87000 | diff --git a/net/9p/trans_fd.c b/net/9p/trans_fd.c | 86792 | diff --git a/net/9p/trans_fd.c b/net/9p/trans_fd.c |
87001 | index 02efb25..41541a9 100644 | 86793 | index 02efb25..41541a9 100644 |
87002 | --- a/net/9p/trans_fd.c | 86794 | --- a/net/9p/trans_fd.c |
@@ -87051,7 +86843,7 @@ index 876fbe8..8bbea9f 100644 | |||
87051 | #undef __HANDLE_ITEM | 86843 | #undef __HANDLE_ITEM |
87052 | } | 86844 | } |
87053 | diff --git a/net/atm/lec.h b/net/atm/lec.h | 86845 | diff --git a/net/atm/lec.h b/net/atm/lec.h |
87054 | index a86aff9..3a0d6f6 100644 | 86846 | index 4149db1..f2ab682 100644 |
87055 | --- a/net/atm/lec.h | 86847 | --- a/net/atm/lec.h |
87056 | +++ b/net/atm/lec.h | 86848 | +++ b/net/atm/lec.h |
87057 | @@ -48,7 +48,7 @@ struct lane2_ops { | 86849 | @@ -48,7 +48,7 @@ struct lane2_ops { |
@@ -87064,7 +86856,7 @@ index a86aff9..3a0d6f6 100644 | |||
87064 | /* | 86856 | /* |
87065 | * ATM LAN Emulation supports both LLC & Dix Ethernet EtherType | 86857 | * ATM LAN Emulation supports both LLC & Dix Ethernet EtherType |
87066 | diff --git a/net/atm/proc.c b/net/atm/proc.c | 86858 | diff --git a/net/atm/proc.c b/net/atm/proc.c |
87067 | index 6ac35ff..ac0e136 100644 | 86859 | index bbb6461..cf04016 100644 |
87068 | --- a/net/atm/proc.c | 86860 | --- a/net/atm/proc.c |
87069 | +++ b/net/atm/proc.c | 86861 | +++ b/net/atm/proc.c |
87070 | @@ -45,9 +45,9 @@ static void add_stats(struct seq_file *seq, const char *aal, | 86862 | @@ -45,9 +45,9 @@ static void add_stats(struct seq_file *seq, const char *aal, |
@@ -87116,10 +86908,10 @@ index d5744b7..506bae3 100644 | |||
87116 | table = kmemdup(ax25_param_table, sizeof(ax25_param_table), GFP_KERNEL); | 86908 | table = kmemdup(ax25_param_table, sizeof(ax25_param_table), GFP_KERNEL); |
87117 | if (!table) | 86909 | if (!table) |
87118 | diff --git a/net/batman-adv/bat_iv_ogm.c b/net/batman-adv/bat_iv_ogm.c | 86910 | diff --git a/net/batman-adv/bat_iv_ogm.c b/net/batman-adv/bat_iv_ogm.c |
87119 | index a5bb0a7..e1d8b97 100644 | 86911 | index f680ee1..97e3542 100644 |
87120 | --- a/net/batman-adv/bat_iv_ogm.c | 86912 | --- a/net/batman-adv/bat_iv_ogm.c |
87121 | +++ b/net/batman-adv/bat_iv_ogm.c | 86913 | +++ b/net/batman-adv/bat_iv_ogm.c |
87122 | @@ -63,7 +63,7 @@ static int batadv_iv_ogm_iface_enable(struct batadv_hard_iface *hard_iface) | 86914 | @@ -79,7 +79,7 @@ static int batadv_iv_ogm_iface_enable(struct batadv_hard_iface *hard_iface) |
87123 | 86915 | ||
87124 | /* randomize initial seqno to avoid collision */ | 86916 | /* randomize initial seqno to avoid collision */ |
87125 | get_random_bytes(&random_seqno, sizeof(random_seqno)); | 86917 | get_random_bytes(&random_seqno, sizeof(random_seqno)); |
@@ -87128,7 +86920,7 @@ index a5bb0a7..e1d8b97 100644 | |||
87128 | 86920 | ||
87129 | hard_iface->bat_iv.ogm_buff_len = BATADV_OGM_HLEN; | 86921 | hard_iface->bat_iv.ogm_buff_len = BATADV_OGM_HLEN; |
87130 | ogm_buff = kmalloc(hard_iface->bat_iv.ogm_buff_len, GFP_ATOMIC); | 86922 | ogm_buff = kmalloc(hard_iface->bat_iv.ogm_buff_len, GFP_ATOMIC); |
87131 | @@ -611,9 +611,9 @@ static void batadv_iv_ogm_schedule(struct batadv_hard_iface *hard_iface) | 86923 | @@ -627,9 +627,9 @@ static void batadv_iv_ogm_schedule(struct batadv_hard_iface *hard_iface) |
87132 | batadv_ogm_packet = (struct batadv_ogm_packet *)(*ogm_buff); | 86924 | batadv_ogm_packet = (struct batadv_ogm_packet *)(*ogm_buff); |
87133 | 86925 | ||
87134 | /* change sequence number to network order */ | 86926 | /* change sequence number to network order */ |
@@ -87140,7 +86932,7 @@ index a5bb0a7..e1d8b97 100644 | |||
87140 | 86932 | ||
87141 | batadv_ogm_packet->ttvn = atomic_read(&bat_priv->tt.vn); | 86933 | batadv_ogm_packet->ttvn = atomic_read(&bat_priv->tt.vn); |
87142 | batadv_ogm_packet->tt_crc = htons(bat_priv->tt.local_crc); | 86934 | batadv_ogm_packet->tt_crc = htons(bat_priv->tt.local_crc); |
87143 | @@ -1013,7 +1013,7 @@ static void batadv_iv_ogm_process(const struct ethhdr *ethhdr, | 86935 | @@ -1037,7 +1037,7 @@ static void batadv_iv_ogm_process(const struct ethhdr *ethhdr, |
87144 | return; | 86936 | return; |
87145 | 86937 | ||
87146 | /* could be changed by schedule_own_packet() */ | 86938 | /* could be changed by schedule_own_packet() */ |
@@ -87150,10 +86942,10 @@ index a5bb0a7..e1d8b97 100644 | |||
87150 | if (batadv_ogm_packet->flags & BATADV_DIRECTLINK) | 86942 | if (batadv_ogm_packet->flags & BATADV_DIRECTLINK) |
87151 | has_directlink_flag = 1; | 86943 | has_directlink_flag = 1; |
87152 | diff --git a/net/batman-adv/hard-interface.c b/net/batman-adv/hard-interface.c | 86944 | diff --git a/net/batman-adv/hard-interface.c b/net/batman-adv/hard-interface.c |
87153 | index 368219e..53f56f9 100644 | 86945 | index 522243a..b48c0ef 100644 |
87154 | --- a/net/batman-adv/hard-interface.c | 86946 | --- a/net/batman-adv/hard-interface.c |
87155 | +++ b/net/batman-adv/hard-interface.c | 86947 | +++ b/net/batman-adv/hard-interface.c |
87156 | @@ -370,7 +370,7 @@ int batadv_hardif_enable_interface(struct batadv_hard_iface *hard_iface, | 86948 | @@ -401,7 +401,7 @@ int batadv_hardif_enable_interface(struct batadv_hard_iface *hard_iface, |
87157 | hard_iface->batman_adv_ptype.dev = hard_iface->net_dev; | 86949 | hard_iface->batman_adv_ptype.dev = hard_iface->net_dev; |
87158 | dev_add_pack(&hard_iface->batman_adv_ptype); | 86950 | dev_add_pack(&hard_iface->batman_adv_ptype); |
87159 | 86951 | ||
@@ -87162,7 +86954,7 @@ index 368219e..53f56f9 100644 | |||
87162 | batadv_info(hard_iface->soft_iface, "Adding interface: %s\n", | 86954 | batadv_info(hard_iface->soft_iface, "Adding interface: %s\n", |
87163 | hard_iface->net_dev->name); | 86955 | hard_iface->net_dev->name); |
87164 | 86956 | ||
87165 | @@ -514,7 +514,7 @@ batadv_hardif_add_interface(struct net_device *net_dev) | 86957 | @@ -550,7 +550,7 @@ batadv_hardif_add_interface(struct net_device *net_dev) |
87166 | /* This can't be called via a bat_priv callback because | 86958 | /* This can't be called via a bat_priv callback because |
87167 | * we have no bat_priv yet. | 86959 | * we have no bat_priv yet. |
87168 | */ | 86960 | */ |
@@ -87172,10 +86964,10 @@ index 368219e..53f56f9 100644 | |||
87172 | 86964 | ||
87173 | return hard_iface; | 86965 | return hard_iface; |
87174 | diff --git a/net/batman-adv/soft-interface.c b/net/batman-adv/soft-interface.c | 86966 | diff --git a/net/batman-adv/soft-interface.c b/net/batman-adv/soft-interface.c |
87175 | index 2711e87..4ca48fa 100644 | 86967 | index 819dfb0..9a672d1 100644 |
87176 | --- a/net/batman-adv/soft-interface.c | 86968 | --- a/net/batman-adv/soft-interface.c |
87177 | +++ b/net/batman-adv/soft-interface.c | 86969 | +++ b/net/batman-adv/soft-interface.c |
87178 | @@ -252,7 +252,7 @@ static int batadv_interface_tx(struct sk_buff *skb, | 86970 | @@ -253,7 +253,7 @@ static int batadv_interface_tx(struct sk_buff *skb, |
87179 | primary_if->net_dev->dev_addr, ETH_ALEN); | 86971 | primary_if->net_dev->dev_addr, ETH_ALEN); |
87180 | 86972 | ||
87181 | /* set broadcast sequence number */ | 86973 | /* set broadcast sequence number */ |
@@ -87184,7 +86976,7 @@ index 2711e87..4ca48fa 100644 | |||
87184 | bcast_packet->seqno = htonl(seqno); | 86976 | bcast_packet->seqno = htonl(seqno); |
87185 | 86977 | ||
87186 | batadv_add_bcast_packet_to_list(bat_priv, skb, brd_delay); | 86978 | batadv_add_bcast_packet_to_list(bat_priv, skb, brd_delay); |
87187 | @@ -527,7 +527,7 @@ struct net_device *batadv_softif_create(const char *name) | 86979 | @@ -472,7 +472,7 @@ static int batadv_softif_init_late(struct net_device *dev) |
87188 | atomic_set(&bat_priv->batman_queue_left, BATADV_BATMAN_QUEUE_LEN); | 86980 | atomic_set(&bat_priv->batman_queue_left, BATADV_BATMAN_QUEUE_LEN); |
87189 | 86981 | ||
87190 | atomic_set(&bat_priv->mesh_state, BATADV_MESH_INACTIVE); | 86982 | atomic_set(&bat_priv->mesh_state, BATADV_MESH_INACTIVE); |
@@ -87194,7 +86986,7 @@ index 2711e87..4ca48fa 100644 | |||
87194 | atomic_set(&bat_priv->tt.local_changes, 0); | 86986 | atomic_set(&bat_priv->tt.local_changes, 0); |
87195 | atomic_set(&bat_priv->tt.ogm_append_cnt, 0); | 86987 | atomic_set(&bat_priv->tt.ogm_append_cnt, 0); |
87196 | diff --git a/net/batman-adv/types.h b/net/batman-adv/types.h | 86988 | diff --git a/net/batman-adv/types.h b/net/batman-adv/types.h |
87197 | index 4cd87a0..348e705 100644 | 86989 | index aba8364..50fcbb8 100644 |
87198 | --- a/net/batman-adv/types.h | 86990 | --- a/net/batman-adv/types.h |
87199 | +++ b/net/batman-adv/types.h | 86991 | +++ b/net/batman-adv/types.h |
87200 | @@ -51,7 +51,7 @@ | 86992 | @@ -51,7 +51,7 @@ |
@@ -87215,7 +87007,7 @@ index 4cd87a0..348e705 100644 | |||
87215 | struct kobject *hardif_obj; | 87007 | struct kobject *hardif_obj; |
87216 | atomic_t refcount; | 87008 | atomic_t refcount; |
87217 | struct packet_type batman_adv_ptype; | 87009 | struct packet_type batman_adv_ptype; |
87218 | @@ -495,7 +495,7 @@ struct batadv_priv { | 87010 | @@ -558,7 +558,7 @@ struct batadv_priv { |
87219 | #ifdef CONFIG_BATMAN_ADV_DEBUG | 87011 | #ifdef CONFIG_BATMAN_ADV_DEBUG |
87220 | atomic_t log_level; | 87012 | atomic_t log_level; |
87221 | #endif | 87013 | #endif |
@@ -87225,7 +87017,7 @@ index 4cd87a0..348e705 100644 | |||
87225 | atomic_t batman_queue_left; | 87017 | atomic_t batman_queue_left; |
87226 | char num_ifaces; | 87018 | char num_ifaces; |
87227 | diff --git a/net/batman-adv/unicast.c b/net/batman-adv/unicast.c | 87019 | diff --git a/net/batman-adv/unicast.c b/net/batman-adv/unicast.c |
87228 | index 50e079f..49ce2d2 100644 | 87020 | index 0bb3b59..ffcbf2f 100644 |
87229 | --- a/net/batman-adv/unicast.c | 87021 | --- a/net/batman-adv/unicast.c |
87230 | +++ b/net/batman-adv/unicast.c | 87022 | +++ b/net/batman-adv/unicast.c |
87231 | @@ -270,7 +270,7 @@ int batadv_frag_send_skb(struct sk_buff *skb, struct batadv_priv *bat_priv, | 87023 | @@ -270,7 +270,7 @@ int batadv_frag_send_skb(struct sk_buff *skb, struct batadv_priv *bat_priv, |
@@ -87238,10 +87030,10 @@ index 50e079f..49ce2d2 100644 | |||
87238 | frag2->seqno = htons(seqno); | 87030 | frag2->seqno = htons(seqno); |
87239 | 87031 | ||
87240 | diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c | 87032 | diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c |
87241 | index b88605f..958e3e2 100644 | 87033 | index ace5e55..a65a1c0 100644 |
87242 | --- a/net/bluetooth/hci_core.c | 87034 | --- a/net/bluetooth/hci_core.c |
87243 | +++ b/net/bluetooth/hci_core.c | 87035 | +++ b/net/bluetooth/hci_core.c |
87244 | @@ -1793,16 +1793,16 @@ int hci_register_dev(struct hci_dev *hdev) | 87036 | @@ -2211,16 +2211,16 @@ int hci_register_dev(struct hci_dev *hdev) |
87245 | list_add(&hdev->list, &hci_dev_list); | 87037 | list_add(&hdev->list, &hci_dev_list); |
87246 | write_unlock(&hci_dev_list_lock); | 87038 | write_unlock(&hci_dev_list_lock); |
87247 | 87039 | ||
@@ -87263,10 +87055,10 @@ index b88605f..958e3e2 100644 | |||
87263 | destroy_workqueue(hdev->workqueue); | 87055 | destroy_workqueue(hdev->workqueue); |
87264 | error = -ENOMEM; | 87056 | error = -ENOMEM; |
87265 | diff --git a/net/bluetooth/hci_sock.c b/net/bluetooth/hci_sock.c | 87057 | diff --git a/net/bluetooth/hci_sock.c b/net/bluetooth/hci_sock.c |
87266 | index 6a93614..1415549 100644 | 87058 | index 9bd7d95..6c4884f 100644 |
87267 | --- a/net/bluetooth/hci_sock.c | 87059 | --- a/net/bluetooth/hci_sock.c |
87268 | +++ b/net/bluetooth/hci_sock.c | 87060 | +++ b/net/bluetooth/hci_sock.c |
87269 | @@ -929,7 +929,7 @@ static int hci_sock_setsockopt(struct socket *sock, int level, int optname, | 87061 | @@ -934,7 +934,7 @@ static int hci_sock_setsockopt(struct socket *sock, int level, int optname, |
87270 | uf.event_mask[1] = *((u32 *) f->event_mask + 1); | 87062 | uf.event_mask[1] = *((u32 *) f->event_mask + 1); |
87271 | } | 87063 | } |
87272 | 87064 | ||
@@ -87276,10 +87068,10 @@ index 6a93614..1415549 100644 | |||
87276 | err = -EFAULT; | 87068 | err = -EFAULT; |
87277 | break; | 87069 | break; |
87278 | diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c | 87070 | diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c |
87279 | index 04b32e1..dfc8ec1 100644 | 87071 | index 68843a2..30e9342 100644 |
87280 | --- a/net/bluetooth/l2cap_core.c | 87072 | --- a/net/bluetooth/l2cap_core.c |
87281 | +++ b/net/bluetooth/l2cap_core.c | 87073 | +++ b/net/bluetooth/l2cap_core.c |
87282 | @@ -3398,8 +3398,10 @@ static int l2cap_parse_conf_rsp(struct l2cap_chan *chan, void *rsp, int len, | 87074 | @@ -3507,8 +3507,10 @@ static int l2cap_parse_conf_rsp(struct l2cap_chan *chan, void *rsp, int len, |
87283 | break; | 87075 | break; |
87284 | 87076 | ||
87285 | case L2CAP_CONF_RFC: | 87077 | case L2CAP_CONF_RFC: |
@@ -87293,10 +87085,10 @@ index 04b32e1..dfc8ec1 100644 | |||
87293 | if (test_bit(CONF_STATE2_DEVICE, &chan->conf_state) && | 87085 | if (test_bit(CONF_STATE2_DEVICE, &chan->conf_state) && |
87294 | rfc.mode != chan->mode) | 87086 | rfc.mode != chan->mode) |
87295 | diff --git a/net/bluetooth/l2cap_sock.c b/net/bluetooth/l2cap_sock.c | 87087 | diff --git a/net/bluetooth/l2cap_sock.c b/net/bluetooth/l2cap_sock.c |
87296 | index 1bcfb84..dad9f98 100644 | 87088 | index 36fed40..be2eeb2 100644 |
87297 | --- a/net/bluetooth/l2cap_sock.c | 87089 | --- a/net/bluetooth/l2cap_sock.c |
87298 | +++ b/net/bluetooth/l2cap_sock.c | 87090 | +++ b/net/bluetooth/l2cap_sock.c |
87299 | @@ -479,7 +479,8 @@ static int l2cap_sock_setsockopt_old(struct socket *sock, int optname, | 87091 | @@ -485,7 +485,8 @@ static int l2cap_sock_setsockopt_old(struct socket *sock, int optname, |
87300 | struct sock *sk = sock->sk; | 87092 | struct sock *sk = sock->sk; |
87301 | struct l2cap_chan *chan = l2cap_pi(sk)->chan; | 87093 | struct l2cap_chan *chan = l2cap_pi(sk)->chan; |
87302 | struct l2cap_options opts; | 87094 | struct l2cap_options opts; |
@@ -87306,7 +87098,7 @@ index 1bcfb84..dad9f98 100644 | |||
87306 | u32 opt; | 87098 | u32 opt; |
87307 | 87099 | ||
87308 | BT_DBG("sk %p", sk); | 87100 | BT_DBG("sk %p", sk); |
87309 | @@ -501,7 +502,7 @@ static int l2cap_sock_setsockopt_old(struct socket *sock, int optname, | 87101 | @@ -507,7 +508,7 @@ static int l2cap_sock_setsockopt_old(struct socket *sock, int optname, |
87310 | opts.max_tx = chan->max_tx; | 87102 | opts.max_tx = chan->max_tx; |
87311 | opts.txwin_size = chan->tx_win; | 87103 | opts.txwin_size = chan->tx_win; |
87312 | 87104 | ||
@@ -87315,7 +87107,7 @@ index 1bcfb84..dad9f98 100644 | |||
87315 | if (copy_from_user((char *) &opts, optval, len)) { | 87107 | if (copy_from_user((char *) &opts, optval, len)) { |
87316 | err = -EFAULT; | 87108 | err = -EFAULT; |
87317 | break; | 87109 | break; |
87318 | @@ -581,7 +582,8 @@ static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, | 87110 | @@ -587,7 +588,8 @@ static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, |
87319 | struct bt_security sec; | 87111 | struct bt_security sec; |
87320 | struct bt_power pwr; | 87112 | struct bt_power pwr; |
87321 | struct l2cap_conn *conn; | 87113 | struct l2cap_conn *conn; |
@@ -87325,7 +87117,7 @@ index 1bcfb84..dad9f98 100644 | |||
87325 | u32 opt; | 87117 | u32 opt; |
87326 | 87118 | ||
87327 | BT_DBG("sk %p", sk); | 87119 | BT_DBG("sk %p", sk); |
87328 | @@ -604,7 +606,7 @@ static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, | 87120 | @@ -610,7 +612,7 @@ static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, |
87329 | 87121 | ||
87330 | sec.level = BT_SECURITY_LOW; | 87122 | sec.level = BT_SECURITY_LOW; |
87331 | 87123 | ||
@@ -87334,7 +87126,7 @@ index 1bcfb84..dad9f98 100644 | |||
87334 | if (copy_from_user((char *) &sec, optval, len)) { | 87126 | if (copy_from_user((char *) &sec, optval, len)) { |
87335 | err = -EFAULT; | 87127 | err = -EFAULT; |
87336 | break; | 87128 | break; |
87337 | @@ -701,7 +703,7 @@ static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, | 87129 | @@ -707,7 +709,7 @@ static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, |
87338 | 87130 | ||
87339 | pwr.force_active = BT_POWER_FORCE_ACTIVE_ON; | 87131 | pwr.force_active = BT_POWER_FORCE_ACTIVE_ON; |
87340 | 87132 | ||
@@ -87344,7 +87136,7 @@ index 1bcfb84..dad9f98 100644 | |||
87344 | err = -EFAULT; | 87136 | err = -EFAULT; |
87345 | break; | 87137 | break; |
87346 | diff --git a/net/bluetooth/rfcomm/sock.c b/net/bluetooth/rfcomm/sock.c | 87138 | diff --git a/net/bluetooth/rfcomm/sock.c b/net/bluetooth/rfcomm/sock.c |
87347 | index 7c9224b..381009e 100644 | 87139 | index 30b3721..c1bd0a0 100644 |
87348 | --- a/net/bluetooth/rfcomm/sock.c | 87140 | --- a/net/bluetooth/rfcomm/sock.c |
87349 | +++ b/net/bluetooth/rfcomm/sock.c | 87141 | +++ b/net/bluetooth/rfcomm/sock.c |
87350 | @@ -666,7 +666,7 @@ static int rfcomm_sock_setsockopt(struct socket *sock, int level, int optname, c | 87142 | @@ -666,7 +666,7 @@ static int rfcomm_sock_setsockopt(struct socket *sock, int level, int optname, c |
@@ -87404,24 +87196,8 @@ index b6e44ad..5b0d514 100644 | |||
87404 | spin_unlock_irqrestore(&dev->port.lock, flags); | 87196 | spin_unlock_irqrestore(&dev->port.lock, flags); |
87405 | if (dev->tty_dev->parent) | 87197 | if (dev->tty_dev->parent) |
87406 | device_move(dev->tty_dev, NULL, DPM_ORDER_DEV_LAST); | 87198 | device_move(dev->tty_dev, NULL, DPM_ORDER_DEV_LAST); |
87407 | diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c | ||
87408 | index 923fbea..642566d 100644 | ||
87409 | --- a/net/bridge/br_multicast.c | ||
87410 | +++ b/net/bridge/br_multicast.c | ||
87411 | @@ -465,8 +465,9 @@ static struct sk_buff *br_ip6_multicast_alloc_query(struct net_bridge *br, | ||
87412 | skb_set_transport_header(skb, skb->len); | ||
87413 | mldq = (struct mld_msg *) icmp6_hdr(skb); | ||
87414 | |||
87415 | - interval = ipv6_addr_any(group) ? br->multicast_last_member_interval : | ||
87416 | - br->multicast_query_response_interval; | ||
87417 | + interval = ipv6_addr_any(group) ? | ||
87418 | + br->multicast_query_response_interval : | ||
87419 | + br->multicast_last_member_interval; | ||
87420 | |||
87421 | mldq->mld_type = ICMPV6_MGM_QUERY; | ||
87422 | mldq->mld_code = 0; | ||
87423 | diff --git a/net/bridge/netfilter/ebtables.c b/net/bridge/netfilter/ebtables.c | 87199 | diff --git a/net/bridge/netfilter/ebtables.c b/net/bridge/netfilter/ebtables.c |
87424 | index 8d493c9..3849e49 100644 | 87200 | index 3d110c4..4e1b2eb 100644 |
87425 | --- a/net/bridge/netfilter/ebtables.c | 87201 | --- a/net/bridge/netfilter/ebtables.c |
87426 | +++ b/net/bridge/netfilter/ebtables.c | 87202 | +++ b/net/bridge/netfilter/ebtables.c |
87427 | @@ -1525,7 +1525,7 @@ static int do_ebt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len) | 87203 | @@ -1525,7 +1525,7 @@ static int do_ebt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len) |
@@ -87452,7 +87228,7 @@ index 8d493c9..3849e49 100644 | |||
87452 | break; | 87228 | break; |
87453 | } | 87229 | } |
87454 | diff --git a/net/caif/cfctrl.c b/net/caif/cfctrl.c | 87230 | diff --git a/net/caif/cfctrl.c b/net/caif/cfctrl.c |
87455 | index a376ec1..1fbd6be 100644 | 87231 | index 2bd4b58..0dc30a1 100644 |
87456 | --- a/net/caif/cfctrl.c | 87232 | --- a/net/caif/cfctrl.c |
87457 | +++ b/net/caif/cfctrl.c | 87233 | +++ b/net/caif/cfctrl.c |
87458 | @@ -10,6 +10,7 @@ | 87234 | @@ -10,6 +10,7 @@ |
@@ -87495,10 +87271,10 @@ index a376ec1..1fbd6be 100644 | |||
87495 | list_del(&p->list); | 87271 | list_del(&p->list); |
87496 | goto out; | 87272 | goto out; |
87497 | diff --git a/net/can/af_can.c b/net/can/af_can.c | 87273 | diff --git a/net/can/af_can.c b/net/can/af_can.c |
87498 | index c48e522..1223690 100644 | 87274 | index c4e5085..aa9efdf 100644 |
87499 | --- a/net/can/af_can.c | 87275 | --- a/net/can/af_can.c |
87500 | +++ b/net/can/af_can.c | 87276 | +++ b/net/can/af_can.c |
87501 | @@ -870,7 +870,7 @@ static const struct net_proto_family can_family_ops = { | 87277 | @@ -862,7 +862,7 @@ static const struct net_proto_family can_family_ops = { |
87502 | }; | 87278 | }; |
87503 | 87279 | ||
87504 | /* notifier block for netdevice event */ | 87280 | /* notifier block for netdevice event */ |
@@ -87508,7 +87284,7 @@ index c48e522..1223690 100644 | |||
87508 | }; | 87284 | }; |
87509 | 87285 | ||
87510 | diff --git a/net/can/gw.c b/net/can/gw.c | 87286 | diff --git a/net/can/gw.c b/net/can/gw.c |
87511 | index 117814a..ad4fb73 100644 | 87287 | index 3ee690e..00d581b 100644 |
87512 | --- a/net/can/gw.c | 87288 | --- a/net/can/gw.c |
87513 | +++ b/net/can/gw.c | 87289 | +++ b/net/can/gw.c |
87514 | @@ -80,7 +80,6 @@ MODULE_PARM_DESC(max_hops, | 87290 | @@ -80,7 +80,6 @@ MODULE_PARM_DESC(max_hops, |
@@ -87519,7 +87295,7 @@ index 117814a..ad4fb73 100644 | |||
87519 | 87295 | ||
87520 | static struct kmem_cache *cgw_cache __read_mostly; | 87296 | static struct kmem_cache *cgw_cache __read_mostly; |
87521 | 87297 | ||
87522 | @@ -928,6 +927,10 @@ static int cgw_remove_job(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg) | 87298 | @@ -927,6 +926,10 @@ static int cgw_remove_job(struct sk_buff *skb, struct nlmsghdr *nlh) |
87523 | return err; | 87299 | return err; |
87524 | } | 87300 | } |
87525 | 87301 | ||
@@ -87530,7 +87306,7 @@ index 117814a..ad4fb73 100644 | |||
87530 | static __init int cgw_module_init(void) | 87306 | static __init int cgw_module_init(void) |
87531 | { | 87307 | { |
87532 | /* sanitize given module parameter */ | 87308 | /* sanitize given module parameter */ |
87533 | @@ -943,7 +946,6 @@ static __init int cgw_module_init(void) | 87309 | @@ -942,7 +945,6 @@ static __init int cgw_module_init(void) |
87534 | return -ENOMEM; | 87310 | return -ENOMEM; |
87535 | 87311 | ||
87536 | /* set notifier */ | 87312 | /* set notifier */ |
@@ -87679,10 +87455,10 @@ index f0a1ba6..0541331 100644 | |||
87679 | a0 = a[0]; | 87455 | a0 = a[0]; |
87680 | a1 = a[1]; | 87456 | a1 = a[1]; |
87681 | diff --git a/net/core/datagram.c b/net/core/datagram.c | 87457 | diff --git a/net/core/datagram.c b/net/core/datagram.c |
87682 | index 368f9c3..f82d4a3 100644 | 87458 | index b71423d..0360434 100644 |
87683 | --- a/net/core/datagram.c | 87459 | --- a/net/core/datagram.c |
87684 | +++ b/net/core/datagram.c | 87460 | +++ b/net/core/datagram.c |
87685 | @@ -289,7 +289,7 @@ int skb_kill_datagram(struct sock *sk, struct sk_buff *skb, unsigned int flags) | 87461 | @@ -295,7 +295,7 @@ int skb_kill_datagram(struct sock *sk, struct sk_buff *skb, unsigned int flags) |
87686 | } | 87462 | } |
87687 | 87463 | ||
87688 | kfree_skb(skb); | 87464 | kfree_skb(skb); |
@@ -87692,10 +87468,10 @@ index 368f9c3..f82d4a3 100644 | |||
87692 | 87468 | ||
87693 | return err; | 87469 | return err; |
87694 | diff --git a/net/core/dev.c b/net/core/dev.c | 87470 | diff --git a/net/core/dev.c b/net/core/dev.c |
87695 | index c9eb9e6..9186a82 100644 | 87471 | index 7ddbb31..3902452 100644 |
87696 | --- a/net/core/dev.c | 87472 | --- a/net/core/dev.c |
87697 | +++ b/net/core/dev.c | 87473 | +++ b/net/core/dev.c |
87698 | @@ -1617,7 +1617,7 @@ int dev_forward_skb(struct net_device *dev, struct sk_buff *skb) | 87474 | @@ -1649,7 +1649,7 @@ int dev_forward_skb(struct net_device *dev, struct sk_buff *skb) |
87699 | { | 87475 | { |
87700 | if (skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY) { | 87476 | if (skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY) { |
87701 | if (skb_copy_ubufs(skb, GFP_ATOMIC)) { | 87477 | if (skb_copy_ubufs(skb, GFP_ATOMIC)) { |
@@ -87704,7 +87480,7 @@ index c9eb9e6..9186a82 100644 | |||
87704 | kfree_skb(skb); | 87480 | kfree_skb(skb); |
87705 | return NET_RX_DROP; | 87481 | return NET_RX_DROP; |
87706 | } | 87482 | } |
87707 | @@ -1626,7 +1626,7 @@ int dev_forward_skb(struct net_device *dev, struct sk_buff *skb) | 87483 | @@ -1658,7 +1658,7 @@ int dev_forward_skb(struct net_device *dev, struct sk_buff *skb) |
87708 | skb_orphan(skb); | 87484 | skb_orphan(skb); |
87709 | 87485 | ||
87710 | if (unlikely(!is_skb_forwardable(dev, skb))) { | 87486 | if (unlikely(!is_skb_forwardable(dev, skb))) { |
@@ -87713,7 +87489,7 @@ index c9eb9e6..9186a82 100644 | |||
87713 | kfree_skb(skb); | 87489 | kfree_skb(skb); |
87714 | return NET_RX_DROP; | 87490 | return NET_RX_DROP; |
87715 | } | 87491 | } |
87716 | @@ -2351,7 +2351,7 @@ static int illegal_highdma(struct net_device *dev, struct sk_buff *skb) | 87492 | @@ -2404,7 +2404,7 @@ static int illegal_highdma(struct net_device *dev, struct sk_buff *skb) |
87717 | 87493 | ||
87718 | struct dev_gso_cb { | 87494 | struct dev_gso_cb { |
87719 | void (*destructor)(struct sk_buff *skb); | 87495 | void (*destructor)(struct sk_buff *skb); |
@@ -87722,7 +87498,7 @@ index c9eb9e6..9186a82 100644 | |||
87722 | 87498 | ||
87723 | #define DEV_GSO_CB(skb) ((struct dev_gso_cb *)(skb)->cb) | 87499 | #define DEV_GSO_CB(skb) ((struct dev_gso_cb *)(skb)->cb) |
87724 | 87500 | ||
87725 | @@ -3099,7 +3099,7 @@ enqueue: | 87501 | @@ -3139,7 +3139,7 @@ enqueue: |
87726 | 87502 | ||
87727 | local_irq_restore(flags); | 87503 | local_irq_restore(flags); |
87728 | 87504 | ||
@@ -87731,7 +87507,7 @@ index c9eb9e6..9186a82 100644 | |||
87731 | kfree_skb(skb); | 87507 | kfree_skb(skb); |
87732 | return NET_RX_DROP; | 87508 | return NET_RX_DROP; |
87733 | } | 87509 | } |
87734 | @@ -3171,7 +3171,7 @@ int netif_rx_ni(struct sk_buff *skb) | 87510 | @@ -3211,7 +3211,7 @@ int netif_rx_ni(struct sk_buff *skb) |
87735 | } | 87511 | } |
87736 | EXPORT_SYMBOL(netif_rx_ni); | 87512 | EXPORT_SYMBOL(netif_rx_ni); |
87737 | 87513 | ||
@@ -87740,25 +87516,7 @@ index c9eb9e6..9186a82 100644 | |||
87740 | { | 87516 | { |
87741 | struct softnet_data *sd = &__get_cpu_var(softnet_data); | 87517 | struct softnet_data *sd = &__get_cpu_var(softnet_data); |
87742 | 87518 | ||
87743 | @@ -3471,8 +3471,15 @@ ncls: | 87519 | @@ -3545,7 +3545,7 @@ ncls: |
87744 | } | ||
87745 | } | ||
87746 | |||
87747 | - if (vlan_tx_nonzero_tag_present(skb)) | ||
87748 | - skb->pkt_type = PACKET_OTHERHOST; | ||
87749 | + if (unlikely(vlan_tx_tag_present(skb))) { | ||
87750 | + if (vlan_tx_tag_get_id(skb)) | ||
87751 | + skb->pkt_type = PACKET_OTHERHOST; | ||
87752 | + /* Note: we might in the future use prio bits | ||
87753 | + * and set skb->priority like in vlan_do_receive() | ||
87754 | + * For the time being, just ignore Priority Code Point | ||
87755 | + */ | ||
87756 | + skb->vlan_tci = 0; | ||
87757 | + } | ||
87758 | |||
87759 | /* deliver only exact match when indicated */ | ||
87760 | null_or_dev = deliver_exact ? skb->dev : NULL; | ||
87761 | @@ -3496,7 +3503,7 @@ ncls: | ||
87762 | ret = pt_prev->func(skb, skb->dev, pt_prev, orig_dev); | 87520 | ret = pt_prev->func(skb, skb->dev, pt_prev, orig_dev); |
87763 | } else { | 87521 | } else { |
87764 | drop: | 87522 | drop: |
@@ -87767,7 +87525,7 @@ index c9eb9e6..9186a82 100644 | |||
87767 | kfree_skb(skb); | 87525 | kfree_skb(skb); |
87768 | /* Jamal, now you will not able to escape explaining | 87526 | /* Jamal, now you will not able to escape explaining |
87769 | * me how you were going to use this. :-) | 87527 | * me how you were going to use this. :-) |
87770 | @@ -4101,7 +4108,7 @@ void netif_napi_del(struct napi_struct *napi) | 87528 | @@ -4153,7 +4153,7 @@ void netif_napi_del(struct napi_struct *napi) |
87771 | } | 87529 | } |
87772 | EXPORT_SYMBOL(netif_napi_del); | 87530 | EXPORT_SYMBOL(netif_napi_del); |
87773 | 87531 | ||
@@ -87776,7 +87534,7 @@ index c9eb9e6..9186a82 100644 | |||
87776 | { | 87534 | { |
87777 | struct softnet_data *sd = &__get_cpu_var(softnet_data); | 87535 | struct softnet_data *sd = &__get_cpu_var(softnet_data); |
87778 | unsigned long time_limit = jiffies + 2; | 87536 | unsigned long time_limit = jiffies + 2; |
87779 | @@ -5528,7 +5535,7 @@ struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev, | 87537 | @@ -5590,7 +5590,7 @@ struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev, |
87780 | } else { | 87538 | } else { |
87781 | netdev_stats_to_stats64(storage, &dev->stats); | 87539 | netdev_stats_to_stats64(storage, &dev->stats); |
87782 | } | 87540 | } |
@@ -87786,10 +87544,10 @@ index c9eb9e6..9186a82 100644 | |||
87786 | } | 87544 | } |
87787 | EXPORT_SYMBOL(dev_get_stats); | 87545 | EXPORT_SYMBOL(dev_get_stats); |
87788 | diff --git a/net/core/dev_ioctl.c b/net/core/dev_ioctl.c | 87546 | diff --git a/net/core/dev_ioctl.c b/net/core/dev_ioctl.c |
87789 | index 6cc0481..59cfb00 100644 | 87547 | index 5b7d0e1..cb960fc 100644 |
87790 | --- a/net/core/dev_ioctl.c | 87548 | --- a/net/core/dev_ioctl.c |
87791 | +++ b/net/core/dev_ioctl.c | 87549 | +++ b/net/core/dev_ioctl.c |
87792 | @@ -376,9 +376,13 @@ void dev_load(struct net *net, const char *name) | 87550 | @@ -365,9 +365,13 @@ void dev_load(struct net *net, const char *name) |
87793 | if (no_module && capable(CAP_NET_ADMIN)) | 87551 | if (no_module && capable(CAP_NET_ADMIN)) |
87794 | no_module = request_module("netdev-%s", name); | 87552 | no_module = request_module("netdev-%s", name); |
87795 | if (no_module && capable(CAP_SYS_MODULE)) { | 87553 | if (no_module && capable(CAP_SYS_MODULE)) { |
@@ -87804,10 +87562,10 @@ index 6cc0481..59cfb00 100644 | |||
87804 | } | 87562 | } |
87805 | EXPORT_SYMBOL(dev_load); | 87563 | EXPORT_SYMBOL(dev_load); |
87806 | diff --git a/net/core/ethtool.c b/net/core/ethtool.c | 87564 | diff --git a/net/core/ethtool.c b/net/core/ethtool.c |
87807 | index 41f4bdf..9e7c219 100644 | 87565 | index ce91766..3b71cdb 100644 |
87808 | --- a/net/core/ethtool.c | 87566 | --- a/net/core/ethtool.c |
87809 | +++ b/net/core/ethtool.c | 87567 | +++ b/net/core/ethtool.c |
87810 | @@ -1314,10 +1314,19 @@ static int ethtool_get_dump_data(struct net_device *dev, | 87568 | @@ -1319,10 +1319,19 @@ static int ethtool_get_dump_data(struct net_device *dev, |
87811 | if (ret) | 87569 | if (ret) |
87812 | return ret; | 87570 | return ret; |
87813 | 87571 | ||
@@ -87828,7 +87586,7 @@ index 41f4bdf..9e7c219 100644 | |||
87828 | data = vzalloc(tmp.len); | 87586 | data = vzalloc(tmp.len); |
87829 | if (!data) | 87587 | if (!data) |
87830 | return -ENOMEM; | 87588 | return -ENOMEM; |
87831 | @@ -1325,6 +1334,16 @@ static int ethtool_get_dump_data(struct net_device *dev, | 87589 | @@ -1330,6 +1339,16 @@ static int ethtool_get_dump_data(struct net_device *dev, |
87832 | if (ret) | 87590 | if (ret) |
87833 | goto out; | 87591 | goto out; |
87834 | 87592 | ||
@@ -87846,7 +87604,7 @@ index 41f4bdf..9e7c219 100644 | |||
87846 | ret = -EFAULT; | 87604 | ret = -EFAULT; |
87847 | goto out; | 87605 | goto out; |
87848 | diff --git a/net/core/flow.c b/net/core/flow.c | 87606 | diff --git a/net/core/flow.c b/net/core/flow.c |
87849 | index 2bfd081..53c6058 100644 | 87607 | index 7102f16..146b4bd 100644 |
87850 | --- a/net/core/flow.c | 87608 | --- a/net/core/flow.c |
87851 | +++ b/net/core/flow.c | 87609 | +++ b/net/core/flow.c |
87852 | @@ -61,7 +61,7 @@ struct flow_cache { | 87610 | @@ -61,7 +61,7 @@ struct flow_cache { |
@@ -87886,7 +87644,7 @@ index 2bfd081..53c6058 100644 | |||
87886 | fle->object = flo; | 87644 | fle->object = flo; |
87887 | else | 87645 | else |
87888 | diff --git a/net/core/iovec.c b/net/core/iovec.c | 87646 | diff --git a/net/core/iovec.c b/net/core/iovec.c |
87889 | index 7e7aeb0..2a998cb 100644 | 87647 | index de178e4..1dabd8b 100644 |
87890 | --- a/net/core/iovec.c | 87648 | --- a/net/core/iovec.c |
87891 | +++ b/net/core/iovec.c | 87649 | +++ b/net/core/iovec.c |
87892 | @@ -42,7 +42,7 @@ int verify_iovec(struct msghdr *m, struct iovec *iov, struct sockaddr_storage *a | 87650 | @@ -42,7 +42,7 @@ int verify_iovec(struct msghdr *m, struct iovec *iov, struct sockaddr_storage *a |
@@ -87908,57 +87666,10 @@ index 7e7aeb0..2a998cb 100644 | |||
87908 | 87666 | ||
87909 | m->msg_iov = iov; | 87667 | m->msg_iov = iov; |
87910 | diff --git a/net/core/neighbour.c b/net/core/neighbour.c | 87668 | diff --git a/net/core/neighbour.c b/net/core/neighbour.c |
87911 | index 3863b8f..7c7ea84 100644 | 87669 | index ce90b02..8752627 100644 |
87912 | --- a/net/core/neighbour.c | 87670 | --- a/net/core/neighbour.c |
87913 | +++ b/net/core/neighbour.c | 87671 | +++ b/net/core/neighbour.c |
87914 | @@ -239,7 +239,7 @@ static void neigh_flush_dev(struct neigh_table *tbl, struct net_device *dev) | 87672 | @@ -2771,7 +2771,7 @@ static int proc_unres_qlen(ctl_table *ctl, int write, void __user *buffer, |
87915 | we must kill timers etc. and move | ||
87916 | it to safe state. | ||
87917 | */ | ||
87918 | - skb_queue_purge(&n->arp_queue); | ||
87919 | + __skb_queue_purge(&n->arp_queue); | ||
87920 | n->arp_queue_len_bytes = 0; | ||
87921 | n->output = neigh_blackhole; | ||
87922 | if (n->nud_state & NUD_VALID) | ||
87923 | @@ -294,7 +294,7 @@ static struct neighbour *neigh_alloc(struct neigh_table *tbl, struct net_device | ||
87924 | if (!n) | ||
87925 | goto out_entries; | ||
87926 | |||
87927 | - skb_queue_head_init(&n->arp_queue); | ||
87928 | + __skb_queue_head_init(&n->arp_queue); | ||
87929 | rwlock_init(&n->lock); | ||
87930 | seqlock_init(&n->ha_lock); | ||
87931 | n->updated = n->used = now; | ||
87932 | @@ -716,7 +716,9 @@ void neigh_destroy(struct neighbour *neigh) | ||
87933 | if (neigh_del_timer(neigh)) | ||
87934 | pr_warn("Impossible event\n"); | ||
87935 | |||
87936 | - skb_queue_purge(&neigh->arp_queue); | ||
87937 | + write_lock_bh(&neigh->lock); | ||
87938 | + __skb_queue_purge(&neigh->arp_queue); | ||
87939 | + write_unlock_bh(&neigh->lock); | ||
87940 | neigh->arp_queue_len_bytes = 0; | ||
87941 | |||
87942 | if (dev->netdev_ops->ndo_neigh_destroy) | ||
87943 | @@ -866,7 +868,7 @@ static void neigh_invalidate(struct neighbour *neigh) | ||
87944 | neigh->ops->error_report(neigh, skb); | ||
87945 | write_lock(&neigh->lock); | ||
87946 | } | ||
87947 | - skb_queue_purge(&neigh->arp_queue); | ||
87948 | + __skb_queue_purge(&neigh->arp_queue); | ||
87949 | neigh->arp_queue_len_bytes = 0; | ||
87950 | } | ||
87951 | |||
87952 | @@ -1218,7 +1220,7 @@ int neigh_update(struct neighbour *neigh, const u8 *lladdr, u8 new, | ||
87953 | |||
87954 | write_lock_bh(&neigh->lock); | ||
87955 | } | ||
87956 | - skb_queue_purge(&neigh->arp_queue); | ||
87957 | + __skb_queue_purge(&neigh->arp_queue); | ||
87958 | neigh->arp_queue_len_bytes = 0; | ||
87959 | } | ||
87960 | out: | ||
87961 | @@ -2778,7 +2780,7 @@ static int proc_unres_qlen(ctl_table *ctl, int write, void __user *buffer, | ||
87962 | size_t *lenp, loff_t *ppos) | 87673 | size_t *lenp, loff_t *ppos) |
87963 | { | 87674 | { |
87964 | int size, ret; | 87675 | int size, ret; |
@@ -87968,7 +87679,7 @@ index 3863b8f..7c7ea84 100644 | |||
87968 | tmp.extra1 = &zero; | 87679 | tmp.extra1 = &zero; |
87969 | tmp.extra2 = &unres_qlen_max; | 87680 | tmp.extra2 = &unres_qlen_max; |
87970 | diff --git a/net/core/net-procfs.c b/net/core/net-procfs.c | 87681 | diff --git a/net/core/net-procfs.c b/net/core/net-procfs.c |
87971 | index 3174f19..5810985 100644 | 87682 | index 569d355..79cf2d0 100644 |
87972 | --- a/net/core/net-procfs.c | 87683 | --- a/net/core/net-procfs.c |
87973 | +++ b/net/core/net-procfs.c | 87684 | +++ b/net/core/net-procfs.c |
87974 | @@ -271,8 +271,13 @@ static int ptype_seq_show(struct seq_file *seq, void *v) | 87685 | @@ -271,8 +271,13 @@ static int ptype_seq_show(struct seq_file *seq, void *v) |
@@ -87976,20 +87687,20 @@ index 3174f19..5810985 100644 | |||
87976 | seq_printf(seq, "%04x", ntohs(pt->type)); | 87687 | seq_printf(seq, "%04x", ntohs(pt->type)); |
87977 | 87688 | ||
87978 | +#ifdef CONFIG_GRKERNSEC_HIDESYM | 87689 | +#ifdef CONFIG_GRKERNSEC_HIDESYM |
87979 | + seq_printf(seq, " %-8s %pF\n", | 87690 | + seq_printf(seq, " %-8s %pf\n", |
87980 | + pt->dev ? pt->dev->name : "", NULL); | 87691 | + pt->dev ? pt->dev->name : "", NULL); |
87981 | +#else | 87692 | +#else |
87982 | seq_printf(seq, " %-8s %pF\n", | 87693 | seq_printf(seq, " %-8s %pf\n", |
87983 | pt->dev ? pt->dev->name : "", pt->func); | 87694 | pt->dev ? pt->dev->name : "", pt->func); |
87984 | +#endif | 87695 | +#endif |
87985 | } | 87696 | } |
87986 | 87697 | ||
87987 | return 0; | 87698 | return 0; |
87988 | diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c | 87699 | diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c |
87989 | index 7427ab5..389f411 100644 | 87700 | index 981fed3..536af34 100644 |
87990 | --- a/net/core/net-sysfs.c | 87701 | --- a/net/core/net-sysfs.c |
87991 | +++ b/net/core/net-sysfs.c | 87702 | +++ b/net/core/net-sysfs.c |
87992 | @@ -1321,7 +1321,7 @@ void netdev_class_remove_file(struct class_attribute *class_attr) | 87703 | @@ -1311,7 +1311,7 @@ void netdev_class_remove_file(struct class_attribute *class_attr) |
87993 | } | 87704 | } |
87994 | EXPORT_SYMBOL(netdev_class_remove_file); | 87705 | EXPORT_SYMBOL(netdev_class_remove_file); |
87995 | 87706 | ||
@@ -87999,10 +87710,10 @@ index 7427ab5..389f411 100644 | |||
87999 | kobj_ns_type_register(&net_ns_type_operations); | 87710 | kobj_ns_type_register(&net_ns_type_operations); |
88000 | return class_register(&net_class); | 87711 | return class_register(&net_class); |
88001 | diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c | 87712 | diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c |
88002 | index 80e271d..2980cc2 100644 | 87713 | index f9765203..9feaef8 100644 |
88003 | --- a/net/core/net_namespace.c | 87714 | --- a/net/core/net_namespace.c |
88004 | +++ b/net/core/net_namespace.c | 87715 | +++ b/net/core/net_namespace.c |
88005 | @@ -442,7 +442,7 @@ static int __register_pernet_operations(struct list_head *list, | 87716 | @@ -443,7 +443,7 @@ static int __register_pernet_operations(struct list_head *list, |
88006 | int error; | 87717 | int error; |
88007 | LIST_HEAD(net_exit_list); | 87718 | LIST_HEAD(net_exit_list); |
88008 | 87719 | ||
@@ -88011,7 +87722,7 @@ index 80e271d..2980cc2 100644 | |||
88011 | if (ops->init || (ops->id && ops->size)) { | 87722 | if (ops->init || (ops->id && ops->size)) { |
88012 | for_each_net(net) { | 87723 | for_each_net(net) { |
88013 | error = ops_init(ops, net); | 87724 | error = ops_init(ops, net); |
88014 | @@ -455,7 +455,7 @@ static int __register_pernet_operations(struct list_head *list, | 87725 | @@ -456,7 +456,7 @@ static int __register_pernet_operations(struct list_head *list, |
88015 | 87726 | ||
88016 | out_undo: | 87727 | out_undo: |
88017 | /* If I have an error cleanup all namespaces I initialized */ | 87728 | /* If I have an error cleanup all namespaces I initialized */ |
@@ -88020,7 +87731,7 @@ index 80e271d..2980cc2 100644 | |||
88020 | ops_exit_list(ops, &net_exit_list); | 87731 | ops_exit_list(ops, &net_exit_list); |
88021 | ops_free_list(ops, &net_exit_list); | 87732 | ops_free_list(ops, &net_exit_list); |
88022 | return error; | 87733 | return error; |
88023 | @@ -466,7 +466,7 @@ static void __unregister_pernet_operations(struct pernet_operations *ops) | 87734 | @@ -467,7 +467,7 @@ static void __unregister_pernet_operations(struct pernet_operations *ops) |
88024 | struct net *net; | 87735 | struct net *net; |
88025 | LIST_HEAD(net_exit_list); | 87736 | LIST_HEAD(net_exit_list); |
88026 | 87737 | ||
@@ -88029,7 +87740,7 @@ index 80e271d..2980cc2 100644 | |||
88029 | for_each_net(net) | 87740 | for_each_net(net) |
88030 | list_add_tail(&net->exit_list, &net_exit_list); | 87741 | list_add_tail(&net->exit_list, &net_exit_list); |
88031 | ops_exit_list(ops, &net_exit_list); | 87742 | ops_exit_list(ops, &net_exit_list); |
88032 | @@ -600,7 +600,7 @@ int register_pernet_device(struct pernet_operations *ops) | 87743 | @@ -601,7 +601,7 @@ int register_pernet_device(struct pernet_operations *ops) |
88033 | mutex_lock(&net_mutex); | 87744 | mutex_lock(&net_mutex); |
88034 | error = register_pernet_operations(&pernet_list, ops); | 87745 | error = register_pernet_operations(&pernet_list, ops); |
88035 | if (!error && (first_device == &pernet_list)) | 87746 | if (!error && (first_device == &pernet_list)) |
@@ -88039,7 +87750,7 @@ index 80e271d..2980cc2 100644 | |||
88039 | return error; | 87750 | return error; |
88040 | } | 87751 | } |
88041 | diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c | 87752 | diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c |
88042 | index 23854b5..ff4fda4 100644 | 87753 | index a08bd2b..4e8f43c 100644 |
88043 | --- a/net/core/rtnetlink.c | 87754 | --- a/net/core/rtnetlink.c |
88044 | +++ b/net/core/rtnetlink.c | 87755 | +++ b/net/core/rtnetlink.c |
88045 | @@ -58,7 +58,7 @@ struct rtnl_link { | 87756 | @@ -58,7 +58,7 @@ struct rtnl_link { |
@@ -88078,10 +87789,10 @@ index 23854b5..ff4fda4 100644 | |||
88078 | EXPORT_SYMBOL_GPL(__rtnl_link_unregister); | 87789 | EXPORT_SYMBOL_GPL(__rtnl_link_unregister); |
88079 | 87790 | ||
88080 | diff --git a/net/core/scm.c b/net/core/scm.c | 87791 | diff --git a/net/core/scm.c b/net/core/scm.c |
88081 | index 2dc6cda..2159524 100644 | 87792 | index 03795d0..eaf7368 100644 |
88082 | --- a/net/core/scm.c | 87793 | --- a/net/core/scm.c |
88083 | +++ b/net/core/scm.c | 87794 | +++ b/net/core/scm.c |
88084 | @@ -226,7 +226,7 @@ EXPORT_SYMBOL(__scm_send); | 87795 | @@ -210,7 +210,7 @@ EXPORT_SYMBOL(__scm_send); |
88085 | int put_cmsg(struct msghdr * msg, int level, int type, int len, void *data) | 87796 | int put_cmsg(struct msghdr * msg, int level, int type, int len, void *data) |
88086 | { | 87797 | { |
88087 | struct cmsghdr __user *cm | 87798 | struct cmsghdr __user *cm |
@@ -88090,7 +87801,7 @@ index 2dc6cda..2159524 100644 | |||
88090 | struct cmsghdr cmhdr; | 87801 | struct cmsghdr cmhdr; |
88091 | int cmlen = CMSG_LEN(len); | 87802 | int cmlen = CMSG_LEN(len); |
88092 | int err; | 87803 | int err; |
88093 | @@ -249,7 +249,7 @@ int put_cmsg(struct msghdr * msg, int level, int type, int len, void *data) | 87804 | @@ -233,7 +233,7 @@ int put_cmsg(struct msghdr * msg, int level, int type, int len, void *data) |
88094 | err = -EFAULT; | 87805 | err = -EFAULT; |
88095 | if (copy_to_user(cm, &cmhdr, sizeof cmhdr)) | 87806 | if (copy_to_user(cm, &cmhdr, sizeof cmhdr)) |
88096 | goto out; | 87807 | goto out; |
@@ -88099,7 +87810,7 @@ index 2dc6cda..2159524 100644 | |||
88099 | goto out; | 87810 | goto out; |
88100 | cmlen = CMSG_SPACE(len); | 87811 | cmlen = CMSG_SPACE(len); |
88101 | if (msg->msg_controllen < cmlen) | 87812 | if (msg->msg_controllen < cmlen) |
88102 | @@ -265,7 +265,7 @@ EXPORT_SYMBOL(put_cmsg); | 87813 | @@ -249,7 +249,7 @@ EXPORT_SYMBOL(put_cmsg); |
88103 | void scm_detach_fds(struct msghdr *msg, struct scm_cookie *scm) | 87814 | void scm_detach_fds(struct msghdr *msg, struct scm_cookie *scm) |
88104 | { | 87815 | { |
88105 | struct cmsghdr __user *cm | 87816 | struct cmsghdr __user *cm |
@@ -88108,7 +87819,7 @@ index 2dc6cda..2159524 100644 | |||
88108 | 87819 | ||
88109 | int fdmax = 0; | 87820 | int fdmax = 0; |
88110 | int fdnum = scm->fp->count; | 87821 | int fdnum = scm->fp->count; |
88111 | @@ -285,7 +285,7 @@ void scm_detach_fds(struct msghdr *msg, struct scm_cookie *scm) | 87822 | @@ -269,7 +269,7 @@ void scm_detach_fds(struct msghdr *msg, struct scm_cookie *scm) |
88112 | if (fdnum < fdmax) | 87823 | if (fdnum < fdmax) |
88113 | fdmax = fdnum; | 87824 | fdmax = fdnum; |
88114 | 87825 | ||
@@ -88117,26 +87828,30 @@ index 2dc6cda..2159524 100644 | |||
88117 | i++, cmfptr++) | 87828 | i++, cmfptr++) |
88118 | { | 87829 | { |
88119 | struct socket *sock; | 87830 | struct socket *sock; |
88120 | diff --git a/net/core/secure_seq.c b/net/core/secure_seq.c | 87831 | diff --git a/net/core/skbuff.c b/net/core/skbuff.c |
88121 | index e61a8bb..6a2f13c 100644 | 87832 | index 1c1738c..4cab7f0 100644 |
88122 | --- a/net/core/secure_seq.c | 87833 | --- a/net/core/skbuff.c |
88123 | +++ b/net/core/secure_seq.c | 87834 | +++ b/net/core/skbuff.c |
88124 | @@ -12,12 +12,10 @@ | 87835 | @@ -3087,13 +3087,15 @@ void __init skb_init(void) |
88125 | 87836 | skbuff_head_cache = kmem_cache_create("skbuff_head_cache", | |
88126 | static u32 net_secret[MD5_MESSAGE_BYTES / 4] ____cacheline_aligned; | 87837 | sizeof(struct sk_buff), |
88127 | 87838 | 0, | |
88128 | -static int __init net_secret_init(void) | 87839 | - SLAB_HWCACHE_ALIGN|SLAB_PANIC, |
88129 | +void net_secret_init(void) | 87840 | + SLAB_HWCACHE_ALIGN|SLAB_PANIC| |
88130 | { | 87841 | + SLAB_NO_SANITIZE, |
88131 | get_random_bytes(net_secret, sizeof(net_secret)); | 87842 | NULL); |
88132 | - return 0; | 87843 | skbuff_fclone_cache = kmem_cache_create("skbuff_fclone_cache", |
87844 | (2*sizeof(struct sk_buff)) + | ||
87845 | sizeof(atomic_t), | ||
87846 | 0, | ||
87847 | - SLAB_HWCACHE_ALIGN|SLAB_PANIC, | ||
87848 | + SLAB_HWCACHE_ALIGN|SLAB_PANIC| | ||
87849 | + SLAB_NO_SANITIZE, | ||
87850 | NULL); | ||
88133 | } | 87851 | } |
88134 | -late_initcall(net_secret_init); | ||
88135 | 87852 | ||
88136 | #ifdef CONFIG_INET | ||
88137 | static u32 seq_scale(u32 seq) | ||
88138 | diff --git a/net/core/sock.c b/net/core/sock.c | 87853 | diff --git a/net/core/sock.c b/net/core/sock.c |
88139 | index 684c37d..b541900 100644 | 87854 | index d6d024c..6ea7ab4 100644 |
88140 | --- a/net/core/sock.c | 87855 | --- a/net/core/sock.c |
88141 | +++ b/net/core/sock.c | 87856 | +++ b/net/core/sock.c |
88142 | @@ -390,7 +390,7 @@ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) | 87857 | @@ -390,7 +390,7 @@ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) |
@@ -88184,7 +87899,7 @@ index 684c37d..b541900 100644 | |||
88184 | goto discard_and_relse; | 87899 | goto discard_and_relse; |
88185 | } | 87900 | } |
88186 | 87901 | ||
88187 | @@ -942,12 +942,12 @@ int sock_getsockopt(struct socket *sock, int level, int optname, | 87902 | @@ -933,12 +933,12 @@ int sock_getsockopt(struct socket *sock, int level, int optname, |
88188 | struct timeval tm; | 87903 | struct timeval tm; |
88189 | } v; | 87904 | } v; |
88190 | 87905 | ||
@@ -88200,7 +87915,7 @@ index 684c37d..b541900 100644 | |||
88200 | return -EINVAL; | 87915 | return -EINVAL; |
88201 | 87916 | ||
88202 | memset(&v, 0, sizeof(v)); | 87917 | memset(&v, 0, sizeof(v)); |
88203 | @@ -1099,11 +1099,11 @@ int sock_getsockopt(struct socket *sock, int level, int optname, | 87918 | @@ -1090,11 +1090,11 @@ int sock_getsockopt(struct socket *sock, int level, int optname, |
88204 | 87919 | ||
88205 | case SO_PEERNAME: | 87920 | case SO_PEERNAME: |
88206 | { | 87921 | { |
@@ -88214,7 +87929,7 @@ index 684c37d..b541900 100644 | |||
88214 | return -EINVAL; | 87929 | return -EINVAL; |
88215 | if (copy_to_user(optval, address, len)) | 87930 | if (copy_to_user(optval, address, len)) |
88216 | return -EFAULT; | 87931 | return -EFAULT; |
88217 | @@ -1166,7 +1166,7 @@ int sock_getsockopt(struct socket *sock, int level, int optname, | 87932 | @@ -1161,7 +1161,7 @@ int sock_getsockopt(struct socket *sock, int level, int optname, |
88218 | 87933 | ||
88219 | if (len > lv) | 87934 | if (len > lv) |
88220 | len = lv; | 87935 | len = lv; |
@@ -88223,7 +87938,7 @@ index 684c37d..b541900 100644 | |||
88223 | return -EFAULT; | 87938 | return -EFAULT; |
88224 | lenout: | 87939 | lenout: |
88225 | if (put_user(len, optlen)) | 87940 | if (put_user(len, optlen)) |
88226 | @@ -2284,7 +2284,7 @@ void sock_init_data(struct socket *sock, struct sock *sk) | 87941 | @@ -2277,7 +2277,7 @@ void sock_init_data(struct socket *sock, struct sock *sk) |
88227 | */ | 87942 | */ |
88228 | smp_wmb(); | 87943 | smp_wmb(); |
88229 | atomic_set(&sk->sk_refcnt, 1); | 87944 | atomic_set(&sk->sk_refcnt, 1); |
@@ -88233,7 +87948,7 @@ index 684c37d..b541900 100644 | |||
88233 | EXPORT_SYMBOL(sock_init_data); | 87948 | EXPORT_SYMBOL(sock_init_data); |
88234 | 87949 | ||
88235 | diff --git a/net/core/sock_diag.c b/net/core/sock_diag.c | 87950 | diff --git a/net/core/sock_diag.c b/net/core/sock_diag.c |
88236 | index a29e90c..922399c 100644 | 87951 | index a0e9cf6..ef7f9ed 100644 |
88237 | --- a/net/core/sock_diag.c | 87952 | --- a/net/core/sock_diag.c |
88238 | +++ b/net/core/sock_diag.c | 87953 | +++ b/net/core/sock_diag.c |
88239 | @@ -9,26 +9,33 @@ | 87954 | @@ -9,26 +9,33 @@ |
@@ -88271,7 +87986,7 @@ index a29e90c..922399c 100644 | |||
88271 | } | 87986 | } |
88272 | EXPORT_SYMBOL_GPL(sock_diag_save_cookie); | 87987 | EXPORT_SYMBOL_GPL(sock_diag_save_cookie); |
88273 | 87988 | ||
88274 | @@ -75,8 +82,11 @@ int sock_diag_register(const struct sock_diag_handler *hndl) | 87989 | @@ -113,8 +120,11 @@ int sock_diag_register(const struct sock_diag_handler *hndl) |
88275 | mutex_lock(&sock_diag_table_mutex); | 87990 | mutex_lock(&sock_diag_table_mutex); |
88276 | if (sock_diag_handlers[hndl->family]) | 87991 | if (sock_diag_handlers[hndl->family]) |
88277 | err = -EBUSY; | 87992 | err = -EBUSY; |
@@ -88284,7 +87999,7 @@ index a29e90c..922399c 100644 | |||
88284 | mutex_unlock(&sock_diag_table_mutex); | 87999 | mutex_unlock(&sock_diag_table_mutex); |
88285 | 88000 | ||
88286 | return err; | 88001 | return err; |
88287 | @@ -92,7 +102,9 @@ void sock_diag_unregister(const struct sock_diag_handler *hnld) | 88002 | @@ -130,7 +140,9 @@ void sock_diag_unregister(const struct sock_diag_handler *hnld) |
88288 | 88003 | ||
88289 | mutex_lock(&sock_diag_table_mutex); | 88004 | mutex_lock(&sock_diag_table_mutex); |
88290 | BUG_ON(sock_diag_handlers[family] != hnld); | 88005 | BUG_ON(sock_diag_handlers[family] != hnld); |
@@ -88389,30 +88104,10 @@ index a55eecc..dd8428c 100644 | |||
88389 | 88104 | ||
88390 | *lenp = len; | 88105 | *lenp = len; |
88391 | diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c | 88106 | diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c |
88392 | index c929d9c..df10cde 100644 | 88107 | index d01be2a..8976537 100644 |
88393 | --- a/net/ipv4/af_inet.c | 88108 | --- a/net/ipv4/af_inet.c |
88394 | +++ b/net/ipv4/af_inet.c | 88109 | +++ b/net/ipv4/af_inet.c |
88395 | @@ -115,6 +115,7 @@ | 88110 | @@ -1703,13 +1703,9 @@ static int __init inet_init(void) |
88396 | #include <net/inet_common.h> | ||
88397 | #include <net/xfrm.h> | ||
88398 | #include <net/net_namespace.h> | ||
88399 | +#include <net/secure_seq.h> | ||
88400 | #ifdef CONFIG_IP_MROUTE | ||
88401 | #include <linux/mroute.h> | ||
88402 | #endif | ||
88403 | @@ -263,8 +264,10 @@ void build_ehash_secret(void) | ||
88404 | get_random_bytes(&rnd, sizeof(rnd)); | ||
88405 | } while (rnd == 0); | ||
88406 | |||
88407 | - if (cmpxchg(&inet_ehash_secret, 0, rnd) == 0) | ||
88408 | + if (cmpxchg(&inet_ehash_secret, 0, rnd) == 0) { | ||
88409 | get_random_bytes(&ipv6_hash_secret, sizeof(ipv6_hash_secret)); | ||
88410 | + net_secret_init(); | ||
88411 | + } | ||
88412 | } | ||
88413 | EXPORT_SYMBOL(build_ehash_secret); | ||
88414 | |||
88415 | @@ -1699,13 +1702,9 @@ static int __init inet_init(void) | ||
88416 | 88111 | ||
88417 | BUILD_BUG_ON(sizeof(struct inet_skb_parm) > FIELD_SIZEOF(struct sk_buff, cb)); | 88112 | BUILD_BUG_ON(sizeof(struct inet_skb_parm) > FIELD_SIZEOF(struct sk_buff, cb)); |
88418 | 88113 | ||
@@ -88427,7 +88122,7 @@ index c929d9c..df10cde 100644 | |||
88427 | 88122 | ||
88428 | rc = proto_register(&udp_prot, 1); | 88123 | rc = proto_register(&udp_prot, 1); |
88429 | if (rc) | 88124 | if (rc) |
88430 | @@ -1814,8 +1813,6 @@ out_unregister_udp_proto: | 88125 | @@ -1818,8 +1814,6 @@ out_unregister_udp_proto: |
88431 | proto_unregister(&udp_prot); | 88126 | proto_unregister(&udp_prot); |
88432 | out_unregister_tcp_proto: | 88127 | out_unregister_tcp_proto: |
88433 | proto_unregister(&tcp_prot); | 88128 | proto_unregister(&tcp_prot); |
@@ -88450,10 +88145,28 @@ index 2e7f194..0fa4d6d 100644 | |||
88450 | 88145 | ||
88451 | ipv4_update_pmtu(skb, net, info, 0, 0, IPPROTO_AH, 0); | 88146 | ipv4_update_pmtu(skb, net, info, 0, 0, IPPROTO_AH, 0); |
88452 | diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c | 88147 | diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c |
88453 | index c6287cd..e9bc96a 100644 | 88148 | index dfc39d4..0b82c4d 100644 |
88454 | --- a/net/ipv4/devinet.c | 88149 | --- a/net/ipv4/devinet.c |
88455 | +++ b/net/ipv4/devinet.c | 88150 | +++ b/net/ipv4/devinet.c |
88456 | @@ -1992,7 +1992,7 @@ static int ipv4_doint_and_flush(ctl_table *ctl, int write, | 88151 | @@ -1529,7 +1529,7 @@ static int inet_dump_ifaddr(struct sk_buff *skb, struct netlink_callback *cb) |
88152 | idx = 0; | ||
88153 | head = &net->dev_index_head[h]; | ||
88154 | rcu_read_lock(); | ||
88155 | - cb->seq = atomic_read(&net->ipv4.dev_addr_genid) ^ | ||
88156 | + cb->seq = atomic_read_unchecked(&net->ipv4.dev_addr_genid) ^ | ||
88157 | net->dev_base_seq; | ||
88158 | hlist_for_each_entry_rcu(dev, head, index_hlist) { | ||
88159 | if (idx < s_idx) | ||
88160 | @@ -1840,7 +1840,7 @@ static int inet_netconf_dump_devconf(struct sk_buff *skb, | ||
88161 | idx = 0; | ||
88162 | head = &net->dev_index_head[h]; | ||
88163 | rcu_read_lock(); | ||
88164 | - cb->seq = atomic_read(&net->ipv4.dev_addr_genid) ^ | ||
88165 | + cb->seq = atomic_read_unchecked(&net->ipv4.dev_addr_genid) ^ | ||
88166 | net->dev_base_seq; | ||
88167 | hlist_for_each_entry_rcu(dev, head, index_hlist) { | ||
88168 | if (idx < s_idx) | ||
88169 | @@ -2065,7 +2065,7 @@ static int ipv4_doint_and_flush(ctl_table *ctl, int write, | ||
88457 | #define DEVINET_SYSCTL_FLUSHING_ENTRY(attr, name) \ | 88170 | #define DEVINET_SYSCTL_FLUSHING_ENTRY(attr, name) \ |
88458 | DEVINET_SYSCTL_COMPLEX_ENTRY(attr, name, ipv4_doint_and_flush) | 88171 | DEVINET_SYSCTL_COMPLEX_ENTRY(attr, name, ipv4_doint_and_flush) |
88459 | 88172 | ||
@@ -88462,7 +88175,7 @@ index c6287cd..e9bc96a 100644 | |||
88462 | struct ctl_table_header *sysctl_header; | 88175 | struct ctl_table_header *sysctl_header; |
88463 | struct ctl_table devinet_vars[__IPV4_DEVCONF_MAX]; | 88176 | struct ctl_table devinet_vars[__IPV4_DEVCONF_MAX]; |
88464 | } devinet_sysctl = { | 88177 | } devinet_sysctl = { |
88465 | @@ -2110,7 +2110,7 @@ static __net_init int devinet_init_net(struct net *net) | 88178 | @@ -2183,7 +2183,7 @@ static __net_init int devinet_init_net(struct net *net) |
88466 | int err; | 88179 | int err; |
88467 | struct ipv4_devconf *all, *dflt; | 88180 | struct ipv4_devconf *all, *dflt; |
88468 | #ifdef CONFIG_SYSCTL | 88181 | #ifdef CONFIG_SYSCTL |
@@ -88471,7 +88184,7 @@ index c6287cd..e9bc96a 100644 | |||
88471 | struct ctl_table_header *forw_hdr; | 88184 | struct ctl_table_header *forw_hdr; |
88472 | #endif | 88185 | #endif |
88473 | 88186 | ||
88474 | @@ -2128,7 +2128,7 @@ static __net_init int devinet_init_net(struct net *net) | 88187 | @@ -2201,7 +2201,7 @@ static __net_init int devinet_init_net(struct net *net) |
88475 | goto err_alloc_dflt; | 88188 | goto err_alloc_dflt; |
88476 | 88189 | ||
88477 | #ifdef CONFIG_SYSCTL | 88190 | #ifdef CONFIG_SYSCTL |
@@ -88480,7 +88193,7 @@ index c6287cd..e9bc96a 100644 | |||
88480 | if (tbl == NULL) | 88193 | if (tbl == NULL) |
88481 | goto err_alloc_ctl; | 88194 | goto err_alloc_ctl; |
88482 | 88195 | ||
88483 | @@ -2148,7 +2148,10 @@ static __net_init int devinet_init_net(struct net *net) | 88196 | @@ -2221,7 +2221,10 @@ static __net_init int devinet_init_net(struct net *net) |
88484 | goto err_reg_dflt; | 88197 | goto err_reg_dflt; |
88485 | 88198 | ||
88486 | err = -ENOMEM; | 88199 | err = -ENOMEM; |
@@ -88492,7 +88205,7 @@ index c6287cd..e9bc96a 100644 | |||
88492 | if (forw_hdr == NULL) | 88205 | if (forw_hdr == NULL) |
88493 | goto err_reg_ctl; | 88206 | goto err_reg_ctl; |
88494 | net->ipv4.forw_hdr = forw_hdr; | 88207 | net->ipv4.forw_hdr = forw_hdr; |
88495 | @@ -2164,8 +2167,7 @@ err_reg_ctl: | 88208 | @@ -2237,8 +2240,7 @@ err_reg_ctl: |
88496 | err_reg_dflt: | 88209 | err_reg_dflt: |
88497 | __devinet_sysctl_unregister(all); | 88210 | __devinet_sysctl_unregister(all); |
88498 | err_reg_all: | 88211 | err_reg_all: |
@@ -88516,7 +88229,7 @@ index 4cfe34d..a6ba66e 100644 | |||
88516 | 88229 | ||
88517 | ipv4_update_pmtu(skb, net, info, 0, 0, IPPROTO_ESP, 0); | 88230 | ipv4_update_pmtu(skb, net, info, 0, 0, IPPROTO_ESP, 0); |
88518 | diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c | 88231 | diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c |
88519 | index eb4bb12..ee4ec7d 100644 | 88232 | index c7629a2..b62d139 100644 |
88520 | --- a/net/ipv4/fib_frontend.c | 88233 | --- a/net/ipv4/fib_frontend.c |
88521 | +++ b/net/ipv4/fib_frontend.c | 88234 | +++ b/net/ipv4/fib_frontend.c |
88522 | @@ -1017,12 +1017,12 @@ static int fib_inetaddr_event(struct notifier_block *this, unsigned long event, | 88235 | @@ -1017,12 +1017,12 @@ static int fib_inetaddr_event(struct notifier_block *this, unsigned long event, |
@@ -88557,7 +88270,7 @@ index 8f6cb7a..34507f9 100644 | |||
88557 | return nh->nh_saddr; | 88270 | return nh->nh_saddr; |
88558 | } | 88271 | } |
88559 | diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c | 88272 | diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c |
88560 | index 786d97a..1889c0d 100644 | 88273 | index 6acb541..9ea617d 100644 |
88561 | --- a/net/ipv4/inet_connection_sock.c | 88274 | --- a/net/ipv4/inet_connection_sock.c |
88562 | +++ b/net/ipv4/inet_connection_sock.c | 88275 | +++ b/net/ipv4/inet_connection_sock.c |
88563 | @@ -37,7 +37,7 @@ struct local_ports sysctl_local_ports __read_mostly = { | 88276 | @@ -37,7 +37,7 @@ struct local_ports sysctl_local_ports __read_mostly = { |
@@ -88614,10 +88327,10 @@ index 000e3d2..5472da3 100644 | |||
88614 | secure_ip_id(daddr->addr.a4) : | 88327 | secure_ip_id(daddr->addr.a4) : |
88615 | secure_ipv6_id(daddr->addr.a6)); | 88328 | secure_ipv6_id(daddr->addr.a6)); |
88616 | diff --git a/net/ipv4/ip_fragment.c b/net/ipv4/ip_fragment.c | 88329 | diff --git a/net/ipv4/ip_fragment.c b/net/ipv4/ip_fragment.c |
88617 | index 52c273e..579060b 100644 | 88330 | index b66910a..cfe416e 100644 |
88618 | --- a/net/ipv4/ip_fragment.c | 88331 | --- a/net/ipv4/ip_fragment.c |
88619 | +++ b/net/ipv4/ip_fragment.c | 88332 | +++ b/net/ipv4/ip_fragment.c |
88620 | @@ -311,7 +311,7 @@ static inline int ip_frag_too_far(struct ipq *qp) | 88333 | @@ -282,7 +282,7 @@ static inline int ip_frag_too_far(struct ipq *qp) |
88621 | return 0; | 88334 | return 0; |
88622 | 88335 | ||
88623 | start = qp->rid; | 88336 | start = qp->rid; |
@@ -88626,7 +88339,7 @@ index 52c273e..579060b 100644 | |||
88626 | qp->rid = end; | 88339 | qp->rid = end; |
88627 | 88340 | ||
88628 | rc = qp->q.fragments && (end - start) > max; | 88341 | rc = qp->q.fragments && (end - start) > max; |
88629 | @@ -788,12 +788,11 @@ static struct ctl_table ip4_frags_ctl_table[] = { | 88342 | @@ -759,12 +759,11 @@ static struct ctl_table ip4_frags_ctl_table[] = { |
88630 | 88343 | ||
88631 | static int __net_init ip4_frags_ns_ctl_register(struct net *net) | 88344 | static int __net_init ip4_frags_ns_ctl_register(struct net *net) |
88632 | { | 88345 | { |
@@ -88641,7 +88354,7 @@ index 52c273e..579060b 100644 | |||
88641 | if (table == NULL) | 88354 | if (table == NULL) |
88642 | goto err_alloc; | 88355 | goto err_alloc; |
88643 | 88356 | ||
88644 | @@ -804,9 +803,10 @@ static int __net_init ip4_frags_ns_ctl_register(struct net *net) | 88357 | @@ -775,9 +774,10 @@ static int __net_init ip4_frags_ns_ctl_register(struct net *net) |
88645 | /* Don't export sysctls to unprivileged users */ | 88358 | /* Don't export sysctls to unprivileged users */ |
88646 | if (net->user_ns != &init_user_ns) | 88359 | if (net->user_ns != &init_user_ns) |
88647 | table[0].procname = NULL; | 88360 | table[0].procname = NULL; |
@@ -88654,7 +88367,7 @@ index 52c273e..579060b 100644 | |||
88654 | if (hdr == NULL) | 88367 | if (hdr == NULL) |
88655 | goto err_reg; | 88368 | goto err_reg; |
88656 | 88369 | ||
88657 | @@ -814,8 +814,7 @@ static int __net_init ip4_frags_ns_ctl_register(struct net *net) | 88370 | @@ -785,8 +785,7 @@ static int __net_init ip4_frags_ns_ctl_register(struct net *net) |
88658 | return 0; | 88371 | return 0; |
88659 | 88372 | ||
88660 | err_reg: | 88373 | err_reg: |
@@ -88665,19 +88378,19 @@ index 52c273e..579060b 100644 | |||
88665 | return -ENOMEM; | 88378 | return -ENOMEM; |
88666 | } | 88379 | } |
88667 | diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c | 88380 | diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c |
88668 | index c7e8c04..56cb4c1 100644 | 88381 | index 855004f..68e7458 100644 |
88669 | --- a/net/ipv4/ip_gre.c | 88382 | --- a/net/ipv4/ip_gre.c |
88670 | +++ b/net/ipv4/ip_gre.c | 88383 | +++ b/net/ipv4/ip_gre.c |
88671 | @@ -124,7 +124,7 @@ static bool log_ecn_error = true; | 88384 | @@ -115,7 +115,7 @@ static bool log_ecn_error = true; |
88672 | module_param(log_ecn_error, bool, 0644); | 88385 | module_param(log_ecn_error, bool, 0644); |
88673 | MODULE_PARM_DESC(log_ecn_error, "Log packets received with corrupted ECN"); | 88386 | MODULE_PARM_DESC(log_ecn_error, "Log packets received with corrupted ECN"); |
88674 | 88387 | ||
88675 | -static struct rtnl_link_ops ipgre_link_ops __read_mostly; | 88388 | -static struct rtnl_link_ops ipgre_link_ops __read_mostly; |
88676 | +static struct rtnl_link_ops ipgre_link_ops; | 88389 | +static struct rtnl_link_ops ipgre_link_ops; |
88677 | static int ipgre_tunnel_init(struct net_device *dev); | 88390 | static int ipgre_tunnel_init(struct net_device *dev); |
88678 | static void ipgre_tunnel_setup(struct net_device *dev); | 88391 | |
88679 | static int ipgre_tunnel_bind_dev(struct net_device *dev); | 88392 | static int ipgre_net_id __read_mostly; |
88680 | @@ -1823,7 +1823,7 @@ static const struct nla_policy ipgre_policy[IFLA_GRE_MAX + 1] = { | 88393 | @@ -919,7 +919,7 @@ static const struct nla_policy ipgre_policy[IFLA_GRE_MAX + 1] = { |
88681 | [IFLA_GRE_PMTUDISC] = { .type = NLA_U8 }, | 88394 | [IFLA_GRE_PMTUDISC] = { .type = NLA_U8 }, |
88682 | }; | 88395 | }; |
88683 | 88396 | ||
@@ -88686,7 +88399,7 @@ index c7e8c04..56cb4c1 100644 | |||
88686 | .kind = "gre", | 88399 | .kind = "gre", |
88687 | .maxtype = IFLA_GRE_MAX, | 88400 | .maxtype = IFLA_GRE_MAX, |
88688 | .policy = ipgre_policy, | 88401 | .policy = ipgre_policy, |
88689 | @@ -1836,7 +1836,7 @@ static struct rtnl_link_ops ipgre_link_ops __read_mostly = { | 88402 | @@ -933,7 +933,7 @@ static struct rtnl_link_ops ipgre_link_ops __read_mostly = { |
88690 | .fill_info = ipgre_fill_info, | 88403 | .fill_info = ipgre_fill_info, |
88691 | }; | 88404 | }; |
88692 | 88405 | ||
@@ -88695,31 +88408,6 @@ index c7e8c04..56cb4c1 100644 | |||
88695 | .kind = "gretap", | 88408 | .kind = "gretap", |
88696 | .maxtype = IFLA_GRE_MAX, | 88409 | .maxtype = IFLA_GRE_MAX, |
88697 | .policy = ipgre_policy, | 88410 | .policy = ipgre_policy, |
88698 | diff --git a/net/ipv4/ip_input.c b/net/ipv4/ip_input.c | ||
88699 | index 2bdf802..439f123 100644 | ||
88700 | --- a/net/ipv4/ip_input.c | ||
88701 | +++ b/net/ipv4/ip_input.c | ||
88702 | @@ -190,10 +190,7 @@ static int ip_local_deliver_finish(struct sk_buff *skb) | ||
88703 | { | ||
88704 | struct net *net = dev_net(skb->dev); | ||
88705 | |||
88706 | - __skb_pull(skb, ip_hdrlen(skb)); | ||
88707 | - | ||
88708 | - /* Point into the IP datagram, just past the header. */ | ||
88709 | - skb_reset_transport_header(skb); | ||
88710 | + __skb_pull(skb, skb_network_header_len(skb)); | ||
88711 | |||
88712 | rcu_read_lock(); | ||
88713 | { | ||
88714 | @@ -437,6 +434,8 @@ int ip_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt, | ||
88715 | goto drop; | ||
88716 | } | ||
88717 | |||
88718 | + skb->transport_header = skb->network_header + iph->ihl*4; | ||
88719 | + | ||
88720 | /* Remove any debris in the socket control block */ | ||
88721 | memset(IPCB(skb), 0, sizeof(struct inet_skb_parm)); | ||
88722 | |||
88723 | diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c | 88411 | diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c |
88724 | index d9c4f11..02b82dbc 100644 | 88412 | index d9c4f11..02b82dbc 100644 |
88725 | --- a/net/ipv4/ip_sockglue.c | 88413 | --- a/net/ipv4/ip_sockglue.c |
@@ -88744,7 +88432,7 @@ index d9c4f11..02b82dbc 100644 | |||
88744 | msg.msg_flags = flags; | 88432 | msg.msg_flags = flags; |
88745 | 88433 | ||
88746 | diff --git a/net/ipv4/ip_vti.c b/net/ipv4/ip_vti.c | 88434 | diff --git a/net/ipv4/ip_vti.c b/net/ipv4/ip_vti.c |
88747 | index c3a4233..3fa029d 100644 | 88435 | index 17cc0ff..63856c4 100644 |
88748 | --- a/net/ipv4/ip_vti.c | 88436 | --- a/net/ipv4/ip_vti.c |
88749 | +++ b/net/ipv4/ip_vti.c | 88437 | +++ b/net/ipv4/ip_vti.c |
88750 | @@ -47,7 +47,7 @@ | 88438 | @@ -47,7 +47,7 @@ |
@@ -88756,35 +88444,7 @@ index c3a4233..3fa029d 100644 | |||
88756 | 88444 | ||
88757 | static int vti_net_id __read_mostly; | 88445 | static int vti_net_id __read_mostly; |
88758 | struct vti_net { | 88446 | struct vti_net { |
88759 | @@ -399,8 +399,7 @@ static netdev_tx_t vti_tunnel_xmit(struct sk_buff *skb, struct net_device *dev) | 88447 | @@ -840,7 +840,7 @@ static const struct nla_policy vti_policy[IFLA_VTI_MAX + 1] = { |
88760 | tunnel->err_count = 0; | ||
88761 | } | ||
88762 | |||
88763 | - IPCB(skb)->flags &= ~(IPSKB_XFRM_TUNNEL_SIZE | IPSKB_XFRM_TRANSFORMED | | ||
88764 | - IPSKB_REROUTED); | ||
88765 | + memset(IPCB(skb), 0, sizeof(*IPCB(skb))); | ||
88766 | skb_dst_drop(skb); | ||
88767 | skb_dst_set(skb, &rt->dst); | ||
88768 | nf_reset(skb); | ||
88769 | @@ -645,17 +644,10 @@ static int __net_init vti_fb_tunnel_init(struct net_device *dev) | ||
88770 | struct iphdr *iph = &tunnel->parms.iph; | ||
88771 | struct vti_net *ipn = net_generic(dev_net(dev), vti_net_id); | ||
88772 | |||
88773 | - tunnel->dev = dev; | ||
88774 | - strcpy(tunnel->parms.name, dev->name); | ||
88775 | - | ||
88776 | iph->version = 4; | ||
88777 | iph->protocol = IPPROTO_IPIP; | ||
88778 | iph->ihl = 5; | ||
88779 | |||
88780 | - dev->tstats = alloc_percpu(struct pcpu_tstats); | ||
88781 | - if (!dev->tstats) | ||
88782 | - return -ENOMEM; | ||
88783 | - | ||
88784 | dev_hold(dev); | ||
88785 | rcu_assign_pointer(ipn->tunnels_wc[0], tunnel); | ||
88786 | return 0; | ||
88787 | @@ -886,7 +878,7 @@ static const struct nla_policy vti_policy[IFLA_VTI_MAX + 1] = { | ||
88788 | [IFLA_VTI_REMOTE] = { .len = FIELD_SIZEOF(struct iphdr, daddr) }, | 88448 | [IFLA_VTI_REMOTE] = { .len = FIELD_SIZEOF(struct iphdr, daddr) }, |
88789 | }; | 88449 | }; |
88790 | 88450 | ||
@@ -88794,7 +88454,7 @@ index c3a4233..3fa029d 100644 | |||
88794 | .maxtype = IFLA_VTI_MAX, | 88454 | .maxtype = IFLA_VTI_MAX, |
88795 | .policy = vti_policy, | 88455 | .policy = vti_policy, |
88796 | diff --git a/net/ipv4/ipcomp.c b/net/ipv4/ipcomp.c | 88456 | diff --git a/net/ipv4/ipcomp.c b/net/ipv4/ipcomp.c |
88797 | index f01d1b1..8fe03ad 100644 | 88457 | index 59cb8c7..a72160c 100644 |
88798 | --- a/net/ipv4/ipcomp.c | 88458 | --- a/net/ipv4/ipcomp.c |
88799 | +++ b/net/ipv4/ipcomp.c | 88459 | +++ b/net/ipv4/ipcomp.c |
88800 | @@ -48,7 +48,7 @@ static void ipcomp4_err(struct sk_buff *skb, u32 info) | 88460 | @@ -48,7 +48,7 @@ static void ipcomp4_err(struct sk_buff *skb, u32 info) |
@@ -88807,10 +88467,10 @@ index f01d1b1..8fe03ad 100644 | |||
88807 | 88467 | ||
88808 | ipv4_update_pmtu(skb, net, info, 0, 0, IPPROTO_COMP, 0); | 88468 | ipv4_update_pmtu(skb, net, info, 0, 0, IPPROTO_COMP, 0); |
88809 | diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c | 88469 | diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c |
88810 | index bf6c5cf..ab2e9c6 100644 | 88470 | index efa1138..20dbba0 100644 |
88811 | --- a/net/ipv4/ipconfig.c | 88471 | --- a/net/ipv4/ipconfig.c |
88812 | +++ b/net/ipv4/ipconfig.c | 88472 | +++ b/net/ipv4/ipconfig.c |
88813 | @@ -323,7 +323,7 @@ static int __init ic_devinet_ioctl(unsigned int cmd, struct ifreq *arg) | 88473 | @@ -334,7 +334,7 @@ static int __init ic_devinet_ioctl(unsigned int cmd, struct ifreq *arg) |
88814 | 88474 | ||
88815 | mm_segment_t oldfs = get_fs(); | 88475 | mm_segment_t oldfs = get_fs(); |
88816 | set_fs(get_ds()); | 88476 | set_fs(get_ds()); |
@@ -88819,7 +88479,7 @@ index bf6c5cf..ab2e9c6 100644 | |||
88819 | set_fs(oldfs); | 88479 | set_fs(oldfs); |
88820 | return res; | 88480 | return res; |
88821 | } | 88481 | } |
88822 | @@ -334,7 +334,7 @@ static int __init ic_dev_ioctl(unsigned int cmd, struct ifreq *arg) | 88482 | @@ -345,7 +345,7 @@ static int __init ic_dev_ioctl(unsigned int cmd, struct ifreq *arg) |
88823 | 88483 | ||
88824 | mm_segment_t oldfs = get_fs(); | 88484 | mm_segment_t oldfs = get_fs(); |
88825 | set_fs(get_ds()); | 88485 | set_fs(get_ds()); |
@@ -88828,7 +88488,7 @@ index bf6c5cf..ab2e9c6 100644 | |||
88828 | set_fs(oldfs); | 88488 | set_fs(oldfs); |
88829 | return res; | 88489 | return res; |
88830 | } | 88490 | } |
88831 | @@ -345,7 +345,7 @@ static int __init ic_route_ioctl(unsigned int cmd, struct rtentry *arg) | 88491 | @@ -356,7 +356,7 @@ static int __init ic_route_ioctl(unsigned int cmd, struct rtentry *arg) |
88832 | 88492 | ||
88833 | mm_segment_t oldfs = get_fs(); | 88493 | mm_segment_t oldfs = get_fs(); |
88834 | set_fs(get_ds()); | 88494 | set_fs(get_ds()); |
@@ -88838,19 +88498,19 @@ index bf6c5cf..ab2e9c6 100644 | |||
88838 | return res; | 88498 | return res; |
88839 | } | 88499 | } |
88840 | diff --git a/net/ipv4/ipip.c b/net/ipv4/ipip.c | 88500 | diff --git a/net/ipv4/ipip.c b/net/ipv4/ipip.c |
88841 | index 7533846..d2361d1 100644 | 88501 | index 7cfc456..e726868 100644 |
88842 | --- a/net/ipv4/ipip.c | 88502 | --- a/net/ipv4/ipip.c |
88843 | +++ b/net/ipv4/ipip.c | 88503 | +++ b/net/ipv4/ipip.c |
88844 | @@ -138,7 +138,7 @@ struct ipip_net { | 88504 | @@ -124,7 +124,7 @@ MODULE_PARM_DESC(log_ecn_error, "Log packets received with corrupted ECN"); |
88505 | static int ipip_net_id __read_mostly; | ||
88506 | |||
88845 | static int ipip_tunnel_init(struct net_device *dev); | 88507 | static int ipip_tunnel_init(struct net_device *dev); |
88846 | static void ipip_tunnel_setup(struct net_device *dev); | ||
88847 | static void ipip_dev_free(struct net_device *dev); | ||
88848 | -static struct rtnl_link_ops ipip_link_ops __read_mostly; | 88508 | -static struct rtnl_link_ops ipip_link_ops __read_mostly; |
88849 | +static struct rtnl_link_ops ipip_link_ops; | 88509 | +static struct rtnl_link_ops ipip_link_ops; |
88850 | 88510 | ||
88851 | static struct rtnl_link_stats64 *ipip_get_stats64(struct net_device *dev, | 88511 | static int ipip_err(struct sk_buff *skb, u32 info) |
88852 | struct rtnl_link_stats64 *tot) | 88512 | { |
88853 | @@ -974,7 +974,7 @@ static const struct nla_policy ipip_policy[IFLA_IPTUN_MAX + 1] = { | 88513 | @@ -406,7 +406,7 @@ static const struct nla_policy ipip_policy[IFLA_IPTUN_MAX + 1] = { |
88854 | [IFLA_IPTUN_PMTUDISC] = { .type = NLA_U8 }, | 88514 | [IFLA_IPTUN_PMTUDISC] = { .type = NLA_U8 }, |
88855 | }; | 88515 | }; |
88856 | 88516 | ||
@@ -88860,10 +88520,10 @@ index 7533846..d2361d1 100644 | |||
88860 | .maxtype = IFLA_IPTUN_MAX, | 88520 | .maxtype = IFLA_IPTUN_MAX, |
88861 | .policy = ipip_policy, | 88521 | .policy = ipip_policy, |
88862 | diff --git a/net/ipv4/netfilter/arp_tables.c b/net/ipv4/netfilter/arp_tables.c | 88522 | diff --git a/net/ipv4/netfilter/arp_tables.c b/net/ipv4/netfilter/arp_tables.c |
88863 | index 7dc6a97..229c61b 100644 | 88523 | index 85a4f21..1beb1f5 100644 |
88864 | --- a/net/ipv4/netfilter/arp_tables.c | 88524 | --- a/net/ipv4/netfilter/arp_tables.c |
88865 | +++ b/net/ipv4/netfilter/arp_tables.c | 88525 | +++ b/net/ipv4/netfilter/arp_tables.c |
88866 | @@ -879,14 +879,14 @@ static int compat_table_info(const struct xt_table_info *info, | 88526 | @@ -880,14 +880,14 @@ static int compat_table_info(const struct xt_table_info *info, |
88867 | #endif | 88527 | #endif |
88868 | 88528 | ||
88869 | static int get_info(struct net *net, void __user *user, | 88529 | static int get_info(struct net *net, void __user *user, |
@@ -88881,7 +88541,7 @@ index 7dc6a97..229c61b 100644 | |||
88881 | sizeof(struct arpt_getinfo)); | 88541 | sizeof(struct arpt_getinfo)); |
88882 | return -EINVAL; | 88542 | return -EINVAL; |
88883 | } | 88543 | } |
88884 | @@ -923,7 +923,7 @@ static int get_info(struct net *net, void __user *user, | 88544 | @@ -924,7 +924,7 @@ static int get_info(struct net *net, void __user *user, |
88885 | info.size = private->size; | 88545 | info.size = private->size; |
88886 | strcpy(info.name, name); | 88546 | strcpy(info.name, name); |
88887 | 88547 | ||
@@ -88890,7 +88550,7 @@ index 7dc6a97..229c61b 100644 | |||
88890 | ret = -EFAULT; | 88550 | ret = -EFAULT; |
88891 | else | 88551 | else |
88892 | ret = 0; | 88552 | ret = 0; |
88893 | @@ -1682,7 +1682,7 @@ static int compat_do_arpt_get_ctl(struct sock *sk, int cmd, void __user *user, | 88553 | @@ -1683,7 +1683,7 @@ static int compat_do_arpt_get_ctl(struct sock *sk, int cmd, void __user *user, |
88894 | 88554 | ||
88895 | switch (cmd) { | 88555 | switch (cmd) { |
88896 | case ARPT_SO_GET_INFO: | 88556 | case ARPT_SO_GET_INFO: |
@@ -88899,7 +88559,7 @@ index 7dc6a97..229c61b 100644 | |||
88899 | break; | 88559 | break; |
88900 | case ARPT_SO_GET_ENTRIES: | 88560 | case ARPT_SO_GET_ENTRIES: |
88901 | ret = compat_get_entries(sock_net(sk), user, len); | 88561 | ret = compat_get_entries(sock_net(sk), user, len); |
88902 | @@ -1727,7 +1727,7 @@ static int do_arpt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len | 88562 | @@ -1728,7 +1728,7 @@ static int do_arpt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len |
88903 | 88563 | ||
88904 | switch (cmd) { | 88564 | switch (cmd) { |
88905 | case ARPT_SO_GET_INFO: | 88565 | case ARPT_SO_GET_INFO: |
@@ -88909,7 +88569,7 @@ index 7dc6a97..229c61b 100644 | |||
88909 | 88569 | ||
88910 | case ARPT_SO_GET_ENTRIES: | 88570 | case ARPT_SO_GET_ENTRIES: |
88911 | diff --git a/net/ipv4/netfilter/ip_tables.c b/net/ipv4/netfilter/ip_tables.c | 88571 | diff --git a/net/ipv4/netfilter/ip_tables.c b/net/ipv4/netfilter/ip_tables.c |
88912 | index 3efcf87..5247916 100644 | 88572 | index d23118d..6ad7277 100644 |
88913 | --- a/net/ipv4/netfilter/ip_tables.c | 88573 | --- a/net/ipv4/netfilter/ip_tables.c |
88914 | +++ b/net/ipv4/netfilter/ip_tables.c | 88574 | +++ b/net/ipv4/netfilter/ip_tables.c |
88915 | @@ -1068,14 +1068,14 @@ static int compat_table_info(const struct xt_table_info *info, | 88575 | @@ -1068,14 +1068,14 @@ static int compat_table_info(const struct xt_table_info *info, |
@@ -88958,10 +88618,10 @@ index 3efcf87..5247916 100644 | |||
88958 | 88618 | ||
88959 | case IPT_SO_GET_ENTRIES: | 88619 | case IPT_SO_GET_ENTRIES: |
88960 | diff --git a/net/ipv4/ping.c b/net/ipv4/ping.c | 88620 | diff --git a/net/ipv4/ping.c b/net/ipv4/ping.c |
88961 | index 2e91006..f084394 100644 | 88621 | index 7d93d62..cbbf2a3 100644 |
88962 | --- a/net/ipv4/ping.c | 88622 | --- a/net/ipv4/ping.c |
88963 | +++ b/net/ipv4/ping.c | 88623 | +++ b/net/ipv4/ping.c |
88964 | @@ -844,7 +844,7 @@ static void ping_format_sock(struct sock *sp, struct seq_file *f, | 88624 | @@ -843,7 +843,7 @@ static void ping_format_sock(struct sock *sp, struct seq_file *f, |
88965 | from_kuid_munged(seq_user_ns(f), sock_i_uid(sp)), | 88625 | from_kuid_munged(seq_user_ns(f), sock_i_uid(sp)), |
88966 | 0, sock_i_ino(sp), | 88626 | 0, sock_i_ino(sp), |
88967 | atomic_read(&sp->sk_refcnt), sp, | 88627 | atomic_read(&sp->sk_refcnt), sp, |
@@ -89026,7 +88686,7 @@ index dd44e0a..06dcca4 100644 | |||
89026 | 88686 | ||
89027 | static int raw_seq_show(struct seq_file *seq, void *v) | 88687 | static int raw_seq_show(struct seq_file *seq, void *v) |
89028 | diff --git a/net/ipv4/route.c b/net/ipv4/route.c | 88688 | diff --git a/net/ipv4/route.c b/net/ipv4/route.c |
89029 | index cfede9a..22248f9 100644 | 88689 | index d35bbf0..faa3ab8 100644 |
89030 | --- a/net/ipv4/route.c | 88690 | --- a/net/ipv4/route.c |
89031 | +++ b/net/ipv4/route.c | 88691 | +++ b/net/ipv4/route.c |
89032 | @@ -2558,34 +2558,34 @@ static struct ctl_table ipv4_route_flush_table[] = { | 88692 | @@ -2558,34 +2558,34 @@ static struct ctl_table ipv4_route_flush_table[] = { |
@@ -89082,7 +88742,7 @@ index cfede9a..22248f9 100644 | |||
89082 | sizeof(net->ipv4.dev_addr_genid)); | 88742 | sizeof(net->ipv4.dev_addr_genid)); |
89083 | return 0; | 88743 | return 0; |
89084 | diff --git a/net/ipv4/sysctl_net_ipv4.c b/net/ipv4/sysctl_net_ipv4.c | 88744 | diff --git a/net/ipv4/sysctl_net_ipv4.c b/net/ipv4/sysctl_net_ipv4.c |
89085 | index 960fd29..d55bf64 100644 | 88745 | index fa2f63f..6554815 100644 |
89086 | --- a/net/ipv4/sysctl_net_ipv4.c | 88746 | --- a/net/ipv4/sysctl_net_ipv4.c |
89087 | +++ b/net/ipv4/sysctl_net_ipv4.c | 88747 | +++ b/net/ipv4/sysctl_net_ipv4.c |
89088 | @@ -55,7 +55,7 @@ static int ipv4_local_port_range(ctl_table *table, int write, | 88748 | @@ -55,7 +55,7 @@ static int ipv4_local_port_range(ctl_table *table, int write, |
@@ -89169,7 +88829,7 @@ index 960fd29..d55bf64 100644 | |||
89169 | .maxlen = 65536, | 88829 | .maxlen = 65536, |
89170 | .mode = 0644, | 88830 | .mode = 0644, |
89171 | .proc_handler = proc_do_large_bitmap, | 88831 | .proc_handler = proc_do_large_bitmap, |
89172 | @@ -856,11 +858,10 @@ static struct ctl_table ipv4_net_table[] = { | 88832 | @@ -842,11 +844,10 @@ static struct ctl_table ipv4_net_table[] = { |
89173 | 88833 | ||
89174 | static __net_init int ipv4_sysctl_init_net(struct net *net) | 88834 | static __net_init int ipv4_sysctl_init_net(struct net *net) |
89175 | { | 88835 | { |
@@ -89183,7 +88843,7 @@ index 960fd29..d55bf64 100644 | |||
89183 | if (table == NULL) | 88843 | if (table == NULL) |
89184 | goto err_alloc; | 88844 | goto err_alloc; |
89185 | 88845 | ||
89186 | @@ -895,15 +896,17 @@ static __net_init int ipv4_sysctl_init_net(struct net *net) | 88846 | @@ -881,15 +882,17 @@ static __net_init int ipv4_sysctl_init_net(struct net *net) |
89187 | 88847 | ||
89188 | tcp_init_mem(net); | 88848 | tcp_init_mem(net); |
89189 | 88849 | ||
@@ -89204,7 +88864,7 @@ index 960fd29..d55bf64 100644 | |||
89204 | err_alloc: | 88864 | err_alloc: |
89205 | return -ENOMEM; | 88865 | return -ENOMEM; |
89206 | } | 88866 | } |
89207 | @@ -925,16 +928,6 @@ static __net_initdata struct pernet_operations ipv4_sysctl_ops = { | 88867 | @@ -911,16 +914,6 @@ static __net_initdata struct pernet_operations ipv4_sysctl_ops = { |
89208 | static __init int sysctl_ipv4_init(void) | 88868 | static __init int sysctl_ipv4_init(void) |
89209 | { | 88869 | { |
89210 | struct ctl_table_header *hdr; | 88870 | struct ctl_table_header *hdr; |
@@ -89222,10 +88882,10 @@ index 960fd29..d55bf64 100644 | |||
89222 | hdr = register_net_sysctl(&init_net, "net/ipv4", ipv4_table); | 88882 | hdr = register_net_sysctl(&init_net, "net/ipv4", ipv4_table); |
89223 | if (hdr == NULL) | 88883 | if (hdr == NULL) |
89224 | diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c | 88884 | diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c |
89225 | index 59163c8..8277c51 100644 | 88885 | index 9c62257..651cc27 100644 |
89226 | --- a/net/ipv4/tcp_input.c | 88886 | --- a/net/ipv4/tcp_input.c |
89227 | +++ b/net/ipv4/tcp_input.c | 88887 | +++ b/net/ipv4/tcp_input.c |
89228 | @@ -4727,7 +4727,7 @@ static struct sk_buff *tcp_collapse_one(struct sock *sk, struct sk_buff *skb, | 88888 | @@ -4436,7 +4436,7 @@ static struct sk_buff *tcp_collapse_one(struct sock *sk, struct sk_buff *skb, |
89229 | * simplifies code) | 88889 | * simplifies code) |
89230 | */ | 88890 | */ |
89231 | static void | 88891 | static void |
@@ -89234,7 +88894,7 @@ index 59163c8..8277c51 100644 | |||
89234 | struct sk_buff *head, struct sk_buff *tail, | 88894 | struct sk_buff *head, struct sk_buff *tail, |
89235 | u32 start, u32 end) | 88895 | u32 start, u32 end) |
89236 | { | 88896 | { |
89237 | @@ -5841,6 +5841,7 @@ discard: | 88897 | @@ -5522,6 +5522,7 @@ discard: |
89238 | tcp_paws_reject(&tp->rx_opt, 0)) | 88898 | tcp_paws_reject(&tp->rx_opt, 0)) |
89239 | goto discard_and_undo; | 88899 | goto discard_and_undo; |
89240 | 88900 | ||
@@ -89242,7 +88902,7 @@ index 59163c8..8277c51 100644 | |||
89242 | if (th->syn) { | 88902 | if (th->syn) { |
89243 | /* We see SYN without ACK. It is attempt of | 88903 | /* We see SYN without ACK. It is attempt of |
89244 | * simultaneous connect with crossed SYNs. | 88904 | * simultaneous connect with crossed SYNs. |
89245 | @@ -5891,6 +5892,7 @@ discard: | 88905 | @@ -5572,6 +5573,7 @@ discard: |
89246 | goto discard; | 88906 | goto discard; |
89247 | #endif | 88907 | #endif |
89248 | } | 88908 | } |
@@ -89250,7 +88910,7 @@ index 59163c8..8277c51 100644 | |||
89250 | /* "fifth, if neither of the SYN or RST bits is set then | 88910 | /* "fifth, if neither of the SYN or RST bits is set then |
89251 | * drop the segment and return." | 88911 | * drop the segment and return." |
89252 | */ | 88912 | */ |
89253 | @@ -5935,7 +5937,7 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb, | 88913 | @@ -5616,7 +5618,7 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb, |
89254 | goto discard; | 88914 | goto discard; |
89255 | 88915 | ||
89256 | if (th->syn) { | 88916 | if (th->syn) { |
@@ -89260,7 +88920,7 @@ index 59163c8..8277c51 100644 | |||
89260 | if (icsk->icsk_af_ops->conn_request(sk, skb) < 0) | 88920 | if (icsk->icsk_af_ops->conn_request(sk, skb) < 0) |
89261 | return 1; | 88921 | return 1; |
89262 | diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c | 88922 | diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c |
89263 | index d09203c..518eff5 100644 | 88923 | index 7999fc5..c812f42 100644 |
89264 | --- a/net/ipv4/tcp_ipv4.c | 88924 | --- a/net/ipv4/tcp_ipv4.c |
89265 | +++ b/net/ipv4/tcp_ipv4.c | 88925 | +++ b/net/ipv4/tcp_ipv4.c |
89266 | @@ -90,6 +90,10 @@ int sysctl_tcp_low_latency __read_mostly; | 88926 | @@ -90,6 +90,10 @@ int sysctl_tcp_low_latency __read_mostly; |
@@ -89274,25 +88934,7 @@ index d09203c..518eff5 100644 | |||
89274 | #ifdef CONFIG_TCP_MD5SIG | 88934 | #ifdef CONFIG_TCP_MD5SIG |
89275 | static int tcp_v4_md5_hash_hdr(char *md5_hash, const struct tcp_md5sig_key *key, | 88935 | static int tcp_v4_md5_hash_hdr(char *md5_hash, const struct tcp_md5sig_key *key, |
89276 | __be32 daddr, __be32 saddr, const struct tcphdr *th); | 88936 | __be32 daddr, __be32 saddr, const struct tcphdr *th); |
89277 | @@ -1005,7 +1009,7 @@ int tcp_md5_do_add(struct sock *sk, const union tcp_md5_addr *addr, | 88937 | @@ -1855,6 +1859,9 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb) |
89278 | struct tcp_sock *tp = tcp_sk(sk); | ||
89279 | struct tcp_md5sig_info *md5sig; | ||
89280 | |||
89281 | - key = tcp_md5_do_lookup(sk, (union tcp_md5_addr *)&addr, AF_INET); | ||
89282 | + key = tcp_md5_do_lookup(sk, addr, family); | ||
89283 | if (key) { | ||
89284 | /* Pre-existing entry - just update that one. */ | ||
89285 | memcpy(key->key, newkey, newkeylen); | ||
89286 | @@ -1050,7 +1054,7 @@ int tcp_md5_do_del(struct sock *sk, const union tcp_md5_addr *addr, int family) | ||
89287 | struct tcp_md5sig_key *key; | ||
89288 | struct tcp_md5sig_info *md5sig; | ||
89289 | |||
89290 | - key = tcp_md5_do_lookup(sk, (union tcp_md5_addr *)&addr, AF_INET); | ||
89291 | + key = tcp_md5_do_lookup(sk, addr, family); | ||
89292 | if (!key) | ||
89293 | return -ENOENT; | ||
89294 | hlist_del_rcu(&key->node); | ||
89295 | @@ -1897,6 +1901,9 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb) | ||
89296 | return 0; | 88938 | return 0; |
89297 | 88939 | ||
89298 | reset: | 88940 | reset: |
@@ -89302,7 +88944,7 @@ index d09203c..518eff5 100644 | |||
89302 | tcp_v4_send_reset(rsk, skb); | 88944 | tcp_v4_send_reset(rsk, skb); |
89303 | discard: | 88945 | discard: |
89304 | kfree_skb(skb); | 88946 | kfree_skb(skb); |
89305 | @@ -1996,12 +2003,19 @@ int tcp_v4_rcv(struct sk_buff *skb) | 88947 | @@ -2000,12 +2007,19 @@ int tcp_v4_rcv(struct sk_buff *skb) |
89306 | TCP_SKB_CB(skb)->sacked = 0; | 88948 | TCP_SKB_CB(skb)->sacked = 0; |
89307 | 88949 | ||
89308 | sk = __inet_lookup_skb(&tcp_hashinfo, skb, th->source, th->dest); | 88950 | sk = __inet_lookup_skb(&tcp_hashinfo, skb, th->source, th->dest); |
@@ -89325,7 +88967,7 @@ index d09203c..518eff5 100644 | |||
89325 | 88967 | ||
89326 | if (unlikely(iph->ttl < inet_sk(sk)->min_ttl)) { | 88968 | if (unlikely(iph->ttl < inet_sk(sk)->min_ttl)) { |
89327 | NET_INC_STATS_BH(net, LINUX_MIB_TCPMINTTLDROP); | 88969 | NET_INC_STATS_BH(net, LINUX_MIB_TCPMINTTLDROP); |
89328 | @@ -2052,6 +2066,10 @@ no_tcp_socket: | 88970 | @@ -2058,6 +2072,10 @@ csum_error: |
89329 | bad_packet: | 88971 | bad_packet: |
89330 | TCP_INC_STATS_BH(net, TCP_MIB_INERRS); | 88972 | TCP_INC_STATS_BH(net, TCP_MIB_INERRS); |
89331 | } else { | 88973 | } else { |
@@ -89337,7 +88979,7 @@ index d09203c..518eff5 100644 | |||
89337 | } | 88979 | } |
89338 | 88980 | ||
89339 | diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c | 88981 | diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c |
89340 | index 2f672e7..b8895e9 100644 | 88982 | index 0f01788..d52a859 100644 |
89341 | --- a/net/ipv4/tcp_minisocks.c | 88983 | --- a/net/ipv4/tcp_minisocks.c |
89342 | +++ b/net/ipv4/tcp_minisocks.c | 88984 | +++ b/net/ipv4/tcp_minisocks.c |
89343 | @@ -27,6 +27,10 @@ | 88985 | @@ -27,6 +27,10 @@ |
@@ -89351,7 +88993,7 @@ index 2f672e7..b8895e9 100644 | |||
89351 | int sysctl_tcp_syncookies __read_mostly = 1; | 88993 | int sysctl_tcp_syncookies __read_mostly = 1; |
89352 | EXPORT_SYMBOL(sysctl_tcp_syncookies); | 88994 | EXPORT_SYMBOL(sysctl_tcp_syncookies); |
89353 | 88995 | ||
89354 | @@ -749,7 +753,10 @@ embryonic_reset: | 88996 | @@ -717,7 +721,10 @@ embryonic_reset: |
89355 | * avoid becoming vulnerable to outside attack aiming at | 88997 | * avoid becoming vulnerable to outside attack aiming at |
89356 | * resetting legit local connections. | 88998 | * resetting legit local connections. |
89357 | */ | 88999 | */ |
@@ -89377,7 +89019,7 @@ index d4943f6..e7a74a5 100644 | |||
89377 | cnt += width; | 89019 | cnt += width; |
89378 | } | 89020 | } |
89379 | diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c | 89021 | diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c |
89380 | index b78aac3..e18230b 100644 | 89022 | index 4b85e6f..22f9ac9 100644 |
89381 | --- a/net/ipv4/tcp_timer.c | 89023 | --- a/net/ipv4/tcp_timer.c |
89382 | +++ b/net/ipv4/tcp_timer.c | 89024 | +++ b/net/ipv4/tcp_timer.c |
89383 | @@ -22,6 +22,10 @@ | 89025 | @@ -22,6 +22,10 @@ |
@@ -89406,7 +89048,7 @@ index b78aac3..e18230b 100644 | |||
89406 | syn_set ? 0 : icsk->icsk_user_timeout, syn_set)) { | 89048 | syn_set ? 0 : icsk->icsk_user_timeout, syn_set)) { |
89407 | /* Has it gone just too far? */ | 89049 | /* Has it gone just too far? */ |
89408 | diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c | 89050 | diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c |
89409 | index 0a073a2..d4a04de 100644 | 89051 | index 93b731d..5a2dd92 100644 |
89410 | --- a/net/ipv4/udp.c | 89052 | --- a/net/ipv4/udp.c |
89411 | +++ b/net/ipv4/udp.c | 89053 | +++ b/net/ipv4/udp.c |
89412 | @@ -87,6 +87,7 @@ | 89054 | @@ -87,6 +87,7 @@ |
@@ -89438,24 +89080,7 @@ index 0a073a2..d4a04de 100644 | |||
89438 | /* | 89080 | /* |
89439 | * This routine is called by the ICMP module when it gets some | 89081 | * This routine is called by the ICMP module when it gets some |
89440 | * sort of error condition. If err < 0 then the socket should | 89082 | * sort of error condition. If err < 0 then the socket should |
89441 | @@ -799,7 +807,7 @@ send: | 89083 | @@ -890,9 +898,18 @@ int udp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, |
89442 | /* | ||
89443 | * Push out all pending data as one UDP datagram. Socket is locked. | ||
89444 | */ | ||
89445 | -static int udp_push_pending_frames(struct sock *sk) | ||
89446 | +int udp_push_pending_frames(struct sock *sk) | ||
89447 | { | ||
89448 | struct udp_sock *up = udp_sk(sk); | ||
89449 | struct inet_sock *inet = inet_sk(sk); | ||
89450 | @@ -818,6 +826,7 @@ out: | ||
89451 | up->pending = 0; | ||
89452 | return err; | ||
89453 | } | ||
89454 | +EXPORT_SYMBOL(udp_push_pending_frames); | ||
89455 | |||
89456 | int udp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, | ||
89457 | size_t len) | ||
89458 | @@ -889,9 +898,18 @@ int udp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, | ||
89459 | dport = usin->sin_port; | 89084 | dport = usin->sin_port; |
89460 | if (dport == 0) | 89085 | if (dport == 0) |
89461 | return -EINVAL; | 89086 | return -EINVAL; |
@@ -89474,8 +89099,8 @@ index 0a073a2..d4a04de 100644 | |||
89474 | daddr = inet->inet_daddr; | 89099 | daddr = inet->inet_daddr; |
89475 | dport = inet->inet_dport; | 89100 | dport = inet->inet_dport; |
89476 | /* Open fast path for connected socket. | 89101 | /* Open fast path for connected socket. |
89477 | @@ -1133,7 +1151,7 @@ static unsigned int first_packet_length(struct sock *sk) | 89102 | @@ -1136,7 +1153,7 @@ static unsigned int first_packet_length(struct sock *sk) |
89478 | udp_lib_checksum_complete(skb)) { | 89103 | IS_UDPLITE(sk)); |
89479 | UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, | 89104 | UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, |
89480 | IS_UDPLITE(sk)); | 89105 | IS_UDPLITE(sk)); |
89481 | - atomic_inc(&sk->sk_drops); | 89106 | - atomic_inc(&sk->sk_drops); |
@@ -89483,7 +89108,7 @@ index 0a073a2..d4a04de 100644 | |||
89483 | __skb_unlink(skb, rcvq); | 89108 | __skb_unlink(skb, rcvq); |
89484 | __skb_queue_tail(&list_kill, skb); | 89109 | __skb_queue_tail(&list_kill, skb); |
89485 | } | 89110 | } |
89486 | @@ -1219,6 +1237,10 @@ try_again: | 89111 | @@ -1222,6 +1239,10 @@ try_again: |
89487 | if (!skb) | 89112 | if (!skb) |
89488 | goto out; | 89113 | goto out; |
89489 | 89114 | ||
@@ -89494,7 +89119,7 @@ index 0a073a2..d4a04de 100644 | |||
89494 | ulen = skb->len - sizeof(struct udphdr); | 89119 | ulen = skb->len - sizeof(struct udphdr); |
89495 | copied = len; | 89120 | copied = len; |
89496 | if (copied > ulen) | 89121 | if (copied > ulen) |
89497 | @@ -1252,7 +1274,7 @@ try_again: | 89122 | @@ -1255,7 +1276,7 @@ try_again: |
89498 | if (unlikely(err)) { | 89123 | if (unlikely(err)) { |
89499 | trace_kfree_skb(skb, udp_recvmsg); | 89124 | trace_kfree_skb(skb, udp_recvmsg); |
89500 | if (!peeked) { | 89125 | if (!peeked) { |
@@ -89503,8 +89128,8 @@ index 0a073a2..d4a04de 100644 | |||
89503 | UDP_INC_STATS_USER(sock_net(sk), | 89128 | UDP_INC_STATS_USER(sock_net(sk), |
89504 | UDP_MIB_INERRORS, is_udplite); | 89129 | UDP_MIB_INERRORS, is_udplite); |
89505 | } | 89130 | } |
89506 | @@ -1535,7 +1557,7 @@ int udp_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) | 89131 | @@ -1542,7 +1563,7 @@ csum_error: |
89507 | 89132 | UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_CSUMERRORS, is_udplite); | |
89508 | drop: | 89133 | drop: |
89509 | UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite); | 89134 | UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite); |
89510 | - atomic_inc(&sk->sk_drops); | 89135 | - atomic_inc(&sk->sk_drops); |
@@ -89512,7 +89137,7 @@ index 0a073a2..d4a04de 100644 | |||
89512 | kfree_skb(skb); | 89137 | kfree_skb(skb); |
89513 | return -1; | 89138 | return -1; |
89514 | } | 89139 | } |
89515 | @@ -1554,7 +1576,7 @@ static void flush_stack(struct sock **stack, unsigned int count, | 89140 | @@ -1561,7 +1582,7 @@ static void flush_stack(struct sock **stack, unsigned int count, |
89516 | skb1 = (i == final) ? skb : skb_clone(skb, GFP_ATOMIC); | 89141 | skb1 = (i == final) ? skb : skb_clone(skb, GFP_ATOMIC); |
89517 | 89142 | ||
89518 | if (!skb1) { | 89143 | if (!skb1) { |
@@ -89521,7 +89146,7 @@ index 0a073a2..d4a04de 100644 | |||
89521 | UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_RCVBUFERRORS, | 89146 | UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_RCVBUFERRORS, |
89522 | IS_UDPLITE(sk)); | 89147 | IS_UDPLITE(sk)); |
89523 | UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, | 89148 | UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, |
89524 | @@ -1723,6 +1745,9 @@ int __udp4_lib_rcv(struct sk_buff *skb, struct udp_table *udptable, | 89149 | @@ -1730,6 +1751,9 @@ int __udp4_lib_rcv(struct sk_buff *skb, struct udp_table *udptable, |
89525 | goto csum_error; | 89150 | goto csum_error; |
89526 | 89151 | ||
89527 | UDP_INC_STATS_BH(net, UDP_MIB_NOPORTS, proto == IPPROTO_UDPLITE); | 89152 | UDP_INC_STATS_BH(net, UDP_MIB_NOPORTS, proto == IPPROTO_UDPLITE); |
@@ -89531,7 +89156,7 @@ index 0a073a2..d4a04de 100644 | |||
89531 | icmp_send(skb, ICMP_DEST_UNREACH, ICMP_PORT_UNREACH, 0); | 89156 | icmp_send(skb, ICMP_DEST_UNREACH, ICMP_PORT_UNREACH, 0); |
89532 | 89157 | ||
89533 | /* | 89158 | /* |
89534 | @@ -2152,7 +2177,7 @@ static void udp4_format_sock(struct sock *sp, struct seq_file *f, | 89159 | @@ -2160,7 +2184,7 @@ static void udp4_format_sock(struct sock *sp, struct seq_file *f, |
89535 | from_kuid_munged(seq_user_ns(f), sock_i_uid(sp)), | 89160 | from_kuid_munged(seq_user_ns(f), sock_i_uid(sp)), |
89536 | 0, sock_i_ino(sp), | 89161 | 0, sock_i_ino(sp), |
89537 | atomic_read(&sp->sk_refcnt), sp, | 89162 | atomic_read(&sp->sk_refcnt), sp, |
@@ -89580,53 +89205,19 @@ index 9a459be..086b866 100644 | |||
89580 | return -ENOMEM; | 89205 | return -ENOMEM; |
89581 | } | 89206 | } |
89582 | diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c | 89207 | diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c |
89583 | index 50a4c7c..231de25 100644 | 89208 | index fb8c94c..fb18024 100644 |
89584 | --- a/net/ipv6/addrconf.c | 89209 | --- a/net/ipv6/addrconf.c |
89585 | +++ b/net/ipv6/addrconf.c | 89210 | +++ b/net/ipv6/addrconf.c |
89586 | @@ -1375,6 +1375,23 @@ try_nextdev: | 89211 | @@ -621,7 +621,7 @@ static int inet6_netconf_dump_devconf(struct sk_buff *skb, |
89587 | } | 89212 | idx = 0; |
89588 | EXPORT_SYMBOL(ipv6_dev_get_saddr); | 89213 | head = &net->dev_index_head[h]; |
89589 | 89214 | rcu_read_lock(); | |
89590 | +int __ipv6_get_lladdr(struct inet6_dev *idev, struct in6_addr *addr, | 89215 | - cb->seq = atomic_read(&net->ipv6.dev_addr_genid) ^ |
89591 | + unsigned char banned_flags) | 89216 | + cb->seq = atomic_read_unchecked(&net->ipv6.dev_addr_genid) ^ |
89592 | +{ | 89217 | net->dev_base_seq; |
89593 | + struct inet6_ifaddr *ifp; | 89218 | hlist_for_each_entry_rcu(dev, head, index_hlist) { |
89594 | + int err = -EADDRNOTAVAIL; | 89219 | if (idx < s_idx) |
89595 | + | 89220 | @@ -2380,7 +2380,7 @@ int addrconf_set_dstaddr(struct net *net, void __user *arg) |
89596 | + list_for_each_entry(ifp, &idev->addr_list, if_list) { | ||
89597 | + if (ifp->scope == IFA_LINK && | ||
89598 | + !(ifp->flags & banned_flags)) { | ||
89599 | + *addr = ifp->addr; | ||
89600 | + err = 0; | ||
89601 | + break; | ||
89602 | + } | ||
89603 | + } | ||
89604 | + return err; | ||
89605 | +} | ||
89606 | + | ||
89607 | int ipv6_get_lladdr(struct net_device *dev, struct in6_addr *addr, | ||
89608 | unsigned char banned_flags) | ||
89609 | { | ||
89610 | @@ -1384,17 +1401,8 @@ int ipv6_get_lladdr(struct net_device *dev, struct in6_addr *addr, | ||
89611 | rcu_read_lock(); | ||
89612 | idev = __in6_dev_get(dev); | ||
89613 | if (idev) { | ||
89614 | - struct inet6_ifaddr *ifp; | ||
89615 | - | ||
89616 | read_lock_bh(&idev->lock); | ||
89617 | - list_for_each_entry(ifp, &idev->addr_list, if_list) { | ||
89618 | - if (ifp->scope == IFA_LINK && | ||
89619 | - !(ifp->flags & banned_flags)) { | ||
89620 | - *addr = ifp->addr; | ||
89621 | - err = 0; | ||
89622 | - break; | ||
89623 | - } | ||
89624 | - } | ||
89625 | + err = __ipv6_get_lladdr(idev, addr, banned_flags); | ||
89626 | read_unlock_bh(&idev->lock); | ||
89627 | } | ||
89628 | rcu_read_unlock(); | ||
89629 | @@ -2274,7 +2282,7 @@ int addrconf_set_dstaddr(struct net *net, void __user *arg) | ||
89630 | p.iph.ihl = 5; | 89221 | p.iph.ihl = 5; |
89631 | p.iph.protocol = IPPROTO_IPV6; | 89222 | p.iph.protocol = IPPROTO_IPV6; |
89632 | p.iph.ttl = 64; | 89223 | p.iph.ttl = 64; |
@@ -89635,17 +89226,25 @@ index 50a4c7c..231de25 100644 | |||
89635 | 89226 | ||
89636 | if (ops->ndo_do_ioctl) { | 89227 | if (ops->ndo_do_ioctl) { |
89637 | mm_segment_t oldfs = get_fs(); | 89228 | mm_segment_t oldfs = get_fs(); |
89638 | @@ -2557,6 +2565,9 @@ static void init_loopback(struct net_device *dev) | 89229 | @@ -4002,7 +4002,7 @@ static int inet6_dump_addr(struct sk_buff *skb, struct netlink_callback *cb, |
89639 | if (sp_ifa->flags & (IFA_F_DADFAILED | IFA_F_TENTATIVE)) | 89230 | s_ip_idx = ip_idx = cb->args[2]; |
89640 | continue; | ||
89641 | 89231 | ||
89642 | + if (sp_ifa->rt) | 89232 | rcu_read_lock(); |
89643 | + continue; | 89233 | - cb->seq = atomic_read(&net->ipv6.dev_addr_genid) ^ net->dev_base_seq; |
89644 | + | 89234 | + cb->seq = atomic_read_unchecked(&net->ipv6.dev_addr_genid) ^ net->dev_base_seq; |
89645 | sp_rt = addrconf_dst_alloc(idev, &sp_ifa->addr, 0); | 89235 | for (h = s_h; h < NETDEV_HASHENTRIES; h++, s_idx = 0) { |
89236 | idx = 0; | ||
89237 | head = &net->dev_index_head[h]; | ||
89238 | @@ -4587,7 +4587,7 @@ static void __ipv6_ifa_notify(int event, struct inet6_ifaddr *ifp) | ||
89239 | dst_free(&ifp->rt->dst); | ||
89240 | break; | ||
89241 | } | ||
89242 | - atomic_inc(&net->ipv6.dev_addr_genid); | ||
89243 | + atomic_inc_unchecked(&net->ipv6.dev_addr_genid); | ||
89244 | } | ||
89646 | 89245 | ||
89647 | /* Failure cases are ignored */ | 89246 | static void ipv6_ifa_notify(int event, struct inet6_ifaddr *ifp) |
89648 | @@ -4412,7 +4423,7 @@ int addrconf_sysctl_forward(ctl_table *ctl, int write, | 89247 | @@ -4607,7 +4607,7 @@ int addrconf_sysctl_forward(ctl_table *ctl, int write, |
89649 | int *valp = ctl->data; | 89248 | int *valp = ctl->data; |
89650 | int val = *valp; | 89249 | int val = *valp; |
89651 | loff_t pos = *ppos; | 89250 | loff_t pos = *ppos; |
@@ -89654,7 +89253,7 @@ index 50a4c7c..231de25 100644 | |||
89654 | int ret; | 89253 | int ret; |
89655 | 89254 | ||
89656 | /* | 89255 | /* |
89657 | @@ -4494,7 +4505,7 @@ int addrconf_sysctl_disable(ctl_table *ctl, int write, | 89256 | @@ -4689,7 +4689,7 @@ int addrconf_sysctl_disable(ctl_table *ctl, int write, |
89658 | int *valp = ctl->data; | 89257 | int *valp = ctl->data; |
89659 | int val = *valp; | 89258 | int val = *valp; |
89660 | loff_t pos = *ppos; | 89259 | loff_t pos = *ppos; |
@@ -89664,10 +89263,10 @@ index 50a4c7c..231de25 100644 | |||
89664 | 89263 | ||
89665 | /* | 89264 | /* |
89666 | diff --git a/net/ipv6/icmp.c b/net/ipv6/icmp.c | 89265 | diff --git a/net/ipv6/icmp.c b/net/ipv6/icmp.c |
89667 | index fff5bdd..15194fb 100644 | 89266 | index b4ff0a4..db9b764 100644 |
89668 | --- a/net/ipv6/icmp.c | 89267 | --- a/net/ipv6/icmp.c |
89669 | +++ b/net/ipv6/icmp.c | 89268 | +++ b/net/ipv6/icmp.c |
89670 | @@ -973,7 +973,7 @@ ctl_table ipv6_icmp_table_template[] = { | 89269 | @@ -980,7 +980,7 @@ ctl_table ipv6_icmp_table_template[] = { |
89671 | 89270 | ||
89672 | struct ctl_table * __net_init ipv6_icmp_sysctl_init(struct net *net) | 89271 | struct ctl_table * __net_init ipv6_icmp_sysctl_init(struct net *net) |
89673 | { | 89272 | { |
@@ -89676,58 +89275,11 @@ index fff5bdd..15194fb 100644 | |||
89676 | 89275 | ||
89677 | table = kmemdup(ipv6_icmp_table_template, | 89276 | table = kmemdup(ipv6_icmp_table_template, |
89678 | sizeof(ipv6_icmp_table_template), | 89277 | sizeof(ipv6_icmp_table_template), |
89679 | diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c | ||
89680 | index 192dd1a..5fc9c7a 100644 | ||
89681 | --- a/net/ipv6/ip6_fib.c | ||
89682 | +++ b/net/ipv6/ip6_fib.c | ||
89683 | @@ -632,6 +632,12 @@ insert_above: | ||
89684 | return ln; | ||
89685 | } | ||
89686 | |||
89687 | +static inline bool rt6_qualify_for_ecmp(struct rt6_info *rt) | ||
89688 | +{ | ||
89689 | + return (rt->rt6i_flags & (RTF_GATEWAY|RTF_ADDRCONF|RTF_DYNAMIC)) == | ||
89690 | + RTF_GATEWAY; | ||
89691 | +} | ||
89692 | + | ||
89693 | /* | ||
89694 | * Insert routing information in a node. | ||
89695 | */ | ||
89696 | @@ -646,6 +652,7 @@ static int fib6_add_rt2node(struct fib6_node *fn, struct rt6_info *rt, | ||
89697 | int add = (!info->nlh || | ||
89698 | (info->nlh->nlmsg_flags & NLM_F_CREATE)); | ||
89699 | int found = 0; | ||
89700 | + bool rt_can_ecmp = rt6_qualify_for_ecmp(rt); | ||
89701 | |||
89702 | ins = &fn->leaf; | ||
89703 | |||
89704 | @@ -691,9 +698,8 @@ static int fib6_add_rt2node(struct fib6_node *fn, struct rt6_info *rt, | ||
89705 | * To avoid long list, we only had siblings if the | ||
89706 | * route have a gateway. | ||
89707 | */ | ||
89708 | - if (rt->rt6i_flags & RTF_GATEWAY && | ||
89709 | - !(rt->rt6i_flags & RTF_EXPIRES) && | ||
89710 | - !(iter->rt6i_flags & RTF_EXPIRES)) | ||
89711 | + if (rt_can_ecmp && | ||
89712 | + rt6_qualify_for_ecmp(iter)) | ||
89713 | rt->rt6i_nsiblings++; | ||
89714 | } | ||
89715 | |||
89716 | @@ -715,7 +721,8 @@ static int fib6_add_rt2node(struct fib6_node *fn, struct rt6_info *rt, | ||
89717 | /* Find the first route that have the same metric */ | ||
89718 | sibling = fn->leaf; | ||
89719 | while (sibling) { | ||
89720 | - if (sibling->rt6i_metric == rt->rt6i_metric) { | ||
89721 | + if (sibling->rt6i_metric == rt->rt6i_metric && | ||
89722 | + rt6_qualify_for_ecmp(sibling)) { | ||
89723 | list_add_tail(&rt->rt6i_siblings, | ||
89724 | &sibling->rt6i_siblings); | ||
89725 | break; | ||
89726 | diff --git a/net/ipv6/ip6_gre.c b/net/ipv6/ip6_gre.c | 89278 | diff --git a/net/ipv6/ip6_gre.c b/net/ipv6/ip6_gre.c |
89727 | index 95d13c7..791fe2f 100644 | 89279 | index ecd6073..58162ae 100644 |
89728 | --- a/net/ipv6/ip6_gre.c | 89280 | --- a/net/ipv6/ip6_gre.c |
89729 | +++ b/net/ipv6/ip6_gre.c | 89281 | +++ b/net/ipv6/ip6_gre.c |
89730 | @@ -73,7 +73,7 @@ struct ip6gre_net { | 89282 | @@ -74,7 +74,7 @@ struct ip6gre_net { |
89731 | struct net_device *fb_tunnel_dev; | 89283 | struct net_device *fb_tunnel_dev; |
89732 | }; | 89284 | }; |
89733 | 89285 | ||
@@ -89736,7 +89288,7 @@ index 95d13c7..791fe2f 100644 | |||
89736 | static int ip6gre_tunnel_init(struct net_device *dev); | 89288 | static int ip6gre_tunnel_init(struct net_device *dev); |
89737 | static void ip6gre_tunnel_setup(struct net_device *dev); | 89289 | static void ip6gre_tunnel_setup(struct net_device *dev); |
89738 | static void ip6gre_tunnel_link(struct ip6gre_net *ign, struct ip6_tnl *t); | 89290 | static void ip6gre_tunnel_link(struct ip6gre_net *ign, struct ip6_tnl *t); |
89739 | @@ -1337,7 +1337,7 @@ static void ip6gre_fb_tunnel_init(struct net_device *dev) | 89291 | @@ -1283,7 +1283,7 @@ static void ip6gre_fb_tunnel_init(struct net_device *dev) |
89740 | } | 89292 | } |
89741 | 89293 | ||
89742 | 89294 | ||
@@ -89745,7 +89297,7 @@ index 95d13c7..791fe2f 100644 | |||
89745 | .handler = ip6gre_rcv, | 89297 | .handler = ip6gre_rcv, |
89746 | .err_handler = ip6gre_err, | 89298 | .err_handler = ip6gre_err, |
89747 | .flags = INET6_PROTO_NOPOLICY|INET6_PROTO_FINAL, | 89299 | .flags = INET6_PROTO_NOPOLICY|INET6_PROTO_FINAL, |
89748 | @@ -1671,7 +1671,7 @@ static const struct nla_policy ip6gre_policy[IFLA_GRE_MAX + 1] = { | 89300 | @@ -1617,7 +1617,7 @@ static const struct nla_policy ip6gre_policy[IFLA_GRE_MAX + 1] = { |
89749 | [IFLA_GRE_FLAGS] = { .type = NLA_U32 }, | 89301 | [IFLA_GRE_FLAGS] = { .type = NLA_U32 }, |
89750 | }; | 89302 | }; |
89751 | 89303 | ||
@@ -89754,7 +89306,7 @@ index 95d13c7..791fe2f 100644 | |||
89754 | .kind = "ip6gre", | 89306 | .kind = "ip6gre", |
89755 | .maxtype = IFLA_GRE_MAX, | 89307 | .maxtype = IFLA_GRE_MAX, |
89756 | .policy = ip6gre_policy, | 89308 | .policy = ip6gre_policy, |
89757 | @@ -1684,7 +1684,7 @@ static struct rtnl_link_ops ip6gre_link_ops __read_mostly = { | 89309 | @@ -1630,7 +1630,7 @@ static struct rtnl_link_ops ip6gre_link_ops __read_mostly = { |
89758 | .fill_info = ip6gre_fill_info, | 89310 | .fill_info = ip6gre_fill_info, |
89759 | }; | 89311 | }; |
89760 | 89312 | ||
@@ -89763,84 +89315,11 @@ index 95d13c7..791fe2f 100644 | |||
89763 | .kind = "ip6gretap", | 89315 | .kind = "ip6gretap", |
89764 | .maxtype = IFLA_GRE_MAX, | 89316 | .maxtype = IFLA_GRE_MAX, |
89765 | .policy = ip6gre_policy, | 89317 | .policy = ip6gre_policy, |
89766 | diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c | ||
89767 | index 851fdae..8f6f09a 100644 | ||
89768 | --- a/net/ipv6/ip6_output.c | ||
89769 | +++ b/net/ipv6/ip6_output.c | ||
89770 | @@ -822,11 +822,17 @@ static struct dst_entry *ip6_sk_dst_check(struct sock *sk, | ||
89771 | const struct flowi6 *fl6) | ||
89772 | { | ||
89773 | struct ipv6_pinfo *np = inet6_sk(sk); | ||
89774 | - struct rt6_info *rt = (struct rt6_info *)dst; | ||
89775 | + struct rt6_info *rt; | ||
89776 | |||
89777 | if (!dst) | ||
89778 | goto out; | ||
89779 | |||
89780 | + if (dst->ops->family != AF_INET6) { | ||
89781 | + dst_release(dst); | ||
89782 | + return NULL; | ||
89783 | + } | ||
89784 | + | ||
89785 | + rt = (struct rt6_info *)dst; | ||
89786 | /* Yes, checking route validity in not connected | ||
89787 | * case is not very simple. Take into account, | ||
89788 | * that we do not support routing by source, TOS, | ||
89789 | @@ -1093,11 +1099,12 @@ static inline struct ipv6_rt_hdr *ip6_rthdr_dup(struct ipv6_rt_hdr *src, | ||
89790 | return src ? kmemdup(src, (src->hdrlen + 1) * 8, gfp) : NULL; | ||
89791 | } | ||
89792 | |||
89793 | -static void ip6_append_data_mtu(int *mtu, | ||
89794 | +static void ip6_append_data_mtu(unsigned int *mtu, | ||
89795 | int *maxfraglen, | ||
89796 | unsigned int fragheaderlen, | ||
89797 | struct sk_buff *skb, | ||
89798 | - struct rt6_info *rt) | ||
89799 | + struct rt6_info *rt, | ||
89800 | + bool pmtuprobe) | ||
89801 | { | ||
89802 | if (!(rt->dst.flags & DST_XFRM_TUNNEL)) { | ||
89803 | if (skb == NULL) { | ||
89804 | @@ -1109,7 +1116,9 @@ static void ip6_append_data_mtu(int *mtu, | ||
89805 | * this fragment is not first, the headers | ||
89806 | * space is regarded as data space. | ||
89807 | */ | ||
89808 | - *mtu = dst_mtu(rt->dst.path); | ||
89809 | + *mtu = min(*mtu, pmtuprobe ? | ||
89810 | + rt->dst.dev->mtu : | ||
89811 | + dst_mtu(rt->dst.path)); | ||
89812 | } | ||
89813 | *maxfraglen = ((*mtu - fragheaderlen) & ~7) | ||
89814 | + fragheaderlen - sizeof(struct frag_hdr); | ||
89815 | @@ -1126,11 +1135,10 @@ int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to, | ||
89816 | struct ipv6_pinfo *np = inet6_sk(sk); | ||
89817 | struct inet_cork *cork; | ||
89818 | struct sk_buff *skb, *skb_prev = NULL; | ||
89819 | - unsigned int maxfraglen, fragheaderlen; | ||
89820 | + unsigned int maxfraglen, fragheaderlen, mtu; | ||
89821 | int exthdrlen; | ||
89822 | int dst_exthdrlen; | ||
89823 | int hh_len; | ||
89824 | - int mtu; | ||
89825 | int copy; | ||
89826 | int err; | ||
89827 | int offset = 0; | ||
89828 | @@ -1290,7 +1298,9 @@ alloc_new_skb: | ||
89829 | /* update mtu and maxfraglen if necessary */ | ||
89830 | if (skb == NULL || skb_prev == NULL) | ||
89831 | ip6_append_data_mtu(&mtu, &maxfraglen, | ||
89832 | - fragheaderlen, skb, rt); | ||
89833 | + fragheaderlen, skb, rt, | ||
89834 | + np->pmtudisc == | ||
89835 | + IPV6_PMTUDISC_PROBE); | ||
89836 | |||
89837 | skb_prev = skb; | ||
89838 | |||
89839 | diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c | 89318 | diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c |
89840 | index fff83cb..82d49dd 100644 | 89319 | index 1e55866..b398dab 100644 |
89841 | --- a/net/ipv6/ip6_tunnel.c | 89320 | --- a/net/ipv6/ip6_tunnel.c |
89842 | +++ b/net/ipv6/ip6_tunnel.c | 89321 | +++ b/net/ipv6/ip6_tunnel.c |
89843 | @@ -87,7 +87,7 @@ static u32 HASH(const struct in6_addr *addr1, const struct in6_addr *addr2) | 89322 | @@ -88,7 +88,7 @@ static u32 HASH(const struct in6_addr *addr1, const struct in6_addr *addr2) |
89844 | 89323 | ||
89845 | static int ip6_tnl_dev_init(struct net_device *dev); | 89324 | static int ip6_tnl_dev_init(struct net_device *dev); |
89846 | static void ip6_tnl_dev_setup(struct net_device *dev); | 89325 | static void ip6_tnl_dev_setup(struct net_device *dev); |
@@ -89849,7 +89328,7 @@ index fff83cb..82d49dd 100644 | |||
89849 | 89328 | ||
89850 | static int ip6_tnl_net_id __read_mostly; | 89329 | static int ip6_tnl_net_id __read_mostly; |
89851 | struct ip6_tnl_net { | 89330 | struct ip6_tnl_net { |
89852 | @@ -1684,7 +1684,7 @@ static const struct nla_policy ip6_tnl_policy[IFLA_IPTUN_MAX + 1] = { | 89331 | @@ -1672,7 +1672,7 @@ static const struct nla_policy ip6_tnl_policy[IFLA_IPTUN_MAX + 1] = { |
89853 | [IFLA_IPTUN_PROTO] = { .type = NLA_U8 }, | 89332 | [IFLA_IPTUN_PROTO] = { .type = NLA_U8 }, |
89854 | }; | 89333 | }; |
89855 | 89334 | ||
@@ -89871,98 +89350,11 @@ index d1e2e8e..51c19ae 100644 | |||
89871 | msg.msg_controllen = len; | 89350 | msg.msg_controllen = len; |
89872 | msg.msg_flags = flags; | 89351 | msg.msg_flags = flags; |
89873 | 89352 | ||
89874 | diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c | ||
89875 | index bfa6cc3..c3998c2 100644 | ||
89876 | --- a/net/ipv6/mcast.c | ||
89877 | +++ b/net/ipv6/mcast.c | ||
89878 | @@ -1343,8 +1343,9 @@ static void ip6_mc_hdr(struct sock *sk, struct sk_buff *skb, | ||
89879 | hdr->daddr = *daddr; | ||
89880 | } | ||
89881 | |||
89882 | -static struct sk_buff *mld_newpack(struct net_device *dev, int size) | ||
89883 | +static struct sk_buff *mld_newpack(struct inet6_dev *idev, int size) | ||
89884 | { | ||
89885 | + struct net_device *dev = idev->dev; | ||
89886 | struct net *net = dev_net(dev); | ||
89887 | struct sock *sk = net->ipv6.igmp_sk; | ||
89888 | struct sk_buff *skb; | ||
89889 | @@ -1369,7 +1370,7 @@ static struct sk_buff *mld_newpack(struct net_device *dev, int size) | ||
89890 | |||
89891 | skb_reserve(skb, hlen); | ||
89892 | |||
89893 | - if (ipv6_get_lladdr(dev, &addr_buf, IFA_F_TENTATIVE)) { | ||
89894 | + if (__ipv6_get_lladdr(idev, &addr_buf, IFA_F_TENTATIVE)) { | ||
89895 | /* <draft-ietf-magma-mld-source-05.txt>: | ||
89896 | * use unspecified address as the source address | ||
89897 | * when a valid link-local address is not available. | ||
89898 | @@ -1465,7 +1466,7 @@ static struct sk_buff *add_grhead(struct sk_buff *skb, struct ifmcaddr6 *pmc, | ||
89899 | struct mld2_grec *pgr; | ||
89900 | |||
89901 | if (!skb) | ||
89902 | - skb = mld_newpack(dev, dev->mtu); | ||
89903 | + skb = mld_newpack(pmc->idev, dev->mtu); | ||
89904 | if (!skb) | ||
89905 | return NULL; | ||
89906 | pgr = (struct mld2_grec *)skb_put(skb, sizeof(struct mld2_grec)); | ||
89907 | @@ -1485,7 +1486,8 @@ static struct sk_buff *add_grhead(struct sk_buff *skb, struct ifmcaddr6 *pmc, | ||
89908 | static struct sk_buff *add_grec(struct sk_buff *skb, struct ifmcaddr6 *pmc, | ||
89909 | int type, int gdeleted, int sdeleted) | ||
89910 | { | ||
89911 | - struct net_device *dev = pmc->idev->dev; | ||
89912 | + struct inet6_dev *idev = pmc->idev; | ||
89913 | + struct net_device *dev = idev->dev; | ||
89914 | struct mld2_report *pmr; | ||
89915 | struct mld2_grec *pgr = NULL; | ||
89916 | struct ip6_sf_list *psf, *psf_next, *psf_prev, **psf_list; | ||
89917 | @@ -1514,7 +1516,7 @@ static struct sk_buff *add_grec(struct sk_buff *skb, struct ifmcaddr6 *pmc, | ||
89918 | AVAILABLE(skb) < grec_size(pmc, type, gdeleted, sdeleted)) { | ||
89919 | if (skb) | ||
89920 | mld_sendpack(skb); | ||
89921 | - skb = mld_newpack(dev, dev->mtu); | ||
89922 | + skb = mld_newpack(idev, dev->mtu); | ||
89923 | } | ||
89924 | } | ||
89925 | first = 1; | ||
89926 | @@ -1541,7 +1543,7 @@ static struct sk_buff *add_grec(struct sk_buff *skb, struct ifmcaddr6 *pmc, | ||
89927 | pgr->grec_nsrcs = htons(scount); | ||
89928 | if (skb) | ||
89929 | mld_sendpack(skb); | ||
89930 | - skb = mld_newpack(dev, dev->mtu); | ||
89931 | + skb = mld_newpack(idev, dev->mtu); | ||
89932 | first = 1; | ||
89933 | scount = 0; | ||
89934 | } | ||
89935 | @@ -1596,8 +1598,8 @@ static void mld_send_report(struct inet6_dev *idev, struct ifmcaddr6 *pmc) | ||
89936 | struct sk_buff *skb = NULL; | ||
89937 | int type; | ||
89938 | |||
89939 | + read_lock_bh(&idev->lock); | ||
89940 | if (!pmc) { | ||
89941 | - read_lock_bh(&idev->lock); | ||
89942 | for (pmc=idev->mc_list; pmc; pmc=pmc->next) { | ||
89943 | if (pmc->mca_flags & MAF_NOREPORT) | ||
89944 | continue; | ||
89945 | @@ -1609,7 +1611,6 @@ static void mld_send_report(struct inet6_dev *idev, struct ifmcaddr6 *pmc) | ||
89946 | skb = add_grec(skb, pmc, type, 0, 0); | ||
89947 | spin_unlock_bh(&pmc->mca_lock); | ||
89948 | } | ||
89949 | - read_unlock_bh(&idev->lock); | ||
89950 | } else { | ||
89951 | spin_lock_bh(&pmc->mca_lock); | ||
89952 | if (pmc->mca_sfcount[MCAST_EXCLUDE]) | ||
89953 | @@ -1619,6 +1620,7 @@ static void mld_send_report(struct inet6_dev *idev, struct ifmcaddr6 *pmc) | ||
89954 | skb = add_grec(skb, pmc, type, 0, 0); | ||
89955 | spin_unlock_bh(&pmc->mca_lock); | ||
89956 | } | ||
89957 | + read_unlock_bh(&idev->lock); | ||
89958 | if (skb) | ||
89959 | mld_sendpack(skb); | ||
89960 | } | ||
89961 | diff --git a/net/ipv6/netfilter/ip6_tables.c b/net/ipv6/netfilter/ip6_tables.c | 89353 | diff --git a/net/ipv6/netfilter/ip6_tables.c b/net/ipv6/netfilter/ip6_tables.c |
89962 | index 341b54a..591e8ed 100644 | 89354 | index 44400c2..8e11f52 100644 |
89963 | --- a/net/ipv6/netfilter/ip6_tables.c | 89355 | --- a/net/ipv6/netfilter/ip6_tables.c |
89964 | +++ b/net/ipv6/netfilter/ip6_tables.c | 89356 | +++ b/net/ipv6/netfilter/ip6_tables.c |
89965 | @@ -1076,14 +1076,14 @@ static int compat_table_info(const struct xt_table_info *info, | 89357 | @@ -1078,14 +1078,14 @@ static int compat_table_info(const struct xt_table_info *info, |
89966 | #endif | 89358 | #endif |
89967 | 89359 | ||
89968 | static int get_info(struct net *net, void __user *user, | 89360 | static int get_info(struct net *net, void __user *user, |
@@ -89980,7 +89372,7 @@ index 341b54a..591e8ed 100644 | |||
89980 | sizeof(struct ip6t_getinfo)); | 89372 | sizeof(struct ip6t_getinfo)); |
89981 | return -EINVAL; | 89373 | return -EINVAL; |
89982 | } | 89374 | } |
89983 | @@ -1120,7 +1120,7 @@ static int get_info(struct net *net, void __user *user, | 89375 | @@ -1122,7 +1122,7 @@ static int get_info(struct net *net, void __user *user, |
89984 | info.size = private->size; | 89376 | info.size = private->size; |
89985 | strcpy(info.name, name); | 89377 | strcpy(info.name, name); |
89986 | 89378 | ||
@@ -89989,7 +89381,7 @@ index 341b54a..591e8ed 100644 | |||
89989 | ret = -EFAULT; | 89381 | ret = -EFAULT; |
89990 | else | 89382 | else |
89991 | ret = 0; | 89383 | ret = 0; |
89992 | @@ -1974,7 +1974,7 @@ compat_do_ip6t_get_ctl(struct sock *sk, int cmd, void __user *user, int *len) | 89384 | @@ -1976,7 +1976,7 @@ compat_do_ip6t_get_ctl(struct sock *sk, int cmd, void __user *user, int *len) |
89993 | 89385 | ||
89994 | switch (cmd) { | 89386 | switch (cmd) { |
89995 | case IP6T_SO_GET_INFO: | 89387 | case IP6T_SO_GET_INFO: |
@@ -89998,7 +89390,7 @@ index 341b54a..591e8ed 100644 | |||
89998 | break; | 89390 | break; |
89999 | case IP6T_SO_GET_ENTRIES: | 89391 | case IP6T_SO_GET_ENTRIES: |
90000 | ret = compat_get_entries(sock_net(sk), user, len); | 89392 | ret = compat_get_entries(sock_net(sk), user, len); |
90001 | @@ -2021,7 +2021,7 @@ do_ip6t_get_ctl(struct sock *sk, int cmd, void __user *user, int *len) | 89393 | @@ -2023,7 +2023,7 @@ do_ip6t_get_ctl(struct sock *sk, int cmd, void __user *user, int *len) |
90002 | 89394 | ||
90003 | switch (cmd) { | 89395 | switch (cmd) { |
90004 | case IP6T_SO_GET_INFO: | 89396 | case IP6T_SO_GET_INFO: |
@@ -90008,10 +89400,10 @@ index 341b54a..591e8ed 100644 | |||
90008 | 89400 | ||
90009 | case IP6T_SO_GET_ENTRIES: | 89401 | case IP6T_SO_GET_ENTRIES: |
90010 | diff --git a/net/ipv6/netfilter/nf_conntrack_reasm.c b/net/ipv6/netfilter/nf_conntrack_reasm.c | 89402 | diff --git a/net/ipv6/netfilter/nf_conntrack_reasm.c b/net/ipv6/netfilter/nf_conntrack_reasm.c |
90011 | index 6700069..1e50f42 100644 | 89403 | index dffdc1a..ccc6678 100644 |
90012 | --- a/net/ipv6/netfilter/nf_conntrack_reasm.c | 89404 | --- a/net/ipv6/netfilter/nf_conntrack_reasm.c |
90013 | +++ b/net/ipv6/netfilter/nf_conntrack_reasm.c | 89405 | +++ b/net/ipv6/netfilter/nf_conntrack_reasm.c |
90014 | @@ -89,12 +89,11 @@ static struct ctl_table nf_ct_frag6_sysctl_table[] = { | 89406 | @@ -90,12 +90,11 @@ static struct ctl_table nf_ct_frag6_sysctl_table[] = { |
90015 | 89407 | ||
90016 | static int nf_ct_frag6_sysctl_register(struct net *net) | 89408 | static int nf_ct_frag6_sysctl_register(struct net *net) |
90017 | { | 89409 | { |
@@ -90026,7 +89418,7 @@ index 6700069..1e50f42 100644 | |||
90026 | GFP_KERNEL); | 89418 | GFP_KERNEL); |
90027 | if (table == NULL) | 89419 | if (table == NULL) |
90028 | goto err_alloc; | 89420 | goto err_alloc; |
90029 | @@ -102,9 +101,9 @@ static int nf_ct_frag6_sysctl_register(struct net *net) | 89421 | @@ -103,9 +102,9 @@ static int nf_ct_frag6_sysctl_register(struct net *net) |
90030 | table[0].data = &net->nf_frag.frags.timeout; | 89422 | table[0].data = &net->nf_frag.frags.timeout; |
90031 | table[1].data = &net->nf_frag.frags.low_thresh; | 89423 | table[1].data = &net->nf_frag.frags.low_thresh; |
90032 | table[2].data = &net->nf_frag.frags.high_thresh; | 89424 | table[2].data = &net->nf_frag.frags.high_thresh; |
@@ -90039,7 +89431,7 @@ index 6700069..1e50f42 100644 | |||
90039 | if (hdr == NULL) | 89431 | if (hdr == NULL) |
90040 | goto err_reg; | 89432 | goto err_reg; |
90041 | 89433 | ||
90042 | @@ -112,8 +111,7 @@ static int nf_ct_frag6_sysctl_register(struct net *net) | 89434 | @@ -113,8 +112,7 @@ static int nf_ct_frag6_sysctl_register(struct net *net) |
90043 | return 0; | 89435 | return 0; |
90044 | 89436 | ||
90045 | err_reg: | 89437 | err_reg: |
@@ -90050,7 +89442,7 @@ index 6700069..1e50f42 100644 | |||
90050 | return -ENOMEM; | 89442 | return -ENOMEM; |
90051 | } | 89443 | } |
90052 | diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c | 89444 | diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c |
90053 | index 330b5e7..796fbf1 100644 | 89445 | index eedff8c..6e13a47 100644 |
90054 | --- a/net/ipv6/raw.c | 89446 | --- a/net/ipv6/raw.c |
90055 | +++ b/net/ipv6/raw.c | 89447 | +++ b/net/ipv6/raw.c |
90056 | @@ -378,7 +378,7 @@ static inline int rawv6_rcv_skb(struct sock *sk, struct sk_buff *skb) | 89448 | @@ -378,7 +378,7 @@ static inline int rawv6_rcv_skb(struct sock *sk, struct sk_buff *skb) |
@@ -90080,7 +89472,7 @@ index 330b5e7..796fbf1 100644 | |||
90080 | kfree_skb(skb); | 89472 | kfree_skb(skb); |
90081 | return NET_RX_DROP; | 89473 | return NET_RX_DROP; |
90082 | } | 89474 | } |
90083 | @@ -603,7 +603,7 @@ out: | 89475 | @@ -602,7 +602,7 @@ out: |
90084 | return err; | 89476 | return err; |
90085 | } | 89477 | } |
90086 | 89478 | ||
@@ -90089,7 +89481,7 @@ index 330b5e7..796fbf1 100644 | |||
90089 | struct flowi6 *fl6, struct dst_entry **dstp, | 89481 | struct flowi6 *fl6, struct dst_entry **dstp, |
90090 | unsigned int flags) | 89482 | unsigned int flags) |
90091 | { | 89483 | { |
90092 | @@ -915,12 +915,15 @@ do_confirm: | 89484 | @@ -914,12 +914,15 @@ do_confirm: |
90093 | static int rawv6_seticmpfilter(struct sock *sk, int level, int optname, | 89485 | static int rawv6_seticmpfilter(struct sock *sk, int level, int optname, |
90094 | char __user *optval, int optlen) | 89486 | char __user *optval, int optlen) |
90095 | { | 89487 | { |
@@ -90106,7 +89498,7 @@ index 330b5e7..796fbf1 100644 | |||
90106 | return 0; | 89498 | return 0; |
90107 | default: | 89499 | default: |
90108 | return -ENOPROTOOPT; | 89500 | return -ENOPROTOOPT; |
90109 | @@ -933,6 +936,7 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname, | 89501 | @@ -932,6 +935,7 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname, |
90110 | char __user *optval, int __user *optlen) | 89502 | char __user *optval, int __user *optlen) |
90111 | { | 89503 | { |
90112 | int len; | 89504 | int len; |
@@ -90114,7 +89506,7 @@ index 330b5e7..796fbf1 100644 | |||
90114 | 89506 | ||
90115 | switch (optname) { | 89507 | switch (optname) { |
90116 | case ICMPV6_FILTER: | 89508 | case ICMPV6_FILTER: |
90117 | @@ -944,7 +948,8 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname, | 89509 | @@ -943,7 +947,8 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname, |
90118 | len = sizeof(struct icmp6_filter); | 89510 | len = sizeof(struct icmp6_filter); |
90119 | if (put_user(len, optlen)) | 89511 | if (put_user(len, optlen)) |
90120 | return -EFAULT; | 89512 | return -EFAULT; |
@@ -90124,7 +89516,7 @@ index 330b5e7..796fbf1 100644 | |||
90124 | return -EFAULT; | 89516 | return -EFAULT; |
90125 | return 0; | 89517 | return 0; |
90126 | default: | 89518 | default: |
90127 | @@ -1252,7 +1257,7 @@ static void raw6_sock_seq_show(struct seq_file *seq, struct sock *sp, int i) | 89519 | @@ -1251,7 +1256,7 @@ static void raw6_sock_seq_show(struct seq_file *seq, struct sock *sp, int i) |
90128 | from_kuid_munged(seq_user_ns(seq), sock_i_uid(sp)), | 89520 | from_kuid_munged(seq_user_ns(seq), sock_i_uid(sp)), |
90129 | 0, | 89521 | 0, |
90130 | sock_i_ino(sp), | 89522 | sock_i_ino(sp), |
@@ -90134,10 +89526,10 @@ index 330b5e7..796fbf1 100644 | |||
90134 | 89526 | ||
90135 | static int raw6_seq_show(struct seq_file *seq, void *v) | 89527 | static int raw6_seq_show(struct seq_file *seq, void *v) |
90136 | diff --git a/net/ipv6/reassembly.c b/net/ipv6/reassembly.c | 89528 | diff --git a/net/ipv6/reassembly.c b/net/ipv6/reassembly.c |
90137 | index 0ba10e5..c14a4f6 100644 | 89529 | index 790d9f4..68ae078 100644 |
90138 | --- a/net/ipv6/reassembly.c | 89530 | --- a/net/ipv6/reassembly.c |
90139 | +++ b/net/ipv6/reassembly.c | 89531 | +++ b/net/ipv6/reassembly.c |
90140 | @@ -602,12 +602,11 @@ static struct ctl_table ip6_frags_ctl_table[] = { | 89532 | @@ -621,12 +621,11 @@ static struct ctl_table ip6_frags_ctl_table[] = { |
90141 | 89533 | ||
90142 | static int __net_init ip6_frags_ns_sysctl_register(struct net *net) | 89534 | static int __net_init ip6_frags_ns_sysctl_register(struct net *net) |
90143 | { | 89535 | { |
@@ -90152,7 +89544,7 @@ index 0ba10e5..c14a4f6 100644 | |||
90152 | if (table == NULL) | 89544 | if (table == NULL) |
90153 | goto err_alloc; | 89545 | goto err_alloc; |
90154 | 89546 | ||
90155 | @@ -618,9 +617,10 @@ static int __net_init ip6_frags_ns_sysctl_register(struct net *net) | 89547 | @@ -637,9 +636,10 @@ static int __net_init ip6_frags_ns_sysctl_register(struct net *net) |
90156 | /* Don't export sysctls to unprivileged users */ | 89548 | /* Don't export sysctls to unprivileged users */ |
90157 | if (net->user_ns != &init_user_ns) | 89549 | if (net->user_ns != &init_user_ns) |
90158 | table[0].procname = NULL; | 89550 | table[0].procname = NULL; |
@@ -90165,7 +89557,7 @@ index 0ba10e5..c14a4f6 100644 | |||
90165 | if (hdr == NULL) | 89557 | if (hdr == NULL) |
90166 | goto err_reg; | 89558 | goto err_reg; |
90167 | 89559 | ||
90168 | @@ -628,8 +628,7 @@ static int __net_init ip6_frags_ns_sysctl_register(struct net *net) | 89560 | @@ -647,8 +647,7 @@ static int __net_init ip6_frags_ns_sysctl_register(struct net *net) |
90169 | return 0; | 89561 | return 0; |
90170 | 89562 | ||
90171 | err_reg: | 89563 | err_reg: |
@@ -90176,172 +89568,10 @@ index 0ba10e5..c14a4f6 100644 | |||
90176 | return -ENOMEM; | 89568 | return -ENOMEM; |
90177 | } | 89569 | } |
90178 | diff --git a/net/ipv6/route.c b/net/ipv6/route.c | 89570 | diff --git a/net/ipv6/route.c b/net/ipv6/route.c |
90179 | index e5fe004..d8ed9b0 100644 | 89571 | index bacce6c..9d1741a 100644 |
90180 | --- a/net/ipv6/route.c | 89572 | --- a/net/ipv6/route.c |
90181 | +++ b/net/ipv6/route.c | 89573 | +++ b/net/ipv6/route.c |
90182 | @@ -65,6 +65,12 @@ | 89574 | @@ -2903,7 +2903,7 @@ ctl_table ipv6_route_table_template[] = { |
90183 | #include <linux/sysctl.h> | ||
90184 | #endif | ||
90185 | |||
90186 | +enum rt6_nud_state { | ||
90187 | + RT6_NUD_FAIL_HARD = -2, | ||
90188 | + RT6_NUD_FAIL_SOFT = -1, | ||
90189 | + RT6_NUD_SUCCEED = 1 | ||
90190 | +}; | ||
90191 | + | ||
90192 | static struct rt6_info *ip6_rt_copy(struct rt6_info *ort, | ||
90193 | const struct in6_addr *dest); | ||
90194 | static struct dst_entry *ip6_dst_check(struct dst_entry *dst, u32 cookie); | ||
90195 | @@ -527,26 +533,29 @@ static inline int rt6_check_dev(struct rt6_info *rt, int oif) | ||
90196 | return 0; | ||
90197 | } | ||
90198 | |||
90199 | -static inline bool rt6_check_neigh(struct rt6_info *rt) | ||
90200 | +static inline enum rt6_nud_state rt6_check_neigh(struct rt6_info *rt) | ||
90201 | { | ||
90202 | struct neighbour *neigh; | ||
90203 | - bool ret = false; | ||
90204 | + enum rt6_nud_state ret = RT6_NUD_FAIL_HARD; | ||
90205 | |||
90206 | if (rt->rt6i_flags & RTF_NONEXTHOP || | ||
90207 | !(rt->rt6i_flags & RTF_GATEWAY)) | ||
90208 | - return true; | ||
90209 | + return RT6_NUD_SUCCEED; | ||
90210 | |||
90211 | rcu_read_lock_bh(); | ||
90212 | neigh = __ipv6_neigh_lookup_noref(rt->dst.dev, &rt->rt6i_gateway); | ||
90213 | if (neigh) { | ||
90214 | read_lock(&neigh->lock); | ||
90215 | if (neigh->nud_state & NUD_VALID) | ||
90216 | - ret = true; | ||
90217 | + ret = RT6_NUD_SUCCEED; | ||
90218 | #ifdef CONFIG_IPV6_ROUTER_PREF | ||
90219 | else if (!(neigh->nud_state & NUD_FAILED)) | ||
90220 | - ret = true; | ||
90221 | + ret = RT6_NUD_SUCCEED; | ||
90222 | #endif | ||
90223 | read_unlock(&neigh->lock); | ||
90224 | + } else { | ||
90225 | + ret = IS_ENABLED(CONFIG_IPV6_ROUTER_PREF) ? | ||
90226 | + RT6_NUD_SUCCEED : RT6_NUD_FAIL_SOFT; | ||
90227 | } | ||
90228 | rcu_read_unlock_bh(); | ||
90229 | |||
90230 | @@ -560,43 +569,52 @@ static int rt6_score_route(struct rt6_info *rt, int oif, | ||
90231 | |||
90232 | m = rt6_check_dev(rt, oif); | ||
90233 | if (!m && (strict & RT6_LOOKUP_F_IFACE)) | ||
90234 | - return -1; | ||
90235 | + return RT6_NUD_FAIL_HARD; | ||
90236 | #ifdef CONFIG_IPV6_ROUTER_PREF | ||
90237 | m |= IPV6_DECODE_PREF(IPV6_EXTRACT_PREF(rt->rt6i_flags)) << 2; | ||
90238 | #endif | ||
90239 | - if (!rt6_check_neigh(rt) && (strict & RT6_LOOKUP_F_REACHABLE)) | ||
90240 | - return -1; | ||
90241 | + if (strict & RT6_LOOKUP_F_REACHABLE) { | ||
90242 | + int n = rt6_check_neigh(rt); | ||
90243 | + if (n < 0) | ||
90244 | + return n; | ||
90245 | + } | ||
90246 | return m; | ||
90247 | } | ||
90248 | |||
90249 | static struct rt6_info *find_match(struct rt6_info *rt, int oif, int strict, | ||
90250 | - int *mpri, struct rt6_info *match) | ||
90251 | + int *mpri, struct rt6_info *match, | ||
90252 | + bool *do_rr) | ||
90253 | { | ||
90254 | int m; | ||
90255 | + bool match_do_rr = false; | ||
90256 | |||
90257 | if (rt6_check_expired(rt)) | ||
90258 | goto out; | ||
90259 | |||
90260 | m = rt6_score_route(rt, oif, strict); | ||
90261 | - if (m < 0) | ||
90262 | + if (m == RT6_NUD_FAIL_SOFT && !IS_ENABLED(CONFIG_IPV6_ROUTER_PREF)) { | ||
90263 | + match_do_rr = true; | ||
90264 | + m = 0; /* lowest valid score */ | ||
90265 | + } else if (m < 0) { | ||
90266 | goto out; | ||
90267 | + } | ||
90268 | + | ||
90269 | + if (strict & RT6_LOOKUP_F_REACHABLE) | ||
90270 | + rt6_probe(rt); | ||
90271 | |||
90272 | if (m > *mpri) { | ||
90273 | - if (strict & RT6_LOOKUP_F_REACHABLE) | ||
90274 | - rt6_probe(match); | ||
90275 | + *do_rr = match_do_rr; | ||
90276 | *mpri = m; | ||
90277 | match = rt; | ||
90278 | - } else if (strict & RT6_LOOKUP_F_REACHABLE) { | ||
90279 | - rt6_probe(rt); | ||
90280 | } | ||
90281 | - | ||
90282 | out: | ||
90283 | return match; | ||
90284 | } | ||
90285 | |||
90286 | static struct rt6_info *find_rr_leaf(struct fib6_node *fn, | ||
90287 | struct rt6_info *rr_head, | ||
90288 | - u32 metric, int oif, int strict) | ||
90289 | + u32 metric, int oif, int strict, | ||
90290 | + bool *do_rr) | ||
90291 | { | ||
90292 | struct rt6_info *rt, *match; | ||
90293 | int mpri = -1; | ||
90294 | @@ -604,10 +622,10 @@ static struct rt6_info *find_rr_leaf(struct fib6_node *fn, | ||
90295 | match = NULL; | ||
90296 | for (rt = rr_head; rt && rt->rt6i_metric == metric; | ||
90297 | rt = rt->dst.rt6_next) | ||
90298 | - match = find_match(rt, oif, strict, &mpri, match); | ||
90299 | + match = find_match(rt, oif, strict, &mpri, match, do_rr); | ||
90300 | for (rt = fn->leaf; rt && rt != rr_head && rt->rt6i_metric == metric; | ||
90301 | rt = rt->dst.rt6_next) | ||
90302 | - match = find_match(rt, oif, strict, &mpri, match); | ||
90303 | + match = find_match(rt, oif, strict, &mpri, match, do_rr); | ||
90304 | |||
90305 | return match; | ||
90306 | } | ||
90307 | @@ -616,15 +634,16 @@ static struct rt6_info *rt6_select(struct fib6_node *fn, int oif, int strict) | ||
90308 | { | ||
90309 | struct rt6_info *match, *rt0; | ||
90310 | struct net *net; | ||
90311 | + bool do_rr = false; | ||
90312 | |||
90313 | rt0 = fn->rr_ptr; | ||
90314 | if (!rt0) | ||
90315 | fn->rr_ptr = rt0 = fn->leaf; | ||
90316 | |||
90317 | - match = find_rr_leaf(fn, rt0, rt0->rt6i_metric, oif, strict); | ||
90318 | + match = find_rr_leaf(fn, rt0, rt0->rt6i_metric, oif, strict, | ||
90319 | + &do_rr); | ||
90320 | |||
90321 | - if (!match && | ||
90322 | - (strict & RT6_LOOKUP_F_REACHABLE)) { | ||
90323 | + if (do_rr) { | ||
90324 | struct rt6_info *next = rt0->dst.rt6_next; | ||
90325 | |||
90326 | /* no entries matched; do round-robin */ | ||
90327 | @@ -1074,10 +1093,13 @@ static void ip6_link_failure(struct sk_buff *skb) | ||
90328 | |||
90329 | rt = (struct rt6_info *) skb_dst(skb); | ||
90330 | if (rt) { | ||
90331 | - if (rt->rt6i_flags & RTF_CACHE) | ||
90332 | - rt6_update_expires(rt, 0); | ||
90333 | - else if (rt->rt6i_node && (rt->rt6i_flags & RTF_DEFAULT)) | ||
90334 | + if (rt->rt6i_flags & RTF_CACHE) { | ||
90335 | + dst_hold(&rt->dst); | ||
90336 | + if (ip6_del_rt(rt)) | ||
90337 | + dst_free(&rt->dst); | ||
90338 | + } else if (rt->rt6i_node && (rt->rt6i_flags & RTF_DEFAULT)) { | ||
90339 | rt->rt6i_node->fn_sernum = -1; | ||
90340 | + } | ||
90341 | } | ||
90342 | } | ||
90343 | |||
90344 | @@ -2881,7 +2903,7 @@ ctl_table ipv6_route_table_template[] = { | ||
90345 | 89575 | ||
90346 | struct ctl_table * __net_init ipv6_route_sysctl_init(struct net *net) | 89576 | struct ctl_table * __net_init ipv6_route_sysctl_init(struct net *net) |
90347 | { | 89577 | { |
@@ -90351,7 +89581,7 @@ index e5fe004..d8ed9b0 100644 | |||
90351 | table = kmemdup(ipv6_route_table_template, | 89581 | table = kmemdup(ipv6_route_table_template, |
90352 | sizeof(ipv6_route_table_template), | 89582 | sizeof(ipv6_route_table_template), |
90353 | diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c | 89583 | diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c |
90354 | index 02f96dc..58dd9e8 100644 | 89584 | index 60df36d..f3ab7c8 100644 |
90355 | --- a/net/ipv6/sit.c | 89585 | --- a/net/ipv6/sit.c |
90356 | +++ b/net/ipv6/sit.c | 89586 | +++ b/net/ipv6/sit.c |
90357 | @@ -74,7 +74,7 @@ static void ipip6_tunnel_setup(struct net_device *dev); | 89587 | @@ -74,7 +74,7 @@ static void ipip6_tunnel_setup(struct net_device *dev); |
@@ -90363,16 +89593,7 @@ index 02f96dc..58dd9e8 100644 | |||
90363 | 89593 | ||
90364 | static int sit_net_id __read_mostly; | 89594 | static int sit_net_id __read_mostly; |
90365 | struct sit_net { | 89595 | struct sit_net { |
90366 | @@ -624,7 +624,7 @@ static int ipip6_rcv(struct sk_buff *skb) | 89596 | @@ -1453,7 +1453,7 @@ static const struct nla_policy ipip6_policy[IFLA_IPTUN_MAX + 1] = { |
90367 | tunnel->dev->stats.rx_errors++; | ||
90368 | goto out; | ||
90369 | } | ||
90370 | - } else { | ||
90371 | + } else if (!(tunnel->dev->flags&IFF_POINTOPOINT)) { | ||
90372 | if (is_spoofed_6rd(tunnel, iph->saddr, | ||
90373 | &ipv6_hdr(skb)->saddr) || | ||
90374 | is_spoofed_6rd(tunnel, iph->daddr, | ||
90375 | @@ -1486,7 +1486,7 @@ static const struct nla_policy ipip6_policy[IFLA_IPTUN_MAX + 1] = { | ||
90376 | #endif | 89597 | #endif |
90377 | }; | 89598 | }; |
90378 | 89599 | ||
@@ -90395,7 +89616,7 @@ index e85c48b..b8268d3 100644 | |||
90395 | struct ctl_table *ipv6_icmp_table; | 89616 | struct ctl_table *ipv6_icmp_table; |
90396 | int err; | 89617 | int err; |
90397 | diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c | 89618 | diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c |
90398 | index 0fce928..c52a518 100644 | 89619 | index 0a17ed9..2526cc3 100644 |
90399 | --- a/net/ipv6/tcp_ipv6.c | 89620 | --- a/net/ipv6/tcp_ipv6.c |
90400 | +++ b/net/ipv6/tcp_ipv6.c | 89621 | +++ b/net/ipv6/tcp_ipv6.c |
90401 | @@ -103,6 +103,10 @@ static void inet6_sk_rx_dst_set(struct sock *sk, const struct sk_buff *skb) | 89622 | @@ -103,6 +103,10 @@ static void inet6_sk_rx_dst_set(struct sock *sk, const struct sk_buff *skb) |
@@ -90409,7 +89630,7 @@ index 0fce928..c52a518 100644 | |||
90409 | static void tcp_v6_hash(struct sock *sk) | 89630 | static void tcp_v6_hash(struct sock *sk) |
90410 | { | 89631 | { |
90411 | if (sk->sk_state != TCP_CLOSE) { | 89632 | if (sk->sk_state != TCP_CLOSE) { |
90412 | @@ -1446,6 +1450,9 @@ static int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb) | 89633 | @@ -1398,6 +1402,9 @@ static int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb) |
90413 | return 0; | 89634 | return 0; |
90414 | 89635 | ||
90415 | reset: | 89636 | reset: |
@@ -90419,7 +89640,7 @@ index 0fce928..c52a518 100644 | |||
90419 | tcp_v6_send_reset(sk, skb); | 89640 | tcp_v6_send_reset(sk, skb); |
90420 | discard: | 89641 | discard: |
90421 | if (opt_skb) | 89642 | if (opt_skb) |
90422 | @@ -1527,12 +1534,20 @@ static int tcp_v6_rcv(struct sk_buff *skb) | 89643 | @@ -1480,12 +1487,20 @@ static int tcp_v6_rcv(struct sk_buff *skb) |
90423 | TCP_SKB_CB(skb)->sacked = 0; | 89644 | TCP_SKB_CB(skb)->sacked = 0; |
90424 | 89645 | ||
90425 | sk = __inet6_lookup_skb(&tcp_hashinfo, skb, th->source, th->dest); | 89646 | sk = __inet6_lookup_skb(&tcp_hashinfo, skb, th->source, th->dest); |
@@ -90442,7 +89663,7 @@ index 0fce928..c52a518 100644 | |||
90442 | 89663 | ||
90443 | if (hdr->hop_limit < inet6_sk(sk)->min_hopcount) { | 89664 | if (hdr->hop_limit < inet6_sk(sk)->min_hopcount) { |
90444 | NET_INC_STATS_BH(net, LINUX_MIB_TCPMINTTLDROP); | 89665 | NET_INC_STATS_BH(net, LINUX_MIB_TCPMINTTLDROP); |
90445 | @@ -1581,6 +1596,10 @@ no_tcp_socket: | 89666 | @@ -1536,6 +1551,10 @@ csum_error: |
90446 | bad_packet: | 89667 | bad_packet: |
90447 | TCP_INC_STATS_BH(net, TCP_MIB_INERRS); | 89668 | TCP_INC_STATS_BH(net, TCP_MIB_INERRS); |
90448 | } else { | 89669 | } else { |
@@ -90454,7 +89675,7 @@ index 0fce928..c52a518 100644 | |||
90454 | } | 89675 | } |
90455 | 89676 | ||
90456 | diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c | 89677 | diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c |
90457 | index 27f0f8e..a8928b5 100644 | 89678 | index e7b28f9..d09c290 100644 |
90458 | --- a/net/ipv6/udp.c | 89679 | --- a/net/ipv6/udp.c |
90459 | +++ b/net/ipv6/udp.c | 89680 | +++ b/net/ipv6/udp.c |
90460 | @@ -52,6 +52,10 @@ | 89681 | @@ -52,6 +52,10 @@ |
@@ -90477,8 +89698,8 @@ index 27f0f8e..a8928b5 100644 | |||
90477 | if (is_udp4) | 89698 | if (is_udp4) |
90478 | UDP_INC_STATS_USER(sock_net(sk), | 89699 | UDP_INC_STATS_USER(sock_net(sk), |
90479 | UDP_MIB_INERRORS, | 89700 | UDP_MIB_INERRORS, |
90480 | @@ -657,7 +661,7 @@ int udpv6_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) | 89701 | @@ -665,7 +669,7 @@ csum_error: |
90481 | return rc; | 89702 | UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_CSUMERRORS, is_udplite); |
90482 | drop: | 89703 | drop: |
90483 | UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite); | 89704 | UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite); |
90484 | - atomic_inc(&sk->sk_drops); | 89705 | - atomic_inc(&sk->sk_drops); |
@@ -90486,7 +89707,7 @@ index 27f0f8e..a8928b5 100644 | |||
90486 | kfree_skb(skb); | 89707 | kfree_skb(skb); |
90487 | return -1; | 89708 | return -1; |
90488 | } | 89709 | } |
90489 | @@ -715,7 +719,7 @@ static void flush_stack(struct sock **stack, unsigned int count, | 89710 | @@ -723,7 +727,7 @@ static void flush_stack(struct sock **stack, unsigned int count, |
90490 | if (likely(skb1 == NULL)) | 89711 | if (likely(skb1 == NULL)) |
90491 | skb1 = (i == final) ? skb : skb_clone(skb, GFP_ATOMIC); | 89712 | skb1 = (i == final) ? skb : skb_clone(skb, GFP_ATOMIC); |
90492 | if (!skb1) { | 89713 | if (!skb1) { |
@@ -90495,8 +89716,8 @@ index 27f0f8e..a8928b5 100644 | |||
90495 | UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_RCVBUFERRORS, | 89716 | UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_RCVBUFERRORS, |
90496 | IS_UDPLITE(sk)); | 89717 | IS_UDPLITE(sk)); |
90497 | UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, | 89718 | UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, |
90498 | @@ -852,6 +856,9 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct udp_table *udptable, | 89719 | @@ -860,6 +864,9 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct udp_table *udptable, |
90499 | goto discard; | 89720 | goto csum_error; |
90500 | 89721 | ||
90501 | UDP6_INC_STATS_BH(net, UDP_MIB_NOPORTS, proto == IPPROTO_UDPLITE); | 89722 | UDP6_INC_STATS_BH(net, UDP_MIB_NOPORTS, proto == IPPROTO_UDPLITE); |
90502 | +#ifdef CONFIG_GRKERNSEC_BLACKHOLE | 89723 | +#ifdef CONFIG_GRKERNSEC_BLACKHOLE |
@@ -90505,25 +89726,7 @@ index 27f0f8e..a8928b5 100644 | |||
90505 | icmpv6_send(skb, ICMPV6_DEST_UNREACH, ICMPV6_PORT_UNREACH, 0); | 89726 | icmpv6_send(skb, ICMPV6_DEST_UNREACH, ICMPV6_PORT_UNREACH, 0); |
90506 | 89727 | ||
90507 | kfree_skb(skb); | 89728 | kfree_skb(skb); |
90508 | @@ -945,11 +952,16 @@ static int udp_v6_push_pending_frames(struct sock *sk) | 89729 | @@ -1392,7 +1399,7 @@ static void udp6_sock_seq_show(struct seq_file *seq, struct sock *sp, int bucket |
90509 | struct udphdr *uh; | ||
90510 | struct udp_sock *up = udp_sk(sk); | ||
90511 | struct inet_sock *inet = inet_sk(sk); | ||
90512 | - struct flowi6 *fl6 = &inet->cork.fl.u.ip6; | ||
90513 | + struct flowi6 *fl6; | ||
90514 | int err = 0; | ||
90515 | int is_udplite = IS_UDPLITE(sk); | ||
90516 | __wsum csum = 0; | ||
90517 | |||
90518 | + if (up->pending == AF_INET) | ||
90519 | + return udp_push_pending_frames(sk); | ||
90520 | + | ||
90521 | + fl6 = &inet->cork.fl.u.ip6; | ||
90522 | + | ||
90523 | /* Grab the skbuff where UDP header space exists. */ | ||
90524 | if ((skb = skb_peek(&sk->sk_write_queue)) == NULL) | ||
90525 | goto out; | ||
90526 | @@ -1377,7 +1389,7 @@ static void udp6_sock_seq_show(struct seq_file *seq, struct sock *sp, int bucket | ||
90527 | 0, | 89730 | 0, |
90528 | sock_i_ino(sp), | 89731 | sock_i_ino(sp), |
90529 | atomic_read(&sp->sk_refcnt), sp, | 89732 | atomic_read(&sp->sk_refcnt), sp, |
@@ -90572,7 +89775,7 @@ index 23ed03d..465a71d 100644 | |||
90572 | return -ENOMEM; | 89775 | return -ENOMEM; |
90573 | } | 89776 | } |
90574 | diff --git a/net/irda/ircomm/ircomm_tty.c b/net/irda/ircomm/ircomm_tty.c | 89777 | diff --git a/net/irda/ircomm/ircomm_tty.c b/net/irda/ircomm/ircomm_tty.c |
90575 | index 362ba47..66196f4 100644 | 89778 | index 41ac7938..75e3bb1 100644 |
90576 | --- a/net/irda/ircomm/ircomm_tty.c | 89779 | --- a/net/irda/ircomm/ircomm_tty.c |
90577 | +++ b/net/irda/ircomm/ircomm_tty.c | 89780 | +++ b/net/irda/ircomm/ircomm_tty.c |
90578 | @@ -319,11 +319,11 @@ static int ircomm_tty_block_til_ready(struct ircomm_tty_cb *self, | 89781 | @@ -319,11 +319,11 @@ static int ircomm_tty_block_til_ready(struct ircomm_tty_cb *self, |
@@ -90646,21 +89849,8 @@ index 362ba47..66196f4 100644 | |||
90646 | seq_printf(m, "Max data size: %d\n", self->max_data_size); | 89849 | seq_printf(m, "Max data size: %d\n", self->max_data_size); |
90647 | seq_printf(m, "Max header size: %d\n", self->max_header_size); | 89850 | seq_printf(m, "Max header size: %d\n", self->max_header_size); |
90648 | 89851 | ||
90649 | diff --git a/net/irda/irlap_frame.c b/net/irda/irlap_frame.c | ||
90650 | index 8c00416..9ea0c93 100644 | ||
90651 | --- a/net/irda/irlap_frame.c | ||
90652 | +++ b/net/irda/irlap_frame.c | ||
90653 | @@ -544,7 +544,7 @@ static void irlap_recv_discovery_xid_cmd(struct irlap_cb *self, | ||
90654 | /* | ||
90655 | * We now have some discovery info to deliver! | ||
90656 | */ | ||
90657 | - discovery = kmalloc(sizeof(discovery_t), GFP_ATOMIC); | ||
90658 | + discovery = kzalloc(sizeof(discovery_t), GFP_ATOMIC); | ||
90659 | if (!discovery) { | ||
90660 | IRDA_WARNING("%s: unable to malloc!\n", __func__); | ||
90661 | return; | ||
90662 | diff --git a/net/iucv/af_iucv.c b/net/iucv/af_iucv.c | 89852 | diff --git a/net/iucv/af_iucv.c b/net/iucv/af_iucv.c |
90663 | index 206ce6d..cfb27cd 100644 | 89853 | index ae69165..c8b82d8 100644 |
90664 | --- a/net/iucv/af_iucv.c | 89854 | --- a/net/iucv/af_iucv.c |
90665 | +++ b/net/iucv/af_iucv.c | 89855 | +++ b/net/iucv/af_iucv.c |
90666 | @@ -773,10 +773,10 @@ static int iucv_sock_autobind(struct sock *sk) | 89856 | @@ -773,10 +773,10 @@ static int iucv_sock_autobind(struct sock *sk) |
@@ -90690,26 +89880,10 @@ index 4fe76ff..426a904 100644 | |||
90690 | }; | 89880 | }; |
90691 | 89881 | ||
90692 | diff --git a/net/key/af_key.c b/net/key/af_key.c | 89882 | diff --git a/net/key/af_key.c b/net/key/af_key.c |
90693 | index 5b1e5af..1b929e7 100644 | 89883 | index 9da8620..97070ad 100644 |
90694 | --- a/net/key/af_key.c | 89884 | --- a/net/key/af_key.c |
90695 | +++ b/net/key/af_key.c | 89885 | +++ b/net/key/af_key.c |
90696 | @@ -1710,6 +1710,7 @@ static int key_notify_sa_flush(const struct km_event *c) | 89886 | @@ -3047,10 +3047,10 @@ static int pfkey_send_policy_notify(struct xfrm_policy *xp, int dir, const struc |
90697 | hdr->sadb_msg_version = PF_KEY_V2; | ||
90698 | hdr->sadb_msg_errno = (uint8_t) 0; | ||
90699 | hdr->sadb_msg_len = (sizeof(struct sadb_msg) / sizeof(uint64_t)); | ||
90700 | + hdr->sadb_msg_reserved = 0; | ||
90701 | |||
90702 | pfkey_broadcast(skb, GFP_ATOMIC, BROADCAST_ALL, NULL, c->net); | ||
90703 | |||
90704 | @@ -2695,6 +2696,7 @@ static int key_notify_policy_flush(const struct km_event *c) | ||
90705 | hdr->sadb_msg_errno = (uint8_t) 0; | ||
90706 | hdr->sadb_msg_satype = SADB_SATYPE_UNSPEC; | ||
90707 | hdr->sadb_msg_len = (sizeof(struct sadb_msg) / sizeof(uint64_t)); | ||
90708 | + hdr->sadb_msg_reserved = 0; | ||
90709 | pfkey_broadcast(skb_out, GFP_ATOMIC, BROADCAST_ALL, NULL, c->net); | ||
90710 | return 0; | ||
90711 | |||
90712 | @@ -3041,10 +3043,10 @@ static int pfkey_send_policy_notify(struct xfrm_policy *xp, int dir, const struc | ||
90713 | static u32 get_acqseq(void) | 89887 | static u32 get_acqseq(void) |
90714 | { | 89888 | { |
90715 | u32 res; | 89889 | u32 res; |
@@ -90722,34 +89896,20 @@ index 5b1e5af..1b929e7 100644 | |||
90722 | } while (!res); | 89896 | } while (!res); |
90723 | return res; | 89897 | return res; |
90724 | } | 89898 | } |
90725 | diff --git a/net/l2tp/l2tp_ppp.c b/net/l2tp/l2tp_ppp.c | ||
90726 | index 8dec687..5ebee2d 100644 | ||
90727 | --- a/net/l2tp/l2tp_ppp.c | ||
90728 | +++ b/net/l2tp/l2tp_ppp.c | ||
90729 | @@ -1793,7 +1793,8 @@ static const struct proto_ops pppol2tp_ops = { | ||
90730 | |||
90731 | static const struct pppox_proto pppol2tp_proto = { | ||
90732 | .create = pppol2tp_create, | ||
90733 | - .ioctl = pppol2tp_ioctl | ||
90734 | + .ioctl = pppol2tp_ioctl, | ||
90735 | + .owner = THIS_MODULE, | ||
90736 | }; | ||
90737 | |||
90738 | #ifdef CONFIG_L2TP_V3 | ||
90739 | diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c | 89899 | diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c |
90740 | index 843d8c4..cb04fa1 100644 | 89900 | index 4fdb306e..920086a 100644 |
90741 | --- a/net/mac80211/cfg.c | 89901 | --- a/net/mac80211/cfg.c |
90742 | +++ b/net/mac80211/cfg.c | 89902 | +++ b/net/mac80211/cfg.c |
90743 | @@ -799,7 +799,7 @@ static int ieee80211_set_monitor_channel(struct wiphy *wiphy, | 89903 | @@ -804,7 +804,7 @@ static int ieee80211_set_monitor_channel(struct wiphy *wiphy, |
90744 | ret = ieee80211_vif_use_channel(sdata, chandef, | 89904 | ret = ieee80211_vif_use_channel(sdata, chandef, |
90745 | IEEE80211_CHANCTX_EXCLUSIVE); | 89905 | IEEE80211_CHANCTX_EXCLUSIVE); |
90746 | } | 89906 | } |
90747 | - } else if (local->open_count == local->monitors) { | 89907 | - } else if (local->open_count == local->monitors) { |
90748 | + } else if (local_read(&local->open_count) == local->monitors) { | 89908 | + } else if (local_read(&local->open_count) == local->monitors) { |
90749 | local->_oper_channel = chandef->chan; | 89909 | local->_oper_chandef = *chandef; |
90750 | local->_oper_channel_type = cfg80211_get_chandef_type(chandef); | ||
90751 | ieee80211_hw_config(local, 0); | 89910 | ieee80211_hw_config(local, 0); |
90752 | @@ -2834,7 +2834,7 @@ static void ieee80211_mgmt_frame_register(struct wiphy *wiphy, | 89911 | } |
89912 | @@ -2920,7 +2920,7 @@ static void ieee80211_mgmt_frame_register(struct wiphy *wiphy, | ||
90753 | else | 89913 | else |
90754 | local->probe_req_reg--; | 89914 | local->probe_req_reg--; |
90755 | 89915 | ||
@@ -90758,7 +89918,7 @@ index 843d8c4..cb04fa1 100644 | |||
90758 | break; | 89918 | break; |
90759 | 89919 | ||
90760 | ieee80211_queue_work(&local->hw, &local->reconfig_filter); | 89920 | ieee80211_queue_work(&local->hw, &local->reconfig_filter); |
90761 | @@ -3297,8 +3297,8 @@ static int ieee80211_cfg_get_channel(struct wiphy *wiphy, | 89921 | @@ -3383,8 +3383,8 @@ static int ieee80211_cfg_get_channel(struct wiphy *wiphy, |
90762 | if (chanctx_conf) { | 89922 | if (chanctx_conf) { |
90763 | *chandef = chanctx_conf->def; | 89923 | *chandef = chanctx_conf->def; |
90764 | ret = 0; | 89924 | ret = 0; |
@@ -90770,7 +89930,7 @@ index 843d8c4..cb04fa1 100644 | |||
90770 | if (local->use_chanctx) | 89930 | if (local->use_chanctx) |
90771 | *chandef = local->monitor_chandef; | 89931 | *chandef = local->monitor_chandef; |
90772 | diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h | 89932 | diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h |
90773 | index 4e74cd6..963b8a1 100644 | 89933 | index 9ca8e32..48e4a9b 100644 |
90774 | --- a/net/mac80211/ieee80211_i.h | 89934 | --- a/net/mac80211/ieee80211_i.h |
90775 | +++ b/net/mac80211/ieee80211_i.h | 89935 | +++ b/net/mac80211/ieee80211_i.h |
90776 | @@ -28,6 +28,7 @@ | 89936 | @@ -28,6 +28,7 @@ |
@@ -90781,7 +89941,7 @@ index 4e74cd6..963b8a1 100644 | |||
90781 | #include "key.h" | 89941 | #include "key.h" |
90782 | #include "sta_info.h" | 89942 | #include "sta_info.h" |
90783 | #include "debug.h" | 89943 | #include "debug.h" |
90784 | @@ -897,7 +898,7 @@ struct ieee80211_local { | 89944 | @@ -891,7 +892,7 @@ struct ieee80211_local { |
90785 | /* also used to protect ampdu_ac_queue and amdpu_ac_stop_refcnt */ | 89945 | /* also used to protect ampdu_ac_queue and amdpu_ac_stop_refcnt */ |
90786 | spinlock_t queue_stop_reason_lock; | 89946 | spinlock_t queue_stop_reason_lock; |
90787 | 89947 | ||
@@ -90791,10 +89951,10 @@ index 4e74cd6..963b8a1 100644 | |||
90791 | /* number of interfaces with corresponding FIF_ flags */ | 89951 | /* number of interfaces with corresponding FIF_ flags */ |
90792 | int fif_fcsfail, fif_plcpfail, fif_control, fif_other_bss, fif_pspoll, | 89952 | int fif_fcsfail, fif_plcpfail, fif_control, fif_other_bss, fif_pspoll, |
90793 | diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c | 89953 | diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c |
90794 | index 9cbebc2..14879bb 100644 | 89954 | index 514e90f..56f22bf 100644 |
90795 | --- a/net/mac80211/iface.c | 89955 | --- a/net/mac80211/iface.c |
90796 | +++ b/net/mac80211/iface.c | 89956 | +++ b/net/mac80211/iface.c |
90797 | @@ -495,7 +495,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up) | 89957 | @@ -502,7 +502,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up) |
90798 | break; | 89958 | break; |
90799 | } | 89959 | } |
90800 | 89960 | ||
@@ -90803,7 +89963,7 @@ index 9cbebc2..14879bb 100644 | |||
90803 | res = drv_start(local); | 89963 | res = drv_start(local); |
90804 | if (res) | 89964 | if (res) |
90805 | goto err_del_bss; | 89965 | goto err_del_bss; |
90806 | @@ -540,7 +540,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up) | 89966 | @@ -545,7 +545,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up) |
90807 | break; | 89967 | break; |
90808 | } | 89968 | } |
90809 | 89969 | ||
@@ -90812,7 +89972,7 @@ index 9cbebc2..14879bb 100644 | |||
90812 | res = ieee80211_add_virtual_monitor(local); | 89972 | res = ieee80211_add_virtual_monitor(local); |
90813 | if (res) | 89973 | if (res) |
90814 | goto err_stop; | 89974 | goto err_stop; |
90815 | @@ -649,7 +649,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up) | 89975 | @@ -653,7 +653,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up) |
90816 | atomic_inc(&local->iff_promiscs); | 89976 | atomic_inc(&local->iff_promiscs); |
90817 | 89977 | ||
90818 | if (coming_up) | 89978 | if (coming_up) |
@@ -90821,7 +89981,7 @@ index 9cbebc2..14879bb 100644 | |||
90821 | 89981 | ||
90822 | if (hw_reconf_flags) | 89982 | if (hw_reconf_flags) |
90823 | ieee80211_hw_config(local, hw_reconf_flags); | 89983 | ieee80211_hw_config(local, hw_reconf_flags); |
90824 | @@ -663,7 +663,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up) | 89984 | @@ -691,7 +691,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up) |
90825 | err_del_interface: | 89985 | err_del_interface: |
90826 | drv_remove_interface(local, sdata); | 89986 | drv_remove_interface(local, sdata); |
90827 | err_stop: | 89987 | err_stop: |
@@ -90830,7 +89990,7 @@ index 9cbebc2..14879bb 100644 | |||
90830 | drv_stop(local); | 89990 | drv_stop(local); |
90831 | err_del_bss: | 89991 | err_del_bss: |
90832 | sdata->bss = NULL; | 89992 | sdata->bss = NULL; |
90833 | @@ -806,7 +806,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, | 89993 | @@ -828,7 +828,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, |
90834 | } | 89994 | } |
90835 | 89995 | ||
90836 | if (going_down) | 89996 | if (going_down) |
@@ -90839,29 +89999,38 @@ index 9cbebc2..14879bb 100644 | |||
90839 | 89999 | ||
90840 | switch (sdata->vif.type) { | 90000 | switch (sdata->vif.type) { |
90841 | case NL80211_IFTYPE_AP_VLAN: | 90001 | case NL80211_IFTYPE_AP_VLAN: |
90842 | @@ -871,7 +871,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, | 90002 | @@ -895,7 +895,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, |
90003 | } | ||
90004 | spin_unlock_irqrestore(&local->queue_stop_reason_lock, flags); | ||
90005 | |||
90006 | - if (local->open_count == 0) | ||
90007 | + if (local_read(&local->open_count) == 0) | ||
90008 | ieee80211_clear_tx_pending(local); | ||
90009 | |||
90010 | /* | ||
90011 | @@ -931,7 +931,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, | ||
90843 | 90012 | ||
90844 | ieee80211_recalc_ps(local, -1); | 90013 | ieee80211_recalc_ps(local, -1); |
90845 | 90014 | ||
90846 | - if (local->open_count == 0) { | 90015 | - if (local->open_count == 0) { |
90847 | + if (local_read(&local->open_count) == 0) { | 90016 | + if (local_read(&local->open_count) == 0) { |
90848 | if (local->ops->napi_poll) | 90017 | ieee80211_stop_device(local); |
90849 | napi_disable(&local->napi); | ||
90850 | ieee80211_clear_tx_pending(local); | ||
90851 | @@ -897,7 +897,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, | ||
90852 | } | ||
90853 | spin_unlock_irqrestore(&local->queue_stop_reason_lock, flags); | ||
90854 | 90018 | ||
90855 | - if (local->monitors == local->open_count && local->monitors > 0) | 90019 | /* no reconfiguring after stop! */ |
90856 | + if (local->monitors == local_read(&local->open_count) && local->monitors > 0) | 90020 | @@ -942,7 +942,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, |
90021 | ieee80211_configure_filter(local); | ||
90022 | ieee80211_hw_config(local, hw_reconf_flags); | ||
90023 | |||
90024 | - if (local->monitors == local->open_count) | ||
90025 | + if (local->monitors == local_read(&local->open_count)) | ||
90857 | ieee80211_add_virtual_monitor(local); | 90026 | ieee80211_add_virtual_monitor(local); |
90858 | } | 90027 | } |
90859 | 90028 | ||
90860 | diff --git a/net/mac80211/main.c b/net/mac80211/main.c | 90029 | diff --git a/net/mac80211/main.c b/net/mac80211/main.c |
90861 | index 1a8591b..ef5db54 100644 | 90030 | index 8a7bfc4..4407cd0 100644 |
90862 | --- a/net/mac80211/main.c | 90031 | --- a/net/mac80211/main.c |
90863 | +++ b/net/mac80211/main.c | 90032 | +++ b/net/mac80211/main.c |
90864 | @@ -180,7 +180,7 @@ int ieee80211_hw_config(struct ieee80211_local *local, u32 changed) | 90033 | @@ -181,7 +181,7 @@ int ieee80211_hw_config(struct ieee80211_local *local, u32 changed) |
90865 | changed &= ~(IEEE80211_CONF_CHANGE_CHANNEL | | 90034 | changed &= ~(IEEE80211_CONF_CHANGE_CHANNEL | |
90866 | IEEE80211_CONF_CHANGE_POWER); | 90035 | IEEE80211_CONF_CHANGE_POWER); |
90867 | 90036 | ||
@@ -90871,19 +90040,19 @@ index 1a8591b..ef5db54 100644 | |||
90871 | /* | 90040 | /* |
90872 | * Goal: | 90041 | * Goal: |
90873 | diff --git a/net/mac80211/pm.c b/net/mac80211/pm.c | 90042 | diff --git a/net/mac80211/pm.c b/net/mac80211/pm.c |
90874 | index 835584c..be46e67 100644 | 90043 | index 7fc5d0d..07ea536 100644 |
90875 | --- a/net/mac80211/pm.c | 90044 | --- a/net/mac80211/pm.c |
90876 | +++ b/net/mac80211/pm.c | 90045 | +++ b/net/mac80211/pm.c |
90877 | @@ -33,7 +33,7 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan) | 90046 | @@ -12,7 +12,7 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan) |
90047 | struct ieee80211_sub_if_data *sdata; | ||
90878 | struct sta_info *sta; | 90048 | struct sta_info *sta; |
90879 | struct ieee80211_chanctx *ctx; | ||
90880 | 90049 | ||
90881 | - if (!local->open_count) | 90050 | - if (!local->open_count) |
90882 | + if (!local_read(&local->open_count)) | 90051 | + if (!local_read(&local->open_count)) |
90883 | goto suspend; | 90052 | goto suspend; |
90884 | 90053 | ||
90885 | ieee80211_scan_cancel(local); | 90054 | ieee80211_scan_cancel(local); |
90886 | @@ -75,7 +75,7 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan) | 90055 | @@ -59,7 +59,7 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan) |
90887 | cancel_work_sync(&local->dynamic_ps_enable_work); | 90056 | cancel_work_sync(&local->dynamic_ps_enable_work); |
90888 | del_timer_sync(&local->dynamic_ps_timer); | 90057 | del_timer_sync(&local->dynamic_ps_timer); |
90889 | 90058 | ||
@@ -90892,8 +90061,8 @@ index 835584c..be46e67 100644 | |||
90892 | if (local->wowlan) { | 90061 | if (local->wowlan) { |
90893 | int err = drv_suspend(local, wowlan); | 90062 | int err = drv_suspend(local, wowlan); |
90894 | if (err < 0) { | 90063 | if (err < 0) { |
90895 | @@ -214,7 +214,7 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan) | 90064 | @@ -113,7 +113,7 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan) |
90896 | mutex_unlock(&local->chanctx_mtx); | 90065 | WARN_ON(!list_empty(&local->chanctx_list)); |
90897 | 90066 | ||
90898 | /* stop hardware - this must stop RX */ | 90067 | /* stop hardware - this must stop RX */ |
90899 | - if (local->open_count) | 90068 | - if (local->open_count) |
@@ -90902,10 +90071,10 @@ index 835584c..be46e67 100644 | |||
90902 | 90071 | ||
90903 | suspend: | 90072 | suspend: |
90904 | diff --git a/net/mac80211/rate.c b/net/mac80211/rate.c | 90073 | diff --git a/net/mac80211/rate.c b/net/mac80211/rate.c |
90905 | index dd88381..eef4dd6 100644 | 90074 | index a02bef3..f2f38dd 100644 |
90906 | --- a/net/mac80211/rate.c | 90075 | --- a/net/mac80211/rate.c |
90907 | +++ b/net/mac80211/rate.c | 90076 | +++ b/net/mac80211/rate.c |
90908 | @@ -493,7 +493,7 @@ int ieee80211_init_rate_ctrl_alg(struct ieee80211_local *local, | 90077 | @@ -712,7 +712,7 @@ int ieee80211_init_rate_ctrl_alg(struct ieee80211_local *local, |
90909 | 90078 | ||
90910 | ASSERT_RTNL(); | 90079 | ASSERT_RTNL(); |
90911 | 90080 | ||
@@ -90928,10 +90097,10 @@ index c97a065..ff61928 100644 | |||
90928 | 90097 | ||
90929 | return p; | 90098 | return p; |
90930 | diff --git a/net/mac80211/util.c b/net/mac80211/util.c | 90099 | diff --git a/net/mac80211/util.c b/net/mac80211/util.c |
90931 | index 1f4b908..c4def45 100644 | 90100 | index 72e6292..e6319eb 100644 |
90932 | --- a/net/mac80211/util.c | 90101 | --- a/net/mac80211/util.c |
90933 | +++ b/net/mac80211/util.c | 90102 | +++ b/net/mac80211/util.c |
90934 | @@ -1388,7 +1388,7 @@ int ieee80211_reconfig(struct ieee80211_local *local) | 90103 | @@ -1472,7 +1472,7 @@ int ieee80211_reconfig(struct ieee80211_local *local) |
90935 | } | 90104 | } |
90936 | #endif | 90105 | #endif |
90937 | /* everything else happens only if HW was up & running */ | 90106 | /* everything else happens only if HW was up & running */ |
@@ -90940,6 +90109,15 @@ index 1f4b908..c4def45 100644 | |||
90940 | goto wake_up; | 90109 | goto wake_up; |
90941 | 90110 | ||
90942 | /* | 90111 | /* |
90112 | @@ -1696,7 +1696,7 @@ int ieee80211_reconfig(struct ieee80211_local *local) | ||
90113 | local->in_reconfig = false; | ||
90114 | barrier(); | ||
90115 | |||
90116 | - if (local->monitors == local->open_count && local->monitors > 0) | ||
90117 | + if (local->monitors == local_read(&local->open_count) && local->monitors > 0) | ||
90118 | ieee80211_add_virtual_monitor(local); | ||
90119 | |||
90120 | /* | ||
90943 | diff --git a/net/netfilter/Kconfig b/net/netfilter/Kconfig | 90121 | diff --git a/net/netfilter/Kconfig b/net/netfilter/Kconfig |
90944 | index 56d22ca..87c778f 100644 | 90122 | index 56d22ca..87c778f 100644 |
90945 | --- a/net/netfilter/Kconfig | 90123 | --- a/net/netfilter/Kconfig |
@@ -90974,10 +90152,10 @@ index a1abf87..dbcb7ee 100644 | |||
90974 | obj-$(CONFIG_NETFILTER_XT_MATCH_HELPER) += xt_helper.o | 90152 | obj-$(CONFIG_NETFILTER_XT_MATCH_HELPER) += xt_helper.o |
90975 | obj-$(CONFIG_NETFILTER_XT_MATCH_HL) += xt_hl.o | 90153 | obj-$(CONFIG_NETFILTER_XT_MATCH_HL) += xt_hl.o |
90976 | diff --git a/net/netfilter/ipset/ip_set_core.c b/net/netfilter/ipset/ip_set_core.c | 90154 | diff --git a/net/netfilter/ipset/ip_set_core.c b/net/netfilter/ipset/ip_set_core.c |
90977 | index 1ba9dbc..e39f4ca 100644 | 90155 | index f771390..145b765 100644 |
90978 | --- a/net/netfilter/ipset/ip_set_core.c | 90156 | --- a/net/netfilter/ipset/ip_set_core.c |
90979 | +++ b/net/netfilter/ipset/ip_set_core.c | 90157 | +++ b/net/netfilter/ipset/ip_set_core.c |
90980 | @@ -1801,7 +1801,7 @@ done: | 90158 | @@ -1820,7 +1820,7 @@ done: |
90981 | return ret; | 90159 | return ret; |
90982 | } | 90160 | } |
90983 | 90161 | ||
@@ -90987,28 +90165,28 @@ index 1ba9dbc..e39f4ca 100644 | |||
90987 | .get_optmin = SO_IP_SET, | 90165 | .get_optmin = SO_IP_SET, |
90988 | .get_optmax = SO_IP_SET + 1, | 90166 | .get_optmax = SO_IP_SET + 1, |
90989 | diff --git a/net/netfilter/ipvs/ip_vs_conn.c b/net/netfilter/ipvs/ip_vs_conn.c | 90167 | diff --git a/net/netfilter/ipvs/ip_vs_conn.c b/net/netfilter/ipvs/ip_vs_conn.c |
90990 | index 704e514..d644cc2 100644 | 90168 | index a083bda..da661c3 100644 |
90991 | --- a/net/netfilter/ipvs/ip_vs_conn.c | 90169 | --- a/net/netfilter/ipvs/ip_vs_conn.c |
90992 | +++ b/net/netfilter/ipvs/ip_vs_conn.c | 90170 | +++ b/net/netfilter/ipvs/ip_vs_conn.c |
90993 | @@ -551,7 +551,7 @@ ip_vs_bind_dest(struct ip_vs_conn *cp, struct ip_vs_dest *dest) | 90171 | @@ -556,7 +556,7 @@ ip_vs_bind_dest(struct ip_vs_conn *cp, struct ip_vs_dest *dest) |
90994 | /* Increase the refcnt counter of the dest */ | 90172 | /* Increase the refcnt counter of the dest */ |
90995 | atomic_inc(&dest->refcnt); | 90173 | ip_vs_dest_hold(dest); |
90996 | 90174 | ||
90997 | - conn_flags = atomic_read(&dest->conn_flags); | 90175 | - conn_flags = atomic_read(&dest->conn_flags); |
90998 | + conn_flags = atomic_read_unchecked(&dest->conn_flags); | 90176 | + conn_flags = atomic_read_unchecked(&dest->conn_flags); |
90999 | if (cp->protocol != IPPROTO_UDP) | 90177 | if (cp->protocol != IPPROTO_UDP) |
91000 | conn_flags &= ~IP_VS_CONN_F_ONE_PACKET; | 90178 | conn_flags &= ~IP_VS_CONN_F_ONE_PACKET; |
91001 | flags = cp->flags; | 90179 | flags = cp->flags; |
91002 | @@ -895,7 +895,7 @@ ip_vs_conn_new(const struct ip_vs_conn_param *p, | 90180 | @@ -900,7 +900,7 @@ ip_vs_conn_new(const struct ip_vs_conn_param *p, |
91003 | atomic_set(&cp->refcnt, 1); | ||
91004 | 90181 | ||
90182 | cp->control = NULL; | ||
91005 | atomic_set(&cp->n_control, 0); | 90183 | atomic_set(&cp->n_control, 0); |
91006 | - atomic_set(&cp->in_pkts, 0); | 90184 | - atomic_set(&cp->in_pkts, 0); |
91007 | + atomic_set_unchecked(&cp->in_pkts, 0); | 90185 | + atomic_set_unchecked(&cp->in_pkts, 0); |
91008 | 90186 | ||
91009 | atomic_inc(&ipvs->conn_count); | 90187 | cp->packet_xmit = NULL; |
91010 | if (flags & IP_VS_CONN_F_NO_CPORT) | 90188 | cp->app = NULL; |
91011 | @@ -1174,7 +1174,7 @@ static inline int todrop_entry(struct ip_vs_conn *cp) | 90189 | @@ -1190,7 +1190,7 @@ static inline int todrop_entry(struct ip_vs_conn *cp) |
91012 | 90190 | ||
91013 | /* Don't drop the entry if its number of incoming packets is not | 90191 | /* Don't drop the entry if its number of incoming packets is not |
91014 | located in [0, 8] */ | 90192 | located in [0, 8] */ |
@@ -91018,7 +90196,7 @@ index 704e514..d644cc2 100644 | |||
91018 | 90196 | ||
91019 | if (!todrop_rate[i]) return 0; | 90197 | if (!todrop_rate[i]) return 0; |
91020 | diff --git a/net/netfilter/ipvs/ip_vs_core.c b/net/netfilter/ipvs/ip_vs_core.c | 90198 | diff --git a/net/netfilter/ipvs/ip_vs_core.c b/net/netfilter/ipvs/ip_vs_core.c |
91021 | index 61f49d2..6c8c5bc 100644 | 90199 | index 23b8eb5..48a8959 100644 |
91022 | --- a/net/netfilter/ipvs/ip_vs_core.c | 90200 | --- a/net/netfilter/ipvs/ip_vs_core.c |
91023 | +++ b/net/netfilter/ipvs/ip_vs_core.c | 90201 | +++ b/net/netfilter/ipvs/ip_vs_core.c |
91024 | @@ -559,7 +559,7 @@ int ip_vs_leave(struct ip_vs_service *svc, struct sk_buff *skb, | 90202 | @@ -559,7 +559,7 @@ int ip_vs_leave(struct ip_vs_service *svc, struct sk_buff *skb, |
@@ -91030,7 +90208,7 @@ index 61f49d2..6c8c5bc 100644 | |||
91030 | ip_vs_conn_put(cp); | 90208 | ip_vs_conn_put(cp); |
91031 | return ret; | 90209 | return ret; |
91032 | } | 90210 | } |
91033 | @@ -1689,7 +1689,7 @@ ip_vs_in(unsigned int hooknum, struct sk_buff *skb, int af) | 90211 | @@ -1711,7 +1711,7 @@ ip_vs_in(unsigned int hooknum, struct sk_buff *skb, int af) |
91034 | if (cp->flags & IP_VS_CONN_F_ONE_PACKET) | 90212 | if (cp->flags & IP_VS_CONN_F_ONE_PACKET) |
91035 | pkts = sysctl_sync_threshold(ipvs); | 90213 | pkts = sysctl_sync_threshold(ipvs); |
91036 | else | 90214 | else |
@@ -91040,19 +90218,19 @@ index 61f49d2..6c8c5bc 100644 | |||
91040 | if (ipvs->sync_state & IP_VS_STATE_MASTER) | 90218 | if (ipvs->sync_state & IP_VS_STATE_MASTER) |
91041 | ip_vs_sync_conn(net, cp, pkts); | 90219 | ip_vs_sync_conn(net, cp, pkts); |
91042 | diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c | 90220 | diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c |
91043 | index 9e2d1cc..6ed0748 100644 | 90221 | index 9e6c2a0..28552e2 100644 |
91044 | --- a/net/netfilter/ipvs/ip_vs_ctl.c | 90222 | --- a/net/netfilter/ipvs/ip_vs_ctl.c |
91045 | +++ b/net/netfilter/ipvs/ip_vs_ctl.c | 90223 | +++ b/net/netfilter/ipvs/ip_vs_ctl.c |
91046 | @@ -787,7 +787,7 @@ __ip_vs_update_dest(struct ip_vs_service *svc, struct ip_vs_dest *dest, | 90224 | @@ -789,7 +789,7 @@ __ip_vs_update_dest(struct ip_vs_service *svc, struct ip_vs_dest *dest, |
90225 | */ | ||
91047 | ip_vs_rs_hash(ipvs, dest); | 90226 | ip_vs_rs_hash(ipvs, dest); |
91048 | write_unlock_bh(&ipvs->rs_lock); | ||
91049 | } | 90227 | } |
91050 | - atomic_set(&dest->conn_flags, conn_flags); | 90228 | - atomic_set(&dest->conn_flags, conn_flags); |
91051 | + atomic_set_unchecked(&dest->conn_flags, conn_flags); | 90229 | + atomic_set_unchecked(&dest->conn_flags, conn_flags); |
91052 | 90230 | ||
91053 | /* bind the service */ | 90231 | /* bind the service */ |
91054 | if (!dest->svc) { | 90232 | if (!dest->svc) { |
91055 | @@ -1688,7 +1688,7 @@ proc_do_sync_ports(ctl_table *table, int write, | 90233 | @@ -1657,7 +1657,7 @@ proc_do_sync_ports(ctl_table *table, int write, |
91056 | * align with netns init in ip_vs_control_net_init() | 90234 | * align with netns init in ip_vs_control_net_init() |
91057 | */ | 90235 | */ |
91058 | 90236 | ||
@@ -91061,7 +90239,7 @@ index 9e2d1cc..6ed0748 100644 | |||
91061 | { | 90239 | { |
91062 | .procname = "amemthresh", | 90240 | .procname = "amemthresh", |
91063 | .maxlen = sizeof(int), | 90241 | .maxlen = sizeof(int), |
91064 | @@ -2087,7 +2087,7 @@ static int ip_vs_info_seq_show(struct seq_file *seq, void *v) | 90242 | @@ -2060,7 +2060,7 @@ static int ip_vs_info_seq_show(struct seq_file *seq, void *v) |
91065 | " %-7s %-6d %-10d %-10d\n", | 90243 | " %-7s %-6d %-10d %-10d\n", |
91066 | &dest->addr.in6, | 90244 | &dest->addr.in6, |
91067 | ntohs(dest->port), | 90245 | ntohs(dest->port), |
@@ -91070,7 +90248,7 @@ index 9e2d1cc..6ed0748 100644 | |||
91070 | atomic_read(&dest->weight), | 90248 | atomic_read(&dest->weight), |
91071 | atomic_read(&dest->activeconns), | 90249 | atomic_read(&dest->activeconns), |
91072 | atomic_read(&dest->inactconns)); | 90250 | atomic_read(&dest->inactconns)); |
91073 | @@ -2098,7 +2098,7 @@ static int ip_vs_info_seq_show(struct seq_file *seq, void *v) | 90251 | @@ -2071,7 +2071,7 @@ static int ip_vs_info_seq_show(struct seq_file *seq, void *v) |
91074 | "%-7s %-6d %-10d %-10d\n", | 90252 | "%-7s %-6d %-10d %-10d\n", |
91075 | ntohl(dest->addr.ip), | 90253 | ntohl(dest->addr.ip), |
91076 | ntohs(dest->port), | 90254 | ntohs(dest->port), |
@@ -91079,14 +90257,7 @@ index 9e2d1cc..6ed0748 100644 | |||
91079 | atomic_read(&dest->weight), | 90257 | atomic_read(&dest->weight), |
91080 | atomic_read(&dest->activeconns), | 90258 | atomic_read(&dest->activeconns), |
91081 | atomic_read(&dest->inactconns)); | 90259 | atomic_read(&dest->inactconns)); |
91082 | @@ -2562,13 +2562,14 @@ __ip_vs_get_dest_entries(struct net *net, const struct ip_vs_get_dests *get, | 90260 | @@ -2549,7 +2549,7 @@ __ip_vs_get_dest_entries(struct net *net, const struct ip_vs_get_dests *get, |
91083 | struct ip_vs_dest *dest; | ||
91084 | struct ip_vs_dest_entry entry; | ||
91085 | |||
91086 | + memset(&entry, 0, sizeof(entry)); | ||
91087 | list_for_each_entry(dest, &svc->destinations, n_list) { | ||
91088 | if (count >= get->num_dests) | ||
91089 | break; | ||
91090 | 90261 | ||
91091 | entry.addr = dest->addr.ip; | 90262 | entry.addr = dest->addr.ip; |
91092 | entry.port = dest->port; | 90263 | entry.port = dest->port; |
@@ -91095,16 +90266,16 @@ index 9e2d1cc..6ed0748 100644 | |||
91095 | entry.weight = atomic_read(&dest->weight); | 90266 | entry.weight = atomic_read(&dest->weight); |
91096 | entry.u_threshold = dest->u_threshold; | 90267 | entry.u_threshold = dest->u_threshold; |
91097 | entry.l_threshold = dest->l_threshold; | 90268 | entry.l_threshold = dest->l_threshold; |
91098 | @@ -3104,7 +3105,7 @@ static int ip_vs_genl_fill_dest(struct sk_buff *skb, struct ip_vs_dest *dest) | 90269 | @@ -3092,7 +3092,7 @@ static int ip_vs_genl_fill_dest(struct sk_buff *skb, struct ip_vs_dest *dest) |
91099 | if (nla_put(skb, IPVS_DEST_ATTR_ADDR, sizeof(dest->addr), &dest->addr) || | 90270 | if (nla_put(skb, IPVS_DEST_ATTR_ADDR, sizeof(dest->addr), &dest->addr) || |
91100 | nla_put_u16(skb, IPVS_DEST_ATTR_PORT, dest->port) || | 90271 | nla_put_be16(skb, IPVS_DEST_ATTR_PORT, dest->port) || |
91101 | nla_put_u32(skb, IPVS_DEST_ATTR_FWD_METHOD, | 90272 | nla_put_u32(skb, IPVS_DEST_ATTR_FWD_METHOD, |
91102 | - (atomic_read(&dest->conn_flags) & | 90273 | - (atomic_read(&dest->conn_flags) & |
91103 | + (atomic_read_unchecked(&dest->conn_flags) & | 90274 | + (atomic_read_unchecked(&dest->conn_flags) & |
91104 | IP_VS_CONN_F_FWD_MASK)) || | 90275 | IP_VS_CONN_F_FWD_MASK)) || |
91105 | nla_put_u32(skb, IPVS_DEST_ATTR_WEIGHT, | 90276 | nla_put_u32(skb, IPVS_DEST_ATTR_WEIGHT, |
91106 | atomic_read(&dest->weight)) || | 90277 | atomic_read(&dest->weight)) || |
91107 | @@ -3694,7 +3695,7 @@ static int __net_init ip_vs_control_net_init_sysctl(struct net *net) | 90278 | @@ -3682,7 +3682,7 @@ static int __net_init ip_vs_control_net_init_sysctl(struct net *net) |
91108 | { | 90279 | { |
91109 | int idx; | 90280 | int idx; |
91110 | struct netns_ipvs *ipvs = net_ipvs(net); | 90281 | struct netns_ipvs *ipvs = net_ipvs(net); |
@@ -91114,10 +90285,10 @@ index 9e2d1cc..6ed0748 100644 | |||
91114 | atomic_set(&ipvs->dropentry, 0); | 90285 | atomic_set(&ipvs->dropentry, 0); |
91115 | spin_lock_init(&ipvs->dropentry_lock); | 90286 | spin_lock_init(&ipvs->dropentry_lock); |
91116 | diff --git a/net/netfilter/ipvs/ip_vs_lblc.c b/net/netfilter/ipvs/ip_vs_lblc.c | 90287 | diff --git a/net/netfilter/ipvs/ip_vs_lblc.c b/net/netfilter/ipvs/ip_vs_lblc.c |
91117 | index fdd89b9..bd96aa9 100644 | 90288 | index 5ea26bd..c9bc65f 100644 |
91118 | --- a/net/netfilter/ipvs/ip_vs_lblc.c | 90289 | --- a/net/netfilter/ipvs/ip_vs_lblc.c |
91119 | +++ b/net/netfilter/ipvs/ip_vs_lblc.c | 90290 | +++ b/net/netfilter/ipvs/ip_vs_lblc.c |
91120 | @@ -115,7 +115,7 @@ struct ip_vs_lblc_table { | 90291 | @@ -118,7 +118,7 @@ struct ip_vs_lblc_table { |
91121 | * IPVS LBLC sysctl table | 90292 | * IPVS LBLC sysctl table |
91122 | */ | 90293 | */ |
91123 | #ifdef CONFIG_SYSCTL | 90294 | #ifdef CONFIG_SYSCTL |
@@ -91127,10 +90298,10 @@ index fdd89b9..bd96aa9 100644 | |||
91127 | .procname = "lblc_expiration", | 90298 | .procname = "lblc_expiration", |
91128 | .data = NULL, | 90299 | .data = NULL, |
91129 | diff --git a/net/netfilter/ipvs/ip_vs_lblcr.c b/net/netfilter/ipvs/ip_vs_lblcr.c | 90300 | diff --git a/net/netfilter/ipvs/ip_vs_lblcr.c b/net/netfilter/ipvs/ip_vs_lblcr.c |
91130 | index c03b6a3..8ce3681 100644 | 90301 | index 50123c2..067c773 100644 |
91131 | --- a/net/netfilter/ipvs/ip_vs_lblcr.c | 90302 | --- a/net/netfilter/ipvs/ip_vs_lblcr.c |
91132 | +++ b/net/netfilter/ipvs/ip_vs_lblcr.c | 90303 | +++ b/net/netfilter/ipvs/ip_vs_lblcr.c |
91133 | @@ -288,7 +288,7 @@ struct ip_vs_lblcr_table { | 90304 | @@ -299,7 +299,7 @@ struct ip_vs_lblcr_table { |
91134 | * IPVS LBLCR sysctl table | 90305 | * IPVS LBLCR sysctl table |
91135 | */ | 90306 | */ |
91136 | 90307 | ||
@@ -91140,7 +90311,7 @@ index c03b6a3..8ce3681 100644 | |||
91140 | .procname = "lblcr_expiration", | 90311 | .procname = "lblcr_expiration", |
91141 | .data = NULL, | 90312 | .data = NULL, |
91142 | diff --git a/net/netfilter/ipvs/ip_vs_sync.c b/net/netfilter/ipvs/ip_vs_sync.c | 90313 | diff --git a/net/netfilter/ipvs/ip_vs_sync.c b/net/netfilter/ipvs/ip_vs_sync.c |
91143 | index 44fd10c..2a163b3 100644 | 90314 | index f6046d9..4f10cfd 100644 |
91144 | --- a/net/netfilter/ipvs/ip_vs_sync.c | 90315 | --- a/net/netfilter/ipvs/ip_vs_sync.c |
91145 | +++ b/net/netfilter/ipvs/ip_vs_sync.c | 90316 | +++ b/net/netfilter/ipvs/ip_vs_sync.c |
91146 | @@ -596,7 +596,7 @@ static void ip_vs_sync_conn_v0(struct net *net, struct ip_vs_conn *cp, | 90317 | @@ -596,7 +596,7 @@ static void ip_vs_sync_conn_v0(struct net *net, struct ip_vs_conn *cp, |
@@ -91161,7 +90332,7 @@ index 44fd10c..2a163b3 100644 | |||
91161 | else | 90332 | else |
91162 | pkts = sysctl_sync_threshold(ipvs); | 90333 | pkts = sysctl_sync_threshold(ipvs); |
91163 | goto sloop; | 90334 | goto sloop; |
91164 | @@ -885,7 +885,7 @@ static void ip_vs_proc_conn(struct net *net, struct ip_vs_conn_param *param, | 90335 | @@ -882,7 +882,7 @@ static void ip_vs_proc_conn(struct net *net, struct ip_vs_conn_param *param, |
91165 | 90336 | ||
91166 | if (opt) | 90337 | if (opt) |
91167 | memcpy(&cp->in_seq, opt, sizeof(*opt)); | 90338 | memcpy(&cp->in_seq, opt, sizeof(*opt)); |
@@ -91171,10 +90342,10 @@ index 44fd10c..2a163b3 100644 | |||
91171 | cp->old_state = cp->state; | 90342 | cp->old_state = cp->state; |
91172 | /* | 90343 | /* |
91173 | diff --git a/net/netfilter/ipvs/ip_vs_xmit.c b/net/netfilter/ipvs/ip_vs_xmit.c | 90344 | diff --git a/net/netfilter/ipvs/ip_vs_xmit.c b/net/netfilter/ipvs/ip_vs_xmit.c |
91174 | index ee6b7a9..f9a89f6 100644 | 90345 | index b75ff64..0c51bbe 100644 |
91175 | --- a/net/netfilter/ipvs/ip_vs_xmit.c | 90346 | --- a/net/netfilter/ipvs/ip_vs_xmit.c |
91176 | +++ b/net/netfilter/ipvs/ip_vs_xmit.c | 90347 | +++ b/net/netfilter/ipvs/ip_vs_xmit.c |
91177 | @@ -1210,7 +1210,7 @@ ip_vs_icmp_xmit(struct sk_buff *skb, struct ip_vs_conn *cp, | 90348 | @@ -1102,7 +1102,7 @@ ip_vs_icmp_xmit(struct sk_buff *skb, struct ip_vs_conn *cp, |
91178 | else | 90349 | else |
91179 | rc = NF_ACCEPT; | 90350 | rc = NF_ACCEPT; |
91180 | /* do not touch skb anymore */ | 90351 | /* do not touch skb anymore */ |
@@ -91183,7 +90354,7 @@ index ee6b7a9..f9a89f6 100644 | |||
91183 | goto out; | 90354 | goto out; |
91184 | } | 90355 | } |
91185 | 90356 | ||
91186 | @@ -1332,7 +1332,7 @@ ip_vs_icmp_xmit_v6(struct sk_buff *skb, struct ip_vs_conn *cp, | 90357 | @@ -1194,7 +1194,7 @@ ip_vs_icmp_xmit_v6(struct sk_buff *skb, struct ip_vs_conn *cp, |
91187 | else | 90358 | else |
91188 | rc = NF_ACCEPT; | 90359 | rc = NF_ACCEPT; |
91189 | /* do not touch skb anymore */ | 90360 | /* do not touch skb anymore */ |
@@ -91206,10 +90377,10 @@ index 2d3030a..7ba1c0a 100644 | |||
91206 | table = kmemdup(acct_sysctl_table, sizeof(acct_sysctl_table), | 90377 | table = kmemdup(acct_sysctl_table, sizeof(acct_sysctl_table), |
91207 | GFP_KERNEL); | 90378 | GFP_KERNEL); |
91208 | diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c | 90379 | diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c |
91209 | index c8e001a..f842a8b 100644 | 90380 | index 0283bae..5febcb0 100644 |
91210 | --- a/net/netfilter/nf_conntrack_core.c | 90381 | --- a/net/netfilter/nf_conntrack_core.c |
91211 | +++ b/net/netfilter/nf_conntrack_core.c | 90382 | +++ b/net/netfilter/nf_conntrack_core.c |
91212 | @@ -1594,6 +1594,10 @@ void nf_conntrack_init_end(void) | 90383 | @@ -1614,6 +1614,10 @@ void nf_conntrack_init_end(void) |
91213 | #define DYING_NULLS_VAL ((1<<30)+1) | 90384 | #define DYING_NULLS_VAL ((1<<30)+1) |
91214 | #define TEMPLATE_NULLS_VAL ((1<<30)+2) | 90385 | #define TEMPLATE_NULLS_VAL ((1<<30)+2) |
91215 | 90386 | ||
@@ -91220,7 +90391,7 @@ index c8e001a..f842a8b 100644 | |||
91220 | int nf_conntrack_init_net(struct net *net) | 90391 | int nf_conntrack_init_net(struct net *net) |
91221 | { | 90392 | { |
91222 | int ret; | 90393 | int ret; |
91223 | @@ -1608,7 +1612,11 @@ int nf_conntrack_init_net(struct net *net) | 90394 | @@ -1628,7 +1632,11 @@ int nf_conntrack_init_net(struct net *net) |
91224 | goto err_stat; | 90395 | goto err_stat; |
91225 | } | 90396 | } |
91226 | 90397 | ||
@@ -91233,10 +90404,10 @@ index c8e001a..f842a8b 100644 | |||
91233 | ret = -ENOMEM; | 90404 | ret = -ENOMEM; |
91234 | goto err_slabname; | 90405 | goto err_slabname; |
91235 | diff --git a/net/netfilter/nf_conntrack_ecache.c b/net/netfilter/nf_conntrack_ecache.c | 90406 | diff --git a/net/netfilter/nf_conntrack_ecache.c b/net/netfilter/nf_conntrack_ecache.c |
91236 | index b5d2eb8..61ef19a 100644 | 90407 | index 1df1761..ce8b88a 100644 |
91237 | --- a/net/netfilter/nf_conntrack_ecache.c | 90408 | --- a/net/netfilter/nf_conntrack_ecache.c |
91238 | +++ b/net/netfilter/nf_conntrack_ecache.c | 90409 | +++ b/net/netfilter/nf_conntrack_ecache.c |
91239 | @@ -186,7 +186,7 @@ static struct nf_ct_ext_type event_extend __read_mostly = { | 90410 | @@ -188,7 +188,7 @@ static struct nf_ct_ext_type event_extend __read_mostly = { |
91240 | #ifdef CONFIG_SYSCTL | 90411 | #ifdef CONFIG_SYSCTL |
91241 | static int nf_conntrack_event_init_sysctl(struct net *net) | 90412 | static int nf_conntrack_event_init_sysctl(struct net *net) |
91242 | { | 90413 | { |
@@ -91246,10 +90417,10 @@ index b5d2eb8..61ef19a 100644 | |||
91246 | table = kmemdup(event_sysctl_table, sizeof(event_sysctl_table), | 90417 | table = kmemdup(event_sysctl_table, sizeof(event_sysctl_table), |
91247 | GFP_KERNEL); | 90418 | GFP_KERNEL); |
91248 | diff --git a/net/netfilter/nf_conntrack_helper.c b/net/netfilter/nf_conntrack_helper.c | 90419 | diff --git a/net/netfilter/nf_conntrack_helper.c b/net/netfilter/nf_conntrack_helper.c |
91249 | index 94b4b98..97cf0ad 100644 | 90420 | index 974a2a4..52cc6ff 100644 |
91250 | --- a/net/netfilter/nf_conntrack_helper.c | 90421 | --- a/net/netfilter/nf_conntrack_helper.c |
91251 | +++ b/net/netfilter/nf_conntrack_helper.c | 90422 | +++ b/net/netfilter/nf_conntrack_helper.c |
91252 | @@ -56,7 +56,7 @@ static struct ctl_table helper_sysctl_table[] = { | 90423 | @@ -57,7 +57,7 @@ static struct ctl_table helper_sysctl_table[] = { |
91253 | 90424 | ||
91254 | static int nf_conntrack_helper_init_sysctl(struct net *net) | 90425 | static int nf_conntrack_helper_init_sysctl(struct net *net) |
91255 | { | 90426 | { |
@@ -91259,10 +90430,10 @@ index 94b4b98..97cf0ad 100644 | |||
91259 | table = kmemdup(helper_sysctl_table, sizeof(helper_sysctl_table), | 90430 | table = kmemdup(helper_sysctl_table, sizeof(helper_sysctl_table), |
91260 | GFP_KERNEL); | 90431 | GFP_KERNEL); |
91261 | diff --git a/net/netfilter/nf_conntrack_proto.c b/net/netfilter/nf_conntrack_proto.c | 90432 | diff --git a/net/netfilter/nf_conntrack_proto.c b/net/netfilter/nf_conntrack_proto.c |
91262 | index 58ab405..50eb8d3 100644 | 90433 | index 0ab9636..cea3c6a 100644 |
91263 | --- a/net/netfilter/nf_conntrack_proto.c | 90434 | --- a/net/netfilter/nf_conntrack_proto.c |
91264 | +++ b/net/netfilter/nf_conntrack_proto.c | 90435 | +++ b/net/netfilter/nf_conntrack_proto.c |
91265 | @@ -51,7 +51,7 @@ nf_ct_register_sysctl(struct net *net, | 90436 | @@ -52,7 +52,7 @@ nf_ct_register_sysctl(struct net *net, |
91266 | 90437 | ||
91267 | static void | 90438 | static void |
91268 | nf_ct_unregister_sysctl(struct ctl_table_header **header, | 90439 | nf_ct_unregister_sysctl(struct ctl_table_header **header, |
@@ -91272,32 +90443,32 @@ index 58ab405..50eb8d3 100644 | |||
91272 | { | 90443 | { |
91273 | if (users > 0) | 90444 | if (users > 0) |
91274 | diff --git a/net/netfilter/nf_conntrack_proto_dccp.c b/net/netfilter/nf_conntrack_proto_dccp.c | 90445 | diff --git a/net/netfilter/nf_conntrack_proto_dccp.c b/net/netfilter/nf_conntrack_proto_dccp.c |
91275 | index ba65b20..2a4d937 100644 | 90446 | index a99b6c3..3841268 100644 |
91276 | --- a/net/netfilter/nf_conntrack_proto_dccp.c | 90447 | --- a/net/netfilter/nf_conntrack_proto_dccp.c |
91277 | +++ b/net/netfilter/nf_conntrack_proto_dccp.c | 90448 | +++ b/net/netfilter/nf_conntrack_proto_dccp.c |
91278 | @@ -456,7 +456,7 @@ static bool dccp_new(struct nf_conn *ct, const struct sk_buff *skb, | 90449 | @@ -457,7 +457,7 @@ static bool dccp_new(struct nf_conn *ct, const struct sk_buff *skb, |
91279 | |||
91280 | out_invalid: | 90450 | out_invalid: |
91281 | if (LOG_INVALID(net, IPPROTO_DCCP)) | 90451 | if (LOG_INVALID(net, IPPROTO_DCCP)) |
91282 | - nf_log_packet(nf_ct_l3num(ct), 0, skb, NULL, NULL, NULL, msg); | 90452 | nf_log_packet(net, nf_ct_l3num(ct), 0, skb, NULL, NULL, |
91283 | + nf_log_packet(nf_ct_l3num(ct), 0, skb, NULL, NULL, NULL, "%s", msg); | 90453 | - NULL, msg); |
90454 | + NULL, "%s", msg); | ||
91284 | return false; | 90455 | return false; |
91285 | } | 90456 | } |
91286 | 90457 | ||
91287 | @@ -613,7 +613,7 @@ static int dccp_error(struct net *net, struct nf_conn *tmpl, | 90458 | @@ -614,7 +614,7 @@ static int dccp_error(struct net *net, struct nf_conn *tmpl, |
91288 | 90459 | ||
91289 | out_invalid: | 90460 | out_invalid: |
91290 | if (LOG_INVALID(net, IPPROTO_DCCP)) | 90461 | if (LOG_INVALID(net, IPPROTO_DCCP)) |
91291 | - nf_log_packet(pf, 0, skb, NULL, NULL, NULL, msg); | 90462 | - nf_log_packet(net, pf, 0, skb, NULL, NULL, NULL, msg); |
91292 | + nf_log_packet(pf, 0, skb, NULL, NULL, NULL, "%s", msg); | 90463 | + nf_log_packet(net, pf, 0, skb, NULL, NULL, NULL, "%s", msg); |
91293 | return -NF_ACCEPT; | 90464 | return -NF_ACCEPT; |
91294 | } | 90465 | } |
91295 | 90466 | ||
91296 | diff --git a/net/netfilter/nf_conntrack_standalone.c b/net/netfilter/nf_conntrack_standalone.c | 90467 | diff --git a/net/netfilter/nf_conntrack_standalone.c b/net/netfilter/nf_conntrack_standalone.c |
91297 | index fedee39..d62a93d 100644 | 90468 | index bd700b4..4a3dc61 100644 |
91298 | --- a/net/netfilter/nf_conntrack_standalone.c | 90469 | --- a/net/netfilter/nf_conntrack_standalone.c |
91299 | +++ b/net/netfilter/nf_conntrack_standalone.c | 90470 | +++ b/net/netfilter/nf_conntrack_standalone.c |
91300 | @@ -470,7 +470,7 @@ static ctl_table nf_ct_netfilter_table[] = { | 90471 | @@ -471,7 +471,7 @@ static ctl_table nf_ct_netfilter_table[] = { |
91301 | 90472 | ||
91302 | static int nf_conntrack_standalone_init_sysctl(struct net *net) | 90473 | static int nf_conntrack_standalone_init_sysctl(struct net *net) |
91303 | { | 90474 | { |
@@ -91320,26 +90491,26 @@ index 902fb0a..87f7fdb 100644 | |||
91320 | table = kmemdup(tstamp_sysctl_table, sizeof(tstamp_sysctl_table), | 90491 | table = kmemdup(tstamp_sysctl_table, sizeof(tstamp_sysctl_table), |
91321 | GFP_KERNEL); | 90492 | GFP_KERNEL); |
91322 | diff --git a/net/netfilter/nf_log.c b/net/netfilter/nf_log.c | 90493 | diff --git a/net/netfilter/nf_log.c b/net/netfilter/nf_log.c |
91323 | index 9e31269..bc4c1b7 100644 | 90494 | index 3b18dd1..f79e0ca 100644 |
91324 | --- a/net/netfilter/nf_log.c | 90495 | --- a/net/netfilter/nf_log.c |
91325 | +++ b/net/netfilter/nf_log.c | 90496 | +++ b/net/netfilter/nf_log.c |
91326 | @@ -215,7 +215,7 @@ static const struct file_operations nflog_file_ops = { | 90497 | @@ -243,7 +243,7 @@ static const struct file_operations nflog_file_ops = { |
91327 | 90498 | ||
91328 | #ifdef CONFIG_SYSCTL | 90499 | #ifdef CONFIG_SYSCTL |
91329 | static char nf_log_sysctl_fnames[NFPROTO_NUMPROTO-NFPROTO_UNSPEC][3]; | 90500 | static char nf_log_sysctl_fnames[NFPROTO_NUMPROTO-NFPROTO_UNSPEC][3]; |
91330 | -static struct ctl_table nf_log_sysctl_table[NFPROTO_NUMPROTO+1]; | 90501 | -static struct ctl_table nf_log_sysctl_table[NFPROTO_NUMPROTO+1]; |
91331 | +static ctl_table_no_const nf_log_sysctl_table[NFPROTO_NUMPROTO+1] __read_only; | 90502 | +static ctl_table_no_const nf_log_sysctl_table[NFPROTO_NUMPROTO+1] __read_only; |
91332 | static struct ctl_table_header *nf_log_dir_header; | ||
91333 | 90503 | ||
91334 | static int nf_log_proc_dostring(ctl_table *table, int write, | 90504 | static int nf_log_proc_dostring(ctl_table *table, int write, |
91335 | @@ -246,14 +246,16 @@ static int nf_log_proc_dostring(ctl_table *table, int write, | 90505 | void __user *buffer, size_t *lenp, loff_t *ppos) |
91336 | rcu_assign_pointer(nf_loggers[tindex], logger); | 90506 | @@ -274,14 +274,16 @@ static int nf_log_proc_dostring(ctl_table *table, int write, |
90507 | rcu_assign_pointer(net->nf.nf_loggers[tindex], logger); | ||
91337 | mutex_unlock(&nf_log_mutex); | 90508 | mutex_unlock(&nf_log_mutex); |
91338 | } else { | 90509 | } else { |
91339 | + ctl_table_no_const nf_log_table = *table; | 90510 | + ctl_table_no_const nf_log_table = *table; |
91340 | + | 90511 | + |
91341 | mutex_lock(&nf_log_mutex); | 90512 | mutex_lock(&nf_log_mutex); |
91342 | logger = rcu_dereference_protected(nf_loggers[tindex], | 90513 | logger = rcu_dereference_protected(net->nf.nf_loggers[tindex], |
91343 | lockdep_is_held(&nf_log_mutex)); | 90514 | lockdep_is_held(&nf_log_mutex)); |
91344 | if (!logger) | 90515 | if (!logger) |
91345 | - table->data = "NONE"; | 90516 | - table->data = "NONE"; |
@@ -91352,22 +90523,6 @@ index 9e31269..bc4c1b7 100644 | |||
91352 | mutex_unlock(&nf_log_mutex); | 90523 | mutex_unlock(&nf_log_mutex); |
91353 | } | 90524 | } |
91354 | 90525 | ||
91355 | diff --git a/net/netfilter/nf_nat_sip.c b/net/netfilter/nf_nat_sip.c | ||
91356 | index 96ccdf7..dac11f7 100644 | ||
91357 | --- a/net/netfilter/nf_nat_sip.c | ||
91358 | +++ b/net/netfilter/nf_nat_sip.c | ||
91359 | @@ -230,9 +230,10 @@ static unsigned int nf_nat_sip(struct sk_buff *skb, unsigned int protoff, | ||
91360 | &ct->tuplehash[!dir].tuple.src.u3, | ||
91361 | false); | ||
91362 | if (!mangle_packet(skb, protoff, dataoff, dptr, datalen, | ||
91363 | - poff, plen, buffer, buflen)) | ||
91364 | + poff, plen, buffer, buflen)) { | ||
91365 | nf_ct_helper_log(skb, ct, "cannot mangle received"); | ||
91366 | return NF_DROP; | ||
91367 | + } | ||
91368 | } | ||
91369 | |||
91370 | /* The rport= parameter (RFC 3581) contains the port number | ||
91371 | diff --git a/net/netfilter/nf_sockopt.c b/net/netfilter/nf_sockopt.c | 90526 | diff --git a/net/netfilter/nf_sockopt.c b/net/netfilter/nf_sockopt.c |
91372 | index f042ae5..30ea486 100644 | 90527 | index f042ae5..30ea486 100644 |
91373 | --- a/net/netfilter/nf_sockopt.c | 90528 | --- a/net/netfilter/nf_sockopt.c |
@@ -91391,24 +90546,24 @@ index f042ae5..30ea486 100644 | |||
91391 | } | 90546 | } |
91392 | EXPORT_SYMBOL(nf_unregister_sockopt); | 90547 | EXPORT_SYMBOL(nf_unregister_sockopt); |
91393 | diff --git a/net/netfilter/nfnetlink_log.c b/net/netfilter/nfnetlink_log.c | 90548 | diff --git a/net/netfilter/nfnetlink_log.c b/net/netfilter/nfnetlink_log.c |
91394 | index f248db5..3778ad9 100644 | 90549 | index 962e979..d4ae2e9 100644 |
91395 | --- a/net/netfilter/nfnetlink_log.c | 90550 | --- a/net/netfilter/nfnetlink_log.c |
91396 | +++ b/net/netfilter/nfnetlink_log.c | 90551 | +++ b/net/netfilter/nfnetlink_log.c |
91397 | @@ -72,7 +72,7 @@ struct nfulnl_instance { | 90552 | @@ -82,7 +82,7 @@ static int nfnl_log_net_id __read_mostly; |
90553 | struct nfnl_log_net { | ||
90554 | spinlock_t instances_lock; | ||
90555 | struct hlist_head instance_table[INSTANCE_BUCKETS]; | ||
90556 | - atomic_t global_seq; | ||
90557 | + atomic_unchecked_t global_seq; | ||
91398 | }; | 90558 | }; |
91399 | 90559 | ||
91400 | static DEFINE_SPINLOCK(instances_lock); | 90560 | static struct nfnl_log_net *nfnl_log_pernet(struct net *net) |
91401 | -static atomic_t global_seq; | 90561 | @@ -559,7 +559,7 @@ __build_packet_message(struct nfnl_log_net *log, |
91402 | +static atomic_unchecked_t global_seq; | ||
91403 | |||
91404 | #define INSTANCE_BUCKETS 16 | ||
91405 | static struct hlist_head instance_table[INSTANCE_BUCKETS]; | ||
91406 | @@ -536,7 +536,7 @@ __build_packet_message(struct nfulnl_instance *inst, | ||
91407 | /* global sequence number */ | 90562 | /* global sequence number */ |
91408 | if ((inst->flags & NFULNL_CFG_F_SEQ_GLOBAL) && | 90563 | if ((inst->flags & NFULNL_CFG_F_SEQ_GLOBAL) && |
91409 | nla_put_be32(inst->skb, NFULA_SEQ_GLOBAL, | 90564 | nla_put_be32(inst->skb, NFULA_SEQ_GLOBAL, |
91410 | - htonl(atomic_inc_return(&global_seq)))) | 90565 | - htonl(atomic_inc_return(&log->global_seq)))) |
91411 | + htonl(atomic_inc_return_unchecked(&global_seq)))) | 90566 | + htonl(atomic_inc_return_unchecked(&log->global_seq)))) |
91412 | goto nla_put_failure; | 90567 | goto nla_put_failure; |
91413 | 90568 | ||
91414 | if (data_len) { | 90569 | if (data_len) { |
@@ -91504,10 +90659,10 @@ index 4fe4fb4..87a89e5 100644 | |||
91504 | return 0; | 90659 | return 0; |
91505 | } | 90660 | } |
91506 | diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c | 90661 | diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c |
91507 | index 1e3fd5b..ad397ea 100644 | 90662 | index 57ee84d..8b99cf5 100644 |
91508 | --- a/net/netlink/af_netlink.c | 90663 | --- a/net/netlink/af_netlink.c |
91509 | +++ b/net/netlink/af_netlink.c | 90664 | +++ b/net/netlink/af_netlink.c |
91510 | @@ -781,7 +781,7 @@ static void netlink_overrun(struct sock *sk) | 90665 | @@ -121,7 +121,7 @@ static void netlink_overrun(struct sock *sk) |
91511 | sk->sk_error_report(sk); | 90666 | sk->sk_error_report(sk); |
91512 | } | 90667 | } |
91513 | } | 90668 | } |
@@ -91515,8 +90670,8 @@ index 1e3fd5b..ad397ea 100644 | |||
91515 | + atomic_inc_unchecked(&sk->sk_drops); | 90670 | + atomic_inc_unchecked(&sk->sk_drops); |
91516 | } | 90671 | } |
91517 | 90672 | ||
91518 | static struct sock *netlink_getsockbyportid(struct sock *ssk, u32 portid) | 90673 | static void netlink_rcv_wake(struct sock *sk) |
91519 | @@ -2063,7 +2063,7 @@ static int netlink_seq_show(struct seq_file *seq, void *v) | 90674 | @@ -2771,7 +2771,7 @@ static int netlink_seq_show(struct seq_file *seq, void *v) |
91520 | sk_wmem_alloc_get(s), | 90675 | sk_wmem_alloc_get(s), |
91521 | nlk->cb, | 90676 | nlk->cb, |
91522 | atomic_read(&s->sk_refcnt), | 90677 | atomic_read(&s->sk_refcnt), |
@@ -91526,10 +90681,10 @@ index 1e3fd5b..ad397ea 100644 | |||
91526 | ); | 90681 | ); |
91527 | 90682 | ||
91528 | diff --git a/net/netlink/genetlink.c b/net/netlink/genetlink.c | 90683 | diff --git a/net/netlink/genetlink.c b/net/netlink/genetlink.c |
91529 | index 5a55be3..7630745 100644 | 90684 | index 2fd6dbe..1032269 100644 |
91530 | --- a/net/netlink/genetlink.c | 90685 | --- a/net/netlink/genetlink.c |
91531 | +++ b/net/netlink/genetlink.c | 90686 | +++ b/net/netlink/genetlink.c |
91532 | @@ -296,18 +296,20 @@ int genl_register_ops(struct genl_family *family, struct genl_ops *ops) | 90687 | @@ -310,18 +310,20 @@ int genl_register_ops(struct genl_family *family, struct genl_ops *ops) |
91533 | goto errout; | 90688 | goto errout; |
91534 | } | 90689 | } |
91535 | 90690 | ||
@@ -91545,41 +90700,33 @@ index 5a55be3..7630745 100644 | |||
91545 | + *(unsigned int *)&ops->flags |= GENL_CMD_CAP_HASPOL; | 90700 | + *(unsigned int *)&ops->flags |= GENL_CMD_CAP_HASPOL; |
91546 | + pax_close_kernel(); | 90701 | + pax_close_kernel(); |
91547 | 90702 | ||
91548 | genl_lock(); | 90703 | genl_lock_all(); |
91549 | - list_add_tail(&ops->ops_list, &family->ops_list); | 90704 | - list_add_tail(&ops->ops_list, &family->ops_list); |
91550 | + pax_list_add_tail((struct list_head *)&ops->ops_list, &family->ops_list); | 90705 | + pax_list_add_tail((struct list_head *)&ops->ops_list, &family->ops_list); |
91551 | genl_unlock(); | 90706 | genl_unlock_all(); |
91552 | 90707 | ||
91553 | - genl_ctrl_event(CTRL_CMD_NEWOPS, ops); | 90708 | - genl_ctrl_event(CTRL_CMD_NEWOPS, ops); |
91554 | + genl_ctrl_event(CTRL_CMD_NEWOPS, (void *)ops); | 90709 | + genl_ctrl_event(CTRL_CMD_NEWOPS, (void *)ops); |
91555 | err = 0; | 90710 | err = 0; |
91556 | errout: | 90711 | errout: |
91557 | return err; | 90712 | return err; |
91558 | @@ -337,9 +339,9 @@ int genl_unregister_ops(struct genl_family *family, struct genl_ops *ops) | 90713 | @@ -351,9 +353,9 @@ int genl_unregister_ops(struct genl_family *family, struct genl_ops *ops) |
91559 | genl_lock(); | 90714 | genl_lock_all(); |
91560 | list_for_each_entry(rc, &family->ops_list, ops_list) { | 90715 | list_for_each_entry(rc, &family->ops_list, ops_list) { |
91561 | if (rc == ops) { | 90716 | if (rc == ops) { |
91562 | - list_del(&ops->ops_list); | 90717 | - list_del(&ops->ops_list); |
91563 | + pax_list_del((struct list_head *)&ops->ops_list); | 90718 | + pax_list_del((struct list_head *)&ops->ops_list); |
91564 | genl_unlock(); | 90719 | genl_unlock_all(); |
91565 | - genl_ctrl_event(CTRL_CMD_DELOPS, ops); | 90720 | - genl_ctrl_event(CTRL_CMD_DELOPS, ops); |
91566 | + genl_ctrl_event(CTRL_CMD_DELOPS, (void *)ops); | 90721 | + genl_ctrl_event(CTRL_CMD_DELOPS, (void *)ops); |
91567 | return 0; | 90722 | return 0; |
91568 | } | 90723 | } |
91569 | } | 90724 | } |
91570 | diff --git a/net/netrom/af_netrom.c b/net/netrom/af_netrom.c | 90725 | diff --git a/net/netrom/af_netrom.c b/net/netrom/af_netrom.c |
91571 | index 103bd70..f21aad3 100644 | 90726 | index ec0c80f..41e1830 100644 |
91572 | --- a/net/netrom/af_netrom.c | 90727 | --- a/net/netrom/af_netrom.c |
91573 | +++ b/net/netrom/af_netrom.c | 90728 | +++ b/net/netrom/af_netrom.c |
91574 | @@ -834,6 +834,7 @@ static int nr_getname(struct socket *sock, struct sockaddr *uaddr, | 90729 | @@ -850,7 +850,6 @@ static int nr_getname(struct socket *sock, struct sockaddr *uaddr, |
91575 | struct sock *sk = sock->sk; | ||
91576 | struct nr_sock *nr = nr_sk(sk); | ||
91577 | |||
91578 | + memset(sax, 0, sizeof(*sax)); | ||
91579 | lock_sock(sk); | ||
91580 | if (peer != 0) { | ||
91581 | if (sk->sk_state != TCP_ESTABLISHED) { | ||
91582 | @@ -848,7 +849,6 @@ static int nr_getname(struct socket *sock, struct sockaddr *uaddr, | ||
91583 | *uaddr_len = sizeof(struct full_sockaddr_ax25); | 90730 | *uaddr_len = sizeof(struct full_sockaddr_ax25); |
91584 | } else { | 90731 | } else { |
91585 | sax->fsa_ax25.sax25_family = AF_NETROM; | 90732 | sax->fsa_ax25.sax25_family = AF_NETROM; |
@@ -91588,28 +90735,28 @@ index 103bd70..f21aad3 100644 | |||
91588 | *uaddr_len = sizeof(struct sockaddr_ax25); | 90735 | *uaddr_len = sizeof(struct sockaddr_ax25); |
91589 | } | 90736 | } |
91590 | diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c | 90737 | diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c |
91591 | index e50f72a..f71867d 100644 | 90738 | index 20a1bd0..bb8f1c1 100644 |
91592 | --- a/net/packet/af_packet.c | 90739 | --- a/net/packet/af_packet.c |
91593 | +++ b/net/packet/af_packet.c | 90740 | +++ b/net/packet/af_packet.c |
91594 | @@ -1578,7 +1578,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev, | 90741 | @@ -1681,7 +1681,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev, |
91595 | 90742 | ||
91596 | spin_lock(&sk->sk_receive_queue.lock); | 90743 | spin_lock(&sk->sk_receive_queue.lock); |
91597 | po->stats.tp_packets++; | 90744 | po->stats.stats1.tp_packets++; |
91598 | - skb->dropcount = atomic_read(&sk->sk_drops); | 90745 | - skb->dropcount = atomic_read(&sk->sk_drops); |
91599 | + skb->dropcount = atomic_read_unchecked(&sk->sk_drops); | 90746 | + skb->dropcount = atomic_read_unchecked(&sk->sk_drops); |
91600 | __skb_queue_tail(&sk->sk_receive_queue, skb); | 90747 | __skb_queue_tail(&sk->sk_receive_queue, skb); |
91601 | spin_unlock(&sk->sk_receive_queue.lock); | 90748 | spin_unlock(&sk->sk_receive_queue.lock); |
91602 | sk->sk_data_ready(sk, skb->len); | 90749 | sk->sk_data_ready(sk, skb->len); |
91603 | @@ -1587,7 +1587,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev, | 90750 | @@ -1690,7 +1690,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev, |
91604 | drop_n_acct: | 90751 | drop_n_acct: |
91605 | spin_lock(&sk->sk_receive_queue.lock); | 90752 | spin_lock(&sk->sk_receive_queue.lock); |
91606 | po->stats.tp_drops++; | 90753 | po->stats.stats1.tp_drops++; |
91607 | - atomic_inc(&sk->sk_drops); | 90754 | - atomic_inc(&sk->sk_drops); |
91608 | + atomic_inc_unchecked(&sk->sk_drops); | 90755 | + atomic_inc_unchecked(&sk->sk_drops); |
91609 | spin_unlock(&sk->sk_receive_queue.lock); | 90756 | spin_unlock(&sk->sk_receive_queue.lock); |
91610 | 90757 | ||
91611 | drop_n_restore: | 90758 | drop_n_restore: |
91612 | @@ -2579,6 +2579,7 @@ out: | 90759 | @@ -2640,6 +2640,7 @@ out: |
91613 | 90760 | ||
91614 | static int packet_recv_error(struct sock *sk, struct msghdr *msg, int len) | 90761 | static int packet_recv_error(struct sock *sk, struct msghdr *msg, int len) |
91615 | { | 90762 | { |
@@ -91617,7 +90764,7 @@ index e50f72a..f71867d 100644 | |||
91617 | struct sock_exterr_skb *serr; | 90764 | struct sock_exterr_skb *serr; |
91618 | struct sk_buff *skb, *skb2; | 90765 | struct sk_buff *skb, *skb2; |
91619 | int copied, err; | 90766 | int copied, err; |
91620 | @@ -2600,8 +2601,9 @@ static int packet_recv_error(struct sock *sk, struct msghdr *msg, int len) | 90767 | @@ -2661,8 +2662,9 @@ static int packet_recv_error(struct sock *sk, struct msghdr *msg, int len) |
91621 | sock_recv_timestamp(msg, sk, skb); | 90768 | sock_recv_timestamp(msg, sk, skb); |
91622 | 90769 | ||
91623 | serr = SKB_EXT_ERR(skb); | 90770 | serr = SKB_EXT_ERR(skb); |
@@ -91628,7 +90775,7 @@ index e50f72a..f71867d 100644 | |||
91628 | 90775 | ||
91629 | msg->msg_flags |= MSG_ERRQUEUE; | 90776 | msg->msg_flags |= MSG_ERRQUEUE; |
91630 | err = copied; | 90777 | err = copied; |
91631 | @@ -3225,7 +3227,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname, | 90778 | @@ -3281,7 +3283,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname, |
91632 | case PACKET_HDRLEN: | 90779 | case PACKET_HDRLEN: |
91633 | if (len > sizeof(int)) | 90780 | if (len > sizeof(int)) |
91634 | len = sizeof(int); | 90781 | len = sizeof(int); |
@@ -91637,7 +90784,7 @@ index e50f72a..f71867d 100644 | |||
91637 | return -EFAULT; | 90784 | return -EFAULT; |
91638 | switch (val) { | 90785 | switch (val) { |
91639 | case TPACKET_V1: | 90786 | case TPACKET_V1: |
91640 | @@ -3267,7 +3269,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname, | 90787 | @@ -3324,7 +3326,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname, |
91641 | len = lv; | 90788 | len = lv; |
91642 | if (put_user(len, optlen)) | 90789 | if (put_user(len, optlen)) |
91643 | return -EFAULT; | 90790 | return -EFAULT; |
@@ -92142,142 +91289,6 @@ index f226709..0e735a8 100644 | |||
92142 | _proto("Tx RESPONSE %%%u", ntohl(hdr->serial)); | 91289 | _proto("Tx RESPONSE %%%u", ntohl(hdr->serial)); |
92143 | 91290 | ||
92144 | ret = kernel_sendmsg(conn->trans->local->socket, &msg, iov, 3, len); | 91291 | ret = kernel_sendmsg(conn->trans->local->socket, &msg, iov, 3, len); |
92145 | diff --git a/net/sched/sch_qfq.c b/net/sched/sch_qfq.c | ||
92146 | index d51852b..5792252 100644 | ||
92147 | --- a/net/sched/sch_qfq.c | ||
92148 | +++ b/net/sched/sch_qfq.c | ||
92149 | @@ -113,7 +113,6 @@ | ||
92150 | |||
92151 | #define FRAC_BITS 30 /* fixed point arithmetic */ | ||
92152 | #define ONE_FP (1UL << FRAC_BITS) | ||
92153 | -#define IWSUM (ONE_FP/QFQ_MAX_WSUM) | ||
92154 | |||
92155 | #define QFQ_MTU_SHIFT 16 /* to support TSO/GSO */ | ||
92156 | #define QFQ_MIN_LMAX 512 /* see qfq_slot_insert */ | ||
92157 | @@ -189,6 +188,7 @@ struct qfq_sched { | ||
92158 | struct qfq_aggregate *in_serv_agg; /* Aggregate being served. */ | ||
92159 | u32 num_active_agg; /* Num. of active aggregates */ | ||
92160 | u32 wsum; /* weight sum */ | ||
92161 | + u32 iwsum; /* inverse weight sum */ | ||
92162 | |||
92163 | unsigned long bitmaps[QFQ_MAX_STATE]; /* Group bitmaps. */ | ||
92164 | struct qfq_group groups[QFQ_MAX_INDEX + 1]; /* The groups. */ | ||
92165 | @@ -314,6 +314,7 @@ static void qfq_update_agg(struct qfq_sched *q, struct qfq_aggregate *agg, | ||
92166 | |||
92167 | q->wsum += | ||
92168 | (int) agg->class_weight * (new_num_classes - agg->num_classes); | ||
92169 | + q->iwsum = ONE_FP / q->wsum; | ||
92170 | |||
92171 | agg->num_classes = new_num_classes; | ||
92172 | } | ||
92173 | @@ -340,6 +341,10 @@ static void qfq_destroy_agg(struct qfq_sched *q, struct qfq_aggregate *agg) | ||
92174 | { | ||
92175 | if (!hlist_unhashed(&agg->nonfull_next)) | ||
92176 | hlist_del_init(&agg->nonfull_next); | ||
92177 | + q->wsum -= agg->class_weight; | ||
92178 | + if (q->wsum != 0) | ||
92179 | + q->iwsum = ONE_FP / q->wsum; | ||
92180 | + | ||
92181 | if (q->in_serv_agg == agg) | ||
92182 | q->in_serv_agg = qfq_choose_next_agg(q); | ||
92183 | kfree(agg); | ||
92184 | @@ -827,38 +832,60 @@ static void qfq_make_eligible(struct qfq_sched *q) | ||
92185 | } | ||
92186 | } | ||
92187 | |||
92188 | - | ||
92189 | /* | ||
92190 | - * The index of the slot in which the aggregate is to be inserted must | ||
92191 | - * not be higher than QFQ_MAX_SLOTS-2. There is a '-2' and not a '-1' | ||
92192 | - * because the start time of the group may be moved backward by one | ||
92193 | - * slot after the aggregate has been inserted, and this would cause | ||
92194 | - * non-empty slots to be right-shifted by one position. | ||
92195 | + * The index of the slot in which the input aggregate agg is to be | ||
92196 | + * inserted must not be higher than QFQ_MAX_SLOTS-2. There is a '-2' | ||
92197 | + * and not a '-1' because the start time of the group may be moved | ||
92198 | + * backward by one slot after the aggregate has been inserted, and | ||
92199 | + * this would cause non-empty slots to be right-shifted by one | ||
92200 | + * position. | ||
92201 | + * | ||
92202 | + * QFQ+ fully satisfies this bound to the slot index if the parameters | ||
92203 | + * of the classes are not changed dynamically, and if QFQ+ never | ||
92204 | + * happens to postpone the service of agg unjustly, i.e., it never | ||
92205 | + * happens that the aggregate becomes backlogged and eligible, or just | ||
92206 | + * eligible, while an aggregate with a higher approximated finish time | ||
92207 | + * is being served. In particular, in this case QFQ+ guarantees that | ||
92208 | + * the timestamps of agg are low enough that the slot index is never | ||
92209 | + * higher than 2. Unfortunately, QFQ+ cannot provide the same | ||
92210 | + * guarantee if it happens to unjustly postpone the service of agg, or | ||
92211 | + * if the parameters of some class are changed. | ||
92212 | + * | ||
92213 | + * As for the first event, i.e., an out-of-order service, the | ||
92214 | + * upper bound to the slot index guaranteed by QFQ+ grows to | ||
92215 | + * 2 + | ||
92216 | + * QFQ_MAX_AGG_CLASSES * ((1<<QFQ_MTU_SHIFT)/QFQ_MIN_LMAX) * | ||
92217 | + * (current_max_weight/current_wsum) <= 2 + 8 * 128 * 1. | ||
92218 | * | ||
92219 | - * If the weight and lmax (max_pkt_size) of the classes do not change, | ||
92220 | - * then QFQ+ does meet the above contraint according to the current | ||
92221 | - * values of its parameters. In fact, if the weight and lmax of the | ||
92222 | - * classes do not change, then, from the theory, QFQ+ guarantees that | ||
92223 | - * the slot index is never higher than | ||
92224 | - * 2 + QFQ_MAX_AGG_CLASSES * ((1<<QFQ_MTU_SHIFT)/QFQ_MIN_LMAX) * | ||
92225 | - * (QFQ_MAX_WEIGHT/QFQ_MAX_WSUM) = 2 + 8 * 128 * (1 / 64) = 18 | ||
92226 | + * The following function deals with this problem by backward-shifting | ||
92227 | + * the timestamps of agg, if needed, so as to guarantee that the slot | ||
92228 | + * index is never higher than QFQ_MAX_SLOTS-2. This backward-shift may | ||
92229 | + * cause the service of other aggregates to be postponed, yet the | ||
92230 | + * worst-case guarantees of these aggregates are not violated. In | ||
92231 | + * fact, in case of no out-of-order service, the timestamps of agg | ||
92232 | + * would have been even lower than they are after the backward shift, | ||
92233 | + * because QFQ+ would have guaranteed a maximum value equal to 2 for | ||
92234 | + * the slot index, and 2 < QFQ_MAX_SLOTS-2. Hence the aggregates whose | ||
92235 | + * service is postponed because of the backward-shift would have | ||
92236 | + * however waited for the service of agg before being served. | ||
92237 | * | ||
92238 | - * When the weight of a class is increased or the lmax of the class is | ||
92239 | - * decreased, a new aggregate with smaller slot size than the original | ||
92240 | - * parent aggregate of the class may happen to be activated. The | ||
92241 | - * activation of this aggregate should be properly delayed to when the | ||
92242 | - * service of the class has finished in the ideal system tracked by | ||
92243 | - * QFQ+. If the activation of the aggregate is not delayed to this | ||
92244 | - * reference time instant, then this aggregate may be unjustly served | ||
92245 | - * before other aggregates waiting for service. This may cause the | ||
92246 | - * above bound to the slot index to be violated for some of these | ||
92247 | - * unlucky aggregates. | ||
92248 | + * The other event that may cause the slot index to be higher than 2 | ||
92249 | + * for agg is a recent change of the parameters of some class. If the | ||
92250 | + * weight of a class is increased or the lmax (max_pkt_size) of the | ||
92251 | + * class is decreased, then a new aggregate with smaller slot size | ||
92252 | + * than the original parent aggregate of the class may happen to be | ||
92253 | + * activated. The activation of this aggregate should be properly | ||
92254 | + * delayed to when the service of the class has finished in the ideal | ||
92255 | + * system tracked by QFQ+. If the activation of the aggregate is not | ||
92256 | + * delayed to this reference time instant, then this aggregate may be | ||
92257 | + * unjustly served before other aggregates waiting for service. This | ||
92258 | + * may cause the above bound to the slot index to be violated for some | ||
92259 | + * of these unlucky aggregates. | ||
92260 | * | ||
92261 | * Instead of delaying the activation of the new aggregate, which is | ||
92262 | - * quite complex, the following inaccurate but simple solution is used: | ||
92263 | - * if the slot index is higher than QFQ_MAX_SLOTS-2, then the | ||
92264 | - * timestamps of the aggregate are shifted backward so as to let the | ||
92265 | - * slot index become equal to QFQ_MAX_SLOTS-2. | ||
92266 | + * quite complex, the above-discussed capping of the slot index is | ||
92267 | + * used to handle also the consequences of a change of the parameters | ||
92268 | + * of a class. | ||
92269 | */ | ||
92270 | static void qfq_slot_insert(struct qfq_group *grp, struct qfq_aggregate *agg, | ||
92271 | u64 roundedS) | ||
92272 | @@ -1077,7 +1104,7 @@ static struct sk_buff *qfq_dequeue(struct Qdisc *sch) | ||
92273 | else | ||
92274 | in_serv_agg->budget -= len; | ||
92275 | |||
92276 | - q->V += (u64)len * IWSUM; | ||
92277 | + q->V += (u64)len * q->iwsum; | ||
92278 | pr_debug("qfq dequeue: len %u F %lld now %lld\n", | ||
92279 | len, (unsigned long long) in_serv_agg->F, | ||
92280 | (unsigned long long) q->V); | ||
92281 | diff --git a/net/sctp/ipv6.c b/net/sctp/ipv6.c | 91292 | diff --git a/net/sctp/ipv6.c b/net/sctp/ipv6.c |
92282 | index 391a245..296b3d7 100644 | 91293 | index 391a245..296b3d7 100644 |
92283 | --- a/net/sctp/ipv6.c | 91294 | --- a/net/sctp/ipv6.c |
@@ -92309,24 +91320,11 @@ index 391a245..296b3d7 100644 | |||
92309 | } | 91320 | } |
92310 | 91321 | ||
92311 | /* Initialize IPv6 support and register with socket layer. */ | 91322 | /* Initialize IPv6 support and register with socket layer. */ |
92312 | diff --git a/net/sctp/probe.c b/net/sctp/probe.c | ||
92313 | index ad0dba8..e62c225 100644 | ||
92314 | --- a/net/sctp/probe.c | ||
92315 | +++ b/net/sctp/probe.c | ||
92316 | @@ -63,7 +63,7 @@ static struct { | ||
92317 | struct timespec tstart; | ||
92318 | } sctpw; | ||
92319 | |||
92320 | -static void printl(const char *fmt, ...) | ||
92321 | +static __printf(1, 2) void printl(const char *fmt, ...) | ||
92322 | { | ||
92323 | va_list args; | ||
92324 | int len; | ||
92325 | diff --git a/net/sctp/proc.c b/net/sctp/proc.c | 91323 | diff --git a/net/sctp/proc.c b/net/sctp/proc.c |
92326 | index ab3bba8..2fbab4e 100644 | 91324 | index 4e45ee3..e66a031 100644 |
92327 | --- a/net/sctp/proc.c | 91325 | --- a/net/sctp/proc.c |
92328 | +++ b/net/sctp/proc.c | 91326 | +++ b/net/sctp/proc.c |
92329 | @@ -336,7 +336,8 @@ static int sctp_assocs_seq_show(struct seq_file *seq, void *v) | 91327 | @@ -337,7 +337,8 @@ static int sctp_assocs_seq_show(struct seq_file *seq, void *v) |
92330 | seq_printf(seq, | 91328 | seq_printf(seq, |
92331 | "%8pK %8pK %-3d %-3d %-2d %-4d " | 91329 | "%8pK %8pK %-3d %-3d %-2d %-4d " |
92332 | "%4d %8d %8d %7d %5lu %-5d %5d ", | 91330 | "%4d %8d %8d %7d %5lu %-5d %5d ", |
@@ -92337,7 +91335,7 @@ index ab3bba8..2fbab4e 100644 | |||
92337 | assoc->assoc_id, | 91335 | assoc->assoc_id, |
92338 | assoc->sndbuf_used, | 91336 | assoc->sndbuf_used, |
92339 | diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c | 91337 | diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c |
92340 | index 1c2e46c..f91cf5e 100644 | 91338 | index eaee00c..97c0afd 100644 |
92341 | --- a/net/sctp/protocol.c | 91339 | --- a/net/sctp/protocol.c |
92342 | +++ b/net/sctp/protocol.c | 91340 | +++ b/net/sctp/protocol.c |
92343 | @@ -834,8 +834,10 @@ int sctp_register_af(struct sctp_af *af) | 91341 | @@ -834,8 +834,10 @@ int sctp_register_af(struct sctp_af *af) |
@@ -92393,10 +91391,10 @@ index 8aab894..f6b7e7d 100644 | |||
92393 | sctp_generate_t1_cookie_event, | 91391 | sctp_generate_t1_cookie_event, |
92394 | sctp_generate_t1_init_event, | 91392 | sctp_generate_t1_init_event, |
92395 | diff --git a/net/sctp/socket.c b/net/sctp/socket.c | 91393 | diff --git a/net/sctp/socket.c b/net/sctp/socket.c |
92396 | index 02c43e4..7bea2ca 100644 | 91394 | index 6abb1ca..1678f8b 100644 |
92397 | --- a/net/sctp/socket.c | 91395 | --- a/net/sctp/socket.c |
92398 | +++ b/net/sctp/socket.c | 91396 | +++ b/net/sctp/socket.c |
92399 | @@ -2166,11 +2166,13 @@ static int sctp_setsockopt_events(struct sock *sk, char __user *optval, | 91397 | @@ -2167,11 +2167,13 @@ static int sctp_setsockopt_events(struct sock *sk, char __user *optval, |
92400 | { | 91398 | { |
92401 | struct sctp_association *asoc; | 91399 | struct sctp_association *asoc; |
92402 | struct sctp_ulpevent *event; | 91400 | struct sctp_ulpevent *event; |
@@ -92411,7 +91409,7 @@ index 02c43e4..7bea2ca 100644 | |||
92411 | 91409 | ||
92412 | /* | 91410 | /* |
92413 | * At the time when a user app subscribes to SCTP_SENDER_DRY_EVENT, | 91411 | * At the time when a user app subscribes to SCTP_SENDER_DRY_EVENT, |
92414 | @@ -4221,13 +4223,16 @@ static int sctp_getsockopt_disable_fragments(struct sock *sk, int len, | 91412 | @@ -4222,13 +4224,16 @@ static int sctp_getsockopt_disable_fragments(struct sock *sk, int len, |
92415 | static int sctp_getsockopt_events(struct sock *sk, int len, char __user *optval, | 91413 | static int sctp_getsockopt_events(struct sock *sk, int len, char __user *optval, |
92416 | int __user *optlen) | 91414 | int __user *optlen) |
92417 | { | 91415 | { |
@@ -92429,7 +91427,7 @@ index 02c43e4..7bea2ca 100644 | |||
92429 | return -EFAULT; | 91427 | return -EFAULT; |
92430 | return 0; | 91428 | return 0; |
92431 | } | 91429 | } |
92432 | @@ -4245,6 +4250,8 @@ static int sctp_getsockopt_events(struct sock *sk, int len, char __user *optval, | 91430 | @@ -4246,6 +4251,8 @@ static int sctp_getsockopt_events(struct sock *sk, int len, char __user *optval, |
92433 | */ | 91431 | */ |
92434 | static int sctp_getsockopt_autoclose(struct sock *sk, int len, char __user *optval, int __user *optlen) | 91432 | static int sctp_getsockopt_autoclose(struct sock *sk, int len, char __user *optval, int __user *optlen) |
92435 | { | 91433 | { |
@@ -92438,7 +91436,7 @@ index 02c43e4..7bea2ca 100644 | |||
92438 | /* Applicable to UDP-style socket only */ | 91436 | /* Applicable to UDP-style socket only */ |
92439 | if (sctp_style(sk, TCP)) | 91437 | if (sctp_style(sk, TCP)) |
92440 | return -EOPNOTSUPP; | 91438 | return -EOPNOTSUPP; |
92441 | @@ -4253,7 +4260,8 @@ static int sctp_getsockopt_autoclose(struct sock *sk, int len, char __user *optv | 91439 | @@ -4254,7 +4261,8 @@ static int sctp_getsockopt_autoclose(struct sock *sk, int len, char __user *optv |
92442 | len = sizeof(int); | 91440 | len = sizeof(int); |
92443 | if (put_user(len, optlen)) | 91441 | if (put_user(len, optlen)) |
92444 | return -EFAULT; | 91442 | return -EFAULT; |
@@ -92448,7 +91446,7 @@ index 02c43e4..7bea2ca 100644 | |||
92448 | return -EFAULT; | 91446 | return -EFAULT; |
92449 | return 0; | 91447 | return 0; |
92450 | } | 91448 | } |
92451 | @@ -4625,12 +4633,15 @@ static int sctp_getsockopt_delayed_ack(struct sock *sk, int len, | 91449 | @@ -4626,12 +4634,15 @@ static int sctp_getsockopt_delayed_ack(struct sock *sk, int len, |
92452 | */ | 91450 | */ |
92453 | static int sctp_getsockopt_initmsg(struct sock *sk, int len, char __user *optval, int __user *optlen) | 91451 | static int sctp_getsockopt_initmsg(struct sock *sk, int len, char __user *optval, int __user *optlen) |
92454 | { | 91452 | { |
@@ -92465,7 +91463,7 @@ index 02c43e4..7bea2ca 100644 | |||
92465 | return -EFAULT; | 91463 | return -EFAULT; |
92466 | return 0; | 91464 | return 0; |
92467 | } | 91465 | } |
92468 | @@ -4671,6 +4682,8 @@ static int sctp_getsockopt_peer_addrs(struct sock *sk, int len, | 91466 | @@ -4672,6 +4683,8 @@ static int sctp_getsockopt_peer_addrs(struct sock *sk, int len, |
92469 | addrlen = sctp_get_af_specific(temp.sa.sa_family)->sockaddr_len; | 91467 | addrlen = sctp_get_af_specific(temp.sa.sa_family)->sockaddr_len; |
92470 | if (space_left < addrlen) | 91468 | if (space_left < addrlen) |
92471 | return -ENOMEM; | 91469 | return -ENOMEM; |
@@ -92497,7 +91495,7 @@ index bf3c6e8..376d8d0 100644 | |||
92497 | 91495 | ||
92498 | table = kmemdup(sctp_net_table, sizeof(sctp_net_table), GFP_KERNEL); | 91496 | table = kmemdup(sctp_net_table, sizeof(sctp_net_table), GFP_KERNEL); |
92499 | diff --git a/net/socket.c b/net/socket.c | 91497 | diff --git a/net/socket.c b/net/socket.c |
92500 | index e216502..74be616 100644 | 91498 | index 4ca1526..df83e47 100644 |
92501 | --- a/net/socket.c | 91499 | --- a/net/socket.c |
92502 | +++ b/net/socket.c | 91500 | +++ b/net/socket.c |
92503 | @@ -88,6 +88,7 @@ | 91501 | @@ -88,6 +88,7 @@ |
@@ -92526,7 +91524,7 @@ index e216502..74be616 100644 | |||
92526 | 91524 | ||
92527 | static struct file_system_type sock_fs_type = { | 91525 | static struct file_system_type sock_fs_type = { |
92528 | .name = "sockfs", | 91526 | .name = "sockfs", |
92529 | @@ -1268,6 +1271,8 @@ int __sock_create(struct net *net, int family, int type, int protocol, | 91527 | @@ -1246,6 +1249,8 @@ int __sock_create(struct net *net, int family, int type, int protocol, |
92530 | return -EAFNOSUPPORT; | 91528 | return -EAFNOSUPPORT; |
92531 | if (type < 0 || type >= SOCK_MAX) | 91529 | if (type < 0 || type >= SOCK_MAX) |
92532 | return -EINVAL; | 91530 | return -EINVAL; |
@@ -92535,7 +91533,7 @@ index e216502..74be616 100644 | |||
92535 | 91533 | ||
92536 | /* Compatibility. | 91534 | /* Compatibility. |
92537 | 91535 | ||
92538 | @@ -1399,6 +1404,16 @@ SYSCALL_DEFINE3(socket, int, family, int, type, int, protocol) | 91536 | @@ -1377,6 +1382,16 @@ SYSCALL_DEFINE3(socket, int, family, int, type, int, protocol) |
92539 | if (SOCK_NONBLOCK != O_NONBLOCK && (flags & SOCK_NONBLOCK)) | 91537 | if (SOCK_NONBLOCK != O_NONBLOCK && (flags & SOCK_NONBLOCK)) |
92540 | flags = (flags & ~SOCK_NONBLOCK) | O_NONBLOCK; | 91538 | flags = (flags & ~SOCK_NONBLOCK) | O_NONBLOCK; |
92541 | 91539 | ||
@@ -92552,7 +91550,7 @@ index e216502..74be616 100644 | |||
92552 | retval = sock_create(family, type, protocol, &sock); | 91550 | retval = sock_create(family, type, protocol, &sock); |
92553 | if (retval < 0) | 91551 | if (retval < 0) |
92554 | goto out; | 91552 | goto out; |
92555 | @@ -1526,6 +1541,14 @@ SYSCALL_DEFINE3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen) | 91553 | @@ -1504,6 +1519,14 @@ SYSCALL_DEFINE3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen) |
92556 | if (sock) { | 91554 | if (sock) { |
92557 | err = move_addr_to_kernel(umyaddr, addrlen, &address); | 91555 | err = move_addr_to_kernel(umyaddr, addrlen, &address); |
92558 | if (err >= 0) { | 91556 | if (err >= 0) { |
@@ -92567,7 +91565,7 @@ index e216502..74be616 100644 | |||
92567 | err = security_socket_bind(sock, | 91565 | err = security_socket_bind(sock, |
92568 | (struct sockaddr *)&address, | 91566 | (struct sockaddr *)&address, |
92569 | addrlen); | 91567 | addrlen); |
92570 | @@ -1534,6 +1557,7 @@ SYSCALL_DEFINE3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen) | 91568 | @@ -1512,6 +1535,7 @@ SYSCALL_DEFINE3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen) |
92571 | (struct sockaddr *) | 91569 | (struct sockaddr *) |
92572 | &address, addrlen); | 91570 | &address, addrlen); |
92573 | } | 91571 | } |
@@ -92575,7 +91573,7 @@ index e216502..74be616 100644 | |||
92575 | fput_light(sock->file, fput_needed); | 91573 | fput_light(sock->file, fput_needed); |
92576 | } | 91574 | } |
92577 | return err; | 91575 | return err; |
92578 | @@ -1557,10 +1581,20 @@ SYSCALL_DEFINE2(listen, int, fd, int, backlog) | 91576 | @@ -1535,10 +1559,20 @@ SYSCALL_DEFINE2(listen, int, fd, int, backlog) |
92579 | if ((unsigned int)backlog > somaxconn) | 91577 | if ((unsigned int)backlog > somaxconn) |
92580 | backlog = somaxconn; | 91578 | backlog = somaxconn; |
92581 | 91579 | ||
@@ -92596,7 +91594,7 @@ index e216502..74be616 100644 | |||
92596 | fput_light(sock->file, fput_needed); | 91594 | fput_light(sock->file, fput_needed); |
92597 | } | 91595 | } |
92598 | return err; | 91596 | return err; |
92599 | @@ -1604,6 +1638,18 @@ SYSCALL_DEFINE4(accept4, int, fd, struct sockaddr __user *, upeer_sockaddr, | 91597 | @@ -1582,6 +1616,18 @@ SYSCALL_DEFINE4(accept4, int, fd, struct sockaddr __user *, upeer_sockaddr, |
92600 | newsock->type = sock->type; | 91598 | newsock->type = sock->type; |
92601 | newsock->ops = sock->ops; | 91599 | newsock->ops = sock->ops; |
92602 | 91600 | ||
@@ -92615,7 +91613,7 @@ index e216502..74be616 100644 | |||
92615 | /* | 91613 | /* |
92616 | * We don't need try_module_get here, as the listening socket (sock) | 91614 | * We don't need try_module_get here, as the listening socket (sock) |
92617 | * has the protocol module (sock->ops->owner) held. | 91615 | * has the protocol module (sock->ops->owner) held. |
92618 | @@ -1649,6 +1695,8 @@ SYSCALL_DEFINE4(accept4, int, fd, struct sockaddr __user *, upeer_sockaddr, | 91616 | @@ -1627,6 +1673,8 @@ SYSCALL_DEFINE4(accept4, int, fd, struct sockaddr __user *, upeer_sockaddr, |
92619 | fd_install(newfd, newfile); | 91617 | fd_install(newfd, newfile); |
92620 | err = newfd; | 91618 | err = newfd; |
92621 | 91619 | ||
@@ -92624,7 +91622,7 @@ index e216502..74be616 100644 | |||
92624 | out_put: | 91622 | out_put: |
92625 | fput_light(sock->file, fput_needed); | 91623 | fput_light(sock->file, fput_needed); |
92626 | out: | 91624 | out: |
92627 | @@ -1681,6 +1729,7 @@ SYSCALL_DEFINE3(connect, int, fd, struct sockaddr __user *, uservaddr, | 91625 | @@ -1659,6 +1707,7 @@ SYSCALL_DEFINE3(connect, int, fd, struct sockaddr __user *, uservaddr, |
92628 | int, addrlen) | 91626 | int, addrlen) |
92629 | { | 91627 | { |
92630 | struct socket *sock; | 91628 | struct socket *sock; |
@@ -92632,7 +91630,7 @@ index e216502..74be616 100644 | |||
92632 | struct sockaddr_storage address; | 91630 | struct sockaddr_storage address; |
92633 | int err, fput_needed; | 91631 | int err, fput_needed; |
92634 | 91632 | ||
92635 | @@ -1691,6 +1740,17 @@ SYSCALL_DEFINE3(connect, int, fd, struct sockaddr __user *, uservaddr, | 91633 | @@ -1669,6 +1718,17 @@ SYSCALL_DEFINE3(connect, int, fd, struct sockaddr __user *, uservaddr, |
92636 | if (err < 0) | 91634 | if (err < 0) |
92637 | goto out_put; | 91635 | goto out_put; |
92638 | 91636 | ||
@@ -92650,7 +91648,7 @@ index e216502..74be616 100644 | |||
92650 | err = | 91648 | err = |
92651 | security_socket_connect(sock, (struct sockaddr *)&address, addrlen); | 91649 | security_socket_connect(sock, (struct sockaddr *)&address, addrlen); |
92652 | if (err) | 91650 | if (err) |
92653 | @@ -1772,6 +1832,8 @@ SYSCALL_DEFINE3(getpeername, int, fd, struct sockaddr __user *, usockaddr, | 91651 | @@ -1750,6 +1810,8 @@ SYSCALL_DEFINE3(getpeername, int, fd, struct sockaddr __user *, usockaddr, |
92654 | * the protocol. | 91652 | * the protocol. |
92655 | */ | 91653 | */ |
92656 | 91654 | ||
@@ -92659,7 +91657,7 @@ index e216502..74be616 100644 | |||
92659 | SYSCALL_DEFINE6(sendto, int, fd, void __user *, buff, size_t, len, | 91657 | SYSCALL_DEFINE6(sendto, int, fd, void __user *, buff, size_t, len, |
92660 | unsigned int, flags, struct sockaddr __user *, addr, | 91658 | unsigned int, flags, struct sockaddr __user *, addr, |
92661 | int, addr_len) | 91659 | int, addr_len) |
92662 | @@ -1838,7 +1900,7 @@ SYSCALL_DEFINE6(recvfrom, int, fd, void __user *, ubuf, size_t, size, | 91660 | @@ -1816,7 +1878,7 @@ SYSCALL_DEFINE6(recvfrom, int, fd, void __user *, ubuf, size_t, size, |
92663 | struct socket *sock; | 91661 | struct socket *sock; |
92664 | struct iovec iov; | 91662 | struct iovec iov; |
92665 | struct msghdr msg; | 91663 | struct msghdr msg; |
@@ -92668,7 +91666,7 @@ index e216502..74be616 100644 | |||
92668 | int err, err2; | 91666 | int err, err2; |
92669 | int fput_needed; | 91667 | int fput_needed; |
92670 | 91668 | ||
92671 | @@ -2045,7 +2107,7 @@ static int ___sys_sendmsg(struct socket *sock, struct msghdr __user *msg, | 91669 | @@ -2023,7 +2085,7 @@ static int ___sys_sendmsg(struct socket *sock, struct msghdr __user *msg, |
92672 | * checking falls down on this. | 91670 | * checking falls down on this. |
92673 | */ | 91671 | */ |
92674 | if (copy_from_user(ctl_buf, | 91672 | if (copy_from_user(ctl_buf, |
@@ -92677,7 +91675,7 @@ index e216502..74be616 100644 | |||
92677 | ctl_len)) | 91675 | ctl_len)) |
92678 | goto out_freectl; | 91676 | goto out_freectl; |
92679 | msg_sys->msg_control = ctl_buf; | 91677 | msg_sys->msg_control = ctl_buf; |
92680 | @@ -2196,7 +2258,7 @@ static int ___sys_recvmsg(struct socket *sock, struct msghdr __user *msg, | 91678 | @@ -2174,7 +2236,7 @@ static int ___sys_recvmsg(struct socket *sock, struct msghdr __user *msg, |
92681 | int err, total_len, len; | 91679 | int err, total_len, len; |
92682 | 91680 | ||
92683 | /* kernel mode address */ | 91681 | /* kernel mode address */ |
@@ -92686,7 +91684,7 @@ index e216502..74be616 100644 | |||
92686 | 91684 | ||
92687 | /* user mode address pointers */ | 91685 | /* user mode address pointers */ |
92688 | struct sockaddr __user *uaddr; | 91686 | struct sockaddr __user *uaddr; |
92689 | @@ -2224,7 +2286,7 @@ static int ___sys_recvmsg(struct socket *sock, struct msghdr __user *msg, | 91687 | @@ -2202,7 +2264,7 @@ static int ___sys_recvmsg(struct socket *sock, struct msghdr __user *msg, |
92690 | * kernel msghdr to use the kernel address space) | 91688 | * kernel msghdr to use the kernel address space) |
92691 | */ | 91689 | */ |
92692 | 91690 | ||
@@ -92695,7 +91693,7 @@ index e216502..74be616 100644 | |||
92695 | uaddr_len = COMPAT_NAMELEN(msg); | 91693 | uaddr_len = COMPAT_NAMELEN(msg); |
92696 | if (MSG_CMSG_COMPAT & flags) { | 91694 | if (MSG_CMSG_COMPAT & flags) { |
92697 | err = verify_compat_iovec(msg_sys, iov, &addr, VERIFY_WRITE); | 91695 | err = verify_compat_iovec(msg_sys, iov, &addr, VERIFY_WRITE); |
92698 | @@ -2975,7 +3037,7 @@ static int bond_ioctl(struct net *net, unsigned int cmd, | 91696 | @@ -2955,7 +3017,7 @@ static int bond_ioctl(struct net *net, unsigned int cmd, |
92699 | old_fs = get_fs(); | 91697 | old_fs = get_fs(); |
92700 | set_fs(KERNEL_DS); | 91698 | set_fs(KERNEL_DS); |
92701 | err = dev_ioctl(net, cmd, | 91699 | err = dev_ioctl(net, cmd, |
@@ -92704,7 +91702,7 @@ index e216502..74be616 100644 | |||
92704 | set_fs(old_fs); | 91702 | set_fs(old_fs); |
92705 | 91703 | ||
92706 | return err; | 91704 | return err; |
92707 | @@ -3084,7 +3146,7 @@ static int compat_sioc_ifmap(struct net *net, unsigned int cmd, | 91705 | @@ -3064,7 +3126,7 @@ static int compat_sioc_ifmap(struct net *net, unsigned int cmd, |
92708 | 91706 | ||
92709 | old_fs = get_fs(); | 91707 | old_fs = get_fs(); |
92710 | set_fs(KERNEL_DS); | 91708 | set_fs(KERNEL_DS); |
@@ -92713,7 +91711,7 @@ index e216502..74be616 100644 | |||
92713 | set_fs(old_fs); | 91711 | set_fs(old_fs); |
92714 | 91712 | ||
92715 | if (cmd == SIOCGIFMAP && !err) { | 91713 | if (cmd == SIOCGIFMAP && !err) { |
92716 | @@ -3189,7 +3251,7 @@ static int routing_ioctl(struct net *net, struct socket *sock, | 91714 | @@ -3169,7 +3231,7 @@ static int routing_ioctl(struct net *net, struct socket *sock, |
92717 | ret |= __get_user(rtdev, &(ur4->rt_dev)); | 91715 | ret |= __get_user(rtdev, &(ur4->rt_dev)); |
92718 | if (rtdev) { | 91716 | if (rtdev) { |
92719 | ret |= copy_from_user(devname, compat_ptr(rtdev), 15); | 91717 | ret |= copy_from_user(devname, compat_ptr(rtdev), 15); |
@@ -92722,7 +91720,7 @@ index e216502..74be616 100644 | |||
92722 | devname[15] = 0; | 91720 | devname[15] = 0; |
92723 | } else | 91721 | } else |
92724 | r4.rt_dev = NULL; | 91722 | r4.rt_dev = NULL; |
92725 | @@ -3415,8 +3477,8 @@ int kernel_getsockopt(struct socket *sock, int level, int optname, | 91723 | @@ -3395,8 +3457,8 @@ int kernel_getsockopt(struct socket *sock, int level, int optname, |
92726 | int __user *uoptlen; | 91724 | int __user *uoptlen; |
92727 | int err; | 91725 | int err; |
92728 | 91726 | ||
@@ -92733,7 +91731,7 @@ index e216502..74be616 100644 | |||
92733 | 91731 | ||
92734 | set_fs(KERNEL_DS); | 91732 | set_fs(KERNEL_DS); |
92735 | if (level == SOL_SOCKET) | 91733 | if (level == SOL_SOCKET) |
92736 | @@ -3436,7 +3498,7 @@ int kernel_setsockopt(struct socket *sock, int level, int optname, | 91734 | @@ -3416,7 +3478,7 @@ int kernel_setsockopt(struct socket *sock, int level, int optname, |
92737 | char __user *uoptval; | 91735 | char __user *uoptval; |
92738 | int err; | 91736 | int err; |
92739 | 91737 | ||
@@ -92743,10 +91741,10 @@ index e216502..74be616 100644 | |||
92743 | set_fs(KERNEL_DS); | 91741 | set_fs(KERNEL_DS); |
92744 | if (level == SOL_SOCKET) | 91742 | if (level == SOL_SOCKET) |
92745 | diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c | 91743 | diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c |
92746 | index d5f35f1..da2680b5 100644 | 91744 | index 5a750b9..ca5d7af 100644 |
92747 | --- a/net/sunrpc/clnt.c | 91745 | --- a/net/sunrpc/clnt.c |
92748 | +++ b/net/sunrpc/clnt.c | 91746 | +++ b/net/sunrpc/clnt.c |
92749 | @@ -1283,7 +1283,9 @@ call_start(struct rpc_task *task) | 91747 | @@ -1288,7 +1288,9 @@ call_start(struct rpc_task *task) |
92750 | (RPC_IS_ASYNC(task) ? "async" : "sync")); | 91748 | (RPC_IS_ASYNC(task) ? "async" : "sync")); |
92751 | 91749 | ||
92752 | /* Increment call count */ | 91750 | /* Increment call count */ |
@@ -93067,7 +92065,7 @@ index 9bc6db0..47ac8c0 100644 | |||
93067 | int mode = (table->mode >> 6) & 7; | 92065 | int mode = (table->mode >> 6) & 7; |
93068 | return (mode << 6) | (mode << 3) | mode; | 92066 | return (mode << 6) | (mode << 3) | mode; |
93069 | diff --git a/net/tipc/link.c b/net/tipc/link.c | 92067 | diff --git a/net/tipc/link.c b/net/tipc/link.c |
93070 | index daa6080..2bbbe70 100644 | 92068 | index a80feee..2bbbe70 100644 |
93071 | --- a/net/tipc/link.c | 92069 | --- a/net/tipc/link.c |
93072 | +++ b/net/tipc/link.c | 92070 | +++ b/net/tipc/link.c |
93073 | @@ -1201,7 +1201,7 @@ static int link_send_sections_long(struct tipc_port *sender, | 92071 | @@ -1201,7 +1201,7 @@ static int link_send_sections_long(struct tipc_port *sender, |
@@ -93097,38 +92095,6 @@ index daa6080..2bbbe70 100644 | |||
93097 | sect_crs += sz; | 92095 | sect_crs += sz; |
93098 | sect_rest -= sz; | 92096 | sect_rest -= sz; |
93099 | fragm_crs += sz; | 92097 | fragm_crs += sz; |
93100 | @@ -2306,8 +2306,11 @@ static int link_recv_changeover_msg(struct tipc_link **l_ptr, | ||
93101 | struct tipc_msg *tunnel_msg = buf_msg(tunnel_buf); | ||
93102 | u32 msg_typ = msg_type(tunnel_msg); | ||
93103 | u32 msg_count = msg_msgcnt(tunnel_msg); | ||
93104 | + u32 bearer_id = msg_bearer_id(tunnel_msg); | ||
93105 | |||
93106 | - dest_link = (*l_ptr)->owner->links[msg_bearer_id(tunnel_msg)]; | ||
93107 | + if (bearer_id >= MAX_BEARERS) | ||
93108 | + goto exit; | ||
93109 | + dest_link = (*l_ptr)->owner->links[bearer_id]; | ||
93110 | if (!dest_link) | ||
93111 | goto exit; | ||
93112 | if (dest_link == *l_ptr) { | ||
93113 | @@ -2521,14 +2524,16 @@ int tipc_link_recv_fragment(struct sk_buff **pending, struct sk_buff **fb, | ||
93114 | struct tipc_msg *imsg = (struct tipc_msg *)msg_data(fragm); | ||
93115 | u32 msg_sz = msg_size(imsg); | ||
93116 | u32 fragm_sz = msg_data_sz(fragm); | ||
93117 | - u32 exp_fragm_cnt = msg_sz/fragm_sz + !!(msg_sz % fragm_sz); | ||
93118 | + u32 exp_fragm_cnt; | ||
93119 | u32 max = TIPC_MAX_USER_MSG_SIZE + NAMED_H_SIZE; | ||
93120 | + | ||
93121 | if (msg_type(imsg) == TIPC_MCAST_MSG) | ||
93122 | max = TIPC_MAX_USER_MSG_SIZE + MCAST_H_SIZE; | ||
93123 | - if (msg_size(imsg) > max) { | ||
93124 | + if (fragm_sz == 0 || msg_size(imsg) > max) { | ||
93125 | kfree_skb(fbuf); | ||
93126 | return 0; | ||
93127 | } | ||
93128 | + exp_fragm_cnt = msg_sz / fragm_sz + !!(msg_sz % fragm_sz); | ||
93129 | pbuf = tipc_buf_acquire(msg_size(imsg)); | ||
93130 | if (pbuf != NULL) { | ||
93131 | pbuf->next = *pending; | ||
93132 | diff --git a/net/tipc/msg.c b/net/tipc/msg.c | 92098 | diff --git a/net/tipc/msg.c b/net/tipc/msg.c |
93133 | index f2db8a8..9245aa4 100644 | 92099 | index f2db8a8..9245aa4 100644 |
93134 | --- a/net/tipc/msg.c | 92100 | --- a/net/tipc/msg.c |
@@ -93156,7 +92122,7 @@ index 6b42d47..2ac24d5 100644 | |||
93156 | 92122 | ||
93157 | sub->evt.event = htohl(event, sub->swap); | 92123 | sub->evt.event = htohl(event, sub->swap); |
93158 | diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c | 92124 | diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c |
93159 | index 2db702d..09a77488 100644 | 92125 | index 826e099..4fa8c93 100644 |
93160 | --- a/net/unix/af_unix.c | 92126 | --- a/net/unix/af_unix.c |
93161 | +++ b/net/unix/af_unix.c | 92127 | +++ b/net/unix/af_unix.c |
93162 | @@ -783,6 +783,12 @@ static struct sock *unix_find_other(struct net *net, | 92128 | @@ -783,6 +783,12 @@ static struct sock *unix_find_other(struct net *net, |
@@ -93205,7 +92171,7 @@ index 2db702d..09a77488 100644 | |||
93205 | done_path_create(&path, dentry); | 92171 | done_path_create(&path, dentry); |
93206 | return err; | 92172 | return err; |
93207 | } | 92173 | } |
93208 | @@ -2323,9 +2342,13 @@ static int unix_seq_show(struct seq_file *seq, void *v) | 92174 | @@ -2324,9 +2343,13 @@ static int unix_seq_show(struct seq_file *seq, void *v) |
93209 | seq_puts(seq, "Num RefCount Protocol Flags Type St " | 92175 | seq_puts(seq, "Num RefCount Protocol Flags Type St " |
93210 | "Inode Path\n"); | 92176 | "Inode Path\n"); |
93211 | else { | 92177 | else { |
@@ -93220,7 +92186,7 @@ index 2db702d..09a77488 100644 | |||
93220 | 92186 | ||
93221 | seq_printf(seq, "%pK: %08X %08X %08X %04X %02X %5lu", | 92187 | seq_printf(seq, "%pK: %08X %08X %08X %04X %02X %5lu", |
93222 | s, | 92188 | s, |
93223 | @@ -2352,8 +2375,10 @@ static int unix_seq_show(struct seq_file *seq, void *v) | 92189 | @@ -2353,8 +2376,10 @@ static int unix_seq_show(struct seq_file *seq, void *v) |
93224 | } | 92190 | } |
93225 | for ( ; i < len; i++) | 92191 | for ( ; i < len; i++) |
93226 | seq_putc(seq, u->addr->name->sun_path[i]); | 92192 | seq_putc(seq, u->addr->name->sun_path[i]); |
@@ -93284,7 +92250,7 @@ index c8717c1..08539f5 100644 | |||
93284 | 92250 | ||
93285 | iwp->length += essid_compat; | 92251 | iwp->length += essid_compat; |
93286 | diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c | 92252 | diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c |
93287 | index 167c67d..3f2ae427 100644 | 92253 | index ea970b8..c68edb9f 100644 |
93288 | --- a/net/xfrm/xfrm_policy.c | 92254 | --- a/net/xfrm/xfrm_policy.c |
93289 | +++ b/net/xfrm/xfrm_policy.c | 92255 | +++ b/net/xfrm/xfrm_policy.c |
93290 | @@ -334,7 +334,7 @@ static void xfrm_policy_kill(struct xfrm_policy *policy) | 92256 | @@ -334,7 +334,7 @@ static void xfrm_policy_kill(struct xfrm_policy *policy) |
@@ -93305,7 +92271,7 @@ index 167c67d..3f2ae427 100644 | |||
93305 | rt_genid_bump(net); | 92271 | rt_genid_bump(net); |
93306 | if (delpol) { | 92272 | if (delpol) { |
93307 | xfrm_policy_requeue(delpol, policy); | 92273 | xfrm_policy_requeue(delpol, policy); |
93308 | @@ -1611,7 +1611,7 @@ free_dst: | 92274 | @@ -1629,7 +1629,7 @@ free_dst: |
93309 | goto out; | 92275 | goto out; |
93310 | } | 92276 | } |
93311 | 92277 | ||
@@ -93314,7 +92280,7 @@ index 167c67d..3f2ae427 100644 | |||
93314 | xfrm_dst_alloc_copy(void **target, const void *src, int size) | 92280 | xfrm_dst_alloc_copy(void **target, const void *src, int size) |
93315 | { | 92281 | { |
93316 | if (!*target) { | 92282 | if (!*target) { |
93317 | @@ -1623,7 +1623,7 @@ xfrm_dst_alloc_copy(void **target, const void *src, int size) | 92283 | @@ -1641,7 +1641,7 @@ xfrm_dst_alloc_copy(void **target, const void *src, int size) |
93318 | return 0; | 92284 | return 0; |
93319 | } | 92285 | } |
93320 | 92286 | ||
@@ -93323,7 +92289,7 @@ index 167c67d..3f2ae427 100644 | |||
93323 | xfrm_dst_update_parent(struct dst_entry *dst, const struct xfrm_selector *sel) | 92289 | xfrm_dst_update_parent(struct dst_entry *dst, const struct xfrm_selector *sel) |
93324 | { | 92290 | { |
93325 | #ifdef CONFIG_XFRM_SUB_POLICY | 92291 | #ifdef CONFIG_XFRM_SUB_POLICY |
93326 | @@ -1635,7 +1635,7 @@ xfrm_dst_update_parent(struct dst_entry *dst, const struct xfrm_selector *sel) | 92292 | @@ -1653,7 +1653,7 @@ xfrm_dst_update_parent(struct dst_entry *dst, const struct xfrm_selector *sel) |
93327 | #endif | 92293 | #endif |
93328 | } | 92294 | } |
93329 | 92295 | ||
@@ -93332,7 +92298,7 @@ index 167c67d..3f2ae427 100644 | |||
93332 | xfrm_dst_update_origin(struct dst_entry *dst, const struct flowi *fl) | 92298 | xfrm_dst_update_origin(struct dst_entry *dst, const struct flowi *fl) |
93333 | { | 92299 | { |
93334 | #ifdef CONFIG_XFRM_SUB_POLICY | 92300 | #ifdef CONFIG_XFRM_SUB_POLICY |
93335 | @@ -1729,7 +1729,7 @@ xfrm_resolve_and_create_bundle(struct xfrm_policy **pols, int num_pols, | 92301 | @@ -1747,7 +1747,7 @@ xfrm_resolve_and_create_bundle(struct xfrm_policy **pols, int num_pols, |
93336 | 92302 | ||
93337 | xdst->num_pols = num_pols; | 92303 | xdst->num_pols = num_pols; |
93338 | memcpy(xdst->pols, pols, sizeof(struct xfrm_policy*) * num_pols); | 92304 | memcpy(xdst->pols, pols, sizeof(struct xfrm_policy*) * num_pols); |
@@ -93341,7 +92307,7 @@ index 167c67d..3f2ae427 100644 | |||
93341 | 92307 | ||
93342 | return xdst; | 92308 | return xdst; |
93343 | } | 92309 | } |
93344 | @@ -2598,7 +2598,7 @@ static int xfrm_bundle_ok(struct xfrm_dst *first) | 92310 | @@ -2618,7 +2618,7 @@ static int xfrm_bundle_ok(struct xfrm_dst *first) |
93345 | if (xdst->xfrm_genid != dst->xfrm->genid) | 92311 | if (xdst->xfrm_genid != dst->xfrm->genid) |
93346 | return 0; | 92312 | return 0; |
93347 | if (xdst->num_pols > 0 && | 92313 | if (xdst->num_pols > 0 && |
@@ -93350,7 +92316,7 @@ index 167c67d..3f2ae427 100644 | |||
93350 | return 0; | 92316 | return 0; |
93351 | 92317 | ||
93352 | mtu = dst_mtu(dst->child); | 92318 | mtu = dst_mtu(dst->child); |
93353 | @@ -2686,8 +2686,11 @@ int xfrm_policy_register_afinfo(struct xfrm_policy_afinfo *afinfo) | 92319 | @@ -2706,8 +2706,11 @@ int xfrm_policy_register_afinfo(struct xfrm_policy_afinfo *afinfo) |
93354 | dst_ops->link_failure = xfrm_link_failure; | 92320 | dst_ops->link_failure = xfrm_link_failure; |
93355 | if (likely(dst_ops->neigh_lookup == NULL)) | 92321 | if (likely(dst_ops->neigh_lookup == NULL)) |
93356 | dst_ops->neigh_lookup = xfrm_neigh_lookup; | 92322 | dst_ops->neigh_lookup = xfrm_neigh_lookup; |
@@ -93364,7 +92330,7 @@ index 167c67d..3f2ae427 100644 | |||
93364 | rcu_assign_pointer(xfrm_policy_afinfo[afinfo->family], afinfo); | 92330 | rcu_assign_pointer(xfrm_policy_afinfo[afinfo->family], afinfo); |
93365 | } | 92331 | } |
93366 | spin_unlock(&xfrm_policy_afinfo_lock); | 92332 | spin_unlock(&xfrm_policy_afinfo_lock); |
93367 | @@ -2741,7 +2744,9 @@ int xfrm_policy_unregister_afinfo(struct xfrm_policy_afinfo *afinfo) | 92333 | @@ -2761,7 +2764,9 @@ int xfrm_policy_unregister_afinfo(struct xfrm_policy_afinfo *afinfo) |
93368 | dst_ops->check = NULL; | 92334 | dst_ops->check = NULL; |
93369 | dst_ops->negative_advice = NULL; | 92335 | dst_ops->negative_advice = NULL; |
93370 | dst_ops->link_failure = NULL; | 92336 | dst_ops->link_failure = NULL; |
@@ -93375,7 +92341,7 @@ index 167c67d..3f2ae427 100644 | |||
93375 | } | 92341 | } |
93376 | return err; | 92342 | return err; |
93377 | } | 92343 | } |
93378 | @@ -3124,7 +3129,7 @@ static int xfrm_policy_migrate(struct xfrm_policy *pol, | 92344 | @@ -3144,7 +3149,7 @@ static int xfrm_policy_migrate(struct xfrm_policy *pol, |
93379 | sizeof(pol->xfrm_vec[i].saddr)); | 92345 | sizeof(pol->xfrm_vec[i].saddr)); |
93380 | pol->xfrm_vec[i].encap_family = mp->new_family; | 92346 | pol->xfrm_vec[i].encap_family = mp->new_family; |
93381 | /* flush bundles */ | 92347 | /* flush bundles */ |
@@ -93385,7 +92351,7 @@ index 167c67d..3f2ae427 100644 | |||
93385 | } | 92351 | } |
93386 | 92352 | ||
93387 | diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c | 92353 | diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c |
93388 | index 2c341bd..4404211 100644 | 92354 | index 78f66fa..9286768 100644 |
93389 | --- a/net/xfrm/xfrm_state.c | 92355 | --- a/net/xfrm/xfrm_state.c |
93390 | +++ b/net/xfrm/xfrm_state.c | 92356 | +++ b/net/xfrm/xfrm_state.c |
93391 | @@ -177,12 +177,14 @@ int xfrm_register_type(const struct xfrm_type *type, unsigned short family) | 92357 | @@ -177,12 +177,14 @@ int xfrm_register_type(const struct xfrm_type *type, unsigned short family) |
@@ -93493,7 +92459,7 @@ index 05a6e3d..6716ec9 100644 | |||
93493 | __xfrm_sysctl_init(net); | 92459 | __xfrm_sysctl_init(net); |
93494 | 92460 | ||
93495 | diff --git a/scripts/Makefile.build b/scripts/Makefile.build | 92461 | diff --git a/scripts/Makefile.build b/scripts/Makefile.build |
93496 | index 0e801c3..5c8ad3b 100644 | 92462 | index d5d859c..781cbcb 100644 |
93497 | --- a/scripts/Makefile.build | 92463 | --- a/scripts/Makefile.build |
93498 | +++ b/scripts/Makefile.build | 92464 | +++ b/scripts/Makefile.build |
93499 | @@ -111,7 +111,7 @@ endif | 92465 | @@ -111,7 +111,7 @@ endif |
@@ -93591,7 +92557,7 @@ index 1ac414f..38575f7 100644 | |||
93591 | + $(host-cxxmulti) $(host-cxxobjs) $(host-cshlib) $(host-cshobjs) $(host-cxxshlib) $(host-cxxshobjs) | 92557 | + $(host-cxxmulti) $(host-cxxobjs) $(host-cshlib) $(host-cshobjs) $(host-cxxshlib) $(host-cxxshobjs) |
93592 | 92558 | ||
93593 | diff --git a/scripts/basic/fixdep.c b/scripts/basic/fixdep.c | 92559 | diff --git a/scripts/basic/fixdep.c b/scripts/basic/fixdep.c |
93594 | index 7f6425e..9864506 100644 | 92560 | index 078fe1d..fbdb363 100644 |
93595 | --- a/scripts/basic/fixdep.c | 92561 | --- a/scripts/basic/fixdep.c |
93596 | +++ b/scripts/basic/fixdep.c | 92562 | +++ b/scripts/basic/fixdep.c |
93597 | @@ -161,7 +161,7 @@ static unsigned int strhash(const char *str, unsigned int sz) | 92563 | @@ -161,7 +161,7 @@ static unsigned int strhash(const char *str, unsigned int sz) |
@@ -93628,7 +92594,7 @@ index 7f6425e..9864506 100644 | |||
93628 | const char *p, *q; | 92594 | const char *p, *q; |
93629 | 92595 | ||
93630 | for (; m < end; m++) { | 92596 | for (; m < end; m++) { |
93631 | @@ -406,7 +406,7 @@ static void print_deps(void) | 92597 | @@ -435,7 +435,7 @@ static void print_deps(void) |
93632 | static void traps(void) | 92598 | static void traps(void) |
93633 | { | 92599 | { |
93634 | static char test[] __attribute__((aligned(sizeof(int)))) = "CONF"; | 92600 | static char test[] __attribute__((aligned(sizeof(int)))) = "CONF"; |
@@ -93660,23 +92626,23 @@ index 0000000..5e0222d | |||
93660 | + [[ "$plugincc" =~ "$1" ]] && echo "$1" | 92626 | + [[ "$plugincc" =~ "$1" ]] && echo "$1" |
93661 | + [[ "$plugincc" =~ "$2" ]] && echo "$2" | 92627 | + [[ "$plugincc" =~ "$2" ]] && echo "$2" |
93662 | +fi | 92628 | +fi |
93663 | diff --git a/scripts/headers_install.pl b/scripts/headers_install.pl | 92629 | diff --git a/scripts/headers_install.sh b/scripts/headers_install.sh |
93664 | index 581ca99..a6ff02e 100644 | 92630 | index 643764f..6cc0137 100644 |
93665 | --- a/scripts/headers_install.pl | 92631 | --- a/scripts/headers_install.sh |
93666 | +++ b/scripts/headers_install.pl | 92632 | +++ b/scripts/headers_install.sh |
93667 | @@ -35,6 +35,7 @@ foreach my $filename (@files) { | 92633 | @@ -29,6 +29,7 @@ do |
93668 | $line =~ s/([\s(])__user\s/$1/g; | 92634 | FILE="$(basename "$i")" |
93669 | $line =~ s/([\s(])__force\s/$1/g; | 92635 | sed -r \ |
93670 | $line =~ s/([\s(])__iomem\s/$1/g; | 92636 | -e 's/([ \t(])(__user|__force|__iomem)[ \t]/\1/g' \ |
93671 | + $line =~ s/(\s?)__intentional_overflow\([-\d\s,]*\)\s?/$1/g; | 92637 | + -e 's/__intentional_overflow\([- \t,0-9]*\)//g' \ |
93672 | $line =~ s/\s__attribute_const__\s/ /g; | 92638 | -e 's/__attribute_const__([ \t]|$)/\1/g' \ |
93673 | $line =~ s/\s__attribute_const__$//g; | 92639 | -e 's@^#include <linux/compiler.h>@@' \ |
93674 | $line =~ s/\b__packed\b/__attribute__((packed))/g; | 92640 | -e 's/(^|[^a-zA-Z0-9])__packed([^a-zA-Z0-9_]|$)/\1__attribute__((packed))\2/g' \ |
93675 | diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh | 92641 | diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh |
93676 | index 3d569d6..0c09522 100644 | 92642 | index 0149949..d482a0d 100644 |
93677 | --- a/scripts/link-vmlinux.sh | 92643 | --- a/scripts/link-vmlinux.sh |
93678 | +++ b/scripts/link-vmlinux.sh | 92644 | +++ b/scripts/link-vmlinux.sh |
93679 | @@ -159,7 +159,7 @@ else | 92645 | @@ -158,7 +158,7 @@ else |
93680 | fi; | 92646 | fi; |
93681 | 92647 | ||
93682 | # final build of init/ | 92648 | # final build of init/ |
@@ -93686,7 +92652,7 @@ index 3d569d6..0c09522 100644 | |||
93686 | kallsymso="" | 92652 | kallsymso="" |
93687 | kallsyms_vmlinux="" | 92653 | kallsyms_vmlinux="" |
93688 | diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c | 92654 | diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c |
93689 | index 771ac17..9f0d3ee 100644 | 92655 | index 45f9a33..e4194b3 100644 |
93690 | --- a/scripts/mod/file2alias.c | 92656 | --- a/scripts/mod/file2alias.c |
93691 | +++ b/scripts/mod/file2alias.c | 92657 | +++ b/scripts/mod/file2alias.c |
93692 | @@ -140,7 +140,7 @@ static void device_id_check(const char *modname, const char *device_id, | 92658 | @@ -140,7 +140,7 @@ static void device_id_check(const char *modname, const char *device_id, |
@@ -93753,10 +92719,10 @@ index 771ac17..9f0d3ee 100644 | |||
93753 | sprintf(alias, "dmi*"); | 92719 | sprintf(alias, "dmi*"); |
93754 | 92720 | ||
93755 | diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c | 92721 | diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c |
93756 | index 78b30c1..536850d 100644 | 92722 | index a4be8e1..6e8a5fb 100644 |
93757 | --- a/scripts/mod/modpost.c | 92723 | --- a/scripts/mod/modpost.c |
93758 | +++ b/scripts/mod/modpost.c | 92724 | +++ b/scripts/mod/modpost.c |
93759 | @@ -931,6 +931,7 @@ enum mismatch { | 92725 | @@ -933,6 +933,7 @@ enum mismatch { |
93760 | ANY_INIT_TO_ANY_EXIT, | 92726 | ANY_INIT_TO_ANY_EXIT, |
93761 | ANY_EXIT_TO_ANY_INIT, | 92727 | ANY_EXIT_TO_ANY_INIT, |
93762 | EXPORT_TO_INIT_EXIT, | 92728 | EXPORT_TO_INIT_EXIT, |
@@ -93764,7 +92730,7 @@ index 78b30c1..536850d 100644 | |||
93764 | }; | 92730 | }; |
93765 | 92731 | ||
93766 | struct sectioncheck { | 92732 | struct sectioncheck { |
93767 | @@ -1045,6 +1046,12 @@ const struct sectioncheck sectioncheck[] = { | 92733 | @@ -1047,6 +1048,12 @@ const struct sectioncheck sectioncheck[] = { |
93768 | .tosec = { INIT_SECTIONS, EXIT_SECTIONS, NULL }, | 92734 | .tosec = { INIT_SECTIONS, EXIT_SECTIONS, NULL }, |
93769 | .mismatch = EXPORT_TO_INIT_EXIT, | 92735 | .mismatch = EXPORT_TO_INIT_EXIT, |
93770 | .symbol_white_list = { DEFAULT_SYMBOL_WHITE_LIST, NULL }, | 92736 | .symbol_white_list = { DEFAULT_SYMBOL_WHITE_LIST, NULL }, |
@@ -93777,7 +92743,7 @@ index 78b30c1..536850d 100644 | |||
93777 | } | 92743 | } |
93778 | }; | 92744 | }; |
93779 | 92745 | ||
93780 | @@ -1167,10 +1174,10 @@ static Elf_Sym *find_elf_symbol(struct elf_info *elf, Elf64_Sword addr, | 92746 | @@ -1169,10 +1176,10 @@ static Elf_Sym *find_elf_symbol(struct elf_info *elf, Elf64_Sword addr, |
93781 | continue; | 92747 | continue; |
93782 | if (ELF_ST_TYPE(sym->st_info) == STT_SECTION) | 92748 | if (ELF_ST_TYPE(sym->st_info) == STT_SECTION) |
93783 | continue; | 92749 | continue; |
@@ -93790,7 +92756,7 @@ index 78b30c1..536850d 100644 | |||
93790 | if (d < 0) | 92756 | if (d < 0) |
93791 | d = addr - sym->st_value; | 92757 | d = addr - sym->st_value; |
93792 | if (d < distance) { | 92758 | if (d < distance) { |
93793 | @@ -1449,6 +1456,14 @@ static void report_sec_mismatch(const char *modname, | 92759 | @@ -1451,6 +1458,14 @@ static void report_sec_mismatch(const char *modname, |
93794 | tosym, prl_to, prl_to, tosym); | 92760 | tosym, prl_to, prl_to, tosym); |
93795 | free(prl_to); | 92761 | free(prl_to); |
93796 | break; | 92762 | break; |
@@ -93805,7 +92771,7 @@ index 78b30c1..536850d 100644 | |||
93805 | } | 92771 | } |
93806 | fprintf(stderr, "\n"); | 92772 | fprintf(stderr, "\n"); |
93807 | } | 92773 | } |
93808 | @@ -1683,7 +1698,7 @@ static void section_rel(const char *modname, struct elf_info *elf, | 92774 | @@ -1685,7 +1700,7 @@ static void section_rel(const char *modname, struct elf_info *elf, |
93809 | static void check_sec_ref(struct module *mod, const char *modname, | 92775 | static void check_sec_ref(struct module *mod, const char *modname, |
93810 | struct elf_info *elf) | 92776 | struct elf_info *elf) |
93811 | { | 92777 | { |
@@ -93814,7 +92780,7 @@ index 78b30c1..536850d 100644 | |||
93814 | Elf_Shdr *sechdrs = elf->sechdrs; | 92780 | Elf_Shdr *sechdrs = elf->sechdrs; |
93815 | 92781 | ||
93816 | /* Walk through all sections */ | 92782 | /* Walk through all sections */ |
93817 | @@ -1781,7 +1796,7 @@ void __attribute__((format(printf, 2, 3))) buf_printf(struct buffer *buf, | 92783 | @@ -1804,7 +1819,7 @@ void __attribute__((format(printf, 2, 3))) buf_printf(struct buffer *buf, |
93818 | va_end(ap); | 92784 | va_end(ap); |
93819 | } | 92785 | } |
93820 | 92786 | ||
@@ -93823,7 +92789,7 @@ index 78b30c1..536850d 100644 | |||
93823 | { | 92789 | { |
93824 | if (buf->size - buf->pos < len) { | 92790 | if (buf->size - buf->pos < len) { |
93825 | buf->size += len + SZ; | 92791 | buf->size += len + SZ; |
93826 | @@ -1999,7 +2014,7 @@ static void write_if_changed(struct buffer *b, const char *fname) | 92792 | @@ -2023,7 +2038,7 @@ static void write_if_changed(struct buffer *b, const char *fname) |
93827 | if (fstat(fileno(file), &st) < 0) | 92793 | if (fstat(fileno(file), &st) < 0) |
93828 | goto close_write; | 92794 | goto close_write; |
93829 | 92795 | ||
@@ -93928,10 +92894,10 @@ index f5eb43d..1814de8 100644 | |||
93928 | shdr = (Elf_Shdr *)((char *)ehdr + _r(&ehdr->e_shoff)); | 92894 | shdr = (Elf_Shdr *)((char *)ehdr + _r(&ehdr->e_shoff)); |
93929 | shstrtab_sec = shdr + r2(&ehdr->e_shstrndx); | 92895 | shstrtab_sec = shdr + r2(&ehdr->e_shstrndx); |
93930 | diff --git a/security/Kconfig b/security/Kconfig | 92896 | diff --git a/security/Kconfig b/security/Kconfig |
93931 | index e9c6ac7..66bf8e9 100644 | 92897 | index e9c6ac7..0d298ea 100644 |
93932 | --- a/security/Kconfig | 92898 | --- a/security/Kconfig |
93933 | +++ b/security/Kconfig | 92899 | +++ b/security/Kconfig |
93934 | @@ -4,6 +4,945 @@ | 92900 | @@ -4,6 +4,956 @@ |
93935 | 92901 | ||
93936 | menu "Security options" | 92902 | menu "Security options" |
93937 | 92903 | ||
@@ -94669,21 +93635,32 @@ index e9c6ac7..66bf8e9 100644 | |||
94669 | + default y if (GRKERNSEC_CONFIG_AUTO && GRKERNSEC_CONFIG_PRIORITY_SECURITY) | 93635 | + default y if (GRKERNSEC_CONFIG_AUTO && GRKERNSEC_CONFIG_PRIORITY_SECURITY) |
94670 | + depends on !HIBERNATION | 93636 | + depends on !HIBERNATION |
94671 | + help | 93637 | + help |
94672 | + By saying Y here the kernel will erase memory pages as soon as they | 93638 | + By saying Y here the kernel will erase memory pages and slab objects |
94673 | + are freed. This in turn reduces the lifetime of data stored in the | 93639 | + as soon as they are freed. This in turn reduces the lifetime of data |
94674 | + pages, making it less likely that sensitive information such as | 93640 | + stored in them, making it less likely that sensitive information such |
94675 | + passwords, cryptographic secrets, etc stay in memory for too long. | 93641 | + as passwords, cryptographic secrets, etc stay in memory for too long. |
94676 | + | 93642 | + |
94677 | + This is especially useful for programs whose runtime is short, long | 93643 | + This is especially useful for programs whose runtime is short, long |
94678 | + lived processes and the kernel itself benefit from this as long as | 93644 | + lived processes and the kernel itself benefit from this as long as |
94679 | + they operate on whole memory pages and ensure timely freeing of pages | 93645 | + they ensure timely freeing of memory that may hold sensitive |
94680 | + that may hold sensitive information. | 93646 | + information. |
93647 | + | ||
93648 | + A nice side effect of the sanitization of slab objects is the | ||
93649 | + reduction of possible info leaks caused by padding bytes within the | ||
93650 | + leaky structures. Use-after-free bugs for structures containing | ||
93651 | + pointers can also be detected as dereferencing the sanitized pointer | ||
93652 | + will generate an access violation. | ||
94681 | + | 93653 | + |
94682 | + The tradeoff is performance impact, on a single CPU system kernel | 93654 | + The tradeoff is performance impact, on a single CPU system kernel |
94683 | + compilation sees a 3% slowdown, other systems and workloads may vary | 93655 | + compilation sees a 3% slowdown, other systems and workloads may vary |
94684 | + and you are advised to test this feature on your expected workload | 93656 | + and you are advised to test this feature on your expected workload |
94685 | + before deploying it. | 93657 | + before deploying it. |
94686 | + | 93658 | + |
93659 | + To reduce the performance penalty by sanitizing pages only, albeit | ||
93660 | + limiting the effectiveness of this feature at the same time, slab | ||
93661 | + sanitization can be disabled with the kernel commandline parameter | ||
93662 | + "pax_sanitize_slab=0". | ||
93663 | + | ||
94687 | + Note that this feature does not protect data stored in live pages, | 93664 | + Note that this feature does not protect data stored in live pages, |
94688 | + e.g., process memory swapped to disk may stay there for a long time. | 93665 | + e.g., process memory swapped to disk may stay there for a long time. |
94689 | + | 93666 | + |
@@ -94877,7 +93854,7 @@ index e9c6ac7..66bf8e9 100644 | |||
94877 | source security/keys/Kconfig | 93854 | source security/keys/Kconfig |
94878 | 93855 | ||
94879 | config SECURITY_DMESG_RESTRICT | 93856 | config SECURITY_DMESG_RESTRICT |
94880 | @@ -103,7 +1042,7 @@ config INTEL_TXT | 93857 | @@ -103,7 +1053,7 @@ config INTEL_TXT |
94881 | config LSM_MMAP_MIN_ADDR | 93858 | config LSM_MMAP_MIN_ADDR |
94882 | int "Low address space for LSM to protect from user allocation" | 93859 | int "Low address space for LSM to protect from user allocation" |
94883 | depends on SECURITY && SECURITY_SELINUX | 93860 | depends on SECURITY && SECURITY_SELINUX |
@@ -95286,10 +94263,10 @@ index d65fa7f..cbfe366 100644 | |||
95286 | if (iov != iovstack) | 94263 | if (iov != iovstack) |
95287 | kfree(iov); | 94264 | kfree(iov); |
95288 | diff --git a/security/keys/internal.h b/security/keys/internal.h | 94265 | diff --git a/security/keys/internal.h b/security/keys/internal.h |
95289 | index 8bbefc3..299d03f 100644 | 94266 | index d4f1468..cc52f92 100644 |
95290 | --- a/security/keys/internal.h | 94267 | --- a/security/keys/internal.h |
95291 | +++ b/security/keys/internal.h | 94268 | +++ b/security/keys/internal.h |
95292 | @@ -240,7 +240,7 @@ extern long keyctl_instantiate_key_iov(key_serial_t, | 94269 | @@ -242,7 +242,7 @@ extern long keyctl_instantiate_key_iov(key_serial_t, |
95293 | extern long keyctl_invalidate_key(key_serial_t); | 94270 | extern long keyctl_invalidate_key(key_serial_t); |
95294 | 94271 | ||
95295 | extern long keyctl_instantiate_key_common(key_serial_t, | 94272 | extern long keyctl_instantiate_key_common(key_serial_t, |
@@ -95356,10 +94333,10 @@ index 8fb7c7b..ba3610d 100644 | |||
95356 | /* record the root user tracking */ | 94333 | /* record the root user tracking */ |
95357 | rb_link_node(&root_key_user.node, | 94334 | rb_link_node(&root_key_user.node, |
95358 | diff --git a/security/keys/keyctl.c b/security/keys/keyctl.c | 94335 | diff --git a/security/keys/keyctl.c b/security/keys/keyctl.c |
95359 | index 4b5c948..2054dc1 100644 | 94336 | index 33cfd27..842fc5a 100644 |
95360 | --- a/security/keys/keyctl.c | 94337 | --- a/security/keys/keyctl.c |
95361 | +++ b/security/keys/keyctl.c | 94338 | +++ b/security/keys/keyctl.c |
95362 | @@ -986,7 +986,7 @@ static int keyctl_change_reqkey_auth(struct key *key) | 94339 | @@ -987,7 +987,7 @@ static int keyctl_change_reqkey_auth(struct key *key) |
95363 | /* | 94340 | /* |
95364 | * Copy the iovec data from userspace | 94341 | * Copy the iovec data from userspace |
95365 | */ | 94342 | */ |
@@ -95368,7 +94345,7 @@ index 4b5c948..2054dc1 100644 | |||
95368 | unsigned ioc) | 94345 | unsigned ioc) |
95369 | { | 94346 | { |
95370 | for (; ioc > 0; ioc--) { | 94347 | for (; ioc > 0; ioc--) { |
95371 | @@ -1008,7 +1008,7 @@ static long copy_from_user_iovec(void *buffer, const struct iovec *iov, | 94348 | @@ -1009,7 +1009,7 @@ static long copy_from_user_iovec(void *buffer, const struct iovec *iov, |
95372 | * If successful, 0 will be returned. | 94349 | * If successful, 0 will be returned. |
95373 | */ | 94350 | */ |
95374 | long keyctl_instantiate_key_common(key_serial_t id, | 94351 | long keyctl_instantiate_key_common(key_serial_t id, |
@@ -95377,7 +94354,7 @@ index 4b5c948..2054dc1 100644 | |||
95377 | unsigned ioc, | 94354 | unsigned ioc, |
95378 | size_t plen, | 94355 | size_t plen, |
95379 | key_serial_t ringid) | 94356 | key_serial_t ringid) |
95380 | @@ -1103,7 +1103,7 @@ long keyctl_instantiate_key(key_serial_t id, | 94357 | @@ -1104,7 +1104,7 @@ long keyctl_instantiate_key(key_serial_t id, |
95381 | [0].iov_len = plen | 94358 | [0].iov_len = plen |
95382 | }; | 94359 | }; |
95383 | 94360 | ||
@@ -95386,7 +94363,7 @@ index 4b5c948..2054dc1 100644 | |||
95386 | } | 94363 | } |
95387 | 94364 | ||
95388 | return keyctl_instantiate_key_common(id, NULL, 0, 0, ringid); | 94365 | return keyctl_instantiate_key_common(id, NULL, 0, 0, ringid); |
95389 | @@ -1136,7 +1136,7 @@ long keyctl_instantiate_key_iov(key_serial_t id, | 94366 | @@ -1137,7 +1137,7 @@ long keyctl_instantiate_key_iov(key_serial_t id, |
95390 | if (ret == 0) | 94367 | if (ret == 0) |
95391 | goto no_payload_free; | 94368 | goto no_payload_free; |
95392 | 94369 | ||
@@ -95440,7 +94417,7 @@ index f728728..6457a0c 100644 | |||
95440 | 94417 | ||
95441 | /* | 94418 | /* |
95442 | diff --git a/security/security.c b/security/security.c | 94419 | diff --git a/security/security.c b/security/security.c |
95443 | index 03f248b..5710c33 100644 | 94420 | index a3dce87..9ca1435 100644 |
95444 | --- a/security/security.c | 94421 | --- a/security/security.c |
95445 | +++ b/security/security.c | 94422 | +++ b/security/security.c |
95446 | @@ -20,6 +20,7 @@ | 94423 | @@ -20,6 +20,7 @@ |
@@ -95473,7 +94450,7 @@ index 03f248b..5710c33 100644 | |||
95473 | 94450 | ||
95474 | /* Save user chosen LSM */ | 94451 | /* Save user chosen LSM */ |
95475 | diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c | 94452 | diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c |
95476 | index 7171a95..c35e879 100644 | 94453 | index 5c6f2cd..b4f945c 100644 |
95477 | --- a/security/selinux/hooks.c | 94454 | --- a/security/selinux/hooks.c |
95478 | +++ b/security/selinux/hooks.c | 94455 | +++ b/security/selinux/hooks.c |
95479 | @@ -96,8 +96,6 @@ | 94456 | @@ -96,8 +96,6 @@ |
@@ -95485,7 +94462,7 @@ index 7171a95..c35e879 100644 | |||
95485 | /* SECMARK reference count */ | 94462 | /* SECMARK reference count */ |
95486 | static atomic_t selinux_secmark_refcount = ATOMIC_INIT(0); | 94463 | static atomic_t selinux_secmark_refcount = ATOMIC_INIT(0); |
95487 | 94464 | ||
95488 | @@ -5498,7 +5496,7 @@ static int selinux_key_getsecurity(struct key *key, char **_buffer) | 94465 | @@ -5529,7 +5527,7 @@ static int selinux_key_getsecurity(struct key *key, char **_buffer) |
95489 | 94466 | ||
95490 | #endif | 94467 | #endif |
95491 | 94468 | ||
@@ -95508,7 +94485,7 @@ index 65f67cb..3f141ef 100644 | |||
95508 | } | 94485 | } |
95509 | #else | 94486 | #else |
95510 | diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c | 94487 | diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c |
95511 | index fa64740..bc95b74 100644 | 94488 | index d52c780..6431349 100644 |
95512 | --- a/security/smack/smack_lsm.c | 94489 | --- a/security/smack/smack_lsm.c |
95513 | +++ b/security/smack/smack_lsm.c | 94490 | +++ b/security/smack/smack_lsm.c |
95514 | @@ -3392,7 +3392,7 @@ static int smack_inode_getsecctx(struct inode *inode, void **ctx, u32 *ctxlen) | 94491 | @@ -3392,7 +3392,7 @@ static int smack_inode_getsecctx(struct inode *inode, void **ctx, u32 *ctxlen) |
@@ -95536,7 +94513,7 @@ index 390c646..f2f8db3 100644 | |||
95536 | if (!fstype) { | 94513 | if (!fstype) { |
95537 | error = -ENODEV; | 94514 | error = -ENODEV; |
95538 | diff --git a/security/tomoyo/tomoyo.c b/security/tomoyo/tomoyo.c | 94515 | diff --git a/security/tomoyo/tomoyo.c b/security/tomoyo/tomoyo.c |
95539 | index a2ee362..5754f34 100644 | 94516 | index f0b756e..b129202 100644 |
95540 | --- a/security/tomoyo/tomoyo.c | 94517 | --- a/security/tomoyo/tomoyo.c |
95541 | +++ b/security/tomoyo/tomoyo.c | 94518 | +++ b/security/tomoyo/tomoyo.c |
95542 | @@ -503,7 +503,7 @@ static int tomoyo_socket_sendmsg(struct socket *sock, struct msghdr *msg, | 94519 | @@ -503,7 +503,7 @@ static int tomoyo_socket_sendmsg(struct socket *sock, struct msghdr *msg, |
@@ -95743,10 +94720,10 @@ index af49721..e85058e 100644 | |||
95743 | if (err < 0) | 94720 | if (err < 0) |
95744 | return err; | 94721 | return err; |
95745 | diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c | 94722 | diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c |
95746 | index eb560fa..69a4995 100644 | 94723 | index f928181..33fb83d 100644 |
95747 | --- a/sound/core/pcm_native.c | 94724 | --- a/sound/core/pcm_native.c |
95748 | +++ b/sound/core/pcm_native.c | 94725 | +++ b/sound/core/pcm_native.c |
95749 | @@ -2806,11 +2806,11 @@ int snd_pcm_kernel_ioctl(struct snd_pcm_substream *substream, | 94726 | @@ -2819,11 +2819,11 @@ int snd_pcm_kernel_ioctl(struct snd_pcm_substream *substream, |
95750 | switch (substream->stream) { | 94727 | switch (substream->stream) { |
95751 | case SNDRV_PCM_STREAM_PLAYBACK: | 94728 | case SNDRV_PCM_STREAM_PLAYBACK: |
95752 | result = snd_pcm_playback_ioctl1(NULL, substream, cmd, | 94729 | result = snd_pcm_playback_ioctl1(NULL, substream, cmd, |
@@ -95801,7 +94778,7 @@ index 040c60e..989a19a 100644 | |||
95801 | dev->driver_data = NULL; | 94778 | dev->driver_data = NULL; |
95802 | ops->num_init_devices--; | 94779 | ops->num_init_devices--; |
95803 | diff --git a/sound/core/sound.c b/sound/core/sound.c | 94780 | diff --git a/sound/core/sound.c b/sound/core/sound.c |
95804 | index 70ccdab..50f2e10 100644 | 94781 | index f002bd9..c462985 100644 |
95805 | --- a/sound/core/sound.c | 94782 | --- a/sound/core/sound.c |
95806 | +++ b/sound/core/sound.c | 94783 | +++ b/sound/core/sound.c |
95807 | @@ -86,7 +86,7 @@ static void snd_request_other(int minor) | 94784 | @@ -86,7 +86,7 @@ static void snd_request_other(int minor) |
@@ -96070,63 +95047,6 @@ index 7d8803a..559f8d0 100644 | |||
96070 | 95047 | ||
96071 | list_add(&s->list, &cs4297a_devs); | 95048 | list_add(&s->list, &cs4297a_devs); |
96072 | 95049 | ||
96073 | diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c | ||
96074 | index dafe04a..660552c 100644 | ||
96075 | --- a/sound/pci/hda/patch_sigmatel.c | ||
96076 | +++ b/sound/pci/hda/patch_sigmatel.c | ||
96077 | @@ -418,9 +418,11 @@ static void stac_update_outputs(struct hda_codec *codec) | ||
96078 | val &= ~spec->eapd_mask; | ||
96079 | else | ||
96080 | val |= spec->eapd_mask; | ||
96081 | - if (spec->gpio_data != val) | ||
96082 | + if (spec->gpio_data != val) { | ||
96083 | + spec->gpio_data = val; | ||
96084 | stac_gpio_set(codec, spec->gpio_mask, spec->gpio_dir, | ||
96085 | val); | ||
96086 | + } | ||
96087 | } | ||
96088 | } | ||
96089 | |||
96090 | @@ -3228,7 +3230,7 @@ static const struct hda_fixup stac927x_fixups[] = { | ||
96091 | /* configure the analog microphone on some laptops */ | ||
96092 | { 0x0c, 0x90a79130 }, | ||
96093 | /* correct the front output jack as a hp out */ | ||
96094 | - { 0x0f, 0x0227011f }, | ||
96095 | + { 0x0f, 0x0221101f }, | ||
96096 | /* correct the front input jack as a mic */ | ||
96097 | { 0x0e, 0x02a79130 }, | ||
96098 | {} | ||
96099 | @@ -3608,20 +3610,18 @@ static int stac_parse_auto_config(struct hda_codec *codec) | ||
96100 | static int stac_init(struct hda_codec *codec) | ||
96101 | { | ||
96102 | struct sigmatel_spec *spec = codec->spec; | ||
96103 | - unsigned int gpio; | ||
96104 | int i; | ||
96105 | |||
96106 | /* override some hints */ | ||
96107 | stac_store_hints(codec); | ||
96108 | |||
96109 | /* set up GPIO */ | ||
96110 | - gpio = spec->gpio_data; | ||
96111 | /* turn on EAPD statically when spec->eapd_switch isn't set. | ||
96112 | * otherwise, unsol event will turn it on/off dynamically | ||
96113 | */ | ||
96114 | if (!spec->eapd_switch) | ||
96115 | - gpio |= spec->eapd_mask; | ||
96116 | - stac_gpio_set(codec, spec->gpio_mask, spec->gpio_dir, gpio); | ||
96117 | + spec->gpio_data |= spec->eapd_mask; | ||
96118 | + stac_gpio_set(codec, spec->gpio_mask, spec->gpio_dir, spec->gpio_data); | ||
96119 | |||
96120 | snd_hda_gen_init(codec); | ||
96121 | |||
96122 | @@ -3930,6 +3930,7 @@ static void stac_setup_gpio(struct hda_codec *codec) | ||
96123 | { | ||
96124 | struct sigmatel_spec *spec = codec->spec; | ||
96125 | |||
96126 | + spec->gpio_mask |= spec->eapd_mask; | ||
96127 | if (spec->gpio_led) { | ||
96128 | if (!spec->vref_mute_led_nid) { | ||
96129 | spec->gpio_mask |= spec->gpio_led; | ||
96130 | diff --git a/sound/pci/ymfpci/ymfpci.h b/sound/pci/ymfpci/ymfpci.h | 95050 | diff --git a/sound/pci/ymfpci/ymfpci.h b/sound/pci/ymfpci/ymfpci.h |
96131 | index 4631a23..001ae57 100644 | 95051 | index 4631a23..001ae57 100644 |
96132 | --- a/sound/pci/ymfpci/ymfpci.h | 95052 | --- a/sound/pci/ymfpci/ymfpci.h |
@@ -96185,10 +95105,10 @@ index 22056c5..25d3244 100644 | |||
96185 | chip->pci = pci; | 95105 | chip->pci = pci; |
96186 | chip->irq = -1; | 95106 | chip->irq = -1; |
96187 | diff --git a/sound/soc/fsl/fsl_ssi.c b/sound/soc/fsl/fsl_ssi.c | 95107 | diff --git a/sound/soc/fsl/fsl_ssi.c b/sound/soc/fsl/fsl_ssi.c |
96188 | index 7decbd9..d17d9d0 100644 | 95108 | index 0f0bed6..c161e28 100644 |
96189 | --- a/sound/soc/fsl/fsl_ssi.c | 95109 | --- a/sound/soc/fsl/fsl_ssi.c |
96190 | +++ b/sound/soc/fsl/fsl_ssi.c | 95110 | +++ b/sound/soc/fsl/fsl_ssi.c |
96191 | @@ -643,7 +643,7 @@ static int fsl_ssi_probe(struct platform_device *pdev) | 95111 | @@ -657,7 +657,7 @@ static int fsl_ssi_probe(struct platform_device *pdev) |
96192 | { | 95112 | { |
96193 | struct fsl_ssi_private *ssi_private; | 95113 | struct fsl_ssi_private *ssi_private; |
96194 | int ret = 0; | 95114 | int ret = 0; |
@@ -96198,7 +95118,7 @@ index 7decbd9..d17d9d0 100644 | |||
96198 | const char *p, *sprop; | 95118 | const char *p, *sprop; |
96199 | const uint32_t *iprop; | 95119 | const uint32_t *iprop; |
96200 | diff --git a/sound/sound_core.c b/sound/sound_core.c | 95120 | diff --git a/sound/sound_core.c b/sound/sound_core.c |
96201 | index bb23009..db346c2 100644 | 95121 | index 359753f..45759f4 100644 |
96202 | --- a/sound/sound_core.c | 95122 | --- a/sound/sound_core.c |
96203 | +++ b/sound/sound_core.c | 95123 | +++ b/sound/sound_core.c |
96204 | @@ -292,7 +292,7 @@ retry: | 95124 | @@ -292,7 +292,7 @@ retry: |
@@ -96210,19 +95130,6 @@ index bb23009..db346c2 100644 | |||
96210 | return s->unit_minor; | 95130 | return s->unit_minor; |
96211 | 95131 | ||
96212 | fail: | 95132 | fail: |
96213 | diff --git a/sound/usb/6fire/pcm.c b/sound/usb/6fire/pcm.c | ||
96214 | index 40dd50a..6d0a6d1 100644 | ||
96215 | --- a/sound/usb/6fire/pcm.c | ||
96216 | +++ b/sound/usb/6fire/pcm.c | ||
96217 | @@ -543,7 +543,7 @@ static snd_pcm_uframes_t usb6fire_pcm_pointer( | ||
96218 | snd_pcm_uframes_t ret; | ||
96219 | |||
96220 | if (rt->panic || !sub) | ||
96221 | - return SNDRV_PCM_STATE_XRUN; | ||
96222 | + return SNDRV_PCM_POS_XRUN; | ||
96223 | |||
96224 | spin_lock_irqsave(&sub->lock, flags); | ||
96225 | ret = sub->dma_off; | ||
96226 | diff --git a/tools/gcc/.gitignore b/tools/gcc/.gitignore | 95133 | diff --git a/tools/gcc/.gitignore b/tools/gcc/.gitignore |
96227 | new file mode 100644 | 95134 | new file mode 100644 |
96228 | index 0000000..50f2f2f | 95135 | index 0000000..50f2f2f |
@@ -98264,10 +97171,10 @@ index 0000000..b5395ba | |||
98264 | +} | 97171 | +} |
98265 | diff --git a/tools/gcc/size_overflow_hash.data b/tools/gcc/size_overflow_hash.data | 97172 | diff --git a/tools/gcc/size_overflow_hash.data b/tools/gcc/size_overflow_hash.data |
98266 | new file mode 100644 | 97173 | new file mode 100644 |
98267 | index 0000000..7982a0c | 97174 | index 0000000..b04803b |
98268 | --- /dev/null | 97175 | --- /dev/null |
98269 | +++ b/tools/gcc/size_overflow_hash.data | 97176 | +++ b/tools/gcc/size_overflow_hash.data |
98270 | @@ -0,0 +1,5893 @@ | 97177 | @@ -0,0 +1,6350 @@ |
98271 | +intel_fake_agp_alloc_by_type_1 intel_fake_agp_alloc_by_type 1 1 NULL | 97178 | +intel_fake_agp_alloc_by_type_1 intel_fake_agp_alloc_by_type 1 1 NULL |
98272 | +batadv_orig_node_del_if_4 batadv_orig_node_del_if 2 4 NULL | 97179 | +batadv_orig_node_del_if_4 batadv_orig_node_del_if 2 4 NULL |
98273 | +storvsc_connect_to_vsp_22 storvsc_connect_to_vsp 2 22 NULL | 97180 | +storvsc_connect_to_vsp_22 storvsc_connect_to_vsp 2 22 NULL |
@@ -98293,6 +97200,7 @@ index 0000000..7982a0c | |||
98293 | +br_port_info_size_268 br_port_info_size 0 268 NULL | 97200 | +br_port_info_size_268 br_port_info_size 0 268 NULL |
98294 | +generic_file_direct_write_291 generic_file_direct_write 0 291 NULL | 97201 | +generic_file_direct_write_291 generic_file_direct_write 0 291 NULL |
98295 | +read_file_war_stats_292 read_file_war_stats 3 292 NULL | 97202 | +read_file_war_stats_292 read_file_war_stats 3 292 NULL |
97203 | +SYSC_connect_304 SYSC_connect 3 304 NULL | ||
98296 | +syslog_print_307 syslog_print 2 307 NULL | 97204 | +syslog_print_307 syslog_print 2 307 NULL |
98297 | +platform_device_add_data_310 platform_device_add_data 3 310 NULL | 97205 | +platform_device_add_data_310 platform_device_add_data 3 310 NULL |
98298 | +dn_setsockopt_314 dn_setsockopt 5 314 NULL | 97206 | +dn_setsockopt_314 dn_setsockopt 5 314 NULL |
@@ -98303,6 +97211,7 @@ index 0000000..7982a0c | |||
98303 | +snd_ca0106_ptr_read_467 snd_ca0106_ptr_read 0 467 NULL | 97211 | +snd_ca0106_ptr_read_467 snd_ca0106_ptr_read 0 467 NULL |
98304 | +_alloc_get_attr_desc_470 _alloc_get_attr_desc 2 470 NULL | 97212 | +_alloc_get_attr_desc_470 _alloc_get_attr_desc 2 470 NULL |
98305 | +dccp_manip_pkt_476 dccp_manip_pkt 4 476 NULL | 97213 | +dccp_manip_pkt_476 dccp_manip_pkt 4 476 NULL |
97214 | +nvme_trans_modesel_data_488 nvme_trans_modesel_data 4 488 NULL | ||
98306 | +pidlist_resize_496 pidlist_resize 2 496 NULL | 97215 | +pidlist_resize_496 pidlist_resize 2 496 NULL |
98307 | +read_vbt_r0_503 read_vbt_r0 1 503 NULL | 97216 | +read_vbt_r0_503 read_vbt_r0 1 503 NULL |
98308 | +rx_rx_defrag_end_read_505 rx_rx_defrag_end_read 3 505 NULL | 97217 | +rx_rx_defrag_end_read_505 rx_rx_defrag_end_read 3 505 NULL |
@@ -98321,6 +97230,7 @@ index 0000000..7982a0c | |||
98321 | +compat_sys_shmat_620 compat_sys_shmat 3 620 NULL | 97230 | +compat_sys_shmat_620 compat_sys_shmat 3 620 NULL |
98322 | +isp1760_register_628 isp1760_register 1-2 628 NULL | 97231 | +isp1760_register_628 isp1760_register 1-2 628 NULL |
98323 | +clone_split_bio_633 clone_split_bio 6 633 NULL | 97232 | +clone_split_bio_633 clone_split_bio 6 633 NULL |
97233 | +ceph_osdc_new_request_635 ceph_osdc_new_request 6 635 NULL | ||
98324 | +remap_to_cache_640 remap_to_cache 3 640 NULL | 97234 | +remap_to_cache_640 remap_to_cache 3 640 NULL |
98325 | +drbd_bm_find_next_643 drbd_bm_find_next 2 643 NULL | 97235 | +drbd_bm_find_next_643 drbd_bm_find_next 2 643 NULL |
98326 | +unlink_queued_645 unlink_queued 3-4 645 NULL | 97236 | +unlink_queued_645 unlink_queued 3-4 645 NULL |
@@ -98348,6 +97258,7 @@ index 0000000..7982a0c | |||
98348 | +pte_prefetch_gfn_to_pfn_997 pte_prefetch_gfn_to_pfn 2 997 NULL nohasharray | 97258 | +pte_prefetch_gfn_to_pfn_997 pte_prefetch_gfn_to_pfn 2 997 NULL nohasharray |
98349 | +hdlcdev_rx_997 hdlcdev_rx 3 997 &pte_prefetch_gfn_to_pfn_997 | 97259 | +hdlcdev_rx_997 hdlcdev_rx 3 997 &pte_prefetch_gfn_to_pfn_997 |
98350 | +dm_cache_set_dirty_1016 dm_cache_set_dirty 2 1016 NULL | 97260 | +dm_cache_set_dirty_1016 dm_cache_set_dirty 2 1016 NULL |
97261 | +_do_truncate_1019 _do_truncate 2 1019 NULL | ||
98351 | +smk_write_cipso2_1021 smk_write_cipso2 3 1021 NULL | 97262 | +smk_write_cipso2_1021 smk_write_cipso2 3 1021 NULL |
98352 | +gigaset_initdriver_1060 gigaset_initdriver 2 1060 NULL | 97263 | +gigaset_initdriver_1060 gigaset_initdriver 2 1060 NULL |
98353 | +Read_hfc16_1070 Read_hfc16 0 1070 NULL | 97264 | +Read_hfc16_1070 Read_hfc16 0 1070 NULL |
@@ -98360,6 +97271,7 @@ index 0000000..7982a0c | |||
98360 | +sys_mremap_1107 sys_mremap 5-1-2 1107 NULL | 97271 | +sys_mremap_1107 sys_mremap 5-1-2 1107 NULL |
98361 | +cfg80211_report_obss_beacon_1133 cfg80211_report_obss_beacon 3 1133 NULL | 97272 | +cfg80211_report_obss_beacon_1133 cfg80211_report_obss_beacon 3 1133 NULL |
98362 | +vmalloc_32_1135 vmalloc_32 1 1135 NULL | 97273 | +vmalloc_32_1135 vmalloc_32 1 1135 NULL |
97274 | +dec_zcache_eph_zpages_1138 dec_zcache_eph_zpages 1 1138 NULL | ||
98363 | +i2400m_rx_ctl_1157 i2400m_rx_ctl 4 1157 NULL | 97275 | +i2400m_rx_ctl_1157 i2400m_rx_ctl 4 1157 NULL |
98364 | +ipc_alloc_1192 ipc_alloc 1 1192 NULL | 97276 | +ipc_alloc_1192 ipc_alloc 1 1192 NULL |
98365 | +ib_create_send_mad_1196 ib_create_send_mad 5 1196 NULL | 97277 | +ib_create_send_mad_1196 ib_create_send_mad 5 1196 NULL |
@@ -98377,6 +97289,7 @@ index 0000000..7982a0c | |||
98377 | +wm_adsp_buf_alloc_1317 wm_adsp_buf_alloc 2 1317 NULL | 97289 | +wm_adsp_buf_alloc_1317 wm_adsp_buf_alloc 2 1317 NULL |
98378 | +compat_put_u64_1319 compat_put_u64 1 1319 NULL | 97290 | +compat_put_u64_1319 compat_put_u64 1 1319 NULL |
98379 | +ffs_1322 ffs 0 1322 NULL | 97291 | +ffs_1322 ffs 0 1322 NULL |
97292 | +qlcnic_pci_sriov_configure_1327 qlcnic_pci_sriov_configure 2 1327 NULL | ||
98380 | +carl9170_rx_stream_1334 carl9170_rx_stream 3 1334 NULL | 97293 | +carl9170_rx_stream_1334 carl9170_rx_stream 3 1334 NULL |
98381 | +btrfs_submit_compressed_write_1347 btrfs_submit_compressed_write 5 1347 NULL | 97294 | +btrfs_submit_compressed_write_1347 btrfs_submit_compressed_write 5 1347 NULL |
98382 | +gen_pool_best_fit_1348 gen_pool_best_fit 2-3-4 1348 NULL | 97295 | +gen_pool_best_fit_1348 gen_pool_best_fit 2-3-4 1348 NULL |
@@ -98394,11 +97307,13 @@ index 0000000..7982a0c | |||
98394 | +stack_max_size_read_1445 stack_max_size_read 3 1445 NULL | 97307 | +stack_max_size_read_1445 stack_max_size_read 3 1445 NULL |
98395 | +tx_queue_len_read_1463 tx_queue_len_read 3 1463 NULL | 97308 | +tx_queue_len_read_1463 tx_queue_len_read 3 1463 NULL |
98396 | +xprt_alloc_1475 xprt_alloc 2 1475 NULL | 97309 | +xprt_alloc_1475 xprt_alloc 2 1475 NULL |
97310 | +SYSC_syslog_1477 SYSC_syslog 3 1477 NULL | ||
98397 | +sta_num_ps_buf_frames_read_1488 sta_num_ps_buf_frames_read 3 1488 NULL | 97311 | +sta_num_ps_buf_frames_read_1488 sta_num_ps_buf_frames_read 3 1488 NULL |
98398 | +posix_acl_permission_1495 posix_acl_permission 0 1495 NULL | 97312 | +posix_acl_permission_1495 posix_acl_permission 0 1495 NULL |
98399 | +tomoyo_round2_1518 tomoyo_round2 0 1518 NULL | 97313 | +tomoyo_round2_1518 tomoyo_round2 0 1518 NULL |
98400 | +__vfio_dma_map_1523 __vfio_dma_map 3 1523 NULL | 97314 | +__vfio_dma_map_1523 __vfio_dma_map 3 1523 NULL |
98401 | +alloc_perm_bits_1532 alloc_perm_bits 2 1532 NULL | 97315 | +alloc_perm_bits_1532 alloc_perm_bits 2 1532 NULL |
97316 | +ath6kl_init_get_fwcaps_1557 ath6kl_init_get_fwcaps 3 1557 NULL | ||
98402 | +ieee80211_if_read_dot11MeshHWMPnetDiameterTraversalTime_1589 ieee80211_if_read_dot11MeshHWMPnetDiameterTraversalTime 3 1589 NULL | 97317 | +ieee80211_if_read_dot11MeshHWMPnetDiameterTraversalTime_1589 ieee80211_if_read_dot11MeshHWMPnetDiameterTraversalTime 3 1589 NULL |
98403 | +fc_frame_alloc_1596 fc_frame_alloc 2 1596 NULL | 97318 | +fc_frame_alloc_1596 fc_frame_alloc 2 1596 NULL |
98404 | +packet_buffer_init_1607 packet_buffer_init 2 1607 NULL | 97319 | +packet_buffer_init_1607 packet_buffer_init 2 1607 NULL |
@@ -98406,6 +97321,7 @@ index 0000000..7982a0c | |||
98406 | +v9fs_fid_xattr_get_1618 v9fs_fid_xattr_get 0 1618 NULL | 97321 | +v9fs_fid_xattr_get_1618 v9fs_fid_xattr_get 0 1618 NULL |
98407 | +btmrvl_hsmode_read_1647 btmrvl_hsmode_read 3 1647 NULL | 97322 | +btmrvl_hsmode_read_1647 btmrvl_hsmode_read 3 1647 NULL |
98408 | +ikconfig_read_current_1658 ikconfig_read_current 3 1658 NULL | 97323 | +ikconfig_read_current_1658 ikconfig_read_current 3 1658 NULL |
97324 | +mei_cl_recv_1665 mei_cl_recv 3 1665 NULL | ||
98409 | +netdev_feature_string_1667 netdev_feature_string 0 1667 NULL | 97325 | +netdev_feature_string_1667 netdev_feature_string 0 1667 NULL |
98410 | +compat_x25_ioctl_1674 compat_x25_ioctl 3 1674 NULL | 97326 | +compat_x25_ioctl_1674 compat_x25_ioctl 3 1674 NULL |
98411 | +rmap_add_1677 rmap_add 3 1677 NULL | 97327 | +rmap_add_1677 rmap_add 3 1677 NULL |
@@ -98419,11 +97335,14 @@ index 0000000..7982a0c | |||
98419 | +ebt_size_mwt_1768 ebt_size_mwt 0 1768 NULL | 97335 | +ebt_size_mwt_1768 ebt_size_mwt 0 1768 NULL |
98420 | +cosa_write_1774 cosa_write 3 1774 NULL | 97336 | +cosa_write_1774 cosa_write 3 1774 NULL |
98421 | +update_macheader_1775 update_macheader 7 1775 NULL | 97337 | +update_macheader_1775 update_macheader 7 1775 NULL |
97338 | +dec_zcache_pers_zbytes_1779 dec_zcache_pers_zbytes 1 1779 NULL | ||
98422 | +fcoe_ctlr_device_add_1793 fcoe_ctlr_device_add 3 1793 NULL | 97339 | +fcoe_ctlr_device_add_1793 fcoe_ctlr_device_add 3 1793 NULL |
98423 | +__nodelist_scnprintf_1815 __nodelist_scnprintf 0-2-4 1815 NULL | 97340 | +__nodelist_scnprintf_1815 __nodelist_scnprintf 0-2-4 1815 NULL |
98424 | +alloc_pages_exact_1892 alloc_pages_exact 1 1892 NULL | 97341 | +alloc_pages_exact_1892 alloc_pages_exact 1 1892 NULL |
98425 | +rx_defrag_called_read_1897 rx_defrag_called_read 3 1897 NULL | 97342 | +rx_defrag_called_read_1897 rx_defrag_called_read 3 1897 NULL |
98426 | +nfs_parse_server_name_1899 nfs_parse_server_name 2 1899 NULL | 97343 | +nfs_parse_server_name_1899 nfs_parse_server_name 2 1899 NULL |
97344 | +SyS_add_key_1900 SyS_add_key 4 1900 NULL | ||
97345 | +isku_sysfs_write_keys_media_1910 isku_sysfs_write_keys_media 6 1910 NULL | ||
98427 | +tx_tx_retry_data_read_1926 tx_tx_retry_data_read 3 1926 NULL | 97346 | +tx_tx_retry_data_read_1926 tx_tx_retry_data_read 3 1926 NULL |
98428 | +memblock_alloc_base_1938 memblock_alloc_base 1-2 1938 NULL | 97347 | +memblock_alloc_base_1938 memblock_alloc_base 1-2 1938 NULL |
98429 | +cyttsp_probe_1940 cyttsp_probe 4 1940 NULL | 97348 | +cyttsp_probe_1940 cyttsp_probe 4 1940 NULL |
@@ -98457,8 +97376,10 @@ index 0000000..7982a0c | |||
98457 | +mlx4_init_icm_table_2151 mlx4_init_icm_table 5-4 2151 NULL | 97376 | +mlx4_init_icm_table_2151 mlx4_init_icm_table 5-4 2151 NULL |
98458 | +iov_iter_count_2152 iov_iter_count 0 2152 NULL | 97377 | +iov_iter_count_2152 iov_iter_count 0 2152 NULL |
98459 | +_ore_get_io_state_2166 _ore_get_io_state 3-4-5 2166 NULL | 97378 | +_ore_get_io_state_2166 _ore_get_io_state 3-4-5 2166 NULL |
97379 | +bio_integrity_alloc_2194 bio_integrity_alloc 3 2194 NULL | ||
98460 | +ssb_bus_ssbbus_register_2217 ssb_bus_ssbbus_register 2 2217 NULL | 97380 | +ssb_bus_ssbbus_register_2217 ssb_bus_ssbbus_register 2 2217 NULL |
98461 | +u32_array_read_2219 u32_array_read 3 2219 NULL | 97381 | +mei_dbgfs_read_meclients_2219 mei_dbgfs_read_meclients 3 2219 NULL nohasharray |
97382 | +u32_array_read_2219 u32_array_read 3 2219 &mei_dbgfs_read_meclients_2219 | ||
98462 | +vhci_write_2224 vhci_write 3 2224 NULL | 97383 | +vhci_write_2224 vhci_write 3 2224 NULL |
98463 | +efx_tsoh_page_count_2225 efx_tsoh_page_count 0 2225 NULL | 97384 | +efx_tsoh_page_count_2225 efx_tsoh_page_count 0 2225 NULL |
98464 | +lowpan_get_mac_header_length_2231 lowpan_get_mac_header_length 0 2231 NULL | 97385 | +lowpan_get_mac_header_length_2231 lowpan_get_mac_header_length 0 2231 NULL |
@@ -98475,10 +97396,12 @@ index 0000000..7982a0c | |||
98475 | +__erst_read_to_erange_2341 __erst_read_to_erange 0 2341 NULL | 97396 | +__erst_read_to_erange_2341 __erst_read_to_erange 0 2341 NULL |
98476 | +zr364xx_read_2354 zr364xx_read 3 2354 NULL | 97397 | +zr364xx_read_2354 zr364xx_read 3 2354 NULL |
98477 | +viafb_iga2_odev_proc_write_2363 viafb_iga2_odev_proc_write 3 2363 NULL | 97398 | +viafb_iga2_odev_proc_write_2363 viafb_iga2_odev_proc_write 3 2363 NULL |
97399 | +SyS_mremap_2367 SyS_mremap 1-2-5 2367 NULL | ||
98478 | +xfs_buf_map_from_irec_2368 xfs_buf_map_from_irec 5 2368 NULL | 97400 | +xfs_buf_map_from_irec_2368 xfs_buf_map_from_irec 5 2368 NULL |
98479 | +il_dbgfs_sensitivity_read_2370 il_dbgfs_sensitivity_read 3 2370 NULL | 97401 | +il_dbgfs_sensitivity_read_2370 il_dbgfs_sensitivity_read 3 2370 NULL |
98480 | +rtl_port_map_2385 rtl_port_map 1-2 2385 NULL | 97402 | +rtl_port_map_2385 rtl_port_map 1-2 2385 NULL |
98481 | +rxpipe_rx_prep_beacon_drop_read_2403 rxpipe_rx_prep_beacon_drop_read 3 2403 NULL | 97403 | +rxpipe_rx_prep_beacon_drop_read_2403 rxpipe_rx_prep_beacon_drop_read 3 2403 NULL |
97404 | +SYSC_mlock_2415 SYSC_mlock 1 2415 NULL | ||
98482 | +isdn_v110_open_2418 isdn_v110_open 3 2418 NULL | 97405 | +isdn_v110_open_2418 isdn_v110_open 3 2418 NULL |
98483 | +raid1_size_2419 raid1_size 0-2 2419 NULL | 97406 | +raid1_size_2419 raid1_size 0-2 2419 NULL |
98484 | +roccat_common2_send_2422 roccat_common2_send 4 2422 NULL | 97407 | +roccat_common2_send_2422 roccat_common2_send 4 2422 NULL |
@@ -98498,6 +97421,7 @@ index 0000000..7982a0c | |||
98498 | +gspca_dev_probe_2570 gspca_dev_probe 4 2570 NULL | 97421 | +gspca_dev_probe_2570 gspca_dev_probe 4 2570 NULL |
98499 | +i915_next_seqno_write_2572 i915_next_seqno_write 3 2572 NULL | 97422 | +i915_next_seqno_write_2572 i915_next_seqno_write 3 2572 NULL |
98500 | +pcm_sanity_check_2574 pcm_sanity_check 0 2574 NULL | 97423 | +pcm_sanity_check_2574 pcm_sanity_check 0 2574 NULL |
97424 | +slot_bytes_2609 slot_bytes 0 2609 NULL | ||
98501 | +smk_write_logging_2618 smk_write_logging 3 2618 NULL | 97425 | +smk_write_logging_2618 smk_write_logging 3 2618 NULL |
98502 | +kvm_gfn_to_hva_cache_init_2636 kvm_gfn_to_hva_cache_init 3 2636 NULL | 97426 | +kvm_gfn_to_hva_cache_init_2636 kvm_gfn_to_hva_cache_init 3 2636 NULL |
98503 | +lro_gen_skb_2644 lro_gen_skb 6 2644 NULL | 97427 | +lro_gen_skb_2644 lro_gen_skb 6 2644 NULL |
@@ -98505,7 +97429,8 @@ index 0000000..7982a0c | |||
98505 | +memcpy_fromiovecend_2707 memcpy_fromiovecend 3-4 2707 NULL | 97429 | +memcpy_fromiovecend_2707 memcpy_fromiovecend 3-4 2707 NULL |
98506 | +__xip_file_write_2733 __xip_file_write 4-3 2733 NULL | 97430 | +__xip_file_write_2733 __xip_file_write 4-3 2733 NULL |
98507 | +hid_report_raw_event_2762 hid_report_raw_event 4 2762 NULL | 97431 | +hid_report_raw_event_2762 hid_report_raw_event 4 2762 NULL |
98508 | +mon_bin_ioctl_2771 mon_bin_ioctl 3 2771 NULL | 97432 | +mon_bin_ioctl_2771 mon_bin_ioctl 3 2771 NULL nohasharray |
97433 | +bictcp_update_2771 bictcp_update 2 2771 &mon_bin_ioctl_2771 | ||
98509 | +__next_cpu_2782 __next_cpu 1 2782 NULL | 97434 | +__next_cpu_2782 __next_cpu 1 2782 NULL |
98510 | +set_msr_hyperv_pw_2785 set_msr_hyperv_pw 3 2785 NULL | 97435 | +set_msr_hyperv_pw_2785 set_msr_hyperv_pw 3 2785 NULL |
98511 | +sel_read_enforce_2828 sel_read_enforce 3 2828 NULL | 97436 | +sel_read_enforce_2828 sel_read_enforce 3 2828 NULL |
@@ -98521,6 +97446,7 @@ index 0000000..7982a0c | |||
98521 | +xfs_trans_get_buf_map_2927 xfs_trans_get_buf_map 4 2927 NULL | 97446 | +xfs_trans_get_buf_map_2927 xfs_trans_get_buf_map 4 2927 NULL |
98522 | +nes_read_indexed_2946 nes_read_indexed 0 2946 NULL | 97447 | +nes_read_indexed_2946 nes_read_indexed 0 2946 NULL |
98523 | +tm6000_i2c_recv_regs16_2949 tm6000_i2c_recv_regs16 5 2949 NULL | 97448 | +tm6000_i2c_recv_regs16_2949 tm6000_i2c_recv_regs16 5 2949 NULL |
97449 | +set_fast_connectable_2952 set_fast_connectable 4 2952 NULL | ||
98524 | +ppp_cp_event_2965 ppp_cp_event 6 2965 NULL | 97450 | +ppp_cp_event_2965 ppp_cp_event 6 2965 NULL |
98525 | +do_strnlen_user_2976 do_strnlen_user 0-2 2976 NULL | 97451 | +do_strnlen_user_2976 do_strnlen_user 0-2 2976 NULL |
98526 | +p9_nr_pages_2992 p9_nr_pages 0-2 2992 NULL | 97452 | +p9_nr_pages_2992 p9_nr_pages 0-2 2992 NULL |
@@ -98549,6 +97475,7 @@ index 0000000..7982a0c | |||
98549 | +mempool_create_node_3191 mempool_create_node 1 3191 NULL | 97475 | +mempool_create_node_3191 mempool_create_node 1 3191 NULL |
98550 | +alloc_context_3194 alloc_context 1 3194 NULL | 97476 | +alloc_context_3194 alloc_context 1 3194 NULL |
98551 | +shmem_pread_slow_3198 shmem_pread_slow 3 3198 NULL | 97477 | +shmem_pread_slow_3198 shmem_pread_slow 3 3198 NULL |
97478 | +SyS_sendto_3219 SyS_sendto 6 3219 NULL | ||
98552 | +kimage_crash_alloc_3233 kimage_crash_alloc 3 3233 NULL | 97479 | +kimage_crash_alloc_3233 kimage_crash_alloc 3 3233 NULL |
98553 | +do_read_log_to_user_3236 do_read_log_to_user 4 3236 NULL | 97480 | +do_read_log_to_user_3236 do_read_log_to_user 4 3236 NULL |
98554 | +ext3_xattr_find_entry_3237 ext3_xattr_find_entry 0 3237 NULL | 97481 | +ext3_xattr_find_entry_3237 ext3_xattr_find_entry 0 3237 NULL |
@@ -98573,6 +97500,7 @@ index 0000000..7982a0c | |||
98573 | +mei_io_cb_alloc_resp_buf_3414 mei_io_cb_alloc_resp_buf 2 3414 NULL | 97500 | +mei_io_cb_alloc_resp_buf_3414 mei_io_cb_alloc_resp_buf 2 3414 NULL |
98574 | +pci_add_cap_save_buffer_3426 pci_add_cap_save_buffer 3 3426 NULL | 97501 | +pci_add_cap_save_buffer_3426 pci_add_cap_save_buffer 3 3426 NULL |
98575 | +crystalhd_create_dio_pool_3427 crystalhd_create_dio_pool 2 3427 NULL | 97502 | +crystalhd_create_dio_pool_3427 crystalhd_create_dio_pool 2 3427 NULL |
97503 | +SyS_msgsnd_3436 SyS_msgsnd 3 3436 NULL | ||
98576 | +pipe_iov_copy_to_user_3447 pipe_iov_copy_to_user 3 3447 NULL | 97504 | +pipe_iov_copy_to_user_3447 pipe_iov_copy_to_user 3 3447 NULL |
98577 | +percpu_modalloc_3448 percpu_modalloc 2-3 3448 NULL | 97505 | +percpu_modalloc_3448 percpu_modalloc 2-3 3448 NULL |
98578 | +map_single_3449 map_single 0-2 3449 NULL | 97506 | +map_single_3449 map_single 0-2 3449 NULL |
@@ -98584,6 +97512,7 @@ index 0000000..7982a0c | |||
98584 | +kvm_handle_bad_page_3503 kvm_handle_bad_page 2 3503 NULL | 97512 | +kvm_handle_bad_page_3503 kvm_handle_bad_page 2 3503 NULL |
98585 | +mem_tx_free_mem_blks_read_3521 mem_tx_free_mem_blks_read 3 3521 NULL nohasharray | 97513 | +mem_tx_free_mem_blks_read_3521 mem_tx_free_mem_blks_read 3 3521 NULL nohasharray |
98586 | +ieee80211_wx_set_gen_ie_rsl_3521 ieee80211_wx_set_gen_ie_rsl 3 3521 &mem_tx_free_mem_blks_read_3521 | 97514 | +ieee80211_wx_set_gen_ie_rsl_3521 ieee80211_wx_set_gen_ie_rsl 3 3521 &mem_tx_free_mem_blks_read_3521 |
97515 | +SyS_readv_3539 SyS_readv 3 3539 NULL | ||
98587 | +btrfs_dir_name_len_3549 btrfs_dir_name_len 0 3549 NULL | 97516 | +btrfs_dir_name_len_3549 btrfs_dir_name_len 0 3549 NULL |
98588 | +b43legacy_read16_3561 b43legacy_read16 0 3561 NULL | 97517 | +b43legacy_read16_3561 b43legacy_read16 0 3561 NULL |
98589 | +alloc_smp_resp_3566 alloc_smp_resp 1 3566 NULL | 97518 | +alloc_smp_resp_3566 alloc_smp_resp 1 3566 NULL |
@@ -98594,12 +97523,13 @@ index 0000000..7982a0c | |||
98594 | +edac_mc_alloc_3611 edac_mc_alloc 4 3611 NULL | 97523 | +edac_mc_alloc_3611 edac_mc_alloc 4 3611 NULL |
98595 | +tx_tx_starts_read_3617 tx_tx_starts_read 3 3617 NULL | 97524 | +tx_tx_starts_read_3617 tx_tx_starts_read 3 3617 NULL |
98596 | +aligned_kmalloc_3628 aligned_kmalloc 1 3628 NULL | 97525 | +aligned_kmalloc_3628 aligned_kmalloc 1 3628 NULL |
98597 | +cm_copy_private_data_3649 cm_copy_private_data 2 3649 NULL | 97526 | +x86_swiotlb_alloc_coherent_3649 x86_swiotlb_alloc_coherent 2 3649 NULL nohasharray |
97527 | +cm_copy_private_data_3649 cm_copy_private_data 2 3649 &x86_swiotlb_alloc_coherent_3649 | ||
98598 | +ath6kl_disconnect_timeout_read_3650 ath6kl_disconnect_timeout_read 3 3650 NULL | 97528 | +ath6kl_disconnect_timeout_read_3650 ath6kl_disconnect_timeout_read 3 3650 NULL |
98599 | +i915_compat_ioctl_3656 i915_compat_ioctl 2 3656 NULL | 97529 | +i915_compat_ioctl_3656 i915_compat_ioctl 2 3656 NULL |
98600 | +create_irq_3703 create_irq 0 3703 NULL nohasharray | 97530 | +snd_m3_assp_read_3703 snd_m3_assp_read 0 3703 NULL nohasharray |
98601 | +btmrvl_psmode_write_3703 btmrvl_psmode_write 3 3703 &create_irq_3703 nohasharray | 97531 | +create_irq_3703 create_irq 0 3703 &snd_m3_assp_read_3703 nohasharray |
98602 | +snd_m3_assp_read_3703 snd_m3_assp_read 0 3703 &btmrvl_psmode_write_3703 | 97532 | +btmrvl_psmode_write_3703 btmrvl_psmode_write 3 3703 &create_irq_3703 |
98603 | +videobuf_pages_to_sg_3708 videobuf_pages_to_sg 2 3708 NULL | 97533 | +videobuf_pages_to_sg_3708 videobuf_pages_to_sg 2 3708 NULL |
98604 | +ci_ll_write_3740 ci_ll_write 4 3740 NULL nohasharray | 97534 | +ci_ll_write_3740 ci_ll_write 4 3740 NULL nohasharray |
98605 | +ath6kl_mgmt_tx_3740 ath6kl_mgmt_tx 7 3740 &ci_ll_write_3740 | 97535 | +ath6kl_mgmt_tx_3740 ath6kl_mgmt_tx 7 3740 &ci_ll_write_3740 |
@@ -98618,6 +97548,7 @@ index 0000000..7982a0c | |||
98618 | +pipeline_pre_proc_swi_read_3898 pipeline_pre_proc_swi_read 3 3898 NULL | 97548 | +pipeline_pre_proc_swi_read_3898 pipeline_pre_proc_swi_read 3 3898 NULL |
98619 | +comedi_buf_read_n_available_3899 comedi_buf_read_n_available 0 3899 NULL | 97549 | +comedi_buf_read_n_available_3899 comedi_buf_read_n_available 0 3899 NULL |
98620 | +vcs_write_3910 vcs_write 3 3910 NULL | 97550 | +vcs_write_3910 vcs_write 3 3910 NULL |
97551 | +brcmf_debugfs_fws_stats_read_3947 brcmf_debugfs_fws_stats_read 3 3947 NULL | ||
98621 | +atalk_compat_ioctl_3991 atalk_compat_ioctl 3 3991 NULL | 97552 | +atalk_compat_ioctl_3991 atalk_compat_ioctl 3 3991 NULL |
98622 | +do_add_counters_3992 do_add_counters 3 3992 NULL | 97553 | +do_add_counters_3992 do_add_counters 3 3992 NULL |
98623 | +userspace_status_4004 userspace_status 4 4004 NULL | 97554 | +userspace_status_4004 userspace_status 4 4004 NULL |
@@ -98631,6 +97562,7 @@ index 0000000..7982a0c | |||
98631 | +read_file_queues_4078 read_file_queues 3 4078 NULL | 97562 | +read_file_queues_4078 read_file_queues 3 4078 NULL |
98632 | +fbcon_do_set_font_4079 fbcon_do_set_font 2-3 4079 NULL | 97563 | +fbcon_do_set_font_4079 fbcon_do_set_font 2-3 4079 NULL |
98633 | +da9052_free_irq_4090 da9052_free_irq 2 4090 NULL | 97564 | +da9052_free_irq_4090 da9052_free_irq 2 4090 NULL |
97565 | +C_SYSC_rt_sigpending_4114 C_SYSC_rt_sigpending 2 4114 NULL | ||
98634 | +ntb_netdev_change_mtu_4147 ntb_netdev_change_mtu 2 4147 NULL | 97566 | +ntb_netdev_change_mtu_4147 ntb_netdev_change_mtu 2 4147 NULL |
98635 | +tm6000_read_4151 tm6000_read 3 4151 NULL | 97567 | +tm6000_read_4151 tm6000_read 3 4151 NULL |
98636 | +mpt_raid_phys_disk_get_num_paths_4155 mpt_raid_phys_disk_get_num_paths 0 4155 NULL | 97568 | +mpt_raid_phys_disk_get_num_paths_4155 mpt_raid_phys_disk_get_num_paths 0 4155 NULL |
@@ -98678,6 +97610,7 @@ index 0000000..7982a0c | |||
98678 | +kone_receive_4690 kone_receive 4 4690 NULL | 97610 | +kone_receive_4690 kone_receive 4 4690 NULL |
98679 | +round_pipe_size_4701 round_pipe_size 0 4701 NULL | 97611 | +round_pipe_size_4701 round_pipe_size 0 4701 NULL |
98680 | +cxgbi_alloc_big_mem_4707 cxgbi_alloc_big_mem 1 4707 NULL | 97612 | +cxgbi_alloc_big_mem_4707 cxgbi_alloc_big_mem 1 4707 NULL |
97613 | +konepure_sysfs_read_4709 konepure_sysfs_read 6 4709 NULL | ||
98681 | +btmrvl_gpiogap_read_4718 btmrvl_gpiogap_read 3 4718 NULL | 97614 | +btmrvl_gpiogap_read_4718 btmrvl_gpiogap_read 3 4718 NULL |
98682 | +ati_create_gatt_pages_4722 ati_create_gatt_pages 1 4722 NULL nohasharray | 97615 | +ati_create_gatt_pages_4722 ati_create_gatt_pages 1 4722 NULL nohasharray |
98683 | +show_header_4722 show_header 3 4722 &ati_create_gatt_pages_4722 | 97616 | +show_header_4722 show_header 3 4722 &ati_create_gatt_pages_4722 |
@@ -98701,6 +97634,7 @@ index 0000000..7982a0c | |||
98701 | +skb_network_header_len_4971 skb_network_header_len 0 4971 NULL | 97634 | +skb_network_header_len_4971 skb_network_header_len 0 4971 NULL |
98702 | +ieee80211_if_fmt_dot11MeshHWMPconfirmationInterval_4976 ieee80211_if_fmt_dot11MeshHWMPconfirmationInterval 3 4976 NULL | 97635 | +ieee80211_if_fmt_dot11MeshHWMPconfirmationInterval_4976 ieee80211_if_fmt_dot11MeshHWMPconfirmationInterval 3 4976 NULL |
98703 | +vmw_surface_define_size_4993 vmw_surface_define_size 0 4993 NULL | 97636 | +vmw_surface_define_size_4993 vmw_surface_define_size 0 4993 NULL |
97637 | +compat_SyS_ipc_5000 compat_SyS_ipc 3-4-5-6 5000 NULL | ||
98704 | +qla82xx_pci_mem_write_direct_5008 qla82xx_pci_mem_write_direct 2 5008 NULL | 97638 | +qla82xx_pci_mem_write_direct_5008 qla82xx_pci_mem_write_direct 2 5008 NULL |
98705 | +do_mincore_5018 do_mincore 0-1 5018 NULL | 97639 | +do_mincore_5018 do_mincore 0-1 5018 NULL |
98706 | +mtd_device_parse_register_5024 mtd_device_parse_register 5 5024 NULL | 97640 | +mtd_device_parse_register_5024 mtd_device_parse_register 5 5024 NULL |
@@ -98722,8 +97656,10 @@ index 0000000..7982a0c | |||
98722 | +skb_network_header_5203 skb_network_header 0 5203 NULL | 97656 | +skb_network_header_5203 skb_network_header 0 5203 NULL |
98723 | +pipe_set_size_5204 pipe_set_size 2 5204 NULL | 97657 | +pipe_set_size_5204 pipe_set_size 2 5204 NULL |
98724 | +ppp_cp_parse_cr_5214 ppp_cp_parse_cr 4 5214 NULL | 97658 | +ppp_cp_parse_cr_5214 ppp_cp_parse_cr 4 5214 NULL |
97659 | +dwc2_hcd_urb_alloc_5217 dwc2_hcd_urb_alloc 2 5217 NULL | ||
98725 | +ath6kl_debug_roam_tbl_event_5224 ath6kl_debug_roam_tbl_event 3 5224 NULL | 97660 | +ath6kl_debug_roam_tbl_event_5224 ath6kl_debug_roam_tbl_event 3 5224 NULL |
98726 | +ssb_ioremap_5228 ssb_ioremap 2 5228 NULL | 97661 | +ssb_ioremap_5228 ssb_ioremap 2 5228 NULL nohasharray |
97662 | +konepure_sysfs_write_5228 konepure_sysfs_write 6 5228 &ssb_ioremap_5228 | ||
98727 | +isdn_ppp_skb_push_5236 isdn_ppp_skb_push 2 5236 NULL | 97663 | +isdn_ppp_skb_push_5236 isdn_ppp_skb_push 2 5236 NULL |
98728 | +do_atmif_sioc_5247 do_atmif_sioc 3 5247 NULL | 97664 | +do_atmif_sioc_5247 do_atmif_sioc 3 5247 NULL |
98729 | +gfn_to_hva_memslot_5265 gfn_to_hva_memslot 2 5265 NULL | 97665 | +gfn_to_hva_memslot_5265 gfn_to_hva_memslot 2 5265 NULL |
@@ -98748,6 +97684,7 @@ index 0000000..7982a0c | |||
98748 | +__max_nr_grant_frames_5505 __max_nr_grant_frames 0 5505 NULL | 97684 | +__max_nr_grant_frames_5505 __max_nr_grant_frames 0 5505 NULL |
98749 | +spidev_message_5518 spidev_message 3 5518 NULL | 97685 | +spidev_message_5518 spidev_message 3 5518 NULL |
98750 | +ieee80211_if_fmt_auto_open_plinks_5534 ieee80211_if_fmt_auto_open_plinks 3 5534 NULL | 97686 | +ieee80211_if_fmt_auto_open_plinks_5534 ieee80211_if_fmt_auto_open_plinks 3 5534 NULL |
97687 | +get_entry_msg_len_5552 get_entry_msg_len 0 5552 NULL | ||
98751 | +brcmu_pkt_buf_get_skb_5556 brcmu_pkt_buf_get_skb 1 5556 NULL | 97688 | +brcmu_pkt_buf_get_skb_5556 brcmu_pkt_buf_get_skb 1 5556 NULL |
98752 | +le_readq_5557 le_readq 0 5557 NULL | 97689 | +le_readq_5557 le_readq 0 5557 NULL |
98753 | +inw_5558 inw 0 5558 NULL | 97690 | +inw_5558 inw 0 5558 NULL |
@@ -98757,17 +97694,20 @@ index 0000000..7982a0c | |||
98757 | +usb_dump_device_descriptor_5599 usb_dump_device_descriptor 0 5599 NULL | 97694 | +usb_dump_device_descriptor_5599 usb_dump_device_descriptor 0 5599 NULL |
98758 | +ldm_frag_add_5611 ldm_frag_add 2 5611 NULL | 97695 | +ldm_frag_add_5611 ldm_frag_add 2 5611 NULL |
98759 | +compat_copy_entries_5617 compat_copy_entries 0 5617 NULL | 97696 | +compat_copy_entries_5617 compat_copy_entries 0 5617 NULL |
97697 | +SYSC_fsetxattr_5639 SYSC_fsetxattr 4 5639 NULL | ||
98760 | +ext4_xattr_get_5661 ext4_xattr_get 0 5661 NULL | 97698 | +ext4_xattr_get_5661 ext4_xattr_get 0 5661 NULL |
98761 | +posix_clock_register_5662 posix_clock_register 2 5662 NULL | 97699 | +posix_clock_register_5662 posix_clock_register 2 5662 NULL |
98762 | +mthca_map_reg_5664 mthca_map_reg 2-3 5664 NULL | 97700 | +mthca_map_reg_5664 mthca_map_reg 2-3 5664 NULL |
98763 | +__videobuf_alloc_vb_5665 __videobuf_alloc_vb 1 5665 NULL | 97701 | +__videobuf_alloc_vb_5665 __videobuf_alloc_vb 1 5665 NULL |
98764 | +wb_clear_dirty_5684 wb_clear_dirty 2 5684 NULL | 97702 | +wb_clear_dirty_5684 wb_clear_dirty 2 5684 NULL |
98765 | +get_arg_5694 get_arg 3 5694 NULL | 97703 | +get_arg_5694 get_arg 3 5694 NULL |
97704 | +subbuf_read_actor_5708 subbuf_read_actor 3 5708 NULL | ||
98766 | +vmw_kms_readback_5727 vmw_kms_readback 6 5727 NULL | 97705 | +vmw_kms_readback_5727 vmw_kms_readback 6 5727 NULL |
98767 | +reexecute_instruction_5733 reexecute_instruction 2 5733 NULL | 97706 | +reexecute_instruction_5733 reexecute_instruction 2 5733 NULL |
98768 | +rts51x_transfer_data_partial_5735 rts51x_transfer_data_partial 6 5735 NULL | 97707 | +rts51x_transfer_data_partial_5735 rts51x_transfer_data_partial 6 5735 NULL |
98769 | +ubi_cdev_compat_ioctl_5746 ubi_cdev_compat_ioctl 3 5746 NULL | 97708 | +ubi_cdev_compat_ioctl_5746 ubi_cdev_compat_ioctl 3 5746 NULL |
98770 | +sctp_setsockopt_autoclose_5775 sctp_setsockopt_autoclose 3 5775 NULL | 97709 | +sctp_setsockopt_autoclose_5775 sctp_setsockopt_autoclose 3 5775 NULL nohasharray |
97710 | +qlcnic_83xx_sysfs_flash_read_handler_5775 qlcnic_83xx_sysfs_flash_read_handler 6 5775 &sctp_setsockopt_autoclose_5775 | ||
98771 | +compat_sys_writev_5784 compat_sys_writev 3 5784 NULL | 97711 | +compat_sys_writev_5784 compat_sys_writev 3 5784 NULL |
98772 | +__vxge_hw_blockpool_malloc_5786 __vxge_hw_blockpool_malloc 2 5786 NULL | 97712 | +__vxge_hw_blockpool_malloc_5786 __vxge_hw_blockpool_malloc 2 5786 NULL |
98773 | +skb_copy_datagram_iovec_5806 skb_copy_datagram_iovec 2-4 5806 NULL | 97713 | +skb_copy_datagram_iovec_5806 skb_copy_datagram_iovec 2-4 5806 NULL |
@@ -98782,6 +97722,7 @@ index 0000000..7982a0c | |||
98782 | +uinput_compat_ioctl_5861 uinput_compat_ioctl 3 5861 &compat_sys_move_pages_5861 | 97722 | +uinput_compat_ioctl_5861 uinput_compat_ioctl 3 5861 &compat_sys_move_pages_5861 |
98783 | +paging64_walk_addr_5887 paging64_walk_addr 3 5887 NULL | 97723 | +paging64_walk_addr_5887 paging64_walk_addr 3 5887 NULL |
98784 | +port_show_regs_5904 port_show_regs 3 5904 NULL | 97724 | +port_show_regs_5904 port_show_regs 3 5904 NULL |
97725 | +rbd_segment_length_5907 rbd_segment_length 0-3-2 5907 NULL | ||
98785 | +uhci_debug_read_5911 uhci_debug_read 3 5911 NULL | 97726 | +uhci_debug_read_5911 uhci_debug_read 3 5911 NULL |
98786 | +qla82xx_pci_mem_read_2M_5912 qla82xx_pci_mem_read_2M 2 5912 NULL | 97727 | +qla82xx_pci_mem_read_2M_5912 qla82xx_pci_mem_read_2M 2 5912 NULL |
98787 | +ttm_bo_kmap_ttm_5922 ttm_bo_kmap_ttm 3 5922 NULL | 97728 | +ttm_bo_kmap_ttm_5922 ttm_bo_kmap_ttm 3 5922 NULL |
@@ -98792,14 +97733,17 @@ index 0000000..7982a0c | |||
98792 | +__apu_get_register_5967 __apu_get_register 0 5967 NULL | 97733 | +__apu_get_register_5967 __apu_get_register 0 5967 NULL |
98793 | +ieee80211_if_fmt_rc_rateidx_mask_5ghz_5971 ieee80211_if_fmt_rc_rateidx_mask_5ghz 3 5971 NULL | 97734 | +ieee80211_if_fmt_rc_rateidx_mask_5ghz_5971 ieee80211_if_fmt_rc_rateidx_mask_5ghz 3 5971 NULL |
98794 | +native_pte_val_5978 native_pte_val 0 5978 NULL | 97735 | +native_pte_val_5978 native_pte_val 0 5978 NULL |
97736 | +SyS_semop_5980 SyS_semop 3 5980 NULL | ||
98795 | +ntfs_rl_append_6037 ntfs_rl_append 2-4 6037 NULL | 97737 | +ntfs_rl_append_6037 ntfs_rl_append 2-4 6037 NULL |
98796 | +da9052_request_irq_6058 da9052_request_irq 2 6058 NULL | 97738 | +da9052_request_irq_6058 da9052_request_irq 2 6058 NULL |
98797 | +sctp_setsockopt_connectx_6073 sctp_setsockopt_connectx 3 6073 NULL | 97739 | +sctp_setsockopt_connectx_6073 sctp_setsockopt_connectx 3 6073 NULL |
98798 | +rts51x_ms_rw_multi_sector_6076 rts51x_ms_rw_multi_sector 3-4 6076 NULL | 97740 | +rts51x_ms_rw_multi_sector_6076 rts51x_ms_rw_multi_sector 3-4 6076 NULL |
97741 | +md_trim_bio_6078 md_trim_bio 2 6078 NULL | ||
98799 | +ipmi_addr_length_6110 ipmi_addr_length 0 6110 NULL | 97742 | +ipmi_addr_length_6110 ipmi_addr_length 0 6110 NULL |
98800 | +dfs_global_file_write_6112 dfs_global_file_write 3 6112 NULL | 97743 | +dfs_global_file_write_6112 dfs_global_file_write 3 6112 NULL |
98801 | +matrix_keypad_build_keymap_6129 matrix_keypad_build_keymap 3 6129 NULL | 97744 | +matrix_keypad_build_keymap_6129 matrix_keypad_build_keymap 3 6129 NULL |
98802 | +nouveau_parent_create__6131 nouveau_parent_create_ 7 6131 NULL | 97745 | +nouveau_parent_create__6131 nouveau_parent_create_ 7 6131 NULL |
97746 | +ieee80211_if_fmt_beacon_timeout_6153 ieee80211_if_fmt_beacon_timeout 3 6153 NULL | ||
98803 | +ivtv_copy_buf_to_user_6159 ivtv_copy_buf_to_user 4 6159 NULL | 97747 | +ivtv_copy_buf_to_user_6159 ivtv_copy_buf_to_user 4 6159 NULL |
98804 | +vdma_mem_alloc_6171 vdma_mem_alloc 1 6171 NULL | 97748 | +vdma_mem_alloc_6171 vdma_mem_alloc 1 6171 NULL |
98805 | +wl1251_cmd_template_set_6172 wl1251_cmd_template_set 4 6172 NULL | 97749 | +wl1251_cmd_template_set_6172 wl1251_cmd_template_set 4 6172 NULL |
@@ -98819,9 +97763,14 @@ index 0000000..7982a0c | |||
98819 | +nf_nat_ipv6_manip_pkt_6289 nf_nat_ipv6_manip_pkt 2 6289 NULL | 97763 | +nf_nat_ipv6_manip_pkt_6289 nf_nat_ipv6_manip_pkt 2 6289 NULL |
98820 | +nf_nat_sack_adjust_6297 nf_nat_sack_adjust 2 6297 NULL | 97764 | +nf_nat_sack_adjust_6297 nf_nat_sack_adjust 2 6297 NULL |
98821 | +mid_get_vbt_data_r10_6308 mid_get_vbt_data_r10 2 6308 NULL | 97765 | +mid_get_vbt_data_r10_6308 mid_get_vbt_data_r10 2 6308 NULL |
97766 | +qlcnic_sriov_alloc_bc_msg_6309 qlcnic_sriov_alloc_bc_msg 2 6309 NULL | ||
97767 | +SyS_mincore_6329 SyS_mincore 1 6329 NULL | ||
97768 | +fuse_get_req_for_background_6337 fuse_get_req_for_background 2 6337 NULL | ||
98822 | +ucs2_strnlen_6342 ucs2_strnlen 0 6342 NULL | 97769 | +ucs2_strnlen_6342 ucs2_strnlen 0 6342 NULL |
97770 | +mei_dbgfs_read_devstate_6352 mei_dbgfs_read_devstate 3 6352 NULL | ||
98823 | +_proc_do_string_6376 _proc_do_string 2 6376 NULL | 97771 | +_proc_do_string_6376 _proc_do_string 2 6376 NULL |
98824 | +osd_req_read_sg_kern_6378 osd_req_read_sg_kern 5 6378 NULL | 97772 | +osd_req_read_sg_kern_6378 osd_req_read_sg_kern 5 6378 NULL |
97773 | +isku_sysfs_write_light_6406 isku_sysfs_write_light 6 6406 NULL | ||
98825 | +posix_acl_fix_xattr_userns_6420 posix_acl_fix_xattr_userns 4 6420 NULL | 97774 | +posix_acl_fix_xattr_userns_6420 posix_acl_fix_xattr_userns 4 6420 NULL |
98826 | +ipr_change_queue_depth_6431 ipr_change_queue_depth 2 6431 NULL | 97775 | +ipr_change_queue_depth_6431 ipr_change_queue_depth 2 6431 NULL |
98827 | +__alloc_bootmem_node_nopanic_6432 __alloc_bootmem_node_nopanic 2-3 6432 NULL | 97776 | +__alloc_bootmem_node_nopanic_6432 __alloc_bootmem_node_nopanic 2-3 6432 NULL |
@@ -98836,9 +97785,13 @@ index 0000000..7982a0c | |||
98836 | +read_file_disable_ani_6536 read_file_disable_ani 3 6536 NULL | 97785 | +read_file_disable_ani_6536 read_file_disable_ani 3 6536 NULL |
98837 | +rndis_set_oid_6547 rndis_set_oid 4 6547 NULL | 97786 | +rndis_set_oid_6547 rndis_set_oid 4 6547 NULL |
98838 | +wdm_read_6549 wdm_read 3 6549 NULL | 97787 | +wdm_read_6549 wdm_read 3 6549 NULL |
97788 | +isku_sysfs_write_keys_easyzone_6553 isku_sysfs_write_keys_easyzone 6 6553 NULL | ||
98839 | +fb_alloc_cmap_6554 fb_alloc_cmap 2 6554 NULL | 97789 | +fb_alloc_cmap_6554 fb_alloc_cmap 2 6554 NULL |
97790 | +SyS_semtimedop_6563 SyS_semtimedop 3 6563 NULL | ||
97791 | +SyS_fcntl64_6582 SyS_fcntl64 3 6582 NULL | ||
98840 | +snmp_mib_init_6604 snmp_mib_init 2-3 6604 NULL | 97792 | +snmp_mib_init_6604 snmp_mib_init 2-3 6604 NULL |
98841 | +ecryptfs_filldir_6622 ecryptfs_filldir 3 6622 NULL | 97793 | +ecryptfs_filldir_6622 ecryptfs_filldir 3 6622 NULL |
97794 | +compat_SyS_shmat_6642 compat_SyS_shmat 2 6642 NULL | ||
98842 | +virtscsi_alloc_tgt_6643 virtscsi_alloc_tgt 2 6643 NULL | 97795 | +virtscsi_alloc_tgt_6643 virtscsi_alloc_tgt 2 6643 NULL |
98843 | +aac_srcv_ioremap_6659 aac_srcv_ioremap 2 6659 NULL | 97796 | +aac_srcv_ioremap_6659 aac_srcv_ioremap 2 6659 NULL |
98844 | +process_rcvd_data_6679 process_rcvd_data 3 6679 NULL | 97797 | +process_rcvd_data_6679 process_rcvd_data 3 6679 NULL |
@@ -98875,6 +97828,7 @@ index 0000000..7982a0c | |||
98875 | +rsa_extract_mpi_6973 rsa_extract_mpi 5 6973 NULL | 97828 | +rsa_extract_mpi_6973 rsa_extract_mpi 5 6973 NULL |
98876 | +crypto_authenc_esn_setkey_6985 crypto_authenc_esn_setkey 3 6985 NULL | 97829 | +crypto_authenc_esn_setkey_6985 crypto_authenc_esn_setkey 3 6985 NULL |
98877 | +request_key_async_6990 request_key_async 4 6990 NULL | 97830 | +request_key_async_6990 request_key_async 4 6990 NULL |
97831 | +tpl_write_6998 tpl_write 3 6998 NULL | ||
98878 | +r871x_set_wpa_ie_7000 r871x_set_wpa_ie 3 7000 NULL | 97832 | +r871x_set_wpa_ie_7000 r871x_set_wpa_ie 3 7000 NULL |
98879 | +cipso_v4_gentag_enum_7006 cipso_v4_gentag_enum 0 7006 NULL | 97833 | +cipso_v4_gentag_enum_7006 cipso_v4_gentag_enum 0 7006 NULL |
98880 | +tracing_cpumask_read_7010 tracing_cpumask_read 3 7010 NULL | 97834 | +tracing_cpumask_read_7010 tracing_cpumask_read 3 7010 NULL |
@@ -98888,12 +97842,14 @@ index 0000000..7982a0c | |||
98888 | +check_header_7108 check_header 0 7108 NULL | 97842 | +check_header_7108 check_header 0 7108 NULL |
98889 | +qlcnic_enable_msix_7144 qlcnic_enable_msix 2 7144 NULL | 97843 | +qlcnic_enable_msix_7144 qlcnic_enable_msix 2 7144 NULL |
98890 | +__alloc_objio_seg_7203 __alloc_objio_seg 1 7203 NULL | 97844 | +__alloc_objio_seg_7203 __alloc_objio_seg 1 7203 NULL |
97845 | +batadv_check_unicast_ttvn_7206 batadv_check_unicast_ttvn 3 7206 NULL | ||
98891 | +sys32_ipc_7238 sys32_ipc 3-5-6 7238 NULL | 97846 | +sys32_ipc_7238 sys32_ipc 3-5-6 7238 NULL |
98892 | +get_param_h_7247 get_param_h 0 7247 NULL | 97847 | +get_param_h_7247 get_param_h 0 7247 NULL |
98893 | +af_alg_make_sg_7254 af_alg_make_sg 3 7254 NULL | 97848 | +af_alg_make_sg_7254 af_alg_make_sg 3 7254 NULL |
98894 | +vm_mmap_pgoff_7259 vm_mmap_pgoff 0 7259 NULL | 97849 | +vm_mmap_pgoff_7259 vm_mmap_pgoff 0 7259 NULL |
98895 | +dma_ops_alloc_addresses_7272 dma_ops_alloc_addresses 3-4-5 7272 NULL | 97850 | +dma_ops_alloc_addresses_7272 dma_ops_alloc_addresses 3-4-5 7272 NULL |
98896 | +rx_rate_rx_frames_per_rates_read_7282 rx_rate_rx_frames_per_rates_read 3 7282 NULL | 97851 | +rx_rate_rx_frames_per_rates_read_7282 rx_rate_rx_frames_per_rates_read 3 7282 NULL |
97852 | +isku_sysfs_write_macro_7293 isku_sysfs_write_macro 6 7293 NULL | ||
98897 | +wb_remove_mapping_7307 wb_remove_mapping 2 7307 NULL | 97853 | +wb_remove_mapping_7307 wb_remove_mapping 2 7307 NULL |
98898 | +mgmt_control_7349 mgmt_control 3 7349 NULL | 97854 | +mgmt_control_7349 mgmt_control 3 7349 NULL |
98899 | +ext3_free_blocks_7362 ext3_free_blocks 3-4 7362 NULL | 97855 | +ext3_free_blocks_7362 ext3_free_blocks 3-4 7362 NULL |
@@ -98904,6 +97860,7 @@ index 0000000..7982a0c | |||
98904 | +readb_7401 readb 0 7401 NULL | 97860 | +readb_7401 readb 0 7401 NULL |
98905 | +drm_property_create_blob_7414 drm_property_create_blob 2 7414 NULL | 97861 | +drm_property_create_blob_7414 drm_property_create_blob 2 7414 NULL |
98906 | +ip_options_get_alloc_7448 ip_options_get_alloc 1 7448 NULL | 97862 | +ip_options_get_alloc_7448 ip_options_get_alloc 1 7448 NULL |
97863 | +SYSC_setgroups_7454 SYSC_setgroups 1 7454 NULL | ||
98907 | +numa_emulation_7466 numa_emulation 2 7466 NULL | 97864 | +numa_emulation_7466 numa_emulation 2 7466 NULL |
98908 | +__mutex_lock_common_7469 __mutex_lock_common 0 7469 NULL | 97865 | +__mutex_lock_common_7469 __mutex_lock_common 0 7469 NULL |
98909 | +garp_request_join_7471 garp_request_join 4 7471 NULL | 97866 | +garp_request_join_7471 garp_request_join 4 7471 NULL |
@@ -98914,6 +97871,7 @@ index 0000000..7982a0c | |||
98914 | +array_zalloc_7519 array_zalloc 1-2 7519 NULL | 97871 | +array_zalloc_7519 array_zalloc 1-2 7519 NULL |
98915 | +goal_in_my_reservation_7553 goal_in_my_reservation 3 7553 NULL | 97872 | +goal_in_my_reservation_7553 goal_in_my_reservation 3 7553 NULL |
98916 | +smk_read_mapped_7562 smk_read_mapped 3 7562 NULL | 97873 | +smk_read_mapped_7562 smk_read_mapped 3 7562 NULL |
97874 | +btrfs_block_rsv_add_7579 btrfs_block_rsv_add 3 7579 NULL | ||
98917 | +ext3_try_to_allocate_7590 ext3_try_to_allocate 5-3 7590 NULL | 97875 | +ext3_try_to_allocate_7590 ext3_try_to_allocate 5-3 7590 NULL |
98918 | +groups_alloc_7614 groups_alloc 1 7614 NULL | 97876 | +groups_alloc_7614 groups_alloc 1 7614 NULL |
98919 | +sg_virt_7616 sg_virt 0 7616 NULL | 97877 | +sg_virt_7616 sg_virt 0 7616 NULL |
@@ -98921,6 +97879,7 @@ index 0000000..7982a0c | |||
98921 | +acpi_ex_allocate_name_string_7685 acpi_ex_allocate_name_string 2-1 7685 &skb_copy_expand_7685 | 97879 | +acpi_ex_allocate_name_string_7685 acpi_ex_allocate_name_string 2-1 7685 &skb_copy_expand_7685 |
98922 | +acpi_ns_get_pathname_length_7699 acpi_ns_get_pathname_length 0 7699 NULL | 97880 | +acpi_ns_get_pathname_length_7699 acpi_ns_get_pathname_length 0 7699 NULL |
98923 | +dev_write_7708 dev_write 3 7708 NULL | 97881 | +dev_write_7708 dev_write 3 7708 NULL |
97882 | +unmap_region_7709 unmap_region 1 7709 NULL | ||
98924 | +brcmf_sdcard_send_buf_7713 brcmf_sdcard_send_buf 6 7713 NULL | 97883 | +brcmf_sdcard_send_buf_7713 brcmf_sdcard_send_buf 6 7713 NULL |
98925 | +set_bypass_pwup_pfs_7742 set_bypass_pwup_pfs 3 7742 NULL | 97884 | +set_bypass_pwup_pfs_7742 set_bypass_pwup_pfs 3 7742 NULL |
98926 | +vxge_device_register_7752 vxge_device_register 4 7752 NULL | 97885 | +vxge_device_register_7752 vxge_device_register 4 7752 NULL |
@@ -98939,6 +97898,7 @@ index 0000000..7982a0c | |||
98939 | +libfc_host_alloc_7917 libfc_host_alloc 2 7917 NULL | 97898 | +libfc_host_alloc_7917 libfc_host_alloc 2 7917 NULL |
98940 | +f_hidg_write_7932 f_hidg_write 3 7932 NULL | 97899 | +f_hidg_write_7932 f_hidg_write 3 7932 NULL |
98941 | +io_apic_setup_irq_pin_once_7934 io_apic_setup_irq_pin_once 1 7934 NULL | 97900 | +io_apic_setup_irq_pin_once_7934 io_apic_setup_irq_pin_once 1 7934 NULL |
97901 | +hash_netiface6_expire_7944 hash_netiface6_expire 3 7944 NULL | ||
98942 | +integrity_digsig_verify_7956 integrity_digsig_verify 3 7956 NULL | 97902 | +integrity_digsig_verify_7956 integrity_digsig_verify 3 7956 NULL |
98943 | +smk_write_load_self_7958 smk_write_load_self 3 7958 NULL | 97903 | +smk_write_load_self_7958 smk_write_load_self 3 7958 NULL |
98944 | +sys_mbind_7990 sys_mbind 5 7990 NULL | 97904 | +sys_mbind_7990 sys_mbind 5 7990 NULL |
@@ -98954,6 +97914,7 @@ index 0000000..7982a0c | |||
98954 | +venus_lookup_8121 venus_lookup 4 8121 NULL | 97914 | +venus_lookup_8121 venus_lookup 4 8121 NULL |
98955 | +ieee80211_if_fmt_num_buffered_multicast_8127 ieee80211_if_fmt_num_buffered_multicast 3 8127 NULL | 97915 | +ieee80211_if_fmt_num_buffered_multicast_8127 ieee80211_if_fmt_num_buffered_multicast 3 8127 NULL |
98956 | +dma_map_area_8178 dma_map_area 5-2-3 8178 NULL | 97916 | +dma_map_area_8178 dma_map_area 5-2-3 8178 NULL |
97917 | +ore_truncate_8181 ore_truncate 3 8181 NULL | ||
98957 | +__sk_mem_schedule_8185 __sk_mem_schedule 2 8185 NULL | 97918 | +__sk_mem_schedule_8185 __sk_mem_schedule 2 8185 NULL |
98958 | +ieee80211_if_fmt_dot11MeshHoldingTimeout_8187 ieee80211_if_fmt_dot11MeshHoldingTimeout 3 8187 NULL | 97919 | +ieee80211_if_fmt_dot11MeshHoldingTimeout_8187 ieee80211_if_fmt_dot11MeshHoldingTimeout 3 8187 NULL |
98959 | +recent_mt_proc_write_8206 recent_mt_proc_write 3 8206 NULL | 97920 | +recent_mt_proc_write_8206 recent_mt_proc_write 3 8206 NULL |
@@ -98963,6 +97924,7 @@ index 0000000..7982a0c | |||
98963 | +create_log_8225 create_log 2 8225 NULL nohasharray | 97924 | +create_log_8225 create_log 2 8225 NULL nohasharray |
98964 | +kvm_mmu_page_set_gfn_8225 kvm_mmu_page_set_gfn 2 8225 &create_log_8225 | 97925 | +kvm_mmu_page_set_gfn_8225 kvm_mmu_page_set_gfn 2 8225 &create_log_8225 |
98965 | +sctp_ssnmap_size_8228 sctp_ssnmap_size 0-1-2 8228 NULL | 97926 | +sctp_ssnmap_size_8228 sctp_ssnmap_size 0-1-2 8228 NULL |
97927 | +ceph_sync_write_8233 ceph_sync_write 4 8233 NULL | ||
98966 | +bnx2x_iov_get_max_queue_count_8235 bnx2x_iov_get_max_queue_count 0 8235 NULL | 97928 | +bnx2x_iov_get_max_queue_count_8235 bnx2x_iov_get_max_queue_count 0 8235 NULL |
98967 | +check_xattr_ref_inode_8244 check_xattr_ref_inode 0 8244 NULL | 97929 | +check_xattr_ref_inode_8244 check_xattr_ref_inode 0 8244 NULL |
98968 | +add_rx_skb_8257 add_rx_skb 3 8257 NULL | 97930 | +add_rx_skb_8257 add_rx_skb 3 8257 NULL |
@@ -98974,11 +97936,13 @@ index 0000000..7982a0c | |||
98974 | +ipwireless_send_packet_8328 ipwireless_send_packet 4 8328 NULL | 97936 | +ipwireless_send_packet_8328 ipwireless_send_packet 4 8328 NULL |
98975 | +tracing_entries_read_8345 tracing_entries_read 3 8345 NULL | 97937 | +tracing_entries_read_8345 tracing_entries_read 3 8345 NULL |
98976 | +ieee80211_if_fmt_ht_opmode_8347 ieee80211_if_fmt_ht_opmode 3 8347 NULL | 97938 | +ieee80211_if_fmt_ht_opmode_8347 ieee80211_if_fmt_ht_opmode 3 8347 NULL |
98977 | +ping_getfrag_8360 ping_getfrag 4-3 8360 NULL | 97939 | +isku_sysfs_write_talk_8360 isku_sysfs_write_talk 6 8360 NULL nohasharray |
97940 | +ping_getfrag_8360 ping_getfrag 4-3 8360 &isku_sysfs_write_talk_8360 | ||
98978 | +uvc_v4l2_compat_ioctl32_8375 uvc_v4l2_compat_ioctl32 3 8375 NULL | 97941 | +uvc_v4l2_compat_ioctl32_8375 uvc_v4l2_compat_ioctl32 3 8375 NULL |
98979 | +xdi_copy_from_user_8395 xdi_copy_from_user 4 8395 NULL | 97942 | +xdi_copy_from_user_8395 xdi_copy_from_user 4 8395 NULL |
98980 | +zd_rf_scnprint_id_8406 zd_rf_scnprint_id 0-3 8406 NULL | 97943 | +zd_rf_scnprint_id_8406 zd_rf_scnprint_id 0-3 8406 NULL |
98981 | +uvc_v4l2_ioctl_8411 uvc_v4l2_ioctl 2 8411 NULL | 97944 | +smk_write_change_rule_8411 smk_write_change_rule 3 8411 NULL nohasharray |
97945 | +uvc_v4l2_ioctl_8411 uvc_v4l2_ioctl 2 8411 &smk_write_change_rule_8411 | ||
98982 | +pca953x_gpio_to_irq_8424 pca953x_gpio_to_irq 2 8424 NULL | 97946 | +pca953x_gpio_to_irq_8424 pca953x_gpio_to_irq 2 8424 NULL |
98983 | +snd_usb_ctl_msg_8436 snd_usb_ctl_msg 8 8436 NULL | 97947 | +snd_usb_ctl_msg_8436 snd_usb_ctl_msg 8 8436 NULL |
98984 | +irq_create_mapping_8437 irq_create_mapping 2 8437 NULL | 97948 | +irq_create_mapping_8437 irq_create_mapping 2 8437 NULL |
@@ -98990,6 +97954,7 @@ index 0000000..7982a0c | |||
98990 | +pnp_resource_len_8532 pnp_resource_len 0 8532 NULL | 97954 | +pnp_resource_len_8532 pnp_resource_len 0 8532 NULL |
98991 | +alloc_pg_vec_8533 alloc_pg_vec 2 8533 NULL | 97955 | +alloc_pg_vec_8533 alloc_pg_vec 2 8533 NULL |
98992 | +ocfs2_read_virt_blocks_8538 ocfs2_read_virt_blocks 2-3 8538 NULL | 97956 | +ocfs2_read_virt_blocks_8538 ocfs2_read_virt_blocks 2-3 8538 NULL |
97957 | +user_on_off_8552 user_on_off 2 8552 NULL | ||
98993 | +profile_remove_8556 profile_remove 3 8556 NULL | 97958 | +profile_remove_8556 profile_remove 3 8556 NULL |
98994 | +cache_slow_downcall_8570 cache_slow_downcall 2 8570 NULL | 97959 | +cache_slow_downcall_8570 cache_slow_downcall 2 8570 NULL |
98995 | +mga_ioremap_8571 mga_ioremap 1-2 8571 NULL | 97960 | +mga_ioremap_8571 mga_ioremap 1-2 8571 NULL |
@@ -98999,7 +97964,7 @@ index 0000000..7982a0c | |||
98999 | +shash_setkey_unaligned_8620 shash_setkey_unaligned 3 8620 NULL | 97964 | +shash_setkey_unaligned_8620 shash_setkey_unaligned 3 8620 NULL |
99000 | +it821x_firmware_command_8628 it821x_firmware_command 3 8628 NULL | 97965 | +it821x_firmware_command_8628 it821x_firmware_command 3 8628 NULL |
99001 | +scsi_dma_map_8632 scsi_dma_map 0 8632 NULL | 97966 | +scsi_dma_map_8632 scsi_dma_map 0 8632 NULL |
99002 | +fuse_send_write_pages_8636 fuse_send_write_pages 0 8636 NULL | 97967 | +fuse_send_write_pages_8636 fuse_send_write_pages 0-5 8636 NULL |
99003 | +generic_acl_set_8658 generic_acl_set 4 8658 NULL | 97968 | +generic_acl_set_8658 generic_acl_set 4 8658 NULL |
99004 | +dio_bio_alloc_8677 dio_bio_alloc 5 8677 NULL | 97969 | +dio_bio_alloc_8677 dio_bio_alloc 5 8677 NULL |
99005 | +lbs_bcnmiss_read_8678 lbs_bcnmiss_read 3 8678 NULL | 97970 | +lbs_bcnmiss_read_8678 lbs_bcnmiss_read 3 8678 NULL |
@@ -99044,6 +98009,7 @@ index 0000000..7982a0c | |||
99044 | +vol_cdev_read_8968 vol_cdev_read 3 8968 NULL nohasharray | 98009 | +vol_cdev_read_8968 vol_cdev_read 3 8968 NULL nohasharray |
99045 | +seq_open_net_8968 seq_open_net 4 8968 &vol_cdev_read_8968 | 98010 | +seq_open_net_8968 seq_open_net 4 8968 &vol_cdev_read_8968 |
99046 | +bio_integrity_get_tag_8974 bio_integrity_get_tag 3 8974 NULL | 98011 | +bio_integrity_get_tag_8974 bio_integrity_get_tag 3 8974 NULL |
98012 | +btrfs_alloc_free_block_8986 btrfs_alloc_free_block 3 8986 NULL | ||
99047 | +snd_emu10k1_ptr_read_9026 snd_emu10k1_ptr_read 0-2 9026 NULL | 98013 | +snd_emu10k1_ptr_read_9026 snd_emu10k1_ptr_read 0-2 9026 NULL |
99048 | +__pskb_copy_9038 __pskb_copy 2 9038 NULL | 98014 | +__pskb_copy_9038 __pskb_copy 2 9038 NULL |
99049 | +nla_put_9042 nla_put 3 9042 NULL | 98015 | +nla_put_9042 nla_put 3 9042 NULL |
@@ -99056,6 +98022,7 @@ index 0000000..7982a0c | |||
99056 | +caif_stream_sendmsg_9110 caif_stream_sendmsg 4 9110 NULL nohasharray | 98022 | +caif_stream_sendmsg_9110 caif_stream_sendmsg 4 9110 NULL nohasharray |
99057 | +gfn_to_rmap_9110 gfn_to_rmap 2-3 9110 &caif_stream_sendmsg_9110 | 98023 | +gfn_to_rmap_9110 gfn_to_rmap 2-3 9110 &caif_stream_sendmsg_9110 |
99058 | +pmcraid_change_queue_depth_9116 pmcraid_change_queue_depth 2 9116 NULL | 98024 | +pmcraid_change_queue_depth_9116 pmcraid_change_queue_depth 2 9116 NULL |
98025 | +isku_sysfs_write_keys_macro_9120 isku_sysfs_write_keys_macro 6 9120 NULL | ||
99059 | +mq_remove_mapping_9124 mq_remove_mapping 2 9124 NULL | 98026 | +mq_remove_mapping_9124 mq_remove_mapping 2 9124 NULL |
99060 | +mlx4_alloc_resize_umem_9132 mlx4_alloc_resize_umem 3 9132 NULL | 98027 | +mlx4_alloc_resize_umem_9132 mlx4_alloc_resize_umem 3 9132 NULL |
99061 | +ext4_list_backups_9138 ext4_list_backups 0 9138 NULL | 98028 | +ext4_list_backups_9138 ext4_list_backups 0 9138 NULL |
@@ -99067,6 +98034,7 @@ index 0000000..7982a0c | |||
99067 | +gx1_gx_base_9198 gx1_gx_base 0 9198 NULL | 98034 | +gx1_gx_base_9198 gx1_gx_base 0 9198 NULL |
99068 | +snd_m3_get_pointer_9206 snd_m3_get_pointer 0 9206 NULL | 98035 | +snd_m3_get_pointer_9206 snd_m3_get_pointer 0 9206 NULL |
99069 | +get_pfn_9207 get_pfn 1 9207 NULL | 98036 | +get_pfn_9207 get_pfn 1 9207 NULL |
98037 | +virtqueue_add_9217 virtqueue_add 5-4 9217 NULL | ||
99070 | +tx_tx_prepared_descs_read_9221 tx_tx_prepared_descs_read 3 9221 NULL | 98038 | +tx_tx_prepared_descs_read_9221 tx_tx_prepared_descs_read 3 9221 NULL |
99071 | +sctp_getsockopt_delayed_ack_9232 sctp_getsockopt_delayed_ack 2 9232 NULL | 98039 | +sctp_getsockopt_delayed_ack_9232 sctp_getsockopt_delayed_ack 2 9232 NULL |
99072 | +ocfs2_clear_ext_refcount_9256 ocfs2_clear_ext_refcount 4 9256 NULL | 98040 | +ocfs2_clear_ext_refcount_9256 ocfs2_clear_ext_refcount 4 9256 NULL |
@@ -99079,7 +98047,10 @@ index 0000000..7982a0c | |||
99079 | +ceph_sync_setxattr_9310 ceph_sync_setxattr 4 9310 NULL | 98047 | +ceph_sync_setxattr_9310 ceph_sync_setxattr 4 9310 NULL |
99080 | +memblock_find_in_range_node_9328 memblock_find_in_range_node 0-3-4 9328 NULL | 98048 | +memblock_find_in_range_node_9328 memblock_find_in_range_node 0-3-4 9328 NULL |
99081 | +ieee80211_if_fmt_txpower_9334 ieee80211_if_fmt_txpower 3 9334 NULL | 98049 | +ieee80211_if_fmt_txpower_9334 ieee80211_if_fmt_txpower 3 9334 NULL |
98050 | +nvme_trans_fmt_get_parm_header_9340 nvme_trans_fmt_get_parm_header 2 9340 NULL | ||
99082 | +ocfs2_orphan_for_truncate_9342 ocfs2_orphan_for_truncate 4 9342 NULL | 98051 | +ocfs2_orphan_for_truncate_9342 ocfs2_orphan_for_truncate 4 9342 NULL |
98052 | +sta_beacon_loss_count_read_9370 sta_beacon_loss_count_read 3 9370 NULL | ||
98053 | +virtqueue_add_outbuf_9395 virtqueue_add_outbuf 3 9395 NULL | ||
99083 | +read_9397 read 3 9397 NULL | 98054 | +read_9397 read 3 9397 NULL |
99084 | +nf_nat_sip_expect_9418 nf_nat_sip_expect 8 9418 NULL | 98055 | +nf_nat_sip_expect_9418 nf_nat_sip_expect 8 9418 NULL |
99085 | +bm_realloc_pages_9431 bm_realloc_pages 2 9431 NULL | 98056 | +bm_realloc_pages_9431 bm_realloc_pages 2 9431 NULL |
@@ -99103,6 +98074,7 @@ index 0000000..7982a0c | |||
99103 | +f2fs_read_data_pages_9574 f2fs_read_data_pages 4 9574 NULL | 98074 | +f2fs_read_data_pages_9574 f2fs_read_data_pages 4 9574 NULL |
99104 | +biovec_create_pools_9575 biovec_create_pools 2 9575 NULL | 98075 | +biovec_create_pools_9575 biovec_create_pools 2 9575 NULL |
99105 | +ieee80211_tdls_mgmt_9581 ieee80211_tdls_mgmt 8 9581 NULL | 98076 | +ieee80211_tdls_mgmt_9581 ieee80211_tdls_mgmt 8 9581 NULL |
98077 | +use_block_rsv_9597 use_block_rsv 3 9597 NULL | ||
99106 | +do_sync_9604 do_sync 1 9604 NULL | 98078 | +do_sync_9604 do_sync 1 9604 NULL |
99107 | +snd_emu10k1_fx8010_read_9605 snd_emu10k1_fx8010_read 5-6 9605 NULL | 98079 | +snd_emu10k1_fx8010_read_9605 snd_emu10k1_fx8010_read 5-6 9605 NULL |
99108 | +saa7164_buffer_alloc_user_9627 saa7164_buffer_alloc_user 2 9627 NULL | 98080 | +saa7164_buffer_alloc_user_9627 saa7164_buffer_alloc_user 2 9627 NULL |
@@ -99121,6 +98093,7 @@ index 0000000..7982a0c | |||
99121 | +fnb_9703 fnb 2-3 9703 NULL | 98093 | +fnb_9703 fnb 2-3 9703 NULL |
99122 | +fuse_iter_npages_9705 fuse_iter_npages 0 9705 NULL nohasharray | 98094 | +fuse_iter_npages_9705 fuse_iter_npages 0 9705 NULL nohasharray |
99123 | +ieee80211_if_read_aid_9705 ieee80211_if_read_aid 3 9705 &fuse_iter_npages_9705 | 98095 | +ieee80211_if_read_aid_9705 ieee80211_if_read_aid 3 9705 &fuse_iter_npages_9705 |
98096 | +nla_get_u8_9736 nla_get_u8 0 9736 NULL | ||
99124 | +ieee80211_if_fmt_num_mcast_sta_9738 ieee80211_if_fmt_num_mcast_sta 3 9738 NULL | 98097 | +ieee80211_if_fmt_num_mcast_sta_9738 ieee80211_if_fmt_num_mcast_sta 3 9738 NULL |
99125 | +ddb_input_read_9743 ddb_input_read 3 9743 NULL | 98098 | +ddb_input_read_9743 ddb_input_read 3 9743 NULL |
99126 | +sta_last_ack_signal_read_9751 sta_last_ack_signal_read 3 9751 NULL | 98099 | +sta_last_ack_signal_read_9751 sta_last_ack_signal_read 3 9751 NULL |
@@ -99152,11 +98125,13 @@ index 0000000..7982a0c | |||
99152 | +get_free_serial_index_9969 get_free_serial_index 0 9969 NULL | 98125 | +get_free_serial_index_9969 get_free_serial_index 0 9969 NULL |
99153 | +btrfs_add_link_9973 btrfs_add_link 5 9973 NULL | 98126 | +btrfs_add_link_9973 btrfs_add_link 5 9973 NULL |
99154 | +ath6kl_usb_submit_ctrl_out_9978 ath6kl_usb_submit_ctrl_out 6 9978 NULL | 98127 | +ath6kl_usb_submit_ctrl_out_9978 ath6kl_usb_submit_ctrl_out 6 9978 NULL |
98128 | +SYSC_move_pages_9986 SYSC_move_pages 2 9986 NULL | ||
99155 | +aat2870_dump_reg_10019 aat2870_dump_reg 0 10019 NULL | 98129 | +aat2870_dump_reg_10019 aat2870_dump_reg 0 10019 NULL |
99156 | +handle_request_10024 handle_request 9 10024 NULL | 98130 | +handle_request_10024 handle_request 9 10024 NULL |
99157 | +batadv_orig_hash_add_if_10033 batadv_orig_hash_add_if 2 10033 NULL | 98131 | +batadv_orig_hash_add_if_10033 batadv_orig_hash_add_if 2 10033 NULL |
99158 | +ieee80211_probereq_get_10040 ieee80211_probereq_get 4-5 10040 NULL | 98132 | +ieee80211_probereq_get_10040 ieee80211_probereq_get 4-5 10040 NULL |
99159 | +xen_destroy_contiguous_region_10054 xen_destroy_contiguous_region 1 10054 NULL | 98133 | +xen_destroy_contiguous_region_10054 xen_destroy_contiguous_region 1 10054 NULL |
98134 | +vfio_pci_write_10063 vfio_pci_write 3 10063 NULL | ||
99160 | +ieee80211_set_probe_resp_10077 ieee80211_set_probe_resp 3 10077 NULL | 98135 | +ieee80211_set_probe_resp_10077 ieee80211_set_probe_resp 3 10077 NULL |
99161 | +ufs_bitmap_search_10105 ufs_bitmap_search 0-3 10105 NULL | 98136 | +ufs_bitmap_search_10105 ufs_bitmap_search 0-3 10105 NULL |
99162 | +get_elem_size_10110 get_elem_size 0-2 10110 NULL nohasharray | 98137 | +get_elem_size_10110 get_elem_size 0-2 10110 NULL nohasharray |
@@ -99174,6 +98149,7 @@ index 0000000..7982a0c | |||
99174 | +jffs2_user_setxattr_10182 jffs2_user_setxattr 4 10182 NULL | 98149 | +jffs2_user_setxattr_10182 jffs2_user_setxattr 4 10182 NULL |
99175 | +do_ioctl_trans_10194 do_ioctl_trans 3 10194 NULL | 98150 | +do_ioctl_trans_10194 do_ioctl_trans 3 10194 NULL |
99176 | +cciss_proc_write_10259 cciss_proc_write 3 10259 NULL | 98151 | +cciss_proc_write_10259 cciss_proc_write 3 10259 NULL |
98152 | +__qlcnic_pci_sriov_enable_10281 __qlcnic_pci_sriov_enable 2 10281 NULL | ||
99177 | +snd_rme9652_capture_copy_10287 snd_rme9652_capture_copy 5 10287 NULL | 98153 | +snd_rme9652_capture_copy_10287 snd_rme9652_capture_copy 5 10287 NULL |
99178 | +ubi_leb_change_10289 ubi_leb_change 4 10289 NULL | 98154 | +ubi_leb_change_10289 ubi_leb_change 4 10289 NULL |
99179 | +read_emulate_10310 read_emulate 2-4 10310 NULL | 98155 | +read_emulate_10310 read_emulate 2-4 10310 NULL |
@@ -99196,6 +98172,8 @@ index 0000000..7982a0c | |||
99196 | +sel_write_disable_10511 sel_write_disable 3 10511 NULL | 98172 | +sel_write_disable_10511 sel_write_disable 3 10511 NULL |
99197 | +osd_req_write_sg_kern_10514 osd_req_write_sg_kern 5 10514 NULL | 98173 | +osd_req_write_sg_kern_10514 osd_req_write_sg_kern 5 10514 NULL |
99198 | +rds_message_alloc_10517 rds_message_alloc 1 10517 NULL | 98174 | +rds_message_alloc_10517 rds_message_alloc 1 10517 NULL |
98175 | +qlcnic_pci_sriov_enable_10519 qlcnic_pci_sriov_enable 2 10519 NULL nohasharray | ||
98176 | +hash_netiface4_expire_10519 hash_netiface4_expire 3 10519 &qlcnic_pci_sriov_enable_10519 | ||
99199 | +ocfs2_add_refcounted_extent_10526 ocfs2_add_refcounted_extent 6 10526 NULL | 98177 | +ocfs2_add_refcounted_extent_10526 ocfs2_add_refcounted_extent 6 10526 NULL |
99200 | +get_vm_area_caller_10527 get_vm_area_caller 1 10527 NULL | 98178 | +get_vm_area_caller_10527 get_vm_area_caller 1 10527 NULL |
99201 | +snd_pcm_lib_read_10536 snd_pcm_lib_read 0-3 10536 NULL | 98179 | +snd_pcm_lib_read_10536 snd_pcm_lib_read 0-3 10536 NULL |
@@ -99207,6 +98185,7 @@ index 0000000..7982a0c | |||
99207 | +ima_show_htable_violations_10619 ima_show_htable_violations 3 10619 NULL | 98185 | +ima_show_htable_violations_10619 ima_show_htable_violations 3 10619 NULL |
99208 | +alloc_coherent_10632 alloc_coherent 2 10632 NULL | 98186 | +alloc_coherent_10632 alloc_coherent 2 10632 NULL |
99209 | +nfs_idmap_lookup_id_10660 nfs_idmap_lookup_id 2 10660 NULL | 98187 | +nfs_idmap_lookup_id_10660 nfs_idmap_lookup_id 2 10660 NULL |
98188 | +dtf_read_device_10663 dtf_read_device 3 10663 NULL | ||
99210 | +parport_write_10669 parport_write 0 10669 NULL | 98189 | +parport_write_10669 parport_write 0 10669 NULL |
99211 | +inl_10708 inl 0 10708 NULL nohasharray | 98190 | +inl_10708 inl 0 10708 NULL nohasharray |
99212 | +selinux_inode_setxattr_10708 selinux_inode_setxattr 4 10708 &inl_10708 | 98191 | +selinux_inode_setxattr_10708 selinux_inode_setxattr 4 10708 &inl_10708 |
@@ -99236,6 +98215,7 @@ index 0000000..7982a0c | |||
99236 | +tifm_alloc_adapter_10903 tifm_alloc_adapter 1 10903 NULL | 98215 | +tifm_alloc_adapter_10903 tifm_alloc_adapter 1 10903 NULL |
99237 | +__copy_from_user_10918 __copy_from_user 3 10918 NULL | 98216 | +__copy_from_user_10918 __copy_from_user 3 10918 NULL |
99238 | +da9052_map_irq_10952 da9052_map_irq 2 10952 NULL | 98217 | +da9052_map_irq_10952 da9052_map_irq 2 10952 NULL |
98218 | +ci_port_test_write_10962 ci_port_test_write 3 10962 NULL | ||
99239 | +bm_entry_read_10976 bm_entry_read 3 10976 NULL | 98219 | +bm_entry_read_10976 bm_entry_read 3 10976 NULL |
99240 | +i915_min_freq_write_10981 i915_min_freq_write 3 10981 NULL | 98220 | +i915_min_freq_write_10981 i915_min_freq_write 3 10981 NULL |
99241 | +sched_autogroup_write_10984 sched_autogroup_write 3 10984 NULL | 98221 | +sched_autogroup_write_10984 sched_autogroup_write 3 10984 NULL |
@@ -99251,7 +98231,9 @@ index 0000000..7982a0c | |||
99251 | +stmpe_gpio_to_irq_11110 stmpe_gpio_to_irq 2 11110 NULL | 98231 | +stmpe_gpio_to_irq_11110 stmpe_gpio_to_irq 2 11110 NULL |
99252 | +tw_change_queue_depth_11116 tw_change_queue_depth 2 11116 NULL | 98232 | +tw_change_queue_depth_11116 tw_change_queue_depth 2 11116 NULL |
99253 | +page_offset_11120 page_offset 0 11120 NULL | 98233 | +page_offset_11120 page_offset 0 11120 NULL |
99254 | +tracing_buffers_read_11124 tracing_buffers_read 3 11124 NULL | 98234 | +tracing_buffers_read_11124 tracing_buffers_read 3 11124 NULL nohasharray |
98235 | +cea_db_payload_len_11124 cea_db_payload_len 0 11124 &tracing_buffers_read_11124 | ||
98236 | +alloc_alien_cache_11127 alloc_alien_cache 2 11127 NULL | ||
99255 | +acpi_os_map_memory_11161 acpi_os_map_memory 1-2 11161 NULL | 98237 | +acpi_os_map_memory_11161 acpi_os_map_memory 1-2 11161 NULL |
99256 | +ioat2_alloc_ring_11172 ioat2_alloc_ring 2 11172 NULL nohasharray | 98238 | +ioat2_alloc_ring_11172 ioat2_alloc_ring 2 11172 NULL nohasharray |
99257 | +snd_gf1_pcm_playback_silence_11172 snd_gf1_pcm_playback_silence 3-4 11172 &ioat2_alloc_ring_11172 | 98239 | +snd_gf1_pcm_playback_silence_11172 snd_gf1_pcm_playback_silence 3-4 11172 &ioat2_alloc_ring_11172 |
@@ -99275,6 +98257,7 @@ index 0000000..7982a0c | |||
99275 | +batadv_skb_head_push_11360 batadv_skb_head_push 2 11360 NULL | 98257 | +batadv_skb_head_push_11360 batadv_skb_head_push 2 11360 NULL |
99276 | +drm_vblank_init_11362 drm_vblank_init 2 11362 NULL | 98258 | +drm_vblank_init_11362 drm_vblank_init 2 11362 NULL |
99277 | +qib_get_base_info_11369 qib_get_base_info 3 11369 NULL | 98259 | +qib_get_base_info_11369 qib_get_base_info 3 11369 NULL |
98260 | +isku_sysfs_read_keys_capslock_11392 isku_sysfs_read_keys_capslock 6 11392 NULL | ||
99278 | +dev_irnet_write_11398 dev_irnet_write 3 11398 NULL | 98261 | +dev_irnet_write_11398 dev_irnet_write 3 11398 NULL |
99279 | +___alloc_bootmem_11410 ___alloc_bootmem 1-2 11410 NULL | 98262 | +___alloc_bootmem_11410 ___alloc_bootmem 1-2 11410 NULL |
99280 | +str_to_user_11411 str_to_user 2 11411 NULL | 98263 | +str_to_user_11411 str_to_user 2 11411 NULL |
@@ -99299,9 +98282,12 @@ index 0000000..7982a0c | |||
99299 | +oprofilefs_ulong_to_user_11582 oprofilefs_ulong_to_user 3 11582 NULL | 98282 | +oprofilefs_ulong_to_user_11582 oprofilefs_ulong_to_user 3 11582 NULL |
99300 | +snd_pcm_action_11589 snd_pcm_action 0 11589 NULL | 98283 | +snd_pcm_action_11589 snd_pcm_action 0 11589 NULL |
99301 | +fw_device_op_ioctl_11595 fw_device_op_ioctl 2 11595 NULL | 98284 | +fw_device_op_ioctl_11595 fw_device_op_ioctl 2 11595 NULL |
98285 | +SYSC_mq_timedsend_11607 SYSC_mq_timedsend 3 11607 NULL | ||
98286 | +add_new_bitmap_11644 add_new_bitmap 3 11644 NULL | ||
99302 | +sisusb_send_bridge_packet_11649 sisusb_send_bridge_packet 2 11649 NULL | 98287 | +sisusb_send_bridge_packet_11649 sisusb_send_bridge_packet 2 11649 NULL |
99303 | +nla_total_size_11658 nla_total_size 0-1 11658 NULL | 98288 | +nla_total_size_11658 nla_total_size 0-1 11658 NULL |
99304 | +ide_queue_pc_tail_11673 ide_queue_pc_tail 5 11673 NULL | 98289 | +ide_queue_pc_tail_11673 ide_queue_pc_tail 5 11673 NULL |
98290 | +compat_SyS_msgsnd_11675 compat_SyS_msgsnd 2-3 11675 NULL | ||
99305 | +btrfs_alloc_delayed_item_11678 btrfs_alloc_delayed_item 1 11678 NULL | 98291 | +btrfs_alloc_delayed_item_11678 btrfs_alloc_delayed_item 1 11678 NULL |
99306 | +dsp_buffer_alloc_11684 dsp_buffer_alloc 2 11684 NULL | 98292 | +dsp_buffer_alloc_11684 dsp_buffer_alloc 2 11684 NULL |
99307 | +sctp_setsockopt_hmac_ident_11687 sctp_setsockopt_hmac_ident 3 11687 NULL | 98293 | +sctp_setsockopt_hmac_ident_11687 sctp_setsockopt_hmac_ident 3 11687 NULL |
@@ -99354,6 +98340,7 @@ index 0000000..7982a0c | |||
99354 | +compat_do_arpt_set_ctl_12184 compat_do_arpt_set_ctl 4 12184 NULL | 98340 | +compat_do_arpt_set_ctl_12184 compat_do_arpt_set_ctl 4 12184 NULL |
99355 | +ip_generic_getfrag_12187 ip_generic_getfrag 3-4 12187 NULL | 98341 | +ip_generic_getfrag_12187 ip_generic_getfrag 3-4 12187 NULL |
99356 | +bl_is_sector_init_12199 bl_is_sector_init 2 12199 NULL | 98342 | +bl_is_sector_init_12199 bl_is_sector_init 2 12199 NULL |
98343 | +scaled_div_12201 scaled_div 1-2 12201 NULL | ||
99357 | +free_initrd_mem_12203 free_initrd_mem 1 12203 NULL | 98344 | +free_initrd_mem_12203 free_initrd_mem 1 12203 NULL |
99358 | +receive_copy_12216 receive_copy 3 12216 NULL | 98345 | +receive_copy_12216 receive_copy 3 12216 NULL |
99359 | +snd_pcm_kernel_ioctl_12219 snd_pcm_kernel_ioctl 0 12219 NULL | 98346 | +snd_pcm_kernel_ioctl_12219 snd_pcm_kernel_ioctl 0 12219 NULL |
@@ -99368,6 +98355,7 @@ index 0000000..7982a0c | |||
99368 | +roundup_to_multiple_of_64_12288 roundup_to_multiple_of_64 0-1 12288 NULL nohasharray | 98355 | +roundup_to_multiple_of_64_12288 roundup_to_multiple_of_64 0-1 12288 NULL nohasharray |
99369 | +il_dbgfs_nvm_read_12288 il_dbgfs_nvm_read 3 12288 &roundup_to_multiple_of_64_12288 | 98356 | +il_dbgfs_nvm_read_12288 il_dbgfs_nvm_read 3 12288 &roundup_to_multiple_of_64_12288 |
99370 | +vxge_get_num_vfs_12302 vxge_get_num_vfs 0 12302 NULL | 98357 | +vxge_get_num_vfs_12302 vxge_get_num_vfs 0 12302 NULL |
98358 | +wrap_min_12303 wrap_min 0-1-2 12303 NULL | ||
99371 | +tipc_msg_build_12326 tipc_msg_build 4 12326 NULL | 98359 | +tipc_msg_build_12326 tipc_msg_build 4 12326 NULL |
99372 | +pcbit_writecmd_12332 pcbit_writecmd 2 12332 NULL | 98360 | +pcbit_writecmd_12332 pcbit_writecmd 2 12332 NULL |
99373 | +mptctl_ioctl_12355 mptctl_ioctl 2 12355 NULL | 98361 | +mptctl_ioctl_12355 mptctl_ioctl 2 12355 NULL |
@@ -99375,6 +98363,7 @@ index 0000000..7982a0c | |||
99375 | +__nf_ct_ext_add_length_12364 __nf_ct_ext_add_length 3 12364 NULL | 98363 | +__nf_ct_ext_add_length_12364 __nf_ct_ext_add_length 3 12364 NULL |
99376 | +xfs_iext_inline_to_direct_12384 xfs_iext_inline_to_direct 2 12384 NULL | 98364 | +xfs_iext_inline_to_direct_12384 xfs_iext_inline_to_direct 2 12384 NULL |
99377 | +btrfs_file_extent_ram_bytes_12391 btrfs_file_extent_ram_bytes 0 12391 NULL | 98365 | +btrfs_file_extent_ram_bytes_12391 btrfs_file_extent_ram_bytes 0 12391 NULL |
98366 | +hbucket_elem_add_12416 hbucket_elem_add 3 12416 NULL | ||
99378 | +ieee80211_if_read_num_mcast_sta_12419 ieee80211_if_read_num_mcast_sta 3 12419 NULL | 98367 | +ieee80211_if_read_num_mcast_sta_12419 ieee80211_if_read_num_mcast_sta 3 12419 NULL |
99379 | +skb_do_copy_data_nocache_12465 skb_do_copy_data_nocache 5 12465 NULL | 98368 | +skb_do_copy_data_nocache_12465 skb_do_copy_data_nocache 5 12465 NULL |
99380 | +qla4_82xx_pci_mem_write_direct_12479 qla4_82xx_pci_mem_write_direct 2 12479 NULL | 98369 | +qla4_82xx_pci_mem_write_direct_12479 qla4_82xx_pci_mem_write_direct 2 12479 NULL |
@@ -99395,6 +98384,7 @@ index 0000000..7982a0c | |||
99395 | +pwr_rcvd_awake_bcns_cnt_read_12632 pwr_rcvd_awake_bcns_cnt_read 3 12632 NULL | 98384 | +pwr_rcvd_awake_bcns_cnt_read_12632 pwr_rcvd_awake_bcns_cnt_read 3 12632 NULL |
99396 | +ctrl_cdev_compat_ioctl_12634 ctrl_cdev_compat_ioctl 3 12634 NULL | 98385 | +ctrl_cdev_compat_ioctl_12634 ctrl_cdev_compat_ioctl 3 12634 NULL |
99397 | +pn_sendmsg_12640 pn_sendmsg 4 12640 NULL | 98386 | +pn_sendmsg_12640 pn_sendmsg 4 12640 NULL |
98387 | +dwc3_link_state_write_12641 dwc3_link_state_write 3 12641 NULL | ||
99398 | +wb_create_12651 wb_create 1 12651 NULL | 98388 | +wb_create_12651 wb_create 1 12651 NULL |
99399 | +ocfs2_read_block_12659 ocfs2_read_block 0 12659 NULL | 98389 | +ocfs2_read_block_12659 ocfs2_read_block 0 12659 NULL |
99400 | +sel_read_class_12669 sel_read_class 3 12669 NULL nohasharray | 98390 | +sel_read_class_12669 sel_read_class 3 12669 NULL nohasharray |
@@ -99402,12 +98392,14 @@ index 0000000..7982a0c | |||
99402 | +ieee80211_if_read_num_buffered_multicast_12716 ieee80211_if_read_num_buffered_multicast 3 12716 NULL | 98392 | +ieee80211_if_read_num_buffered_multicast_12716 ieee80211_if_read_num_buffered_multicast 3 12716 NULL |
99403 | +ivtv_write_12721 ivtv_write 3 12721 NULL | 98393 | +ivtv_write_12721 ivtv_write 3 12721 NULL |
99404 | +key_rx_spec_read_12736 key_rx_spec_read 3 12736 NULL | 98394 | +key_rx_spec_read_12736 key_rx_spec_read 3 12736 NULL |
98395 | +__mei_cl_async_send_12737 __mei_cl_async_send 3 12737 NULL | ||
99405 | +__videobuf_alloc_cached_12740 __videobuf_alloc_cached 1 12740 NULL | 98396 | +__videobuf_alloc_cached_12740 __videobuf_alloc_cached 1 12740 NULL |
99406 | +ieee80211_if_read_dot11MeshMaxRetries_12756 ieee80211_if_read_dot11MeshMaxRetries 3 12756 NULL | 98397 | +ieee80211_if_read_dot11MeshMaxRetries_12756 ieee80211_if_read_dot11MeshMaxRetries 3 12756 NULL |
99407 | +listxattr_12769 listxattr 3 12769 NULL | 98398 | +listxattr_12769 listxattr 3 12769 NULL |
99408 | +sctp_ssnmap_init_12772 sctp_ssnmap_init 2-3 12772 NULL | 98399 | +sctp_ssnmap_init_12772 sctp_ssnmap_init 2-3 12772 NULL |
99409 | +ieee80211_rx_mgmt_beacon_12780 ieee80211_rx_mgmt_beacon 3 12780 NULL | 98400 | +ieee80211_rx_mgmt_beacon_12780 ieee80211_rx_mgmt_beacon 3 12780 NULL |
99410 | +platform_create_bundle_12785 platform_create_bundle 4-6 12785 NULL | 98401 | +platform_create_bundle_12785 platform_create_bundle 4-6 12785 NULL |
98402 | +btrfs_remove_free_space_12793 btrfs_remove_free_space 2 12793 NULL | ||
99411 | +scsi_adjust_queue_depth_12802 scsi_adjust_queue_depth 3 12802 NULL | 98403 | +scsi_adjust_queue_depth_12802 scsi_adjust_queue_depth 3 12802 NULL |
99412 | +xfs_inumbers_fmt_12817 xfs_inumbers_fmt 3 12817 NULL | 98404 | +xfs_inumbers_fmt_12817 xfs_inumbers_fmt 3 12817 NULL |
99413 | +readq_12825 readq 0 12825 NULL | 98405 | +readq_12825 readq 0 12825 NULL |
@@ -99431,6 +98423,7 @@ index 0000000..7982a0c | |||
99431 | +generic_segment_checks_13041 generic_segment_checks 0 13041 NULL | 98423 | +generic_segment_checks_13041 generic_segment_checks 0 13041 NULL |
99432 | +ocfs2_write_begin_13045 ocfs2_write_begin 3-4 13045 NULL | 98424 | +ocfs2_write_begin_13045 ocfs2_write_begin 3-4 13045 NULL |
99433 | +__dn_setsockopt_13060 __dn_setsockopt 5 13060 NULL | 98425 | +__dn_setsockopt_13060 __dn_setsockopt 5 13060 NULL |
98426 | +biovec_create_pool_13079 biovec_create_pool 2 13079 NULL | ||
99434 | +irq_set_chip_and_handler_13088 irq_set_chip_and_handler 1 13088 NULL | 98427 | +irq_set_chip_and_handler_13088 irq_set_chip_and_handler 1 13088 NULL |
99435 | +xattr_getsecurity_13090 xattr_getsecurity 0 13090 NULL | 98428 | +xattr_getsecurity_13090 xattr_getsecurity 0 13090 NULL |
99436 | +blk_rq_map_sg_13092 blk_rq_map_sg 0 13092 NULL | 98429 | +blk_rq_map_sg_13092 blk_rq_map_sg 0 13092 NULL |
@@ -99465,6 +98458,7 @@ index 0000000..7982a0c | |||
99465 | +lpfc_idiag_mbxacc_get_setup_13282 lpfc_idiag_mbxacc_get_setup 0 13282 NULL | 98458 | +lpfc_idiag_mbxacc_get_setup_13282 lpfc_idiag_mbxacc_get_setup 0 13282 NULL |
99466 | +platform_device_add_resources_13289 platform_device_add_resources 3 13289 NULL | 98459 | +platform_device_add_resources_13289 platform_device_add_resources 3 13289 NULL |
99467 | +i915_drop_caches_write_13308 i915_drop_caches_write 3 13308 NULL | 98460 | +i915_drop_caches_write_13308 i915_drop_caches_write 3 13308 NULL |
98461 | +reexecute_instruction_13321 reexecute_instruction 2 13321 NULL | ||
99468 | +us122l_ctl_msg_13330 us122l_ctl_msg 8 13330 NULL | 98462 | +us122l_ctl_msg_13330 us122l_ctl_msg 8 13330 NULL |
99469 | +__clone_and_map_data_bio_13334 __clone_and_map_data_bio 4-8 13334 NULL | 98463 | +__clone_and_map_data_bio_13334 __clone_and_map_data_bio 4-8 13334 NULL |
99470 | +kvm_read_nested_guest_page_13337 kvm_read_nested_guest_page 5-2 13337 NULL | 98464 | +kvm_read_nested_guest_page_13337 kvm_read_nested_guest_page 5-2 13337 NULL |
@@ -99472,6 +98466,7 @@ index 0000000..7982a0c | |||
99472 | +mthca_alloc_mtt_range_13371 mthca_alloc_mtt_range 2 13371 NULL | 98466 | +mthca_alloc_mtt_range_13371 mthca_alloc_mtt_range 2 13371 NULL |
99473 | +iso_sched_alloc_13377 iso_sched_alloc 1 13377 NULL nohasharray | 98467 | +iso_sched_alloc_13377 iso_sched_alloc 1 13377 NULL nohasharray |
99474 | +wep_key_not_found_read_13377 wep_key_not_found_read 3 13377 &iso_sched_alloc_13377 | 98468 | +wep_key_not_found_read_13377 wep_key_not_found_read 3 13377 &iso_sched_alloc_13377 |
98469 | +dis_bypass_write_13388 dis_bypass_write 3 13388 NULL | ||
99475 | +carl9170_rx_untie_data_13405 carl9170_rx_untie_data 3 13405 NULL | 98470 | +carl9170_rx_untie_data_13405 carl9170_rx_untie_data 3 13405 NULL |
99476 | +sky2_receive_13407 sky2_receive 2 13407 NULL | 98471 | +sky2_receive_13407 sky2_receive 2 13407 NULL |
99477 | +netxen_alloc_sds_rings_13417 netxen_alloc_sds_rings 2 13417 NULL | 98472 | +netxen_alloc_sds_rings_13417 netxen_alloc_sds_rings 2 13417 NULL |
@@ -99484,7 +98479,8 @@ index 0000000..7982a0c | |||
99484 | +core_status_13515 core_status 4 13515 NULL | 98479 | +core_status_13515 core_status 4 13515 NULL |
99485 | +smk_write_mapped_13519 smk_write_mapped 3 13519 NULL | 98480 | +smk_write_mapped_13519 smk_write_mapped 3 13519 NULL |
99486 | +bm_init_13529 bm_init 2 13529 NULL | 98481 | +bm_init_13529 bm_init 2 13529 NULL |
99487 | +non_atomic_pte_lookup_13540 non_atomic_pte_lookup 2 13540 NULL | 98482 | +non_atomic_pte_lookup_13540 non_atomic_pte_lookup 2 13540 NULL nohasharray |
98483 | +SYSC_remap_file_pages_13540 SYSC_remap_file_pages 1 13540 &non_atomic_pte_lookup_13540 | ||
99488 | +ieee80211_if_read_ap_power_level_13558 ieee80211_if_read_ap_power_level 3 13558 NULL | 98484 | +ieee80211_if_read_ap_power_level_13558 ieee80211_if_read_ap_power_level 3 13558 NULL |
99489 | +ubifs_get_idx_gc_leb_13566 ubifs_get_idx_gc_leb 0 13566 NULL | 98485 | +ubifs_get_idx_gc_leb_13566 ubifs_get_idx_gc_leb 0 13566 NULL |
99490 | +sys_madvise_13569 sys_madvise 1 13569 NULL | 98486 | +sys_madvise_13569 sys_madvise 1 13569 NULL |
@@ -99509,6 +98505,7 @@ index 0000000..7982a0c | |||
99509 | +ath6kl_mgmt_powersave_ap_13791 ath6kl_mgmt_powersave_ap 6 13791 NULL | 98505 | +ath6kl_mgmt_powersave_ap_13791 ath6kl_mgmt_powersave_ap 6 13791 NULL |
99510 | +random_read_13815 random_read 3 13815 NULL | 98506 | +random_read_13815 random_read 3 13815 NULL |
99511 | +hsi_register_board_info_13820 hsi_register_board_info 2 13820 NULL | 98507 | +hsi_register_board_info_13820 hsi_register_board_info 2 13820 NULL |
98508 | +___mei_cl_send_13821 ___mei_cl_send 3 13821 NULL | ||
99512 | +evdev_ioctl_compat_13851 evdev_ioctl_compat 2-3 13851 NULL | 98509 | +evdev_ioctl_compat_13851 evdev_ioctl_compat 2-3 13851 NULL |
99513 | +compat_ip_setsockopt_13870 compat_ip_setsockopt 5 13870 NULL nohasharray | 98510 | +compat_ip_setsockopt_13870 compat_ip_setsockopt 5 13870 NULL nohasharray |
99514 | +alloc_trace_uprobe_13870 alloc_trace_uprobe 3 13870 &compat_ip_setsockopt_13870 | 98511 | +alloc_trace_uprobe_13870 alloc_trace_uprobe 3 13870 &compat_ip_setsockopt_13870 |
@@ -99528,7 +98525,9 @@ index 0000000..7982a0c | |||
99528 | +bm_block_bits_13981 bm_block_bits 0 13981 NULL nohasharray | 98525 | +bm_block_bits_13981 bm_block_bits 0 13981 NULL nohasharray |
99529 | +dvb_demux_read_13981 dvb_demux_read 3 13981 &bm_block_bits_13981 | 98526 | +dvb_demux_read_13981 dvb_demux_read 3 13981 &bm_block_bits_13981 |
99530 | +btrfs_get_blocks_direct_14016 btrfs_get_blocks_direct 2 14016 NULL | 98527 | +btrfs_get_blocks_direct_14016 btrfs_get_blocks_direct 2 14016 NULL |
98528 | +dmi_format_ids_14018 dmi_format_ids 2 14018 NULL | ||
99531 | +_rtl92s_firmware_downloadcode_14021 _rtl92s_firmware_downloadcode 3 14021 NULL | 98529 | +_rtl92s_firmware_downloadcode_14021 _rtl92s_firmware_downloadcode 3 14021 NULL |
98530 | +iscsi_create_flashnode_conn_14022 iscsi_create_flashnode_conn 4 14022 NULL | ||
99532 | +dvb_usercopy_14036 dvb_usercopy 2 14036 NULL | 98531 | +dvb_usercopy_14036 dvb_usercopy 2 14036 NULL |
99533 | +read_def_modal_eeprom_14041 read_def_modal_eeprom 3 14041 NULL | 98532 | +read_def_modal_eeprom_14041 read_def_modal_eeprom 3 14041 NULL |
99534 | +ieee80211_if_fmt_aid_14055 ieee80211_if_fmt_aid 3 14055 NULL | 98533 | +ieee80211_if_fmt_aid_14055 ieee80211_if_fmt_aid 3 14055 NULL |
@@ -99539,6 +98538,7 @@ index 0000000..7982a0c | |||
99539 | +nlmsg_len_14115 nlmsg_len 0 14115 NULL | 98538 | +nlmsg_len_14115 nlmsg_len 0 14115 NULL |
99540 | +vfio_fops_compat_ioctl_14130 vfio_fops_compat_ioctl 3 14130 NULL | 98539 | +vfio_fops_compat_ioctl_14130 vfio_fops_compat_ioctl 3 14130 NULL |
99541 | +ntfs_rl_replace_14136 ntfs_rl_replace 2-4 14136 NULL | 98540 | +ntfs_rl_replace_14136 ntfs_rl_replace 2-4 14136 NULL |
98541 | +isku_sysfs_read_light_14140 isku_sysfs_read_light 6 14140 NULL | ||
99542 | +em_canid_change_14150 em_canid_change 3 14150 NULL | 98542 | +em_canid_change_14150 em_canid_change 3 14150 NULL |
99543 | +gsm_dlci_data_14155 gsm_dlci_data 3 14155 NULL | 98543 | +gsm_dlci_data_14155 gsm_dlci_data 3 14155 NULL |
99544 | +print_input_mask_14168 print_input_mask 3-0 14168 NULL | 98544 | +print_input_mask_14168 print_input_mask 3-0 14168 NULL |
@@ -99577,6 +98577,7 @@ index 0000000..7982a0c | |||
99577 | +drm_vmalloc_dma_14550 drm_vmalloc_dma 1 14550 NULL | 98577 | +drm_vmalloc_dma_14550 drm_vmalloc_dma 1 14550 NULL |
99578 | +usb_dump_desc_14553 usb_dump_desc 0 14553 NULL | 98578 | +usb_dump_desc_14553 usb_dump_desc 0 14553 NULL |
99579 | +qp_host_alloc_queue_14566 qp_host_alloc_queue 1 14566 NULL | 98579 | +qp_host_alloc_queue_14566 qp_host_alloc_queue 1 14566 NULL |
98580 | +SyS_setdomainname_14569 SyS_setdomainname 2 14569 NULL | ||
99580 | +remap_to_origin_then_cache_14583 remap_to_origin_then_cache 3 14583 NULL | 98581 | +remap_to_origin_then_cache_14583 remap_to_origin_then_cache 3 14583 NULL |
99581 | +idmap_pipe_downcall_14591 idmap_pipe_downcall 3 14591 NULL | 98582 | +idmap_pipe_downcall_14591 idmap_pipe_downcall 3 14591 NULL |
99582 | +ceph_osdc_alloc_request_14597 ceph_osdc_alloc_request 3 14597 NULL | 98583 | +ceph_osdc_alloc_request_14597 ceph_osdc_alloc_request 3 14597 NULL |
@@ -99586,6 +98587,8 @@ index 0000000..7982a0c | |||
99586 | +pipeline_enc_tx_stat_fifo_int_read_14680 pipeline_enc_tx_stat_fifo_int_read 3 14680 NULL | 98587 | +pipeline_enc_tx_stat_fifo_int_read_14680 pipeline_enc_tx_stat_fifo_int_read 3 14680 NULL |
99587 | +ieee80211_if_fmt_rc_rateidx_mask_2ghz_14683 ieee80211_if_fmt_rc_rateidx_mask_2ghz 3 14683 NULL | 98588 | +ieee80211_if_fmt_rc_rateidx_mask_2ghz_14683 ieee80211_if_fmt_rc_rateidx_mask_2ghz 3 14683 NULL |
99588 | +tsi148_master_set_14685 tsi148_master_set 4 14685 NULL | 98589 | +tsi148_master_set_14685 tsi148_master_set 4 14685 NULL |
98590 | +SyS_fsetxattr_14702 SyS_fsetxattr 4 14702 NULL | ||
98591 | +persistent_ram_ecc_string_14704 persistent_ram_ecc_string 0 14704 NULL | ||
99589 | +u_audio_playback_14709 u_audio_playback 3 14709 NULL | 98592 | +u_audio_playback_14709 u_audio_playback 3 14709 NULL |
99590 | +get_bio_block_14714 get_bio_block 0 14714 NULL | 98593 | +get_bio_block_14714 get_bio_block 0 14714 NULL |
99591 | +vfd_write_14717 vfd_write 3 14717 NULL | 98594 | +vfd_write_14717 vfd_write 3 14717 NULL |
@@ -99600,6 +98603,7 @@ index 0000000..7982a0c | |||
99600 | +hpet_readl_14801 hpet_readl 0 14801 NULL nohasharray | 98603 | +hpet_readl_14801 hpet_readl 0 14801 NULL nohasharray |
99601 | +snd_als300_gcr_read_14801 snd_als300_gcr_read 0 14801 &hpet_readl_14801 | 98604 | +snd_als300_gcr_read_14801 snd_als300_gcr_read 0 14801 &hpet_readl_14801 |
99602 | +bcma_scan_read32_14802 bcma_scan_read32 0 14802 NULL | 98605 | +bcma_scan_read32_14802 bcma_scan_read32 0 14802 NULL |
98606 | +do_tune_cpucache_14828 do_tune_cpucache 2 14828 NULL | ||
99603 | +__mutex_fastpath_lock_retval_14844 __mutex_fastpath_lock_retval 0 14844 NULL | 98607 | +__mutex_fastpath_lock_retval_14844 __mutex_fastpath_lock_retval 0 14844 NULL |
99604 | +mrp_attr_create_14853 mrp_attr_create 3 14853 NULL | 98608 | +mrp_attr_create_14853 mrp_attr_create 3 14853 NULL |
99605 | +lcd_write_14857 lcd_write 3 14857 NULL nohasharray | 98609 | +lcd_write_14857 lcd_write 3 14857 NULL nohasharray |
@@ -99608,6 +98612,7 @@ index 0000000..7982a0c | |||
99608 | +sriov_enable_migration_14889 sriov_enable_migration 2 14889 NULL | 98612 | +sriov_enable_migration_14889 sriov_enable_migration 2 14889 NULL |
99609 | +acpi_os_allocate_14892 acpi_os_allocate 1 14892 NULL | 98613 | +acpi_os_allocate_14892 acpi_os_allocate 1 14892 NULL |
99610 | +unifi_read_14899 unifi_read 3 14899 NULL | 98614 | +unifi_read_14899 unifi_read 3 14899 NULL |
98615 | +SYSC_readv_14901 SYSC_readv 3 14901 NULL | ||
99611 | +krealloc_14908 krealloc 2 14908 NULL | 98616 | +krealloc_14908 krealloc 2 14908 NULL |
99612 | +regmap_irq_get_virq_14910 regmap_irq_get_virq 2 14910 NULL | 98617 | +regmap_irq_get_virq_14910 regmap_irq_get_virq 2 14910 NULL |
99613 | +__arch_hweight64_14923 __arch_hweight64 0 14923 NULL nohasharray | 98618 | +__arch_hweight64_14923 __arch_hweight64 0 14923 NULL nohasharray |
@@ -99618,6 +98623,7 @@ index 0000000..7982a0c | |||
99618 | +mce_flush_rx_buffer_14976 mce_flush_rx_buffer 2 14976 NULL | 98623 | +mce_flush_rx_buffer_14976 mce_flush_rx_buffer 2 14976 NULL |
99619 | +setkey_14987 setkey 3 14987 NULL nohasharray | 98624 | +setkey_14987 setkey 3 14987 NULL nohasharray |
99620 | +gpio_twl4030_write_14987 gpio_twl4030_write 1 14987 &setkey_14987 | 98625 | +gpio_twl4030_write_14987 gpio_twl4030_write 1 14987 &setkey_14987 |
98626 | +xfs_dinode_size_14996 xfs_dinode_size 0 14996 NULL | ||
99621 | +vmap_15025 vmap 2 15025 NULL | 98627 | +vmap_15025 vmap 2 15025 NULL |
99622 | +blk_integrity_tuple_size_15027 blk_integrity_tuple_size 0 15027 NULL | 98628 | +blk_integrity_tuple_size_15027 blk_integrity_tuple_size 0 15027 NULL |
99623 | +irq_get_next_irq_15053 irq_get_next_irq 1 15053 NULL | 98629 | +irq_get_next_irq_15053 irq_get_next_irq 1 15053 NULL |
@@ -99625,15 +98631,18 @@ index 0000000..7982a0c | |||
99625 | +ieee80211_if_read_uapsd_max_sp_len_15067 ieee80211_if_read_uapsd_max_sp_len 3 15067 NULL | 98631 | +ieee80211_if_read_uapsd_max_sp_len_15067 ieee80211_if_read_uapsd_max_sp_len 3 15067 NULL |
99626 | +nfs4_write_cached_acl_15070 nfs4_write_cached_acl 4 15070 NULL | 98632 | +nfs4_write_cached_acl_15070 nfs4_write_cached_acl 4 15070 NULL |
99627 | +ntfs_copy_from_user_15072 ntfs_copy_from_user 3-5 15072 NULL | 98633 | +ntfs_copy_from_user_15072 ntfs_copy_from_user 3-5 15072 NULL |
98634 | +compat_SyS_preadv_15105 compat_SyS_preadv 3 15105 NULL | ||
99628 | +hex_dump_to_buffer_15121 hex_dump_to_buffer 6 15121 NULL | 98635 | +hex_dump_to_buffer_15121 hex_dump_to_buffer 6 15121 NULL |
99629 | +start_port_15124 start_port 0 15124 NULL | 98636 | +start_port_15124 start_port 0 15124 NULL |
99630 | +memchr_15126 memchr 0 15126 NULL | 98637 | +memchr_15126 memchr 0 15126 NULL |
99631 | +ipwireless_ppp_mru_15153 ipwireless_ppp_mru 0 15153 NULL | 98638 | +ipwireless_ppp_mru_15153 ipwireless_ppp_mru 0 15153 NULL |
99632 | +self_check_not_bad_15175 self_check_not_bad 0 15175 NULL | 98639 | +self_check_not_bad_15175 self_check_not_bad 0 15175 NULL |
98640 | +SYSC_setdomainname_15180 SYSC_setdomainname 2 15180 NULL | ||
99633 | +iscsi_create_endpoint_15193 iscsi_create_endpoint 1 15193 NULL | 98641 | +iscsi_create_endpoint_15193 iscsi_create_endpoint 1 15193 NULL |
99634 | +reserve_resources_15194 reserve_resources 3 15194 NULL | 98642 | +reserve_resources_15194 reserve_resources 3 15194 NULL |
99635 | +bfad_debugfs_write_regrd_15218 bfad_debugfs_write_regrd 3 15218 NULL | 98643 | +bfad_debugfs_write_regrd_15218 bfad_debugfs_write_regrd 3 15218 NULL |
99636 | +il_dbgfs_rx_stats_read_15243 il_dbgfs_rx_stats_read 3 15243 NULL | 98644 | +il_dbgfs_rx_stats_read_15243 il_dbgfs_rx_stats_read 3 15243 NULL |
98645 | +div64_u64_15263 div64_u64 0-1-2 15263 NULL | ||
99637 | +compat_raw_ioctl_15290 compat_raw_ioctl 3 15290 NULL | 98646 | +compat_raw_ioctl_15290 compat_raw_ioctl 3 15290 NULL |
99638 | +sys_connect_15291 sys_connect 3 15291 NULL nohasharray | 98647 | +sys_connect_15291 sys_connect 3 15291 NULL nohasharray |
99639 | +xlate_dev_mem_ptr_15291 xlate_dev_mem_ptr 1 15291 &sys_connect_15291 | 98648 | +xlate_dev_mem_ptr_15291 xlate_dev_mem_ptr 1 15291 &sys_connect_15291 |
@@ -99694,7 +98703,8 @@ index 0000000..7982a0c | |||
99694 | +gx1_read_conf_reg_15817 gx1_read_conf_reg 0 15817 NULL nohasharray | 98703 | +gx1_read_conf_reg_15817 gx1_read_conf_reg 0 15817 NULL nohasharray |
99695 | +nameseq_list_15817 nameseq_list 3 15817 &gx1_read_conf_reg_15817 nohasharray | 98704 | +nameseq_list_15817 nameseq_list 3 15817 &gx1_read_conf_reg_15817 nohasharray |
99696 | +gnttab_expand_15817 gnttab_expand 1 15817 &nameseq_list_15817 | 98705 | +gnttab_expand_15817 gnttab_expand 1 15817 &nameseq_list_15817 |
99697 | +afs_proc_rootcell_write_15822 afs_proc_rootcell_write 3 15822 NULL | 98706 | +afs_proc_rootcell_write_15822 afs_proc_rootcell_write 3 15822 NULL nohasharray |
98707 | +firmware_upload_15822 firmware_upload 3 15822 &afs_proc_rootcell_write_15822 | ||
99698 | +brcmf_sdbrcm_died_dump_15841 brcmf_sdbrcm_died_dump 3 15841 NULL | 98708 | +brcmf_sdbrcm_died_dump_15841 brcmf_sdbrcm_died_dump 3 15841 NULL |
99699 | +table_size_15851 table_size 0-1-2 15851 NULL | 98709 | +table_size_15851 table_size 0-1-2 15851 NULL |
99700 | +ubi_io_write_15870 ubi_io_write 5-4 15870 NULL nohasharray | 98710 | +ubi_io_write_15870 ubi_io_write 5-4 15870 NULL nohasharray |
@@ -99707,6 +98717,7 @@ index 0000000..7982a0c | |||
99707 | +lpfc_idiag_drbacc_read_15948 lpfc_idiag_drbacc_read 3 15948 NULL | 98717 | +lpfc_idiag_drbacc_read_15948 lpfc_idiag_drbacc_read 3 15948 NULL |
99708 | +snd_pcm_lib_read_transfer_15952 snd_pcm_lib_read_transfer 4-2-5 15952 NULL | 98718 | +snd_pcm_lib_read_transfer_15952 snd_pcm_lib_read_transfer 4-2-5 15952 NULL |
99709 | +remap_pci_mem_15966 remap_pci_mem 1-2 15966 NULL | 98719 | +remap_pci_mem_15966 remap_pci_mem 1-2 15966 NULL |
98720 | +tfrc_calc_x_15975 tfrc_calc_x 1-2 15975 NULL | ||
99710 | +frame_alloc_15981 frame_alloc 4 15981 NULL | 98721 | +frame_alloc_15981 frame_alloc 4 15981 NULL |
99711 | +alloc_vm_area_15989 alloc_vm_area 1 15989 NULL | 98722 | +alloc_vm_area_15989 alloc_vm_area 1 15989 NULL |
99712 | +hdpvr_register_videodev_16010 hdpvr_register_videodev 3 16010 NULL | 98723 | +hdpvr_register_videodev_16010 hdpvr_register_videodev 3 16010 NULL |
@@ -99725,6 +98736,7 @@ index 0000000..7982a0c | |||
99725 | +bnx2i_get_cid_num_16166 bnx2i_get_cid_num 0 16166 NULL | 98736 | +bnx2i_get_cid_num_16166 bnx2i_get_cid_num 0 16166 NULL |
99726 | +mapping_level_16188 mapping_level 2 16188 NULL | 98737 | +mapping_level_16188 mapping_level 2 16188 NULL |
99727 | +cipso_v4_map_cat_rng_hton_16203 cipso_v4_map_cat_rng_hton 0 16203 NULL | 98738 | +cipso_v4_map_cat_rng_hton_16203 cipso_v4_map_cat_rng_hton 0 16203 NULL |
98739 | +SyS_pselect6_16210 SyS_pselect6 1 16210 NULL | ||
99728 | +create_table_16213 create_table 2 16213 NULL | 98740 | +create_table_16213 create_table 2 16213 NULL |
99729 | +atomic_read_file_16227 atomic_read_file 3 16227 NULL | 98741 | +atomic_read_file_16227 atomic_read_file 3 16227 NULL |
99730 | +BcmGetSectionValStartOffset_16235 BcmGetSectionValStartOffset 0 16235 NULL | 98742 | +BcmGetSectionValStartOffset_16235 BcmGetSectionValStartOffset 0 16235 NULL |
@@ -99741,8 +98753,11 @@ index 0000000..7982a0c | |||
99741 | +mirror_status_16283 mirror_status 5 16283 &account_16283 | 98753 | +mirror_status_16283 mirror_status 5 16283 &account_16283 |
99742 | +retry_instruction_16285 retry_instruction 2 16285 NULL | 98754 | +retry_instruction_16285 retry_instruction 2 16285 NULL |
99743 | +stk_allocate_buffers_16291 stk_allocate_buffers 2 16291 NULL | 98755 | +stk_allocate_buffers_16291 stk_allocate_buffers 2 16291 NULL |
98756 | +rbd_segment_offset_16293 rbd_segment_offset 0-2 16293 NULL | ||
98757 | +tfrc_invert_loss_event_rate_16295 tfrc_invert_loss_event_rate 1 16295 NULL | ||
99744 | +rsc_mgr_init_16299 rsc_mgr_init 3 16299 NULL | 98758 | +rsc_mgr_init_16299 rsc_mgr_init 3 16299 NULL |
99745 | +wb_map_16301 wb_map 2 16301 NULL | 98759 | +wb_map_16301 wb_map 2 16301 NULL |
98760 | +ext4_blocks_count_16320 ext4_blocks_count 0 16320 NULL | ||
99746 | +vmw_cursor_update_image_16332 vmw_cursor_update_image 3-4 16332 NULL | 98761 | +vmw_cursor_update_image_16332 vmw_cursor_update_image 3-4 16332 NULL |
99747 | +total_ps_buffered_read_16365 total_ps_buffered_read 3 16365 NULL | 98762 | +total_ps_buffered_read_16365 total_ps_buffered_read 3 16365 NULL |
99748 | +iscsi_tcp_conn_setup_16376 iscsi_tcp_conn_setup 2 16376 NULL | 98763 | +iscsi_tcp_conn_setup_16376 iscsi_tcp_conn_setup 2 16376 NULL |
@@ -99772,6 +98787,7 @@ index 0000000..7982a0c | |||
99772 | +drm_malloc_ab_16831 drm_malloc_ab 1-2 16831 NULL | 98787 | +drm_malloc_ab_16831 drm_malloc_ab 1-2 16831 NULL |
99773 | +scsi_mode_sense_16835 scsi_mode_sense 5 16835 NULL | 98788 | +scsi_mode_sense_16835 scsi_mode_sense 5 16835 NULL |
99774 | +hfsplus_min_io_size_16859 hfsplus_min_io_size 0 16859 NULL | 98789 | +hfsplus_min_io_size_16859 hfsplus_min_io_size 0 16859 NULL |
98790 | +vfio_pci_rw_16861 vfio_pci_rw 3 16861 NULL | ||
99775 | +alloc_idx_lebs_16872 alloc_idx_lebs 2 16872 NULL | 98791 | +alloc_idx_lebs_16872 alloc_idx_lebs 2 16872 NULL |
99776 | +carl9170_debugfs_ampdu_state_read_16873 carl9170_debugfs_ampdu_state_read 3 16873 NULL | 98792 | +carl9170_debugfs_ampdu_state_read_16873 carl9170_debugfs_ampdu_state_read 3 16873 NULL |
99777 | +st_write_16874 st_write 3 16874 NULL | 98793 | +st_write_16874 st_write 3 16874 NULL |
@@ -99826,6 +98842,7 @@ index 0000000..7982a0c | |||
99826 | +_fd_dma_mem_free_17406 _fd_dma_mem_free 1 17406 NULL | 98842 | +_fd_dma_mem_free_17406 _fd_dma_mem_free 1 17406 NULL |
99827 | +lpfc_debugfs_dif_err_write_17424 lpfc_debugfs_dif_err_write 3 17424 NULL | 98843 | +lpfc_debugfs_dif_err_write_17424 lpfc_debugfs_dif_err_write 3 17424 NULL |
99828 | +sta_connected_time_read_17435 sta_connected_time_read 3 17435 NULL | 98844 | +sta_connected_time_read_17435 sta_connected_time_read 3 17435 NULL |
98845 | +SYSC_fcntl_17441 SYSC_fcntl 3 17441 NULL | ||
99829 | +nla_get_u32_17455 nla_get_u32 0 17455 NULL | 98846 | +nla_get_u32_17455 nla_get_u32 0 17455 NULL |
99830 | +__ref_totlen_17461 __ref_totlen 0 17461 NULL | 98847 | +__ref_totlen_17461 __ref_totlen 0 17461 NULL |
99831 | +compat_cmd_17465 compat_cmd 2 17465 NULL | 98848 | +compat_cmd_17465 compat_cmd 2 17465 NULL |
@@ -99845,16 +98862,22 @@ index 0000000..7982a0c | |||
99845 | +ocfs2_mark_extent_written_17615 ocfs2_mark_extent_written 6 17615 NULL | 98862 | +ocfs2_mark_extent_written_17615 ocfs2_mark_extent_written 6 17615 NULL |
99846 | +ieee80211_if_read_dot11MeshHWMPactivePathToRootTimeout_17618 ieee80211_if_read_dot11MeshHWMPactivePathToRootTimeout 3 17618 NULL | 98863 | +ieee80211_if_read_dot11MeshHWMPactivePathToRootTimeout_17618 ieee80211_if_read_dot11MeshHWMPactivePathToRootTimeout 3 17618 NULL |
99847 | +twl4030_set_gpio_direction_17645 twl4030_set_gpio_direction 1 17645 NULL | 98864 | +twl4030_set_gpio_direction_17645 twl4030_set_gpio_direction 1 17645 NULL |
98865 | +SYSC_migrate_pages_17657 SYSC_migrate_pages 2 17657 NULL | ||
99848 | +packet_setsockopt_17662 packet_setsockopt 5 17662 NULL nohasharray | 98866 | +packet_setsockopt_17662 packet_setsockopt 5 17662 NULL nohasharray |
99849 | +ubi_io_read_data_17662 ubi_io_read_data 0 17662 &packet_setsockopt_17662 | 98867 | +ubi_io_read_data_17662 ubi_io_read_data 0 17662 &packet_setsockopt_17662 |
99850 | +pwr_enable_ps_read_17686 pwr_enable_ps_read 3 17686 NULL | 98868 | +pwr_enable_ps_read_17686 pwr_enable_ps_read 3 17686 NULL |
99851 | +gfn_to_pfn_memslot_17693 gfn_to_pfn_memslot 2 17693 NULL | 98869 | +gfn_to_pfn_memslot_17693 gfn_to_pfn_memslot 2 17693 NULL |
99852 | +__einj_error_trigger_17707 __einj_error_trigger 1 17707 NULL nohasharray | 98870 | +__einj_error_trigger_17707 __einj_error_trigger 1 17707 NULL nohasharray |
99853 | +venus_rename_17707 venus_rename 5-4 17707 &__einj_error_trigger_17707 | 98871 | +venus_rename_17707 venus_rename 5-4 17707 &__einj_error_trigger_17707 |
98872 | +isku_sysfs_write_keys_function_17726 isku_sysfs_write_keys_function 6 17726 NULL | ||
99854 | +exofs_read_lookup_dev_table_17733 exofs_read_lookup_dev_table 3 17733 NULL | 98873 | +exofs_read_lookup_dev_table_17733 exofs_read_lookup_dev_table 3 17733 NULL |
99855 | +sctpprobe_read_17741 sctpprobe_read 3 17741 NULL | 98874 | +sctpprobe_read_17741 sctpprobe_read 3 17741 NULL |
99856 | +mark_unsafe_pages_17759 mark_unsafe_pages 0 17759 NULL | 98875 | +mark_unsafe_pages_17759 mark_unsafe_pages 0 17759 NULL |
99857 | +brcmf_usb_attach_17766 brcmf_usb_attach 2-3 17766 NULL | 98876 | +brcmf_usb_attach_17766 brcmf_usb_attach 2-3 17766 NULL |
98877 | +dtf_read_run_17768 dtf_read_run 3 17768 NULL | ||
98878 | +brcmf_sdio_chip_verifynvram_17776 brcmf_sdio_chip_verifynvram 4 17776 NULL | ||
98879 | +hash_ipport6_expire_17784 hash_ipport6_expire 3 17784 NULL | ||
98880 | +perf_clock_17787 perf_clock 0 17787 NULL | ||
99858 | +ubifs_leb_change_17789 ubifs_leb_change 4 17789 NULL | 98881 | +ubifs_leb_change_17789 ubifs_leb_change 4 17789 NULL |
99859 | +_snd_pcm_lib_alloc_vmalloc_buffer_17820 _snd_pcm_lib_alloc_vmalloc_buffer 2 17820 NULL | 98882 | +_snd_pcm_lib_alloc_vmalloc_buffer_17820 _snd_pcm_lib_alloc_vmalloc_buffer 2 17820 NULL |
99860 | +gnet_stats_copy_app_17821 gnet_stats_copy_app 3 17821 NULL | 98883 | +gnet_stats_copy_app_17821 gnet_stats_copy_app 3 17821 NULL |
@@ -99890,7 +98913,9 @@ index 0000000..7982a0c | |||
99890 | +hex_byte_pack_18064 hex_byte_pack 0 18064 NULL | 98913 | +hex_byte_pack_18064 hex_byte_pack 0 18064 NULL |
99891 | +packet_came_18072 packet_came 3 18072 NULL | 98914 | +packet_came_18072 packet_came 3 18072 NULL |
99892 | +kvm_read_guest_page_18074 kvm_read_guest_page 5-2 18074 NULL | 98915 | +kvm_read_guest_page_18074 kvm_read_guest_page 5-2 18074 NULL |
98916 | +SYSC_pselect6_18076 SYSC_pselect6 1 18076 NULL | ||
99893 | +get_vm_area_18080 get_vm_area 1 18080 NULL | 98917 | +get_vm_area_18080 get_vm_area 1 18080 NULL |
98918 | +SYSC_semtimedop_18091 SYSC_semtimedop 3 18091 NULL | ||
99894 | +mpi_alloc_18094 mpi_alloc 1 18094 NULL | 98919 | +mpi_alloc_18094 mpi_alloc 1 18094 NULL |
99895 | +dfs_file_read_18116 dfs_file_read 3 18116 NULL | 98920 | +dfs_file_read_18116 dfs_file_read 3 18116 NULL |
99896 | +svc_getnl_18120 svc_getnl 0 18120 NULL | 98921 | +svc_getnl_18120 svc_getnl 0 18120 NULL |
@@ -99903,6 +98928,7 @@ index 0000000..7982a0c | |||
99903 | +gsm_control_message_18209 gsm_control_message 4 18209 NULL | 98928 | +gsm_control_message_18209 gsm_control_message 4 18209 NULL |
99904 | +do_ipv6_setsockopt_18215 do_ipv6_setsockopt 5 18215 NULL | 98929 | +do_ipv6_setsockopt_18215 do_ipv6_setsockopt 5 18215 NULL |
99905 | +gnttab_alloc_grant_references_18240 gnttab_alloc_grant_references 1 18240 NULL | 98930 | +gnttab_alloc_grant_references_18240 gnttab_alloc_grant_references 1 18240 NULL |
98931 | +alloc_trace_uprobe_18247 alloc_trace_uprobe 3 18247 NULL | ||
99906 | +snd_ctl_ioctl_compat_18250 snd_ctl_ioctl_compat 3 18250 NULL | 98932 | +snd_ctl_ioctl_compat_18250 snd_ctl_ioctl_compat 3 18250 NULL |
99907 | +qdisc_class_hash_alloc_18262 qdisc_class_hash_alloc 1 18262 NULL | 98933 | +qdisc_class_hash_alloc_18262 qdisc_class_hash_alloc 1 18262 NULL |
99908 | +gfs2_alloc_sort_buffer_18275 gfs2_alloc_sort_buffer 1 18275 NULL | 98934 | +gfs2_alloc_sort_buffer_18275 gfs2_alloc_sort_buffer 1 18275 NULL |
@@ -99920,13 +98946,17 @@ index 0000000..7982a0c | |||
99920 | +bio_integrity_advance_18324 bio_integrity_advance 2 18324 NULL | 98946 | +bio_integrity_advance_18324 bio_integrity_advance 2 18324 NULL |
99921 | +pwr_power_save_off_read_18355 pwr_power_save_off_read 3 18355 NULL | 98947 | +pwr_power_save_off_read_18355 pwr_power_save_off_read 3 18355 NULL |
99922 | +xlbd_reserve_minors_18365 xlbd_reserve_minors 1-2 18365 NULL | 98948 | +xlbd_reserve_minors_18365 xlbd_reserve_minors 1-2 18365 NULL |
98949 | +SyS_process_vm_readv_18366 SyS_process_vm_readv 3-5 18366 NULL | ||
99923 | +ep_io_18367 ep_io 0 18367 NULL | 98950 | +ep_io_18367 ep_io 0 18367 NULL |
99924 | +qib_user_sdma_num_pages_18371 qib_user_sdma_num_pages 0 18371 NULL | 98951 | +qib_user_sdma_num_pages_18371 qib_user_sdma_num_pages 0 18371 NULL |
98952 | +ci_role_write_18388 ci_role_write 3 18388 NULL | ||
99925 | +__video_register_device_18399 __video_register_device 3 18399 NULL | 98953 | +__video_register_device_18399 __video_register_device 3 18399 NULL |
99926 | +adis16136_show_serial_18402 adis16136_show_serial 3 18402 NULL | 98954 | +hash_ip4_expire_18402 hash_ip4_expire 3 18402 NULL nohasharray |
98955 | +adis16136_show_serial_18402 adis16136_show_serial 3 18402 &hash_ip4_expire_18402 | ||
99927 | +crystalhd_user_data_18407 crystalhd_user_data 3 18407 NULL | 98956 | +crystalhd_user_data_18407 crystalhd_user_data 3 18407 NULL |
99928 | +usbnet_write_cmd_nopm_18426 usbnet_write_cmd_nopm 7 18426 NULL | 98957 | +usbnet_write_cmd_nopm_18426 usbnet_write_cmd_nopm 7 18426 NULL |
99929 | +batadv_orig_node_add_if_18433 batadv_orig_node_add_if 2 18433 NULL | 98958 | +batadv_orig_node_add_if_18433 batadv_orig_node_add_if 2 18433 NULL nohasharray |
98959 | +iscsi_create_flashnode_sess_18433 iscsi_create_flashnode_sess 4 18433 &batadv_orig_node_add_if_18433 | ||
99930 | +snd_hda_get_connections_18437 snd_hda_get_connections 0 18437 NULL | 98960 | +snd_hda_get_connections_18437 snd_hda_get_connections 0 18437 NULL |
99931 | +fuse_perform_write_18457 fuse_perform_write 4 18457 NULL | 98961 | +fuse_perform_write_18457 fuse_perform_write 4 18457 NULL |
99932 | +regset_tls_set_18459 regset_tls_set 4 18459 NULL | 98962 | +regset_tls_set_18459 regset_tls_set 4 18459 NULL |
@@ -99942,7 +98972,8 @@ index 0000000..7982a0c | |||
99942 | +debug_output_18575 debug_output 3 18575 NULL | 98972 | +debug_output_18575 debug_output 3 18575 NULL |
99943 | +check_lpt_type_18577 check_lpt_type 0 18577 NULL | 98973 | +check_lpt_type_18577 check_lpt_type 0 18577 NULL |
99944 | +__netdev_alloc_skb_18595 __netdev_alloc_skb 2 18595 NULL | 98974 | +__netdev_alloc_skb_18595 __netdev_alloc_skb 2 18595 NULL |
99945 | +filemap_fdatawait_range_18600 filemap_fdatawait_range 0 18600 NULL | 98975 | +filemap_fdatawait_range_18600 filemap_fdatawait_range 0 18600 NULL nohasharray |
98976 | +slabinfo_write_18600 slabinfo_write 3 18600 &filemap_fdatawait_range_18600 | ||
99946 | +iowarrior_write_18604 iowarrior_write 3 18604 NULL | 98977 | +iowarrior_write_18604 iowarrior_write 3 18604 NULL |
99947 | +batadv_arp_get_type_18609 batadv_arp_get_type 3 18609 NULL | 98978 | +batadv_arp_get_type_18609 batadv_arp_get_type 3 18609 NULL |
99948 | +from_buffer_18625 from_buffer 3 18625 NULL | 98979 | +from_buffer_18625 from_buffer 3 18625 NULL |
@@ -99951,9 +98982,11 @@ index 0000000..7982a0c | |||
99951 | +unmap_page_18665 unmap_page 2-3 18665 NULL | 98982 | +unmap_page_18665 unmap_page 2-3 18665 NULL |
99952 | +xfs_iext_insert_18667 xfs_iext_insert 3 18667 NULL | 98983 | +xfs_iext_insert_18667 xfs_iext_insert 3 18667 NULL |
99953 | +replay_log_leb_18704 replay_log_leb 3 18704 NULL | 98984 | +replay_log_leb_18704 replay_log_leb 3 18704 NULL |
99954 | +iwl_dbgfs_rx_handlers_read_18708 iwl_dbgfs_rx_handlers_read 3 18708 NULL | 98985 | +unlocked_compat_ipmi_ioctl_18708 unlocked_compat_ipmi_ioctl 3 18708 NULL nohasharray |
98986 | +iwl_dbgfs_rx_handlers_read_18708 iwl_dbgfs_rx_handlers_read 3 18708 &unlocked_compat_ipmi_ioctl_18708 | ||
99955 | +ceph_alloc_page_vector_18710 ceph_alloc_page_vector 1 18710 NULL | 98987 | +ceph_alloc_page_vector_18710 ceph_alloc_page_vector 1 18710 NULL |
99956 | +ocfs2_trim_extent_18711 ocfs2_trim_extent 4-3 18711 NULL | 98988 | +ocfs2_trim_extent_18711 ocfs2_trim_extent 4-3 18711 NULL |
98989 | +compat_SyS_writev_18712 compat_SyS_writev 3 18712 NULL | ||
99957 | +blk_rq_bytes_18715 blk_rq_bytes 0 18715 NULL | 98990 | +blk_rq_bytes_18715 blk_rq_bytes 0 18715 NULL |
99958 | +snd_als4k_gcr_read_addr_18741 snd_als4k_gcr_read_addr 0 18741 NULL | 98991 | +snd_als4k_gcr_read_addr_18741 snd_als4k_gcr_read_addr 0 18741 NULL |
99959 | +o2hb_debug_create_18744 o2hb_debug_create 4 18744 NULL | 98992 | +o2hb_debug_create_18744 o2hb_debug_create 4 18744 NULL |
@@ -99962,6 +98995,7 @@ index 0000000..7982a0c | |||
99962 | +md_compat_ioctl_18764 md_compat_ioctl 4 18764 NULL | 98995 | +md_compat_ioctl_18764 md_compat_ioctl 4 18764 NULL |
99963 | +read_file_dump_nfcal_18766 read_file_dump_nfcal 3 18766 NULL | 98996 | +read_file_dump_nfcal_18766 read_file_dump_nfcal 3 18766 NULL |
99964 | +ffs_epfile_read_18775 ffs_epfile_read 3 18775 NULL | 98997 | +ffs_epfile_read_18775 ffs_epfile_read 3 18775 NULL |
98998 | +SyS_lsetxattr_18776 SyS_lsetxattr 4 18776 NULL | ||
99965 | +alloc_fcdev_18780 alloc_fcdev 1 18780 NULL | 98999 | +alloc_fcdev_18780 alloc_fcdev 1 18780 NULL |
99966 | +fat_compat_dir_ioctl_18800 fat_compat_dir_ioctl 3 18800 NULL | 99000 | +fat_compat_dir_ioctl_18800 fat_compat_dir_ioctl 3 18800 NULL |
99967 | +ieee80211_auth_challenge_18810 ieee80211_auth_challenge 3 18810 NULL | 99001 | +ieee80211_auth_challenge_18810 ieee80211_auth_challenge 3 18810 NULL |
@@ -99978,6 +99012,7 @@ index 0000000..7982a0c | |||
99978 | +ceph_setxattr_18913 ceph_setxattr 4 18913 NULL | 99012 | +ceph_setxattr_18913 ceph_setxattr 4 18913 NULL |
99979 | +mangle_packet_18920 mangle_packet 7-9 18920 NULL | 99013 | +mangle_packet_18920 mangle_packet 7-9 18920 NULL |
99980 | +snapshot_write_next_18937 snapshot_write_next 0 18937 NULL | 99014 | +snapshot_write_next_18937 snapshot_write_next 0 18937 NULL |
99015 | +regcache_sync_block_18963 regcache_sync_block 3-4 18963 NULL | ||
99981 | +__nla_reserve_18974 __nla_reserve 3 18974 NULL | 99016 | +__nla_reserve_18974 __nla_reserve 3 18974 NULL |
99982 | +gfn_to_pfn_atomic_18981 gfn_to_pfn_atomic 2 18981 NULL | 99017 | +gfn_to_pfn_atomic_18981 gfn_to_pfn_atomic 2 18981 NULL |
99983 | +find_dirtiest_idx_leb_19001 find_dirtiest_idx_leb 0 19001 NULL | 99018 | +find_dirtiest_idx_leb_19001 find_dirtiest_idx_leb 0 19001 NULL |
@@ -99989,6 +99024,8 @@ index 0000000..7982a0c | |||
99989 | +drm_fb_helper_init_19044 drm_fb_helper_init 3-4 19044 NULL | 99024 | +drm_fb_helper_init_19044 drm_fb_helper_init 3-4 19044 NULL |
99990 | +create_gpadl_header_19064 create_gpadl_header 2 19064 NULL | 99025 | +create_gpadl_header_19064 create_gpadl_header 2 19064 NULL |
99991 | +ieee80211_key_alloc_19065 ieee80211_key_alloc 3 19065 NULL | 99026 | +ieee80211_key_alloc_19065 ieee80211_key_alloc 3 19065 NULL |
99027 | +msix_map_region_19072 msix_map_region 2 19072 NULL | ||
99028 | +ceph_create_snap_context_19082 ceph_create_snap_context 1 19082 NULL | ||
99992 | +sys_process_vm_readv_19090 sys_process_vm_readv 3-5 19090 NULL nohasharray | 99029 | +sys_process_vm_readv_19090 sys_process_vm_readv 3-5 19090 NULL nohasharray |
99993 | +brcmf_usbdev_qinit_19090 brcmf_usbdev_qinit 2 19090 &sys_process_vm_readv_19090 | 99030 | +brcmf_usbdev_qinit_19090 brcmf_usbdev_qinit 2 19090 &sys_process_vm_readv_19090 |
99994 | +sta_last_seq_ctrl_read_19106 sta_last_seq_ctrl_read 3 19106 NULL | 99031 | +sta_last_seq_ctrl_read_19106 sta_last_seq_ctrl_read 3 19106 NULL |
@@ -100016,11 +99053,14 @@ index 0000000..7982a0c | |||
100016 | +gfn_to_gpa_19320 gfn_to_gpa 0-1 19320 NULL | 99053 | +gfn_to_gpa_19320 gfn_to_gpa 0-1 19320 NULL |
100017 | +debug_read_19322 debug_read 3 19322 NULL | 99054 | +debug_read_19322 debug_read 3 19322 NULL |
100018 | +cfg80211_inform_bss_19332 cfg80211_inform_bss 8 19332 NULL | 99055 | +cfg80211_inform_bss_19332 cfg80211_inform_bss 8 19332 NULL |
99056 | +closure_sub_19359 closure_sub 2 19359 NULL | ||
100019 | +read_zero_19366 read_zero 3 19366 NULL | 99057 | +read_zero_19366 read_zero 3 19366 NULL |
100020 | +interpret_user_input_19393 interpret_user_input 2 19393 NULL | 99058 | +interpret_user_input_19393 interpret_user_input 2 19393 NULL |
99059 | +sync_fill_pt_info_19397 sync_fill_pt_info 0 19397 NULL | ||
100021 | +get_n_events_by_type_19401 get_n_events_by_type 0 19401 NULL | 99060 | +get_n_events_by_type_19401 get_n_events_by_type 0 19401 NULL |
100022 | +dvbdmx_write_19423 dvbdmx_write 3 19423 NULL | 99061 | +dvbdmx_write_19423 dvbdmx_write 3 19423 NULL |
100023 | +__phys_addr_19434 __phys_addr 0 19434 NULL | 99062 | +__phys_addr_19434 __phys_addr 0 19434 NULL |
99063 | +SyS_sched_getaffinity_19444 SyS_sched_getaffinity 2 19444 NULL | ||
100024 | +xfrm_alg_auth_len_19454 xfrm_alg_auth_len 0 19454 NULL | 99064 | +xfrm_alg_auth_len_19454 xfrm_alg_auth_len 0 19454 NULL |
100025 | +hpet_compat_ioctl_19455 hpet_compat_ioctl 3 19455 NULL | 99065 | +hpet_compat_ioctl_19455 hpet_compat_ioctl 3 19455 NULL |
100026 | +gnet_stats_copy_19458 gnet_stats_copy 4 19458 NULL | 99066 | +gnet_stats_copy_19458 gnet_stats_copy 4 19458 NULL |
@@ -100039,10 +99079,12 @@ index 0000000..7982a0c | |||
100039 | +bm_status_read_19583 bm_status_read 3 19583 NULL | 99079 | +bm_status_read_19583 bm_status_read 3 19583 NULL |
100040 | +batadv_tt_update_orig_19586 batadv_tt_update_orig 4 19586 NULL | 99080 | +batadv_tt_update_orig_19586 batadv_tt_update_orig 4 19586 NULL |
100041 | +load_xattr_datum_19594 load_xattr_datum 0 19594 NULL | 99081 | +load_xattr_datum_19594 load_xattr_datum 0 19594 NULL |
99082 | +__mei_cl_recv_19636 __mei_cl_recv 3 19636 NULL | ||
100042 | +usbvision_rvmalloc_19655 usbvision_rvmalloc 1 19655 NULL | 99083 | +usbvision_rvmalloc_19655 usbvision_rvmalloc 1 19655 NULL |
100043 | +LoadBitmap_19658 LoadBitmap 2 19658 NULL | 99084 | +LoadBitmap_19658 LoadBitmap 2 19658 NULL |
100044 | +usbnet_write_cmd_19679 usbnet_write_cmd 7 19679 NULL | 99085 | +usbnet_write_cmd_19679 usbnet_write_cmd 7 19679 NULL |
100045 | +bio_detain_19690 bio_detain 2 19690 NULL | 99086 | +bio_detain_19690 bio_detain 2 19690 NULL |
99087 | +mem_cgroup_swappiness_19718 mem_cgroup_swappiness 0 19718 NULL | ||
100046 | +read_reg_19723 read_reg 0 19723 NULL | 99088 | +read_reg_19723 read_reg 0 19723 NULL |
100047 | +wm8350_block_write_19727 wm8350_block_write 3-2 19727 NULL | 99089 | +wm8350_block_write_19727 wm8350_block_write 3-2 19727 NULL |
100048 | +memcpy_toiovecend_19736 memcpy_toiovecend 4-3 19736 NULL | 99090 | +memcpy_toiovecend_19736 memcpy_toiovecend 4-3 19736 NULL |
@@ -100068,8 +99110,10 @@ index 0000000..7982a0c | |||
100068 | +iwl_dbgfs_rx_queue_read_19943 iwl_dbgfs_rx_queue_read 3 19943 NULL | 99110 | +iwl_dbgfs_rx_queue_read_19943 iwl_dbgfs_rx_queue_read 3 19943 NULL |
100069 | +attach_hdlc_protocol_19986 attach_hdlc_protocol 3 19986 NULL | 99111 | +attach_hdlc_protocol_19986 attach_hdlc_protocol 3 19986 NULL |
100070 | +diva_um_idi_read_20003 diva_um_idi_read 0 20003 NULL | 99112 | +diva_um_idi_read_20003 diva_um_idi_read 0 20003 NULL |
99113 | +SYSC_fgetxattr_20027 SYSC_fgetxattr 4 20027 NULL | ||
100071 | +split_scan_timeout_read_20029 split_scan_timeout_read 3 20029 NULL | 99114 | +split_scan_timeout_read_20029 split_scan_timeout_read 3 20029 NULL |
100072 | +alloc_ieee80211_20063 alloc_ieee80211 1 20063 NULL | 99115 | +alloc_ieee80211_20063 alloc_ieee80211 1 20063 NULL |
99116 | +btrfs_pin_extent_for_log_replay_20069 btrfs_pin_extent_for_log_replay 2 20069 NULL | ||
100073 | +rawv6_sendmsg_20080 rawv6_sendmsg 4 20080 NULL | 99117 | +rawv6_sendmsg_20080 rawv6_sendmsg 4 20080 NULL |
100074 | +fuse_conn_limit_read_20084 fuse_conn_limit_read 3 20084 NULL | 99118 | +fuse_conn_limit_read_20084 fuse_conn_limit_read 3 20084 NULL |
100075 | +team_options_register_20091 team_options_register 3 20091 NULL | 99119 | +team_options_register_20091 team_options_register 3 20091 NULL |
@@ -100097,6 +99141,7 @@ index 0000000..7982a0c | |||
100097 | +__kfifo_from_user_20399 __kfifo_from_user 3 20399 NULL | 99141 | +__kfifo_from_user_20399 __kfifo_from_user 3 20399 NULL |
100098 | +xen_create_contiguous_region_20457 xen_create_contiguous_region 1 20457 NULL | 99142 | +xen_create_contiguous_region_20457 xen_create_contiguous_region 1 20457 NULL |
100099 | +nfs3_setxattr_20458 nfs3_setxattr 4 20458 NULL | 99143 | +nfs3_setxattr_20458 nfs3_setxattr 4 20458 NULL |
99144 | +dec_zcache_pers_zpages_20465 dec_zcache_pers_zpages 1 20465 NULL | ||
100100 | +compat_ipv6_setsockopt_20468 compat_ipv6_setsockopt 5 20468 NULL | 99145 | +compat_ipv6_setsockopt_20468 compat_ipv6_setsockopt 5 20468 NULL |
100101 | +read_buf_20469 read_buf 2 20469 NULL | 99146 | +read_buf_20469 read_buf 2 20469 NULL |
100102 | +btrfs_get_32_20476 btrfs_get_32 0 20476 NULL | 99147 | +btrfs_get_32_20476 btrfs_get_32 0 20476 NULL |
@@ -100114,6 +99159,7 @@ index 0000000..7982a0c | |||
100114 | +crypto_ahash_reqsize_20569 crypto_ahash_reqsize 0 20569 NULL | 99159 | +crypto_ahash_reqsize_20569 crypto_ahash_reqsize 0 20569 NULL |
100115 | +i915_max_freq_read_20581 i915_max_freq_read 3 20581 NULL | 99160 | +i915_max_freq_read_20581 i915_max_freq_read 3 20581 NULL |
100116 | +batadv_tt_append_diff_20588 batadv_tt_append_diff 4 20588 NULL | 99161 | +batadv_tt_append_diff_20588 batadv_tt_append_diff 4 20588 NULL |
99162 | +sync_timeline_create_20601 sync_timeline_create 2 20601 NULL | ||
100117 | +lirc_write_20604 lirc_write 3 20604 NULL | 99163 | +lirc_write_20604 lirc_write 3 20604 NULL |
100118 | +qib_qsfp_write_20614 qib_qsfp_write 0-4-2 20614 NULL | 99164 | +qib_qsfp_write_20614 qib_qsfp_write 0-4-2 20614 NULL |
100119 | +snd_pcm_oss_prepare_20641 snd_pcm_oss_prepare 0 20641 NULL | 99165 | +snd_pcm_oss_prepare_20641 snd_pcm_oss_prepare 0 20641 NULL |
@@ -100139,12 +99185,15 @@ index 0000000..7982a0c | |||
100139 | +ocfs2_align_bytes_to_clusters_20754 ocfs2_align_bytes_to_clusters 2 20754 NULL | 99185 | +ocfs2_align_bytes_to_clusters_20754 ocfs2_align_bytes_to_clusters 2 20754 NULL |
100140 | +brcmf_p2p_escan_20763 brcmf_p2p_escan 2 20763 NULL | 99186 | +brcmf_p2p_escan_20763 brcmf_p2p_escan 2 20763 NULL |
100141 | +ubi_io_read_20767 ubi_io_read 0 20767 NULL | 99187 | +ubi_io_read_20767 ubi_io_read 0 20767 NULL |
99188 | +ext4_r_blocks_count_20768 ext4_r_blocks_count 0 20768 NULL | ||
100142 | +fb_alloc_cmap_gfp_20792 fb_alloc_cmap_gfp 2 20792 NULL | 99189 | +fb_alloc_cmap_gfp_20792 fb_alloc_cmap_gfp 2 20792 NULL |
100143 | +iommu_range_alloc_20794 iommu_range_alloc 3 20794 NULL | 99190 | +iommu_range_alloc_20794 iommu_range_alloc 3 20794 NULL |
100144 | +iwl_dbgfs_rxon_flags_read_20795 iwl_dbgfs_rxon_flags_read 3 20795 NULL | 99191 | +iwl_dbgfs_rxon_flags_read_20795 iwl_dbgfs_rxon_flags_read 3 20795 NULL |
100145 | +sys_sendto_20809 sys_sendto 6 20809 NULL | 99192 | +sys_sendto_20809 sys_sendto 6 20809 NULL |
99193 | +cfv_alloc_and_copy_skb_20812 cfv_alloc_and_copy_skb 4 20812 NULL | ||
100146 | +strndup_user_20819 strndup_user 2 20819 NULL | 99194 | +strndup_user_20819 strndup_user 2 20819 NULL |
100147 | +calc_layout_20829 calc_layout 3 20829 NULL | 99195 | +calc_layout_20829 calc_layout 3 20829 NULL |
99196 | +dtf_read_channel_20831 dtf_read_channel 3 20831 NULL | ||
100148 | +wl1271_format_buffer_20834 wl1271_format_buffer 2 20834 NULL | 99197 | +wl1271_format_buffer_20834 wl1271_format_buffer 2 20834 NULL |
100149 | +uvc_alloc_entity_20836 uvc_alloc_entity 3-4 20836 NULL | 99198 | +uvc_alloc_entity_20836 uvc_alloc_entity 3-4 20836 NULL |
100150 | +snd_pcm_capture_avail_20867 snd_pcm_capture_avail 0 20867 NULL | 99199 | +snd_pcm_capture_avail_20867 snd_pcm_capture_avail 0 20867 NULL |
@@ -100177,10 +99226,13 @@ index 0000000..7982a0c | |||
100177 | +i2400m_rx_trace_21127 i2400m_rx_trace 3 21127 NULL | 99226 | +i2400m_rx_trace_21127 i2400m_rx_trace 3 21127 NULL |
100178 | +tps6586x_irq_init_21144 tps6586x_irq_init 3 21144 NULL | 99227 | +tps6586x_irq_init_21144 tps6586x_irq_init 3 21144 NULL |
100179 | +ocfs2_block_check_validate_21149 ocfs2_block_check_validate 2 21149 NULL | 99228 | +ocfs2_block_check_validate_21149 ocfs2_block_check_validate 2 21149 NULL |
99229 | +alloc_pg_vec_21159 alloc_pg_vec 3 21159 NULL | ||
100180 | +cx18_v4l2_read_21196 cx18_v4l2_read 3 21196 NULL | 99230 | +cx18_v4l2_read_21196 cx18_v4l2_read 3 21196 NULL |
100181 | +ipc_rcu_alloc_21208 ipc_rcu_alloc 1 21208 NULL | 99231 | +ipc_rcu_alloc_21208 ipc_rcu_alloc 1 21208 NULL |
99232 | +scsi_execute_req_flags_21215 scsi_execute_req_flags 5 21215 NULL | ||
100182 | +_ocfs2_free_clusters_21220 _ocfs2_free_clusters 4 21220 NULL | 99233 | +_ocfs2_free_clusters_21220 _ocfs2_free_clusters 4 21220 NULL |
100183 | +get_numpages_21227 get_numpages 0-1-2 21227 NULL | 99234 | +get_numpages_21227 get_numpages 0-1-2 21227 NULL |
99235 | +SyS_mlock_21238 SyS_mlock 1 21238 NULL | ||
100184 | +input_ff_create_21240 input_ff_create 2 21240 NULL | 99236 | +input_ff_create_21240 input_ff_create 2 21240 NULL |
100185 | +cfg80211_notify_new_peer_candidate_21242 cfg80211_notify_new_peer_candidate 4 21242 NULL | 99237 | +cfg80211_notify_new_peer_candidate_21242 cfg80211_notify_new_peer_candidate 4 21242 NULL |
100186 | +ocfs2_blocks_for_bytes_21268 ocfs2_blocks_for_bytes 0-2 21268 NULL | 99238 | +ocfs2_blocks_for_bytes_21268 ocfs2_blocks_for_bytes 0-2 21268 NULL |
@@ -100194,6 +99246,7 @@ index 0000000..7982a0c | |||
100194 | +gfs2_ea_get_copy_21353 gfs2_ea_get_copy 0 21353 NULL | 99246 | +gfs2_ea_get_copy_21353 gfs2_ea_get_copy 0 21353 NULL |
100195 | +max77693_irq_domain_map_21357 max77693_irq_domain_map 2 21357 NULL | 99247 | +max77693_irq_domain_map_21357 max77693_irq_domain_map 2 21357 NULL |
100196 | +alloc_orinocodev_21371 alloc_orinocodev 1 21371 NULL | 99248 | +alloc_orinocodev_21371 alloc_orinocodev 1 21371 NULL |
99249 | +SYSC_rt_sigpending_21379 SYSC_rt_sigpending 2 21379 NULL | ||
100197 | +video_ioctl2_21380 video_ioctl2 2 21380 NULL | 99250 | +video_ioctl2_21380 video_ioctl2 2 21380 NULL |
100198 | +diva_get_driver_dbg_mask_21399 diva_get_driver_dbg_mask 0 21399 NULL | 99251 | +diva_get_driver_dbg_mask_21399 diva_get_driver_dbg_mask 0 21399 NULL |
100199 | +snd_m3_inw_21406 snd_m3_inw 0 21406 NULL | 99252 | +snd_m3_inw_21406 snd_m3_inw 0 21406 NULL |
@@ -100203,6 +99256,7 @@ index 0000000..7982a0c | |||
100203 | +aggr_size_tx_agg_vs_rate_read_21438 aggr_size_tx_agg_vs_rate_read 3 21438 NULL | 99256 | +aggr_size_tx_agg_vs_rate_read_21438 aggr_size_tx_agg_vs_rate_read 3 21438 NULL |
100204 | +__ertm_hdr_size_21450 __ertm_hdr_size 0 21450 NULL | 99257 | +__ertm_hdr_size_21450 __ertm_hdr_size 0 21450 NULL |
100205 | +concat_writev_21451 concat_writev 3 21451 NULL | 99258 | +concat_writev_21451 concat_writev 3 21451 NULL |
99259 | +mei_nfc_send_21477 mei_nfc_send 3 21477 NULL | ||
100206 | +read_file_xmit_21487 read_file_xmit 3 21487 NULL | 99260 | +read_file_xmit_21487 read_file_xmit 3 21487 NULL |
100207 | +mmc_alloc_sg_21504 mmc_alloc_sg 1 21504 NULL | 99261 | +mmc_alloc_sg_21504 mmc_alloc_sg 1 21504 NULL |
100208 | +btrfs_file_aio_write_21520 btrfs_file_aio_write 4 21520 NULL | 99262 | +btrfs_file_aio_write_21520 btrfs_file_aio_write 4 21520 NULL |
@@ -100212,6 +99266,7 @@ index 0000000..7982a0c | |||
100212 | +rx_rx_beacon_early_term_read_21559 rx_rx_beacon_early_term_read 3 21559 NULL | 99266 | +rx_rx_beacon_early_term_read_21559 rx_rx_beacon_early_term_read 3 21559 NULL |
100213 | +xfs_buf_read_uncached_21585 xfs_buf_read_uncached 3 21585 NULL | 99267 | +xfs_buf_read_uncached_21585 xfs_buf_read_uncached 3 21585 NULL |
100214 | +ocfs2_acl_from_xattr_21604 ocfs2_acl_from_xattr 2 21604 NULL | 99268 | +ocfs2_acl_from_xattr_21604 ocfs2_acl_from_xattr 2 21604 NULL |
99269 | +compat_SyS_pwritev64_21606 compat_SyS_pwritev64 3 21606 NULL | ||
100215 | +__jfs_getxattr_21631 __jfs_getxattr 0 21631 NULL | 99270 | +__jfs_getxattr_21631 __jfs_getxattr 0 21631 NULL |
100216 | +validate_nnode_21638 validate_nnode 0 21638 NULL | 99271 | +validate_nnode_21638 validate_nnode 0 21638 NULL |
100217 | +__irq_alloc_descs_21639 __irq_alloc_descs 2-1-3 21639 NULL | 99272 | +__irq_alloc_descs_21639 __irq_alloc_descs 2-1-3 21639 NULL |
@@ -100244,9 +99299,12 @@ index 0000000..7982a0c | |||
100244 | +qsfp_1_read_21915 qsfp_1_read 3 21915 NULL | 99299 | +qsfp_1_read_21915 qsfp_1_read 3 21915 NULL |
100245 | +security_mmap_addr_21970 security_mmap_addr 0 21970 NULL | 99300 | +security_mmap_addr_21970 security_mmap_addr 0 21970 NULL |
100246 | +alloc_ldt_21972 alloc_ldt 2 21972 NULL | 99301 | +alloc_ldt_21972 alloc_ldt 2 21972 NULL |
99302 | +SYSC_prctl_21980 SYSC_prctl 4 21980 NULL | ||
100247 | +rxpipe_descr_host_int_trig_rx_data_read_22001 rxpipe_descr_host_int_trig_rx_data_read 3 22001 NULL nohasharray | 99303 | +rxpipe_descr_host_int_trig_rx_data_read_22001 rxpipe_descr_host_int_trig_rx_data_read 3 22001 NULL nohasharray |
100248 | +compat_rw_copy_check_uvector_22001 compat_rw_copy_check_uvector 0-3 22001 &rxpipe_descr_host_int_trig_rx_data_read_22001 | 99304 | +compat_rw_copy_check_uvector_22001 compat_rw_copy_check_uvector 0-3 22001 &rxpipe_descr_host_int_trig_rx_data_read_22001 |
99305 | +regcache_sync_block_raw_flush_22021 regcache_sync_block_raw_flush 3-4 22021 NULL | ||
100249 | +btrfs_get_16_22023 btrfs_get_16 0 22023 NULL | 99306 | +btrfs_get_16_22023 btrfs_get_16 0 22023 NULL |
99307 | +_sp2d_min_pg_22032 _sp2d_min_pg 0 22032 NULL | ||
100250 | +zd_usb_read_fw_22049 zd_usb_read_fw 4 22049 NULL | 99308 | +zd_usb_read_fw_22049 zd_usb_read_fw 4 22049 NULL |
100251 | +ieee80211_if_fmt_dropped_frames_ttl_22054 ieee80211_if_fmt_dropped_frames_ttl 3 22054 NULL | 99309 | +ieee80211_if_fmt_dropped_frames_ttl_22054 ieee80211_if_fmt_dropped_frames_ttl 3 22054 NULL |
100252 | +btrfs_reloc_clone_csums_22077 btrfs_reloc_clone_csums 2 22077 NULL | 99310 | +btrfs_reloc_clone_csums_22077 btrfs_reloc_clone_csums 2 22077 NULL |
@@ -100254,6 +99312,8 @@ index 0000000..7982a0c | |||
100254 | +mem_rw_22085 mem_rw 3 22085 NULL | 99312 | +mem_rw_22085 mem_rw 3 22085 NULL |
100255 | +is_swbp_at_addr_22089 is_swbp_at_addr 2 22089 NULL | 99313 | +is_swbp_at_addr_22089 is_swbp_at_addr 2 22089 NULL |
100256 | +lowpan_fragment_xmit_22095 lowpan_fragment_xmit 3-4 22095 NULL | 99314 | +lowpan_fragment_xmit_22095 lowpan_fragment_xmit 3-4 22095 NULL |
99315 | +sched_clock_cpu_22098 sched_clock_cpu 0 22098 NULL | ||
99316 | +qlcnic_sriov_pf_enable_22103 qlcnic_sriov_pf_enable 2 22103 NULL | ||
100257 | +sys_remap_file_pages_22124 sys_remap_file_pages 1 22124 NULL | 99317 | +sys_remap_file_pages_22124 sys_remap_file_pages 1 22124 NULL |
100258 | +__bitmap_size_22138 __bitmap_size 0 22138 NULL | 99318 | +__bitmap_size_22138 __bitmap_size 0 22138 NULL |
100259 | +compat_insn_22142 compat_insn 2 22142 NULL | 99319 | +compat_insn_22142 compat_insn 2 22142 NULL |
@@ -100270,6 +99330,7 @@ index 0000000..7982a0c | |||
100270 | +__tun_chr_ioctl_22300 __tun_chr_ioctl 4 22300 &pci_vpd_srdt_size_22300 | 99330 | +__tun_chr_ioctl_22300 __tun_chr_ioctl 4 22300 &pci_vpd_srdt_size_22300 |
100271 | +extend_brk_22301 extend_brk 0 22301 NULL | 99331 | +extend_brk_22301 extend_brk 0 22301 NULL |
100272 | +mesh_table_alloc_22305 mesh_table_alloc 1 22305 NULL | 99332 | +mesh_table_alloc_22305 mesh_table_alloc 1 22305 NULL |
99333 | +C_SYSC_msgrcv_22320 C_SYSC_msgrcv 2-3 22320 NULL | ||
100273 | +get_segment_base_22324 get_segment_base 0 22324 NULL | 99334 | +get_segment_base_22324 get_segment_base 0 22324 NULL |
100274 | +radix_tree_find_next_bit_22334 radix_tree_find_next_bit 2-3 22334 NULL | 99335 | +radix_tree_find_next_bit_22334 radix_tree_find_next_bit 2-3 22334 NULL |
100275 | +atomic_read_22342 atomic_read 0 22342 NULL | 99336 | +atomic_read_22342 atomic_read 0 22342 NULL |
@@ -100289,6 +99350,7 @@ index 0000000..7982a0c | |||
100289 | +handle_received_packet_22457 handle_received_packet 3 22457 NULL | 99350 | +handle_received_packet_22457 handle_received_packet 3 22457 NULL |
100290 | +mem_cgroup_read_22461 mem_cgroup_read 5 22461 NULL | 99351 | +mem_cgroup_read_22461 mem_cgroup_read 5 22461 NULL |
100291 | +batadv_check_unicast_packet_22468 batadv_check_unicast_packet 3 22468 NULL | 99352 | +batadv_check_unicast_packet_22468 batadv_check_unicast_packet 3 22468 NULL |
99353 | +dtf_write_device_22471 dtf_write_device 3 22471 NULL | ||
100292 | +cache_write_procfs_22491 cache_write_procfs 3 22491 NULL | 99354 | +cache_write_procfs_22491 cache_write_procfs 3 22491 NULL |
100293 | +mp_find_ioapic_pin_22499 mp_find_ioapic_pin 0-2 22499 NULL | 99355 | +mp_find_ioapic_pin_22499 mp_find_ioapic_pin 0-2 22499 NULL |
100294 | +mutex_lock_interruptible_22505 mutex_lock_interruptible 0 22505 NULL | 99356 | +mutex_lock_interruptible_22505 mutex_lock_interruptible 0 22505 NULL |
@@ -100307,15 +99369,19 @@ index 0000000..7982a0c | |||
100307 | +wl1271_rx_filter_get_fields_size_22638 wl1271_rx_filter_get_fields_size 0 22638 NULL | 99369 | +wl1271_rx_filter_get_fields_size_22638 wl1271_rx_filter_get_fields_size 0 22638 NULL |
100308 | +pwr_wake_on_timer_exp_read_22640 pwr_wake_on_timer_exp_read 3 22640 NULL | 99370 | +pwr_wake_on_timer_exp_read_22640 pwr_wake_on_timer_exp_read 3 22640 NULL |
100309 | +iwl_dbgfs_calib_disabled_read_22649 iwl_dbgfs_calib_disabled_read 3 22649 NULL | 99371 | +iwl_dbgfs_calib_disabled_read_22649 iwl_dbgfs_calib_disabled_read 3 22649 NULL |
99372 | +compat_SyS_msgrcv_22661 compat_SyS_msgrcv 2-3 22661 NULL | ||
100310 | +ubifs_leb_write_22679 ubifs_leb_write 4-5 22679 NULL | 99373 | +ubifs_leb_write_22679 ubifs_leb_write 4-5 22679 NULL |
99374 | +qlcnic_83xx_sysfs_flash_write_handler_22680 qlcnic_83xx_sysfs_flash_write_handler 6 22680 NULL | ||
100311 | +ocfs2_get_block_22687 ocfs2_get_block 2 22687 NULL | 99375 | +ocfs2_get_block_22687 ocfs2_get_block 2 22687 NULL |
100312 | +compat_fd_ioctl_22694 compat_fd_ioctl 4 22694 NULL | 99376 | +compat_fd_ioctl_22694 compat_fd_ioctl 4 22694 NULL |
100313 | +map_22700 map 2 22700 NULL | 99377 | +map_22700 map 2 22700 NULL |
100314 | +alloc_libipw_22708 alloc_libipw 1 22708 NULL | 99378 | +alloc_libipw_22708 alloc_libipw 1 22708 NULL |
100315 | +brcmf_sdbrcm_read_control_22721 brcmf_sdbrcm_read_control 3 22721 NULL | 99379 | +brcmf_sdbrcm_read_control_22721 brcmf_sdbrcm_read_control 3 22721 NULL |
100316 | +cx18_copy_buf_to_user_22735 cx18_copy_buf_to_user 4 22735 NULL | 99380 | +cx18_copy_buf_to_user_22735 cx18_copy_buf_to_user 4 22735 NULL |
100317 | +ceph_decode_32_22738 ceph_decode_32 0 22738 NULL | 99381 | +ceph_decode_32_22738 ceph_decode_32 0 22738 NULL nohasharray |
99382 | +__mei_cl_send_22738 __mei_cl_send 3 22738 &ceph_decode_32_22738 | ||
100318 | +iio_debugfs_write_reg_22742 iio_debugfs_write_reg 3 22742 NULL | 99383 | +iio_debugfs_write_reg_22742 iio_debugfs_write_reg 3 22742 NULL |
99384 | +qlcnic_sriov_init_22762 qlcnic_sriov_init 2 22762 NULL | ||
100319 | +print_frame_22769 print_frame 0 22769 NULL | 99385 | +print_frame_22769 print_frame 0 22769 NULL |
100320 | +ftrace_arch_read_dyn_info_22773 ftrace_arch_read_dyn_info 0 22773 NULL | 99386 | +ftrace_arch_read_dyn_info_22773 ftrace_arch_read_dyn_info 0 22773 NULL |
100321 | +compat_blkdev_ioctl_22841 compat_blkdev_ioctl 3 22841 NULL | 99387 | +compat_blkdev_ioctl_22841 compat_blkdev_ioctl 3 22841 NULL |
@@ -100336,14 +99402,17 @@ index 0000000..7982a0c | |||
100336 | +usb_get_langid_22983 usb_get_langid 0 22983 NULL | 99402 | +usb_get_langid_22983 usb_get_langid 0 22983 NULL |
100337 | +set_msr_hyperv_22985 set_msr_hyperv 3 22985 NULL | 99403 | +set_msr_hyperv_22985 set_msr_hyperv 3 22985 NULL |
100338 | +remote_settings_file_write_22987 remote_settings_file_write 3 22987 NULL | 99404 | +remote_settings_file_write_22987 remote_settings_file_write 3 22987 NULL |
99405 | +brcmf_sdio_chip_exit_download_23001 brcmf_sdio_chip_exit_download 4 23001 NULL | ||
100339 | +viafb_dvp0_proc_write_23023 viafb_dvp0_proc_write 3 23023 NULL | 99406 | +viafb_dvp0_proc_write_23023 viafb_dvp0_proc_write 3 23023 NULL |
100340 | +cifs_local_to_utf16_bytes_23025 cifs_local_to_utf16_bytes 0 23025 NULL | 99407 | +cifs_local_to_utf16_bytes_23025 cifs_local_to_utf16_bytes 0 23025 NULL |
100341 | +st_status_23032 st_status 5 23032 NULL | 99408 | +st_status_23032 st_status 5 23032 NULL |
100342 | +nv50_disp_chan_create__23056 nv50_disp_chan_create_ 5 23056 NULL | 99409 | +nv50_disp_chan_create__23056 nv50_disp_chan_create_ 5 23056 NULL |
100343 | +reiserfs_add_entry_23062 reiserfs_add_entry 4 23062 NULL | 99410 | +reiserfs_add_entry_23062 reiserfs_add_entry 4 23062 NULL |
99411 | +mei_cl_send_23068 mei_cl_send 3 23068 NULL | ||
100344 | +kvm_mmu_gva_to_gpa_write_23075 kvm_mmu_gva_to_gpa_write 0 23075 NULL | 99412 | +kvm_mmu_gva_to_gpa_write_23075 kvm_mmu_gva_to_gpa_write 0 23075 NULL |
100345 | +vm_map_ram_23078 vm_map_ram 2 23078 NULL nohasharray | 99413 | +vm_map_ram_23078 vm_map_ram 2 23078 NULL nohasharray |
100346 | +raw_sendmsg_23078 raw_sendmsg 4 23078 &vm_map_ram_23078 | 99414 | +raw_sendmsg_23078 raw_sendmsg 4 23078 &vm_map_ram_23078 |
99415 | +get_user_hdr_len_23079 get_user_hdr_len 0 23079 NULL | ||
100347 | +qla4_82xx_pci_mem_read_2M_23081 qla4_82xx_pci_mem_read_2M 2 23081 NULL | 99416 | +qla4_82xx_pci_mem_read_2M_23081 qla4_82xx_pci_mem_read_2M 2 23081 NULL |
100348 | +isr_tx_procs_read_23084 isr_tx_procs_read 3 23084 NULL | 99417 | +isr_tx_procs_read_23084 isr_tx_procs_read 3 23084 NULL |
100349 | +lnw_gpio_irq_map_23087 lnw_gpio_irq_map 2 23087 NULL | 99418 | +lnw_gpio_irq_map_23087 lnw_gpio_irq_map 2 23087 NULL |
@@ -100359,6 +99428,7 @@ index 0000000..7982a0c | |||
100359 | +ca91cx42_master_set_23146 ca91cx42_master_set 4 23146 NULL | 99428 | +ca91cx42_master_set_23146 ca91cx42_master_set 4 23146 NULL |
100360 | +read_file_ani_23161 read_file_ani 3 23161 NULL | 99429 | +read_file_ani_23161 read_file_ani 3 23161 NULL |
100361 | +ioremap_23172 ioremap 1-2 23172 NULL | 99430 | +ioremap_23172 ioremap 1-2 23172 NULL |
99431 | +tg_get_cfs_quota_23176 tg_get_cfs_quota 0 23176 NULL | ||
100362 | +usblp_write_23178 usblp_write 3 23178 NULL | 99432 | +usblp_write_23178 usblp_write 3 23178 NULL |
100363 | +msnd_fifo_alloc_23179 msnd_fifo_alloc 2 23179 NULL | 99433 | +msnd_fifo_alloc_23179 msnd_fifo_alloc 2 23179 NULL |
100364 | +gss_pipe_downcall_23182 gss_pipe_downcall 3 23182 NULL | 99434 | +gss_pipe_downcall_23182 gss_pipe_downcall 3 23182 NULL |
@@ -100404,18 +99474,22 @@ index 0000000..7982a0c | |||
100404 | +__i2400mu_send_barker_23652 __i2400mu_send_barker 3 23652 NULL | 99474 | +__i2400mu_send_barker_23652 __i2400mu_send_barker 3 23652 NULL |
100405 | +ext3_compat_ioctl_23659 ext3_compat_ioctl 3 23659 NULL | 99475 | +ext3_compat_ioctl_23659 ext3_compat_ioctl 3 23659 NULL |
100406 | +sInW_23663 sInW 0 23663 NULL | 99476 | +sInW_23663 sInW 0 23663 NULL |
99477 | +SyS_connect_23669 SyS_connect 3 23669 NULL | ||
100407 | +proc_ioctl_compat_23682 proc_ioctl_compat 2 23682 NULL | 99478 | +proc_ioctl_compat_23682 proc_ioctl_compat 2 23682 NULL |
100408 | +nftl_partscan_23688 nftl_partscan 0 23688 NULL | 99479 | +nftl_partscan_23688 nftl_partscan 0 23688 NULL |
100409 | +cx18_read_23699 cx18_read 3 23699 NULL | 99480 | +cx18_read_23699 cx18_read 3 23699 NULL |
99481 | +isku_sysfs_write_control_23718 isku_sysfs_write_control 6 23718 NULL | ||
100410 | +mp_config_acpi_gsi_23728 mp_config_acpi_gsi 2 23728 NULL | 99482 | +mp_config_acpi_gsi_23728 mp_config_acpi_gsi 2 23728 NULL |
100411 | +pack_sg_list_p_23739 pack_sg_list_p 0-2 23739 NULL | 99483 | +pack_sg_list_p_23739 pack_sg_list_p 0-2 23739 NULL |
100412 | +rx_rx_dropped_frame_read_23748 rx_rx_dropped_frame_read 3 23748 NULL | 99484 | +rx_rx_dropped_frame_read_23748 rx_rx_dropped_frame_read 3 23748 NULL |
100413 | +__kfifo_max_r_23768 __kfifo_max_r 0-2-1 23768 NULL | 99485 | +__kfifo_max_r_23768 __kfifo_max_r 0-2-1 23768 NULL |
99486 | +__build_packet_message_23778 __build_packet_message 10-4 23778 NULL | ||
100414 | +security_inode_getxattr_23781 security_inode_getxattr 0 23781 NULL | 99487 | +security_inode_getxattr_23781 security_inode_getxattr 0 23781 NULL |
100415 | +diva_alloc_dma_map_23798 diva_alloc_dma_map 2 23798 NULL | 99488 | +diva_alloc_dma_map_23798 diva_alloc_dma_map 2 23798 NULL |
100416 | +rx_path_reset_read_23801 rx_path_reset_read 3 23801 NULL | 99489 | +rx_path_reset_read_23801 rx_path_reset_read 3 23801 NULL |
100417 | +__earlyonly_bootmem_alloc_23824 __earlyonly_bootmem_alloc 2-3 23824 NULL | 99490 | +__earlyonly_bootmem_alloc_23824 __earlyonly_bootmem_alloc 2-3 23824 NULL |
100418 | +ceph_copy_page_vector_to_user_23829 ceph_copy_page_vector_to_user 3-4 23829 NULL | 99491 | +ceph_copy_page_vector_to_user_23829 ceph_copy_page_vector_to_user 3-4 23829 NULL |
99492 | +tfrc_binsearch_23833 tfrc_binsearch 0 23833 NULL | ||
100419 | +xfs_dir2_leaf_getdents_23841 xfs_dir2_leaf_getdents 3 23841 NULL | 99493 | +xfs_dir2_leaf_getdents_23841 xfs_dir2_leaf_getdents 3 23841 NULL |
100420 | +pgdat_end_pfn_23842 pgdat_end_pfn 0 23842 NULL | 99494 | +pgdat_end_pfn_23842 pgdat_end_pfn 0 23842 NULL |
100421 | +iwl_dbgfs_nvm_read_23845 iwl_dbgfs_nvm_read 3 23845 NULL | 99495 | +iwl_dbgfs_nvm_read_23845 iwl_dbgfs_nvm_read 3 23845 NULL |
@@ -100441,6 +99515,7 @@ index 0000000..7982a0c | |||
100441 | +ocfs2_mark_extent_refcounted_24035 ocfs2_mark_extent_refcounted 6 24035 NULL | 99515 | +ocfs2_mark_extent_refcounted_24035 ocfs2_mark_extent_refcounted 6 24035 NULL |
100442 | +adis16400_show_serial_number_24037 adis16400_show_serial_number 3 24037 NULL | 99516 | +adis16400_show_serial_number_24037 adis16400_show_serial_number 3 24037 NULL |
100443 | +afs_cell_alloc_24052 afs_cell_alloc 2 24052 NULL | 99517 | +afs_cell_alloc_24052 afs_cell_alloc 2 24052 NULL |
99518 | +brcmf_sdio_ramrw_24074 brcmf_sdio_ramrw 5 24074 NULL | ||
100444 | +blkcipher_copy_iv_24075 blkcipher_copy_iv 3 24075 NULL | 99519 | +blkcipher_copy_iv_24075 blkcipher_copy_iv 3 24075 NULL |
100445 | +vb2_fop_read_24080 vb2_fop_read 3 24080 NULL | 99520 | +vb2_fop_read_24080 vb2_fop_read 3 24080 NULL |
100446 | +pipeline_post_proc_swi_read_24108 pipeline_post_proc_swi_read 3 24108 NULL | 99521 | +pipeline_post_proc_swi_read_24108 pipeline_post_proc_swi_read 3 24108 NULL |
@@ -100466,8 +99541,11 @@ index 0000000..7982a0c | |||
100466 | +ext2_free_blocks_24292 ext2_free_blocks 2-3 24292 NULL | 99541 | +ext2_free_blocks_24292 ext2_free_blocks 2-3 24292 NULL |
100467 | +map_page_24298 map_page 3-4 24298 NULL | 99542 | +map_page_24298 map_page 3-4 24298 NULL |
100468 | +btmrvl_pscmd_read_24308 btmrvl_pscmd_read 3 24308 NULL | 99543 | +btmrvl_pscmd_read_24308 btmrvl_pscmd_read 3 24308 NULL |
99544 | +reserve_metadata_bytes_24313 reserve_metadata_bytes 3 24313 NULL | ||
100469 | +ath6kl_add_bss_if_needed_24317 ath6kl_add_bss_if_needed 6 24317 NULL | 99545 | +ath6kl_add_bss_if_needed_24317 ath6kl_add_bss_if_needed 6 24317 NULL |
100470 | +ocfs2_direct_IO_get_blocks_24333 ocfs2_direct_IO_get_blocks 2 24333 NULL | 99546 | +ocfs2_direct_IO_get_blocks_24333 ocfs2_direct_IO_get_blocks 2 24333 NULL |
99547 | +si476x_radio_read_acf_blob_24336 si476x_radio_read_acf_blob 3 24336 NULL | ||
99548 | +C_SYSC_pwritev_24345 C_SYSC_pwritev 3 24345 NULL | ||
100471 | +kzalloc_node_24352 kzalloc_node 1 24352 NULL | 99549 | +kzalloc_node_24352 kzalloc_node 1 24352 NULL |
100472 | +qla2x00_handle_queue_full_24365 qla2x00_handle_queue_full 2 24365 NULL | 99550 | +qla2x00_handle_queue_full_24365 qla2x00_handle_queue_full 2 24365 NULL |
100473 | +cfi_read_pri_24366 cfi_read_pri 3 24366 NULL | 99551 | +cfi_read_pri_24366 cfi_read_pri 3 24366 NULL |
@@ -100519,7 +99597,8 @@ index 0000000..7982a0c | |||
100519 | +l2cap_create_basic_pdu_24869 l2cap_create_basic_pdu 3 24869 &pnp_alloc_24869 | 99597 | +l2cap_create_basic_pdu_24869 l2cap_create_basic_pdu 3 24869 &pnp_alloc_24869 |
100520 | +setup_buffering_24872 setup_buffering 3 24872 NULL | 99598 | +setup_buffering_24872 setup_buffering 3 24872 NULL |
100521 | +bnx2fc_cmd_mgr_alloc_24873 bnx2fc_cmd_mgr_alloc 3-2 24873 NULL | 99599 | +bnx2fc_cmd_mgr_alloc_24873 bnx2fc_cmd_mgr_alloc 3-2 24873 NULL |
100522 | +queues_read_24877 queues_read 3 24877 NULL | 99600 | +queues_read_24877 queues_read 3 24877 NULL nohasharray |
99601 | +symbol_string_24877 symbol_string 0 24877 &queues_read_24877 | ||
100523 | +codec_list_read_file_24910 codec_list_read_file 3 24910 NULL | 99602 | +codec_list_read_file_24910 codec_list_read_file 3 24910 NULL |
100524 | +v4l2_ctrl_new_24927 v4l2_ctrl_new 7 24927 NULL | 99603 | +v4l2_ctrl_new_24927 v4l2_ctrl_new 7 24927 NULL |
100525 | +next_token_24929 next_token 0 24929 NULL | 99604 | +next_token_24929 next_token 0 24929 NULL |
@@ -100536,6 +99615,7 @@ index 0000000..7982a0c | |||
100536 | +ni_660x_num_counters_25031 ni_660x_num_counters 0 25031 NULL | 99615 | +ni_660x_num_counters_25031 ni_660x_num_counters 0 25031 NULL |
100537 | +nfs_dns_resolve_name_25036 nfs_dns_resolve_name 3 25036 NULL | 99616 | +nfs_dns_resolve_name_25036 nfs_dns_resolve_name 3 25036 NULL |
100538 | +gs_buf_alloc_25067 gs_buf_alloc 2 25067 NULL | 99617 | +gs_buf_alloc_25067 gs_buf_alloc 2 25067 NULL |
99618 | +SYSC_listxattr_25072 SYSC_listxattr 3 25072 NULL | ||
100539 | +ceph_osdc_writepages_25085 ceph_osdc_writepages 5 25085 NULL | 99619 | +ceph_osdc_writepages_25085 ceph_osdc_writepages 5 25085 NULL |
100540 | +snd_rawmidi_kernel_write_25106 snd_rawmidi_kernel_write 3 25106 NULL | 99620 | +snd_rawmidi_kernel_write_25106 snd_rawmidi_kernel_write 3 25106 NULL |
100541 | +sys_fgetxattr_25166 sys_fgetxattr 4 25166 NULL | 99621 | +sys_fgetxattr_25166 sys_fgetxattr 4 25166 NULL |
@@ -100544,6 +99624,7 @@ index 0000000..7982a0c | |||
100544 | +ks8851_rdreg32_25187 ks8851_rdreg32 0 25187 NULL | 99624 | +ks8851_rdreg32_25187 ks8851_rdreg32 0 25187 NULL |
100545 | +ocfs2_block_check_compute_25223 ocfs2_block_check_compute 2 25223 NULL | 99625 | +ocfs2_block_check_compute_25223 ocfs2_block_check_compute 2 25223 NULL |
100546 | +free_memcg_kmem_pages_25228 free_memcg_kmem_pages 1 25228 NULL | 99626 | +free_memcg_kmem_pages_25228 free_memcg_kmem_pages 1 25228 NULL |
99627 | +dtf_write_string_25232 dtf_write_string 5 25232 NULL | ||
100547 | +mon_stat_read_25238 mon_stat_read 3 25238 NULL | 99628 | +mon_stat_read_25238 mon_stat_read 3 25238 NULL |
100548 | +tcf_csum_ipv6_udp_25241 tcf_csum_ipv6_udp 4 25241 NULL | 99629 | +tcf_csum_ipv6_udp_25241 tcf_csum_ipv6_udp 4 25241 NULL |
100549 | +nilfs_palloc_find_available_slot_25245 nilfs_palloc_find_available_slot 3-5 25245 NULL | 99630 | +nilfs_palloc_find_available_slot_25245 nilfs_palloc_find_available_slot 3-5 25245 NULL |
@@ -100556,6 +99637,7 @@ index 0000000..7982a0c | |||
100556 | +help_25316 help 5 25316 NULL nohasharray | 99637 | +help_25316 help 5 25316 NULL nohasharray |
100557 | +ath9k_debugfs_read_buf_25316 ath9k_debugfs_read_buf 3 25316 &help_25316 | 99638 | +ath9k_debugfs_read_buf_25316 ath9k_debugfs_read_buf 3 25316 &help_25316 |
100558 | +rng_buffer_size_25348 rng_buffer_size 0 25348 NULL | 99639 | +rng_buffer_size_25348 rng_buffer_size 0 25348 NULL |
99640 | +SYSC_kexec_load_25361 SYSC_kexec_load 2 25361 NULL | ||
100559 | +rio_destid_next_25368 rio_destid_next 2 25368 NULL nohasharray | 99641 | +rio_destid_next_25368 rio_destid_next 2 25368 NULL nohasharray |
100560 | +unix_mkname_25368 unix_mkname 0-2 25368 &rio_destid_next_25368 | 99642 | +unix_mkname_25368 unix_mkname 0-2 25368 &rio_destid_next_25368 |
100561 | +sel_read_mls_25369 sel_read_mls 3 25369 NULL | 99643 | +sel_read_mls_25369 sel_read_mls 3 25369 NULL |
@@ -100593,6 +99675,7 @@ index 0000000..7982a0c | |||
100593 | +ext2_find_near_25734 ext2_find_near 0 25734 NULL | 99675 | +ext2_find_near_25734 ext2_find_near 0 25734 NULL |
100594 | +__set_clear_dirty_25744 __set_clear_dirty 2 25744 NULL | 99676 | +__set_clear_dirty_25744 __set_clear_dirty 2 25744 NULL |
100595 | +cxgbi_device_portmap_create_25747 cxgbi_device_portmap_create 3 25747 NULL | 99677 | +cxgbi_device_portmap_create_25747 cxgbi_device_portmap_create 3 25747 NULL |
99678 | +dtf_write_channel_25748 dtf_write_channel 3 25748 NULL | ||
100596 | +event_rx_pool_read_25792 event_rx_pool_read 3 25792 NULL | 99679 | +event_rx_pool_read_25792 event_rx_pool_read 3 25792 NULL |
100597 | +sg_read_25799 sg_read 3 25799 NULL | 99680 | +sg_read_25799 sg_read 3 25799 NULL |
100598 | +system_enable_read_25815 system_enable_read 3 25815 NULL | 99681 | +system_enable_read_25815 system_enable_read 3 25815 NULL |
@@ -100602,10 +99685,12 @@ index 0000000..7982a0c | |||
100602 | +parport_read_25855 parport_read 0 25855 NULL | 99685 | +parport_read_25855 parport_read 0 25855 NULL |
100603 | +xfs_dir2_sf_hdr_size_25858 xfs_dir2_sf_hdr_size 0 25858 NULL | 99686 | +xfs_dir2_sf_hdr_size_25858 xfs_dir2_sf_hdr_size 0 25858 NULL |
100604 | +uf_ap_process_data_pdu_25860 uf_ap_process_data_pdu 7 25860 NULL | 99687 | +uf_ap_process_data_pdu_25860 uf_ap_process_data_pdu 7 25860 NULL |
99688 | +key_attr_size_25865 key_attr_size 0 25865 NULL | ||
100605 | +ath6kl_regread_read_25884 ath6kl_regread_read 3 25884 NULL | 99689 | +ath6kl_regread_read_25884 ath6kl_regread_read 3 25884 NULL |
100606 | +run_delalloc_nocow_25896 run_delalloc_nocow 3 25896 NULL | 99690 | +run_delalloc_nocow_25896 run_delalloc_nocow 3 25896 NULL |
100607 | +sisusbcon_scroll_area_25899 sisusbcon_scroll_area 4-3 25899 NULL | 99691 | +sisusbcon_scroll_area_25899 sisusbcon_scroll_area 4-3 25899 NULL |
100608 | +lpfc_change_queue_depth_25905 lpfc_change_queue_depth 2 25905 NULL | 99692 | +lpfc_change_queue_depth_25905 lpfc_change_queue_depth 2 25905 NULL |
99693 | +nvme_trans_mode_page_create_25908 nvme_trans_mode_page_create 7 25908 NULL | ||
100609 | +do_jffs2_setxattr_25910 do_jffs2_setxattr 5 25910 NULL | 99694 | +do_jffs2_setxattr_25910 do_jffs2_setxattr 5 25910 NULL |
100610 | +rcname_read_25919 rcname_read 3 25919 NULL | 99695 | +rcname_read_25919 rcname_read 3 25919 NULL |
100611 | +snd_es1938_capture_copy_25930 snd_es1938_capture_copy 5 25930 NULL | 99696 | +snd_es1938_capture_copy_25930 snd_es1938_capture_copy 5 25930 NULL |
@@ -100630,6 +99715,7 @@ index 0000000..7982a0c | |||
100630 | +copy_oldmem_page_26164 copy_oldmem_page 3-1 26164 NULL | 99715 | +copy_oldmem_page_26164 copy_oldmem_page 3-1 26164 NULL |
100631 | +gfs2_xattr_acl_get_26166 gfs2_xattr_acl_get 0 26166 NULL nohasharray | 99716 | +gfs2_xattr_acl_get_26166 gfs2_xattr_acl_get 0 26166 NULL nohasharray |
100632 | +ath6kl_roam_table_read_26166 ath6kl_roam_table_read 3 26166 &gfs2_xattr_acl_get_26166 | 99717 | +ath6kl_roam_table_read_26166 ath6kl_roam_table_read 3 26166 &gfs2_xattr_acl_get_26166 |
99718 | +perf_adjust_period_26168 perf_adjust_period 2-3 26168 NULL | ||
100633 | +mid_get_vbt_data_r1_26170 mid_get_vbt_data_r1 2 26170 NULL | 99719 | +mid_get_vbt_data_r1_26170 mid_get_vbt_data_r1 2 26170 NULL |
100634 | +disk_devt_26180 disk_devt 0 26180 NULL | 99720 | +disk_devt_26180 disk_devt 0 26180 NULL |
100635 | +get_registers_26187 get_registers 3 26187 NULL | 99721 | +get_registers_26187 get_registers 3 26187 NULL |
@@ -100645,6 +99731,7 @@ index 0000000..7982a0c | |||
100645 | +snd_pcm_plug_client_channels_buf_26309 snd_pcm_plug_client_channels_buf 0-3 26309 NULL nohasharray | 99731 | +snd_pcm_plug_client_channels_buf_26309 snd_pcm_plug_client_channels_buf 0-3 26309 NULL nohasharray |
100646 | +pax_get_random_long_26309 pax_get_random_long 0 26309 &snd_pcm_plug_client_channels_buf_26309 | 99732 | +pax_get_random_long_26309 pax_get_random_long 0 26309 &snd_pcm_plug_client_channels_buf_26309 |
100647 | +pwr_wake_on_host_read_26321 pwr_wake_on_host_read 3 26321 NULL | 99733 | +pwr_wake_on_host_read_26321 pwr_wake_on_host_read 3 26321 NULL |
99734 | +efx_rx_mk_skb_26342 efx_rx_mk_skb 5 26342 NULL | ||
100648 | +ocfs2_duplicate_clusters_by_page_26357 ocfs2_duplicate_clusters_by_page 5 26357 NULL | 99735 | +ocfs2_duplicate_clusters_by_page_26357 ocfs2_duplicate_clusters_by_page 5 26357 NULL |
100649 | +cifs_readdata_alloc_26360 cifs_readdata_alloc 1 26360 NULL | 99736 | +cifs_readdata_alloc_26360 cifs_readdata_alloc 1 26360 NULL |
100650 | +dup_to_netobj_26363 dup_to_netobj 3 26363 NULL | 99737 | +dup_to_netobj_26363 dup_to_netobj 3 26363 NULL |
@@ -100662,6 +99749,7 @@ index 0000000..7982a0c | |||
100662 | +rts51x_read_mem_26577 rts51x_read_mem 4 26577 NULL nohasharray | 99749 | +rts51x_read_mem_26577 rts51x_read_mem 4 26577 NULL nohasharray |
100663 | +batadv_receive_server_sync_packet_26577 batadv_receive_server_sync_packet 3 26577 &rts51x_read_mem_26577 | 99750 | +batadv_receive_server_sync_packet_26577 batadv_receive_server_sync_packet 3 26577 &rts51x_read_mem_26577 |
100664 | +cirrusfb_get_memsize_26597 cirrusfb_get_memsize 0 26597 NULL | 99751 | +cirrusfb_get_memsize_26597 cirrusfb_get_memsize 0 26597 NULL |
99752 | +regcache_set_reg_present_26598 regcache_set_reg_present 2 26598 NULL | ||
100665 | +__unmap_single_26604 __unmap_single 2-3 26604 NULL | 99753 | +__unmap_single_26604 __unmap_single 2-3 26604 NULL |
100666 | +iommu_alloc_26621 iommu_alloc 4 26621 NULL | 99754 | +iommu_alloc_26621 iommu_alloc 4 26621 NULL |
100667 | +pack_value_26625 pack_value 1 26625 NULL | 99755 | +pack_value_26625 pack_value 1 26625 NULL |
@@ -100673,6 +99761,7 @@ index 0000000..7982a0c | |||
100673 | +rtllib_authentication_req_26713 rtllib_authentication_req 3 26713 NULL | 99761 | +rtllib_authentication_req_26713 rtllib_authentication_req 3 26713 NULL |
100674 | +aty_ld_le32_26720 aty_ld_le32 0 26720 NULL | 99762 | +aty_ld_le32_26720 aty_ld_le32 0 26720 NULL |
100675 | +nouveau_namedb_create__26732 nouveau_namedb_create_ 7 26732 NULL | 99763 | +nouveau_namedb_create__26732 nouveau_namedb_create_ 7 26732 NULL |
99764 | +SyS_fcntl_26737 SyS_fcntl 3 26737 NULL | ||
100676 | +pipeline_tcp_rx_stat_fifo_int_read_26745 pipeline_tcp_rx_stat_fifo_int_read 3 26745 NULL | 99765 | +pipeline_tcp_rx_stat_fifo_int_read_26745 pipeline_tcp_rx_stat_fifo_int_read 3 26745 NULL |
100677 | +srp_ring_alloc_26760 srp_ring_alloc 2 26760 NULL | 99766 | +srp_ring_alloc_26760 srp_ring_alloc 2 26760 NULL |
100678 | +snd_hda_get_raw_connections_26762 snd_hda_get_raw_connections 0 26762 NULL | 99767 | +snd_hda_get_raw_connections_26762 snd_hda_get_raw_connections 0 26762 NULL |
@@ -100706,10 +99795,12 @@ index 0000000..7982a0c | |||
100706 | +snd_pcm_lib_period_bytes_27071 snd_pcm_lib_period_bytes 0 27071 NULL | 99795 | +snd_pcm_lib_period_bytes_27071 snd_pcm_lib_period_bytes 0 27071 NULL |
100707 | +paravirt_read_msr_27077 paravirt_read_msr 0 27077 NULL | 99796 | +paravirt_read_msr_27077 paravirt_read_msr 0 27077 NULL |
100708 | +alloc_fdmem_27083 alloc_fdmem 1 27083 NULL | 99797 | +alloc_fdmem_27083 alloc_fdmem 1 27083 NULL |
99798 | +compat_SyS_rt_sigpending_27084 compat_SyS_rt_sigpending 2 27084 NULL | ||
100709 | +find_first_bit_27088 find_first_bit 0-2 27088 NULL | 99799 | +find_first_bit_27088 find_first_bit 0-2 27088 NULL |
100710 | +btmrvl_hscmd_write_27089 btmrvl_hscmd_write 3 27089 NULL | 99800 | +btmrvl_hscmd_write_27089 btmrvl_hscmd_write 3 27089 NULL |
100711 | +nes_reg_user_mr_27106 nes_reg_user_mr 2-3 27106 NULL | 99801 | +nes_reg_user_mr_27106 nes_reg_user_mr 2-3 27106 NULL |
100712 | +__devcgroup_inode_permission_27108 __devcgroup_inode_permission 0 27108 NULL | 99802 | +__devcgroup_inode_permission_27108 __devcgroup_inode_permission 0 27108 NULL |
99803 | +SYSC_ipc_27123 SYSC_ipc 3 27123 NULL | ||
100713 | +get_kernel_page_27133 get_kernel_page 0 27133 NULL | 99804 | +get_kernel_page_27133 get_kernel_page 0 27133 NULL |
100714 | +drbd_get_capacity_27141 drbd_get_capacity 0 27141 NULL | 99805 | +drbd_get_capacity_27141 drbd_get_capacity 0 27141 NULL |
100715 | +pms_capture_27142 pms_capture 4 27142 NULL | 99806 | +pms_capture_27142 pms_capture 4 27142 NULL |
@@ -100724,10 +99815,12 @@ index 0000000..7982a0c | |||
100724 | +__dma_map_cont_27289 __dma_map_cont 5 27289 NULL | 99815 | +__dma_map_cont_27289 __dma_map_cont 5 27289 NULL |
100725 | +hpi_read_reg_27302 hpi_read_reg 0 27302 NULL | 99816 | +hpi_read_reg_27302 hpi_read_reg 0 27302 NULL |
100726 | +copy_from_buf_27308 copy_from_buf 4-2 27308 NULL | 99817 | +copy_from_buf_27308 copy_from_buf 4-2 27308 NULL |
100727 | +ath6kl_wmi_test_cmd_27312 ath6kl_wmi_test_cmd 3 27312 NULL | 99818 | +virtqueue_add_inbuf_27312 virtqueue_add_inbuf 3 27312 NULL nohasharray |
99819 | +ath6kl_wmi_test_cmd_27312 ath6kl_wmi_test_cmd 3 27312 &virtqueue_add_inbuf_27312 | ||
100728 | +ocfs2_blocks_to_clusters_27327 ocfs2_blocks_to_clusters 0-2 27327 NULL | 99820 | +ocfs2_blocks_to_clusters_27327 ocfs2_blocks_to_clusters 0-2 27327 NULL |
100729 | +snd_pcm_oss_write2_27332 snd_pcm_oss_write2 3-0 27332 NULL | 99821 | +snd_pcm_oss_write2_27332 snd_pcm_oss_write2 3-0 27332 NULL |
100730 | +afs_cell_create_27346 afs_cell_create 2 27346 NULL | 99822 | +afs_cell_create_27346 afs_cell_create 2 27346 NULL |
99823 | +compat_SyS_semctl_27349 compat_SyS_semctl 4 27349 NULL | ||
100731 | +pcbit_stat_27364 pcbit_stat 2 27364 NULL | 99824 | +pcbit_stat_27364 pcbit_stat 2 27364 NULL |
100732 | +init_memory_mapping_27395 init_memory_mapping 0 27395 NULL | 99825 | +init_memory_mapping_27395 init_memory_mapping 0 27395 NULL |
100733 | +phys_pte_init_27411 phys_pte_init 0-3-2 27411 NULL | 99826 | +phys_pte_init_27411 phys_pte_init 0-3-2 27411 NULL |
@@ -100735,6 +99828,7 @@ index 0000000..7982a0c | |||
100735 | +acpi_os_get_root_pointer_27416 acpi_os_get_root_pointer 0 27416 NULL nohasharray | 99828 | +acpi_os_get_root_pointer_27416 acpi_os_get_root_pointer 0 27416 NULL nohasharray |
100736 | +ieee80211_if_read_smps_27416 ieee80211_if_read_smps 3 27416 &acpi_os_get_root_pointer_27416 | 99829 | +ieee80211_if_read_smps_27416 ieee80211_if_read_smps 3 27416 &acpi_os_get_root_pointer_27416 |
100737 | +pack_sg_list_27425 pack_sg_list 0-2 27425 NULL | 99830 | +pack_sg_list_27425 pack_sg_list 0-2 27425 NULL |
99831 | +ktime_to_us_27455 ktime_to_us 0 27455 NULL | ||
100738 | +v4l2_ctrl_new_std_menu_items_27487 v4l2_ctrl_new_std_menu_items 4 27487 NULL | 99832 | +v4l2_ctrl_new_std_menu_items_27487 v4l2_ctrl_new_std_menu_items 4 27487 NULL |
100739 | +set_tpl_pfs_27490 set_tpl_pfs 3 27490 NULL | 99833 | +set_tpl_pfs_27490 set_tpl_pfs 3 27490 NULL |
100740 | +hcd_buffer_alloc_27495 hcd_buffer_alloc 2 27495 NULL | 99834 | +hcd_buffer_alloc_27495 hcd_buffer_alloc 2 27495 NULL |
@@ -100745,6 +99839,7 @@ index 0000000..7982a0c | |||
100745 | +garmin_read_process_27509 garmin_read_process 3 27509 NULL | 99839 | +garmin_read_process_27509 garmin_read_process 3 27509 NULL |
100746 | +ib_copy_to_udata_27525 ib_copy_to_udata 3 27525 NULL | 99840 | +ib_copy_to_udata_27525 ib_copy_to_udata 3 27525 NULL |
100747 | +snd_sonicvibes_getdmaa_27552 snd_sonicvibes_getdmaa 0 27552 NULL | 99841 | +snd_sonicvibes_getdmaa_27552 snd_sonicvibes_getdmaa 0 27552 NULL |
99842 | +SyS_fgetxattr_27571 SyS_fgetxattr 4 27571 NULL | ||
100748 | +libipw_alloc_txb_27579 libipw_alloc_txb 1-2-3 27579 NULL | 99843 | +libipw_alloc_txb_27579 libipw_alloc_txb 1-2-3 27579 NULL |
100749 | +read_flush_procfs_27642 read_flush_procfs 3 27642 NULL nohasharray | 99844 | +read_flush_procfs_27642 read_flush_procfs 3 27642 NULL nohasharray |
100750 | +nl80211_send_connect_result_27642 nl80211_send_connect_result 5-7 27642 &read_flush_procfs_27642 nohasharray | 99845 | +nl80211_send_connect_result_27642 nl80211_send_connect_result 5-7 27642 &read_flush_procfs_27642 nohasharray |
@@ -100756,11 +99851,13 @@ index 0000000..7982a0c | |||
100756 | +qword_get_27670 qword_get 0 27670 NULL | 99851 | +qword_get_27670 qword_get 0 27670 NULL |
100757 | +ocfs2_extend_dir_27695 ocfs2_extend_dir 4 27695 NULL | 99852 | +ocfs2_extend_dir_27695 ocfs2_extend_dir 4 27695 NULL |
100758 | +fs_path_add_from_extent_buffer_27702 fs_path_add_from_extent_buffer 4 27702 NULL | 99853 | +fs_path_add_from_extent_buffer_27702 fs_path_add_from_extent_buffer 4 27702 NULL |
99854 | +inc_zcache_eph_zbytes_27704 inc_zcache_eph_zbytes 1 27704 NULL | ||
100759 | +evm_write_key_27715 evm_write_key 3 27715 NULL | 99855 | +evm_write_key_27715 evm_write_key 3 27715 NULL |
100760 | +ieee80211_if_fmt_dot11MeshGateAnnouncementProtocol_27722 ieee80211_if_fmt_dot11MeshGateAnnouncementProtocol 3 27722 NULL | 99856 | +ieee80211_if_fmt_dot11MeshGateAnnouncementProtocol_27722 ieee80211_if_fmt_dot11MeshGateAnnouncementProtocol 3 27722 NULL |
100761 | +reg_w_buf_27724 reg_w_buf 3 27724 NULL | 99857 | +reg_w_buf_27724 reg_w_buf 3 27724 NULL |
100762 | +xfs_dir2_block_sfsize_27727 xfs_dir2_block_sfsize 0 27727 NULL | 99858 | +xfs_dir2_block_sfsize_27727 xfs_dir2_block_sfsize 0 27727 NULL |
100763 | +a4t_cs_init_27734 a4t_cs_init 3 27734 NULL | 99859 | +a4t_cs_init_27734 a4t_cs_init 3 27734 NULL |
99860 | +SyS_setsockopt_27759 SyS_setsockopt 5 27759 NULL | ||
100764 | +kcalloc_27770 kcalloc 1-2 27770 NULL | 99861 | +kcalloc_27770 kcalloc 1-2 27770 NULL |
100765 | +twl4030_set_gpio_dataout_27792 twl4030_set_gpio_dataout 1 27792 NULL | 99862 | +twl4030_set_gpio_dataout_27792 twl4030_set_gpio_dataout 1 27792 NULL |
100766 | +DivaSTraceGetMemotyRequirement_27797 DivaSTraceGetMemotyRequirement 0-1 27797 NULL | 99863 | +DivaSTraceGetMemotyRequirement_27797 DivaSTraceGetMemotyRequirement 0-1 27797 NULL |
@@ -100774,6 +99871,7 @@ index 0000000..7982a0c | |||
100774 | +ieee80211_if_read_dot11MeshHWMProotInterval_27873 ieee80211_if_read_dot11MeshHWMProotInterval 3 27873 NULL | 99871 | +ieee80211_if_read_dot11MeshHWMProotInterval_27873 ieee80211_if_read_dot11MeshHWMProotInterval 3 27873 NULL |
100775 | +unix_seqpacket_sendmsg_27893 unix_seqpacket_sendmsg 4 27893 NULL | 99872 | +unix_seqpacket_sendmsg_27893 unix_seqpacket_sendmsg 4 27893 NULL |
100776 | +gluebi_write_27905 gluebi_write 3 27905 NULL | 99873 | +gluebi_write_27905 gluebi_write 3 27905 NULL |
99874 | +SyS_ptrace_27924 SyS_ptrace 3-4 27924 NULL | ||
100777 | +bm_find_next_27929 bm_find_next 2 27929 NULL | 99875 | +bm_find_next_27929 bm_find_next 2 27929 NULL |
100778 | +tracing_clock_write_27961 tracing_clock_write 3 27961 NULL | 99876 | +tracing_clock_write_27961 tracing_clock_write 3 27961 NULL |
100779 | +tipc_media_addr_printf_27971 tipc_media_addr_printf 2 27971 NULL | 99877 | +tipc_media_addr_printf_27971 tipc_media_addr_printf 2 27971 NULL |
@@ -100782,6 +99880,7 @@ index 0000000..7982a0c | |||
100782 | +edt_ft5x06_debugfs_raw_data_read_28002 edt_ft5x06_debugfs_raw_data_read 3 28002 NULL | 99880 | +edt_ft5x06_debugfs_raw_data_read_28002 edt_ft5x06_debugfs_raw_data_read 3 28002 NULL |
100783 | +snd_rawmidi_write_28008 snd_rawmidi_write 3 28008 NULL | 99881 | +snd_rawmidi_write_28008 snd_rawmidi_write 3 28008 NULL |
100784 | +serial8250_port_size_28019 serial8250_port_size 0 28019 NULL | 99882 | +serial8250_port_size_28019 serial8250_port_size 0 28019 NULL |
99883 | +alloc_one_pg_vec_page_28031 alloc_one_pg_vec_page 1 28031 NULL | ||
100785 | +sctp_setsockopt_maxburst_28041 sctp_setsockopt_maxburst 3 28041 NULL | 99884 | +sctp_setsockopt_maxburst_28041 sctp_setsockopt_maxburst 3 28041 NULL |
100786 | +rts51x_xd_rw_28046 rts51x_xd_rw 3-4 28046 NULL | 99885 | +rts51x_xd_rw_28046 rts51x_xd_rw 3-4 28046 NULL |
100787 | +cx231xx_init_vbi_isoc_28053 cx231xx_init_vbi_isoc 3-2 28053 NULL | 99886 | +cx231xx_init_vbi_isoc_28053 cx231xx_init_vbi_isoc 3-2 28053 NULL |
@@ -100819,6 +99918,7 @@ index 0000000..7982a0c | |||
100819 | +dlmfs_file_read_28385 dlmfs_file_read 3 28385 NULL | 99918 | +dlmfs_file_read_28385 dlmfs_file_read 3 28385 NULL |
100820 | +tx_frag_cache_miss_read_28394 tx_frag_cache_miss_read 3 28394 NULL | 99919 | +tx_frag_cache_miss_read_28394 tx_frag_cache_miss_read 3 28394 NULL |
100821 | +set_bypass_pfs_28395 set_bypass_pfs 3 28395 NULL | 99920 | +set_bypass_pfs_28395 set_bypass_pfs 3 28395 NULL |
99921 | +bypass_pwup_write_28416 bypass_pwup_write 3 28416 NULL | ||
100822 | +subdev_ioctl_28417 subdev_ioctl 2 28417 NULL | 99922 | +subdev_ioctl_28417 subdev_ioctl 2 28417 NULL |
100823 | +__split_large_page_28429 __split_large_page 2 28429 NULL | 99923 | +__split_large_page_28429 __split_large_page 2 28429 NULL |
100824 | +mpage_readpages_28436 mpage_readpages 3 28436 NULL | 99924 | +mpage_readpages_28436 mpage_readpages 3 28436 NULL |
@@ -100858,13 +99958,16 @@ index 0000000..7982a0c | |||
100858 | +snd_pcm_aio_write_28738 snd_pcm_aio_write 3 28738 NULL nohasharray | 99958 | +snd_pcm_aio_write_28738 snd_pcm_aio_write 3 28738 NULL nohasharray |
100859 | +phantom_compat_ioctl_28738 phantom_compat_ioctl 3 28738 &snd_pcm_aio_write_28738 | 99959 | +phantom_compat_ioctl_28738 phantom_compat_ioctl 3 28738 &snd_pcm_aio_write_28738 |
100860 | +read_file_btcoex_28743 read_file_btcoex 3 28743 NULL | 99960 | +read_file_btcoex_28743 read_file_btcoex 3 28743 NULL |
99961 | +max_hw_blocks_28748 max_hw_blocks 0 28748 NULL | ||
100861 | +ath6kl_get_num_reg_28780 ath6kl_get_num_reg 0 28780 NULL | 99962 | +ath6kl_get_num_reg_28780 ath6kl_get_num_reg 0 28780 NULL |
100862 | +dvb_net_sec_callback_28786 dvb_net_sec_callback 2 28786 NULL | 99963 | +dvb_net_sec_callback_28786 dvb_net_sec_callback 2 28786 NULL |
100863 | +sel_write_member_28800 sel_write_member 3 28800 NULL | 99964 | +btrfs_block_rsv_refill_28800 btrfs_block_rsv_refill 3 28800 NULL nohasharray |
99965 | +sel_write_member_28800 sel_write_member 3 28800 &btrfs_block_rsv_refill_28800 | ||
100864 | +cgroup_file_read_28804 cgroup_file_read 3 28804 NULL | 99966 | +cgroup_file_read_28804 cgroup_file_read 3 28804 NULL |
100865 | +btrfs_ref_to_path_28809 btrfs_ref_to_path 0 28809 NULL | 99967 | +btrfs_ref_to_path_28809 btrfs_ref_to_path 0 28809 NULL |
100866 | +memory_bm_create_28814 memory_bm_create 0 28814 NULL | 99968 | +memory_bm_create_28814 memory_bm_create 0 28814 NULL |
100867 | +iwl_dbgfs_rxon_filter_flags_read_28832 iwl_dbgfs_rxon_filter_flags_read 3 28832 NULL | 99969 | +iwl_dbgfs_rxon_filter_flags_read_28832 iwl_dbgfs_rxon_filter_flags_read 3 28832 NULL |
99970 | +C_SYSC_shmat_28843 C_SYSC_shmat 2 28843 NULL | ||
100868 | +vp_request_msix_vectors_28849 vp_request_msix_vectors 2 28849 NULL | 99971 | +vp_request_msix_vectors_28849 vp_request_msix_vectors 2 28849 NULL |
100869 | +ipv6_renew_options_28867 ipv6_renew_options 5 28867 NULL | 99972 | +ipv6_renew_options_28867 ipv6_renew_options 5 28867 NULL |
100870 | +packet_sendmsg_spkt_28885 packet_sendmsg_spkt 4 28885 NULL | 99973 | +packet_sendmsg_spkt_28885 packet_sendmsg_spkt 4 28885 NULL |
@@ -100877,6 +99980,7 @@ index 0000000..7982a0c | |||
100877 | +alloc_sched_domains_28972 alloc_sched_domains 1 28972 NULL | 99980 | +alloc_sched_domains_28972 alloc_sched_domains 1 28972 NULL |
100878 | +ext4_mb_add_groupinfo_28988 ext4_mb_add_groupinfo 2 28988 NULL | 99981 | +ext4_mb_add_groupinfo_28988 ext4_mb_add_groupinfo 2 28988 NULL |
100879 | +bin_uuid_28999 bin_uuid 3 28999 NULL | 99982 | +bin_uuid_28999 bin_uuid 3 28999 NULL |
99983 | +offset_to_bitmap_29004 offset_to_bitmap 2 29004 NULL | ||
100880 | +xz_dec_init_29029 xz_dec_init 2 29029 NULL | 99984 | +xz_dec_init_29029 xz_dec_init 2 29029 NULL |
100881 | +sys_fcntl64_29031 sys_fcntl64 3 29031 NULL | 99985 | +sys_fcntl64_29031 sys_fcntl64 3 29031 NULL |
100882 | +ieee80211_if_read_ht_opmode_29044 ieee80211_if_read_ht_opmode 3 29044 NULL | 99986 | +ieee80211_if_read_ht_opmode_29044 ieee80211_if_read_ht_opmode 3 29044 NULL |
@@ -100886,6 +99990,7 @@ index 0000000..7982a0c | |||
100886 | +memblock_alloc_base_nid_29072 memblock_alloc_base_nid 1-2 29072 NULL | 99990 | +memblock_alloc_base_nid_29072 memblock_alloc_base_nid 1-2 29072 NULL |
100887 | +sctp_getsockopt_assoc_stats_29074 sctp_getsockopt_assoc_stats 2 29074 NULL | 99991 | +sctp_getsockopt_assoc_stats_29074 sctp_getsockopt_assoc_stats 2 29074 NULL |
100888 | +mark_extents_written_29082 mark_extents_written 2 29082 NULL | 99992 | +mark_extents_written_29082 mark_extents_written 2 29082 NULL |
99993 | +i915_error_object_create_sized_29091 i915_error_object_create_sized 3 29091 NULL | ||
100889 | +isdn_ppp_write_29109 isdn_ppp_write 4 29109 NULL | 99994 | +isdn_ppp_write_29109 isdn_ppp_write 4 29109 NULL |
100890 | +snprintf_29125 snprintf 0 29125 NULL | 99995 | +snprintf_29125 snprintf 0 29125 NULL |
100891 | +iov_shorten_29130 iov_shorten 0 29130 NULL | 99996 | +iov_shorten_29130 iov_shorten 0 29130 NULL |
@@ -100899,6 +100004,7 @@ index 0000000..7982a0c | |||
100899 | +comedi_alloc_subdevices_29207 comedi_alloc_subdevices 2 29207 NULL | 100004 | +comedi_alloc_subdevices_29207 comedi_alloc_subdevices 2 29207 NULL |
100900 | +do_shrinker_shrink_29208 do_shrinker_shrink 0 29208 NULL | 100005 | +do_shrinker_shrink_29208 do_shrinker_shrink 0 29208 NULL |
100901 | +iwl_dbgfs_temperature_read_29224 iwl_dbgfs_temperature_read 3 29224 NULL | 100006 | +iwl_dbgfs_temperature_read_29224 iwl_dbgfs_temperature_read 3 29224 NULL |
100007 | +nvme_trans_copy_from_user_29227 nvme_trans_copy_from_user 3 29227 NULL | ||
100902 | +devm_ioremap_29235 devm_ioremap 2-3 29235 NULL | 100008 | +devm_ioremap_29235 devm_ioremap 2-3 29235 NULL |
100903 | +irq_domain_add_linear_29236 irq_domain_add_linear 2 29236 NULL | 100009 | +irq_domain_add_linear_29236 irq_domain_add_linear 2 29236 NULL |
100904 | +recover_peb_29238 recover_peb 6-7 29238 NULL | 100010 | +recover_peb_29238 recover_peb 6-7 29238 NULL |
@@ -100907,18 +100013,22 @@ index 0000000..7982a0c | |||
100907 | +prism2_set_genericelement_29277 prism2_set_genericelement 3 29277 NULL | 100013 | +prism2_set_genericelement_29277 prism2_set_genericelement 3 29277 NULL |
100908 | +bitmap_ord_to_pos_29279 bitmap_ord_to_pos 3 29279 NULL | 100014 | +bitmap_ord_to_pos_29279 bitmap_ord_to_pos 3 29279 NULL |
100909 | +sn9c102_read_29305 sn9c102_read 3 29305 NULL | 100015 | +sn9c102_read_29305 sn9c102_read 3 29305 NULL |
100016 | +__fuse_get_req_29315 __fuse_get_req 2 29315 NULL | ||
100910 | +lo_compat_ioctl_29336 lo_compat_ioctl 4 29336 NULL | 100017 | +lo_compat_ioctl_29336 lo_compat_ioctl 4 29336 NULL |
100911 | +tun_put_user_29337 tun_put_user 5 29337 NULL | 100018 | +tun_put_user_29337 tun_put_user 5 29337 NULL |
100912 | +__alloc_ei_netdev_29338 __alloc_ei_netdev 1 29338 NULL | 100019 | +__alloc_ei_netdev_29338 __alloc_ei_netdev 1 29338 NULL |
100913 | +alloc_and_copy_ftrace_hash_29368 alloc_and_copy_ftrace_hash 1 29368 NULL | 100020 | +alloc_and_copy_ftrace_hash_29368 alloc_and_copy_ftrace_hash 1 29368 NULL |
100021 | +ktime_us_delta_29375 ktime_us_delta 0 29375 NULL | ||
100914 | +mwifiex_cfg80211_mgmt_tx_29387 mwifiex_cfg80211_mgmt_tx 7 29387 NULL | 100022 | +mwifiex_cfg80211_mgmt_tx_29387 mwifiex_cfg80211_mgmt_tx 7 29387 NULL |
100915 | +pca953x_irq_setup_29407 pca953x_irq_setup 3 29407 NULL | 100023 | +pca953x_irq_setup_29407 pca953x_irq_setup 3 29407 NULL |
100916 | +mempool_create_29437 mempool_create 1 29437 NULL | 100024 | +mempool_create_29437 mempool_create 1 29437 NULL |
100917 | +crypto_ahash_alignmask_29445 crypto_ahash_alignmask 0 29445 NULL | 100025 | +crypto_ahash_alignmask_29445 crypto_ahash_alignmask 0 29445 NULL |
100918 | +apei_exec_ctx_get_output_29457 apei_exec_ctx_get_output 0 29457 NULL | 100026 | +apei_exec_ctx_get_output_29457 apei_exec_ctx_get_output 0 29457 NULL |
100919 | +validate_scan_freqs_29462 validate_scan_freqs 0 29462 NULL | 100027 | +validate_scan_freqs_29462 validate_scan_freqs 0 29462 NULL |
100028 | +SyS_flistxattr_29474 SyS_flistxattr 3 29474 NULL | ||
100920 | +do_register_entry_29478 do_register_entry 4 29478 NULL | 100029 | +do_register_entry_29478 do_register_entry 4 29478 NULL |
100921 | +simple_strtoul_29480 simple_strtoul 0 29480 NULL | 100030 | +simple_strtoul_29480 simple_strtoul 0 29480 NULL |
100031 | +sched_clock_local_29498 sched_clock_local 0 29498 NULL | ||
100922 | +btmrvl_pscmd_write_29504 btmrvl_pscmd_write 3 29504 NULL | 100032 | +btmrvl_pscmd_write_29504 btmrvl_pscmd_write 3 29504 NULL |
100923 | +btrfs_file_extent_disk_bytenr_29505 btrfs_file_extent_disk_bytenr 0 29505 NULL | 100033 | +btrfs_file_extent_disk_bytenr_29505 btrfs_file_extent_disk_bytenr 0 29505 NULL |
100924 | +atk_debugfs_ggrp_read_29522 atk_debugfs_ggrp_read 3 29522 NULL | 100034 | +atk_debugfs_ggrp_read_29522 atk_debugfs_ggrp_read 3 29522 NULL |
@@ -100944,13 +100054,16 @@ index 0000000..7982a0c | |||
100944 | +probes_write_29711 probes_write 3 29711 NULL | 100054 | +probes_write_29711 probes_write 3 29711 NULL |
100945 | +emi62_writememory_29731 emi62_writememory 4 29731 NULL | 100055 | +emi62_writememory_29731 emi62_writememory 4 29731 NULL |
100946 | +read_cis_cache_29735 read_cis_cache 4 29735 NULL | 100056 | +read_cis_cache_29735 read_cis_cache 4 29735 NULL |
100057 | +std_nic_write_29752 std_nic_write 3 29752 NULL | ||
100947 | +ip_vs_conn_fill_param_sync_29771 ip_vs_conn_fill_param_sync 6 29771 NULL | 100058 | +ip_vs_conn_fill_param_sync_29771 ip_vs_conn_fill_param_sync 6 29771 NULL |
100059 | +tcf_csum_ipv6_icmp_29777 tcf_csum_ipv6_icmp 3 29777 NULL | ||
100948 | +dbAlloc_29794 dbAlloc 0 29794 NULL | 100060 | +dbAlloc_29794 dbAlloc 0 29794 NULL |
100949 | +ext4_trim_all_free_29806 ext4_trim_all_free 4-3-2 29806 NULL | 100061 | +ext4_trim_all_free_29806 ext4_trim_all_free 4-3-2 29806 NULL |
100950 | +tcp_sendpage_29829 tcp_sendpage 4 29829 NULL | 100062 | +tcp_sendpage_29829 tcp_sendpage 4 29829 NULL |
100951 | +scan_bitmap_block_29840 scan_bitmap_block 4 29840 NULL | 100063 | +scan_bitmap_block_29840 scan_bitmap_block 4 29840 NULL |
100952 | +__probe_kernel_write_29842 __probe_kernel_write 3 29842 NULL | 100064 | +__probe_kernel_write_29842 __probe_kernel_write 3 29842 NULL |
100953 | +kvm_read_hva_atomic_29848 kvm_read_hva_atomic 3 29848 NULL | 100065 | +kvm_read_hva_atomic_29848 kvm_read_hva_atomic 3 29848 NULL |
100066 | +solo_enc_alloc_29860 solo_enc_alloc 3 29860 NULL | ||
100954 | +ipv6_setsockopt_29871 ipv6_setsockopt 5 29871 NULL | 100067 | +ipv6_setsockopt_29871 ipv6_setsockopt 5 29871 NULL |
100955 | +scsi_end_request_29876 scsi_end_request 3 29876 NULL | 100068 | +scsi_end_request_29876 scsi_end_request 3 29876 NULL |
100956 | +crypto_aead_alignmask_29885 crypto_aead_alignmask 0 29885 NULL | 100069 | +crypto_aead_alignmask_29885 crypto_aead_alignmask 0 29885 NULL |
@@ -100975,6 +100088,7 @@ index 0000000..7982a0c | |||
100975 | +calgary_unmap_page_30130 calgary_unmap_page 2-3 30130 NULL | 100088 | +calgary_unmap_page_30130 calgary_unmap_page 2-3 30130 NULL |
100976 | +_osd_req_sizeof_alist_header_30134 _osd_req_sizeof_alist_header 0 30134 NULL | 100089 | +_osd_req_sizeof_alist_header_30134 _osd_req_sizeof_alist_header 0 30134 NULL |
100977 | +u_memcpya_30139 u_memcpya 2-3 30139 NULL | 100090 | +u_memcpya_30139 u_memcpya 2-3 30139 NULL |
100091 | +btrfs_start_transaction_lflush_30178 btrfs_start_transaction_lflush 2 30178 NULL | ||
100978 | +cx25821_video_ioctl_30188 cx25821_video_ioctl 2 30188 NULL | 100092 | +cx25821_video_ioctl_30188 cx25821_video_ioctl 2 30188 NULL |
100979 | +mempool_create_page_pool_30189 mempool_create_page_pool 1 30189 NULL | 100093 | +mempool_create_page_pool_30189 mempool_create_page_pool 1 30189 NULL |
100980 | +drm_property_create_bitmask_30195 drm_property_create_bitmask 5 30195 NULL | 100094 | +drm_property_create_bitmask_30195 drm_property_create_bitmask 5 30195 NULL |
@@ -100993,6 +100107,7 @@ index 0000000..7982a0c | |||
100993 | +generic_ptrace_pokedata_30338 generic_ptrace_pokedata 2 30338 NULL | 100107 | +generic_ptrace_pokedata_30338 generic_ptrace_pokedata 2 30338 NULL |
100994 | +resource_from_user_30341 resource_from_user 3 30341 NULL | 100108 | +resource_from_user_30341 resource_from_user 3 30341 NULL |
100995 | +__vmalloc_node_flags_30352 __vmalloc_node_flags 1 30352 NULL | 100109 | +__vmalloc_node_flags_30352 __vmalloc_node_flags 1 30352 NULL |
100110 | +C_SYSC_readv_30369 C_SYSC_readv 3 30369 NULL | ||
100996 | +sys_get_mempolicy_30379 sys_get_mempolicy 3-4 30379 NULL | 100111 | +sys_get_mempolicy_30379 sys_get_mempolicy 3-4 30379 NULL |
100997 | +mangle_sdp_packet_30381 mangle_sdp_packet 10 30381 NULL | 100112 | +mangle_sdp_packet_30381 mangle_sdp_packet 10 30381 NULL |
100998 | +c4iw_init_resource_30393 c4iw_init_resource 2-3 30393 NULL | 100113 | +c4iw_init_resource_30393 c4iw_init_resource 2-3 30393 NULL |
@@ -101008,6 +100123,7 @@ index 0000000..7982a0c | |||
101008 | +ocrdma_reg_user_mr_30474 ocrdma_reg_user_mr 2-3 30474 NULL | 100123 | +ocrdma_reg_user_mr_30474 ocrdma_reg_user_mr 2-3 30474 NULL |
101009 | +write_head_30481 write_head 4 30481 NULL | 100124 | +write_head_30481 write_head 4 30481 NULL |
101010 | +adu_write_30487 adu_write 3 30487 NULL | 100125 | +adu_write_30487 adu_write 3 30487 NULL |
100126 | +dwc3_testmode_write_30516 dwc3_testmode_write 3 30516 NULL | ||
101011 | +debug_debug2_read_30526 debug_debug2_read 3 30526 NULL | 100127 | +debug_debug2_read_30526 debug_debug2_read 3 30526 NULL |
101012 | +batadv_dat_snoop_incoming_arp_request_30548 batadv_dat_snoop_incoming_arp_request 3 30548 NULL | 100128 | +batadv_dat_snoop_incoming_arp_request_30548 batadv_dat_snoop_incoming_arp_request 3 30548 NULL |
101013 | +disk_expand_part_tbl_30561 disk_expand_part_tbl 2 30561 NULL | 100129 | +disk_expand_part_tbl_30561 disk_expand_part_tbl 2 30561 NULL |
@@ -101016,6 +100132,7 @@ index 0000000..7982a0c | |||
101016 | +blk_init_tags_30592 blk_init_tags 1 30592 NULL | 100132 | +blk_init_tags_30592 blk_init_tags 1 30592 NULL |
101017 | +i2c_hid_get_report_length_30598 i2c_hid_get_report_length 0 30598 NULL | 100133 | +i2c_hid_get_report_length_30598 i2c_hid_get_report_length 0 30598 NULL |
101018 | +sgl_map_user_pages_30610 sgl_map_user_pages 2-3-4 30610 NULL | 100134 | +sgl_map_user_pages_30610 sgl_map_user_pages 2-3-4 30610 NULL |
100135 | +SyS_msgrcv_30611 SyS_msgrcv 3 30611 NULL | ||
101019 | +macvtap_sendmsg_30629 macvtap_sendmsg 4 30629 NULL | 100136 | +macvtap_sendmsg_30629 macvtap_sendmsg 4 30629 NULL |
101020 | +ieee80211_if_read_dot11MeshAwakeWindowDuration_30631 ieee80211_if_read_dot11MeshAwakeWindowDuration 3 30631 NULL | 100137 | +ieee80211_if_read_dot11MeshAwakeWindowDuration_30631 ieee80211_if_read_dot11MeshAwakeWindowDuration 3 30631 NULL |
101021 | +compat_raw_setsockopt_30634 compat_raw_setsockopt 5 30634 NULL | 100138 | +compat_raw_setsockopt_30634 compat_raw_setsockopt 5 30634 NULL |
@@ -101032,6 +100149,7 @@ index 0000000..7982a0c | |||
101032 | +sctp_setsockopt_auth_chunk_30843 sctp_setsockopt_auth_chunk 3 30843 NULL | 100149 | +sctp_setsockopt_auth_chunk_30843 sctp_setsockopt_auth_chunk 3 30843 NULL |
101033 | +cfg80211_rx_mgmt_30844 cfg80211_rx_mgmt 5 30844 NULL | 100150 | +cfg80211_rx_mgmt_30844 cfg80211_rx_mgmt 5 30844 NULL |
101034 | +hda_hwdep_ioctl_compat_30847 hda_hwdep_ioctl_compat 4 30847 NULL | 100151 | +hda_hwdep_ioctl_compat_30847 hda_hwdep_ioctl_compat 4 30847 NULL |
100152 | +trace_probe_nr_files_30882 trace_probe_nr_files 0 30882 NULL | ||
101035 | +ieee80211_if_fmt_dropped_frames_no_route_30884 ieee80211_if_fmt_dropped_frames_no_route 3 30884 NULL | 100153 | +ieee80211_if_fmt_dropped_frames_no_route_30884 ieee80211_if_fmt_dropped_frames_no_route 3 30884 NULL |
101036 | +iommu_map_mmio_space_30919 iommu_map_mmio_space 1 30919 NULL | 100154 | +iommu_map_mmio_space_30919 iommu_map_mmio_space 1 30919 NULL |
101037 | +sctp_setsockopt_rtoinfo_30941 sctp_setsockopt_rtoinfo 3 30941 NULL | 100155 | +sctp_setsockopt_rtoinfo_30941 sctp_setsockopt_rtoinfo 3 30941 NULL |
@@ -101069,6 +100187,7 @@ index 0000000..7982a0c | |||
101069 | +sisusbcon_scroll_31315 sisusbcon_scroll 5-2-3 31315 NULL | 100187 | +sisusbcon_scroll_31315 sisusbcon_scroll 5-2-3 31315 NULL |
101070 | +command_file_write_31318 command_file_write 3 31318 NULL | 100188 | +command_file_write_31318 command_file_write 3 31318 NULL |
101071 | +em28xx_init_usb_xfer_31337 em28xx_init_usb_xfer 4-6 31337 NULL | 100189 | +em28xx_init_usb_xfer_31337 em28xx_init_usb_xfer 4-6 31337 NULL |
100190 | +__cpu_to_node_31345 __cpu_to_node 0 31345 NULL | ||
101072 | +xprt_rdma_allocate_31372 xprt_rdma_allocate 2 31372 NULL | 100191 | +xprt_rdma_allocate_31372 xprt_rdma_allocate 2 31372 NULL |
101073 | +vb2_vmalloc_get_userptr_31374 vb2_vmalloc_get_userptr 3-2 31374 NULL | 100192 | +vb2_vmalloc_get_userptr_31374 vb2_vmalloc_get_userptr 3-2 31374 NULL |
101074 | +trace_parser_get_init_31379 trace_parser_get_init 2 31379 NULL | 100193 | +trace_parser_get_init_31379 trace_parser_get_init 2 31379 NULL |
@@ -101114,6 +100233,7 @@ index 0000000..7982a0c | |||
101114 | +shmem_pwrite_slow_31741 shmem_pwrite_slow 3 31741 NULL | 100233 | +shmem_pwrite_slow_31741 shmem_pwrite_slow 3 31741 NULL |
101115 | +NCR_700_change_queue_depth_31742 NCR_700_change_queue_depth 2 31742 NULL nohasharray | 100234 | +NCR_700_change_queue_depth_31742 NCR_700_change_queue_depth 2 31742 NULL nohasharray |
101116 | +input_abs_get_max_31742 input_abs_get_max 0 31742 &NCR_700_change_queue_depth_31742 | 100235 | +input_abs_get_max_31742 input_abs_get_max 0 31742 &NCR_700_change_queue_depth_31742 |
100236 | +muldiv64_31743 muldiv64 2-3 31743 NULL | ||
101117 | +bcm_char_read_31750 bcm_char_read 3 31750 NULL | 100237 | +bcm_char_read_31750 bcm_char_read 3 31750 NULL |
101118 | +snd_seq_device_new_31753 snd_seq_device_new 4 31753 NULL | 100238 | +snd_seq_device_new_31753 snd_seq_device_new 4 31753 NULL |
101119 | +set_memory_wb_31761 set_memory_wb 1 31761 NULL | 100239 | +set_memory_wb_31761 set_memory_wb 1 31761 NULL |
@@ -101129,9 +100249,11 @@ index 0000000..7982a0c | |||
101129 | +new_dir_31919 new_dir 3 31919 NULL | 100249 | +new_dir_31919 new_dir 3 31919 NULL |
101130 | +kmem_alloc_31920 kmem_alloc 1 31920 NULL | 100250 | +kmem_alloc_31920 kmem_alloc 1 31920 NULL |
101131 | +guestwidth_to_adjustwidth_31937 guestwidth_to_adjustwidth 0-1 31937 NULL | 100251 | +guestwidth_to_adjustwidth_31937 guestwidth_to_adjustwidth 0-1 31937 NULL |
100252 | +SYSC_sethostname_31940 SYSC_sethostname 2 31940 NULL | ||
101132 | +iov_iter_copy_from_user_31942 iov_iter_copy_from_user 4 31942 NULL | 100253 | +iov_iter_copy_from_user_31942 iov_iter_copy_from_user 4 31942 NULL |
101133 | +vb2_write_31948 vb2_write 3 31948 NULL | 100254 | +vb2_write_31948 vb2_write 3 31948 NULL |
101134 | +pvr2_ctrl_get_valname_31951 pvr2_ctrl_get_valname 4 31951 NULL | 100255 | +pvr2_ctrl_get_valname_31951 pvr2_ctrl_get_valname 4 31951 NULL |
100256 | +regcache_rbtree_sync_31964 regcache_rbtree_sync 2 31964 NULL | ||
101135 | +copy_from_user_toio_31966 copy_from_user_toio 3 31966 NULL | 100257 | +copy_from_user_toio_31966 copy_from_user_toio 3 31966 NULL |
101136 | +mtd_add_partition_31971 mtd_add_partition 3 31971 NULL | 100258 | +mtd_add_partition_31971 mtd_add_partition 3 31971 NULL |
101137 | +find_next_zero_bit_31990 find_next_zero_bit 0-2-3 31990 NULL | 100259 | +find_next_zero_bit_31990 find_next_zero_bit 0-2-3 31990 NULL |
@@ -101142,8 +100264,10 @@ index 0000000..7982a0c | |||
101142 | +aead_len_32021 aead_len 0 32021 NULL | 100264 | +aead_len_32021 aead_len 0 32021 NULL |
101143 | +ocfs2_remove_extent_32032 ocfs2_remove_extent 4-3 32032 NULL | 100265 | +ocfs2_remove_extent_32032 ocfs2_remove_extent 4-3 32032 NULL |
101144 | +posix_acl_set_32037 posix_acl_set 4 32037 NULL | 100266 | +posix_acl_set_32037 posix_acl_set 4 32037 NULL |
100267 | +stk_read_32038 stk_read 3 32038 NULL | ||
101145 | +vmw_cursor_update_dmabuf_32045 vmw_cursor_update_dmabuf 3-4 32045 NULL | 100268 | +vmw_cursor_update_dmabuf_32045 vmw_cursor_update_dmabuf 3-4 32045 NULL |
101146 | +sys_sched_setaffinity_32046 sys_sched_setaffinity 2 32046 NULL | 100269 | +sys_sched_setaffinity_32046 sys_sched_setaffinity 2 32046 NULL |
100270 | +SYSC_llistxattr_32061 SYSC_llistxattr 3 32061 NULL | ||
101147 | +proc_scsi_devinfo_write_32064 proc_scsi_devinfo_write 3 32064 NULL | 100271 | +proc_scsi_devinfo_write_32064 proc_scsi_devinfo_write 3 32064 NULL |
101148 | +cfg80211_send_unprot_deauth_32080 cfg80211_send_unprot_deauth 3 32080 NULL | 100272 | +cfg80211_send_unprot_deauth_32080 cfg80211_send_unprot_deauth 3 32080 NULL |
101149 | +bio_alloc_32095 bio_alloc 2 32095 NULL | 100273 | +bio_alloc_32095 bio_alloc 2 32095 NULL |
@@ -101162,6 +100286,7 @@ index 0000000..7982a0c | |||
101162 | +fb_compat_ioctl_32265 fb_compat_ioctl 3 32265 NULL | 100286 | +fb_compat_ioctl_32265 fb_compat_ioctl 3 32265 NULL |
101163 | +vmalloc_user_32308 vmalloc_user 1 32308 NULL | 100287 | +vmalloc_user_32308 vmalloc_user 1 32308 NULL |
101164 | +hex_string_32310 hex_string 0 32310 NULL | 100288 | +hex_string_32310 hex_string 0 32310 NULL |
100289 | +SyS_select_32319 SyS_select 1 32319 NULL | ||
101165 | +nouveau_bar_create__32332 nouveau_bar_create_ 4 32332 NULL | 100290 | +nouveau_bar_create__32332 nouveau_bar_create_ 4 32332 NULL |
101166 | +nl80211_send_mlme_event_32337 nl80211_send_mlme_event 4 32337 NULL | 100291 | +nl80211_send_mlme_event_32337 nl80211_send_mlme_event 4 32337 NULL |
101167 | +t4_alloc_mem_32342 t4_alloc_mem 1 32342 NULL | 100292 | +t4_alloc_mem_32342 t4_alloc_mem 1 32342 NULL |
@@ -101169,6 +100294,7 @@ index 0000000..7982a0c | |||
101169 | +sel_read_initcon_32362 sel_read_initcon 3 32362 NULL | 100294 | +sel_read_initcon_32362 sel_read_initcon 3 32362 NULL |
101170 | +_drbd_bm_find_next_32372 _drbd_bm_find_next 2 32372 NULL | 100295 | +_drbd_bm_find_next_32372 _drbd_bm_find_next 2 32372 NULL |
101171 | +usbtmc_read_32377 usbtmc_read 3 32377 NULL | 100296 | +usbtmc_read_32377 usbtmc_read 3 32377 NULL |
100297 | +local_clock_32385 local_clock 0 32385 NULL | ||
101172 | +qla4_82xx_pci_mem_write_2M_32398 qla4_82xx_pci_mem_write_2M 2 32398 NULL | 100298 | +qla4_82xx_pci_mem_write_2M_32398 qla4_82xx_pci_mem_write_2M 2 32398 NULL |
101173 | +xfs_iext_add_indirect_multi_32400 xfs_iext_add_indirect_multi 3 32400 NULL | 100299 | +xfs_iext_add_indirect_multi_32400 xfs_iext_add_indirect_multi 3 32400 NULL |
101174 | +vmci_qp_alloc_32405 vmci_qp_alloc 3-5 32405 NULL | 100300 | +vmci_qp_alloc_32405 vmci_qp_alloc 3-5 32405 NULL |
@@ -101178,6 +100304,7 @@ index 0000000..7982a0c | |||
101178 | +cache_status_32462 cache_status 5 32462 NULL | 100304 | +cache_status_32462 cache_status 5 32462 NULL |
101179 | +ieee80211_fill_mesh_addresses_32465 ieee80211_fill_mesh_addresses 0 32465 NULL | 100305 | +ieee80211_fill_mesh_addresses_32465 ieee80211_fill_mesh_addresses 0 32465 NULL |
101180 | +ide_driver_proc_write_32493 ide_driver_proc_write 3 32493 NULL | 100306 | +ide_driver_proc_write_32493 ide_driver_proc_write 3 32493 NULL |
100307 | +bypass_pwoff_write_32499 bypass_pwoff_write 3 32499 NULL | ||
101181 | +ctrl_std_val_to_sym_32516 ctrl_std_val_to_sym 5 32516 NULL | 100308 | +ctrl_std_val_to_sym_32516 ctrl_std_val_to_sym 5 32516 NULL |
101182 | +disconnect_32521 disconnect 4 32521 NULL | 100309 | +disconnect_32521 disconnect 4 32521 NULL |
101183 | +qsfp_read_32522 qsfp_read 0-4-2 32522 NULL | 100310 | +qsfp_read_32522 qsfp_read 0-4-2 32522 NULL |
@@ -101201,6 +100328,7 @@ index 0000000..7982a0c | |||
101201 | +ib_sg_dma_len_32649 ib_sg_dma_len 0 32649 NULL | 100328 | +ib_sg_dma_len_32649 ib_sg_dma_len 0 32649 NULL |
101202 | +generic_readlink_32654 generic_readlink 3 32654 NULL | 100329 | +generic_readlink_32654 generic_readlink 3 32654 NULL |
101203 | +move_addr_to_kernel_32673 move_addr_to_kernel 2 32673 NULL | 100330 | +move_addr_to_kernel_32673 move_addr_to_kernel 2 32673 NULL |
100331 | +compat_SyS_pwritev_32680 compat_SyS_pwritev 3 32680 NULL | ||
101204 | +jfs_readpages_32702 jfs_readpages 4 32702 NULL | 100332 | +jfs_readpages_32702 jfs_readpages 4 32702 NULL |
101205 | +snd_hwdep_ioctl_compat_32736 snd_hwdep_ioctl_compat 3 32736 NULL | 100333 | +snd_hwdep_ioctl_compat_32736 snd_hwdep_ioctl_compat 3 32736 NULL |
101206 | +get_arg_page_32746 get_arg_page 2 32746 NULL | 100334 | +get_arg_page_32746 get_arg_page 2 32746 NULL |
@@ -101216,14 +100344,17 @@ index 0000000..7982a0c | |||
101216 | +ath6kl_usb_submit_ctrl_in_32880 ath6kl_usb_submit_ctrl_in 6 32880 NULL nohasharray | 100344 | +ath6kl_usb_submit_ctrl_in_32880 ath6kl_usb_submit_ctrl_in 6 32880 NULL nohasharray |
101217 | +cifs_writedata_alloc_32880 cifs_writedata_alloc 1 32880 &ath6kl_usb_submit_ctrl_in_32880 | 100345 | +cifs_writedata_alloc_32880 cifs_writedata_alloc 1 32880 &ath6kl_usb_submit_ctrl_in_32880 |
101218 | +ath6kl_usb_post_recv_transfers_32892 ath6kl_usb_post_recv_transfers 2 32892 NULL | 100346 | +ath6kl_usb_post_recv_transfers_32892 ath6kl_usb_post_recv_transfers 2 32892 NULL |
100347 | +ext4_get_group_number_32899 ext4_get_group_number 0 32899 NULL | ||
101219 | +il_dbgfs_tx_stats_read_32913 il_dbgfs_tx_stats_read 3 32913 NULL | 100348 | +il_dbgfs_tx_stats_read_32913 il_dbgfs_tx_stats_read 3 32913 NULL |
101220 | +zlib_inflate_workspacesize_32927 zlib_inflate_workspacesize 0 32927 NULL | 100349 | +zlib_inflate_workspacesize_32927 zlib_inflate_workspacesize 0 32927 NULL |
101221 | +rmap_recycle_32938 rmap_recycle 3 32938 NULL | 100350 | +rmap_recycle_32938 rmap_recycle 3 32938 NULL |
101222 | +irq_reserve_irqs_32946 irq_reserve_irqs 1-2 32946 NULL | 100351 | +irq_reserve_irqs_32946 irq_reserve_irqs 1-2 32946 NULL |
101223 | +ext4_valid_block_bitmap_32958 ext4_valid_block_bitmap 3 32958 NULL | 100352 | +ext4_valid_block_bitmap_32958 ext4_valid_block_bitmap 3 32958 NULL |
101224 | +arch_ptrace_32981 arch_ptrace 3 32981 NULL | 100353 | +arch_ptrace_32981 arch_ptrace 3-4 32981 NULL |
101225 | +compat_filldir_32999 compat_filldir 3 32999 NULL | 100354 | +compat_filldir_32999 compat_filldir 3 32999 NULL |
101226 | +ext3_alloc_blocks_33007 ext3_alloc_blocks 3 33007 NULL | 100355 | +ext3_alloc_blocks_33007 ext3_alloc_blocks 3 33007 NULL nohasharray |
100356 | +SyS_syslog_33007 SyS_syslog 3 33007 &ext3_alloc_blocks_33007 | ||
100357 | +SYSC_lgetxattr_33049 SYSC_lgetxattr 4 33049 NULL | ||
101227 | +pipeline_dec_packet_in_fifo_full_read_33052 pipeline_dec_packet_in_fifo_full_read 3 33052 NULL | 100358 | +pipeline_dec_packet_in_fifo_full_read_33052 pipeline_dec_packet_in_fifo_full_read 3 33052 NULL |
101228 | +ebt_compat_match_offset_33053 ebt_compat_match_offset 0-2 33053 NULL | 100359 | +ebt_compat_match_offset_33053 ebt_compat_match_offset 0-2 33053 NULL |
101229 | +bitmap_resize_33054 bitmap_resize 2 33054 NULL | 100360 | +bitmap_resize_33054 bitmap_resize 2 33054 NULL |
@@ -101245,7 +100376,9 @@ index 0000000..7982a0c | |||
101245 | +sched_find_first_bit_33270 sched_find_first_bit 0 33270 NULL | 100376 | +sched_find_first_bit_33270 sched_find_first_bit 0 33270 NULL |
101246 | +cachefiles_cook_key_33274 cachefiles_cook_key 2 33274 NULL | 100377 | +cachefiles_cook_key_33274 cachefiles_cook_key 2 33274 NULL |
101247 | +mei_compat_ioctl_33275 mei_compat_ioctl 3 33275 NULL | 100378 | +mei_compat_ioctl_33275 mei_compat_ioctl 3 33275 NULL |
100379 | +sync_pt_create_33282 sync_pt_create 2 33282 NULL | ||
101248 | +mcs7830_get_reg_33308 mcs7830_get_reg 3 33308 NULL | 100380 | +mcs7830_get_reg_33308 mcs7830_get_reg 3 33308 NULL |
100381 | +isku_sysfs_read_keys_easyzone_33318 isku_sysfs_read_keys_easyzone 6 33318 NULL | ||
101249 | +ath6kl_usb_ctrl_msg_exchange_33327 ath6kl_usb_ctrl_msg_exchange 4 33327 NULL | 100382 | +ath6kl_usb_ctrl_msg_exchange_33327 ath6kl_usb_ctrl_msg_exchange 4 33327 NULL |
101250 | +gsm_mux_rx_netchar_33336 gsm_mux_rx_netchar 3 33336 NULL | 100383 | +gsm_mux_rx_netchar_33336 gsm_mux_rx_netchar 3 33336 NULL |
101251 | +joydev_ioctl_33343 joydev_ioctl 2 33343 NULL | 100384 | +joydev_ioctl_33343 joydev_ioctl 2 33343 NULL |
@@ -101255,10 +100388,12 @@ index 0000000..7982a0c | |||
101255 | +ocfs2_quota_read_33382 ocfs2_quota_read 5 33382 NULL | 100388 | +ocfs2_quota_read_33382 ocfs2_quota_read 5 33382 NULL |
101256 | +ieee80211_if_read_dropped_frames_no_route_33383 ieee80211_if_read_dropped_frames_no_route 3 33383 NULL | 100389 | +ieee80211_if_read_dropped_frames_no_route_33383 ieee80211_if_read_dropped_frames_no_route 3 33383 NULL |
101257 | +scsi_varlen_cdb_length_33385 scsi_varlen_cdb_length 0 33385 NULL | 100390 | +scsi_varlen_cdb_length_33385 scsi_varlen_cdb_length 0 33385 NULL |
100391 | +tg_get_cfs_period_33390 tg_get_cfs_period 0 33390 NULL | ||
101258 | +ocfs2_allocate_unwritten_extents_33394 ocfs2_allocate_unwritten_extents 2-3 33394 NULL | 100392 | +ocfs2_allocate_unwritten_extents_33394 ocfs2_allocate_unwritten_extents 2-3 33394 NULL |
101259 | +ext4_meta_bg_first_block_no_33408 ext4_meta_bg_first_block_no 2 33408 NULL nohasharray | 100393 | +ext4_meta_bg_first_block_no_33408 ext4_meta_bg_first_block_no 2 33408 NULL nohasharray |
101260 | +snd_pcm_capture_ioctl1_33408 snd_pcm_capture_ioctl1 0 33408 &ext4_meta_bg_first_block_no_33408 | 100394 | +snd_pcm_capture_ioctl1_33408 snd_pcm_capture_ioctl1 0 33408 &ext4_meta_bg_first_block_no_33408 |
101261 | +ufs_getfrag_block_33409 ufs_getfrag_block 2 33409 NULL | 100395 | +ufs_getfrag_block_33409 ufs_getfrag_block 2 33409 NULL |
100396 | +dis_tap_write_33426 dis_tap_write 3 33426 NULL | ||
101262 | +ubh_scanc_33436 ubh_scanc 0-4-3 33436 NULL | 100397 | +ubh_scanc_33436 ubh_scanc 0-4-3 33436 NULL |
101263 | +ovs_vport_alloc_33475 ovs_vport_alloc 1 33475 NULL | 100398 | +ovs_vport_alloc_33475 ovs_vport_alloc 1 33475 NULL |
101264 | +create_entry_33479 create_entry 2 33479 NULL | 100399 | +create_entry_33479 create_entry 2 33479 NULL |
@@ -101320,11 +100455,13 @@ index 0000000..7982a0c | |||
101320 | +ppp_write_34034 ppp_write 3 34034 NULL | 100455 | +ppp_write_34034 ppp_write 3 34034 NULL |
101321 | +tty_insert_flip_string_34042 tty_insert_flip_string 3 34042 NULL | 100456 | +tty_insert_flip_string_34042 tty_insert_flip_string 3 34042 NULL |
101322 | +__domain_flush_pages_34045 __domain_flush_pages 2-3 34045 NULL | 100457 | +__domain_flush_pages_34045 __domain_flush_pages 2-3 34045 NULL |
100458 | +is_trap_at_addr_34047 is_trap_at_addr 2 34047 NULL | ||
101323 | +acpi_dev_get_irqresource_34064 acpi_dev_get_irqresource 2 34064 NULL | 100459 | +acpi_dev_get_irqresource_34064 acpi_dev_get_irqresource 2 34064 NULL |
101324 | +memcg_update_all_caches_34068 memcg_update_all_caches 1 34068 NULL | 100460 | +memcg_update_all_caches_34068 memcg_update_all_caches 1 34068 NULL |
101325 | +read_file_ant_diversity_34071 read_file_ant_diversity 3 34071 NULL | 100461 | +read_file_ant_diversity_34071 read_file_ant_diversity 3 34071 NULL |
101326 | +compat_hdio_ioctl_34088 compat_hdio_ioctl 4 34088 NULL | 100462 | +compat_hdio_ioctl_34088 compat_hdio_ioctl 4 34088 NULL |
101327 | +pipeline_pipeline_fifo_full_read_34095 pipeline_pipeline_fifo_full_read 3 34095 NULL | 100463 | +pipeline_pipeline_fifo_full_read_34095 pipeline_pipeline_fifo_full_read 3 34095 NULL |
100464 | +proc_scsi_host_write_34107 proc_scsi_host_write 3 34107 NULL | ||
101328 | +is_discarded_oblock_34120 is_discarded_oblock 2 34120 NULL | 100465 | +is_discarded_oblock_34120 is_discarded_oblock 2 34120 NULL |
101329 | +islpci_mgt_transmit_34133 islpci_mgt_transmit 5 34133 NULL | 100466 | +islpci_mgt_transmit_34133 islpci_mgt_transmit 5 34133 NULL |
101330 | +ttm_dma_page_pool_free_34135 ttm_dma_page_pool_free 2 34135 NULL | 100467 | +ttm_dma_page_pool_free_34135 ttm_dma_page_pool_free 2 34135 NULL |
@@ -101342,13 +100479,16 @@ index 0000000..7982a0c | |||
101342 | +crypto_ablkcipher_ivsize_34363 crypto_ablkcipher_ivsize 0 34363 NULL | 100479 | +crypto_ablkcipher_ivsize_34363 crypto_ablkcipher_ivsize 0 34363 NULL |
101343 | +rngapi_reset_34366 rngapi_reset 3 34366 NULL nohasharray | 100480 | +rngapi_reset_34366 rngapi_reset 3 34366 NULL nohasharray |
101344 | +p54_alloc_skb_34366 p54_alloc_skb 3 34366 &rngapi_reset_34366 | 100481 | +p54_alloc_skb_34366 p54_alloc_skb 3 34366 &rngapi_reset_34366 |
100482 | +i2c_hid_get_raw_report_34376 i2c_hid_get_raw_report 0 34376 NULL | ||
101345 | +reiserfs_resize_34377 reiserfs_resize 2 34377 NULL | 100483 | +reiserfs_resize_34377 reiserfs_resize 2 34377 NULL |
101346 | +ea_read_34378 ea_read 0 34378 NULL | 100484 | +ea_read_34378 ea_read 0 34378 NULL |
100485 | +fuse_send_read_34379 fuse_send_read 4 34379 NULL | ||
101347 | +av7110_vbi_write_34384 av7110_vbi_write 3 34384 NULL | 100486 | +av7110_vbi_write_34384 av7110_vbi_write 3 34384 NULL |
101348 | +usbvision_v4l2_read_34386 usbvision_v4l2_read 3 34386 NULL | 100487 | +usbvision_v4l2_read_34386 usbvision_v4l2_read 3 34386 NULL |
101349 | +read_rbu_image_type_34387 read_rbu_image_type 6 34387 NULL | 100488 | +read_rbu_image_type_34387 read_rbu_image_type 6 34387 NULL |
101350 | +iwl_calib_set_34400 iwl_calib_set 3 34400 NULL nohasharray | 100489 | +iwl_calib_set_34400 iwl_calib_set 3 34400 NULL nohasharray |
101351 | +ivtv_read_pos_34400 ivtv_read_pos 3 34400 &iwl_calib_set_34400 | 100490 | +ivtv_read_pos_34400 ivtv_read_pos 3 34400 &iwl_calib_set_34400 |
100491 | +wd_exp_mode_write_34407 wd_exp_mode_write 3 34407 NULL | ||
101352 | +nl80211_send_disassoc_34424 nl80211_send_disassoc 4 34424 NULL | 100492 | +nl80211_send_disassoc_34424 nl80211_send_disassoc 4 34424 NULL |
101353 | +usbtest_alloc_urb_34446 usbtest_alloc_urb 3-5 34446 NULL | 100493 | +usbtest_alloc_urb_34446 usbtest_alloc_urb 3-5 34446 NULL |
101354 | +mwifiex_regrdwr_read_34472 mwifiex_regrdwr_read 3 34472 NULL | 100494 | +mwifiex_regrdwr_read_34472 mwifiex_regrdwr_read 3 34472 NULL |
@@ -101377,6 +100517,7 @@ index 0000000..7982a0c | |||
101377 | +reg_w_ixbuf_34736 reg_w_ixbuf 4 34736 NULL | 100517 | +reg_w_ixbuf_34736 reg_w_ixbuf 4 34736 NULL |
101378 | +qib_cdev_init_34778 qib_cdev_init 1 34778 NULL | 100518 | +qib_cdev_init_34778 qib_cdev_init 1 34778 NULL |
101379 | +__copy_in_user_34790 __copy_in_user 3 34790 NULL | 100519 | +__copy_in_user_34790 __copy_in_user 3 34790 NULL |
100520 | +SYSC_keyctl_34800 SYSC_keyctl 4 34800 NULL | ||
101380 | +drbd_get_max_capacity_34804 drbd_get_max_capacity 0 34804 NULL | 100521 | +drbd_get_max_capacity_34804 drbd_get_max_capacity 0 34804 NULL |
101381 | +b43_debugfs_write_34838 b43_debugfs_write 3 34838 NULL | 100522 | +b43_debugfs_write_34838 b43_debugfs_write 3 34838 NULL |
101382 | +nl_portid_hash_zalloc_34843 nl_portid_hash_zalloc 1 34843 NULL | 100523 | +nl_portid_hash_zalloc_34843 nl_portid_hash_zalloc 1 34843 NULL |
@@ -101386,9 +100527,12 @@ index 0000000..7982a0c | |||
101386 | +msg_print_text_34889 msg_print_text 0 34889 NULL | 100527 | +msg_print_text_34889 msg_print_text 0 34889 NULL |
101387 | +ieee80211_if_write_34894 ieee80211_if_write 3 34894 NULL | 100528 | +ieee80211_if_write_34894 ieee80211_if_write 3 34894 NULL |
101388 | +compat_put_uint_34905 compat_put_uint 1 34905 NULL | 100529 | +compat_put_uint_34905 compat_put_uint 1 34905 NULL |
100530 | +si476x_radio_read_rsq_primary_blob_34916 si476x_radio_read_rsq_primary_blob 3 34916 NULL | ||
101389 | +__inode_permission_34925 __inode_permission 0 34925 NULL nohasharray | 100531 | +__inode_permission_34925 __inode_permission 0 34925 NULL nohasharray |
101390 | +btrfs_super_chunk_root_34925 btrfs_super_chunk_root 0 34925 &__inode_permission_34925 | 100532 | +btrfs_super_chunk_root_34925 btrfs_super_chunk_root 0 34925 &__inode_permission_34925 |
101391 | +skb_gro_header_slow_34958 skb_gro_header_slow 2 34958 NULL | 100533 | +ceph_aio_write_34930 ceph_aio_write 4 34930 NULL |
100534 | +skb_gro_header_slow_34958 skb_gro_header_slow 2 34958 NULL nohasharray | ||
100535 | +i2c_transfer_34958 i2c_transfer 0 34958 &skb_gro_header_slow_34958 | ||
101392 | +Realloc_34961 Realloc 2 34961 NULL | 100536 | +Realloc_34961 Realloc 2 34961 NULL |
101393 | +mq_lookup_34990 mq_lookup 2 34990 NULL | 100537 | +mq_lookup_34990 mq_lookup 2 34990 NULL |
101394 | +rx_rx_hdr_overflow_read_35002 rx_rx_hdr_overflow_read 3 35002 NULL | 100538 | +rx_rx_hdr_overflow_read_35002 rx_rx_hdr_overflow_read 3 35002 NULL |
@@ -101397,6 +100541,7 @@ index 0000000..7982a0c | |||
101397 | +sisusb_copy_memory_35016 sisusb_copy_memory 4 35016 NULL | 100541 | +sisusb_copy_memory_35016 sisusb_copy_memory 4 35016 NULL |
101398 | +alloc_p2m_page_35025 alloc_p2m_page 0 35025 NULL | 100542 | +alloc_p2m_page_35025 alloc_p2m_page 0 35025 NULL |
101399 | +coda_psdev_read_35029 coda_psdev_read 3 35029 NULL | 100543 | +coda_psdev_read_35029 coda_psdev_read 3 35029 NULL |
100544 | +brcmf_sdio_chip_writenvram_35042 brcmf_sdio_chip_writenvram 4 35042 NULL | ||
101400 | +btmrvl_gpiogap_write_35053 btmrvl_gpiogap_write 3 35053 NULL | 100545 | +btmrvl_gpiogap_write_35053 btmrvl_gpiogap_write 3 35053 NULL |
101401 | +pwr_connection_out_of_sync_read_35061 pwr_connection_out_of_sync_read 3 35061 NULL | 100546 | +pwr_connection_out_of_sync_read_35061 pwr_connection_out_of_sync_read 3 35061 NULL |
101402 | +store_ifalias_35088 store_ifalias 4 35088 NULL | 100547 | +store_ifalias_35088 store_ifalias 4 35088 NULL |
@@ -101408,6 +100553,7 @@ index 0000000..7982a0c | |||
101408 | +gntdev_alloc_map_35145 gntdev_alloc_map 2 35145 NULL | 100553 | +gntdev_alloc_map_35145 gntdev_alloc_map 2 35145 NULL |
101409 | +iscsi_conn_setup_35159 iscsi_conn_setup 2 35159 NULL | 100554 | +iscsi_conn_setup_35159 iscsi_conn_setup 2 35159 NULL |
101410 | +ieee80211_if_read_bssid_35161 ieee80211_if_read_bssid 3 35161 NULL | 100555 | +ieee80211_if_read_bssid_35161 ieee80211_if_read_bssid 3 35161 NULL |
100556 | +solo_v4l2_init_35179 solo_v4l2_init 2 35179 NULL | ||
101411 | +mlx4_ib_get_cq_umem_35184 mlx4_ib_get_cq_umem 5-6 35184 NULL | 100557 | +mlx4_ib_get_cq_umem_35184 mlx4_ib_get_cq_umem 5-6 35184 NULL |
101412 | +iwl_nvm_read_chunk_35198 iwl_nvm_read_chunk 0 35198 NULL | 100558 | +iwl_nvm_read_chunk_35198 iwl_nvm_read_chunk 0 35198 NULL |
101413 | +uprobe_get_swbp_addr_35201 uprobe_get_swbp_addr 0 35201 NULL | 100559 | +uprobe_get_swbp_addr_35201 uprobe_get_swbp_addr 0 35201 NULL |
@@ -101418,8 +100564,10 @@ index 0000000..7982a0c | |||
101418 | +rx_rx_cmplt_task_read_35226 rx_rx_cmplt_task_read 3 35226 NULL nohasharray | 100564 | +rx_rx_cmplt_task_read_35226 rx_rx_cmplt_task_read 3 35226 NULL nohasharray |
101419 | +video_register_device_no_warn_35226 video_register_device_no_warn 3 35226 &rx_rx_cmplt_task_read_35226 | 100565 | +video_register_device_no_warn_35226 video_register_device_no_warn 3 35226 &rx_rx_cmplt_task_read_35226 |
101420 | +gfn_to_page_many_atomic_35234 gfn_to_page_many_atomic 2 35234 NULL | 100566 | +gfn_to_page_many_atomic_35234 gfn_to_page_many_atomic 2 35234 NULL |
100567 | +SYSC_madvise_35241 SYSC_madvise 1 35241 NULL | ||
101421 | +set_fd_set_35249 set_fd_set 1 35249 NULL | 100568 | +set_fd_set_35249 set_fd_set 1 35249 NULL |
101422 | +ioapic_setup_resources_35255 ioapic_setup_resources 1 35255 NULL | 100569 | +ioapic_setup_resources_35255 ioapic_setup_resources 1 35255 NULL |
100570 | +dis_disc_write_35265 dis_disc_write 3 35265 NULL | ||
101423 | +dma_show_regs_35266 dma_show_regs 3 35266 NULL | 100571 | +dma_show_regs_35266 dma_show_regs 3 35266 NULL |
101424 | +irda_recvmsg_stream_35280 irda_recvmsg_stream 4 35280 NULL | 100572 | +irda_recvmsg_stream_35280 irda_recvmsg_stream 4 35280 NULL |
101425 | +i2o_block_end_request_35282 i2o_block_end_request 3 35282 NULL | 100573 | +i2o_block_end_request_35282 i2o_block_end_request 3 35282 NULL |
@@ -101435,6 +100583,7 @@ index 0000000..7982a0c | |||
101435 | +nouveau_devinit_create__35348 nouveau_devinit_create_ 4 35348 NULL | 100583 | +nouveau_devinit_create__35348 nouveau_devinit_create_ 4 35348 NULL |
101436 | +hpi_alloc_control_cache_35351 hpi_alloc_control_cache 1 35351 NULL | 100584 | +hpi_alloc_control_cache_35351 hpi_alloc_control_cache 1 35351 NULL |
101437 | +compat_filldir64_35354 compat_filldir64 3 35354 NULL | 100585 | +compat_filldir64_35354 compat_filldir64 3 35354 NULL |
100586 | +SyS_getxattr_35408 SyS_getxattr 4 35408 NULL | ||
101438 | +rawv6_send_hdrinc_35425 rawv6_send_hdrinc 3 35425 NULL | 100587 | +rawv6_send_hdrinc_35425 rawv6_send_hdrinc 3 35425 NULL |
101439 | +__set_test_and_free_35436 __set_test_and_free 2 35436 NULL | 100588 | +__set_test_and_free_35436 __set_test_and_free 2 35436 NULL |
101440 | +buffer_to_user_35439 buffer_to_user 3 35439 NULL | 100589 | +buffer_to_user_35439 buffer_to_user 3 35439 NULL |
@@ -101458,6 +100607,7 @@ index 0000000..7982a0c | |||
101458 | +rdmaltWithLock_35669 rdmaltWithLock 0 35669 NULL | 100607 | +rdmaltWithLock_35669 rdmaltWithLock 0 35669 NULL |
101459 | +compat_sys_kexec_load_35674 compat_sys_kexec_load 2 35674 NULL | 100608 | +compat_sys_kexec_load_35674 compat_sys_kexec_load 2 35674 NULL |
101460 | +dm_table_create_35687 dm_table_create 3 35687 NULL | 100609 | +dm_table_create_35687 dm_table_create 3 35687 NULL |
100610 | +SYSC_pwritev_35690 SYSC_pwritev 3 35690 NULL | ||
101461 | +rds_page_copy_user_35691 rds_page_copy_user 4 35691 NULL | 100611 | +rds_page_copy_user_35691 rds_page_copy_user 4 35691 NULL |
101462 | +pci_enable_sriov_35745 pci_enable_sriov 2 35745 NULL | 100612 | +pci_enable_sriov_35745 pci_enable_sriov 2 35745 NULL |
101463 | +iwl_dbgfs_disable_ht40_read_35761 iwl_dbgfs_disable_ht40_read 3 35761 NULL | 100613 | +iwl_dbgfs_disable_ht40_read_35761 iwl_dbgfs_disable_ht40_read 3 35761 NULL |
@@ -101469,6 +100619,7 @@ index 0000000..7982a0c | |||
101469 | +kvm_dirty_bitmap_bytes_35886 kvm_dirty_bitmap_bytes 0 35886 NULL | 100619 | +kvm_dirty_bitmap_bytes_35886 kvm_dirty_bitmap_bytes 0 35886 NULL |
101470 | +ieee80211_if_fmt_dot11MeshRetryTimeout_35890 ieee80211_if_fmt_dot11MeshRetryTimeout 3 35890 NULL | 100620 | +ieee80211_if_fmt_dot11MeshRetryTimeout_35890 ieee80211_if_fmt_dot11MeshRetryTimeout 3 35890 NULL |
101471 | +uwb_rc_cmd_done_35892 uwb_rc_cmd_done 4 35892 NULL | 100621 | +uwb_rc_cmd_done_35892 uwb_rc_cmd_done 4 35892 NULL |
100622 | +SyS_set_mempolicy_35909 SyS_set_mempolicy 3 35909 NULL | ||
101472 | +kernel_setsockopt_35913 kernel_setsockopt 5 35913 NULL | 100623 | +kernel_setsockopt_35913 kernel_setsockopt 5 35913 NULL |
101473 | +rbio_nr_pages_35916 rbio_nr_pages 0-1-2 35916 NULL | 100624 | +rbio_nr_pages_35916 rbio_nr_pages 0-1-2 35916 NULL |
101474 | +vol_cdev_compat_ioctl_35923 vol_cdev_compat_ioctl 3 35923 NULL | 100625 | +vol_cdev_compat_ioctl_35923 vol_cdev_compat_ioctl 3 35923 NULL |
@@ -101482,6 +100633,7 @@ index 0000000..7982a0c | |||
101482 | +koneplus_sysfs_write_35993 koneplus_sysfs_write 6 35993 NULL | 100633 | +koneplus_sysfs_write_35993 koneplus_sysfs_write 6 35993 NULL |
101483 | +il3945_ucode_tx_stats_read_36016 il3945_ucode_tx_stats_read 3 36016 NULL | 100634 | +il3945_ucode_tx_stats_read_36016 il3945_ucode_tx_stats_read 3 36016 NULL |
101484 | +ubi_eba_write_leb_36029 ubi_eba_write_leb 5-6 36029 NULL | 100635 | +ubi_eba_write_leb_36029 ubi_eba_write_leb 5-6 36029 NULL |
100636 | +__videobuf_alloc_36031 __videobuf_alloc 1 36031 NULL | ||
101485 | +account_shadowed_36048 account_shadowed 2 36048 NULL | 100637 | +account_shadowed_36048 account_shadowed 2 36048 NULL |
101486 | +gpio_power_read_36059 gpio_power_read 3 36059 NULL | 100638 | +gpio_power_read_36059 gpio_power_read 3 36059 NULL |
101487 | +write_emulate_36065 write_emulate 2-4 36065 NULL | 100639 | +write_emulate_36065 write_emulate 2-4 36065 NULL |
@@ -101501,12 +100653,16 @@ index 0000000..7982a0c | |||
101501 | +b1_alloc_card_36155 b1_alloc_card 1 36155 NULL | 100653 | +b1_alloc_card_36155 b1_alloc_card 1 36155 NULL |
101502 | +btrfs_file_extent_inline_len_36158 btrfs_file_extent_inline_len 0 36158 NULL | 100654 | +btrfs_file_extent_inline_len_36158 btrfs_file_extent_inline_len 0 36158 NULL |
101503 | +snd_korg1212_copy_from_36169 snd_korg1212_copy_from 6 36169 NULL | 100655 | +snd_korg1212_copy_from_36169 snd_korg1212_copy_from 6 36169 NULL |
100656 | +SyS_kexec_load_36176 SyS_kexec_load 2 36176 NULL | ||
100657 | +SYSC_sched_getaffinity_36208 SYSC_sched_getaffinity 2 36208 NULL | ||
100658 | +SYSC_process_vm_readv_36216 SYSC_process_vm_readv 3-5 36216 NULL | ||
101504 | +ubifs_read_nnode_36221 ubifs_read_nnode 0 36221 NULL | 100659 | +ubifs_read_nnode_36221 ubifs_read_nnode 0 36221 NULL |
101505 | +is_dirty_36223 is_dirty 2 36223 NULL | 100660 | +is_dirty_36223 is_dirty 2 36223 NULL |
101506 | +dma_alloc_attrs_36225 dma_alloc_attrs 0 36225 NULL | 100661 | +dma_alloc_attrs_36225 dma_alloc_attrs 0 36225 NULL |
101507 | +nfqnl_mangle_36226 nfqnl_mangle 4-2 36226 NULL | 100662 | +nfqnl_mangle_36226 nfqnl_mangle 4-2 36226 NULL |
101508 | +atomic_stats_read_36228 atomic_stats_read 3 36228 NULL | 100663 | +atomic_stats_read_36228 atomic_stats_read 3 36228 NULL |
101509 | +viafb_iga1_odev_proc_write_36241 viafb_iga1_odev_proc_write 3 36241 NULL | 100664 | +viafb_iga1_odev_proc_write_36241 viafb_iga1_odev_proc_write 3 36241 NULL |
100665 | +SYSC_getxattr_36242 SYSC_getxattr 4 36242 NULL | ||
101510 | +rproc_recovery_read_36245 rproc_recovery_read 3 36245 NULL | 100666 | +rproc_recovery_read_36245 rproc_recovery_read 3 36245 NULL |
101511 | +scrub_stripe_36248 scrub_stripe 5-4 36248 NULL | 100667 | +scrub_stripe_36248 scrub_stripe 5-4 36248 NULL |
101512 | +compat_sys_mbind_36256 compat_sys_mbind 5 36256 NULL | 100668 | +compat_sys_mbind_36256 compat_sys_mbind 5 36256 NULL |
@@ -101520,13 +100676,17 @@ index 0000000..7982a0c | |||
101520 | +fat_compat_ioctl_filldir_36328 fat_compat_ioctl_filldir 3 36328 NULL | 100676 | +fat_compat_ioctl_filldir_36328 fat_compat_ioctl_filldir 3 36328 NULL |
101521 | +lc_create_36332 lc_create 4 36332 NULL | 100677 | +lc_create_36332 lc_create 4 36332 NULL |
101522 | +jbd2_journal_init_revoke_table_36336 jbd2_journal_init_revoke_table 1 36336 NULL | 100678 | +jbd2_journal_init_revoke_table_36336 jbd2_journal_init_revoke_table 1 36336 NULL |
100679 | +isku_sysfs_read_key_mask_36343 isku_sysfs_read_key_mask 6 36343 NULL | ||
101523 | +v9fs_file_readn_36353 v9fs_file_readn 4 36353 NULL nohasharray | 100680 | +v9fs_file_readn_36353 v9fs_file_readn 4 36353 NULL nohasharray |
101524 | +xz_dec_lzma2_create_36353 xz_dec_lzma2_create 2 36353 &v9fs_file_readn_36353 | 100681 | +xz_dec_lzma2_create_36353 xz_dec_lzma2_create 2 36353 &v9fs_file_readn_36353 |
101525 | +to_sector_36361 to_sector 0-1 36361 NULL | 100682 | +to_sector_36361 to_sector 0-1 36361 NULL |
101526 | +tunables_read_36385 tunables_read 3 36385 NULL | 100683 | +tunables_read_36385 tunables_read 3 36385 NULL |
101527 | +afs_alloc_flat_call_36399 afs_alloc_flat_call 2-3 36399 NULL | 100684 | +afs_alloc_flat_call_36399 afs_alloc_flat_call 2-3 36399 NULL |
100685 | +SyS_sethostname_36417 SyS_sethostname 2 36417 NULL | ||
101528 | +sctp_tsnmap_init_36446 sctp_tsnmap_init 2 36446 NULL | 100686 | +sctp_tsnmap_init_36446 sctp_tsnmap_init 2 36446 NULL |
101529 | +alloc_etherdev_mqs_36450 alloc_etherdev_mqs 1 36450 NULL | 100687 | +alloc_etherdev_mqs_36450 alloc_etherdev_mqs 1 36450 NULL |
100688 | +tcf_csum_ipv6_udp_36457 tcf_csum_ipv6_udp 3 36457 NULL | ||
100689 | +SyS_process_vm_writev_36476 SyS_process_vm_writev 3-5 36476 NULL | ||
101530 | +b43_nphy_load_samples_36481 b43_nphy_load_samples 3 36481 NULL | 100690 | +b43_nphy_load_samples_36481 b43_nphy_load_samples 3 36481 NULL |
101531 | +tx_tx_checksum_result_read_36490 tx_tx_checksum_result_read 3 36490 NULL | 100691 | +tx_tx_checksum_result_read_36490 tx_tx_checksum_result_read 3 36490 NULL |
101532 | +__hwahc_op_set_ptk_36510 __hwahc_op_set_ptk 5 36510 NULL | 100692 | +__hwahc_op_set_ptk_36510 __hwahc_op_set_ptk 5 36510 NULL |
@@ -101549,10 +100709,12 @@ index 0000000..7982a0c | |||
101549 | +format_decode_36638 format_decode 0 36638 NULL | 100709 | +format_decode_36638 format_decode 0 36638 NULL |
101550 | +ced_ioctl_36647 ced_ioctl 2 36647 NULL | 100710 | +ced_ioctl_36647 ced_ioctl 2 36647 NULL |
101551 | +lpfc_idiag_extacc_alloc_get_36648 lpfc_idiag_extacc_alloc_get 0-3 36648 NULL | 100711 | +lpfc_idiag_extacc_alloc_get_36648 lpfc_idiag_extacc_alloc_get 0-3 36648 NULL |
100712 | +perf_calculate_period_36662 perf_calculate_period 3-2 36662 NULL | ||
101552 | +osd_req_list_collection_objects_36664 osd_req_list_collection_objects 5 36664 NULL | 100713 | +osd_req_list_collection_objects_36664 osd_req_list_collection_objects 5 36664 NULL |
101553 | +iscsi_host_alloc_36671 iscsi_host_alloc 2 36671 NULL | 100714 | +iscsi_host_alloc_36671 iscsi_host_alloc 2 36671 NULL |
101554 | +ptr_to_compat_36680 ptr_to_compat 0 36680 NULL | 100715 | +ptr_to_compat_36680 ptr_to_compat 0 36680 NULL |
101555 | +ext4_mb_discard_group_preallocations_36685 ext4_mb_discard_group_preallocations 2 36685 NULL | 100716 | +ext4_mb_discard_group_preallocations_36685 ext4_mb_discard_group_preallocations 2 36685 NULL |
100717 | +sched_clock_36717 sched_clock 0 36717 NULL | ||
101556 | +extract_icmp6_fields_36732 extract_icmp6_fields 2 36732 NULL | 100718 | +extract_icmp6_fields_36732 extract_icmp6_fields 2 36732 NULL |
101557 | +snd_rawmidi_kernel_read1_36740 snd_rawmidi_kernel_read1 4 36740 NULL | 100719 | +snd_rawmidi_kernel_read1_36740 snd_rawmidi_kernel_read1 4 36740 NULL |
101558 | +cxgbi_device_register_36746 cxgbi_device_register 1-2 36746 NULL | 100720 | +cxgbi_device_register_36746 cxgbi_device_register 1-2 36746 NULL |
@@ -101561,6 +100723,7 @@ index 0000000..7982a0c | |||
101561 | +ptp_filter_init_36780 ptp_filter_init 2 36780 NULL | 100723 | +ptp_filter_init_36780 ptp_filter_init 2 36780 NULL |
101562 | +proc_fault_inject_read_36802 proc_fault_inject_read 3 36802 NULL | 100724 | +proc_fault_inject_read_36802 proc_fault_inject_read 3 36802 NULL |
101563 | +hiddev_ioctl_36816 hiddev_ioctl 2 36816 NULL | 100725 | +hiddev_ioctl_36816 hiddev_ioctl 2 36816 NULL |
100726 | +tcf_csum_ipv6_tcp_36822 tcf_csum_ipv6_tcp 3 36822 NULL | ||
101564 | +int_hardware_entry_36833 int_hardware_entry 3 36833 NULL | 100727 | +int_hardware_entry_36833 int_hardware_entry 3 36833 NULL |
101565 | +fc_change_queue_depth_36841 fc_change_queue_depth 2 36841 NULL | 100728 | +fc_change_queue_depth_36841 fc_change_queue_depth 2 36841 NULL |
101566 | +keyctl_describe_key_36853 keyctl_describe_key 3 36853 NULL | 100729 | +keyctl_describe_key_36853 keyctl_describe_key 3 36853 NULL |
@@ -101582,6 +100745,7 @@ index 0000000..7982a0c | |||
101582 | +setxattr_37006 setxattr 4 37006 NULL | 100745 | +setxattr_37006 setxattr 4 37006 NULL |
101583 | +qp_broker_create_37053 qp_broker_create 6-5 37053 NULL nohasharray | 100746 | +qp_broker_create_37053 qp_broker_create 6-5 37053 NULL nohasharray |
101584 | +ieee80211_if_read_drop_unencrypted_37053 ieee80211_if_read_drop_unencrypted 3 37053 &qp_broker_create_37053 | 100747 | +ieee80211_if_read_drop_unencrypted_37053 ieee80211_if_read_drop_unencrypted 3 37053 &qp_broker_create_37053 |
100748 | +SYSC_setxattr_37078 SYSC_setxattr 4 37078 NULL | ||
101585 | +parse_command_37079 parse_command 2 37079 NULL | 100749 | +parse_command_37079 parse_command 2 37079 NULL |
101586 | +pipeline_cs_rx_packet_in_read_37089 pipeline_cs_rx_packet_in_read 3 37089 NULL | 100750 | +pipeline_cs_rx_packet_in_read_37089 pipeline_cs_rx_packet_in_read 3 37089 NULL |
101587 | +tun_get_user_37094 tun_get_user 5 37094 NULL | 100751 | +tun_get_user_37094 tun_get_user 5 37094 NULL |
@@ -101599,6 +100763,7 @@ index 0000000..7982a0c | |||
101599 | +nested_svm_map_37268 nested_svm_map 2 37268 NULL | 100763 | +nested_svm_map_37268 nested_svm_map 2 37268 NULL |
101600 | +c101_run_37279 c101_run 2 37279 NULL | 100764 | +c101_run_37279 c101_run 2 37279 NULL |
101601 | +srp_target_alloc_37288 srp_target_alloc 3 37288 NULL | 100765 | +srp_target_alloc_37288 srp_target_alloc 3 37288 NULL |
100766 | +isku_sysfs_write_talkfx_37298 isku_sysfs_write_talkfx 6 37298 NULL | ||
101602 | +ieee80211_if_read_power_mode_37305 ieee80211_if_read_power_mode 3 37305 NULL | 100767 | +ieee80211_if_read_power_mode_37305 ieee80211_if_read_power_mode 3 37305 NULL |
101603 | +jffs2_write_dirent_37311 jffs2_write_dirent 5 37311 NULL | 100768 | +jffs2_write_dirent_37311 jffs2_write_dirent 5 37311 NULL |
101604 | +send_msg_37323 send_msg 4 37323 NULL | 100769 | +send_msg_37323 send_msg 4 37323 NULL |
@@ -101614,6 +100779,7 @@ index 0000000..7982a0c | |||
101614 | +find_next_bit_37422 find_next_bit 0-2-3 37422 &acpi_os_allocate_zeroed_37422 | 100779 | +find_next_bit_37422 find_next_bit 0-2-3 37422 &acpi_os_allocate_zeroed_37422 |
101615 | +tty_insert_flip_string_fixed_flag_37428 tty_insert_flip_string_fixed_flag 4 37428 NULL | 100780 | +tty_insert_flip_string_fixed_flag_37428 tty_insert_flip_string_fixed_flag 4 37428 NULL |
101616 | +iwl_print_last_event_logs_37433 iwl_print_last_event_logs 0-7-9 37433 NULL | 100781 | +iwl_print_last_event_logs_37433 iwl_print_last_event_logs 0-7-9 37433 NULL |
100782 | +tty_audit_log_37440 tty_audit_log 5 37440 NULL | ||
101617 | +tcp_established_options_37450 tcp_established_options 0 37450 NULL | 100783 | +tcp_established_options_37450 tcp_established_options 0 37450 NULL |
101618 | +brcmf_sdio_dump_console_37455 brcmf_sdio_dump_console 4 37455 NULL | 100784 | +brcmf_sdio_dump_console_37455 brcmf_sdio_dump_console 4 37455 NULL |
101619 | +__remove_37457 __remove 2 37457 NULL | 100785 | +__remove_37457 __remove 2 37457 NULL |
@@ -101630,12 +100796,15 @@ index 0000000..7982a0c | |||
101630 | +xhci_alloc_streams_37586 xhci_alloc_streams 5 37586 NULL | 100796 | +xhci_alloc_streams_37586 xhci_alloc_streams 5 37586 NULL |
101631 | +mlx4_get_mgm_entry_size_37607 mlx4_get_mgm_entry_size 0 37607 NULL | 100797 | +mlx4_get_mgm_entry_size_37607 mlx4_get_mgm_entry_size 0 37607 NULL |
101632 | +kvm_read_guest_page_mmu_37611 kvm_read_guest_page_mmu 6-3 37611 NULL | 100798 | +kvm_read_guest_page_mmu_37611 kvm_read_guest_page_mmu 6-3 37611 NULL |
101633 | +policy_residency_37629 policy_residency 0 37629 NULL | 100799 | +SYSC_mbind_37622 SYSC_mbind 5 37622 NULL |
100800 | +btrfs_calc_trans_metadata_size_37629 btrfs_calc_trans_metadata_size 0-2 37629 NULL nohasharray | ||
100801 | +policy_residency_37629 policy_residency 0 37629 &btrfs_calc_trans_metadata_size_37629 | ||
101634 | +check_pt_base_37635 check_pt_base 3 37635 NULL | 100802 | +check_pt_base_37635 check_pt_base 3 37635 NULL |
101635 | +alloc_fd_37637 alloc_fd 1 37637 NULL | 100803 | +alloc_fd_37637 alloc_fd 1 37637 NULL |
101636 | +bio_copy_user_iov_37660 bio_copy_user_iov 4 37660 NULL | 100804 | +bio_copy_user_iov_37660 bio_copy_user_iov 4 37660 NULL |
101637 | +rfcomm_sock_sendmsg_37661 rfcomm_sock_sendmsg 4 37661 NULL nohasharray | 100805 | +rfcomm_sock_sendmsg_37661 rfcomm_sock_sendmsg 4 37661 NULL nohasharray |
101638 | +vmw_framebuffer_dmabuf_dirty_37661 vmw_framebuffer_dmabuf_dirty 6 37661 &rfcomm_sock_sendmsg_37661 | 100806 | +vmw_framebuffer_dmabuf_dirty_37661 vmw_framebuffer_dmabuf_dirty 6 37661 &rfcomm_sock_sendmsg_37661 |
100807 | +SYSC_get_mempolicy_37664 SYSC_get_mempolicy 4-3 37664 NULL | ||
101639 | +lnw_gpio_to_irq_37665 lnw_gpio_to_irq 2 37665 NULL | 100808 | +lnw_gpio_to_irq_37665 lnw_gpio_to_irq 2 37665 NULL |
101640 | +ieee80211_if_read_rc_rateidx_mcs_mask_2ghz_37675 ieee80211_if_read_rc_rateidx_mcs_mask_2ghz 3 37675 NULL | 100809 | +ieee80211_if_read_rc_rateidx_mcs_mask_2ghz_37675 ieee80211_if_read_rc_rateidx_mcs_mask_2ghz 3 37675 NULL |
101641 | +regmap_map_read_file_37685 regmap_map_read_file 3 37685 NULL | 100810 | +regmap_map_read_file_37685 regmap_map_read_file 3 37685 NULL |
@@ -101655,7 +100824,8 @@ index 0000000..7982a0c | |||
101655 | +rx_decrypt_key_not_found_read_37820 rx_decrypt_key_not_found_read 3 37820 NULL | 100824 | +rx_decrypt_key_not_found_read_37820 rx_decrypt_key_not_found_read 3 37820 NULL |
101656 | +bitmap_find_next_zero_area_37827 bitmap_find_next_zero_area 2-3-5-4 37827 NULL | 100825 | +bitmap_find_next_zero_area_37827 bitmap_find_next_zero_area 2-3-5-4 37827 NULL |
101657 | +o2hb_debug_read_37851 o2hb_debug_read 3 37851 NULL | 100826 | +o2hb_debug_read_37851 o2hb_debug_read 3 37851 NULL |
101658 | +xfs_dir2_block_to_sf_37868 xfs_dir2_block_to_sf 3 37868 NULL | 100827 | +isku_sysfs_write_last_set_37868 isku_sysfs_write_last_set 6 37868 NULL nohasharray |
100828 | +xfs_dir2_block_to_sf_37868 xfs_dir2_block_to_sf 3 37868 &isku_sysfs_write_last_set_37868 | ||
101659 | +sys_setxattr_37880 sys_setxattr 4 37880 NULL | 100829 | +sys_setxattr_37880 sys_setxattr 4 37880 NULL |
101660 | +dvb_net_sec_37884 dvb_net_sec 3 37884 NULL | 100830 | +dvb_net_sec_37884 dvb_net_sec 3 37884 NULL |
101661 | +max77686_irq_domain_map_37897 max77686_irq_domain_map 2 37897 NULL | 100831 | +max77686_irq_domain_map_37897 max77686_irq_domain_map 2 37897 NULL |
@@ -101671,12 +100841,14 @@ index 0000000..7982a0c | |||
101671 | +aggr_recv_addba_req_evt_38037 aggr_recv_addba_req_evt 4 38037 NULL | 100841 | +aggr_recv_addba_req_evt_38037 aggr_recv_addba_req_evt 4 38037 NULL |
101672 | +klsi_105_prepare_write_buffer_38044 klsi_105_prepare_write_buffer 3 38044 NULL nohasharray | 100842 | +klsi_105_prepare_write_buffer_38044 klsi_105_prepare_write_buffer 3 38044 NULL nohasharray |
101673 | +il_dbgfs_chain_noise_read_38044 il_dbgfs_chain_noise_read 3 38044 &klsi_105_prepare_write_buffer_38044 | 100843 | +il_dbgfs_chain_noise_read_38044 il_dbgfs_chain_noise_read 3 38044 &klsi_105_prepare_write_buffer_38044 |
100844 | +SyS_llistxattr_38048 SyS_llistxattr 3 38048 NULL | ||
101674 | +_xfs_buf_alloc_38058 _xfs_buf_alloc 3 38058 NULL nohasharray | 100845 | +_xfs_buf_alloc_38058 _xfs_buf_alloc 3 38058 NULL nohasharray |
101675 | +is_discarded_38058 is_discarded 2 38058 &_xfs_buf_alloc_38058 | 100846 | +is_discarded_38058 is_discarded 2 38058 &_xfs_buf_alloc_38058 |
101676 | +nsm_create_handle_38060 nsm_create_handle 4 38060 NULL | 100847 | +nsm_create_handle_38060 nsm_create_handle 4 38060 NULL |
101677 | +alloc_ltalkdev_38071 alloc_ltalkdev 1 38071 NULL | 100848 | +alloc_ltalkdev_38071 alloc_ltalkdev 1 38071 NULL |
101678 | +xfs_buf_readahead_map_38081 xfs_buf_readahead_map 3 38081 NULL | 100849 | +xfs_buf_readahead_map_38081 xfs_buf_readahead_map 3 38081 NULL |
101679 | +uwb_mac_addr_print_38085 uwb_mac_addr_print 2 38085 NULL | 100850 | +uwb_mac_addr_print_38085 uwb_mac_addr_print 2 38085 NULL |
100851 | +tcf_csum_ipv4_udp_38089 tcf_csum_ipv4_udp 3 38089 NULL | ||
101680 | +request_key_auth_new_38092 request_key_auth_new 3 38092 NULL | 100852 | +request_key_auth_new_38092 request_key_auth_new 3 38092 NULL |
101681 | +proc_self_readlink_38094 proc_self_readlink 3 38094 NULL | 100853 | +proc_self_readlink_38094 proc_self_readlink 3 38094 NULL |
101682 | +ep0_read_38095 ep0_read 3 38095 NULL | 100854 | +ep0_read_38095 ep0_read 3 38095 NULL |
@@ -101699,7 +100871,8 @@ index 0000000..7982a0c | |||
101699 | +from_dblock_38256 from_dblock 0-1 38256 NULL | 100871 | +from_dblock_38256 from_dblock 0-1 38256 NULL |
101700 | +vmci_qp_broker_set_page_store_38260 vmci_qp_broker_set_page_store 2-3 38260 NULL | 100872 | +vmci_qp_broker_set_page_store_38260 vmci_qp_broker_set_page_store 2-3 38260 NULL |
101701 | +ieee80211_if_read_auto_open_plinks_38268 ieee80211_if_read_auto_open_plinks 3 38268 NULL nohasharray | 100873 | +ieee80211_if_read_auto_open_plinks_38268 ieee80211_if_read_auto_open_plinks 3 38268 NULL nohasharray |
101702 | +mthca_alloc_icm_table_38268 mthca_alloc_icm_table 4-3 38268 &ieee80211_if_read_auto_open_plinks_38268 | 100874 | +SYSC_msgrcv_38268 SYSC_msgrcv 3 38268 &ieee80211_if_read_auto_open_plinks_38268 nohasharray |
100875 | +mthca_alloc_icm_table_38268 mthca_alloc_icm_table 4-3 38268 &SYSC_msgrcv_38268 | ||
101703 | +xfs_bmbt_to_bmdr_38275 xfs_bmbt_to_bmdr 3 38275 NULL nohasharray | 100876 | +xfs_bmbt_to_bmdr_38275 xfs_bmbt_to_bmdr 3 38275 NULL nohasharray |
101704 | +xfs_bmdr_to_bmbt_38275 xfs_bmdr_to_bmbt 5 38275 &xfs_bmbt_to_bmdr_38275 | 100877 | +xfs_bmdr_to_bmbt_38275 xfs_bmdr_to_bmbt 5 38275 &xfs_bmbt_to_bmdr_38275 |
101705 | +ftdi_process_packet_38281 ftdi_process_packet 4 38281 NULL nohasharray | 100878 | +ftdi_process_packet_38281 ftdi_process_packet 4 38281 NULL nohasharray |
@@ -101722,6 +100895,7 @@ index 0000000..7982a0c | |||
101722 | +i915_min_freq_read_38470 i915_min_freq_read 3 38470 NULL | 100895 | +i915_min_freq_read_38470 i915_min_freq_read 3 38470 NULL |
101723 | +kvm_arch_setup_async_pf_38481 kvm_arch_setup_async_pf 3 38481 NULL | 100896 | +kvm_arch_setup_async_pf_38481 kvm_arch_setup_async_pf 3 38481 NULL |
101724 | +blk_end_bidi_request_38482 blk_end_bidi_request 3-4 38482 NULL | 100897 | +blk_end_bidi_request_38482 blk_end_bidi_request 3-4 38482 NULL |
100898 | +cpu_to_mem_38501 cpu_to_mem 0 38501 NULL | ||
101725 | +dev_names_read_38509 dev_names_read 3 38509 NULL | 100899 | +dev_names_read_38509 dev_names_read 3 38509 NULL |
101726 | +iscsi_create_iface_38510 iscsi_create_iface 5 38510 NULL | 100900 | +iscsi_create_iface_38510 iscsi_create_iface 5 38510 NULL |
101727 | +event_rx_mismatch_read_38518 event_rx_mismatch_read 3 38518 NULL | 100901 | +event_rx_mismatch_read_38518 event_rx_mismatch_read 3 38518 NULL |
@@ -101729,6 +100903,7 @@ index 0000000..7982a0c | |||
101729 | +mlx4_ib_db_map_user_38529 mlx4_ib_db_map_user 2 38529 NULL | 100903 | +mlx4_ib_db_map_user_38529 mlx4_ib_db_map_user 2 38529 NULL |
101730 | +ubifs_idx_node_sz_38546 ubifs_idx_node_sz 0-2 38546 NULL | 100904 | +ubifs_idx_node_sz_38546 ubifs_idx_node_sz 0-2 38546 NULL |
101731 | +btrfs_discard_extent_38547 btrfs_discard_extent 2 38547 NULL | 100905 | +btrfs_discard_extent_38547 btrfs_discard_extent 2 38547 NULL |
100906 | +cpu_to_node_38561 cpu_to_node 0 38561 NULL | ||
101732 | +irda_sendmsg_dgram_38563 irda_sendmsg_dgram 4 38563 NULL | 100907 | +irda_sendmsg_dgram_38563 irda_sendmsg_dgram 4 38563 NULL |
101733 | +il4965_rs_sta_dbgfs_scale_table_read_38564 il4965_rs_sta_dbgfs_scale_table_read 3 38564 NULL | 100908 | +il4965_rs_sta_dbgfs_scale_table_read_38564 il4965_rs_sta_dbgfs_scale_table_read 3 38564 NULL |
101734 | +_ipw_read32_38565 _ipw_read32 0 38565 NULL | 100909 | +_ipw_read32_38565 _ipw_read32 0 38565 NULL |
@@ -101743,6 +100918,7 @@ index 0000000..7982a0c | |||
101743 | +qp_broker_alloc_38646 qp_broker_alloc 5-6 38646 NULL | 100918 | +qp_broker_alloc_38646 qp_broker_alloc 5-6 38646 NULL |
101744 | +mmc_send_cxd_data_38655 mmc_send_cxd_data 5 38655 NULL | 100919 | +mmc_send_cxd_data_38655 mmc_send_cxd_data 5 38655 NULL |
101745 | +nouveau_instmem_create__38664 nouveau_instmem_create_ 4 38664 NULL | 100920 | +nouveau_instmem_create__38664 nouveau_instmem_create_ 4 38664 NULL |
100921 | +skb_tnl_header_len_38669 skb_tnl_header_len 0 38669 NULL | ||
101746 | +cfg80211_send_disassoc_38678 cfg80211_send_disassoc 3 38678 NULL | 100922 | +cfg80211_send_disassoc_38678 cfg80211_send_disassoc 3 38678 NULL |
101747 | +iscsit_dump_data_payload_38683 iscsit_dump_data_payload 2 38683 NULL | 100923 | +iscsit_dump_data_payload_38683 iscsit_dump_data_payload 2 38683 NULL |
101748 | +ext4_wait_block_bitmap_38695 ext4_wait_block_bitmap 2 38695 NULL | 100924 | +ext4_wait_block_bitmap_38695 ext4_wait_block_bitmap 2 38695 NULL |
@@ -101768,7 +100944,8 @@ index 0000000..7982a0c | |||
101768 | +ext3_trim_all_free_38929 ext3_trim_all_free 3-4-2 38929 NULL | 100944 | +ext3_trim_all_free_38929 ext3_trim_all_free 3-4-2 38929 NULL |
101769 | +sbp_count_se_tpg_luns_38943 sbp_count_se_tpg_luns 0 38943 NULL | 100945 | +sbp_count_se_tpg_luns_38943 sbp_count_se_tpg_luns 0 38943 NULL |
101770 | +__ath6kl_wmi_send_mgmt_cmd_38971 __ath6kl_wmi_send_mgmt_cmd 7 38971 NULL | 100946 | +__ath6kl_wmi_send_mgmt_cmd_38971 __ath6kl_wmi_send_mgmt_cmd 7 38971 NULL |
101771 | +usb_maxpacket_38977 usb_maxpacket 0 38977 NULL | 100947 | +C_SYSC_preadv64_38977 C_SYSC_preadv64 3 38977 NULL nohasharray |
100948 | +usb_maxpacket_38977 usb_maxpacket 0 38977 &C_SYSC_preadv64_38977 | ||
101772 | +OSDSetBlock_38986 OSDSetBlock 4-2 38986 NULL | 100949 | +OSDSetBlock_38986 OSDSetBlock 4-2 38986 NULL |
101773 | +udf_new_block_38999 udf_new_block 4 38999 NULL | 100950 | +udf_new_block_38999 udf_new_block 4 38999 NULL |
101774 | +get_nodes_39012 get_nodes 3 39012 NULL | 100951 | +get_nodes_39012 get_nodes 3 39012 NULL |
@@ -101814,6 +100991,7 @@ index 0000000..7982a0c | |||
101814 | +user_power_read_39414 user_power_read 3 39414 NULL | 100991 | +user_power_read_39414 user_power_read 3 39414 NULL |
101815 | +alloc_agpphysmem_i8xx_39427 alloc_agpphysmem_i8xx 1 39427 NULL | 100992 | +alloc_agpphysmem_i8xx_39427 alloc_agpphysmem_i8xx 1 39427 NULL |
101816 | +sys_semop_39457 sys_semop 3 39457 NULL | 100993 | +sys_semop_39457 sys_semop 3 39457 NULL |
100994 | +ptrace_peek_siginfo_39458 ptrace_peek_siginfo 3 39458 NULL | ||
101817 | +setkey_unaligned_39474 setkey_unaligned 3 39474 NULL | 100995 | +setkey_unaligned_39474 setkey_unaligned 3 39474 NULL |
101818 | +do_get_mempolicy_39485 do_get_mempolicy 3 39485 NULL | 100996 | +do_get_mempolicy_39485 do_get_mempolicy 3 39485 NULL |
101819 | +ieee80211_if_fmt_dot11MeshHWMPmaxPREQretries_39499 ieee80211_if_fmt_dot11MeshHWMPmaxPREQretries 3 39499 NULL | 100997 | +ieee80211_if_fmt_dot11MeshHWMPmaxPREQretries_39499 ieee80211_if_fmt_dot11MeshHWMPmaxPREQretries 3 39499 NULL |
@@ -101860,11 +101038,13 @@ index 0000000..7982a0c | |||
101860 | +fwnet_pd_new_39947 fwnet_pd_new 4 39947 &error_error_frame_read_39947 | 101038 | +fwnet_pd_new_39947 fwnet_pd_new 4 39947 &error_error_frame_read_39947 |
101861 | +tty_prepare_flip_string_39955 tty_prepare_flip_string 3 39955 NULL | 101039 | +tty_prepare_flip_string_39955 tty_prepare_flip_string 3 39955 NULL |
101862 | +dma_push_rx_39973 dma_push_rx 2 39973 NULL | 101040 | +dma_push_rx_39973 dma_push_rx 2 39973 NULL |
101041 | +vfio_pci_read_39975 vfio_pci_read 3 39975 NULL | ||
101863 | +broadsheetfb_write_39976 broadsheetfb_write 3 39976 NULL | 101042 | +broadsheetfb_write_39976 broadsheetfb_write 3 39976 NULL |
101864 | +mthca_array_init_39987 mthca_array_init 2 39987 NULL | 101043 | +mthca_array_init_39987 mthca_array_init 2 39987 NULL |
101865 | +xen_hvm_config_40018 xen_hvm_config 2 40018 NULL | 101044 | +xen_hvm_config_40018 xen_hvm_config 2 40018 NULL |
101866 | +nf_nat_icmpv6_reply_translation_40023 nf_nat_icmpv6_reply_translation 5 40023 NULL nohasharray | 101045 | +nf_nat_icmpv6_reply_translation_40023 nf_nat_icmpv6_reply_translation 5 40023 NULL nohasharray |
101867 | +ivtvfb_write_40023 ivtvfb_write 3 40023 &nf_nat_icmpv6_reply_translation_40023 | 101046 | +ivtvfb_write_40023 ivtvfb_write 3 40023 &nf_nat_icmpv6_reply_translation_40023 |
101047 | +disc_pwup_write_40027 disc_pwup_write 3 40027 NULL | ||
101868 | +ea_foreach_i_40028 ea_foreach_i 0 40028 NULL | 101048 | +ea_foreach_i_40028 ea_foreach_i 0 40028 NULL |
101869 | +datablob_hmac_append_40038 datablob_hmac_append 3 40038 NULL | 101049 | +datablob_hmac_append_40038 datablob_hmac_append 3 40038 NULL |
101870 | +regmap_add_irq_chip_40042 regmap_add_irq_chip 4 40042 NULL | 101050 | +regmap_add_irq_chip_40042 regmap_add_irq_chip 4 40042 NULL |
@@ -101873,6 +101053,7 @@ index 0000000..7982a0c | |||
101873 | +atomic_xchg_40070 atomic_xchg 0 40070 NULL | 101053 | +atomic_xchg_40070 atomic_xchg 0 40070 NULL |
101874 | +gen_pool_first_fit_40110 gen_pool_first_fit 2-3-4 40110 NULL | 101054 | +gen_pool_first_fit_40110 gen_pool_first_fit 2-3-4 40110 NULL |
101875 | +sctp_setsockopt_delayed_ack_40129 sctp_setsockopt_delayed_ack 3 40129 NULL | 101055 | +sctp_setsockopt_delayed_ack_40129 sctp_setsockopt_delayed_ack 3 40129 NULL |
101056 | +dwc2_max_desc_num_40132 dwc2_max_desc_num 0 40132 NULL | ||
101876 | +rx_rx_frame_checksum_read_40140 rx_rx_frame_checksum_read 3 40140 NULL | 101057 | +rx_rx_frame_checksum_read_40140 rx_rx_frame_checksum_read 3 40140 NULL |
101877 | +iwch_alloc_fastreg_pbl_40153 iwch_alloc_fastreg_pbl 2 40153 NULL | 101058 | +iwch_alloc_fastreg_pbl_40153 iwch_alloc_fastreg_pbl 2 40153 NULL |
101878 | +pt_write_40159 pt_write 3 40159 NULL | 101059 | +pt_write_40159 pt_write 3 40159 NULL |
@@ -101889,6 +101070,7 @@ index 0000000..7982a0c | |||
101889 | +rs_sta_dbgfs_scale_table_read_40262 rs_sta_dbgfs_scale_table_read 3 40262 NULL | 101070 | +rs_sta_dbgfs_scale_table_read_40262 rs_sta_dbgfs_scale_table_read 3 40262 NULL |
101890 | +usbnet_read_cmd_40275 usbnet_read_cmd 7 40275 NULL | 101071 | +usbnet_read_cmd_40275 usbnet_read_cmd 7 40275 NULL |
101891 | +rx_xfr_hint_trig_read_40283 rx_xfr_hint_trig_read 3 40283 NULL | 101072 | +rx_xfr_hint_trig_read_40283 rx_xfr_hint_trig_read 3 40283 NULL |
101073 | +_calc_trunk_info_40291 _calc_trunk_info 2 40291 NULL | ||
101892 | +crash_free_reserved_phys_range_40292 crash_free_reserved_phys_range 1 40292 NULL | 101074 | +crash_free_reserved_phys_range_40292 crash_free_reserved_phys_range 1 40292 NULL |
101893 | +ubi_io_write_data_40305 ubi_io_write_data 4-5 40305 NULL | 101075 | +ubi_io_write_data_40305 ubi_io_write_data 4-5 40305 NULL |
101894 | +batadv_tt_changes_fill_buff_40323 batadv_tt_changes_fill_buff 4 40323 NULL | 101076 | +batadv_tt_changes_fill_buff_40323 batadv_tt_changes_fill_buff 4 40323 NULL |
@@ -101913,6 +101095,8 @@ index 0000000..7982a0c | |||
101913 | +ima_write_policy_40548 ima_write_policy 3 40548 NULL | 101095 | +ima_write_policy_40548 ima_write_policy 3 40548 NULL |
101914 | +esp_alloc_tmp_40558 esp_alloc_tmp 3-2 40558 NULL | 101096 | +esp_alloc_tmp_40558 esp_alloc_tmp 3-2 40558 NULL |
101915 | +ufs_inode_getfrag_40560 ufs_inode_getfrag 2-4 40560 NULL | 101097 | +ufs_inode_getfrag_40560 ufs_inode_getfrag 2-4 40560 NULL |
101098 | +bdev_sectors_40564 bdev_sectors 0 40564 NULL | ||
101099 | +lba_to_map_index_40580 lba_to_map_index 0-1 40580 NULL | ||
101916 | +skge_rx_get_40598 skge_rx_get 3 40598 NULL | 101100 | +skge_rx_get_40598 skge_rx_get 3 40598 NULL |
101917 | +get_priv_descr_and_size_40612 get_priv_descr_and_size 0 40612 NULL | 101101 | +get_priv_descr_and_size_40612 get_priv_descr_and_size 0 40612 NULL |
101918 | +bl_mark_sectors_init_40613 bl_mark_sectors_init 2-3 40613 NULL | 101102 | +bl_mark_sectors_init_40613 bl_mark_sectors_init 2-3 40613 NULL |
@@ -101924,6 +101108,7 @@ index 0000000..7982a0c | |||
101924 | +alloc_rbio_40676 alloc_rbio 4 40676 NULL | 101108 | +alloc_rbio_40676 alloc_rbio 4 40676 NULL |
101925 | +videobuf_dma_init_user_locked_40678 videobuf_dma_init_user_locked 3 40678 NULL | 101109 | +videobuf_dma_init_user_locked_40678 videobuf_dma_init_user_locked 3 40678 NULL |
101926 | +nfc_hci_set_param_40697 nfc_hci_set_param 5 40697 NULL | 101110 | +nfc_hci_set_param_40697 nfc_hci_set_param 5 40697 NULL |
101111 | +vfio_pci_config_rw_40698 vfio_pci_config_rw 3 40698 NULL | ||
101927 | +__seq_open_private_40715 __seq_open_private 3 40715 NULL | 101112 | +__seq_open_private_40715 __seq_open_private 3 40715 NULL |
101928 | +fuse_readpages_40737 fuse_readpages 4 40737 NULL | 101113 | +fuse_readpages_40737 fuse_readpages 4 40737 NULL |
101929 | +xfs_iext_remove_direct_40744 xfs_iext_remove_direct 3 40744 NULL nohasharray | 101114 | +xfs_iext_remove_direct_40744 xfs_iext_remove_direct 3 40744 NULL nohasharray |
@@ -101934,12 +101119,15 @@ index 0000000..7982a0c | |||
101934 | +ad1889_readl_40765 ad1889_readl 0 40765 NULL | 101119 | +ad1889_readl_40765 ad1889_readl 0 40765 NULL |
101935 | +pg_write_40766 pg_write 3 40766 NULL | 101120 | +pg_write_40766 pg_write 3 40766 NULL |
101936 | +show_list_40775 show_list 3 40775 NULL | 101121 | +show_list_40775 show_list 3 40775 NULL |
101122 | +calcu_metadata_size_40782 calcu_metadata_size 0 40782 NULL | ||
101937 | +kfifo_out_copy_r_40784 kfifo_out_copy_r 0-3 40784 NULL | 101123 | +kfifo_out_copy_r_40784 kfifo_out_copy_r 0-3 40784 NULL |
101938 | +bitmap_weight_40791 bitmap_weight 0-2 40791 NULL | 101124 | +bitmap_weight_40791 bitmap_weight 0-2 40791 NULL |
101939 | +pyra_sysfs_read_40795 pyra_sysfs_read 6 40795 NULL | 101125 | +pyra_sysfs_read_40795 pyra_sysfs_read 6 40795 NULL |
101940 | +netdev_alloc_skb_ip_align_40811 netdev_alloc_skb_ip_align 2 40811 NULL | 101126 | +netdev_alloc_skb_ip_align_40811 netdev_alloc_skb_ip_align 2 40811 NULL |
101941 | +nl80211_send_roamed_40825 nl80211_send_roamed 5-7 40825 NULL | 101127 | +nl80211_send_roamed_40825 nl80211_send_roamed 5-7 40825 NULL |
101128 | +SyS_mbind_40828 SyS_mbind 5 40828 NULL | ||
101942 | +__mlx4_qp_reserve_range_40847 __mlx4_qp_reserve_range 2-3 40847 NULL | 101129 | +__mlx4_qp_reserve_range_40847 __mlx4_qp_reserve_range 2-3 40847 NULL |
101130 | +isku_sysfs_write_keys_thumbster_40851 isku_sysfs_write_keys_thumbster 6 40851 NULL | ||
101943 | +ocfs2_zero_partial_clusters_40856 ocfs2_zero_partial_clusters 2-3 40856 NULL | 101131 | +ocfs2_zero_partial_clusters_40856 ocfs2_zero_partial_clusters 2-3 40856 NULL |
101944 | +v9fs_file_read_40858 v9fs_file_read 3 40858 NULL | 101132 | +v9fs_file_read_40858 v9fs_file_read 3 40858 NULL |
101945 | +read_file_queue_40895 read_file_queue 3 40895 NULL | 101133 | +read_file_queue_40895 read_file_queue 3 40895 NULL |
@@ -101977,8 +101165,10 @@ index 0000000..7982a0c | |||
101977 | +hiddev_compat_ioctl_41255 hiddev_compat_ioctl 2-3 41255 NULL | 101165 | +hiddev_compat_ioctl_41255 hiddev_compat_ioctl 2-3 41255 NULL |
101978 | +erst_read_41260 erst_read 0 41260 NULL | 101166 | +erst_read_41260 erst_read 0 41260 NULL |
101979 | +__fprog_create_41263 __fprog_create 2 41263 NULL | 101167 | +__fprog_create_41263 __fprog_create 2 41263 NULL |
101168 | +setup_cluster_bitmap_41270 setup_cluster_bitmap 4 41270 NULL | ||
101980 | +alloc_context_41283 alloc_context 1 41283 NULL | 101169 | +alloc_context_41283 alloc_context 1 41283 NULL |
101981 | +arch_gnttab_map_shared_41306 arch_gnttab_map_shared 3 41306 NULL | 101170 | +arch_gnttab_map_shared_41306 arch_gnttab_map_shared 3 41306 NULL |
101171 | +objio_alloc_io_state_41316 objio_alloc_io_state 6 41316 NULL | ||
101982 | +twl_change_queue_depth_41342 twl_change_queue_depth 2 41342 NULL | 101172 | +twl_change_queue_depth_41342 twl_change_queue_depth 2 41342 NULL |
101983 | +cnic_init_id_tbl_41354 cnic_init_id_tbl 2 41354 NULL | 101173 | +cnic_init_id_tbl_41354 cnic_init_id_tbl 2 41354 NULL |
101984 | +jbd2_alloc_41359 jbd2_alloc 1 41359 NULL | 101174 | +jbd2_alloc_41359 jbd2_alloc 1 41359 NULL |
@@ -101997,6 +101187,7 @@ index 0000000..7982a0c | |||
101997 | +layout_leb_in_gaps_41470 layout_leb_in_gaps 0 41470 NULL | 101187 | +layout_leb_in_gaps_41470 layout_leb_in_gaps 0 41470 NULL |
101998 | +rt2x00debug_write_rfcsr_41473 rt2x00debug_write_rfcsr 3 41473 NULL | 101188 | +rt2x00debug_write_rfcsr_41473 rt2x00debug_write_rfcsr 3 41473 NULL |
101999 | +wep_interrupt_read_41492 wep_interrupt_read 3 41492 NULL | 101189 | +wep_interrupt_read_41492 wep_interrupt_read 3 41492 NULL |
101190 | +SyS_get_mempolicy_41495 SyS_get_mempolicy 3-4 41495 NULL | ||
102000 | +hpfs_translate_name_41497 hpfs_translate_name 3 41497 NULL | 101191 | +hpfs_translate_name_41497 hpfs_translate_name 3 41497 NULL |
102001 | +xfrm_hash_new_size_41505 xfrm_hash_new_size 0-1 41505 NULL | 101192 | +xfrm_hash_new_size_41505 xfrm_hash_new_size 0-1 41505 NULL |
102002 | +ldisc_receive_41516 ldisc_receive 4 41516 NULL | 101193 | +ldisc_receive_41516 ldisc_receive 4 41516 NULL |
@@ -102010,6 +101201,7 @@ index 0000000..7982a0c | |||
102010 | +tcp_hdrlen_41610 tcp_hdrlen 0 41610 NULL | 101201 | +tcp_hdrlen_41610 tcp_hdrlen 0 41610 NULL |
102011 | +usb_endpoint_maxp_41613 usb_endpoint_maxp 0 41613 NULL | 101202 | +usb_endpoint_maxp_41613 usb_endpoint_maxp 0 41613 NULL |
102012 | +a2mp_send_41615 a2mp_send 4 41615 NULL | 101203 | +a2mp_send_41615 a2mp_send 4 41615 NULL |
101204 | +btrfs_calc_trunc_metadata_size_41626 btrfs_calc_trunc_metadata_size 0-2 41626 NULL | ||
102013 | +mempool_create_kmalloc_pool_41650 mempool_create_kmalloc_pool 1 41650 NULL | 101205 | +mempool_create_kmalloc_pool_41650 mempool_create_kmalloc_pool 1 41650 NULL |
102014 | +rx_rx_pre_complt_read_41653 rx_rx_pre_complt_read 3 41653 NULL | 101206 | +rx_rx_pre_complt_read_41653 rx_rx_pre_complt_read 3 41653 NULL |
102015 | +get_std_timing_41654 get_std_timing 0 41654 NULL | 101207 | +get_std_timing_41654 get_std_timing 0 41654 NULL |
@@ -102022,7 +101214,9 @@ index 0000000..7982a0c | |||
102022 | +get_bios_ebda_41730 get_bios_ebda 0 41730 NULL | 101214 | +get_bios_ebda_41730 get_bios_ebda 0 41730 NULL |
102023 | +fillonedir_41746 fillonedir 3 41746 NULL | 101215 | +fillonedir_41746 fillonedir 3 41746 NULL |
102024 | +ocfs2_dx_dir_rebalance_41793 ocfs2_dx_dir_rebalance 7 41793 NULL | 101216 | +ocfs2_dx_dir_rebalance_41793 ocfs2_dx_dir_rebalance 7 41793 NULL |
101217 | +iwl_dbgfs_bt_notif_read_41794 iwl_dbgfs_bt_notif_read 3 41794 NULL | ||
102025 | +hsi_alloc_controller_41802 hsi_alloc_controller 1 41802 NULL | 101218 | +hsi_alloc_controller_41802 hsi_alloc_controller 1 41802 NULL |
101219 | +regcache_sync_block_raw_41803 regcache_sync_block_raw 3-4 41803 NULL | ||
102026 | +da9052_enable_irq_41814 da9052_enable_irq 2 41814 NULL | 101220 | +da9052_enable_irq_41814 da9052_enable_irq 2 41814 NULL |
102027 | +sco_send_frame_41815 sco_send_frame 3 41815 NULL | 101221 | +sco_send_frame_41815 sco_send_frame 3 41815 NULL |
102028 | +lp_gpio_to_irq_41822 lp_gpio_to_irq 2 41822 NULL | 101222 | +lp_gpio_to_irq_41822 lp_gpio_to_irq 2 41822 NULL |
@@ -102030,11 +101224,13 @@ index 0000000..7982a0c | |||
102030 | +do_ip_setsockopt_41852 do_ip_setsockopt 5 41852 NULL | 101224 | +do_ip_setsockopt_41852 do_ip_setsockopt 5 41852 NULL |
102031 | +keyctl_instantiate_key_41855 keyctl_instantiate_key 3 41855 NULL | 101225 | +keyctl_instantiate_key_41855 keyctl_instantiate_key 3 41855 NULL |
102032 | +ieee80211_rx_radiotap_space_41870 ieee80211_rx_radiotap_space 0 41870 NULL | 101226 | +ieee80211_rx_radiotap_space_41870 ieee80211_rx_radiotap_space 0 41870 NULL |
101227 | +get_packet_41914 get_packet 3 41914 NULL | ||
102033 | +get_fdb_entries_41916 get_fdb_entries 3 41916 NULL | 101228 | +get_fdb_entries_41916 get_fdb_entries 3 41916 NULL |
102034 | +find_ge_pid_41918 find_ge_pid 1 41918 NULL | 101229 | +find_ge_pid_41918 find_ge_pid 1 41918 NULL |
102035 | +build_inv_iotlb_pages_41922 build_inv_iotlb_pages 4-5 41922 NULL | 101230 | +build_inv_iotlb_pages_41922 build_inv_iotlb_pages 4-5 41922 NULL |
102036 | +nfsd_getxattr_41934 nfsd_getxattr 0 41934 NULL | 101231 | +nfsd_getxattr_41934 nfsd_getxattr 0 41934 NULL |
102037 | +ext4_da_write_inline_data_begin_41935 ext4_da_write_inline_data_begin 3-4 41935 NULL | 101232 | +ext4_da_write_inline_data_begin_41935 ext4_da_write_inline_data_begin 3-4 41935 NULL |
101233 | +read_gssp_41947 read_gssp 3 41947 NULL | ||
102038 | +ocfs2_xattr_bucket_get_name_value_41949 ocfs2_xattr_bucket_get_name_value 0 41949 NULL | 101234 | +ocfs2_xattr_bucket_get_name_value_41949 ocfs2_xattr_bucket_get_name_value 0 41949 NULL |
102039 | +portnames_read_41958 portnames_read 3 41958 NULL | 101235 | +portnames_read_41958 portnames_read 3 41958 NULL |
102040 | +ubi_self_check_all_ff_41959 ubi_self_check_all_ff 4 41959 NULL | 101236 | +ubi_self_check_all_ff_41959 ubi_self_check_all_ff 4 41959 NULL |
@@ -102079,6 +101275,7 @@ index 0000000..7982a0c | |||
102079 | +snd_pcm_plug_alloc_42339 snd_pcm_plug_alloc 2 42339 NULL | 101275 | +snd_pcm_plug_alloc_42339 snd_pcm_plug_alloc 2 42339 NULL |
102080 | +ide_raw_taskfile_42355 ide_raw_taskfile 4 42355 NULL | 101276 | +ide_raw_taskfile_42355 ide_raw_taskfile 4 42355 NULL |
102081 | +il_dbgfs_disable_ht40_read_42386 il_dbgfs_disable_ht40_read 3 42386 NULL | 101277 | +il_dbgfs_disable_ht40_read_42386 il_dbgfs_disable_ht40_read 3 42386 NULL |
101278 | +hash_ipportnet4_expire_42391 hash_ipportnet4_expire 3 42391 NULL | ||
102082 | +msnd_fifo_read_42406 msnd_fifo_read 0-3 42406 NULL | 101279 | +msnd_fifo_read_42406 msnd_fifo_read 0-3 42406 NULL |
102083 | +krng_get_random_42420 krng_get_random 3 42420 NULL | 101280 | +krng_get_random_42420 krng_get_random 3 42420 NULL |
102084 | +gsm_data_alloc_42437 gsm_data_alloc 3 42437 NULL | 101281 | +gsm_data_alloc_42437 gsm_data_alloc 3 42437 NULL |
@@ -102091,6 +101288,7 @@ index 0000000..7982a0c | |||
102091 | +follow_hugetlb_page_42486 follow_hugetlb_page 0-7 42486 NULL | 101288 | +follow_hugetlb_page_42486 follow_hugetlb_page 0-7 42486 NULL |
102092 | +omfs_readpages_42490 omfs_readpages 4 42490 NULL | 101289 | +omfs_readpages_42490 omfs_readpages 4 42490 NULL |
102093 | +brcmf_sdbrcm_bus_txctl_42492 brcmf_sdbrcm_bus_txctl 3 42492 NULL | 101290 | +brcmf_sdbrcm_bus_txctl_42492 brcmf_sdbrcm_bus_txctl 3 42492 NULL |
101291 | +bypass_write_42498 bypass_write 3 42498 NULL | ||
102094 | +kvm_write_wall_clock_42520 kvm_write_wall_clock 2 42520 NULL | 101292 | +kvm_write_wall_clock_42520 kvm_write_wall_clock 2 42520 NULL |
102095 | +smk_write_netlbladdr_42525 smk_write_netlbladdr 3 42525 NULL | 101293 | +smk_write_netlbladdr_42525 smk_write_netlbladdr 3 42525 NULL |
102096 | +snd_emux_create_port_42533 snd_emux_create_port 3 42533 NULL | 101294 | +snd_emux_create_port_42533 snd_emux_create_port 3 42533 NULL |
@@ -102104,11 +101302,13 @@ index 0000000..7982a0c | |||
102104 | +__pskb_pull_42602 __pskb_pull 2 42602 &map_state_42602 | 101302 | +__pskb_pull_42602 __pskb_pull 2 42602 &map_state_42602 |
102105 | +nd_get_link_42603 nd_get_link 0 42603 NULL | 101303 | +nd_get_link_42603 nd_get_link 0 42603 NULL |
102106 | +sys_move_pages_42626 sys_move_pages 2 42626 NULL | 101304 | +sys_move_pages_42626 sys_move_pages 2 42626 NULL |
101305 | +resp_write_42628 resp_write 2 42628 NULL | ||
102107 | +ieee80211_if_fmt_dot11MeshHWMPactivePathTimeout_42635 ieee80211_if_fmt_dot11MeshHWMPactivePathTimeout 3 42635 NULL | 101306 | +ieee80211_if_fmt_dot11MeshHWMPactivePathTimeout_42635 ieee80211_if_fmt_dot11MeshHWMPactivePathTimeout 3 42635 NULL |
102108 | +scsi_activate_tcq_42640 scsi_activate_tcq 2 42640 NULL | 101307 | +scsi_activate_tcq_42640 scsi_activate_tcq 2 42640 NULL |
102109 | +br_mdb_rehash_42643 br_mdb_rehash 2 42643 NULL | 101308 | +br_mdb_rehash_42643 br_mdb_rehash 2 42643 NULL |
102110 | +l2tp_xmit_skb_42672 l2tp_xmit_skb 3 42672 NULL | 101309 | +l2tp_xmit_skb_42672 l2tp_xmit_skb 3 42672 NULL |
102111 | +request_key_and_link_42693 request_key_and_link 4 42693 NULL | 101310 | +request_key_and_link_42693 request_key_and_link 4 42693 NULL |
101311 | +acpi_dev_get_irqresource_42694 acpi_dev_get_irqresource 2 42694 NULL | ||
102112 | +vb2_read_42703 vb2_read 3 42703 NULL | 101312 | +vb2_read_42703 vb2_read 3 42703 NULL |
102113 | +sierra_net_send_cmd_42708 sierra_net_send_cmd 3 42708 NULL | 101313 | +sierra_net_send_cmd_42708 sierra_net_send_cmd 3 42708 NULL |
102114 | +__ocfs2_decrease_refcount_42717 __ocfs2_decrease_refcount 4 42717 NULL | 101314 | +__ocfs2_decrease_refcount_42717 __ocfs2_decrease_refcount 4 42717 NULL |
@@ -102117,13 +101317,15 @@ index 0000000..7982a0c | |||
102117 | +ax25_setsockopt_42740 ax25_setsockopt 5 42740 NULL | 101317 | +ax25_setsockopt_42740 ax25_setsockopt 5 42740 NULL |
102118 | +xen_bind_pirq_gsi_to_irq_42750 xen_bind_pirq_gsi_to_irq 1 42750 NULL | 101318 | +xen_bind_pirq_gsi_to_irq_42750 xen_bind_pirq_gsi_to_irq 1 42750 NULL |
102119 | +snd_midi_event_decode_42780 snd_midi_event_decode 0 42780 NULL | 101319 | +snd_midi_event_decode_42780 snd_midi_event_decode 0 42780 NULL |
102120 | +cryptd_hash_setkey_42781 cryptd_hash_setkey 3 42781 NULL | 101320 | +cryptd_hash_setkey_42781 cryptd_hash_setkey 3 42781 NULL nohasharray |
101321 | +isku_sysfs_read_info_42781 isku_sysfs_read_info 6 42781 &cryptd_hash_setkey_42781 | ||
102121 | +koneplus_sysfs_read_42792 koneplus_sysfs_read 6 42792 NULL | 101322 | +koneplus_sysfs_read_42792 koneplus_sysfs_read 6 42792 NULL |
102122 | +ntfs_attr_extend_allocation_42796 ntfs_attr_extend_allocation 0-2 42796 NULL | 101323 | +ntfs_attr_extend_allocation_42796 ntfs_attr_extend_allocation 0-2 42796 NULL |
102123 | +fw_device_op_compat_ioctl_42804 fw_device_op_compat_ioctl 2-3 42804 NULL | 101324 | +fw_device_op_compat_ioctl_42804 fw_device_op_compat_ioctl 2-3 42804 NULL |
102124 | +drm_ioctl_42813 drm_ioctl 2 42813 NULL | 101325 | +drm_ioctl_42813 drm_ioctl 2 42813 NULL |
102125 | +iwl_dbgfs_ucode_bt_stats_read_42820 iwl_dbgfs_ucode_bt_stats_read 3 42820 NULL | 101326 | +iwl_dbgfs_ucode_bt_stats_read_42820 iwl_dbgfs_ucode_bt_stats_read 3 42820 NULL |
102126 | +set_arg_42824 set_arg 3 42824 NULL | 101327 | +set_arg_42824 set_arg 3 42824 NULL |
101328 | +si476x_radio_read_rsq_blob_42827 si476x_radio_read_rsq_blob 3 42827 NULL | ||
102127 | +ocfs2_desc_bitmap_to_cluster_off_42831 ocfs2_desc_bitmap_to_cluster_off 2 42831 NULL | 101329 | +ocfs2_desc_bitmap_to_cluster_off_42831 ocfs2_desc_bitmap_to_cluster_off 2 42831 NULL |
102128 | +prandom_u32_42853 prandom_u32 0 42853 NULL | 101330 | +prandom_u32_42853 prandom_u32 0 42853 NULL |
102129 | +of_property_count_strings_42863 of_property_count_strings 0 42863 NULL | 101331 | +of_property_count_strings_42863 of_property_count_strings 0 42863 NULL |
@@ -102144,12 +101346,14 @@ index 0000000..7982a0c | |||
102144 | +nfs_idmap_get_desc_42990 nfs_idmap_get_desc 4-2 42990 NULL | 101346 | +nfs_idmap_get_desc_42990 nfs_idmap_get_desc 4-2 42990 NULL |
102145 | +mlx4_qp_reserve_range_43000 mlx4_qp_reserve_range 2-3 43000 NULL | 101347 | +mlx4_qp_reserve_range_43000 mlx4_qp_reserve_range 2-3 43000 NULL |
102146 | +isr_rx_mem_overflow_read_43025 isr_rx_mem_overflow_read 3 43025 NULL | 101348 | +isr_rx_mem_overflow_read_43025 isr_rx_mem_overflow_read 3 43025 NULL |
101349 | +add_bytes_to_bitmap_43026 add_bytes_to_bitmap 0 43026 NULL | ||
102147 | +wep_default_key_count_read_43035 wep_default_key_count_read 3 43035 NULL | 101350 | +wep_default_key_count_read_43035 wep_default_key_count_read 3 43035 NULL |
102148 | +nouveau_gpuobj_create__43072 nouveau_gpuobj_create_ 9 43072 NULL | 101351 | +nouveau_gpuobj_create__43072 nouveau_gpuobj_create_ 9 43072 NULL |
102149 | +nfs_map_group_to_gid_43082 nfs_map_group_to_gid 3 43082 NULL | 101352 | +nfs_map_group_to_gid_43082 nfs_map_group_to_gid 3 43082 NULL |
102150 | +cpuset_sprintf_memlist_43088 cpuset_sprintf_memlist 0 43088 NULL | 101353 | +cpuset_sprintf_memlist_43088 cpuset_sprintf_memlist 0 43088 NULL |
102151 | +ieee80211_if_fmt_drop_unencrypted_43107 ieee80211_if_fmt_drop_unencrypted 3 43107 NULL | 101354 | +ieee80211_if_fmt_drop_unencrypted_43107 ieee80211_if_fmt_drop_unencrypted 3 43107 NULL |
102152 | +read_file_dfs_43145 read_file_dfs 3 43145 NULL | 101355 | +read_file_dfs_43145 read_file_dfs 3 43145 NULL nohasharray |
101356 | +i2c_hid_get_report_43145 i2c_hid_get_report 0 43145 &read_file_dfs_43145 | ||
102153 | +uuid_string_43154 uuid_string 0 43154 NULL | 101357 | +uuid_string_43154 uuid_string 0 43154 NULL |
102154 | +usb_string_sub_43164 usb_string_sub 0 43164 NULL | 101358 | +usb_string_sub_43164 usb_string_sub 0 43164 NULL |
102155 | +il_dbgfs_power_save_status_read_43165 il_dbgfs_power_save_status_read 3 43165 NULL | 101359 | +il_dbgfs_power_save_status_read_43165 il_dbgfs_power_save_status_read 3 43165 NULL |
@@ -102172,8 +101376,10 @@ index 0000000..7982a0c | |||
102172 | +__ext4_get_inode_loc_43332 __ext4_get_inode_loc 0 43332 NULL | 101376 | +__ext4_get_inode_loc_43332 __ext4_get_inode_loc 0 43332 NULL |
102173 | +kvm_host_page_size_43348 kvm_host_page_size 2 43348 NULL | 101377 | +kvm_host_page_size_43348 kvm_host_page_size 2 43348 NULL |
102174 | +gart_free_coherent_43362 gart_free_coherent 4-2 43362 NULL | 101378 | +gart_free_coherent_43362 gart_free_coherent 4-2 43362 NULL |
101379 | +hash_net4_expire_43378 hash_net4_expire 3 43378 NULL | ||
102175 | +__alloc_bootmem_low_43423 __alloc_bootmem_low 1-2 43423 NULL nohasharray | 101380 | +__alloc_bootmem_low_43423 __alloc_bootmem_low 1-2 43423 NULL nohasharray |
102176 | +gdm_wimax_netif_rx_43423 gdm_wimax_netif_rx 3 43423 &__alloc_bootmem_low_43423 | 101381 | +gdm_wimax_netif_rx_43423 gdm_wimax_netif_rx 3 43423 &__alloc_bootmem_low_43423 |
101382 | +isku_sysfs_write_keys_capslock_43432 isku_sysfs_write_keys_capslock 6 43432 NULL | ||
102177 | +usb_alloc_urb_43436 usb_alloc_urb 1 43436 NULL | 101383 | +usb_alloc_urb_43436 usb_alloc_urb 1 43436 NULL |
102178 | +ucs2_strsize_43438 ucs2_strsize 0 43438 NULL | 101384 | +ucs2_strsize_43438 ucs2_strsize 0 43438 NULL |
102179 | +ath6kl_wmi_roam_tbl_event_rx_43440 ath6kl_wmi_roam_tbl_event_rx 3 43440 NULL | 101385 | +ath6kl_wmi_roam_tbl_event_rx_43440 ath6kl_wmi_roam_tbl_event_rx 3 43440 NULL |
@@ -102197,6 +101403,7 @@ index 0000000..7982a0c | |||
102197 | +dmam_declare_coherent_memory_43679 dmam_declare_coherent_memory 4-2 43679 NULL | 101403 | +dmam_declare_coherent_memory_43679 dmam_declare_coherent_memory 4-2 43679 NULL |
102198 | +calgary_map_page_43686 calgary_map_page 3-4 43686 NULL | 101404 | +calgary_map_page_43686 calgary_map_page 3-4 43686 NULL |
102199 | +max77693_bulk_write_43698 max77693_bulk_write 2-3 43698 NULL | 101405 | +max77693_bulk_write_43698 max77693_bulk_write 2-3 43698 NULL |
101406 | +drbd_md_first_sector_43729 drbd_md_first_sector 0 43729 NULL | ||
102200 | +snd_rme32_playback_copy_43732 snd_rme32_playback_copy 5 43732 NULL | 101407 | +snd_rme32_playback_copy_43732 snd_rme32_playback_copy 5 43732 NULL |
102201 | +ocfs2_replace_clusters_43733 ocfs2_replace_clusters 5 43733 NULL | 101408 | +ocfs2_replace_clusters_43733 ocfs2_replace_clusters 5 43733 NULL |
102202 | +osdv1_attr_list_elem_size_43747 osdv1_attr_list_elem_size 0-1 43747 NULL | 101409 | +osdv1_attr_list_elem_size_43747 osdv1_attr_list_elem_size 0-1 43747 NULL |
@@ -102207,6 +101414,7 @@ index 0000000..7982a0c | |||
102207 | +byte_pos_43787 byte_pos 0-2 43787 &ocfs2_xattr_get_value_outside_43787 | 101414 | +byte_pos_43787 byte_pos 0-2 43787 &ocfs2_xattr_get_value_outside_43787 |
102208 | +btrfs_copy_from_user_43806 btrfs_copy_from_user 3-1 43806 NULL | 101415 | +btrfs_copy_from_user_43806 btrfs_copy_from_user 3-1 43806 NULL |
102209 | +ext4_read_block_bitmap_43814 ext4_read_block_bitmap 2 43814 NULL | 101416 | +ext4_read_block_bitmap_43814 ext4_read_block_bitmap 2 43814 NULL |
101417 | +div64_u64_safe_43815 div64_u64_safe 1-2 43815 NULL | ||
102210 | +ieee80211_if_fmt_element_ttl_43825 ieee80211_if_fmt_element_ttl 3 43825 NULL | 101418 | +ieee80211_if_fmt_element_ttl_43825 ieee80211_if_fmt_element_ttl 3 43825 NULL |
102211 | +ieee80211_alloc_hw_43829 ieee80211_alloc_hw 1 43829 NULL | 101419 | +ieee80211_alloc_hw_43829 ieee80211_alloc_hw 1 43829 NULL |
102212 | +p54_download_eeprom_43842 p54_download_eeprom 4 43842 NULL | 101420 | +p54_download_eeprom_43842 p54_download_eeprom 4 43842 NULL |
@@ -102225,6 +101433,7 @@ index 0000000..7982a0c | |||
102225 | +emit_flags_44006 emit_flags 4-3 44006 NULL | 101433 | +emit_flags_44006 emit_flags 4-3 44006 NULL |
102226 | +write_flush_procfs_44011 write_flush_procfs 3 44011 NULL | 101434 | +write_flush_procfs_44011 write_flush_procfs 3 44011 NULL |
102227 | +swiotlb_unmap_page_44063 swiotlb_unmap_page 2 44063 NULL | 101435 | +swiotlb_unmap_page_44063 swiotlb_unmap_page 2 44063 NULL |
101436 | +SYSC_add_key_44079 SYSC_add_key 4 44079 NULL | ||
102228 | +load_discard_44083 load_discard 3 44083 NULL | 101437 | +load_discard_44083 load_discard 3 44083 NULL |
102229 | +xlog_recover_add_to_cont_trans_44102 xlog_recover_add_to_cont_trans 4 44102 NULL | 101438 | +xlog_recover_add_to_cont_trans_44102 xlog_recover_add_to_cont_trans 4 44102 NULL |
102230 | +tracing_set_trace_read_44122 tracing_set_trace_read 3 44122 NULL | 101439 | +tracing_set_trace_read_44122 tracing_set_trace_read 3 44122 NULL |
@@ -102232,6 +101441,7 @@ index 0000000..7982a0c | |||
102232 | +scsi_get_resid_44147 scsi_get_resid 0 44147 NULL | 101441 | +scsi_get_resid_44147 scsi_get_resid 0 44147 NULL |
102233 | +ubifs_find_dirty_idx_leb_44169 ubifs_find_dirty_idx_leb 0 44169 NULL | 101442 | +ubifs_find_dirty_idx_leb_44169 ubifs_find_dirty_idx_leb 0 44169 NULL |
102234 | +ocfs2_xattr_bucket_find_44174 ocfs2_xattr_bucket_find 0 44174 NULL | 101443 | +ocfs2_xattr_bucket_find_44174 ocfs2_xattr_bucket_find 0 44174 NULL |
101444 | +SYSC_set_mempolicy_44176 SYSC_set_mempolicy 3 44176 NULL | ||
102235 | +handle_eviocgbit_44193 handle_eviocgbit 3 44193 NULL | 101445 | +handle_eviocgbit_44193 handle_eviocgbit 3 44193 NULL |
102236 | +IO_APIC_get_PCI_irq_vector_44198 IO_APIC_get_PCI_irq_vector 0 44198 NULL | 101446 | +IO_APIC_get_PCI_irq_vector_44198 IO_APIC_get_PCI_irq_vector 0 44198 NULL |
102237 | +__set_free_44211 __set_free 2 44211 NULL | 101447 | +__set_free_44211 __set_free 2 44211 NULL |
@@ -102260,12 +101470,14 @@ index 0000000..7982a0c | |||
102260 | +___alloc_bootmem_node_nopanic_44461 ___alloc_bootmem_node_nopanic 2-3 44461 NULL | 101470 | +___alloc_bootmem_node_nopanic_44461 ___alloc_bootmem_node_nopanic 2-3 44461 NULL |
102261 | +btrfs_chunk_item_size_44478 btrfs_chunk_item_size 0-1 44478 NULL | 101471 | +btrfs_chunk_item_size_44478 btrfs_chunk_item_size 0-1 44478 NULL |
102262 | +sdio_align_size_44489 sdio_align_size 0-2 44489 NULL | 101472 | +sdio_align_size_44489 sdio_align_size 0-2 44489 NULL |
101473 | +bio_advance_44496 bio_advance 2 44496 NULL | ||
102263 | +ieee80211_if_read_dropped_frames_ttl_44500 ieee80211_if_read_dropped_frames_ttl 3 44500 NULL | 101474 | +ieee80211_if_read_dropped_frames_ttl_44500 ieee80211_if_read_dropped_frames_ttl 3 44500 NULL |
102264 | +security_getprocattr_44505 security_getprocattr 0 44505 NULL nohasharray | 101475 | +security_getprocattr_44505 security_getprocattr 0 44505 NULL nohasharray |
102265 | +iwl_dbgfs_sram_read_44505 iwl_dbgfs_sram_read 3 44505 &security_getprocattr_44505 | 101476 | +iwl_dbgfs_sram_read_44505 iwl_dbgfs_sram_read 3 44505 &security_getprocattr_44505 |
102266 | +spidev_write_44510 spidev_write 3 44510 NULL | 101477 | +spidev_write_44510 spidev_write 3 44510 NULL |
102267 | +sys_msgsnd_44537 sys_msgsnd 3 44537 NULL nohasharray | 101478 | +sys_msgsnd_44537 sys_msgsnd 3 44537 NULL nohasharray |
102268 | +comm_write_44537 comm_write 3 44537 &sys_msgsnd_44537 | 101479 | +comm_write_44537 comm_write 3 44537 &sys_msgsnd_44537 |
101480 | +hash_ipport4_expire_44564 hash_ipport4_expire 3 44564 NULL | ||
102269 | +dgrp_config_proc_write_44571 dgrp_config_proc_write 3 44571 NULL | 101481 | +dgrp_config_proc_write_44571 dgrp_config_proc_write 3 44571 NULL |
102270 | +snd_pcm_alloc_vmalloc_buffer_44595 snd_pcm_alloc_vmalloc_buffer 2 44595 NULL | 101482 | +snd_pcm_alloc_vmalloc_buffer_44595 snd_pcm_alloc_vmalloc_buffer 2 44595 NULL |
102271 | +slip_compat_ioctl_44599 slip_compat_ioctl 4 44599 NULL | 101483 | +slip_compat_ioctl_44599 slip_compat_ioctl 4 44599 NULL |
@@ -102276,6 +101488,7 @@ index 0000000..7982a0c | |||
102276 | +mpi_resize_44674 mpi_resize 2 44674 NULL | 101488 | +mpi_resize_44674 mpi_resize 2 44674 NULL |
102277 | +ts_read_44687 ts_read 3 44687 NULL | 101489 | +ts_read_44687 ts_read 3 44687 NULL |
102278 | +qib_get_user_pages_44689 qib_get_user_pages 1-2 44689 NULL | 101490 | +qib_get_user_pages_44689 qib_get_user_pages 1-2 44689 NULL |
101491 | +xfer_to_user_44713 xfer_to_user 3 44713 NULL | ||
102279 | +_zd_iowrite32v_locked_44725 _zd_iowrite32v_locked 3 44725 NULL | 101492 | +_zd_iowrite32v_locked_44725 _zd_iowrite32v_locked 3 44725 NULL |
102280 | +clusterip_proc_write_44729 clusterip_proc_write 3 44729 NULL | 101493 | +clusterip_proc_write_44729 clusterip_proc_write 3 44729 NULL |
102281 | +fib_count_nexthops_44730 fib_count_nexthops 0 44730 NULL | 101494 | +fib_count_nexthops_44730 fib_count_nexthops 0 44730 NULL |
@@ -102289,25 +101502,31 @@ index 0000000..7982a0c | |||
102289 | +sctp_setsockopt_44788 sctp_setsockopt 5 44788 NULL | 101502 | +sctp_setsockopt_44788 sctp_setsockopt 5 44788 NULL |
102290 | +rx_dropped_read_44799 rx_dropped_read 3 44799 NULL | 101503 | +rx_dropped_read_44799 rx_dropped_read 3 44799 NULL |
102291 | +qla4xxx_alloc_work_44813 qla4xxx_alloc_work 2 44813 NULL | 101504 | +qla4xxx_alloc_work_44813 qla4xxx_alloc_work 2 44813 NULL |
101505 | +mei_cl_read_start_44824 mei_cl_read_start 2 44824 NULL | ||
102292 | +rmap_write_protect_44833 rmap_write_protect 2 44833 NULL | 101506 | +rmap_write_protect_44833 rmap_write_protect 2 44833 NULL |
102293 | +sisusb_write_44834 sisusb_write 3 44834 NULL | 101507 | +sisusb_write_44834 sisusb_write 3 44834 NULL |
102294 | +nl80211_send_unprot_disassoc_44846 nl80211_send_unprot_disassoc 4 44846 NULL | 101508 | +nl80211_send_unprot_disassoc_44846 nl80211_send_unprot_disassoc 4 44846 NULL |
102295 | +kvm_read_hva_44847 kvm_read_hva 3 44847 NULL | 101509 | +kvm_read_hva_44847 kvm_read_hva 3 44847 NULL |
101510 | +cubic_root_44848 cubic_root 1 44848 NULL | ||
101511 | +copydesc_user_44855 copydesc_user 3 44855 NULL | ||
102296 | +skb_availroom_44883 skb_availroom 0 44883 NULL | 101512 | +skb_availroom_44883 skb_availroom 0 44883 NULL |
102297 | +nf_bridge_encap_header_len_44890 nf_bridge_encap_header_len 0 44890 NULL | 101513 | +nf_bridge_encap_header_len_44890 nf_bridge_encap_header_len 0 44890 NULL |
102298 | +do_tty_write_44896 do_tty_write 5 44896 NULL | 101514 | +do_tty_write_44896 do_tty_write 5 44896 NULL |
102299 | +tx_queue_status_read_44978 tx_queue_status_read 3 44978 NULL | 101515 | +tx_queue_status_read_44978 tx_queue_status_read 3 44978 NULL |
102300 | +nf_nat_seq_adjust_44989 nf_nat_seq_adjust 4 44989 NULL | 101516 | +nf_nat_seq_adjust_44989 nf_nat_seq_adjust 4 44989 NULL |
101517 | +map_index_to_lba_44993 map_index_to_lba 0-1 44993 NULL | ||
102301 | +bytepos_delta_45017 bytepos_delta 0 45017 NULL | 101518 | +bytepos_delta_45017 bytepos_delta 0 45017 NULL |
102302 | +read_block_bitmap_45021 read_block_bitmap 2 45021 NULL nohasharray | 101519 | +read_block_bitmap_45021 read_block_bitmap 2 45021 NULL nohasharray |
102303 | +ptrace_writedata_45021 ptrace_writedata 4-3 45021 &read_block_bitmap_45021 | 101520 | +ptrace_writedata_45021 ptrace_writedata 4-3 45021 &read_block_bitmap_45021 |
102304 | +vhci_get_user_45039 vhci_get_user 3 45039 NULL | 101521 | +vhci_get_user_45039 vhci_get_user 3 45039 NULL |
102305 | +sel_write_user_45060 sel_write_user 3 45060 NULL | 101522 | +sel_write_user_45060 sel_write_user 3 45060 NULL |
101523 | +vmscan_swappiness_45062 vmscan_swappiness 0 45062 NULL | ||
102306 | +snd_mixart_BA0_read_45069 snd_mixart_BA0_read 5 45069 NULL nohasharray | 101524 | +snd_mixart_BA0_read_45069 snd_mixart_BA0_read 5 45069 NULL nohasharray |
102307 | +do_video_ioctl_45069 do_video_ioctl 3 45069 &snd_mixart_BA0_read_45069 | 101525 | +do_video_ioctl_45069 do_video_ioctl 3 45069 &snd_mixart_BA0_read_45069 |
102308 | +kvm_mmu_page_get_gfn_45110 kvm_mmu_page_get_gfn 0-2 45110 NULL | 101526 | +kvm_mmu_page_get_gfn_45110 kvm_mmu_page_get_gfn 0-2 45110 NULL |
102309 | +pwr_missing_bcns_cnt_read_45113 pwr_missing_bcns_cnt_read 3 45113 NULL | 101527 | +pwr_missing_bcns_cnt_read_45113 pwr_missing_bcns_cnt_read 3 45113 NULL |
102310 | +usbdev_read_45114 usbdev_read 3 45114 NULL | 101528 | +usbdev_read_45114 usbdev_read 3 45114 NULL |
101529 | +isku_sysfs_write_reset_45133 isku_sysfs_write_reset 6 45133 NULL | ||
102311 | +send_to_tty_45141 send_to_tty 3 45141 NULL | 101530 | +send_to_tty_45141 send_to_tty 3 45141 NULL |
102312 | +stmpe_irq_map_45146 stmpe_irq_map 2 45146 NULL | 101531 | +stmpe_irq_map_45146 stmpe_irq_map 2 45146 NULL |
102313 | +crypto_aead_blocksize_45148 crypto_aead_blocksize 0 45148 NULL | 101532 | +crypto_aead_blocksize_45148 crypto_aead_blocksize 0 45148 NULL |
@@ -102324,17 +101543,20 @@ index 0000000..7982a0c | |||
102324 | +spi_alloc_master_45223 spi_alloc_master 2 45223 NULL | 101543 | +spi_alloc_master_45223 spi_alloc_master 2 45223 NULL |
102325 | +__dirty_45228 __dirty 2 45228 NULL | 101544 | +__dirty_45228 __dirty 2 45228 NULL |
102326 | +ieee80211_if_read_peer_45233 ieee80211_if_read_peer 3 45233 NULL | 101545 | +ieee80211_if_read_peer_45233 ieee80211_if_read_peer 3 45233 NULL |
101546 | +prism2_pda_proc_read_45246 prism2_pda_proc_read 3 45246 NULL | ||
102327 | +input_mt_init_slots_45279 input_mt_init_slots 2 45279 NULL | 101547 | +input_mt_init_slots_45279 input_mt_init_slots 2 45279 NULL |
102328 | +vcc_compat_ioctl_45291 vcc_compat_ioctl 3 45291 NULL | 101548 | +vcc_compat_ioctl_45291 vcc_compat_ioctl 3 45291 NULL |
102329 | +snd_pcm_oss_sync1_45298 snd_pcm_oss_sync1 2 45298 NULL | 101549 | +snd_pcm_oss_sync1_45298 snd_pcm_oss_sync1 2 45298 NULL |
102330 | +pte_val_45313 pte_val 0 45313 NULL | 101550 | +pte_val_45313 pte_val 0 45313 NULL |
101551 | +__i2c_hid_command_45321 __i2c_hid_command 0 45321 NULL | ||
102331 | +copy_vm86_regs_from_user_45340 copy_vm86_regs_from_user 3 45340 NULL | 101552 | +copy_vm86_regs_from_user_45340 copy_vm86_regs_from_user 3 45340 NULL |
102332 | +lane2_associate_req_45398 lane2_associate_req 4 45398 NULL | 101553 | +lane2_associate_req_45398 lane2_associate_req 4 45398 NULL |
102333 | +keymap_store_45406 keymap_store 4 45406 NULL | 101554 | +keymap_store_45406 keymap_store 4 45406 NULL |
102334 | +paging64_gva_to_gpa_45421 paging64_gva_to_gpa 2 45421 NULL nohasharray | 101555 | +paging64_gva_to_gpa_45421 paging64_gva_to_gpa 2 45421 NULL nohasharray |
102335 | +ieee80211_if_fmt_dot11MeshHWMProotInterval_45421 ieee80211_if_fmt_dot11MeshHWMProotInterval 3 45421 &paging64_gva_to_gpa_45421 | 101556 | +ieee80211_if_fmt_dot11MeshHWMProotInterval_45421 ieee80211_if_fmt_dot11MeshHWMProotInterval 3 45421 &paging64_gva_to_gpa_45421 |
102336 | +tty_buffer_alloc_45437 tty_buffer_alloc 2 45437 NULL | 101557 | +tty_buffer_alloc_45437 tty_buffer_alloc 2 45437 NULL |
102337 | +intel_render_ring_init_dri_45446 intel_render_ring_init_dri 2-3 45446 NULL | 101558 | +intel_render_ring_init_dri_45446 intel_render_ring_init_dri 2-3 45446 NULL nohasharray |
101559 | +SYSC_mremap_45446 SYSC_mremap 5-1-2 45446 &intel_render_ring_init_dri_45446 | ||
102338 | +__node_remap_45458 __node_remap 4 45458 NULL | 101560 | +__node_remap_45458 __node_remap 4 45458 NULL |
102339 | +rds_ib_set_wr_signal_state_45463 rds_ib_set_wr_signal_state 0 45463 NULL | 101561 | +rds_ib_set_wr_signal_state_45463 rds_ib_set_wr_signal_state 0 45463 NULL |
102340 | +udp_manip_pkt_45467 udp_manip_pkt 4 45467 NULL | 101562 | +udp_manip_pkt_45467 udp_manip_pkt 4 45467 NULL |
@@ -102391,6 +101613,7 @@ index 0000000..7982a0c | |||
102391 | +rb_simple_read_45972 rb_simple_read 3 45972 NULL | 101613 | +rb_simple_read_45972 rb_simple_read 3 45972 NULL |
102392 | +ezusb_writememory_45976 ezusb_writememory 4 45976 NULL | 101614 | +ezusb_writememory_45976 ezusb_writememory 4 45976 NULL |
102393 | +ioat2_dca_count_dca_slots_45984 ioat2_dca_count_dca_slots 0 45984 NULL | 101615 | +ioat2_dca_count_dca_slots_45984 ioat2_dca_count_dca_slots 0 45984 NULL |
101616 | +ore_calc_stripe_info_46023 ore_calc_stripe_info 2 46023 NULL | ||
102394 | +sierra_setup_urb_46029 sierra_setup_urb 5 46029 NULL | 101617 | +sierra_setup_urb_46029 sierra_setup_urb 5 46029 NULL |
102395 | +get_free_entries_46030 get_free_entries 1 46030 NULL | 101618 | +get_free_entries_46030 get_free_entries 1 46030 NULL |
102396 | +__access_remote_vm_46031 __access_remote_vm 0-5-3 46031 NULL | 101619 | +__access_remote_vm_46031 __access_remote_vm 0-5-3 46031 NULL |
@@ -102407,8 +101630,10 @@ index 0000000..7982a0c | |||
102407 | +pkt_ctl_compat_ioctl_46110 pkt_ctl_compat_ioctl 3 46110 NULL | 101630 | +pkt_ctl_compat_ioctl_46110 pkt_ctl_compat_ioctl 3 46110 NULL |
102408 | +memcg_update_array_size_46111 memcg_update_array_size 1 46111 NULL nohasharray | 101631 | +memcg_update_array_size_46111 memcg_update_array_size 1 46111 NULL nohasharray |
102409 | +il3945_ucode_general_stats_read_46111 il3945_ucode_general_stats_read 3 46111 &memcg_update_array_size_46111 | 101632 | +il3945_ucode_general_stats_read_46111 il3945_ucode_general_stats_read 3 46111 &memcg_update_array_size_46111 |
101633 | +C_SYSC_writev_46113 C_SYSC_writev 3 46113 NULL | ||
102410 | +mlx4_ib_alloc_fast_reg_page_list_46119 mlx4_ib_alloc_fast_reg_page_list 2 46119 NULL | 101634 | +mlx4_ib_alloc_fast_reg_page_list_46119 mlx4_ib_alloc_fast_reg_page_list 2 46119 NULL |
102411 | +paging32_walk_addr_nested_46121 paging32_walk_addr_nested 3 46121 NULL | 101635 | +paging32_walk_addr_nested_46121 paging32_walk_addr_nested 3 46121 NULL |
101636 | +vb2_dma_sg_get_userptr_46146 vb2_dma_sg_get_userptr 2 46146 NULL | ||
102412 | +__netlink_change_ngroups_46156 __netlink_change_ngroups 2 46156 NULL | 101637 | +__netlink_change_ngroups_46156 __netlink_change_ngroups 2 46156 NULL |
102413 | +twl_direction_out_46182 twl_direction_out 2 46182 NULL | 101638 | +twl_direction_out_46182 twl_direction_out 2 46182 NULL |
102414 | +vxge_os_dma_malloc_46184 vxge_os_dma_malloc 2 46184 NULL | 101639 | +vxge_os_dma_malloc_46184 vxge_os_dma_malloc 2 46184 NULL |
@@ -102420,6 +101645,7 @@ index 0000000..7982a0c | |||
102420 | +nf_nat_ftp_46265 nf_nat_ftp 6 46265 NULL | 101645 | +nf_nat_ftp_46265 nf_nat_ftp 6 46265 NULL |
102421 | +ReadReg_46277 ReadReg 0 46277 NULL | 101646 | +ReadReg_46277 ReadReg 0 46277 NULL |
102422 | +batadv_iv_ogm_queue_add_46319 batadv_iv_ogm_queue_add 3 46319 NULL | 101647 | +batadv_iv_ogm_queue_add_46319 batadv_iv_ogm_queue_add 3 46319 NULL |
101648 | +qlcnic_83xx_sysfs_flash_bulk_write_46320 qlcnic_83xx_sysfs_flash_bulk_write 4 46320 NULL | ||
102423 | +__hwahc_dev_set_key_46328 __hwahc_dev_set_key 5 46328 NULL | 101649 | +__hwahc_dev_set_key_46328 __hwahc_dev_set_key 5 46328 NULL |
102424 | +iwl_dbgfs_chain_noise_read_46355 iwl_dbgfs_chain_noise_read 3 46355 NULL | 101650 | +iwl_dbgfs_chain_noise_read_46355 iwl_dbgfs_chain_noise_read 3 46355 NULL |
102425 | +smk_write_direct_46363 smk_write_direct 3 46363 NULL | 101651 | +smk_write_direct_46363 smk_write_direct 3 46363 NULL |
@@ -102427,6 +101653,7 @@ index 0000000..7982a0c | |||
102427 | +ubi_dump_flash_46381 ubi_dump_flash 4 46381 NULL | 101653 | +ubi_dump_flash_46381 ubi_dump_flash 4 46381 NULL |
102428 | +fuse_file_aio_write_46399 fuse_file_aio_write 4 46399 NULL | 101654 | +fuse_file_aio_write_46399 fuse_file_aio_write 4 46399 NULL |
102429 | +crypto_ablkcipher_reqsize_46411 crypto_ablkcipher_reqsize 0 46411 NULL | 101655 | +crypto_ablkcipher_reqsize_46411 crypto_ablkcipher_reqsize 0 46411 NULL |
101656 | +hash_ipportip6_expire_46443 hash_ipportip6_expire 3 46443 NULL | ||
102430 | +cp210x_set_config_46447 cp210x_set_config 4 46447 NULL | 101657 | +cp210x_set_config_46447 cp210x_set_config 4 46447 NULL |
102431 | +filldir64_46469 filldir64 3 46469 NULL | 101658 | +filldir64_46469 filldir64 3 46469 NULL |
102432 | +fill_in_write_vector_46498 fill_in_write_vector 0 46498 NULL | 101659 | +fill_in_write_vector_46498 fill_in_write_vector 0 46498 NULL |
@@ -102465,7 +101692,8 @@ index 0000000..7982a0c | |||
102465 | +xfs_iroot_realloc_46826 xfs_iroot_realloc 2 46826 NULL | 101692 | +xfs_iroot_realloc_46826 xfs_iroot_realloc 2 46826 NULL |
102466 | +shmem_pwrite_fast_46842 shmem_pwrite_fast 3 46842 NULL | 101693 | +shmem_pwrite_fast_46842 shmem_pwrite_fast 3 46842 NULL |
102467 | +spi_async_46857 spi_async 0 46857 NULL | 101694 | +spi_async_46857 spi_async 0 46857 NULL |
102468 | +vsnprintf_46863 vsnprintf 0 46863 NULL | 101695 | +vsnprintf_46863 vsnprintf 0 46863 NULL nohasharray |
101696 | +SyS_move_pages_46863 SyS_move_pages 2 46863 &vsnprintf_46863 | ||
102469 | +nvme_alloc_queue_46865 nvme_alloc_queue 3 46865 NULL | 101697 | +nvme_alloc_queue_46865 nvme_alloc_queue 3 46865 NULL |
102470 | +sip_sprintf_addr_46872 sip_sprintf_addr 0 46872 NULL | 101698 | +sip_sprintf_addr_46872 sip_sprintf_addr 0 46872 NULL |
102471 | +rvmalloc_46873 rvmalloc 1 46873 NULL | 101699 | +rvmalloc_46873 rvmalloc 1 46873 NULL |
@@ -102488,6 +101716,7 @@ index 0000000..7982a0c | |||
102488 | +sel_write_bool_46996 sel_write_bool 3 46996 &gfs2_xattr_system_set_46996 | 101716 | +sel_write_bool_46996 sel_write_bool 3 46996 &gfs2_xattr_system_set_46996 |
102489 | +ttm_bo_io_47000 ttm_bo_io 5 47000 NULL | 101717 | +ttm_bo_io_47000 ttm_bo_io 5 47000 NULL |
102490 | +blk_rq_map_kern_47004 blk_rq_map_kern 4 47004 NULL | 101718 | +blk_rq_map_kern_47004 blk_rq_map_kern 4 47004 NULL |
101719 | +add_free_space_entry_47005 add_free_space_entry 2 47005 NULL | ||
102491 | +__map_single_47020 __map_single 3-4-7 47020 NULL | 101720 | +__map_single_47020 __map_single 3-4-7 47020 NULL |
102492 | +cx231xx_init_bulk_47024 cx231xx_init_bulk 3-2 47024 NULL | 101721 | +cx231xx_init_bulk_47024 cx231xx_init_bulk 3-2 47024 NULL |
102493 | +swiotlb_sync_single_47031 swiotlb_sync_single 2 47031 NULL | 101722 | +swiotlb_sync_single_47031 swiotlb_sync_single 2 47031 NULL |
@@ -102496,6 +101725,7 @@ index 0000000..7982a0c | |||
102496 | +ufs_new_fragments_47070 ufs_new_fragments 3-5-4 47070 NULL | 101725 | +ufs_new_fragments_47070 ufs_new_fragments 3-5-4 47070 NULL |
102497 | +pipeline_dec_packet_in_read_47076 pipeline_dec_packet_in_read 3 47076 NULL | 101726 | +pipeline_dec_packet_in_read_47076 pipeline_dec_packet_in_read 3 47076 NULL |
102498 | +scsi_deactivate_tcq_47086 scsi_deactivate_tcq 2 47086 NULL | 101727 | +scsi_deactivate_tcq_47086 scsi_deactivate_tcq 2 47086 NULL |
101728 | +iwl_dump_nic_event_log_47089 iwl_dump_nic_event_log 0 47089 NULL | ||
102499 | +mousedev_read_47123 mousedev_read 3 47123 NULL | 101729 | +mousedev_read_47123 mousedev_read 3 47123 NULL |
102500 | +ses_recv_diag_47143 ses_recv_diag 4 47143 NULL nohasharray | 101730 | +ses_recv_diag_47143 ses_recv_diag 4 47143 NULL nohasharray |
102501 | +acpi_ut_initialize_buffer_47143 acpi_ut_initialize_buffer 2 47143 &ses_recv_diag_47143 | 101731 | +acpi_ut_initialize_buffer_47143 acpi_ut_initialize_buffer 2 47143 &ses_recv_diag_47143 |
@@ -102515,7 +101745,9 @@ index 0000000..7982a0c | |||
102515 | +tty_audit_log_47280 tty_audit_log 8 47280 NULL | 101745 | +tty_audit_log_47280 tty_audit_log 8 47280 NULL |
102516 | +gfs2_readpages_47285 gfs2_readpages 4 47285 NULL | 101746 | +gfs2_readpages_47285 gfs2_readpages 4 47285 NULL |
102517 | +vsnprintf_47291 vsnprintf 0 47291 NULL | 101747 | +vsnprintf_47291 vsnprintf 0 47291 NULL |
101748 | +SYSC_semop_47292 SYSC_semop 3 47292 NULL | ||
102518 | +tx_internal_desc_overflow_read_47300 tx_internal_desc_overflow_read 3 47300 NULL | 101749 | +tx_internal_desc_overflow_read_47300 tx_internal_desc_overflow_read 3 47300 NULL |
101750 | +SyS_madvise_47354 SyS_madvise 1 47354 NULL | ||
102519 | +ieee80211_if_read_dot11MeshHoldingTimeout_47356 ieee80211_if_read_dot11MeshHoldingTimeout 3 47356 NULL | 101751 | +ieee80211_if_read_dot11MeshHoldingTimeout_47356 ieee80211_if_read_dot11MeshHoldingTimeout 3 47356 NULL |
102520 | +avc_get_hash_stats_47359 avc_get_hash_stats 0 47359 NULL | 101752 | +avc_get_hash_stats_47359 avc_get_hash_stats 0 47359 NULL |
102521 | +find_first_zero_bit_le_47369 find_first_zero_bit_le 2 47369 NULL | 101753 | +find_first_zero_bit_le_47369 find_first_zero_bit_le 2 47369 NULL |
@@ -102527,13 +101759,17 @@ index 0000000..7982a0c | |||
102527 | +pfkey_sendmsg_47394 pfkey_sendmsg 4 47394 NULL | 101759 | +pfkey_sendmsg_47394 pfkey_sendmsg 4 47394 NULL |
102528 | +gfn_to_pfn_prot_47398 gfn_to_pfn_prot 2 47398 NULL | 101760 | +gfn_to_pfn_prot_47398 gfn_to_pfn_prot 2 47398 NULL |
102529 | +ocfs2_resv_end_47408 ocfs2_resv_end 0 47408 NULL | 101761 | +ocfs2_resv_end_47408 ocfs2_resv_end 0 47408 NULL |
101762 | +sta_vht_capa_read_47409 sta_vht_capa_read 3 47409 NULL | ||
102530 | +crypto_ablkcipher_alignmask_47410 crypto_ablkcipher_alignmask 0 47410 NULL | 101763 | +crypto_ablkcipher_alignmask_47410 crypto_ablkcipher_alignmask 0 47410 NULL |
102531 | +vzalloc_47421 vzalloc 1 47421 NULL | 101764 | +vzalloc_47421 vzalloc 1 47421 NULL |
101765 | +hash_ipportip4_expire_47426 hash_ipportip4_expire 3 47426 NULL | ||
102532 | +posix_acl_from_disk_47445 posix_acl_from_disk 2 47445 NULL | 101766 | +posix_acl_from_disk_47445 posix_acl_from_disk 2 47445 NULL |
102533 | +__load_mapping_47460 __load_mapping 2 47460 NULL | 101767 | +__load_mapping_47460 __load_mapping 2 47460 NULL |
101768 | +nvme_trans_send_fw_cmd_47479 nvme_trans_send_fw_cmd 4 47479 NULL | ||
102534 | +wb_force_mapping_47485 wb_force_mapping 2 47485 NULL nohasharray | 101769 | +wb_force_mapping_47485 wb_force_mapping 2 47485 NULL nohasharray |
102535 | +newpart_47485 newpart 6 47485 &wb_force_mapping_47485 | 101770 | +newpart_47485 newpart 6 47485 &wb_force_mapping_47485 |
102536 | +core_sys_select_47494 core_sys_select 1 47494 NULL | 101771 | +core_sys_select_47494 core_sys_select 1 47494 NULL |
101772 | +alloc_arraycache_47505 alloc_arraycache 2 47505 NULL | ||
102537 | +unlink_simple_47506 unlink_simple 3 47506 NULL | 101773 | +unlink_simple_47506 unlink_simple 3 47506 NULL |
102538 | +ufs_inode_getblock_47512 ufs_inode_getblock 4 47512 NULL | 101774 | +ufs_inode_getblock_47512 ufs_inode_getblock 4 47512 NULL |
102539 | +vscnprintf_47533 vscnprintf 0-2 47533 NULL nohasharray | 101775 | +vscnprintf_47533 vscnprintf 0-2 47533 NULL nohasharray |
@@ -102541,8 +101777,11 @@ index 0000000..7982a0c | |||
102541 | +oz_events_read_47535 oz_events_read 3 47535 NULL | 101777 | +oz_events_read_47535 oz_events_read 3 47535 NULL |
102542 | +ieee80211_if_fmt_min_discovery_timeout_47539 ieee80211_if_fmt_min_discovery_timeout 3 47539 NULL | 101778 | +ieee80211_if_fmt_min_discovery_timeout_47539 ieee80211_if_fmt_min_discovery_timeout 3 47539 NULL |
102543 | +read_ldt_47570 read_ldt 2 47570 NULL | 101779 | +read_ldt_47570 read_ldt 2 47570 NULL |
101780 | +_rtl_rx_get_padding_47572 _rtl_rx_get_padding 0 47572 NULL nohasharray | ||
101781 | +isku_sysfs_read_last_set_47572 isku_sysfs_read_last_set 6 47572 &_rtl_rx_get_padding_47572 | ||
102544 | +pci_iomap_47575 pci_iomap 3 47575 NULL | 101782 | +pci_iomap_47575 pci_iomap 3 47575 NULL |
102545 | +rpipe_get_idx_47579 rpipe_get_idx 2 47579 NULL | 101783 | +rpipe_get_idx_47579 rpipe_get_idx 2 47579 NULL |
101784 | +SYSC_fcntl64_47581 SYSC_fcntl64 3 47581 NULL | ||
102546 | +ext4_kvzalloc_47605 ext4_kvzalloc 1 47605 NULL | 101785 | +ext4_kvzalloc_47605 ext4_kvzalloc 1 47605 NULL |
102547 | +sctp_ssnmap_new_47608 sctp_ssnmap_new 1-2 47608 NULL | 101786 | +sctp_ssnmap_new_47608 sctp_ssnmap_new 1-2 47608 NULL |
102548 | +uea_request_47613 uea_request 4 47613 NULL | 101787 | +uea_request_47613 uea_request 4 47613 NULL |
@@ -102550,6 +101789,7 @@ index 0000000..7982a0c | |||
102550 | +twl4030_clear_set_47624 twl4030_clear_set 4 47624 NULL | 101789 | +twl4030_clear_set_47624 twl4030_clear_set 4 47624 NULL |
102551 | +irq_set_chip_47638 irq_set_chip 1 47638 NULL | 101790 | +irq_set_chip_47638 irq_set_chip 1 47638 NULL |
102552 | +__build_packet_message_47643 __build_packet_message 3-9 47643 NULL | 101791 | +__build_packet_message_47643 __build_packet_message 3-9 47643 NULL |
101792 | +global_rt_runtime_47712 global_rt_runtime 0 47712 NULL | ||
102553 | +save_microcode_47717 save_microcode 3 47717 NULL | 101793 | +save_microcode_47717 save_microcode 3 47717 NULL |
102554 | +bits_to_user_47733 bits_to_user 2-3 47733 NULL | 101794 | +bits_to_user_47733 bits_to_user 2-3 47733 NULL |
102555 | +carl9170_debugfs_read_47738 carl9170_debugfs_read 3 47738 NULL | 101795 | +carl9170_debugfs_read_47738 carl9170_debugfs_read 3 47738 NULL |
@@ -102559,15 +101799,18 @@ index 0000000..7982a0c | |||
102559 | +alloc_sched_domains_47756 alloc_sched_domains 1 47756 NULL | 101799 | +alloc_sched_domains_47756 alloc_sched_domains 1 47756 NULL |
102560 | +i915_wedged_write_47771 i915_wedged_write 3 47771 NULL | 101800 | +i915_wedged_write_47771 i915_wedged_write 3 47771 NULL |
102561 | +uwb_ie_dump_hex_47774 uwb_ie_dump_hex 4 47774 NULL | 101801 | +uwb_ie_dump_hex_47774 uwb_ie_dump_hex 4 47774 NULL |
101802 | +SyS_setgroups16_47780 SyS_setgroups16 1 47780 NULL | ||
102562 | +error_error_numll_frame_cts_start_read_47781 error_error_numll_frame_cts_start_read 3 47781 NULL | 101803 | +error_error_numll_frame_cts_start_read_47781 error_error_numll_frame_cts_start_read 3 47781 NULL |
102563 | +posix_acl_fix_xattr_from_user_47793 posix_acl_fix_xattr_from_user 2 47793 NULL | 101804 | +posix_acl_fix_xattr_from_user_47793 posix_acl_fix_xattr_from_user 2 47793 NULL |
102564 | +stmmac_set_bfsize_47834 stmmac_set_bfsize 0 47834 NULL | 101805 | +stmmac_set_bfsize_47834 stmmac_set_bfsize 0 47834 NULL |
101806 | +KEY_SIZE_47855 KEY_SIZE 0 47855 NULL | ||
102565 | +ubifs_unpack_nnode_47866 ubifs_unpack_nnode 0 47866 NULL | 101807 | +ubifs_unpack_nnode_47866 ubifs_unpack_nnode 0 47866 NULL |
102566 | +vhci_read_47878 vhci_read 3 47878 NULL | 101808 | +vhci_read_47878 vhci_read 3 47878 NULL |
102567 | +keyctl_instantiate_key_common_47889 keyctl_instantiate_key_common 4 47889 NULL | 101809 | +keyctl_instantiate_key_common_47889 keyctl_instantiate_key_common 4 47889 NULL |
102568 | +load_mapping_47904 load_mapping 3 47904 NULL | 101810 | +load_mapping_47904 load_mapping 3 47904 NULL |
102569 | +osd_req_read_sg_47905 osd_req_read_sg 5 47905 NULL | 101811 | +osd_req_read_sg_47905 osd_req_read_sg 5 47905 NULL |
102570 | +comedi_write_47926 comedi_write 3 47926 NULL | 101812 | +comedi_write_47926 comedi_write 3 47926 NULL |
101813 | +nvme_trans_get_blk_desc_len_47946 nvme_trans_get_blk_desc_len 0-2 47946 NULL | ||
102571 | +lp8788_irq_map_47964 lp8788_irq_map 2 47964 NULL | 101814 | +lp8788_irq_map_47964 lp8788_irq_map 2 47964 NULL |
102572 | +iwl_dbgfs_ucode_tracing_read_47983 iwl_dbgfs_ucode_tracing_read 3 47983 NULL nohasharray | 101815 | +iwl_dbgfs_ucode_tracing_read_47983 iwl_dbgfs_ucode_tracing_read 3 47983 NULL nohasharray |
102573 | +mempool_resize_47983 mempool_resize 2 47983 &iwl_dbgfs_ucode_tracing_read_47983 | 101816 | +mempool_resize_47983 mempool_resize 2 47983 &iwl_dbgfs_ucode_tracing_read_47983 |
@@ -102576,9 +101819,11 @@ index 0000000..7982a0c | |||
102576 | +ffs_epfile_write_48014 ffs_epfile_write 3 48014 NULL | 101819 | +ffs_epfile_write_48014 ffs_epfile_write 3 48014 NULL |
102577 | +bio_integrity_set_tag_48035 bio_integrity_set_tag 3 48035 NULL | 101820 | +bio_integrity_set_tag_48035 bio_integrity_set_tag 3 48035 NULL |
102578 | +pppoe_sendmsg_48039 pppoe_sendmsg 4 48039 NULL | 101821 | +pppoe_sendmsg_48039 pppoe_sendmsg 4 48039 NULL |
101822 | +SYSC_writev_48040 SYSC_writev 3 48040 NULL | ||
102579 | +wpan_phy_alloc_48056 wpan_phy_alloc 1 48056 NULL | 101823 | +wpan_phy_alloc_48056 wpan_phy_alloc 1 48056 NULL |
102580 | +posix_acl_alloc_48063 posix_acl_alloc 1 48063 NULL | 101824 | +posix_acl_alloc_48063 posix_acl_alloc 1 48063 NULL |
102581 | +palmas_bulk_write_48068 palmas_bulk_write 2-3-5 48068 NULL | 101825 | +palmas_bulk_write_48068 palmas_bulk_write 2-3-5 48068 NULL |
101826 | +disc_write_48070 disc_write 3 48070 NULL | ||
102582 | +mmc_alloc_host_48097 mmc_alloc_host 1 48097 NULL | 101827 | +mmc_alloc_host_48097 mmc_alloc_host 1 48097 NULL |
102583 | +skb_copy_datagram_const_iovec_48102 skb_copy_datagram_const_iovec 4-2-5 48102 NULL | 101828 | +skb_copy_datagram_const_iovec_48102 skb_copy_datagram_const_iovec 4-2-5 48102 NULL |
102584 | +radio_isa_common_probe_48107 radio_isa_common_probe 3 48107 NULL | 101829 | +radio_isa_common_probe_48107 radio_isa_common_probe 3 48107 NULL |
@@ -102588,9 +101833,11 @@ index 0000000..7982a0c | |||
102588 | +bitmap_onto_48152 bitmap_onto 4 48152 NULL | 101833 | +bitmap_onto_48152 bitmap_onto 4 48152 NULL |
102589 | +isr_dma1_done_read_48159 isr_dma1_done_read 3 48159 NULL | 101834 | +isr_dma1_done_read_48159 isr_dma1_done_read 3 48159 NULL |
102590 | +c4iw_id_table_alloc_48163 c4iw_id_table_alloc 3 48163 NULL | 101835 | +c4iw_id_table_alloc_48163 c4iw_id_table_alloc 3 48163 NULL |
102591 | +ocfs2_find_next_zero_bit_unaligned_48170 ocfs2_find_next_zero_bit_unaligned 2-3 48170 NULL | 101836 | +ocfs2_find_next_zero_bit_unaligned_48170 ocfs2_find_next_zero_bit_unaligned 2-3 48170 NULL nohasharray |
101837 | +rbd_obj_method_sync_48170 rbd_obj_method_sync 8 48170 &ocfs2_find_next_zero_bit_unaligned_48170 | ||
102592 | +alloc_cc770dev_48186 alloc_cc770dev 1 48186 NULL | 101838 | +alloc_cc770dev_48186 alloc_cc770dev 1 48186 NULL |
102593 | +init_ipath_48187 init_ipath 1 48187 NULL | 101839 | +init_ipath_48187 init_ipath 1 48187 NULL |
101840 | +brcmf_sdio_chip_cm3_exitdl_48192 brcmf_sdio_chip_cm3_exitdl 4 48192 NULL | ||
102594 | +snd_seq_dump_var_event_48209 snd_seq_dump_var_event 0 48209 NULL | 101841 | +snd_seq_dump_var_event_48209 snd_seq_dump_var_event 0 48209 NULL |
102595 | +is_block_in_journal_48223 is_block_in_journal 3 48223 NULL | 101842 | +is_block_in_journal_48223 is_block_in_journal 3 48223 NULL |
102596 | +uv_blade_nr_possible_cpus_48226 uv_blade_nr_possible_cpus 0 48226 NULL | 101843 | +uv_blade_nr_possible_cpus_48226 uv_blade_nr_possible_cpus 0 48226 NULL |
@@ -102611,6 +101858,7 @@ index 0000000..7982a0c | |||
102611 | +lbs_debugfs_write_48413 lbs_debugfs_write 3 48413 NULL | 101858 | +lbs_debugfs_write_48413 lbs_debugfs_write 3 48413 NULL |
102612 | +pwr_tx_without_ps_read_48423 pwr_tx_without_ps_read 3 48423 NULL | 101859 | +pwr_tx_without_ps_read_48423 pwr_tx_without_ps_read 3 48423 NULL |
102613 | +nfs4_alloc_pages_48426 nfs4_alloc_pages 1 48426 NULL | 101860 | +nfs4_alloc_pages_48426 nfs4_alloc_pages 1 48426 NULL |
101861 | +print_filtered_48442 print_filtered 2-0 48442 NULL | ||
102614 | +tun_recvmsg_48463 tun_recvmsg 4 48463 NULL | 101862 | +tun_recvmsg_48463 tun_recvmsg 4 48463 NULL |
102615 | +r8712_usbctrl_vendorreq_48489 r8712_usbctrl_vendorreq 6 48489 NULL | 101863 | +r8712_usbctrl_vendorreq_48489 r8712_usbctrl_vendorreq 6 48489 NULL |
102616 | +send_control_msg_48498 send_control_msg 6 48498 NULL | 101864 | +send_control_msg_48498 send_control_msg 6 48498 NULL |
@@ -102627,6 +101875,7 @@ index 0000000..7982a0c | |||
102627 | +do_ip_vs_set_ctl_48641 do_ip_vs_set_ctl 4 48641 NULL | 101875 | +do_ip_vs_set_ctl_48641 do_ip_vs_set_ctl 4 48641 NULL |
102628 | +mtd_read_48655 mtd_read 0 48655 NULL | 101876 | +mtd_read_48655 mtd_read 0 48655 NULL |
102629 | +aes_encrypt_packets_read_48666 aes_encrypt_packets_read 3 48666 NULL | 101877 | +aes_encrypt_packets_read_48666 aes_encrypt_packets_read 3 48666 NULL |
101878 | +ore_get_rw_state_48667 ore_get_rw_state 4 48667 NULL | ||
102630 | +sm501_create_subdev_48668 sm501_create_subdev 3-4 48668 NULL nohasharray | 101879 | +sm501_create_subdev_48668 sm501_create_subdev 3-4 48668 NULL nohasharray |
102631 | +sys_setgroups_48668 sys_setgroups 1 48668 &sm501_create_subdev_48668 | 101880 | +sys_setgroups_48668 sys_setgroups 1 48668 &sm501_create_subdev_48668 |
102632 | +altera_drscan_48698 altera_drscan 2 48698 NULL | 101881 | +altera_drscan_48698 altera_drscan 2 48698 NULL |
@@ -102641,7 +101890,8 @@ index 0000000..7982a0c | |||
102641 | +efi_memory_uc_48828 efi_memory_uc 1 48828 NULL | 101890 | +efi_memory_uc_48828 efi_memory_uc 1 48828 NULL |
102642 | +azx_get_position_48841 azx_get_position 0 48841 NULL | 101891 | +azx_get_position_48841 azx_get_position 0 48841 NULL |
102643 | +vc_do_resize_48842 vc_do_resize 3-4 48842 NULL | 101892 | +vc_do_resize_48842 vc_do_resize 3-4 48842 NULL |
102644 | +viafb_dvp1_proc_write_48864 viafb_dvp1_proc_write 3 48864 NULL | 101893 | +C_SYSC_pwritev64_48864 C_SYSC_pwritev64 3 48864 NULL nohasharray |
101894 | +viafb_dvp1_proc_write_48864 viafb_dvp1_proc_write 3 48864 &C_SYSC_pwritev64_48864 | ||
102645 | +__ffs_ep0_read_events_48868 __ffs_ep0_read_events 3 48868 NULL | 101895 | +__ffs_ep0_read_events_48868 __ffs_ep0_read_events 3 48868 NULL |
102646 | +sys_setgroups16_48882 sys_setgroups16 1 48882 NULL | 101896 | +sys_setgroups16_48882 sys_setgroups16 1 48882 NULL |
102647 | +ext2_alloc_branch_48889 ext2_alloc_branch 4 48889 NULL | 101897 | +ext2_alloc_branch_48889 ext2_alloc_branch 4 48889 NULL |
@@ -102657,6 +101907,7 @@ index 0000000..7982a0c | |||
102657 | +_alloc_set_attr_list_48991 _alloc_set_attr_list 4 48991 NULL | 101907 | +_alloc_set_attr_list_48991 _alloc_set_attr_list 4 48991 NULL |
102658 | +rds_rm_size_48996 rds_rm_size 0-2 48996 NULL | 101908 | +rds_rm_size_48996 rds_rm_size 0-2 48996 NULL |
102659 | +sel_write_enforce_48998 sel_write_enforce 3 48998 NULL | 101909 | +sel_write_enforce_48998 sel_write_enforce 3 48998 NULL |
101910 | +filemap_check_errors_49022 filemap_check_errors 0 49022 NULL | ||
102660 | +transient_status_49027 transient_status 4 49027 NULL | 101911 | +transient_status_49027 transient_status 4 49027 NULL |
102661 | +ipath_reg_user_mr_49038 ipath_reg_user_mr 2-3 49038 NULL | 101912 | +ipath_reg_user_mr_49038 ipath_reg_user_mr 2-3 49038 NULL |
102662 | +setup_msi_irq_49052 setup_msi_irq 3-4 49052 NULL | 101913 | +setup_msi_irq_49052 setup_msi_irq 3-4 49052 NULL |
@@ -102664,7 +101915,8 @@ index 0000000..7982a0c | |||
102664 | +scsi_register_49094 scsi_register 2 49094 NULL | 101915 | +scsi_register_49094 scsi_register 2 49094 NULL |
102665 | +paging64_walk_addr_nested_49100 paging64_walk_addr_nested 3 49100 NULL | 101916 | +paging64_walk_addr_nested_49100 paging64_walk_addr_nested 3 49100 NULL |
102666 | +compat_do_readv_writev_49102 compat_do_readv_writev 4 49102 NULL | 101917 | +compat_do_readv_writev_49102 compat_do_readv_writev 4 49102 NULL |
102667 | +xfrm_replay_state_esn_len_49119 xfrm_replay_state_esn_len 0 49119 NULL | 101918 | +check_exists_49119 check_exists 2 49119 NULL nohasharray |
101919 | +xfrm_replay_state_esn_len_49119 xfrm_replay_state_esn_len 0 49119 &check_exists_49119 | ||
102668 | +pt_read_49136 pt_read 3 49136 NULL | 101920 | +pt_read_49136 pt_read 3 49136 NULL |
102669 | +tipc_multicast_49144 tipc_multicast 5 49144 NULL | 101921 | +tipc_multicast_49144 tipc_multicast 5 49144 NULL |
102670 | +atyfb_setup_generic_49151 atyfb_setup_generic 3 49151 NULL | 101922 | +atyfb_setup_generic_49151 atyfb_setup_generic 3 49151 NULL |
@@ -102676,14 +101928,18 @@ index 0000000..7982a0c | |||
102676 | +iwl_dbgfs_ucode_general_stats_read_49199 iwl_dbgfs_ucode_general_stats_read 3 49199 NULL | 101928 | +iwl_dbgfs_ucode_general_stats_read_49199 iwl_dbgfs_ucode_general_stats_read 3 49199 NULL |
102677 | +il4965_rs_sta_dbgfs_stats_table_read_49206 il4965_rs_sta_dbgfs_stats_table_read 3 49206 NULL | 101929 | +il4965_rs_sta_dbgfs_stats_table_read_49206 il4965_rs_sta_dbgfs_stats_table_read 3 49206 NULL |
102678 | +do_jffs2_getxattr_49210 do_jffs2_getxattr 0 49210 NULL | 101930 | +do_jffs2_getxattr_49210 do_jffs2_getxattr 0 49210 NULL |
101931 | +resp_write_same_49217 resp_write_same 2 49217 NULL | ||
102679 | +nouveau_therm_create__49228 nouveau_therm_create_ 4 49228 NULL | 101932 | +nouveau_therm_create__49228 nouveau_therm_create_ 4 49228 NULL |
102680 | +nouveau_i2c_port_create__49237 nouveau_i2c_port_create_ 6 49237 NULL | 101933 | +nouveau_i2c_port_create__49237 nouveau_i2c_port_create_ 6 49237 NULL |
102681 | +hugetlb_cgroup_read_49259 hugetlb_cgroup_read 5 49259 NULL | 101934 | +hugetlb_cgroup_read_49259 hugetlb_cgroup_read 5 49259 NULL |
102682 | +ieee80211_if_read_rssi_threshold_49260 ieee80211_if_read_rssi_threshold 3 49260 NULL | 101935 | +ieee80211_if_read_rssi_threshold_49260 ieee80211_if_read_rssi_threshold 3 49260 NULL |
101936 | +isku_sysfs_read_keys_media_49268 isku_sysfs_read_keys_media 6 49268 NULL | ||
102683 | +osd_req_add_get_attr_list_49278 osd_req_add_get_attr_list 3 49278 NULL | 101937 | +osd_req_add_get_attr_list_49278 osd_req_add_get_attr_list 3 49278 NULL |
102684 | +rx_filter_beacon_filter_read_49279 rx_filter_beacon_filter_read 3 49279 NULL | 101938 | +rx_filter_beacon_filter_read_49279 rx_filter_beacon_filter_read 3 49279 NULL |
102685 | +uio_read_49300 uio_read 3 49300 NULL | 101939 | +uio_read_49300 uio_read 3 49300 NULL |
102686 | +ocfs2_resmap_find_free_bits_49301 ocfs2_resmap_find_free_bits 3 49301 NULL | 101940 | +ocfs2_resmap_find_free_bits_49301 ocfs2_resmap_find_free_bits 3 49301 NULL |
101941 | +isku_sysfs_read_keys_macro_49312 isku_sysfs_read_keys_macro 6 49312 NULL | ||
101942 | +SYSC_mincore_49319 SYSC_mincore 1 49319 NULL | ||
102687 | +fwtty_port_handler_49327 fwtty_port_handler 9 49327 NULL | 101943 | +fwtty_port_handler_49327 fwtty_port_handler 9 49327 NULL |
102688 | +srpt_alloc_ioctx_ring_49330 srpt_alloc_ioctx_ring 2-3-4 49330 NULL | 101944 | +srpt_alloc_ioctx_ring_49330 srpt_alloc_ioctx_ring 2-3-4 49330 NULL |
102689 | +cfpkt_setlen_49343 cfpkt_setlen 2 49343 NULL | 101945 | +cfpkt_setlen_49343 cfpkt_setlen 2 49343 NULL |
@@ -102697,22 +101953,26 @@ index 0000000..7982a0c | |||
102697 | +samples_to_bytes_49426 samples_to_bytes 0-2 49426 NULL | 101953 | +samples_to_bytes_49426 samples_to_bytes 0-2 49426 NULL |
102698 | +md_domain_init_49432 md_domain_init 2 49432 NULL | 101954 | +md_domain_init_49432 md_domain_init 2 49432 NULL |
102699 | +compat_do_msg_fill_49440 compat_do_msg_fill 3 49440 NULL | 101955 | +compat_do_msg_fill_49440 compat_do_msg_fill 3 49440 NULL |
101956 | +get_lru_size_49441 get_lru_size 0 49441 NULL | ||
102700 | +agp_3_5_isochronous_node_enable_49465 agp_3_5_isochronous_node_enable 3 49465 NULL | 101957 | +agp_3_5_isochronous_node_enable_49465 agp_3_5_isochronous_node_enable 3 49465 NULL |
102701 | +xfs_iformat_local_49472 xfs_iformat_local 4 49472 NULL | 101958 | +xfs_iformat_local_49472 xfs_iformat_local 4 49472 NULL |
102702 | +savu_sysfs_read_49473 savu_sysfs_read 6 49473 NULL | 101959 | +savu_sysfs_read_49473 savu_sysfs_read 6 49473 NULL |
102703 | +isr_decrypt_done_read_49490 isr_decrypt_done_read 3 49490 NULL | 101960 | +isr_decrypt_done_read_49490 isr_decrypt_done_read 3 49490 NULL |
101961 | +SyS_listxattr_49519 SyS_listxattr 3 49519 NULL | ||
102704 | +emulator_write_phys_49520 emulator_write_phys 2-4 49520 NULL | 101962 | +emulator_write_phys_49520 emulator_write_phys 2-4 49520 NULL |
102705 | +acpi_os_ioremap_49523 acpi_os_ioremap 1-2 49523 NULL | 101963 | +acpi_os_ioremap_49523 acpi_os_ioremap 1-2 49523 NULL |
102706 | +smk_write_access_49561 smk_write_access 3 49561 NULL | 101964 | +smk_write_access_49561 smk_write_access 3 49561 NULL |
102707 | +ntfs_malloc_nofs_49572 ntfs_malloc_nofs 1 49572 NULL | 101965 | +ntfs_malloc_nofs_49572 ntfs_malloc_nofs 1 49572 NULL |
102708 | +alloc_chunk_49575 alloc_chunk 1 49575 NULL | 101966 | +alloc_chunk_49575 alloc_chunk 1 49575 NULL |
102709 | +sctp_setsockopt_default_send_param_49578 sctp_setsockopt_default_send_param 3 49578 NULL | 101967 | +sctp_setsockopt_default_send_param_49578 sctp_setsockopt_default_send_param 3 49578 NULL |
101968 | +tap_write_49595 tap_write 3 49595 NULL | ||
102710 | +isr_wakeups_read_49607 isr_wakeups_read 3 49607 NULL | 101969 | +isr_wakeups_read_49607 isr_wakeups_read 3 49607 NULL |
102711 | +btrfs_mksubvol_49616 btrfs_mksubvol 3 49616 NULL | 101970 | +btrfs_mksubvol_49616 btrfs_mksubvol 3 49616 NULL |
102712 | +heap_init_49617 heap_init 2 49617 NULL | 101971 | +heap_init_49617 heap_init 2 49617 NULL |
102713 | +smk_write_doi_49621 smk_write_doi 3 49621 NULL | 101972 | +smk_write_doi_49621 smk_write_doi 3 49621 NULL |
102714 | +btrfsic_cmp_log_and_dev_bytenr_49628 btrfsic_cmp_log_and_dev_bytenr 2 49628 NULL | 101973 | +btrfsic_cmp_log_and_dev_bytenr_49628 btrfsic_cmp_log_and_dev_bytenr 2 49628 NULL |
102715 | +aa_simple_write_to_buffer_49683 aa_simple_write_to_buffer 3-4 49683 NULL | 101974 | +aa_simple_write_to_buffer_49683 aa_simple_write_to_buffer 3-4 49683 NULL |
101975 | +SyS_pwritev_49688 SyS_pwritev 3 49688 NULL | ||
102716 | +sys_gethostname_49698 sys_gethostname 2 49698 NULL | 101976 | +sys_gethostname_49698 sys_gethostname 2 49698 NULL |
102717 | +cx2341x_ctrl_new_menu_49700 cx2341x_ctrl_new_menu 3 49700 NULL | 101977 | +cx2341x_ctrl_new_menu_49700 cx2341x_ctrl_new_menu 3 49700 NULL |
102718 | +dm_thin_insert_block_49720 dm_thin_insert_block 2-3 49720 NULL | 101978 | +dm_thin_insert_block_49720 dm_thin_insert_block 2-3 49720 NULL |
@@ -102724,16 +101984,18 @@ index 0000000..7982a0c | |||
102724 | +fuse_wr_pages_49753 fuse_wr_pages 0-1-2 49753 NULL | 101984 | +fuse_wr_pages_49753 fuse_wr_pages 0-1-2 49753 NULL |
102725 | +key_conf_keylen_read_49758 key_conf_keylen_read 3 49758 NULL | 101985 | +key_conf_keylen_read_49758 key_conf_keylen_read 3 49758 NULL |
102726 | +fuse_conn_waiting_read_49762 fuse_conn_waiting_read 3 49762 NULL | 101986 | +fuse_conn_waiting_read_49762 fuse_conn_waiting_read 3 49762 NULL |
102727 | +isku_sysfs_write_49767 isku_sysfs_write 6 49767 NULL | 101987 | +isku_sysfs_write_49767 isku_sysfs_write 6-5 49767 NULL |
102728 | +ceph_osdc_readpages_49789 ceph_osdc_readpages 10-4 49789 NULL | 101988 | +ceph_osdc_readpages_49789 ceph_osdc_readpages 10-4 49789 NULL |
102729 | +nfs4_acl_new_49806 nfs4_acl_new 1 49806 NULL | 101989 | +nfs4_acl_new_49806 nfs4_acl_new 1 49806 NULL |
102730 | +arch_gnttab_map_status_49812 arch_gnttab_map_status 3 49812 NULL | 101990 | +arch_gnttab_map_status_49812 arch_gnttab_map_status 3 49812 NULL |
102731 | +ntfs_copy_from_user_iovec_49829 ntfs_copy_from_user_iovec 3-6-0 49829 NULL | 101991 | +ntfs_copy_from_user_iovec_49829 ntfs_copy_from_user_iovec 3-6-0 49829 NULL |
102732 | +add_uuid_49831 add_uuid 4 49831 NULL | 101992 | +add_uuid_49831 add_uuid 4 49831 NULL |
101993 | +tcf_csum_ipv4_tcp_49834 tcf_csum_ipv4_tcp 3 49834 NULL | ||
102733 | +ath6kl_fwlog_block_read_49836 ath6kl_fwlog_block_read 3 49836 NULL | 101994 | +ath6kl_fwlog_block_read_49836 ath6kl_fwlog_block_read 3 49836 NULL |
102734 | +twl4030_write_49846 twl4030_write 2 49846 NULL | 101995 | +twl4030_write_49846 twl4030_write 2 49846 NULL |
102735 | +scsi_dispatch_cmd_entry_49848 scsi_dispatch_cmd_entry 3 49848 NULL | 101996 | +scsi_dispatch_cmd_entry_49848 scsi_dispatch_cmd_entry 3 49848 NULL |
102736 | +timeradd_entry_49850 timeradd_entry 3 49850 NULL | 101997 | +timeradd_entry_49850 timeradd_entry 3 49850 NULL |
101998 | +btrfs_subvolume_reserve_metadata_49859 btrfs_subvolume_reserve_metadata 3 49859 NULL | ||
102737 | +sctp_setsockopt_bindx_49870 sctp_setsockopt_bindx 3 49870 NULL | 101999 | +sctp_setsockopt_bindx_49870 sctp_setsockopt_bindx 3 49870 NULL |
102738 | +ceph_get_caps_49890 ceph_get_caps 0 49890 NULL | 102000 | +ceph_get_caps_49890 ceph_get_caps 0 49890 NULL |
102739 | +__cow_file_range_49901 __cow_file_range 5 49901 NULL | 102001 | +__cow_file_range_49901 __cow_file_range 5 49901 NULL |
@@ -102741,6 +102003,7 @@ index 0000000..7982a0c | |||
102741 | +batadv_tt_realloc_packet_buff_49960 batadv_tt_realloc_packet_buff 4 49960 NULL | 102003 | +batadv_tt_realloc_packet_buff_49960 batadv_tt_realloc_packet_buff 4 49960 NULL |
102742 | +b43legacy_pio_read_49978 b43legacy_pio_read 0 49978 NULL | 102004 | +b43legacy_pio_read_49978 b43legacy_pio_read 0 49978 NULL |
102743 | +ieee80211_if_fmt_dtim_count_49987 ieee80211_if_fmt_dtim_count 3 49987 NULL | 102005 | +ieee80211_if_fmt_dtim_count_49987 ieee80211_if_fmt_dtim_count 3 49987 NULL |
102006 | +sta2x11_swiotlb_alloc_coherent_49994 sta2x11_swiotlb_alloc_coherent 2 49994 NULL | ||
102744 | +l2cap_chan_send_49995 l2cap_chan_send 3 49995 NULL | 102007 | +l2cap_chan_send_49995 l2cap_chan_send 3 49995 NULL |
102745 | +__module_alloc_50004 __module_alloc 1 50004 NULL | 102008 | +__module_alloc_50004 __module_alloc 1 50004 NULL |
102746 | +dn_mss_from_pmtu_50011 dn_mss_from_pmtu 0-2 50011 NULL | 102009 | +dn_mss_from_pmtu_50011 dn_mss_from_pmtu 0-2 50011 NULL |
@@ -102755,6 +102018,7 @@ index 0000000..7982a0c | |||
102755 | +sock_setsockopt_50088 sock_setsockopt 5 50088 NULL | 102018 | +sock_setsockopt_50088 sock_setsockopt 5 50088 NULL |
102756 | +altera_swap_dr_50090 altera_swap_dr 2 50090 NULL | 102019 | +altera_swap_dr_50090 altera_swap_dr 2 50090 NULL |
102757 | +read_file_slot_50111 read_file_slot 3 50111 NULL | 102020 | +read_file_slot_50111 read_file_slot 3 50111 NULL |
102021 | +SYSC_preadv_50134 SYSC_preadv 3 50134 NULL | ||
102758 | +copy_items_50140 copy_items 6 50140 NULL | 102022 | +copy_items_50140 copy_items 6 50140 NULL |
102759 | +tx_frag_need_fragmentation_read_50153 tx_frag_need_fragmentation_read 3 50153 NULL | 102023 | +tx_frag_need_fragmentation_read_50153 tx_frag_need_fragmentation_read 3 50153 NULL |
102760 | +set_cmd_header_50155 set_cmd_header 0 50155 NULL | 102024 | +set_cmd_header_50155 set_cmd_header 0 50155 NULL |
@@ -102774,6 +102038,8 @@ index 0000000..7982a0c | |||
102774 | +afs_extract_data_50261 afs_extract_data 5 50261 NULL | 102038 | +afs_extract_data_50261 afs_extract_data 5 50261 NULL |
102775 | +rxrpc_setsockopt_50286 rxrpc_setsockopt 5 50286 NULL | 102039 | +rxrpc_setsockopt_50286 rxrpc_setsockopt 5 50286 NULL |
102776 | +soc_codec_reg_show_50302 soc_codec_reg_show 0 50302 NULL | 102040 | +soc_codec_reg_show_50302 soc_codec_reg_show 0 50302 NULL |
102041 | +SYSC_flistxattr_50307 SYSC_flistxattr 3 50307 NULL | ||
102042 | +SYSC_sched_setaffinity_50310 SYSC_sched_setaffinity 2 50310 NULL | ||
102777 | +soc_camera_read_50319 soc_camera_read 3 50319 NULL | 102043 | +soc_camera_read_50319 soc_camera_read 3 50319 NULL |
102778 | +do_launder_page_50329 do_launder_page 0 50329 NULL | 102044 | +do_launder_page_50329 do_launder_page 0 50329 NULL |
102779 | +nouveau_engine_create__50331 nouveau_engine_create_ 7 50331 NULL | 102045 | +nouveau_engine_create__50331 nouveau_engine_create_ 7 50331 NULL |
@@ -102782,16 +102048,20 @@ index 0000000..7982a0c | |||
102782 | +snd_pcm_lib_writev_50337 snd_pcm_lib_writev 0-3 50337 &ocfs2_block_to_cluster_group_50337 | 102048 | +snd_pcm_lib_writev_50337 snd_pcm_lib_writev 0-3 50337 &ocfs2_block_to_cluster_group_50337 |
102783 | +roccat_common2_send_with_status_50343 roccat_common2_send_with_status 4 50343 NULL | 102049 | +roccat_common2_send_with_status_50343 roccat_common2_send_with_status 4 50343 NULL |
102784 | +tpm_read_50344 tpm_read 3 50344 NULL | 102050 | +tpm_read_50344 tpm_read 3 50344 NULL |
102051 | +sched_clock_remote_50347 sched_clock_remote 0 50347 NULL | ||
102785 | +kvm_arch_create_memslot_50354 kvm_arch_create_memslot 2 50354 NULL | 102052 | +kvm_arch_create_memslot_50354 kvm_arch_create_memslot 2 50354 NULL |
102786 | +isdn_ppp_read_50356 isdn_ppp_read 4 50356 NULL | 102053 | +isdn_ppp_read_50356 isdn_ppp_read 4 50356 NULL |
102787 | +unpack_u16_chunk_50357 unpack_u16_chunk 0 50357 NULL | 102054 | +unpack_u16_chunk_50357 unpack_u16_chunk 0 50357 NULL |
102788 | +xfrm_send_migrate_50365 xfrm_send_migrate 5 50365 NULL | 102055 | +xfrm_send_migrate_50365 xfrm_send_migrate 5 50365 NULL |
102789 | +roccat_common2_receive_50369 roccat_common2_receive 4 50369 NULL | 102056 | +roccat_common2_receive_50369 roccat_common2_receive 4 50369 NULL |
102790 | +sl_alloc_bufs_50380 sl_alloc_bufs 2 50380 NULL | 102057 | +sl_alloc_bufs_50380 sl_alloc_bufs 2 50380 NULL |
102058 | +hash_ip6_expire_50390 hash_ip6_expire 3 50390 NULL | ||
102791 | +l2tp_ip_sendmsg_50411 l2tp_ip_sendmsg 4 50411 NULL | 102059 | +l2tp_ip_sendmsg_50411 l2tp_ip_sendmsg 4 50411 NULL |
102060 | +ceph_writepages_osd_request_50423 ceph_writepages_osd_request 5 50423 NULL | ||
102792 | +iscsi_create_conn_50425 iscsi_create_conn 2 50425 NULL | 102061 | +iscsi_create_conn_50425 iscsi_create_conn 2 50425 NULL |
102793 | +validate_acl_mac_addrs_50429 validate_acl_mac_addrs 0 50429 NULL | 102062 | +validate_acl_mac_addrs_50429 validate_acl_mac_addrs 0 50429 NULL |
102794 | +btrfs_error_discard_extent_50444 btrfs_error_discard_extent 2 50444 NULL | 102063 | +btrfs_error_discard_extent_50444 btrfs_error_discard_extent 2 50444 NULL |
102064 | +calc_csum_metadata_size_50448 calc_csum_metadata_size 0 50448 NULL | ||
102795 | +pgctrl_write_50453 pgctrl_write 3 50453 NULL | 102065 | +pgctrl_write_50453 pgctrl_write 3 50453 NULL |
102796 | +force_mapping_50464 force_mapping 2 50464 NULL | 102066 | +force_mapping_50464 force_mapping 2 50464 NULL |
102797 | +cdrom_read_cdda_50478 cdrom_read_cdda 4 50478 NULL | 102067 | +cdrom_read_cdda_50478 cdrom_read_cdda 4 50478 NULL |
@@ -102803,8 +102073,10 @@ index 0000000..7982a0c | |||
102803 | +fat_readpages_50582 fat_readpages 4 50582 NULL | 102073 | +fat_readpages_50582 fat_readpages 4 50582 NULL |
102804 | +iwl_dbgfs_missed_beacon_read_50584 iwl_dbgfs_missed_beacon_read 3 50584 NULL | 102074 | +iwl_dbgfs_missed_beacon_read_50584 iwl_dbgfs_missed_beacon_read 3 50584 NULL |
102805 | +build_inv_iommu_pages_50589 build_inv_iommu_pages 2-3 50589 NULL | 102075 | +build_inv_iommu_pages_50589 build_inv_iommu_pages 2-3 50589 NULL |
102076 | +sge_rx_50594 sge_rx 3 50594 NULL | ||
102806 | +rx_rx_checksum_result_read_50617 rx_rx_checksum_result_read 3 50617 NULL | 102077 | +rx_rx_checksum_result_read_50617 rx_rx_checksum_result_read 3 50617 NULL |
102807 | +__ffs_50625 __ffs 0 50625 NULL | 102078 | +__ffs_50625 __ffs 0 50625 NULL |
102079 | +regcache_rbtree_write_50629 regcache_rbtree_write 2 50629 NULL | ||
102808 | +simple_transaction_get_50633 simple_transaction_get 3 50633 NULL | 102080 | +simple_transaction_get_50633 simple_transaction_get 3 50633 NULL |
102809 | +ath6kl_tm_rx_event_50664 ath6kl_tm_rx_event 3 50664 NULL nohasharray | 102081 | +ath6kl_tm_rx_event_50664 ath6kl_tm_rx_event 3 50664 NULL nohasharray |
102810 | +sys_readv_50664 sys_readv 3 50664 &ath6kl_tm_rx_event_50664 | 102082 | +sys_readv_50664 sys_readv 3 50664 &ath6kl_tm_rx_event_50664 |
@@ -102830,6 +102102,7 @@ index 0000000..7982a0c | |||
102830 | +videobuf_dma_init_user_50839 videobuf_dma_init_user 3 50839 NULL | 102102 | +videobuf_dma_init_user_50839 videobuf_dma_init_user 3 50839 NULL |
102831 | +self_check_write_50856 self_check_write 5 50856 NULL | 102103 | +self_check_write_50856 self_check_write 5 50856 NULL |
102832 | +carl9170_debugfs_write_50857 carl9170_debugfs_write 3 50857 NULL | 102104 | +carl9170_debugfs_write_50857 carl9170_debugfs_write 3 50857 NULL |
102105 | +SyS_lgetxattr_50889 SyS_lgetxattr 4 50889 NULL | ||
102833 | +netlbl_secattr_catmap_walk_rng_50894 netlbl_secattr_catmap_walk_rng 0-2 50894 NULL | 102106 | +netlbl_secattr_catmap_walk_rng_50894 netlbl_secattr_catmap_walk_rng 0-2 50894 NULL |
102834 | +osd_req_write_sg_50908 osd_req_write_sg 5 50908 NULL | 102107 | +osd_req_write_sg_50908 osd_req_write_sg 5 50908 NULL |
102835 | +xfs_iext_remove_50909 xfs_iext_remove 3 50909 NULL | 102108 | +xfs_iext_remove_50909 xfs_iext_remove 3 50909 NULL |
@@ -102837,6 +102110,7 @@ index 0000000..7982a0c | |||
102837 | +hash_recvmsg_50924 hash_recvmsg 4 50924 NULL | 102110 | +hash_recvmsg_50924 hash_recvmsg 4 50924 NULL |
102838 | +chd_dec_fetch_cdata_50926 chd_dec_fetch_cdata 3 50926 NULL | 102111 | +chd_dec_fetch_cdata_50926 chd_dec_fetch_cdata 3 50926 NULL |
102839 | +ocfs2_add_refcount_flag_50952 ocfs2_add_refcount_flag 6 50952 NULL | 102112 | +ocfs2_add_refcount_flag_50952 ocfs2_add_refcount_flag 6 50952 NULL |
102113 | +SyS_setxattr_50957 SyS_setxattr 4 50957 NULL | ||
102840 | +iwl_statistics_flag_50981 iwl_statistics_flag 0-3 50981 NULL | 102114 | +iwl_statistics_flag_50981 iwl_statistics_flag 0-3 50981 NULL |
102841 | +timeout_write_50991 timeout_write 3 50991 NULL | 102115 | +timeout_write_50991 timeout_write 3 50991 NULL |
102842 | +wm831x_irq_map_50995 wm831x_irq_map 2 50995 NULL | 102116 | +wm831x_irq_map_50995 wm831x_irq_map 2 50995 NULL |
@@ -102851,6 +102125,7 @@ index 0000000..7982a0c | |||
102851 | +do_arpt_set_ctl_51053 do_arpt_set_ctl 4 51053 NULL | 102125 | +do_arpt_set_ctl_51053 do_arpt_set_ctl 4 51053 NULL |
102852 | +wusb_prf_64_51065 wusb_prf_64 7 51065 NULL | 102126 | +wusb_prf_64_51065 wusb_prf_64 7 51065 NULL |
102853 | +jbd2_journal_init_revoke_51088 jbd2_journal_init_revoke 2 51088 NULL | 102127 | +jbd2_journal_init_revoke_51088 jbd2_journal_init_revoke 2 51088 NULL |
102128 | +solo_enc_v4l2_init_51094 solo_enc_v4l2_init 2 51094 NULL | ||
102854 | +__ocfs2_find_path_51096 __ocfs2_find_path 0 51096 NULL | 102129 | +__ocfs2_find_path_51096 __ocfs2_find_path 0 51096 NULL |
102855 | +ti_recv_51110 ti_recv 3 51110 NULL | 102130 | +ti_recv_51110 ti_recv 3 51110 NULL |
102856 | +dgrp_net_read_51113 dgrp_net_read 3 51113 NULL | 102131 | +dgrp_net_read_51113 dgrp_net_read 3 51113 NULL |
@@ -102873,6 +102148,7 @@ index 0000000..7982a0c | |||
102873 | +pvr2_std_id_to_str_51288 pvr2_std_id_to_str 2 51288 NULL | 102148 | +pvr2_std_id_to_str_51288 pvr2_std_id_to_str 2 51288 NULL |
102874 | +bnad_debugfs_read_regrd_51308 bnad_debugfs_read_regrd 3 51308 NULL | 102149 | +bnad_debugfs_read_regrd_51308 bnad_debugfs_read_regrd 3 51308 NULL |
102875 | +get_cell_51316 get_cell 2 51316 NULL | 102150 | +get_cell_51316 get_cell 2 51316 NULL |
102151 | +init_map_ipmac_51317 init_map_ipmac 4-3-5 51317 NULL | ||
102876 | +alloc_hippi_dev_51320 alloc_hippi_dev 1 51320 NULL | 102152 | +alloc_hippi_dev_51320 alloc_hippi_dev 1 51320 NULL |
102877 | +ext2_xattr_get_51327 ext2_xattr_get 0 51327 NULL | 102153 | +ext2_xattr_get_51327 ext2_xattr_get 0 51327 NULL |
102878 | +alloc_smp_req_51337 alloc_smp_req 1 51337 NULL nohasharray | 102154 | +alloc_smp_req_51337 alloc_smp_req 1 51337 NULL nohasharray |
@@ -102890,6 +102166,8 @@ index 0000000..7982a0c | |||
102890 | +____alloc_ei_netdev_51475 ____alloc_ei_netdev 1 51475 NULL | 102166 | +____alloc_ei_netdev_51475 ____alloc_ei_netdev 1 51475 NULL |
102891 | +xfs_buf_get_uncached_51477 xfs_buf_get_uncached 2 51477 NULL | 102167 | +xfs_buf_get_uncached_51477 xfs_buf_get_uncached 2 51477 NULL |
102892 | +vaddr_51480 vaddr 0 51480 NULL | 102168 | +vaddr_51480 vaddr 0 51480 NULL |
102169 | +skb_inner_mac_header_51482 skb_inner_mac_header 0 51482 NULL nohasharray | ||
102170 | +btrfs_find_space_cluster_51482 btrfs_find_space_cluster 5 51482 &skb_inner_mac_header_51482 | ||
102893 | +__cpa_process_fault_51502 __cpa_process_fault 2 51502 NULL | 102171 | +__cpa_process_fault_51502 __cpa_process_fault 2 51502 NULL |
102894 | +ieee80211_if_write_uapsd_queues_51526 ieee80211_if_write_uapsd_queues 3 51526 NULL | 102172 | +ieee80211_if_write_uapsd_queues_51526 ieee80211_if_write_uapsd_queues 3 51526 NULL |
102895 | +load_pdptrs_51541 load_pdptrs 3 51541 NULL | 102173 | +load_pdptrs_51541 load_pdptrs 3 51541 NULL |
@@ -102919,11 +102197,13 @@ index 0000000..7982a0c | |||
102919 | +if_write_51756 if_write 3 51756 NULL | 102197 | +if_write_51756 if_write 3 51756 NULL |
102920 | +ioremap_prot_51764 ioremap_prot 1-2 51764 NULL | 102198 | +ioremap_prot_51764 ioremap_prot 1-2 51764 NULL |
102921 | +iio_buffer_add_channel_sysfs_51766 iio_buffer_add_channel_sysfs 0 51766 NULL | 102199 | +iio_buffer_add_channel_sysfs_51766 iio_buffer_add_channel_sysfs 0 51766 NULL |
102200 | +to_ratio_51809 to_ratio 2-1 51809 NULL | ||
102922 | +qib_alloc_devdata_51819 qib_alloc_devdata 2 51819 NULL | 102201 | +qib_alloc_devdata_51819 qib_alloc_devdata 2 51819 NULL |
102923 | +buffer_from_user_51826 buffer_from_user 3 51826 NULL | 102202 | +buffer_from_user_51826 buffer_from_user 3 51826 NULL |
102924 | +ioread32_51847 ioread32 0 51847 NULL nohasharray | 102203 | +ioread32_51847 ioread32 0 51847 NULL nohasharray |
102925 | +read_file_tgt_tx_stats_51847 read_file_tgt_tx_stats 3 51847 &ioread32_51847 | 102204 | +read_file_tgt_tx_stats_51847 read_file_tgt_tx_stats 3 51847 &ioread32_51847 |
102926 | +do_readv_writev_51849 do_readv_writev 4 51849 NULL | 102205 | +do_readv_writev_51849 do_readv_writev 4 51849 NULL |
102206 | +SYSC_sendto_51852 SYSC_sendto 6 51852 NULL | ||
102927 | +pointer_size_read_51863 pointer_size_read 3 51863 NULL | 102207 | +pointer_size_read_51863 pointer_size_read 3 51863 NULL |
102928 | +mlx4_alloc_db_from_pgdir_51865 mlx4_alloc_db_from_pgdir 3 51865 NULL | 102208 | +mlx4_alloc_db_from_pgdir_51865 mlx4_alloc_db_from_pgdir 3 51865 NULL |
102929 | +get_indirect_ea_51869 get_indirect_ea 4 51869 NULL | 102209 | +get_indirect_ea_51869 get_indirect_ea 4 51869 NULL |
@@ -102940,6 +102220,7 @@ index 0000000..7982a0c | |||
102940 | +arizona_free_irq_51969 arizona_free_irq 2 51969 NULL nohasharray | 102220 | +arizona_free_irq_51969 arizona_free_irq 2 51969 NULL nohasharray |
102941 | +snd_mask_min_51969 snd_mask_min 0 51969 &arizona_free_irq_51969 | 102221 | +snd_mask_min_51969 snd_mask_min 0 51969 &arizona_free_irq_51969 |
102942 | +ath6kl_sdio_alloc_prep_scat_req_51986 ath6kl_sdio_alloc_prep_scat_req 2 51986 NULL | 102222 | +ath6kl_sdio_alloc_prep_scat_req_51986 ath6kl_sdio_alloc_prep_scat_req 2 51986 NULL |
102223 | +dwc3_mode_write_51997 dwc3_mode_write 3 51997 NULL | ||
102943 | +skb_copy_datagram_from_iovec_52014 skb_copy_datagram_from_iovec 4-2-5 52014 NULL | 102224 | +skb_copy_datagram_from_iovec_52014 skb_copy_datagram_from_iovec 4-2-5 52014 NULL |
102944 | +rdmalt_52022 rdmalt 0 52022 NULL | 102225 | +rdmalt_52022 rdmalt 0 52022 NULL |
102945 | +vxge_rx_alloc_52024 vxge_rx_alloc 3 52024 NULL | 102226 | +vxge_rx_alloc_52024 vxge_rx_alloc 3 52024 NULL |
@@ -102952,6 +102233,7 @@ index 0000000..7982a0c | |||
102952 | +isofs_readpages_52067 isofs_readpages 4 52067 NULL | 102233 | +isofs_readpages_52067 isofs_readpages 4 52067 NULL |
102953 | +nsm_get_handle_52089 nsm_get_handle 4 52089 NULL | 102234 | +nsm_get_handle_52089 nsm_get_handle 4 52089 NULL |
102954 | +o2net_debug_read_52105 o2net_debug_read 3 52105 NULL | 102235 | +o2net_debug_read_52105 o2net_debug_read 3 52105 NULL |
102236 | +smsdvb_stats_read_52114 smsdvb_stats_read 3 52114 NULL | ||
102955 | +retry_count_read_52129 retry_count_read 3 52129 NULL | 102237 | +retry_count_read_52129 retry_count_read 3 52129 NULL |
102956 | +zram_meta_alloc_52140 zram_meta_alloc 1 52140 NULL | 102238 | +zram_meta_alloc_52140 zram_meta_alloc 1 52140 NULL |
102957 | +hysdn_conf_write_52145 hysdn_conf_write 3 52145 NULL nohasharray | 102239 | +hysdn_conf_write_52145 hysdn_conf_write 3 52145 NULL nohasharray |
@@ -102972,12 +102254,14 @@ index 0000000..7982a0c | |||
102972 | +shrink_slab_52261 shrink_slab 2-3 52261 NULL | 102254 | +shrink_slab_52261 shrink_slab 2-3 52261 NULL |
102973 | +hva_to_pfn_slow_52262 hva_to_pfn_slow 1 52262 NULL | 102255 | +hva_to_pfn_slow_52262 hva_to_pfn_slow 1 52262 NULL |
102974 | +sisusbcon_do_font_op_52271 sisusbcon_do_font_op 9 52271 NULL | 102256 | +sisusbcon_do_font_op_52271 sisusbcon_do_font_op 9 52271 NULL |
102257 | +atomic64_read_52300 atomic64_read 0 52300 NULL | ||
102975 | +ath6kl_wmi_get_new_buf_52304 ath6kl_wmi_get_new_buf 1 52304 NULL | 102258 | +ath6kl_wmi_get_new_buf_52304 ath6kl_wmi_get_new_buf 1 52304 NULL |
102976 | +read_file_reset_52310 read_file_reset 3 52310 NULL | 102259 | +read_file_reset_52310 read_file_reset 3 52310 NULL |
102977 | +request_asymmetric_key_52317 request_asymmetric_key 2-4 52317 NULL | 102260 | +request_asymmetric_key_52317 request_asymmetric_key 2-4 52317 NULL |
102978 | +hwflags_read_52318 hwflags_read 3 52318 NULL | 102261 | +hwflags_read_52318 hwflags_read 3 52318 NULL |
102979 | +ntfs_rl_split_52328 ntfs_rl_split 2-4 52328 NULL | 102262 | +ntfs_rl_split_52328 ntfs_rl_split 2-4 52328 NULL |
102980 | +test_unaligned_bulk_52333 test_unaligned_bulk 3 52333 NULL | 102263 | +test_unaligned_bulk_52333 test_unaligned_bulk 3 52333 NULL |
102264 | +compat_SyS_preadv64_52351 compat_SyS_preadv64 3 52351 NULL | ||
102981 | +bytes_to_frames_52362 bytes_to_frames 0-2 52362 NULL | 102265 | +bytes_to_frames_52362 bytes_to_frames 0-2 52362 NULL |
102982 | +copy_entries_to_user_52367 copy_entries_to_user 1 52367 NULL | 102266 | +copy_entries_to_user_52367 copy_entries_to_user 1 52367 NULL |
102983 | +mq_emit_config_values_52378 mq_emit_config_values 3 52378 NULL | 102267 | +mq_emit_config_values_52378 mq_emit_config_values 3 52378 NULL |
@@ -102996,20 +102280,24 @@ index 0000000..7982a0c | |||
102996 | +skb_cow_head_52495 skb_cow_head 2 52495 &fd_do_rw_52495 | 102280 | +skb_cow_head_52495 skb_cow_head 2 52495 &fd_do_rw_52495 |
102997 | +qib_user_sdma_pin_pages_52498 qib_user_sdma_pin_pages 3-5 52498 NULL | 102281 | +qib_user_sdma_pin_pages_52498 qib_user_sdma_pin_pages 3-5 52498 NULL |
102998 | +int_tasklet_entry_52500 int_tasklet_entry 3 52500 NULL | 102282 | +int_tasklet_entry_52500 int_tasklet_entry 3 52500 NULL |
102283 | +qlcnic_83xx_sysfs_flash_write_52507 qlcnic_83xx_sysfs_flash_write 4 52507 NULL | ||
102999 | +pm_qos_power_write_52513 pm_qos_power_write 3 52513 NULL | 102284 | +pm_qos_power_write_52513 pm_qos_power_write 3 52513 NULL |
103000 | +dup_variable_bug_52525 dup_variable_bug 3 52525 NULL | 102285 | +dup_variable_bug_52525 dup_variable_bug 3 52525 NULL |
103001 | +from_oblock_52546 from_oblock 0-1 52546 NULL | 102286 | +from_oblock_52546 from_oblock 0-1 52546 NULL |
103002 | +dccpprobe_read_52549 dccpprobe_read 3 52549 NULL | 102287 | +dccpprobe_read_52549 dccpprobe_read 3 52549 NULL |
103003 | +ocfs2_make_right_split_rec_52562 ocfs2_make_right_split_rec 3 52562 NULL | 102288 | +ocfs2_make_right_split_rec_52562 ocfs2_make_right_split_rec 3 52562 NULL |
103004 | +emit_code_52583 emit_code 0-3 52583 NULL | 102289 | +emit_code_52583 emit_code 0-3 52583 NULL |
102290 | +isku_sysfs_read_macro_52587 isku_sysfs_read_macro 6 52587 NULL | ||
103005 | +tps80031_writes_52638 tps80031_writes 3-4 52638 NULL | 102291 | +tps80031_writes_52638 tps80031_writes 3-4 52638 NULL |
103006 | +brcmf_sdio_assert_info_52653 brcmf_sdio_assert_info 4 52653 NULL | 102292 | +brcmf_sdio_assert_info_52653 brcmf_sdio_assert_info 4 52653 NULL |
102293 | +SYSC_gethostname_52677 SYSC_gethostname 2 52677 NULL | ||
103007 | +nvd0_disp_pioc_create__52693 nvd0_disp_pioc_create_ 5 52693 NULL | 102294 | +nvd0_disp_pioc_create__52693 nvd0_disp_pioc_create_ 5 52693 NULL |
103008 | +nouveau_client_create__52715 nouveau_client_create_ 5 52715 NULL | 102295 | +nouveau_client_create__52715 nouveau_client_create_ 5 52715 NULL |
103009 | +cx25840_ir_rx_read_52724 cx25840_ir_rx_read 3 52724 NULL | 102296 | +cx25840_ir_rx_read_52724 cx25840_ir_rx_read 3 52724 NULL |
103010 | +blkcipher_next_slow_52733 blkcipher_next_slow 3-4 52733 NULL | 102297 | +blkcipher_next_slow_52733 blkcipher_next_slow 3-4 52733 NULL |
103011 | +relay_alloc_page_array_52735 relay_alloc_page_array 1 52735 NULL | 102298 | +relay_alloc_page_array_52735 relay_alloc_page_array 1 52735 NULL |
103012 | +carl9170_debugfs_vif_dump_read_52755 carl9170_debugfs_vif_dump_read 3 52755 NULL | 102299 | +carl9170_debugfs_vif_dump_read_52755 carl9170_debugfs_vif_dump_read 3 52755 NULL |
102300 | +ieee80211_if_read_beacon_timeout_52756 ieee80211_if_read_beacon_timeout 3 52756 NULL | ||
103013 | +copy_ctr_args_52761 copy_ctr_args 2 52761 NULL | 102301 | +copy_ctr_args_52761 copy_ctr_args 2 52761 NULL |
103014 | +pwr_rcvd_beacons_read_52836 pwr_rcvd_beacons_read 3 52836 NULL | 102302 | +pwr_rcvd_beacons_read_52836 pwr_rcvd_beacons_read 3 52836 NULL |
103015 | +ext2_xattr_set_acl_52857 ext2_xattr_set_acl 4 52857 NULL | 102303 | +ext2_xattr_set_acl_52857 ext2_xattr_set_acl 4 52857 NULL |
@@ -103043,6 +102331,7 @@ index 0000000..7982a0c | |||
103043 | +brcmf_usb_dl_cmd_53130 brcmf_usb_dl_cmd 4 53130 NULL | 102331 | +brcmf_usb_dl_cmd_53130 brcmf_usb_dl_cmd 4 53130 NULL |
103044 | +ps_poll_ps_poll_max_ap_turn_read_53140 ps_poll_ps_poll_max_ap_turn_read 3 53140 NULL | 102332 | +ps_poll_ps_poll_max_ap_turn_read_53140 ps_poll_ps_poll_max_ap_turn_read 3 53140 NULL |
103045 | +ieee80211_bss_info_update_53170 ieee80211_bss_info_update 4 53170 NULL | 102333 | +ieee80211_bss_info_update_53170 ieee80211_bss_info_update 4 53170 NULL |
102334 | +btrfs_io_bio_alloc_53179 btrfs_io_bio_alloc 2 53179 NULL | ||
103046 | +clear_capture_buf_53192 clear_capture_buf 2 53192 NULL | 102335 | +clear_capture_buf_53192 clear_capture_buf 2 53192 NULL |
103047 | +mtdoops_erase_block_53206 mtdoops_erase_block 2 53206 NULL | 102336 | +mtdoops_erase_block_53206 mtdoops_erase_block 2 53206 NULL |
103048 | +fixup_user_fault_53210 fixup_user_fault 3 53210 NULL | 102337 | +fixup_user_fault_53210 fixup_user_fault 3 53210 NULL |
@@ -103051,6 +102340,7 @@ index 0000000..7982a0c | |||
103051 | +xfs_trans_read_buf_map_53258 xfs_trans_read_buf_map 5 53258 NULL | 102340 | +xfs_trans_read_buf_map_53258 xfs_trans_read_buf_map 5 53258 NULL |
103052 | +wil_write_file_ssid_53266 wil_write_file_ssid 3 53266 NULL | 102341 | +wil_write_file_ssid_53266 wil_write_file_ssid 3 53266 NULL |
103053 | +btrfs_file_extent_num_bytes_53269 btrfs_file_extent_num_bytes 0 53269 NULL | 102342 | +btrfs_file_extent_num_bytes_53269 btrfs_file_extent_num_bytes 0 53269 NULL |
102343 | +isku_sysfs_write_key_mask_53305 isku_sysfs_write_key_mask 6 53305 NULL | ||
103054 | +batadv_interface_rx_53325 batadv_interface_rx 4 53325 NULL | 102344 | +batadv_interface_rx_53325 batadv_interface_rx 4 53325 NULL |
103055 | +gsm_control_reply_53333 gsm_control_reply 4 53333 NULL | 102345 | +gsm_control_reply_53333 gsm_control_reply 4 53333 NULL |
103056 | +vm_mmap_53339 vm_mmap 0 53339 NULL | 102346 | +vm_mmap_53339 vm_mmap 0 53339 NULL |
@@ -103072,7 +102362,8 @@ index 0000000..7982a0c | |||
103072 | +ocfs2_xattr_set_acl_53508 ocfs2_xattr_set_acl 4 53508 NULL | 102362 | +ocfs2_xattr_set_acl_53508 ocfs2_xattr_set_acl 4 53508 NULL |
103073 | +check_acl_53512 check_acl 0 53512 NULL | 102363 | +check_acl_53512 check_acl 0 53512 NULL |
103074 | +alloc_pages_exact_nid_53515 alloc_pages_exact_nid 2 53515 NULL | 102364 | +alloc_pages_exact_nid_53515 alloc_pages_exact_nid 2 53515 NULL |
103075 | +set_registers_53582 set_registers 3 53582 NULL | 102365 | +SYSC_bind_53582 SYSC_bind 3 53582 NULL nohasharray |
102366 | +set_registers_53582 set_registers 3 53582 &SYSC_bind_53582 | ||
103076 | +cifs_utf16_bytes_53593 cifs_utf16_bytes 0 53593 NULL | 102367 | +cifs_utf16_bytes_53593 cifs_utf16_bytes 0 53593 NULL |
103077 | +gfn_to_pfn_async_53597 gfn_to_pfn_async 2 53597 NULL | 102368 | +gfn_to_pfn_async_53597 gfn_to_pfn_async 2 53597 NULL |
103078 | +___alloc_bootmem_nopanic_53626 ___alloc_bootmem_nopanic 1-2 53626 NULL | 102369 | +___alloc_bootmem_nopanic_53626 ___alloc_bootmem_nopanic 1-2 53626 NULL |
@@ -103080,6 +102371,7 @@ index 0000000..7982a0c | |||
103080 | +ccid_getsockopt_builtin_ccids_53634 ccid_getsockopt_builtin_ccids 2 53634 NULL | 102371 | +ccid_getsockopt_builtin_ccids_53634 ccid_getsockopt_builtin_ccids 2 53634 NULL |
103081 | +nr_sendmsg_53656 nr_sendmsg 4 53656 NULL | 102372 | +nr_sendmsg_53656 nr_sendmsg 4 53656 NULL |
103082 | +_preload_range_53676 _preload_range 2-3 53676 NULL | 102373 | +_preload_range_53676 _preload_range 2-3 53676 NULL |
102374 | +lowpan_fragment_xmit_53680 lowpan_fragment_xmit 3-4 53680 NULL | ||
103083 | +fuse_fill_write_pages_53682 fuse_fill_write_pages 4 53682 NULL | 102375 | +fuse_fill_write_pages_53682 fuse_fill_write_pages 4 53682 NULL |
103084 | +v4l2_event_subscribe_53687 v4l2_event_subscribe 3 53687 NULL | 102376 | +v4l2_event_subscribe_53687 v4l2_event_subscribe 3 53687 NULL |
103085 | +bdev_logical_block_size_53690 bdev_logical_block_size 0 53690 NULL nohasharray | 102377 | +bdev_logical_block_size_53690 bdev_logical_block_size 0 53690 NULL nohasharray |
@@ -103101,7 +102393,8 @@ index 0000000..7982a0c | |||
103101 | +nls_nullsize_53815 nls_nullsize 0 53815 NULL | 102393 | +nls_nullsize_53815 nls_nullsize 0 53815 NULL |
103102 | +pms_read_53873 pms_read 3 53873 NULL | 102394 | +pms_read_53873 pms_read 3 53873 NULL |
103103 | +ieee80211_if_fmt_dropped_frames_congestion_53883 ieee80211_if_fmt_dropped_frames_congestion 3 53883 NULL | 102395 | +ieee80211_if_fmt_dropped_frames_congestion_53883 ieee80211_if_fmt_dropped_frames_congestion 3 53883 NULL |
103104 | +ocfs2_rm_xattr_cluster_53900 ocfs2_rm_xattr_cluster 5-4-3 53900 NULL | 102396 | +ocfs2_rm_xattr_cluster_53900 ocfs2_rm_xattr_cluster 5-4-3 53900 NULL nohasharray |
102397 | +SyS_setgroups_53900 SyS_setgroups 1 53900 &ocfs2_rm_xattr_cluster_53900 | ||
103105 | +proc_file_read_53905 proc_file_read 3 53905 NULL | 102398 | +proc_file_read_53905 proc_file_read 3 53905 NULL |
103106 | +early_reserve_e820_53915 early_reserve_e820 1-2 53915 NULL | 102399 | +early_reserve_e820_53915 early_reserve_e820 1-2 53915 NULL |
103107 | +ocfs2_make_clusters_writable_53938 ocfs2_make_clusters_writable 4 53938 NULL | 102400 | +ocfs2_make_clusters_writable_53938 ocfs2_make_clusters_writable 4 53938 NULL |
@@ -103117,10 +102410,12 @@ index 0000000..7982a0c | |||
103117 | +pipeline_dec_packet_out_read_54052 pipeline_dec_packet_out_read 3 54052 NULL | 102410 | +pipeline_dec_packet_out_read_54052 pipeline_dec_packet_out_read 3 54052 NULL |
103118 | +nl80211_send_disconnected_54056 nl80211_send_disconnected 5 54056 NULL | 102411 | +nl80211_send_disconnected_54056 nl80211_send_disconnected 5 54056 NULL |
103119 | +rproc_state_read_54057 rproc_state_read 3 54057 NULL | 102412 | +rproc_state_read_54057 rproc_state_read 3 54057 NULL |
102413 | +btrfs_start_transaction_54066 btrfs_start_transaction 2 54066 NULL | ||
103120 | +_malloc_54077 _malloc 1 54077 NULL | 102414 | +_malloc_54077 _malloc 1 54077 NULL |
103121 | +bitmap_bitremap_54096 bitmap_bitremap 4 54096 NULL | 102415 | +bitmap_bitremap_54096 bitmap_bitremap 4 54096 NULL |
103122 | +altera_set_ir_pre_54103 altera_set_ir_pre 2 54103 NULL | 102416 | +altera_set_ir_pre_54103 altera_set_ir_pre 2 54103 NULL |
103123 | +create_xattr_54106 create_xattr 5 54106 NULL | 102417 | +create_xattr_54106 create_xattr 5 54106 NULL |
102418 | +inc_zcache_pers_zbytes_54107 inc_zcache_pers_zbytes 1 54107 NULL | ||
103124 | +strn_len_54122 strn_len 0 54122 NULL | 102419 | +strn_len_54122 strn_len 0 54122 NULL |
103125 | +isku_receive_54130 isku_receive 4 54130 NULL | 102420 | +isku_receive_54130 isku_receive 4 54130 NULL |
103126 | +isr_host_acknowledges_read_54136 isr_host_acknowledges_read 3 54136 NULL | 102421 | +isr_host_acknowledges_read_54136 isr_host_acknowledges_read 3 54136 NULL |
@@ -103128,6 +102423,7 @@ index 0000000..7982a0c | |||
103128 | +memcpy_toiovec_54166 memcpy_toiovec 3 54166 &i2400m_zrealloc_2x_54166 | 102423 | +memcpy_toiovec_54166 memcpy_toiovec 3 54166 &i2400m_zrealloc_2x_54166 |
103129 | +nouveau_falcon_create__54169 nouveau_falcon_create_ 8 54169 NULL | 102424 | +nouveau_falcon_create__54169 nouveau_falcon_create_ 8 54169 NULL |
103130 | +acpi_os_read_memory_54186 acpi_os_read_memory 1-3 54186 NULL | 102425 | +acpi_os_read_memory_54186 acpi_os_read_memory 1-3 54186 NULL |
102426 | +SyS_ipc_54206 SyS_ipc 3 54206 NULL | ||
103131 | +__register_chrdev_54223 __register_chrdev 2-3 54223 NULL | 102427 | +__register_chrdev_54223 __register_chrdev 2-3 54223 NULL |
103132 | +_format_mac_addr_54229 _format_mac_addr 2-0 54229 NULL | 102428 | +_format_mac_addr_54229 _format_mac_addr 2-0 54229 NULL |
103133 | +pi_read_regr_54231 pi_read_regr 0 54231 NULL | 102429 | +pi_read_regr_54231 pi_read_regr 0 54231 NULL |
@@ -103171,6 +102467,7 @@ index 0000000..7982a0c | |||
103171 | +unix_dgram_connect_54535 unix_dgram_connect 3 54535 NULL | 102467 | +unix_dgram_connect_54535 unix_dgram_connect 3 54535 NULL |
103172 | +setsockopt_54539 setsockopt 5 54539 NULL | 102468 | +setsockopt_54539 setsockopt 5 54539 NULL |
103173 | +mwifiex_usb_submit_rx_urb_54558 mwifiex_usb_submit_rx_urb 2 54558 NULL | 102469 | +mwifiex_usb_submit_rx_urb_54558 mwifiex_usb_submit_rx_urb 2 54558 NULL |
102470 | +SYSC_setsockopt_54561 SYSC_setsockopt 5 54561 NULL | ||
103174 | +nfsd_vfs_write_54577 nfsd_vfs_write 6 54577 NULL | 102471 | +nfsd_vfs_write_54577 nfsd_vfs_write 6 54577 NULL |
103175 | +fw_iso_buffer_init_54582 fw_iso_buffer_init 3 54582 NULL | 102472 | +fw_iso_buffer_init_54582 fw_iso_buffer_init 3 54582 NULL |
103176 | +nvme_npages_54601 nvme_npages 0-1 54601 NULL | 102473 | +nvme_npages_54601 nvme_npages 0-1 54601 NULL |
@@ -103184,7 +102481,8 @@ index 0000000..7982a0c | |||
103184 | +evm_read_key_54674 evm_read_key 3 54674 NULL | 102481 | +evm_read_key_54674 evm_read_key 3 54674 NULL |
103185 | +resource_string_54699 resource_string 0 54699 NULL | 102482 | +resource_string_54699 resource_string 0 54699 NULL |
103186 | +platform_get_irq_byname_54700 platform_get_irq_byname 0 54700 NULL | 102483 | +platform_get_irq_byname_54700 platform_get_irq_byname 0 54700 NULL |
103187 | +rfkill_fop_read_54711 rfkill_fop_read 3 54711 NULL | 102484 | +rfkill_fop_read_54711 rfkill_fop_read 3 54711 NULL nohasharray |
102485 | +compat_SyS_readv_54711 compat_SyS_readv 3 54711 &rfkill_fop_read_54711 | ||
103188 | +_add_sg_continuation_descriptor_54721 _add_sg_continuation_descriptor 3 54721 NULL | 102486 | +_add_sg_continuation_descriptor_54721 _add_sg_continuation_descriptor 3 54721 NULL |
103189 | +ocfs2_control_write_54737 ocfs2_control_write 3 54737 NULL | 102487 | +ocfs2_control_write_54737 ocfs2_control_write 3 54737 NULL |
103190 | +kzalloc_54740 kzalloc 1 54740 NULL | 102488 | +kzalloc_54740 kzalloc 1 54740 NULL |
@@ -103222,6 +102520,7 @@ index 0000000..7982a0c | |||
103222 | +__proc_file_read_54978 __proc_file_read 3 54978 NULL | 102520 | +__proc_file_read_54978 __proc_file_read 3 54978 NULL |
103223 | +ext3_xattr_get_54989 ext3_xattr_get 0 54989 NULL | 102521 | +ext3_xattr_get_54989 ext3_xattr_get 0 54989 NULL |
103224 | +Bus_to_Virtual_54991 Bus_to_Virtual 1 54991 NULL | 102522 | +Bus_to_Virtual_54991 Bus_to_Virtual 1 54991 NULL |
102523 | +mem_cgroup_get_lru_size_55008 mem_cgroup_get_lru_size 0 55008 NULL | ||
103225 | +cx231xx_v4l2_read_55014 cx231xx_v4l2_read 3 55014 NULL | 102524 | +cx231xx_v4l2_read_55014 cx231xx_v4l2_read 3 55014 NULL |
103226 | +paging32_get_level1_sp_gpa_55022 paging32_get_level1_sp_gpa 0 55022 NULL | 102525 | +paging32_get_level1_sp_gpa_55022 paging32_get_level1_sp_gpa 0 55022 NULL |
103227 | +error_error_null_Frame_tx_start_read_55024 error_error_null_Frame_tx_start_read 3 55024 NULL | 102526 | +error_error_null_Frame_tx_start_read_55024 error_error_null_Frame_tx_start_read 3 55024 NULL |
@@ -103242,12 +102541,16 @@ index 0000000..7982a0c | |||
103242 | +ht40allow_map_read_55209 ht40allow_map_read 3 55209 NULL | 102541 | +ht40allow_map_read_55209 ht40allow_map_read 3 55209 NULL |
103243 | +__kfifo_dma_out_prepare_r_55211 __kfifo_dma_out_prepare_r 4-5 55211 NULL | 102542 | +__kfifo_dma_out_prepare_r_55211 __kfifo_dma_out_prepare_r 4-5 55211 NULL |
103244 | +do_raw_setsockopt_55215 do_raw_setsockopt 5 55215 NULL | 102543 | +do_raw_setsockopt_55215 do_raw_setsockopt 5 55215 NULL |
102544 | +qxl_alloc_client_monitors_config_55216 qxl_alloc_client_monitors_config 2 55216 NULL | ||
102545 | +nouveau_mc_create__55217 nouveau_mc_create_ 4 55217 NULL | ||
103245 | +dump_command_55220 dump_command 1 55220 NULL | 102546 | +dump_command_55220 dump_command 1 55220 NULL |
103246 | +dbAllocDmap_55227 dbAllocDmap 0 55227 NULL | 102547 | +dbAllocDmap_55227 dbAllocDmap 0 55227 NULL |
103247 | +tipc_port_reject_sections_55229 tipc_port_reject_sections 5 55229 NULL | 102548 | +tipc_port_reject_sections_55229 tipc_port_reject_sections 5 55229 NULL |
102549 | +hash_netport6_expire_55232 hash_netport6_expire 3 55232 NULL | ||
103248 | +register_unifi_sdio_55239 register_unifi_sdio 2 55239 NULL | 102550 | +register_unifi_sdio_55239 register_unifi_sdio 2 55239 NULL |
103249 | +memcpy_fromiovec_55247 memcpy_fromiovec 3 55247 NULL | 102551 | +memcpy_fromiovec_55247 memcpy_fromiovec 3 55247 NULL |
103250 | +ptrace_request_55288 ptrace_request 3 55288 NULL | 102552 | +persistent_ram_new_55286 persistent_ram_new 1-2 55286 NULL |
102553 | +ptrace_request_55288 ptrace_request 3-4 55288 NULL | ||
103251 | +rx_streaming_interval_read_55291 rx_streaming_interval_read 3 55291 NULL | 102554 | +rx_streaming_interval_read_55291 rx_streaming_interval_read 3 55291 NULL |
103252 | +gsm_control_modem_55303 gsm_control_modem 3 55303 NULL | 102555 | +gsm_control_modem_55303 gsm_control_modem 3 55303 NULL |
103253 | +qp_alloc_guest_work_55305 qp_alloc_guest_work 3-5 55305 NULL nohasharray | 102556 | +qp_alloc_guest_work_55305 qp_alloc_guest_work 3-5 55305 NULL nohasharray |
@@ -103260,6 +102563,7 @@ index 0000000..7982a0c | |||
103260 | +acpi_system_read_event_55362 acpi_system_read_event 3 55362 NULL | 102563 | +acpi_system_read_event_55362 acpi_system_read_event 3 55362 NULL |
103261 | +nf_nat_ipv4_manip_pkt_55387 nf_nat_ipv4_manip_pkt 2 55387 NULL | 102564 | +nf_nat_ipv4_manip_pkt_55387 nf_nat_ipv4_manip_pkt 2 55387 NULL |
103262 | +iwl_dbgfs_plcp_delta_read_55407 iwl_dbgfs_plcp_delta_read 3 55407 NULL | 102565 | +iwl_dbgfs_plcp_delta_read_55407 iwl_dbgfs_plcp_delta_read 3 55407 NULL |
102566 | +si476x_radio_read_rds_blckcnt_blob_55427 si476x_radio_read_rds_blckcnt_blob 3 55427 NULL | ||
103263 | +alloc_skb_55439 alloc_skb 1 55439 NULL | 102567 | +alloc_skb_55439 alloc_skb 1 55439 NULL |
103264 | +__vxge_hw_channel_allocate_55462 __vxge_hw_channel_allocate 3 55462 NULL | 102568 | +__vxge_hw_channel_allocate_55462 __vxge_hw_channel_allocate 3 55462 NULL |
103265 | +isdnhdlc_decode_55466 isdnhdlc_decode 0 55466 NULL | 102569 | +isdnhdlc_decode_55466 isdnhdlc_decode 0 55466 NULL |
@@ -103275,7 +102579,9 @@ index 0000000..7982a0c | |||
103275 | +buffer_size_55534 buffer_size 0 55534 NULL | 102579 | +buffer_size_55534 buffer_size 0 55534 NULL |
103276 | +set_msr_interception_55538 set_msr_interception 2 55538 NULL | 102580 | +set_msr_interception_55538 set_msr_interception 2 55538 NULL |
103277 | +tty_port_register_device_55543 tty_port_register_device 3 55543 NULL | 102581 | +tty_port_register_device_55543 tty_port_register_device 3 55543 NULL |
102582 | +hash_netport4_expire_55584 hash_netport4_expire 3 55584 NULL | ||
103278 | +add_partition_55588 add_partition 2 55588 NULL | 102583 | +add_partition_55588 add_partition 2 55588 NULL |
102584 | +SyS_keyctl_55602 SyS_keyctl 4 55602 NULL | ||
103279 | +free_pages_55603 free_pages 1 55603 NULL | 102585 | +free_pages_55603 free_pages 1 55603 NULL |
103280 | +macvtap_put_user_55609 macvtap_put_user 4 55609 NULL | 102586 | +macvtap_put_user_55609 macvtap_put_user 4 55609 NULL |
103281 | +selinux_setprocattr_55611 selinux_setprocattr 4 55611 NULL | 102587 | +selinux_setprocattr_55611 selinux_setprocattr 4 55611 NULL |
@@ -103295,6 +102601,7 @@ index 0000000..7982a0c | |||
103295 | +__videobuf_alloc_uncached_55711 __videobuf_alloc_uncached 1 55711 NULL | 102601 | +__videobuf_alloc_uncached_55711 __videobuf_alloc_uncached 1 55711 NULL |
103296 | +pm8001_store_update_fw_55716 pm8001_store_update_fw 4 55716 NULL | 102602 | +pm8001_store_update_fw_55716 pm8001_store_update_fw 4 55716 NULL |
103297 | +mtdswap_init_55719 mtdswap_init 2 55719 NULL | 102603 | +mtdswap_init_55719 mtdswap_init 2 55719 NULL |
102604 | +tap_pwup_write_55723 tap_pwup_write 3 55723 NULL | ||
103298 | +__iio_allocate_kfifo_55738 __iio_allocate_kfifo 2 55738 NULL | 102605 | +__iio_allocate_kfifo_55738 __iio_allocate_kfifo 2 55738 NULL |
103299 | +set_local_name_55757 set_local_name 4 55757 NULL | 102606 | +set_local_name_55757 set_local_name 4 55757 NULL |
103300 | +strlen_55778 strlen 0 55778 NULL | 102607 | +strlen_55778 strlen 0 55778 NULL |
@@ -103323,12 +102630,14 @@ index 0000000..7982a0c | |||
103323 | +kmem_zalloc_large_56128 kmem_zalloc_large 1 56128 NULL | 102630 | +kmem_zalloc_large_56128 kmem_zalloc_large 1 56128 NULL |
103324 | +sel_read_handle_status_56139 sel_read_handle_status 3 56139 NULL | 102631 | +sel_read_handle_status_56139 sel_read_handle_status 3 56139 NULL |
103325 | +map_addr_56144 map_addr 7 56144 NULL | 102632 | +map_addr_56144 map_addr 7 56144 NULL |
102633 | +__i2c_transfer_56162 __i2c_transfer 0 56162 NULL | ||
103326 | +rawv6_setsockopt_56165 rawv6_setsockopt 5 56165 NULL | 102634 | +rawv6_setsockopt_56165 rawv6_setsockopt 5 56165 NULL |
103327 | +create_irq_nr_56180 create_irq_nr 1 56180 NULL | 102635 | +create_irq_nr_56180 create_irq_nr 1 56180 NULL |
103328 | +ath9k_dump_legacy_btcoex_56194 ath9k_dump_legacy_btcoex 0 56194 NULL | 102636 | +ath9k_dump_legacy_btcoex_56194 ath9k_dump_legacy_btcoex 0 56194 NULL |
103329 | +skb_headroom_56200 skb_headroom 0 56200 NULL | 102637 | +skb_headroom_56200 skb_headroom 0 56200 NULL |
103330 | +usb_dump_iad_descriptor_56204 usb_dump_iad_descriptor 0 56204 NULL | 102638 | +usb_dump_iad_descriptor_56204 usb_dump_iad_descriptor 0 56204 NULL |
103331 | +ncp_read_bounce_size_56221 ncp_read_bounce_size 0-1 56221 NULL | 102639 | +ncp_read_bounce_size_56221 ncp_read_bounce_size 0-1 56221 NULL |
102640 | +vring_add_indirect_56222 vring_add_indirect 4 56222 NULL | ||
103332 | +ocfs2_find_xe_in_bucket_56224 ocfs2_find_xe_in_bucket 0 56224 NULL | 102641 | +ocfs2_find_xe_in_bucket_56224 ocfs2_find_xe_in_bucket 0 56224 NULL |
103333 | +cp210x_get_config_56229 cp210x_get_config 4 56229 NULL | 102642 | +cp210x_get_config_56229 cp210x_get_config 4 56229 NULL |
103334 | +do_ipt_set_ctl_56238 do_ipt_set_ctl 4 56238 NULL | 102643 | +do_ipt_set_ctl_56238 do_ipt_set_ctl 4 56238 NULL |
@@ -103347,6 +102656,7 @@ index 0000000..7982a0c | |||
103347 | +vxge_os_dma_malloc_async_56348 vxge_os_dma_malloc_async 3 56348 NULL | 102656 | +vxge_os_dma_malloc_async_56348 vxge_os_dma_malloc_async 3 56348 NULL |
103348 | +iov_iter_copy_from_user_atomic_56368 iov_iter_copy_from_user_atomic 4 56368 NULL | 102657 | +iov_iter_copy_from_user_atomic_56368 iov_iter_copy_from_user_atomic 4 56368 NULL |
103349 | +dev_read_56369 dev_read 3 56369 NULL | 102658 | +dev_read_56369 dev_read 3 56369 NULL |
102659 | +write_gssp_56404 write_gssp 3 56404 NULL | ||
103350 | +ocfs2_control_read_56405 ocfs2_control_read 3 56405 NULL | 102660 | +ocfs2_control_read_56405 ocfs2_control_read 3 56405 NULL |
103351 | +__get_vm_area_caller_56416 __get_vm_area_caller 1 56416 NULL nohasharray | 102661 | +__get_vm_area_caller_56416 __get_vm_area_caller 1 56416 NULL nohasharray |
103352 | +acpi_os_write_memory_56416 acpi_os_write_memory 1-3 56416 &__get_vm_area_caller_56416 | 102662 | +acpi_os_write_memory_56416 acpi_os_write_memory 1-3 56416 &__get_vm_area_caller_56416 |
@@ -103357,9 +102667,12 @@ index 0000000..7982a0c | |||
103357 | +cx231xx_init_isoc_56453 cx231xx_init_isoc 3-2 56453 NULL | 102667 | +cx231xx_init_isoc_56453 cx231xx_init_isoc 3-2 56453 NULL |
103358 | +set_connectable_56458 set_connectable 4 56458 NULL | 102668 | +set_connectable_56458 set_connectable 4 56458 NULL |
103359 | +osd_req_list_partition_objects_56464 osd_req_list_partition_objects 5 56464 NULL | 102669 | +osd_req_list_partition_objects_56464 osd_req_list_partition_objects 5 56464 NULL |
102670 | +putused_user_56467 putused_user 3 56467 NULL | ||
103360 | +calc_linear_pos_56472 calc_linear_pos 0-3 56472 NULL | 102671 | +calc_linear_pos_56472 calc_linear_pos 0-3 56472 NULL |
102672 | +global_rt_period_56476 global_rt_period 0 56476 NULL | ||
103361 | +crypto_shash_alignmask_56486 crypto_shash_alignmask 0 56486 NULL | 102673 | +crypto_shash_alignmask_56486 crypto_shash_alignmask 0 56486 NULL |
103362 | +ieee80211_rx_mgmt_probe_beacon_56491 ieee80211_rx_mgmt_probe_beacon 3 56491 NULL | 102674 | +ieee80211_rx_mgmt_probe_beacon_56491 ieee80211_rx_mgmt_probe_beacon 3 56491 NULL |
102675 | +init_map_ip_56508 init_map_ip 5 56508 NULL | ||
103363 | +cfg80211_connect_result_56515 cfg80211_connect_result 4-6 56515 NULL | 102676 | +cfg80211_connect_result_56515 cfg80211_connect_result 4-6 56515 NULL |
103364 | +ip_options_get_56538 ip_options_get 4 56538 NULL | 102677 | +ip_options_get_56538 ip_options_get 4 56538 NULL |
103365 | +ocfs2_change_extent_flag_56549 ocfs2_change_extent_flag 5 56549 NULL | 102678 | +ocfs2_change_extent_flag_56549 ocfs2_change_extent_flag 5 56549 NULL |
@@ -103386,6 +102699,7 @@ index 0000000..7982a0c | |||
103386 | +mtdchar_write_56831 mtdchar_write 3 56831 NULL nohasharray | 102699 | +mtdchar_write_56831 mtdchar_write 3 56831 NULL nohasharray |
103387 | +ntfs_rl_realloc_56831 ntfs_rl_realloc 3 56831 &mtdchar_write_56831 | 102700 | +ntfs_rl_realloc_56831 ntfs_rl_realloc 3 56831 &mtdchar_write_56831 |
103388 | +snd_rawmidi_kernel_write1_56847 snd_rawmidi_kernel_write1 4 56847 NULL | 102701 | +snd_rawmidi_kernel_write1_56847 snd_rawmidi_kernel_write1 4 56847 NULL |
102702 | +si476x_radio_read_agc_blob_56849 si476x_radio_read_agc_blob 3 56849 NULL | ||
103389 | +wb_lookup_56858 wb_lookup 2 56858 NULL | 102703 | +wb_lookup_56858 wb_lookup 2 56858 NULL |
103390 | +ext3_xattr_ibody_get_56880 ext3_xattr_ibody_get 0 56880 NULL | 102704 | +ext3_xattr_ibody_get_56880 ext3_xattr_ibody_get 0 56880 NULL |
103391 | +pvr2_debugifc_print_status_56890 pvr2_debugifc_print_status 3 56890 NULL | 102705 | +pvr2_debugifc_print_status_56890 pvr2_debugifc_print_status 3 56890 NULL |
@@ -103423,6 +102737,7 @@ index 0000000..7982a0c | |||
103423 | +rx_hw_stuck_read_57179 rx_hw_stuck_read 3 57179 NULL | 102737 | +rx_hw_stuck_read_57179 rx_hw_stuck_read 3 57179 NULL |
103424 | +tt3650_ci_msg_57219 tt3650_ci_msg 4 57219 NULL | 102738 | +tt3650_ci_msg_57219 tt3650_ci_msg 4 57219 NULL |
103425 | +dma_fifo_alloc_57236 dma_fifo_alloc 5-3-2 57236 NULL | 102739 | +dma_fifo_alloc_57236 dma_fifo_alloc 5-3-2 57236 NULL |
102740 | +flush_space_57241 flush_space 3 57241 NULL | ||
103426 | +ieee80211_if_fmt_tsf_57249 ieee80211_if_fmt_tsf 3 57249 NULL | 102741 | +ieee80211_if_fmt_tsf_57249 ieee80211_if_fmt_tsf 3 57249 NULL |
103427 | +oprofilefs_ulong_from_user_57251 oprofilefs_ulong_from_user 3 57251 NULL | 102742 | +oprofilefs_ulong_from_user_57251 oprofilefs_ulong_from_user 3 57251 NULL |
103428 | +alloc_flex_gd_57259 alloc_flex_gd 1 57259 NULL | 102743 | +alloc_flex_gd_57259 alloc_flex_gd 1 57259 NULL |
@@ -103489,6 +102804,7 @@ index 0000000..7982a0c | |||
103489 | +nouveau_gpio_create__57735 nouveau_gpio_create_ 4-5 57735 NULL | 102804 | +nouveau_gpio_create__57735 nouveau_gpio_create_ 4-5 57735 NULL |
103490 | +compat_sys_set_mempolicy_57742 compat_sys_set_mempolicy 3 57742 NULL | 102805 | +compat_sys_set_mempolicy_57742 compat_sys_set_mempolicy 3 57742 NULL |
103491 | +ieee80211_if_fmt_dot11MeshHWMPpreqMinInterval_57762 ieee80211_if_fmt_dot11MeshHWMPpreqMinInterval 3 57762 NULL | 102806 | +ieee80211_if_fmt_dot11MeshHWMPpreqMinInterval_57762 ieee80211_if_fmt_dot11MeshHWMPpreqMinInterval 3 57762 NULL |
102807 | +SYSC_process_vm_writev_57776 SYSC_process_vm_writev 3-5 57776 NULL | ||
103492 | +ld2_57794 ld2 0 57794 NULL | 102808 | +ld2_57794 ld2 0 57794 NULL |
103493 | +ivtv_read_57796 ivtv_read 3 57796 NULL | 102809 | +ivtv_read_57796 ivtv_read 3 57796 NULL |
103494 | +generic_ptrace_peekdata_57806 generic_ptrace_peekdata 2 57806 NULL | 102810 | +generic_ptrace_peekdata_57806 generic_ptrace_peekdata 2 57806 NULL |
@@ -103538,9 +102854,11 @@ index 0000000..7982a0c | |||
103538 | +pcim_iomap_58334 pcim_iomap 3 58334 NULL | 102854 | +pcim_iomap_58334 pcim_iomap 3 58334 NULL |
103539 | +diva_init_dma_map_58336 diva_init_dma_map 3 58336 NULL | 102855 | +diva_init_dma_map_58336 diva_init_dma_map 3 58336 NULL |
103540 | +next_pidmap_58347 next_pidmap 2 58347 NULL | 102856 | +next_pidmap_58347 next_pidmap 2 58347 NULL |
102857 | +SyS_migrate_pages_58348 SyS_migrate_pages 2 58348 NULL | ||
103541 | +vmalloc_to_sg_58354 vmalloc_to_sg 2 58354 NULL | 102858 | +vmalloc_to_sg_58354 vmalloc_to_sg 2 58354 NULL |
103542 | +save_hint_58359 save_hint 2 58359 NULL | 102859 | +save_hint_58359 save_hint 2 58359 NULL |
103543 | +brcmf_debugfs_sdio_counter_read_58369 brcmf_debugfs_sdio_counter_read 3 58369 NULL | 102860 | +brcmf_debugfs_sdio_counter_read_58369 brcmf_debugfs_sdio_counter_read 3 58369 NULL |
102861 | +hash_ipportnet6_expire_58379 hash_ipportnet6_expire 3 58379 NULL | ||
103544 | +il_dbgfs_status_read_58388 il_dbgfs_status_read 3 58388 NULL | 102862 | +il_dbgfs_status_read_58388 il_dbgfs_status_read 3 58388 NULL |
103545 | +kvm_mmu_write_protect_pt_masked_58406 kvm_mmu_write_protect_pt_masked 3 58406 NULL | 102863 | +kvm_mmu_write_protect_pt_masked_58406 kvm_mmu_write_protect_pt_masked 3 58406 NULL |
103546 | +i2400m_pld_size_58415 i2400m_pld_size 0 58415 NULL | 102864 | +i2400m_pld_size_58415 i2400m_pld_size 0 58415 NULL |
@@ -103556,10 +102874,12 @@ index 0000000..7982a0c | |||
103556 | +memblock_alloc_try_nid_58493 memblock_alloc_try_nid 1-2 58493 NULL | 102874 | +memblock_alloc_try_nid_58493 memblock_alloc_try_nid 1-2 58493 NULL |
103557 | +rndis_add_response_58544 rndis_add_response 2 58544 NULL | 102875 | +rndis_add_response_58544 rndis_add_response 2 58544 NULL |
103558 | +__clear_discard_58546 __clear_discard 2 58546 NULL | 102876 | +__clear_discard_58546 __clear_discard 2 58546 NULL |
102877 | +wrap_max_58548 wrap_max 0-1-2 58548 NULL | ||
103559 | +wep_decrypt_fail_read_58567 wep_decrypt_fail_read 3 58567 NULL | 102878 | +wep_decrypt_fail_read_58567 wep_decrypt_fail_read 3 58567 NULL |
103560 | +sip_sprintf_addr_port_58574 sip_sprintf_addr_port 0 58574 NULL | 102879 | +sip_sprintf_addr_port_58574 sip_sprintf_addr_port 0 58574 NULL |
103561 | +scnprint_mac_oui_58578 scnprint_mac_oui 3-0 58578 NULL | 102880 | +scnprint_mac_oui_58578 scnprint_mac_oui 3-0 58578 NULL |
103562 | +ea_read_inline_58589 ea_read_inline 0 58589 NULL | 102881 | +ea_read_inline_58589 ea_read_inline 0 58589 NULL |
102882 | +isku_sysfs_read_keys_thumbster_58590 isku_sysfs_read_keys_thumbster 6 58590 NULL | ||
103563 | +xip_file_read_58592 xip_file_read 3 58592 NULL | 102883 | +xip_file_read_58592 xip_file_read 3 58592 NULL |
103564 | +gdth_search_isa_58595 gdth_search_isa 1 58595 NULL | 102884 | +gdth_search_isa_58595 gdth_search_isa 1 58595 NULL |
103565 | +ebt_buf_count_58607 ebt_buf_count 0 58607 NULL | 102885 | +ebt_buf_count_58607 ebt_buf_count 0 58607 NULL |
@@ -103586,7 +102906,7 @@ index 0000000..7982a0c | |||
103586 | +__do_config_autodelink_58763 __do_config_autodelink 3 58763 NULL | 102906 | +__do_config_autodelink_58763 __do_config_autodelink 3 58763 NULL |
103587 | +regmap_calc_reg_len_58795 regmap_calc_reg_len 0 58795 NULL | 102907 | +regmap_calc_reg_len_58795 regmap_calc_reg_len 0 58795 NULL |
103588 | +raw_send_hdrinc_58803 raw_send_hdrinc 4 58803 NULL | 102908 | +raw_send_hdrinc_58803 raw_send_hdrinc 4 58803 NULL |
103589 | +isku_sysfs_read_58806 isku_sysfs_read 6 58806 NULL | 102909 | +isku_sysfs_read_58806 isku_sysfs_read 6-5 58806 NULL |
103590 | +ep_read_58813 ep_read 3 58813 NULL | 102910 | +ep_read_58813 ep_read 3 58813 NULL |
103591 | +command_write_58841 command_write 3 58841 NULL | 102911 | +command_write_58841 command_write 3 58841 NULL |
103592 | +ocfs2_truncate_log_append_58850 ocfs2_truncate_log_append 3 58850 NULL | 102912 | +ocfs2_truncate_log_append_58850 ocfs2_truncate_log_append 3 58850 NULL |
@@ -103606,6 +102926,7 @@ index 0000000..7982a0c | |||
103606 | +edac_align_ptr_59003 edac_align_ptr 0 59003 NULL | 102926 | +edac_align_ptr_59003 edac_align_ptr 0 59003 NULL |
103607 | +ep_write_59008 ep_write 3 59008 NULL | 102927 | +ep_write_59008 ep_write 3 59008 NULL |
103608 | +i915_ring_stop_write_59010 i915_ring_stop_write 3 59010 NULL | 102928 | +i915_ring_stop_write_59010 i915_ring_stop_write 3 59010 NULL |
102929 | +SyS_preadv_59029 SyS_preadv 3 59029 NULL | ||
103609 | +init_pci_cap_msi_perm_59033 init_pci_cap_msi_perm 2 59033 NULL | 102930 | +init_pci_cap_msi_perm_59033 init_pci_cap_msi_perm 2 59033 NULL |
103610 | +selinux_transaction_write_59038 selinux_transaction_write 3 59038 NULL | 102931 | +selinux_transaction_write_59038 selinux_transaction_write 3 59038 NULL |
103611 | +crypto_aead_reqsize_59039 crypto_aead_reqsize 0 59039 NULL | 102932 | +crypto_aead_reqsize_59039 crypto_aead_reqsize 0 59039 NULL |
@@ -103639,8 +102960,10 @@ index 0000000..7982a0c | |||
103639 | +xfs_dir2_sf_entsize_59366 xfs_dir2_sf_entsize 0-2 59366 NULL | 102960 | +xfs_dir2_sf_entsize_59366 xfs_dir2_sf_entsize 0-2 59366 NULL |
103640 | +pvr2_debugifc_print_info_59380 pvr2_debugifc_print_info 3 59380 NULL | 102961 | +pvr2_debugifc_print_info_59380 pvr2_debugifc_print_info 3 59380 NULL |
103641 | +fc_frame_alloc_fill_59394 fc_frame_alloc_fill 2 59394 NULL | 102962 | +fc_frame_alloc_fill_59394 fc_frame_alloc_fill 2 59394 NULL |
102963 | +isku_sysfs_read_keys_function_59412 isku_sysfs_read_keys_function 6 59412 NULL | ||
103642 | +vxge_hw_ring_rxds_per_block_get_59425 vxge_hw_ring_rxds_per_block_get 0 59425 NULL | 102964 | +vxge_hw_ring_rxds_per_block_get_59425 vxge_hw_ring_rxds_per_block_get 0 59425 NULL |
103643 | +squashfs_read_data_59440 squashfs_read_data 6 59440 NULL | 102965 | +squashfs_read_data_59440 squashfs_read_data 6 59440 NULL |
102966 | +SyS_sched_setaffinity_59442 SyS_sched_setaffinity 2 59442 NULL | ||
103644 | +fs_path_ensure_buf_59445 fs_path_ensure_buf 2 59445 NULL | 102967 | +fs_path_ensure_buf_59445 fs_path_ensure_buf 2 59445 NULL |
103645 | +descriptor_loc_59446 descriptor_loc 3 59446 NULL | 102968 | +descriptor_loc_59446 descriptor_loc 3 59446 NULL |
103646 | +do_compat_semctl_59449 do_compat_semctl 4 59449 NULL | 102969 | +do_compat_semctl_59449 do_compat_semctl 4 59449 NULL |
@@ -103658,7 +102981,9 @@ index 0000000..7982a0c | |||
103658 | +ubifs_setxattr_59650 ubifs_setxattr 4 59650 NULL nohasharray | 102981 | +ubifs_setxattr_59650 ubifs_setxattr 4 59650 NULL nohasharray |
103659 | +hidraw_read_59650 hidraw_read 3 59650 &ubifs_setxattr_59650 | 102982 | +hidraw_read_59650 hidraw_read 3 59650 &ubifs_setxattr_59650 |
103660 | +v9fs_xattr_set_acl_59651 v9fs_xattr_set_acl 4 59651 NULL | 102983 | +v9fs_xattr_set_acl_59651 v9fs_xattr_set_acl 4 59651 NULL |
102984 | +paravirt_sched_clock_59660 paravirt_sched_clock 0 59660 NULL | ||
103661 | +__devcgroup_check_permission_59665 __devcgroup_check_permission 0 59665 NULL | 102985 | +__devcgroup_check_permission_59665 __devcgroup_check_permission 0 59665 NULL |
102986 | +iwl_dbgfs_mac_params_read_59666 iwl_dbgfs_mac_params_read 3 59666 NULL | ||
103662 | +alloc_dca_provider_59670 alloc_dca_provider 2 59670 NULL | 102987 | +alloc_dca_provider_59670 alloc_dca_provider 2 59670 NULL |
103663 | +can_nocow_odirect_59681 can_nocow_odirect 3 59681 NULL | 102988 | +can_nocow_odirect_59681 can_nocow_odirect 3 59681 NULL |
103664 | +sriov_enable_59689 sriov_enable 2 59689 NULL | 102989 | +sriov_enable_59689 sriov_enable 2 59689 NULL |
@@ -103671,6 +102996,8 @@ index 0000000..7982a0c | |||
103671 | +ext3_acl_count_59754 ext3_acl_count 0-1 59754 NULL | 102996 | +ext3_acl_count_59754 ext3_acl_count 0-1 59754 NULL |
103672 | +long_retry_limit_read_59766 long_retry_limit_read 3 59766 NULL | 102997 | +long_retry_limit_read_59766 long_retry_limit_read 3 59766 NULL |
103673 | +venus_remove_59781 venus_remove 4 59781 NULL | 102998 | +venus_remove_59781 venus_remove 4 59781 NULL |
102999 | +mei_nfc_recv_59784 mei_nfc_recv 3 59784 NULL | ||
103000 | +C_SYSC_preadv_59801 C_SYSC_preadv 3 59801 NULL | ||
103674 | +ipw_write_59807 ipw_write 3 59807 NULL | 103001 | +ipw_write_59807 ipw_write 3 59807 NULL |
103675 | +rtllib_wx_set_gen_ie_59808 rtllib_wx_set_gen_ie 3 59808 NULL | 103002 | +rtllib_wx_set_gen_ie_59808 rtllib_wx_set_gen_ie 3 59808 NULL |
103676 | +scsi_init_shared_tag_map_59812 scsi_init_shared_tag_map 2 59812 NULL | 103003 | +scsi_init_shared_tag_map_59812 scsi_init_shared_tag_map 2 59812 NULL |
@@ -103678,7 +103005,8 @@ index 0000000..7982a0c | |||
103678 | +gspca_dev_probe2_59833 gspca_dev_probe2 4 59833 NULL | 103005 | +gspca_dev_probe2_59833 gspca_dev_probe2 4 59833 NULL |
103679 | +regmap_raw_write_async_59849 regmap_raw_write_async 2-4 59849 NULL | 103006 | +regmap_raw_write_async_59849 regmap_raw_write_async 2-4 59849 NULL |
103680 | +pvr2_ioread_set_sync_key_59882 pvr2_ioread_set_sync_key 3 59882 NULL | 103007 | +pvr2_ioread_set_sync_key_59882 pvr2_ioread_set_sync_key 3 59882 NULL |
103681 | +shmem_zero_setup_59885 shmem_zero_setup 0 59885 NULL | 103008 | +shmem_zero_setup_59885 shmem_zero_setup 0 59885 NULL nohasharray |
103009 | +start_transaction_59885 start_transaction 2 59885 &shmem_zero_setup_59885 | ||
103682 | +ffs_prepare_buffer_59892 ffs_prepare_buffer 2 59892 NULL | 103010 | +ffs_prepare_buffer_59892 ffs_prepare_buffer 2 59892 NULL |
103683 | +swiotlb_map_page_59909 swiotlb_map_page 3 59909 NULL | 103011 | +swiotlb_map_page_59909 swiotlb_map_page 3 59909 NULL |
103684 | +il_dbgfs_rxon_flags_read_59950 il_dbgfs_rxon_flags_read 3 59950 NULL nohasharray | 103012 | +il_dbgfs_rxon_flags_read_59950 il_dbgfs_rxon_flags_read 3 59950 NULL nohasharray |
@@ -103709,11 +103037,13 @@ index 0000000..7982a0c | |||
103709 | +mp_register_gsi_60079 mp_register_gsi 2 60079 NULL | 103037 | +mp_register_gsi_60079 mp_register_gsi 2 60079 NULL |
103710 | +rxrpc_kernel_send_data_60083 rxrpc_kernel_send_data 3 60083 NULL | 103038 | +rxrpc_kernel_send_data_60083 rxrpc_kernel_send_data 3 60083 NULL |
103711 | +ieee80211_if_fmt_fwded_frames_60103 ieee80211_if_fmt_fwded_frames 3 60103 NULL | 103039 | +ieee80211_if_fmt_fwded_frames_60103 ieee80211_if_fmt_fwded_frames 3 60103 NULL |
103040 | +SYSC_msgsnd_60113 SYSC_msgsnd 3 60113 NULL | ||
103712 | +ttm_bo_kmap_60118 ttm_bo_kmap 3-2 60118 NULL | 103041 | +ttm_bo_kmap_60118 ttm_bo_kmap 3-2 60118 NULL |
103713 | +jmb38x_ms_count_slots_60164 jmb38x_ms_count_slots 0 60164 NULL | 103042 | +jmb38x_ms_count_slots_60164 jmb38x_ms_count_slots 0 60164 NULL |
103714 | +init_state_60165 init_state 2 60165 NULL | 103043 | +init_state_60165 init_state 2 60165 NULL |
103715 | +sg_build_sgat_60179 sg_build_sgat 3 60179 NULL nohasharray | 103044 | +sg_build_sgat_60179 sg_build_sgat 3 60179 NULL nohasharray |
103716 | +jffs2_alloc_full_dirent_60179 jffs2_alloc_full_dirent 1 60179 &sg_build_sgat_60179 | 103045 | +jffs2_alloc_full_dirent_60179 jffs2_alloc_full_dirent 1 60179 &sg_build_sgat_60179 |
103046 | +fuse_async_req_send_60183 fuse_async_req_send 0-3 60183 NULL | ||
103717 | +rx_rx_tkip_replays_read_60193 rx_rx_tkip_replays_read 3 60193 NULL | 103047 | +rx_rx_tkip_replays_read_60193 rx_rx_tkip_replays_read 3 60193 NULL |
103718 | +svc_compat_ioctl_60194 svc_compat_ioctl 3 60194 NULL | 103048 | +svc_compat_ioctl_60194 svc_compat_ioctl 3 60194 NULL |
103719 | +ib_send_cm_mra_60202 ib_send_cm_mra 4 60202 NULL nohasharray | 103049 | +ib_send_cm_mra_60202 ib_send_cm_mra 4 60202 NULL nohasharray |
@@ -103734,6 +103064,7 @@ index 0000000..7982a0c | |||
103734 | +dccp_setsockopt_60367 dccp_setsockopt 5 60367 NULL | 103064 | +dccp_setsockopt_60367 dccp_setsockopt 5 60367 NULL |
103735 | +ubi_eba_atomic_leb_change_60379 ubi_eba_atomic_leb_change 5 60379 NULL | 103065 | +ubi_eba_atomic_leb_change_60379 ubi_eba_atomic_leb_change 5 60379 NULL |
103736 | +instruction_pointer_60384 instruction_pointer 0 60384 NULL | 103066 | +instruction_pointer_60384 instruction_pointer 0 60384 NULL |
103067 | +drop_outstanding_extent_60390 drop_outstanding_extent 0 60390 NULL | ||
103737 | +mthca_alloc_resize_buf_60394 mthca_alloc_resize_buf 3 60394 NULL | 103068 | +mthca_alloc_resize_buf_60394 mthca_alloc_resize_buf 3 60394 NULL |
103738 | +ocfs2_zero_extend_60396 ocfs2_zero_extend 3 60396 NULL | 103069 | +ocfs2_zero_extend_60396 ocfs2_zero_extend 3 60396 NULL |
103739 | +driver_names_read_60399 driver_names_read 3 60399 NULL | 103070 | +driver_names_read_60399 driver_names_read 3 60399 NULL |
@@ -103743,7 +103074,8 @@ index 0000000..7982a0c | |||
103743 | +tstats_write_60432 tstats_write 3 60432 NULL nohasharray | 103074 | +tstats_write_60432 tstats_write 3 60432 NULL nohasharray |
103744 | +kmalloc_60432 kmalloc 1 60432 &tstats_write_60432 | 103075 | +kmalloc_60432 kmalloc 1 60432 &tstats_write_60432 |
103745 | +tipc_buf_acquire_60437 tipc_buf_acquire 1 60437 NULL | 103076 | +tipc_buf_acquire_60437 tipc_buf_acquire 1 60437 NULL |
103746 | +rx_data_60442 rx_data 4 60442 NULL | 103077 | +rx_data_60442 rx_data 4 60442 NULL nohasharray |
103078 | +scaled_div32_60442 scaled_div32 1-2 60442 &rx_data_60442 | ||
103747 | +tcf_csum_ipv4_igmp_60446 tcf_csum_ipv4_igmp 3 60446 NULL | 103079 | +tcf_csum_ipv4_igmp_60446 tcf_csum_ipv4_igmp 3 60446 NULL |
103748 | +snd_hda_get_num_raw_conns_60462 snd_hda_get_num_raw_conns 0 60462 NULL | 103080 | +snd_hda_get_num_raw_conns_60462 snd_hda_get_num_raw_conns 0 60462 NULL |
103749 | +crypto_shash_setkey_60483 crypto_shash_setkey 3 60483 NULL | 103081 | +crypto_shash_setkey_60483 crypto_shash_setkey 3 60483 NULL |
@@ -103751,6 +103083,8 @@ index 0000000..7982a0c | |||
103751 | +hysdn_sched_rx_60533 hysdn_sched_rx 3 60533 NULL | 103083 | +hysdn_sched_rx_60533 hysdn_sched_rx 3 60533 NULL |
103752 | +v9fs_fid_readn_60544 v9fs_fid_readn 4 60544 NULL | 103084 | +v9fs_fid_readn_60544 v9fs_fid_readn 4 60544 NULL |
103753 | +nonpaging_map_60551 nonpaging_map 4 60551 NULL | 103085 | +nonpaging_map_60551 nonpaging_map 4 60551 NULL |
103086 | +nfsd_hashsize_60562 nfsd_hashsize 0 60562 NULL | ||
103087 | +hash_net6_expire_60598 hash_net6_expire 3 60598 NULL | ||
103754 | +skb_transport_offset_60619 skb_transport_offset 0 60619 NULL | 103088 | +skb_transport_offset_60619 skb_transport_offset 0 60619 NULL |
103755 | +wl1273_fm_fops_write_60621 wl1273_fm_fops_write 3 60621 NULL | 103089 | +wl1273_fm_fops_write_60621 wl1273_fm_fops_write 3 60621 NULL |
103756 | +acl_alloc_stack_init_60630 acl_alloc_stack_init 1 60630 NULL | 103090 | +acl_alloc_stack_init_60630 acl_alloc_stack_init 1 60630 NULL |
@@ -103780,7 +103114,7 @@ index 0000000..7982a0c | |||
103780 | +hsc_msg_alloc_60990 hsc_msg_alloc 1 60990 NULL | 103114 | +hsc_msg_alloc_60990 hsc_msg_alloc 1 60990 NULL |
103781 | +ath6kl_lrssi_roam_read_61022 ath6kl_lrssi_roam_read 3 61022 NULL | 103115 | +ath6kl_lrssi_roam_read_61022 ath6kl_lrssi_roam_read 3 61022 NULL |
103782 | +symtab_init_61050 symtab_init 2 61050 NULL | 103116 | +symtab_init_61050 symtab_init 2 61050 NULL |
103783 | +fuse_send_write_61053 fuse_send_write 0 61053 NULL | 103117 | +fuse_send_write_61053 fuse_send_write 0-4 61053 NULL |
103784 | +bitmap_scnlistprintf_61062 bitmap_scnlistprintf 0-4-2 61062 NULL | 103118 | +bitmap_scnlistprintf_61062 bitmap_scnlistprintf 0-4-2 61062 NULL |
103785 | +ahash_align_buffer_size_61070 ahash_align_buffer_size 0-1-2 61070 NULL | 103119 | +ahash_align_buffer_size_61070 ahash_align_buffer_size 0-1-2 61070 NULL |
103786 | +get_derived_key_61100 get_derived_key 4 61100 NULL | 103120 | +get_derived_key_61100 get_derived_key 4 61100 NULL |
@@ -103789,17 +103123,23 @@ index 0000000..7982a0c | |||
103789 | +__probe_kernel_read_61119 __probe_kernel_read 3 61119 &p80211_headerlen_61119 | 103123 | +__probe_kernel_read_61119 __probe_kernel_read 3 61119 &p80211_headerlen_61119 |
103790 | +vmemmap_alloc_block_buf_61126 vmemmap_alloc_block_buf 1 61126 NULL | 103124 | +vmemmap_alloc_block_buf_61126 vmemmap_alloc_block_buf 1 61126 NULL |
103791 | +afs_proc_cells_write_61139 afs_proc_cells_write 3 61139 NULL | 103125 | +afs_proc_cells_write_61139 afs_proc_cells_write 3 61139 NULL |
103126 | +brcmf_sdio_chip_cr4_exitdl_61143 brcmf_sdio_chip_cr4_exitdl 4 61143 NULL | ||
103792 | +__vmalloc_61168 __vmalloc 1 61168 NULL | 103127 | +__vmalloc_61168 __vmalloc 1 61168 NULL |
103793 | +event_oom_late_read_61175 event_oom_late_read 3 61175 NULL nohasharray | 103128 | +event_oom_late_read_61175 event_oom_late_read 3 61175 NULL nohasharray |
103794 | +pair_device_61175 pair_device 4 61175 &event_oom_late_read_61175 | 103129 | +pair_device_61175 pair_device 4 61175 &event_oom_late_read_61175 |
103795 | +sys_lsetxattr_61177 sys_lsetxattr 4 61177 NULL | 103130 | +sys_lsetxattr_61177 sys_lsetxattr 4 61177 NULL |
103131 | +SyS_prctl_61202 SyS_prctl 4 61202 NULL | ||
103796 | +arch_hibernation_header_save_61212 arch_hibernation_header_save 0 61212 NULL | 103132 | +arch_hibernation_header_save_61212 arch_hibernation_header_save 0 61212 NULL |
103797 | +smk_read_ambient_61220 smk_read_ambient 3 61220 NULL | 103133 | +smk_read_ambient_61220 smk_read_ambient 3 61220 NULL |
103798 | +btrfs_bio_alloc_61270 btrfs_bio_alloc 3 61270 NULL | 103134 | +btrfs_bio_alloc_61270 btrfs_bio_alloc 3 61270 NULL |
103799 | +vortex_adbdma_getlinearpos_61283 vortex_adbdma_getlinearpos 0 61283 NULL | 103135 | +vortex_adbdma_getlinearpos_61283 vortex_adbdma_getlinearpos 0 61283 NULL |
103800 | +sys_add_key_61288 sys_add_key 4 61288 NULL | 103136 | +sys_add_key_61288 sys_add_key 4 61288 NULL nohasharray |
103137 | +nvme_trans_copy_to_user_61288 nvme_trans_copy_to_user 3 61288 &sys_add_key_61288 | ||
103801 | +ext4_issue_discard_61305 ext4_issue_discard 2 61305 NULL | 103138 | +ext4_issue_discard_61305 ext4_issue_discard 2 61305 NULL |
103139 | +xfer_from_user_61307 xfer_from_user 3 61307 NULL | ||
103140 | +timespec_to_ns_61317 timespec_to_ns 0 61317 NULL | ||
103802 | +xfrm_user_sec_ctx_size_61320 xfrm_user_sec_ctx_size 0 61320 NULL | 103141 | +xfrm_user_sec_ctx_size_61320 xfrm_user_sec_ctx_size 0 61320 NULL |
103142 | +C_SYSC_msgsnd_61330 C_SYSC_msgsnd 2-3 61330 NULL | ||
103803 | +st5481_setup_isocpipes_61340 st5481_setup_isocpipes 6-4 61340 NULL | 103143 | +st5481_setup_isocpipes_61340 st5481_setup_isocpipes 6-4 61340 NULL |
103804 | +rx_rx_wa_ba_not_expected_read_61341 rx_rx_wa_ba_not_expected_read 3 61341 NULL | 103144 | +rx_rx_wa_ba_not_expected_read_61341 rx_rx_wa_ba_not_expected_read 3 61341 NULL |
103805 | +f1x_map_sysaddr_to_csrow_61344 f1x_map_sysaddr_to_csrow 2 61344 NULL | 103145 | +f1x_map_sysaddr_to_csrow_61344 f1x_map_sysaddr_to_csrow 2 61344 NULL |
@@ -103814,6 +103154,7 @@ index 0000000..7982a0c | |||
103814 | +btrfs_item_size_61485 btrfs_item_size 0 61485 NULL | 103154 | +btrfs_item_size_61485 btrfs_item_size 0 61485 NULL |
103815 | +erst_errno_61526 erst_errno 0 61526 NULL | 103155 | +erst_errno_61526 erst_errno 0 61526 NULL |
103816 | +ntfs_attr_lookup_61539 ntfs_attr_lookup 0 61539 NULL | 103156 | +ntfs_attr_lookup_61539 ntfs_attr_lookup 0 61539 NULL |
103157 | +get_ohm_of_thermistor_61545 get_ohm_of_thermistor 2 61545 NULL | ||
103817 | +o2hb_pop_count_61553 o2hb_pop_count 2 61553 NULL | 103158 | +o2hb_pop_count_61553 o2hb_pop_count 2 61553 NULL |
103818 | +dvb_net_ioctl_61559 dvb_net_ioctl 2 61559 NULL | 103159 | +dvb_net_ioctl_61559 dvb_net_ioctl 2 61559 NULL |
103819 | +ieee80211_if_read_rc_rateidx_mask_2ghz_61570 ieee80211_if_read_rc_rateidx_mask_2ghz 3 61570 NULL | 103160 | +ieee80211_if_read_rc_rateidx_mask_2ghz_61570 ieee80211_if_read_rc_rateidx_mask_2ghz 3 61570 NULL |
@@ -103829,6 +103170,7 @@ index 0000000..7982a0c | |||
103829 | +ttm_page_pool_free_61661 ttm_page_pool_free 2 61661 NULL | 103170 | +ttm_page_pool_free_61661 ttm_page_pool_free 2 61661 NULL |
103830 | +insert_one_name_61668 insert_one_name 7 61668 NULL | 103171 | +insert_one_name_61668 insert_one_name 7 61668 NULL |
103831 | +lock_loop_61681 lock_loop 1 61681 NULL | 103172 | +lock_loop_61681 lock_loop 1 61681 NULL |
103173 | +__do_tune_cpucache_61684 __do_tune_cpucache 2 61684 NULL | ||
103832 | +filter_read_61692 filter_read 3 61692 NULL | 103174 | +filter_read_61692 filter_read 3 61692 NULL |
103833 | +iov_length_61716 iov_length 0 61716 NULL | 103175 | +iov_length_61716 iov_length 0 61716 NULL |
103834 | +fragmentation_threshold_read_61718 fragmentation_threshold_read 3 61718 NULL | 103176 | +fragmentation_threshold_read_61718 fragmentation_threshold_read 3 61718 NULL |
@@ -103839,6 +103181,7 @@ index 0000000..7982a0c | |||
103839 | +bfad_debugfs_write_regwr_61841 bfad_debugfs_write_regwr 3 61841 NULL | 103181 | +bfad_debugfs_write_regwr_61841 bfad_debugfs_write_regwr 3 61841 NULL |
103840 | +fs_path_prepare_for_add_61854 fs_path_prepare_for_add 2 61854 NULL | 103182 | +fs_path_prepare_for_add_61854 fs_path_prepare_for_add 2 61854 NULL |
103841 | +evdev_compute_buffer_size_61863 evdev_compute_buffer_size 0 61863 NULL | 103183 | +evdev_compute_buffer_size_61863 evdev_compute_buffer_size 0 61863 NULL |
103184 | +SYSC_lsetxattr_61869 SYSC_lsetxattr 4 61869 NULL | ||
103842 | +get_fw_name_61874 get_fw_name 3 61874 NULL | 103185 | +get_fw_name_61874 get_fw_name 3 61874 NULL |
103843 | +free_init_pages_61875 free_init_pages 2 61875 NULL | 103186 | +free_init_pages_61875 free_init_pages 2 61875 NULL |
103844 | +twl4030_sih_setup_61878 twl4030_sih_setup 3 61878 NULL | 103187 | +twl4030_sih_setup_61878 twl4030_sih_setup 3 61878 NULL |
@@ -103860,6 +103203,7 @@ index 0000000..7982a0c | |||
103860 | +virtnet_send_command_61993 virtnet_send_command 5-6 61993 NULL | 103203 | +virtnet_send_command_61993 virtnet_send_command 5-6 61993 NULL |
103861 | +xt_compat_match_offset_62011 xt_compat_match_offset 0 62011 NULL | 103204 | +xt_compat_match_offset_62011 xt_compat_match_offset 0 62011 NULL |
103862 | +jffs2_do_unlink_62020 jffs2_do_unlink 4 62020 NULL | 103205 | +jffs2_do_unlink_62020 jffs2_do_unlink 4 62020 NULL |
103206 | +SYSC_select_62024 SYSC_select 1 62024 NULL | ||
103863 | +pmcraid_build_passthrough_ioadls_62034 pmcraid_build_passthrough_ioadls 2 62034 NULL | 103207 | +pmcraid_build_passthrough_ioadls_62034 pmcraid_build_passthrough_ioadls 2 62034 NULL |
103864 | +ppp_tx_cp_62044 ppp_tx_cp 5 62044 NULL | 103208 | +ppp_tx_cp_62044 ppp_tx_cp 5 62044 NULL |
103865 | +sctp_user_addto_chunk_62047 sctp_user_addto_chunk 2-3 62047 NULL | 103209 | +sctp_user_addto_chunk_62047 sctp_user_addto_chunk 2-3 62047 NULL |
@@ -103876,6 +103220,7 @@ index 0000000..7982a0c | |||
103876 | +alloc_upcall_62186 alloc_upcall 2 62186 NULL | 103220 | +alloc_upcall_62186 alloc_upcall 2 62186 NULL |
103877 | +btrfs_xattr_acl_set_62203 btrfs_xattr_acl_set 4 62203 NULL | 103221 | +btrfs_xattr_acl_set_62203 btrfs_xattr_acl_set 4 62203 NULL |
103878 | +sock_kmalloc_62205 sock_kmalloc 2 62205 NULL | 103222 | +sock_kmalloc_62205 sock_kmalloc 2 62205 NULL |
103223 | +SYSC_setgroups16_62232 SYSC_setgroups16 1 62232 NULL | ||
103879 | +nfsd_read_file_62241 nfsd_read_file 6 62241 NULL | 103224 | +nfsd_read_file_62241 nfsd_read_file 6 62241 NULL |
103880 | +allocate_partition_62245 allocate_partition 4 62245 NULL | 103225 | +allocate_partition_62245 allocate_partition 4 62245 NULL |
103881 | +__qib_get_user_pages_62287 __qib_get_user_pages 1-2 62287 NULL | 103226 | +__qib_get_user_pages_62287 __qib_get_user_pages 1-2 62287 NULL |
@@ -103925,6 +103270,7 @@ index 0000000..7982a0c | |||
103925 | +init_chip_wc_pat_62768 init_chip_wc_pat 2 62768 NULL | 103270 | +init_chip_wc_pat_62768 init_chip_wc_pat 2 62768 NULL |
103926 | +ax25_sendmsg_62770 ax25_sendmsg 4 62770 NULL | 103271 | +ax25_sendmsg_62770 ax25_sendmsg 4 62770 NULL |
103927 | +page_key_alloc_62771 page_key_alloc 0 62771 NULL | 103272 | +page_key_alloc_62771 page_key_alloc 0 62771 NULL |
103273 | +C_SYSC_ipc_62776 C_SYSC_ipc 5-3-6-4 62776 NULL | ||
103928 | +tracing_total_entries_read_62817 tracing_total_entries_read 3 62817 NULL | 103274 | +tracing_total_entries_read_62817 tracing_total_entries_read 3 62817 NULL |
103929 | +__rounddown_pow_of_two_62836 __rounddown_pow_of_two 0 62836 NULL | 103275 | +__rounddown_pow_of_two_62836 __rounddown_pow_of_two 0 62836 NULL |
103930 | +bio_get_nr_vecs_62838 bio_get_nr_vecs 0 62838 NULL | 103276 | +bio_get_nr_vecs_62838 bio_get_nr_vecs 0 62838 NULL |
@@ -103937,11 +103283,13 @@ index 0000000..7982a0c | |||
103937 | +if_spi_host_to_card_62890 if_spi_host_to_card 4 62890 NULL | 103283 | +if_spi_host_to_card_62890 if_spi_host_to_card 4 62890 NULL |
103938 | +mempool_create_slab_pool_62907 mempool_create_slab_pool 1 62907 NULL | 103284 | +mempool_create_slab_pool_62907 mempool_create_slab_pool 1 62907 NULL |
103939 | +getdqbuf_62908 getdqbuf 1 62908 NULL | 103285 | +getdqbuf_62908 getdqbuf 1 62908 NULL |
103940 | +try_async_pf_62914 try_async_pf 3 62914 NULL | 103286 | +try_async_pf_62914 try_async_pf 3 62914 NULL nohasharray |
103287 | +SyS_remap_file_pages_62914 SyS_remap_file_pages 1 62914 &try_async_pf_62914 | ||
103941 | +agp_create_user_memory_62955 agp_create_user_memory 1 62955 NULL | 103288 | +agp_create_user_memory_62955 agp_create_user_memory 1 62955 NULL |
103942 | +__vb2_perform_fileio_63033 __vb2_perform_fileio 3 63033 NULL | 103289 | +__vb2_perform_fileio_63033 __vb2_perform_fileio 3 63033 NULL |
103943 | +pipeline_defrag_to_csum_swi_read_63037 pipeline_defrag_to_csum_swi_read 3 63037 NULL | 103290 | +pipeline_defrag_to_csum_swi_read_63037 pipeline_defrag_to_csum_swi_read 3 63037 NULL |
103944 | +scsi_host_alloc_63041 scsi_host_alloc 2 63041 NULL | 103291 | +scsi_host_alloc_63041 scsi_host_alloc 2 63041 NULL |
103292 | +gso_pskb_expand_head_63052 gso_pskb_expand_head 2 63052 NULL | ||
103945 | +unlink1_63059 unlink1 3 63059 NULL | 103293 | +unlink1_63059 unlink1 3 63059 NULL |
103946 | +xen_set_nslabs_63066 xen_set_nslabs 0 63066 NULL | 103294 | +xen_set_nslabs_63066 xen_set_nslabs 0 63066 NULL |
103947 | +ocfs2_decrease_refcount_63078 ocfs2_decrease_refcount 3 63078 NULL | 103295 | +ocfs2_decrease_refcount_63078 ocfs2_decrease_refcount 3 63078 NULL |
@@ -103952,6 +103300,7 @@ index 0000000..7982a0c | |||
103952 | +xen_zap_pfn_range_63149 xen_zap_pfn_range 1 63149 NULL | 103300 | +xen_zap_pfn_range_63149 xen_zap_pfn_range 1 63149 NULL |
103953 | +smk_write_revoke_subj_63173 smk_write_revoke_subj 3 63173 NULL | 103301 | +smk_write_revoke_subj_63173 smk_write_revoke_subj 3 63173 NULL |
103954 | +vme_master_read_63221 vme_master_read 0 63221 NULL | 103302 | +vme_master_read_63221 vme_master_read 0 63221 NULL |
103303 | +SyS_gethostname_63227 SyS_gethostname 2 63227 NULL | ||
103955 | +module_alloc_update_bounds_rw_63233 module_alloc_update_bounds_rw 1 63233 NULL | 103304 | +module_alloc_update_bounds_rw_63233 module_alloc_update_bounds_rw 1 63233 NULL |
103956 | +ptp_read_63251 ptp_read 4 63251 NULL | 103305 | +ptp_read_63251 ptp_read 4 63251 NULL |
103957 | +raid5_resize_63306 raid5_resize 2 63306 NULL | 103306 | +raid5_resize_63306 raid5_resize 2 63306 NULL |
@@ -104005,6 +103354,8 @@ index 0000000..7982a0c | |||
104005 | +kovaplus_sysfs_write_63795 kovaplus_sysfs_write 6 63795 NULL | 103354 | +kovaplus_sysfs_write_63795 kovaplus_sysfs_write 6 63795 NULL |
104006 | +mwifiex_11n_create_rx_reorder_tbl_63806 mwifiex_11n_create_rx_reorder_tbl 4 63806 NULL | 103355 | +mwifiex_11n_create_rx_reorder_tbl_63806 mwifiex_11n_create_rx_reorder_tbl 4 63806 NULL |
104007 | +copy_nodes_to_user_63807 copy_nodes_to_user 2 63807 NULL | 103356 | +copy_nodes_to_user_63807 copy_nodes_to_user 2 63807 NULL |
103357 | +dec_zcache_eph_zbytes_63817 dec_zcache_eph_zbytes 1 63817 NULL | ||
103358 | +prepare_copy_63826 prepare_copy 2 63826 NULL | ||
104008 | +sel_write_load_63830 sel_write_load 3 63830 NULL | 103359 | +sel_write_load_63830 sel_write_load 3 63830 NULL |
104009 | +proc_pid_attr_write_63845 proc_pid_attr_write 3 63845 NULL | 103360 | +proc_pid_attr_write_63845 proc_pid_attr_write 3 63845 NULL |
104010 | +init_map_ipmac_63896 init_map_ipmac 4-3 63896 NULL | 103361 | +init_map_ipmac_63896 init_map_ipmac 4-3 63896 NULL |
@@ -104022,19 +103373,23 @@ index 0000000..7982a0c | |||
104022 | +diva_xdi_write_63975 diva_xdi_write 4 63975 NULL | 103373 | +diva_xdi_write_63975 diva_xdi_write 4 63975 NULL |
104023 | +read_file_frameerrors_64001 read_file_frameerrors 3 64001 NULL | 103374 | +read_file_frameerrors_64001 read_file_frameerrors 3 64001 NULL |
104024 | +kmemdup_64015 kmemdup 2 64015 NULL | 103375 | +kmemdup_64015 kmemdup 2 64015 NULL |
103376 | +SyS_rt_sigpending_64018 SyS_rt_sigpending 2 64018 NULL | ||
104025 | +offset_to_vaddr_64025 offset_to_vaddr 0-2 64025 NULL nohasharray | 103377 | +offset_to_vaddr_64025 offset_to_vaddr 0-2 64025 NULL nohasharray |
104026 | +tcf_csum_skb_nextlayer_64025 tcf_csum_skb_nextlayer 3 64025 &offset_to_vaddr_64025 | 103378 | +tcf_csum_skb_nextlayer_64025 tcf_csum_skb_nextlayer 3 64025 &offset_to_vaddr_64025 |
104027 | +dbAllocDmapLev_64030 dbAllocDmapLev 0 64030 NULL | 103379 | +dbAllocDmapLev_64030 dbAllocDmapLev 0 64030 NULL |
104028 | +resize_async_buffer_64031 resize_async_buffer 4 64031 NULL | 103380 | +resize_async_buffer_64031 resize_async_buffer 4 64031 NULL |
104029 | +sep_lli_table_secure_dma_64042 sep_lli_table_secure_dma 2-3 64042 NULL | 103381 | +sep_lli_table_secure_dma_64042 sep_lli_table_secure_dma 2-3 64042 NULL |
103382 | +tfrc_calc_x_reverse_lookup_64057 tfrc_calc_x_reverse_lookup 0 64057 NULL | ||
104030 | +get_u8_64076 get_u8 0 64076 NULL | 103383 | +get_u8_64076 get_u8 0 64076 NULL |
104031 | +sl_realloc_bufs_64086 sl_realloc_bufs 2 64086 NULL | 103384 | +sl_realloc_bufs_64086 sl_realloc_bufs 2 64086 NULL |
104032 | +vmci_handle_arr_get_size_64088 vmci_handle_arr_get_size 0 64088 NULL | 103385 | +vmci_handle_arr_get_size_64088 vmci_handle_arr_get_size 0 64088 NULL |
104033 | +lbs_highrssi_read_64089 lbs_highrssi_read 3 64089 NULL | 103386 | +lbs_highrssi_read_64089 lbs_highrssi_read 3 64089 NULL |
103387 | +SyS_mq_timedsend_64107 SyS_mq_timedsend 3 64107 NULL | ||
104034 | +do_load_xattr_datum_64118 do_load_xattr_datum 0 64118 NULL | 103388 | +do_load_xattr_datum_64118 do_load_xattr_datum 0 64118 NULL |
104035 | +ol_quota_entries_per_block_64122 ol_quota_entries_per_block 0 64122 NULL | 103389 | +ol_quota_entries_per_block_64122 ol_quota_entries_per_block 0 64122 NULL |
104036 | +ext4_prepare_inline_data_64124 ext4_prepare_inline_data 3 64124 NULL | 103390 | +ext4_prepare_inline_data_64124 ext4_prepare_inline_data 3 64124 NULL |
104037 | +init_bch_64130 init_bch 1-2 64130 NULL | 103391 | +init_bch_64130 init_bch 1-2 64130 NULL |
103392 | +SYSC_ptrace_64136 SYSC_ptrace 3-4 64136 NULL | ||
104038 | +uea_idma_write_64139 uea_idma_write 3 64139 NULL | 103393 | +uea_idma_write_64139 uea_idma_write 3 64139 NULL |
104039 | +ablkcipher_copy_iv_64140 ablkcipher_copy_iv 3 64140 NULL | 103394 | +ablkcipher_copy_iv_64140 ablkcipher_copy_iv 3 64140 NULL |
104040 | +dlfb_ops_write_64150 dlfb_ops_write 3 64150 NULL | 103395 | +dlfb_ops_write_64150 dlfb_ops_write 3 64150 NULL |
@@ -104051,6 +103406,7 @@ index 0000000..7982a0c | |||
104051 | +ocfs2_block_check_validate_bhs_64302 ocfs2_block_check_validate_bhs 0 64302 NULL | 103406 | +ocfs2_block_check_validate_bhs_64302 ocfs2_block_check_validate_bhs 0 64302 NULL |
104052 | +error_error_bar_retry_read_64305 error_error_bar_retry_read 3 64305 NULL | 103407 | +error_error_bar_retry_read_64305 error_error_bar_retry_read 3 64305 NULL |
104053 | +ffz_64324 ffz 0 64324 NULL | 103408 | +ffz_64324 ffz 0 64324 NULL |
103409 | +map_region_64328 map_region 1 64328 NULL | ||
104054 | +sisusbcon_clear_64329 sisusbcon_clear 4-3-5 64329 NULL | 103410 | +sisusbcon_clear_64329 sisusbcon_clear 4-3-5 64329 NULL |
104055 | +ts_write_64336 ts_write 3 64336 NULL | 103411 | +ts_write_64336 ts_write 3 64336 NULL |
104056 | +usbtmc_write_64340 usbtmc_write 3 64340 NULL | 103412 | +usbtmc_write_64340 usbtmc_write 3 64340 NULL |
@@ -104073,6 +103429,7 @@ index 0000000..7982a0c | |||
104073 | +read_file_spectral_short_repeat_64431 read_file_spectral_short_repeat 3 64431 &ext4_trim_extent_64431 | 103429 | +read_file_spectral_short_repeat_64431 read_file_spectral_short_repeat 3 64431 &ext4_trim_extent_64431 |
104074 | +cap_capable_64462 cap_capable 0 64462 NULL | 103430 | +cap_capable_64462 cap_capable 0 64462 NULL |
104075 | +ip_vs_create_timeout_table_64478 ip_vs_create_timeout_table 2 64478 NULL | 103431 | +ip_vs_create_timeout_table_64478 ip_vs_create_timeout_table 2 64478 NULL |
103432 | +single_open_size_64483 single_open_size 4 64483 NULL | ||
104076 | +p54_parse_rssical_64493 p54_parse_rssical 3 64493 NULL | 103433 | +p54_parse_rssical_64493 p54_parse_rssical 3 64493 NULL |
104077 | +msg_data_sz_64503 msg_data_sz 0 64503 NULL | 103434 | +msg_data_sz_64503 msg_data_sz 0 64503 NULL |
104078 | +remove_uuid_64505 remove_uuid 4 64505 NULL nohasharray | 103435 | +remove_uuid_64505 remove_uuid 4 64505 NULL nohasharray |
@@ -104081,6 +103438,8 @@ index 0000000..7982a0c | |||
104081 | +opera1_usb_i2c_msgxfer_64521 opera1_usb_i2c_msgxfer 4 64521 NULL | 103438 | +opera1_usb_i2c_msgxfer_64521 opera1_usb_i2c_msgxfer 4 64521 NULL |
104082 | +ses_send_diag_64527 ses_send_diag 4 64527 NULL | 103439 | +ses_send_diag_64527 ses_send_diag 4 64527 NULL |
104083 | +prctl_set_mm_64538 prctl_set_mm 3 64538 NULL | 103440 | +prctl_set_mm_64538 prctl_set_mm 3 64538 NULL |
103441 | +SyS_bind_64544 SyS_bind 3 64544 NULL | ||
103442 | +rbd_obj_read_sync_64554 rbd_obj_read_sync 3-4 64554 NULL | ||
104084 | +__spi_sync_64561 __spi_sync 0 64561 NULL | 103443 | +__spi_sync_64561 __spi_sync 0 64561 NULL |
104085 | +__apei_exec_run_64563 __apei_exec_run 0 64563 NULL | 103444 | +__apei_exec_run_64563 __apei_exec_run 0 64563 NULL |
104086 | +fanotify_write_64623 fanotify_write 3 64623 NULL | 103445 | +fanotify_write_64623 fanotify_write 3 64623 NULL |
@@ -104101,6 +103460,7 @@ index 0000000..7982a0c | |||
104101 | +bio_map_kern_64751 bio_map_kern 3 64751 NULL | 103460 | +bio_map_kern_64751 bio_map_kern 3 64751 NULL |
104102 | +rt2x00debug_write_csr_64753 rt2x00debug_write_csr 3 64753 NULL | 103461 | +rt2x00debug_write_csr_64753 rt2x00debug_write_csr 3 64753 NULL |
104103 | +isr_low_rssi_read_64789 isr_low_rssi_read 3 64789 NULL | 103462 | +isr_low_rssi_read_64789 isr_low_rssi_read 3 64789 NULL |
103463 | +regmap_reg_ranges_read_file_64798 regmap_reg_ranges_read_file 3 64798 NULL | ||
104104 | +nfsctl_transaction_write_64800 nfsctl_transaction_write 3 64800 NULL | 103464 | +nfsctl_transaction_write_64800 nfsctl_transaction_write 3 64800 NULL |
104105 | +megaraid_change_queue_depth_64815 megaraid_change_queue_depth 2 64815 NULL | 103465 | +megaraid_change_queue_depth_64815 megaraid_change_queue_depth 2 64815 NULL |
104106 | +ecryptfs_send_miscdev_64816 ecryptfs_send_miscdev 2 64816 NULL | 103466 | +ecryptfs_send_miscdev_64816 ecryptfs_send_miscdev 2 64816 NULL |
@@ -104132,10 +103492,12 @@ index 0000000..7982a0c | |||
104132 | +__alloc_bootmem_node_high_65076 __alloc_bootmem_node_high 2-3 65076 NULL | 103492 | +__alloc_bootmem_node_high_65076 __alloc_bootmem_node_high 2-3 65076 NULL |
104133 | +ocfs2_truncate_cluster_pages_65086 ocfs2_truncate_cluster_pages 2 65086 NULL | 103493 | +ocfs2_truncate_cluster_pages_65086 ocfs2_truncate_cluster_pages 2 65086 NULL |
104134 | +ath9k_dump_mci_btcoex_65090 ath9k_dump_mci_btcoex 0 65090 NULL | 103494 | +ath9k_dump_mci_btcoex_65090 ath9k_dump_mci_btcoex 0 65090 NULL |
103495 | +C_SYSC_semctl_65091 C_SYSC_semctl 4 65091 NULL | ||
104135 | +ssb_bus_register_65183 ssb_bus_register 3 65183 NULL | 103496 | +ssb_bus_register_65183 ssb_bus_register 3 65183 NULL |
104136 | +rx_rx_done_read_65217 rx_rx_done_read 3 65217 NULL | 103497 | +rx_rx_done_read_65217 rx_rx_done_read 3 65217 NULL |
104137 | +print_endpoint_stat_65232 print_endpoint_stat 3-4-0 65232 NULL | 103498 | +print_endpoint_stat_65232 print_endpoint_stat 3-4-0 65232 NULL |
104138 | +whci_n_caps_65247 whci_n_caps 0 65247 NULL | 103499 | +whci_n_caps_65247 whci_n_caps 0 65247 NULL |
103500 | +atomic_long_read_65263 atomic_long_read 0 65263 NULL | ||
104139 | +kmem_zalloc_greedy_65268 kmem_zalloc_greedy 3-2 65268 NULL | 103501 | +kmem_zalloc_greedy_65268 kmem_zalloc_greedy 3-2 65268 NULL |
104140 | +kmalloc_parameter_65279 kmalloc_parameter 1 65279 NULL | 103502 | +kmalloc_parameter_65279 kmalloc_parameter 1 65279 NULL |
104141 | +compat_core_sys_select_65285 compat_core_sys_select 1 65285 NULL | 103503 | +compat_core_sys_select_65285 compat_core_sys_select 1 65285 NULL |
@@ -104145,11 +103507,13 @@ index 0000000..7982a0c | |||
104145 | +unpack_array_65318 unpack_array 0 65318 NULL | 103507 | +unpack_array_65318 unpack_array 0 65318 NULL |
104146 | +pci_vpd_find_tag_65325 pci_vpd_find_tag 0-2 65325 NULL | 103508 | +pci_vpd_find_tag_65325 pci_vpd_find_tag 0-2 65325 NULL |
104147 | +dccp_setsockopt_service_65336 dccp_setsockopt_service 4 65336 NULL | 103509 | +dccp_setsockopt_service_65336 dccp_setsockopt_service 4 65336 NULL |
103510 | +init_list_set_65351 init_list_set 2-3 65351 NULL | ||
104148 | +dma_rx_requested_read_65354 dma_rx_requested_read 3 65354 NULL | 103511 | +dma_rx_requested_read_65354 dma_rx_requested_read 3 65354 NULL |
104149 | +batadv_tt_save_orig_buffer_65361 batadv_tt_save_orig_buffer 4 65361 NULL | 103512 | +batadv_tt_save_orig_buffer_65361 batadv_tt_save_orig_buffer 4 65361 NULL |
104150 | +alloc_cpu_rmap_65363 alloc_cpu_rmap 1 65363 NULL | 103513 | +alloc_cpu_rmap_65363 alloc_cpu_rmap 1 65363 NULL |
104151 | +__ext4_new_inode_65370 __ext4_new_inode 5 65370 NULL | 103514 | +__ext4_new_inode_65370 __ext4_new_inode 5 65370 NULL |
104152 | +strchr_65372 strchr 0 65372 NULL | 103515 | +strchr_65372 strchr 0 65372 NULL nohasharray |
103516 | +SyS_writev_65372 SyS_writev 3 65372 &strchr_65372 | ||
104153 | +__alloc_bootmem_nopanic_65397 __alloc_bootmem_nopanic 1-2 65397 NULL | 103517 | +__alloc_bootmem_nopanic_65397 __alloc_bootmem_nopanic 1-2 65397 NULL |
104154 | +trace_seq_to_user_65398 trace_seq_to_user 3 65398 NULL | 103518 | +trace_seq_to_user_65398 trace_seq_to_user 3 65398 NULL |
104155 | +mtd_get_device_size_65400 mtd_get_device_size 0 65400 NULL | 103519 | +mtd_get_device_size_65400 mtd_get_device_size 0 65400 NULL |
@@ -106927,7 +106291,7 @@ index 96b919d..c49bb74 100644 | |||
106927 | + | 106291 | + |
106928 | #endif | 106292 | #endif |
106929 | diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c | 106293 | diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c |
106930 | index f18013f..90421df 100644 | 106294 | index 302681c..3bde377 100644 |
106931 | --- a/virt/kvm/kvm_main.c | 106295 | --- a/virt/kvm/kvm_main.c |
106932 | +++ b/virt/kvm/kvm_main.c | 106296 | +++ b/virt/kvm/kvm_main.c |
106933 | @@ -75,12 +75,17 @@ LIST_HEAD(vm_list); | 106297 | @@ -75,12 +75,17 @@ LIST_HEAD(vm_list); |
@@ -106950,16 +106314,16 @@ index f18013f..90421df 100644 | |||
106950 | 106314 | ||
106951 | struct dentry *kvm_debugfs_dir; | 106315 | struct dentry *kvm_debugfs_dir; |
106952 | 106316 | ||
106953 | @@ -769,7 +774,7 @@ int __kvm_set_memory_region(struct kvm *kvm, | 106317 | @@ -766,7 +771,7 @@ int __kvm_set_memory_region(struct kvm *kvm, |
106954 | /* We can read the guest memory with __xxx_user() later on. */ | 106318 | /* We can read the guest memory with __xxx_user() later on. */ |
106955 | if (user_alloc && | 106319 | if ((mem->slot < KVM_USER_MEM_SLOTS) && |
106956 | ((mem->userspace_addr & (PAGE_SIZE - 1)) || | 106320 | ((mem->userspace_addr & (PAGE_SIZE - 1)) || |
106957 | - !access_ok(VERIFY_WRITE, | 106321 | - !access_ok(VERIFY_WRITE, |
106958 | + !__access_ok(VERIFY_WRITE, | 106322 | + !__access_ok(VERIFY_WRITE, |
106959 | (void __user *)(unsigned long)mem->userspace_addr, | 106323 | (void __user *)(unsigned long)mem->userspace_addr, |
106960 | mem->memory_size))) | 106324 | mem->memory_size))) |
106961 | goto out; | 106325 | goto out; |
106962 | @@ -1881,7 +1886,7 @@ static int kvm_vcpu_release(struct inode *inode, struct file *filp) | 106326 | @@ -1878,7 +1883,7 @@ static int kvm_vcpu_release(struct inode *inode, struct file *filp) |
106963 | return 0; | 106327 | return 0; |
106964 | } | 106328 | } |
106965 | 106329 | ||
@@ -106968,7 +106332,7 @@ index f18013f..90421df 100644 | |||
106968 | .release = kvm_vcpu_release, | 106332 | .release = kvm_vcpu_release, |
106969 | .unlocked_ioctl = kvm_vcpu_ioctl, | 106333 | .unlocked_ioctl = kvm_vcpu_ioctl, |
106970 | #ifdef CONFIG_COMPAT | 106334 | #ifdef CONFIG_COMPAT |
106971 | @@ -2402,7 +2407,7 @@ static int kvm_vm_mmap(struct file *file, struct vm_area_struct *vma) | 106335 | @@ -2561,7 +2566,7 @@ static int kvm_vm_mmap(struct file *file, struct vm_area_struct *vma) |
106972 | return 0; | 106336 | return 0; |
106973 | } | 106337 | } |
106974 | 106338 | ||
@@ -106977,7 +106341,7 @@ index f18013f..90421df 100644 | |||
106977 | .release = kvm_vm_release, | 106341 | .release = kvm_vm_release, |
106978 | .unlocked_ioctl = kvm_vm_ioctl, | 106342 | .unlocked_ioctl = kvm_vm_ioctl, |
106979 | #ifdef CONFIG_COMPAT | 106343 | #ifdef CONFIG_COMPAT |
106980 | @@ -2500,7 +2505,7 @@ out: | 106344 | @@ -2662,7 +2667,7 @@ out: |
106981 | return r; | 106345 | return r; |
106982 | } | 106346 | } |
106983 | 106347 | ||
@@ -106986,7 +106350,7 @@ index f18013f..90421df 100644 | |||
106986 | .unlocked_ioctl = kvm_dev_ioctl, | 106350 | .unlocked_ioctl = kvm_dev_ioctl, |
106987 | .compat_ioctl = kvm_dev_ioctl, | 106351 | .compat_ioctl = kvm_dev_ioctl, |
106988 | .llseek = noop_llseek, | 106352 | .llseek = noop_llseek, |
106989 | @@ -2526,7 +2531,7 @@ static void hardware_enable_nolock(void *junk) | 106353 | @@ -2688,7 +2693,7 @@ static void hardware_enable_nolock(void *junk) |
106990 | 106354 | ||
106991 | if (r) { | 106355 | if (r) { |
106992 | cpumask_clear_cpu(cpu, cpus_hardware_enabled); | 106356 | cpumask_clear_cpu(cpu, cpus_hardware_enabled); |
@@ -106995,7 +106359,7 @@ index f18013f..90421df 100644 | |||
106995 | printk(KERN_INFO "kvm: enabling virtualization on " | 106359 | printk(KERN_INFO "kvm: enabling virtualization on " |
106996 | "CPU%d failed\n", cpu); | 106360 | "CPU%d failed\n", cpu); |
106997 | } | 106361 | } |
106998 | @@ -2580,10 +2585,10 @@ static int hardware_enable_all(void) | 106362 | @@ -2742,10 +2747,10 @@ static int hardware_enable_all(void) |
106999 | 106363 | ||
107000 | kvm_usage_count++; | 106364 | kvm_usage_count++; |
107001 | if (kvm_usage_count == 1) { | 106365 | if (kvm_usage_count == 1) { |
@@ -107008,7 +106372,7 @@ index f18013f..90421df 100644 | |||
107008 | hardware_disable_all_nolock(); | 106372 | hardware_disable_all_nolock(); |
107009 | r = -EBUSY; | 106373 | r = -EBUSY; |
107010 | } | 106374 | } |
107011 | @@ -2941,7 +2946,7 @@ static void kvm_sched_out(struct preempt_notifier *pn, | 106375 | @@ -3099,7 +3104,7 @@ static void kvm_sched_out(struct preempt_notifier *pn, |
107012 | kvm_arch_vcpu_put(vcpu); | 106376 | kvm_arch_vcpu_put(vcpu); |
107013 | } | 106377 | } |
107014 | 106378 | ||
@@ -107017,7 +106381,7 @@ index f18013f..90421df 100644 | |||
107017 | struct module *module) | 106381 | struct module *module) |
107018 | { | 106382 | { |
107019 | int r; | 106383 | int r; |
107020 | @@ -2977,7 +2982,7 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, | 106384 | @@ -3146,7 +3151,7 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, |
107021 | if (!vcpu_align) | 106385 | if (!vcpu_align) |
107022 | vcpu_align = __alignof__(struct kvm_vcpu); | 106386 | vcpu_align = __alignof__(struct kvm_vcpu); |
107023 | kvm_vcpu_cache = kmem_cache_create("kvm_vcpu", vcpu_size, vcpu_align, | 106387 | kvm_vcpu_cache = kmem_cache_create("kvm_vcpu", vcpu_size, vcpu_align, |
@@ -107026,7 +106390,7 @@ index f18013f..90421df 100644 | |||
107026 | if (!kvm_vcpu_cache) { | 106390 | if (!kvm_vcpu_cache) { |
107027 | r = -ENOMEM; | 106391 | r = -ENOMEM; |
107028 | goto out_free_3; | 106392 | goto out_free_3; |
107029 | @@ -2987,9 +2992,11 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, | 106393 | @@ -3156,9 +3161,11 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, |
107030 | if (r) | 106394 | if (r) |
107031 | goto out_free; | 106395 | goto out_free; |
107032 | 106396 | ||
@@ -107038,7 +106402,7 @@ index f18013f..90421df 100644 | |||
107038 | 106402 | ||
107039 | r = misc_register(&kvm_dev); | 106403 | r = misc_register(&kvm_dev); |
107040 | if (r) { | 106404 | if (r) { |
107041 | @@ -2999,9 +3006,6 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, | 106405 | @@ -3168,9 +3175,6 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, |
107042 | 106406 | ||
107043 | register_syscore_ops(&kvm_syscore_ops); | 106407 | register_syscore_ops(&kvm_syscore_ops); |
107044 | 106408 | ||
diff --git a/main/linux-grsec/kernelconfig.x86 b/main/linux-grsec/kernelconfig.x86 index de622fca84..36a0fef5af 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.8 Kernel Configuration | 3 | # Linux/x86 3.10.4 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 |
@@ -17,12 +17,10 @@ CONFIG_NEED_SG_DMA_LENGTH=y | |||
17 | CONFIG_GENERIC_ISA_DMA=y | 17 | CONFIG_GENERIC_ISA_DMA=y |
18 | CONFIG_GENERIC_BUG=y | 18 | CONFIG_GENERIC_BUG=y |
19 | CONFIG_GENERIC_HWEIGHT=y | 19 | CONFIG_GENERIC_HWEIGHT=y |
20 | CONFIG_GENERIC_GPIO=y | ||
21 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | 20 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y |
22 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 21 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
23 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 22 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
24 | CONFIG_ARCH_HAS_CPU_RELAX=y | 23 | CONFIG_ARCH_HAS_CPU_RELAX=y |
25 | CONFIG_ARCH_HAS_DEFAULT_IDLE=y | ||
26 | CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y | 24 | CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y |
27 | CONFIG_ARCH_HAS_CPU_AUTOPROBE=y | 25 | CONFIG_ARCH_HAS_CPU_AUTOPROBE=y |
28 | CONFIG_HAVE_SETUP_PER_CPU_AREA=y | 26 | CONFIG_HAVE_SETUP_PER_CPU_AREA=y |
@@ -94,6 +92,9 @@ CONFIG_GENERIC_CMOS_UPDATE=y | |||
94 | # Timers subsystem | 92 | # Timers subsystem |
95 | # | 93 | # |
96 | CONFIG_TICK_ONESHOT=y | 94 | CONFIG_TICK_ONESHOT=y |
95 | CONFIG_NO_HZ_COMMON=y | ||
96 | # CONFIG_HZ_PERIODIC is not set | ||
97 | CONFIG_NO_HZ_IDLE=y | ||
97 | CONFIG_NO_HZ=y | 98 | CONFIG_NO_HZ=y |
98 | CONFIG_HIGH_RES_TIMERS=y | 99 | CONFIG_HIGH_RES_TIMERS=y |
99 | 100 | ||
@@ -159,19 +160,19 @@ CONFIG_RD_LZO=y | |||
159 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 160 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
160 | CONFIG_SYSCTL=y | 161 | CONFIG_SYSCTL=y |
161 | CONFIG_ANON_INODES=y | 162 | CONFIG_ANON_INODES=y |
162 | CONFIG_EXPERT=y | ||
163 | CONFIG_HAVE_UID16=y | 163 | CONFIG_HAVE_UID16=y |
164 | CONFIG_SYSCTL_EXCEPTION_TRACE=y | ||
165 | CONFIG_HOTPLUG=y | ||
166 | CONFIG_HAVE_PCSPKR_PLATFORM=y | ||
167 | CONFIG_EXPERT=y | ||
164 | CONFIG_UID16=y | 168 | CONFIG_UID16=y |
165 | CONFIG_SYSCTL_SYSCALL=y | 169 | CONFIG_SYSCTL_SYSCALL=y |
166 | CONFIG_SYSCTL_EXCEPTION_TRACE=y | ||
167 | CONFIG_KALLSYMS=y | 170 | CONFIG_KALLSYMS=y |
168 | CONFIG_KALLSYMS_ALL=y | 171 | CONFIG_KALLSYMS_ALL=y |
169 | CONFIG_HOTPLUG=y | ||
170 | CONFIG_PRINTK=y | 172 | CONFIG_PRINTK=y |
171 | CONFIG_BUG=y | 173 | CONFIG_BUG=y |
172 | CONFIG_ELF_CORE=y | 174 | CONFIG_ELF_CORE=y |
173 | CONFIG_PCSPKR_PLATFORM=y | 175 | CONFIG_PCSPKR_PLATFORM=y |
174 | CONFIG_HAVE_PCSPKR_PLATFORM=y | ||
175 | CONFIG_BASE_FULL=y | 176 | CONFIG_BASE_FULL=y |
176 | CONFIG_FUTEX=y | 177 | CONFIG_FUTEX=y |
177 | CONFIG_EPOLL=y | 178 | CONFIG_EPOLL=y |
@@ -180,6 +181,7 @@ CONFIG_TIMERFD=y | |||
180 | CONFIG_EVENTFD=y | 181 | CONFIG_EVENTFD=y |
181 | CONFIG_SHMEM=y | 182 | CONFIG_SHMEM=y |
182 | CONFIG_AIO=y | 183 | CONFIG_AIO=y |
184 | CONFIG_PCI_QUIRKS=y | ||
183 | CONFIG_EMBEDDED=y | 185 | CONFIG_EMBEDDED=y |
184 | CONFIG_HAVE_PERF_EVENTS=y | 186 | CONFIG_HAVE_PERF_EVENTS=y |
185 | 187 | ||
@@ -189,7 +191,6 @@ CONFIG_HAVE_PERF_EVENTS=y | |||
189 | CONFIG_PERF_EVENTS=y | 191 | CONFIG_PERF_EVENTS=y |
190 | # CONFIG_DEBUG_PERF_USE_VMALLOC is not set | 192 | # CONFIG_DEBUG_PERF_USE_VMALLOC is not set |
191 | CONFIG_VM_EVENT_COUNTERS=y | 193 | CONFIG_VM_EVENT_COUNTERS=y |
192 | CONFIG_PCI_QUIRKS=y | ||
193 | # CONFIG_SLUB_DEBUG is not set | 194 | # CONFIG_SLUB_DEBUG is not set |
194 | # CONFIG_COMPAT_BRK is not set | 195 | # CONFIG_COMPAT_BRK is not set |
195 | # CONFIG_SLAB is not set | 196 | # CONFIG_SLAB is not set |
@@ -322,15 +323,15 @@ CONFIG_X86_WANT_INTEL_MID=y | |||
322 | # CONFIG_X86_32_NON_STANDARD is not set | 323 | # CONFIG_X86_32_NON_STANDARD is not set |
323 | # CONFIG_X86_32_IRIS is not set | 324 | # CONFIG_X86_32_IRIS is not set |
324 | CONFIG_SCHED_OMIT_FRAME_POINTER=y | 325 | CONFIG_SCHED_OMIT_FRAME_POINTER=y |
325 | CONFIG_PARAVIRT_GUEST=y | 326 | CONFIG_HYPERVISOR_GUEST=y |
326 | # CONFIG_PARAVIRT_TIME_ACCOUNTING is not set | 327 | CONFIG_PARAVIRT=y |
328 | # CONFIG_PARAVIRT_DEBUG is not set | ||
329 | # CONFIG_PARAVIRT_SPINLOCKS is not set | ||
327 | # CONFIG_XEN_PRIVILEGED_GUEST is not set | 330 | # CONFIG_XEN_PRIVILEGED_GUEST is not set |
328 | CONFIG_KVM_GUEST=y | 331 | CONFIG_KVM_GUEST=y |
329 | # CONFIG_LGUEST_GUEST is not set | 332 | # CONFIG_LGUEST_GUEST is not set |
330 | CONFIG_PARAVIRT=y | 333 | # CONFIG_PARAVIRT_TIME_ACCOUNTING is not set |
331 | # CONFIG_PARAVIRT_SPINLOCKS is not set | ||
332 | CONFIG_PARAVIRT_CLOCK=y | 334 | CONFIG_PARAVIRT_CLOCK=y |
333 | # CONFIG_PARAVIRT_DEBUG is not set | ||
334 | CONFIG_NO_BOOTMEM=y | 335 | CONFIG_NO_BOOTMEM=y |
335 | # CONFIG_MEMTEST is not set | 336 | # CONFIG_MEMTEST is not set |
336 | # CONFIG_M486 is not set | 337 | # CONFIG_M486 is not set |
@@ -547,6 +548,7 @@ CONFIG_X86_ACPI_CPUFREQ=m | |||
547 | # CONFIG_X86_POWERNOW_K6 is not set | 548 | # CONFIG_X86_POWERNOW_K6 is not set |
548 | # CONFIG_X86_POWERNOW_K7 is not set | 549 | # CONFIG_X86_POWERNOW_K7 is not set |
549 | CONFIG_X86_POWERNOW_K8=m | 550 | CONFIG_X86_POWERNOW_K8=m |
551 | # CONFIG_X86_AMD_FREQ_SENSITIVITY is not set | ||
550 | # CONFIG_X86_GX_SUSPMOD is not set | 552 | # CONFIG_X86_GX_SUSPMOD is not set |
551 | CONFIG_X86_SPEEDSTEP_CENTRINO=m | 553 | CONFIG_X86_SPEEDSTEP_CENTRINO=m |
552 | CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE=y | 554 | CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE=y |
@@ -631,8 +633,6 @@ CONFIG_PCCARD_NONSTATIC=y | |||
631 | CONFIG_HOTPLUG_PCI=m | 633 | CONFIG_HOTPLUG_PCI=m |
632 | # CONFIG_HOTPLUG_PCI_COMPAQ is not set | 634 | # CONFIG_HOTPLUG_PCI_COMPAQ is not set |
633 | # CONFIG_HOTPLUG_PCI_IBM is not set | 635 | # CONFIG_HOTPLUG_PCI_IBM is not set |
634 | CONFIG_HOTPLUG_PCI_ACPI=m | ||
635 | CONFIG_HOTPLUG_PCI_ACPI_IBM=m | ||
636 | CONFIG_HOTPLUG_PCI_CPCI=y | 636 | CONFIG_HOTPLUG_PCI_CPCI=y |
637 | CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m | 637 | CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m |
638 | CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m | 638 | CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m |
@@ -645,6 +645,7 @@ CONFIG_HOTPLUG_PCI_SHPC=m | |||
645 | CONFIG_BINFMT_ELF=y | 645 | CONFIG_BINFMT_ELF=y |
646 | CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y | 646 | CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y |
647 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | 647 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
648 | CONFIG_BINFMT_SCRIPT=y | ||
648 | CONFIG_HAVE_AOUT=y | 649 | CONFIG_HAVE_AOUT=y |
649 | CONFIG_BINFMT_MISC=m | 650 | CONFIG_BINFMT_MISC=m |
650 | CONFIG_COREDUMP=y | 651 | CONFIG_COREDUMP=y |
@@ -679,6 +680,7 @@ CONFIG_IP_ROUTE_CLASSID=y | |||
679 | # CONFIG_IP_PNP is not set | 680 | # CONFIG_IP_PNP is not set |
680 | CONFIG_NET_IPIP=m | 681 | CONFIG_NET_IPIP=m |
681 | CONFIG_NET_IPGRE_DEMUX=y | 682 | CONFIG_NET_IPGRE_DEMUX=y |
683 | CONFIG_NET_IP_TUNNEL=m | ||
682 | CONFIG_NET_IPGRE=m | 684 | CONFIG_NET_IPGRE=m |
683 | CONFIG_NET_IPGRE_BROADCAST=y | 685 | CONFIG_NET_IPGRE_BROADCAST=y |
684 | CONFIG_IP_MROUTE=y | 686 | CONFIG_IP_MROUTE=y |
@@ -1043,6 +1045,7 @@ CONFIG_RDS=m | |||
1043 | # CONFIG_RDS_DEBUG is not set | 1045 | # CONFIG_RDS_DEBUG is not set |
1044 | CONFIG_TIPC=m | 1046 | CONFIG_TIPC=m |
1045 | CONFIG_TIPC_PORTS=8191 | 1047 | CONFIG_TIPC_PORTS=8191 |
1048 | # CONFIG_TIPC_MEDIA_IB is not set | ||
1046 | CONFIG_ATM=m | 1049 | CONFIG_ATM=m |
1047 | CONFIG_ATM_CLIP=m | 1050 | CONFIG_ATM_CLIP=m |
1048 | # CONFIG_ATM_CLIP_NO_ICMP is not set | 1051 | # CONFIG_ATM_CLIP_NO_ICMP is not set |
@@ -1078,7 +1081,6 @@ CONFIG_ATALK=m | |||
1078 | CONFIG_DEV_APPLETALK=m | 1081 | CONFIG_DEV_APPLETALK=m |
1079 | CONFIG_IPDDP=m | 1082 | CONFIG_IPDDP=m |
1080 | CONFIG_IPDDP_ENCAP=y | 1083 | CONFIG_IPDDP_ENCAP=y |
1081 | CONFIG_IPDDP_DECAP=y | ||
1082 | CONFIG_X25=m | 1084 | CONFIG_X25=m |
1083 | CONFIG_LAPB=m | 1085 | CONFIG_LAPB=m |
1084 | CONFIG_PHONET=m | 1086 | CONFIG_PHONET=m |
@@ -1155,6 +1157,8 @@ CONFIG_DNS_RESOLVER=y | |||
1155 | CONFIG_OPENVSWITCH=m | 1157 | CONFIG_OPENVSWITCH=m |
1156 | CONFIG_VSOCKETS=m | 1158 | CONFIG_VSOCKETS=m |
1157 | CONFIG_VMWARE_VMCI_VSOCKETS=m | 1159 | CONFIG_VMWARE_VMCI_VSOCKETS=m |
1160 | CONFIG_NETLINK_MMAP=y | ||
1161 | CONFIG_NETLINK_DIAG=y | ||
1158 | CONFIG_RPS=y | 1162 | CONFIG_RPS=y |
1159 | CONFIG_RFS_ACCEL=y | 1163 | CONFIG_RFS_ACCEL=y |
1160 | CONFIG_XPS=y | 1164 | CONFIG_XPS=y |
@@ -1351,8 +1355,6 @@ CONFIG_MTD_AR7_PARTS=m | |||
1351 | # | 1355 | # |
1352 | # User Modules And Translation Layers | 1356 | # User Modules And Translation Layers |
1353 | # | 1357 | # |
1354 | CONFIG_MTD_CHAR=m | ||
1355 | CONFIG_HAVE_MTD_OTP=y | ||
1356 | CONFIG_MTD_BLKDEVS=m | 1358 | CONFIG_MTD_BLKDEVS=m |
1357 | CONFIG_MTD_BLOCK=m | 1359 | CONFIG_MTD_BLOCK=m |
1358 | CONFIG_MTD_BLOCK_RO=m | 1360 | CONFIG_MTD_BLOCK_RO=m |
@@ -1439,22 +1441,12 @@ CONFIG_MTD_BLOCK2MTD=m | |||
1439 | # | 1441 | # |
1440 | # Disk-On-Chip Device Drivers | 1442 | # Disk-On-Chip Device Drivers |
1441 | # | 1443 | # |
1442 | CONFIG_MTD_DOC2000=m | ||
1443 | CONFIG_MTD_DOC2001=m | ||
1444 | CONFIG_MTD_DOC2001PLUS=m | ||
1445 | # CONFIG_MTD_DOCG3 is not set | 1444 | # CONFIG_MTD_DOCG3 is not set |
1446 | CONFIG_MTD_DOCPROBE=m | ||
1447 | CONFIG_MTD_DOCECC=m | ||
1448 | CONFIG_MTD_DOCPROBE_ADVANCED=y | ||
1449 | CONFIG_MTD_DOCPROBE_ADDRESS=0x0000 | ||
1450 | # CONFIG_MTD_DOCPROBE_HIGH is not set | ||
1451 | # CONFIG_MTD_DOCPROBE_55AA is not set | ||
1452 | CONFIG_MTD_NAND_ECC=m | 1445 | CONFIG_MTD_NAND_ECC=m |
1453 | CONFIG_MTD_NAND_ECC_SMC=y | 1446 | CONFIG_MTD_NAND_ECC_SMC=y |
1454 | CONFIG_MTD_NAND=m | 1447 | CONFIG_MTD_NAND=m |
1455 | # CONFIG_MTD_NAND_ECC_BCH is not set | 1448 | # CONFIG_MTD_NAND_ECC_BCH is not set |
1456 | CONFIG_MTD_SM_COMMON=m | 1449 | CONFIG_MTD_SM_COMMON=m |
1457 | # CONFIG_MTD_NAND_MUSEUM_IDS is not set | ||
1458 | CONFIG_MTD_NAND_DENALI=m | 1450 | CONFIG_MTD_NAND_DENALI=m |
1459 | # CONFIG_MTD_NAND_DENALI_PCI is not set | 1451 | # CONFIG_MTD_NAND_DENALI_PCI is not set |
1460 | CONFIG_MTD_NAND_IDS=m | 1452 | CONFIG_MTD_NAND_IDS=m |
@@ -1474,7 +1466,6 @@ CONFIG_MTD_ONENAND=m | |||
1474 | # CONFIG_MTD_ONENAND_GENERIC is not set | 1466 | # CONFIG_MTD_ONENAND_GENERIC is not set |
1475 | CONFIG_MTD_ONENAND_OTP=y | 1467 | CONFIG_MTD_ONENAND_OTP=y |
1476 | CONFIG_MTD_ONENAND_2X_PROGRAM=y | 1468 | CONFIG_MTD_ONENAND_2X_PROGRAM=y |
1477 | CONFIG_MTD_ONENAND_SIM=m | ||
1478 | 1469 | ||
1479 | # | 1470 | # |
1480 | # LPDDR flash memory drivers | 1471 | # LPDDR flash memory drivers |
@@ -1542,6 +1533,7 @@ CONFIG_SENSORS_LIS3LV02D=m | |||
1542 | CONFIG_AD525X_DPOT=m | 1533 | CONFIG_AD525X_DPOT=m |
1543 | CONFIG_AD525X_DPOT_I2C=m | 1534 | CONFIG_AD525X_DPOT_I2C=m |
1544 | CONFIG_AD525X_DPOT_SPI=m | 1535 | CONFIG_AD525X_DPOT_SPI=m |
1536 | # CONFIG_DUMMY_IRQ is not set | ||
1545 | CONFIG_IBM_ASM=m | 1537 | CONFIG_IBM_ASM=m |
1546 | CONFIG_PHANTOM=m | 1538 | CONFIG_PHANTOM=m |
1547 | # CONFIG_INTEL_MID_PTI is not set | 1539 | # CONFIG_INTEL_MID_PTI is not set |
@@ -1571,6 +1563,7 @@ CONFIG_VMWARE_BALLOON=m | |||
1571 | CONFIG_PCH_PHUB=m | 1563 | CONFIG_PCH_PHUB=m |
1572 | # CONFIG_USB_SWITCH_FSA9480 is not set | 1564 | # CONFIG_USB_SWITCH_FSA9480 is not set |
1573 | # CONFIG_LATTICE_ECP3_CONFIG is not set | 1565 | # CONFIG_LATTICE_ECP3_CONFIG is not set |
1566 | # CONFIG_SRAM is not set | ||
1574 | CONFIG_C2PORT=m | 1567 | CONFIG_C2PORT=m |
1575 | CONFIG_C2PORT_DURAMAR_2150=m | 1568 | CONFIG_C2PORT_DURAMAR_2150=m |
1576 | 1569 | ||
@@ -1598,6 +1591,7 @@ CONFIG_SENSORS_LIS3_I2C=m | |||
1598 | # | 1591 | # |
1599 | CONFIG_ALTERA_STAPL=m | 1592 | CONFIG_ALTERA_STAPL=m |
1600 | # CONFIG_INTEL_MEI is not set | 1593 | # CONFIG_INTEL_MEI is not set |
1594 | # CONFIG_INTEL_MEI_ME is not set | ||
1601 | CONFIG_VMWARE_VMCI=m | 1595 | CONFIG_VMWARE_VMCI=m |
1602 | CONFIG_HAVE_IDE=y | 1596 | CONFIG_HAVE_IDE=y |
1603 | # CONFIG_IDE is not set | 1597 | # CONFIG_IDE is not set |
@@ -1693,6 +1687,7 @@ CONFIG_SCSI_MPT3SAS_MAX_SGE=128 | |||
1693 | # CONFIG_SCSI_MPT3SAS_LOGGING is not set | 1687 | # CONFIG_SCSI_MPT3SAS_LOGGING is not set |
1694 | CONFIG_SCSI_UFSHCD=m | 1688 | CONFIG_SCSI_UFSHCD=m |
1695 | CONFIG_SCSI_UFSHCD_PCI=m | 1689 | CONFIG_SCSI_UFSHCD_PCI=m |
1690 | # CONFIG_SCSI_UFSHCD_PLATFORM is not set | ||
1696 | CONFIG_SCSI_HPTIOP=m | 1691 | CONFIG_SCSI_HPTIOP=m |
1697 | CONFIG_SCSI_BUSLOGIC=m | 1692 | CONFIG_SCSI_BUSLOGIC=m |
1698 | # CONFIG_SCSI_FLASHPOINT is not set | 1693 | # CONFIG_SCSI_FLASHPOINT is not set |
@@ -1861,6 +1856,7 @@ CONFIG_MD_RAID10=m | |||
1861 | CONFIG_MD_RAID456=m | 1856 | CONFIG_MD_RAID456=m |
1862 | CONFIG_MD_MULTIPATH=m | 1857 | CONFIG_MD_MULTIPATH=m |
1863 | CONFIG_MD_FAULTY=m | 1858 | CONFIG_MD_FAULTY=m |
1859 | # CONFIG_BCACHE is not set | ||
1864 | CONFIG_BLK_DEV_DM=m | 1860 | CONFIG_BLK_DEV_DM=m |
1865 | # CONFIG_DM_DEBUG is not set | 1861 | # CONFIG_DM_DEBUG is not set |
1866 | CONFIG_DM_BUFIO=m | 1862 | CONFIG_DM_BUFIO=m |
@@ -1929,6 +1925,7 @@ CONFIG_IFB=m | |||
1929 | CONFIG_NET_TEAM=m | 1925 | CONFIG_NET_TEAM=m |
1930 | CONFIG_NET_TEAM_MODE_BROADCAST=m | 1926 | CONFIG_NET_TEAM_MODE_BROADCAST=m |
1931 | CONFIG_NET_TEAM_MODE_ROUNDROBIN=m | 1927 | CONFIG_NET_TEAM_MODE_ROUNDROBIN=m |
1928 | # CONFIG_NET_TEAM_MODE_RANDOM is not set | ||
1932 | CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m | 1929 | CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m |
1933 | CONFIG_NET_TEAM_MODE_LOADBALANCE=m | 1930 | CONFIG_NET_TEAM_MODE_LOADBALANCE=m |
1934 | CONFIG_MACVLAN=m | 1931 | CONFIG_MACVLAN=m |
@@ -1988,6 +1985,9 @@ CONFIG_ATM_SOLOS=m | |||
1988 | # | 1985 | # |
1989 | # CAIF transport drivers | 1986 | # CAIF transport drivers |
1990 | # | 1987 | # |
1988 | CONFIG_VHOST_NET=m | ||
1989 | # CONFIG_VHOST_SCSI is not set | ||
1990 | CONFIG_VHOST_RING=m | ||
1991 | 1991 | ||
1992 | # | 1992 | # |
1993 | # Distributed Switch Architecture drivers | 1993 | # Distributed Switch Architecture drivers |
@@ -2018,6 +2018,7 @@ CONFIG_ATL2=m | |||
2018 | CONFIG_ATL1=m | 2018 | CONFIG_ATL1=m |
2019 | CONFIG_ATL1E=m | 2019 | CONFIG_ATL1E=m |
2020 | CONFIG_ATL1C=m | 2020 | CONFIG_ATL1C=m |
2021 | # CONFIG_ALX is not set | ||
2021 | CONFIG_NET_CADENCE=y | 2022 | CONFIG_NET_CADENCE=y |
2022 | # CONFIG_ARM_AT91_ETHER is not set | 2023 | # CONFIG_ARM_AT91_ETHER is not set |
2023 | # CONFIG_MACB is not set | 2024 | # CONFIG_MACB is not set |
@@ -2127,6 +2128,7 @@ CONFIG_YELLOWFIN=m | |||
2127 | CONFIG_NET_VENDOR_QLOGIC=y | 2128 | CONFIG_NET_VENDOR_QLOGIC=y |
2128 | CONFIG_QLA3XXX=m | 2129 | CONFIG_QLA3XXX=m |
2129 | CONFIG_QLCNIC=m | 2130 | CONFIG_QLCNIC=m |
2131 | CONFIG_QLCNIC_SRIOV=y | ||
2130 | CONFIG_QLGE=m | 2132 | CONFIG_QLGE=m |
2131 | CONFIG_NETXEN_NIC=m | 2133 | CONFIG_NETXEN_NIC=m |
2132 | CONFIG_NET_VENDOR_REALTEK=y | 2134 | CONFIG_NET_VENDOR_REALTEK=y |
@@ -2160,8 +2162,6 @@ CONFIG_STMMAC_ETH=m | |||
2160 | # CONFIG_STMMAC_PCI is not set | 2162 | # CONFIG_STMMAC_PCI is not set |
2161 | # CONFIG_STMMAC_DEBUG_FS is not set | 2163 | # CONFIG_STMMAC_DEBUG_FS is not set |
2162 | # CONFIG_STMMAC_DA is not set | 2164 | # CONFIG_STMMAC_DA is not set |
2163 | CONFIG_STMMAC_RING=y | ||
2164 | # CONFIG_STMMAC_CHAINED is not set | ||
2165 | CONFIG_NET_VENDOR_SUN=y | 2165 | CONFIG_NET_VENDOR_SUN=y |
2166 | CONFIG_HAPPYMEAL=m | 2166 | CONFIG_HAPPYMEAL=m |
2167 | CONFIG_SUNGEM=m | 2167 | CONFIG_SUNGEM=m |
@@ -2242,6 +2242,7 @@ CONFIG_USB_CATC=m | |||
2242 | CONFIG_USB_KAWETH=m | 2242 | CONFIG_USB_KAWETH=m |
2243 | CONFIG_USB_PEGASUS=m | 2243 | CONFIG_USB_PEGASUS=m |
2244 | CONFIG_USB_RTL8150=m | 2244 | CONFIG_USB_RTL8150=m |
2245 | # CONFIG_USB_RTL8152 is not set | ||
2245 | CONFIG_USB_USBNET=m | 2246 | CONFIG_USB_USBNET=m |
2246 | CONFIG_USB_NET_AX8817X=m | 2247 | CONFIG_USB_NET_AX8817X=m |
2247 | CONFIG_USB_NET_AX88179_178A=m | 2248 | CONFIG_USB_NET_AX88179_178A=m |
@@ -2331,7 +2332,6 @@ CONFIG_B43_SDIO=y | |||
2331 | CONFIG_B43_PIO=y | 2332 | CONFIG_B43_PIO=y |
2332 | CONFIG_B43_PHY_N=y | 2333 | CONFIG_B43_PHY_N=y |
2333 | CONFIG_B43_PHY_LP=y | 2334 | CONFIG_B43_PHY_LP=y |
2334 | CONFIG_B43_PHY_HT=y | ||
2335 | CONFIG_B43_LEDS=y | 2335 | CONFIG_B43_LEDS=y |
2336 | CONFIG_B43_HWRNG=y | 2336 | CONFIG_B43_HWRNG=y |
2337 | # CONFIG_B43_DEBUG is not set | 2337 | # CONFIG_B43_DEBUG is not set |
@@ -2367,6 +2367,7 @@ CONFIG_LIBIPW=m | |||
2367 | CONFIG_IWLWIFI=m | 2367 | CONFIG_IWLWIFI=m |
2368 | CONFIG_IWLDVM=m | 2368 | CONFIG_IWLDVM=m |
2369 | CONFIG_IWLMVM=m | 2369 | CONFIG_IWLMVM=m |
2370 | CONFIG_IWLWIFI_OPMODE_MODULAR=y | ||
2370 | 2371 | ||
2371 | # | 2372 | # |
2372 | # Debugging Options | 2373 | # Debugging Options |
@@ -2418,6 +2419,7 @@ CONFIG_RT2800USB=m | |||
2418 | CONFIG_RT2800USB_RT33XX=y | 2419 | CONFIG_RT2800USB_RT33XX=y |
2419 | # CONFIG_RT2800USB_RT35XX is not set | 2420 | # CONFIG_RT2800USB_RT35XX is not set |
2420 | CONFIG_RT2800USB_RT53XX=y | 2421 | CONFIG_RT2800USB_RT53XX=y |
2422 | # CONFIG_RT2800USB_RT55XX is not set | ||
2421 | CONFIG_RT2800USB_UNKNOWN=y | 2423 | CONFIG_RT2800USB_UNKNOWN=y |
2422 | CONFIG_RT2800_LIB=m | 2424 | CONFIG_RT2800_LIB=m |
2423 | CONFIG_RT2X00_LIB_MMIO=m | 2425 | CONFIG_RT2X00_LIB_MMIO=m |
@@ -2434,6 +2436,7 @@ CONFIG_RTL8192CE=m | |||
2434 | CONFIG_RTL8192SE=m | 2436 | CONFIG_RTL8192SE=m |
2435 | CONFIG_RTL8192DE=m | 2437 | CONFIG_RTL8192DE=m |
2436 | CONFIG_RTL8723AE=m | 2438 | CONFIG_RTL8723AE=m |
2439 | # CONFIG_RTL8188EE is not set | ||
2437 | CONFIG_RTL8192CU=m | 2440 | CONFIG_RTL8192CU=m |
2438 | CONFIG_RTL8192C_COMMON=m | 2441 | CONFIG_RTL8192C_COMMON=m |
2439 | CONFIG_WL_TI=y | 2442 | CONFIG_WL_TI=y |
@@ -2695,6 +2698,7 @@ CONFIG_INPUT_GPIO_ROTARY_ENCODER=m | |||
2695 | CONFIG_INPUT_ADXL34X=m | 2698 | CONFIG_INPUT_ADXL34X=m |
2696 | CONFIG_INPUT_ADXL34X_I2C=m | 2699 | CONFIG_INPUT_ADXL34X_I2C=m |
2697 | CONFIG_INPUT_ADXL34X_SPI=m | 2700 | CONFIG_INPUT_ADXL34X_SPI=m |
2701 | # CONFIG_INPUT_IMS_PCU is not set | ||
2698 | CONFIG_INPUT_CMA3000=m | 2702 | CONFIG_INPUT_CMA3000=m |
2699 | CONFIG_INPUT_CMA3000_I2C=m | 2703 | CONFIG_INPUT_CMA3000_I2C=m |
2700 | 2704 | ||
@@ -2940,6 +2944,11 @@ CONFIG_SPI_DW_PCI=m | |||
2940 | # | 2944 | # |
2941 | CONFIG_SPI_SPIDEV=m | 2945 | CONFIG_SPI_SPIDEV=m |
2942 | CONFIG_SPI_TLE62X0=m | 2946 | CONFIG_SPI_TLE62X0=m |
2947 | |||
2948 | # | ||
2949 | # Qualcomm MSM SSBI bus support | ||
2950 | # | ||
2951 | # CONFIG_SSBI is not set | ||
2943 | # CONFIG_HSI is not set | 2952 | # CONFIG_HSI is not set |
2944 | 2953 | ||
2945 | # | 2954 | # |
@@ -3067,6 +3076,7 @@ CONFIG_SENSORS_ADM1026=m | |||
3067 | CONFIG_SENSORS_ADM1029=m | 3076 | CONFIG_SENSORS_ADM1029=m |
3068 | CONFIG_SENSORS_ADM1031=m | 3077 | CONFIG_SENSORS_ADM1031=m |
3069 | CONFIG_SENSORS_ADM9240=m | 3078 | CONFIG_SENSORS_ADM9240=m |
3079 | # CONFIG_SENSORS_ADT7310 is not set | ||
3070 | # CONFIG_SENSORS_ADT7410 is not set | 3080 | # CONFIG_SENSORS_ADT7410 is not set |
3071 | CONFIG_SENSORS_ADT7411=m | 3081 | CONFIG_SENSORS_ADT7411=m |
3072 | CONFIG_SENSORS_ADT7462=m | 3082 | CONFIG_SENSORS_ADT7462=m |
@@ -3113,6 +3123,7 @@ CONFIG_SENSORS_LTC4151=m | |||
3113 | CONFIG_SENSORS_LTC4215=m | 3123 | CONFIG_SENSORS_LTC4215=m |
3114 | CONFIG_SENSORS_LTC4245=m | 3124 | CONFIG_SENSORS_LTC4245=m |
3115 | CONFIG_SENSORS_LTC4261=m | 3125 | CONFIG_SENSORS_LTC4261=m |
3126 | # CONFIG_SENSORS_LM95234 is not set | ||
3116 | CONFIG_SENSORS_LM95241=m | 3127 | CONFIG_SENSORS_LM95241=m |
3117 | CONFIG_SENSORS_LM95245=m | 3128 | CONFIG_SENSORS_LM95245=m |
3118 | CONFIG_SENSORS_MAX1111=m | 3129 | CONFIG_SENSORS_MAX1111=m |
@@ -3125,6 +3136,7 @@ CONFIG_SENSORS_MAX6642=m | |||
3125 | CONFIG_SENSORS_MAX6650=m | 3136 | CONFIG_SENSORS_MAX6650=m |
3126 | CONFIG_SENSORS_MAX6697=m | 3137 | CONFIG_SENSORS_MAX6697=m |
3127 | CONFIG_SENSORS_MCP3021=m | 3138 | CONFIG_SENSORS_MCP3021=m |
3139 | # CONFIG_SENSORS_NCT6775 is not set | ||
3128 | CONFIG_SENSORS_NTC_THERMISTOR=m | 3140 | CONFIG_SENSORS_NTC_THERMISTOR=m |
3129 | CONFIG_SENSORS_PC87360=m | 3141 | CONFIG_SENSORS_PC87360=m |
3130 | CONFIG_SENSORS_PC87427=m | 3142 | CONFIG_SENSORS_PC87427=m |
@@ -3283,41 +3295,45 @@ CONFIG_BCMA_POSSIBLE=y | |||
3283 | # Multifunction device drivers | 3295 | # Multifunction device drivers |
3284 | # | 3296 | # |
3285 | CONFIG_MFD_CORE=m | 3297 | CONFIG_MFD_CORE=m |
3298 | CONFIG_MFD_CS5535=m | ||
3299 | # CONFIG_MFD_CROS_EC is not set | ||
3300 | # CONFIG_MFD_DA9052_SPI is not set | ||
3301 | # CONFIG_MFD_MC13XXX_SPI is not set | ||
3302 | # CONFIG_MFD_MC13XXX_I2C is not set | ||
3303 | CONFIG_HTC_PASIC3=m | ||
3304 | CONFIG_LPC_ICH=m | ||
3305 | CONFIG_LPC_SCH=m | ||
3306 | CONFIG_MFD_JANZ_CMODIO=m | ||
3307 | # CONFIG_EZX_PCAP is not set | ||
3308 | # CONFIG_MFD_VIPERBOARD is not set | ||
3309 | # CONFIG_MFD_RETU is not set | ||
3310 | CONFIG_MFD_PCF50633=m | ||
3311 | CONFIG_PCF50633_ADC=m | ||
3312 | CONFIG_PCF50633_GPIO=m | ||
3313 | CONFIG_UCB1400_CORE=m | ||
3314 | CONFIG_MFD_RDC321X=m | ||
3315 | # CONFIG_MFD_RTSX_PCI is not set | ||
3316 | # CONFIG_MFD_SI476X_CORE is not set | ||
3286 | CONFIG_MFD_SM501=m | 3317 | CONFIG_MFD_SM501=m |
3287 | # CONFIG_MFD_SM501_GPIO is not set | 3318 | # CONFIG_MFD_SM501_GPIO is not set |
3288 | # CONFIG_MFD_RTSX_PCI is not set | 3319 | CONFIG_ABX500_CORE=y |
3320 | # CONFIG_MFD_STMPE is not set | ||
3321 | # CONFIG_MFD_SYSCON is not set | ||
3289 | # CONFIG_MFD_TI_AM335X_TSCADC is not set | 3322 | # CONFIG_MFD_TI_AM335X_TSCADC is not set |
3290 | CONFIG_HTC_PASIC3=m | ||
3291 | CONFIG_UCB1400_CORE=m | ||
3292 | # CONFIG_MFD_LM3533 is not set | ||
3293 | # CONFIG_TPS6105X is not set | 3323 | # CONFIG_TPS6105X is not set |
3294 | CONFIG_TPS65010=m | 3324 | CONFIG_TPS65010=m |
3295 | CONFIG_TPS6507X=m | 3325 | CONFIG_TPS6507X=m |
3296 | # CONFIG_MFD_TPS65217 is not set | 3326 | # CONFIG_MFD_TPS65217 is not set |
3327 | # CONFIG_MFD_TPS65912 is not set | ||
3297 | # CONFIG_MFD_TPS65912_SPI is not set | 3328 | # CONFIG_MFD_TPS65912_SPI is not set |
3298 | # CONFIG_MFD_STMPE is not set | 3329 | CONFIG_MFD_WL1273_CORE=m |
3330 | # CONFIG_MFD_LM3533 is not set | ||
3331 | CONFIG_MFD_TIMBERDALE=m | ||
3299 | # CONFIG_MFD_TMIO is not set | 3332 | # CONFIG_MFD_TMIO is not set |
3300 | # CONFIG_MFD_DA9052_SPI is not set | 3333 | CONFIG_MFD_VX855=m |
3301 | # CONFIG_MFD_ARIZONA_I2C is not set | 3334 | # CONFIG_MFD_ARIZONA_I2C is not set |
3302 | # CONFIG_MFD_ARIZONA_SPI is not set | 3335 | # CONFIG_MFD_ARIZONA_SPI is not set |
3303 | # CONFIG_MFD_WM831X_SPI is not set | 3336 | # CONFIG_MFD_WM831X_SPI is not set |
3304 | CONFIG_MFD_PCF50633=m | ||
3305 | CONFIG_PCF50633_ADC=m | ||
3306 | CONFIG_PCF50633_GPIO=m | ||
3307 | # CONFIG_MFD_MC13XXX_SPI is not set | ||
3308 | # CONFIG_MFD_MC13XXX_I2C is not set | ||
3309 | CONFIG_ABX500_CORE=y | ||
3310 | # CONFIG_EZX_PCAP is not set | ||
3311 | CONFIG_MFD_CS5535=m | ||
3312 | CONFIG_MFD_TIMBERDALE=m | ||
3313 | CONFIG_LPC_SCH=m | ||
3314 | CONFIG_LPC_ICH=m | ||
3315 | CONFIG_MFD_RDC321X=m | ||
3316 | CONFIG_MFD_JANZ_CMODIO=m | ||
3317 | CONFIG_MFD_VX855=m | ||
3318 | CONFIG_MFD_WL1273_CORE=m | ||
3319 | # CONFIG_MFD_VIPERBOARD is not set | ||
3320 | # CONFIG_MFD_RETU is not set | ||
3321 | # CONFIG_REGULATOR is not set | 3337 | # CONFIG_REGULATOR is not set |
3322 | CONFIG_MEDIA_SUPPORT=m | 3338 | CONFIG_MEDIA_SUPPORT=m |
3323 | 3339 | ||
@@ -3496,7 +3512,6 @@ CONFIG_DVB_USB_FRIIO=m | |||
3496 | CONFIG_DVB_USB_AZ6027=m | 3512 | CONFIG_DVB_USB_AZ6027=m |
3497 | CONFIG_DVB_USB_TECHNISAT_USB2=m | 3513 | CONFIG_DVB_USB_TECHNISAT_USB2=m |
3498 | CONFIG_DVB_USB_V2=m | 3514 | CONFIG_DVB_USB_V2=m |
3499 | CONFIG_DVB_USB_CYPRESS_FIRMWARE=m | ||
3500 | CONFIG_DVB_USB_AF9015=m | 3515 | CONFIG_DVB_USB_AF9015=m |
3501 | CONFIG_DVB_USB_AF9035=m | 3516 | CONFIG_DVB_USB_AF9035=m |
3502 | CONFIG_DVB_USB_ANYSEE=m | 3517 | CONFIG_DVB_USB_ANYSEE=m |
@@ -3612,6 +3627,7 @@ CONFIG_DVB_FIREDTV_INPUT=y | |||
3612 | CONFIG_VIDEO_CX2341X=m | 3627 | CONFIG_VIDEO_CX2341X=m |
3613 | CONFIG_VIDEO_BTCX=m | 3628 | CONFIG_VIDEO_BTCX=m |
3614 | CONFIG_VIDEO_TVEEPROM=m | 3629 | CONFIG_VIDEO_TVEEPROM=m |
3630 | CONFIG_CYPRESS_FIRMWARE=m | ||
3615 | CONFIG_DVB_B2C2_FLEXCOP=m | 3631 | CONFIG_DVB_B2C2_FLEXCOP=m |
3616 | CONFIG_VIDEO_SAA7146=m | 3632 | CONFIG_VIDEO_SAA7146=m |
3617 | CONFIG_VIDEO_SAA7146_VV=m | 3633 | CONFIG_VIDEO_SAA7146_VV=m |
@@ -3620,6 +3636,7 @@ CONFIG_VIDEO_SAA7146_VV=m | |||
3620 | # Media ancillary drivers (tuners, sensors, i2c, frontends) | 3636 | # Media ancillary drivers (tuners, sensors, i2c, frontends) |
3621 | # | 3637 | # |
3622 | CONFIG_MEDIA_SUBDRV_AUTOSELECT=y | 3638 | CONFIG_MEDIA_SUBDRV_AUTOSELECT=y |
3639 | CONFIG_MEDIA_ATTACH=y | ||
3623 | CONFIG_VIDEO_IR_I2C=m | 3640 | CONFIG_VIDEO_IR_I2C=m |
3624 | 3641 | ||
3625 | # | 3642 | # |
@@ -3691,7 +3708,6 @@ CONFIG_VIDEO_M52790=m | |||
3691 | # | 3708 | # |
3692 | # Sensors used on soc_camera driver | 3709 | # Sensors used on soc_camera driver |
3693 | # | 3710 | # |
3694 | CONFIG_MEDIA_ATTACH=y | ||
3695 | CONFIG_MEDIA_TUNER=m | 3711 | CONFIG_MEDIA_TUNER=m |
3696 | CONFIG_MEDIA_TUNER_SIMPLE=m | 3712 | CONFIG_MEDIA_TUNER_SIMPLE=m |
3697 | CONFIG_MEDIA_TUNER_TDA8290=m | 3713 | CONFIG_MEDIA_TUNER_TDA8290=m |
@@ -3719,6 +3735,8 @@ CONFIG_MEDIA_TUNER_TDA18212=m | |||
3719 | CONFIG_MEDIA_TUNER_E4000=m | 3735 | CONFIG_MEDIA_TUNER_E4000=m |
3720 | CONFIG_MEDIA_TUNER_FC2580=m | 3736 | CONFIG_MEDIA_TUNER_FC2580=m |
3721 | CONFIG_MEDIA_TUNER_TUA9001=m | 3737 | CONFIG_MEDIA_TUNER_TUA9001=m |
3738 | CONFIG_MEDIA_TUNER_IT913X=m | ||
3739 | CONFIG_MEDIA_TUNER_R820T=m | ||
3722 | 3740 | ||
3723 | # | 3741 | # |
3724 | # Multistandard (satellite) frontends | 3742 | # Multistandard (satellite) frontends |
@@ -3895,6 +3913,7 @@ CONFIG_DRM_GMA3600=y | |||
3895 | CONFIG_DRM_AST=m | 3913 | CONFIG_DRM_AST=m |
3896 | CONFIG_DRM_MGAG200=m | 3914 | CONFIG_DRM_MGAG200=m |
3897 | CONFIG_DRM_CIRRUS_QEMU=m | 3915 | CONFIG_DRM_CIRRUS_QEMU=m |
3916 | # CONFIG_DRM_QXL is not set | ||
3898 | CONFIG_VGASTATE=m | 3917 | CONFIG_VGASTATE=m |
3899 | CONFIG_VIDEO_OUTPUT_CONTROL=m | 3918 | CONFIG_VIDEO_OUTPUT_CONTROL=m |
3900 | CONFIG_HDMI=y | 3919 | CONFIG_HDMI=y |
@@ -3911,7 +3930,6 @@ CONFIG_FB_SYS_COPYAREA=m | |||
3911 | CONFIG_FB_SYS_IMAGEBLIT=m | 3930 | CONFIG_FB_SYS_IMAGEBLIT=m |
3912 | # CONFIG_FB_FOREIGN_ENDIAN is not set | 3931 | # CONFIG_FB_FOREIGN_ENDIAN is not set |
3913 | CONFIG_FB_SYS_FOPS=m | 3932 | CONFIG_FB_SYS_FOPS=m |
3914 | # CONFIG_FB_WMT_GE_ROPS is not set | ||
3915 | CONFIG_FB_DEFERRED_IO=y | 3933 | CONFIG_FB_DEFERRED_IO=y |
3916 | CONFIG_FB_HECUBA=m | 3934 | CONFIG_FB_HECUBA=m |
3917 | CONFIG_FB_SVGALIB=m | 3935 | CONFIG_FB_SVGALIB=m |
@@ -4007,12 +4025,14 @@ CONFIG_FB_MB862XX_PCI_GDC=y | |||
4007 | CONFIG_FB_MB862XX_I2C=y | 4025 | CONFIG_FB_MB862XX_I2C=y |
4008 | CONFIG_FB_BROADSHEET=m | 4026 | CONFIG_FB_BROADSHEET=m |
4009 | # CONFIG_FB_AUO_K190X is not set | 4027 | # CONFIG_FB_AUO_K190X is not set |
4028 | # CONFIG_FB_HYPERV is not set | ||
4010 | # CONFIG_EXYNOS_VIDEO is not set | 4029 | # CONFIG_EXYNOS_VIDEO is not set |
4011 | CONFIG_BACKLIGHT_LCD_SUPPORT=y | 4030 | CONFIG_BACKLIGHT_LCD_SUPPORT=y |
4012 | CONFIG_LCD_CLASS_DEVICE=m | 4031 | CONFIG_LCD_CLASS_DEVICE=m |
4013 | CONFIG_LCD_L4F00242T03=m | 4032 | CONFIG_LCD_L4F00242T03=m |
4014 | CONFIG_LCD_LMS283GF05=m | 4033 | CONFIG_LCD_LMS283GF05=m |
4015 | CONFIG_LCD_LTV350QV=m | 4034 | CONFIG_LCD_LTV350QV=m |
4035 | # CONFIG_LCD_ILI922X is not set | ||
4016 | CONFIG_LCD_ILI9320=m | 4036 | CONFIG_LCD_ILI9320=m |
4017 | CONFIG_LCD_TDO24M=m | 4037 | CONFIG_LCD_TDO24M=m |
4018 | CONFIG_LCD_VGG2432A4=m | 4038 | CONFIG_LCD_VGG2432A4=m |
@@ -4233,6 +4253,7 @@ CONFIG_SND_SOC_AK4535=m | |||
4233 | CONFIG_SND_SOC_AK4641=m | 4253 | CONFIG_SND_SOC_AK4641=m |
4234 | CONFIG_SND_SOC_AK4642=m | 4254 | CONFIG_SND_SOC_AK4642=m |
4235 | CONFIG_SND_SOC_AK4671=m | 4255 | CONFIG_SND_SOC_AK4671=m |
4256 | CONFIG_SND_SOC_AK5386=m | ||
4236 | CONFIG_SND_SOC_ALC5623=m | 4257 | CONFIG_SND_SOC_ALC5623=m |
4237 | CONFIG_SND_SOC_ALC5632=m | 4258 | CONFIG_SND_SOC_ALC5632=m |
4238 | CONFIG_SND_SOC_CS42L51=m | 4259 | CONFIG_SND_SOC_CS42L51=m |
@@ -4261,6 +4282,7 @@ CONFIG_SND_SOC_SPDIF=m | |||
4261 | CONFIG_SND_SOC_SSM2602=m | 4282 | CONFIG_SND_SOC_SSM2602=m |
4262 | CONFIG_SND_SOC_STA32X=m | 4283 | CONFIG_SND_SOC_STA32X=m |
4263 | CONFIG_SND_SOC_STA529=m | 4284 | CONFIG_SND_SOC_STA529=m |
4285 | CONFIG_SND_SOC_TAS5086=m | ||
4264 | CONFIG_SND_SOC_TLV320AIC23=m | 4286 | CONFIG_SND_SOC_TLV320AIC23=m |
4265 | CONFIG_SND_SOC_TLV320AIC26=m | 4287 | CONFIG_SND_SOC_TLV320AIC26=m |
4266 | CONFIG_SND_SOC_TLV320AIC32X4=m | 4288 | CONFIG_SND_SOC_TLV320AIC32X4=m |
@@ -4333,6 +4355,7 @@ CONFIG_HID_GENERIC=m | |||
4333 | # CONFIG_HID_A4TECH is not set | 4355 | # CONFIG_HID_A4TECH is not set |
4334 | # CONFIG_HID_ACRUX is not set | 4356 | # CONFIG_HID_ACRUX is not set |
4335 | CONFIG_HID_APPLE=m | 4357 | CONFIG_HID_APPLE=m |
4358 | # CONFIG_HID_APPLEIR is not set | ||
4336 | # CONFIG_HID_AUREAL is not set | 4359 | # CONFIG_HID_AUREAL is not set |
4337 | # CONFIG_HID_BELKIN is not set | 4360 | # CONFIG_HID_BELKIN is not set |
4338 | # CONFIG_HID_CHERRY is not set | 4361 | # CONFIG_HID_CHERRY is not set |
@@ -4427,10 +4450,10 @@ CONFIG_USB_ANNOUNCE_NEW_DEVICES=y | |||
4427 | # | 4450 | # |
4428 | # Miscellaneous USB options | 4451 | # Miscellaneous USB options |
4429 | # | 4452 | # |
4453 | CONFIG_USB_DEFAULT_PERSIST=y | ||
4430 | # CONFIG_USB_DYNAMIC_MINORS is not set | 4454 | # CONFIG_USB_DYNAMIC_MINORS is not set |
4431 | # CONFIG_USB_OTG_WHITELIST is not set | 4455 | # CONFIG_USB_OTG_WHITELIST is not set |
4432 | # CONFIG_USB_OTG_BLACKLIST_HUB is not set | 4456 | # CONFIG_USB_OTG_BLACKLIST_HUB is not set |
4433 | # CONFIG_USB_DWC3 is not set | ||
4434 | CONFIG_USB_MON=m | 4457 | CONFIG_USB_MON=m |
4435 | CONFIG_USB_WUSB=m | 4458 | CONFIG_USB_WUSB=m |
4436 | CONFIG_USB_WUSB_CBAF=m | 4459 | CONFIG_USB_WUSB_CBAF=m |
@@ -4446,6 +4469,7 @@ CONFIG_USB_EHCI_HCD=m | |||
4446 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | 4469 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set |
4447 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 4470 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
4448 | CONFIG_USB_EHCI_PCI=m | 4471 | CONFIG_USB_EHCI_PCI=m |
4472 | CONFIG_USB_EHCI_HCD_PLATFORM=m | ||
4449 | CONFIG_USB_OXU210HP_HCD=m | 4473 | CONFIG_USB_OXU210HP_HCD=m |
4450 | CONFIG_USB_ISP116X_HCD=m | 4474 | CONFIG_USB_ISP116X_HCD=m |
4451 | CONFIG_USB_ISP1760_HCD=m | 4475 | CONFIG_USB_ISP1760_HCD=m |
@@ -4453,7 +4477,6 @@ CONFIG_USB_ISP1362_HCD=m | |||
4453 | CONFIG_USB_OHCI_HCD=m | 4477 | CONFIG_USB_OHCI_HCD=m |
4454 | CONFIG_USB_OHCI_HCD_SSB=y | 4478 | CONFIG_USB_OHCI_HCD_SSB=y |
4455 | CONFIG_USB_OHCI_HCD_PLATFORM=y | 4479 | CONFIG_USB_OHCI_HCD_PLATFORM=y |
4456 | CONFIG_USB_EHCI_HCD_PLATFORM=m | ||
4457 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set | 4480 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set |
4458 | # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set | 4481 | # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set |
4459 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y | 4482 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y |
@@ -4466,7 +4489,6 @@ CONFIG_USB_R8A66597_HCD=m | |||
4466 | CONFIG_USB_WHCI_HCD=m | 4489 | CONFIG_USB_WHCI_HCD=m |
4467 | CONFIG_USB_HWA_HCD=m | 4490 | CONFIG_USB_HWA_HCD=m |
4468 | CONFIG_USB_HCD_SSB=m | 4491 | CONFIG_USB_HCD_SSB=m |
4469 | # CONFIG_USB_CHIPIDEA is not set | ||
4470 | 4492 | ||
4471 | # | 4493 | # |
4472 | # USB Device Class drivers | 4494 | # USB Device Class drivers |
@@ -4504,6 +4526,8 @@ CONFIG_USB_STORAGE_ENE_UB6250=m | |||
4504 | # | 4526 | # |
4505 | # CONFIG_USB_MDC800 is not set | 4527 | # CONFIG_USB_MDC800 is not set |
4506 | # CONFIG_USB_MICROTEK is not set | 4528 | # CONFIG_USB_MICROTEK is not set |
4529 | # CONFIG_USB_DWC3 is not set | ||
4530 | # CONFIG_USB_CHIPIDEA is not set | ||
4507 | 4531 | ||
4508 | # | 4532 | # |
4509 | # USB port drivers | 4533 | # USB port drivers |
@@ -4563,6 +4587,7 @@ CONFIG_USB_SERIAL_OPTICON=m | |||
4563 | CONFIG_USB_SERIAL_VIVOPAY_SERIAL=m | 4587 | CONFIG_USB_SERIAL_VIVOPAY_SERIAL=m |
4564 | CONFIG_USB_SERIAL_XSENS_MT=m | 4588 | CONFIG_USB_SERIAL_XSENS_MT=m |
4565 | CONFIG_USB_SERIAL_ZIO=m | 4589 | CONFIG_USB_SERIAL_ZIO=m |
4590 | # CONFIG_USB_SERIAL_WISHBONE is not set | ||
4566 | # CONFIG_USB_SERIAL_ZTE is not set | 4591 | # CONFIG_USB_SERIAL_ZTE is not set |
4567 | # CONFIG_USB_SERIAL_SSU100 is not set | 4592 | # CONFIG_USB_SERIAL_SSU100 is not set |
4568 | CONFIG_USB_SERIAL_QT2=m | 4593 | CONFIG_USB_SERIAL_QT2=m |
@@ -4594,27 +4619,22 @@ CONFIG_USB_ISIGHTFW=m | |||
4594 | # CONFIG_USB_YUREX is not set | 4619 | # CONFIG_USB_YUREX is not set |
4595 | CONFIG_USB_EZUSB_FX2=m | 4620 | CONFIG_USB_EZUSB_FX2=m |
4596 | CONFIG_USB_HSIC_USB3503=m | 4621 | CONFIG_USB_HSIC_USB3503=m |
4597 | |||
4598 | # | ||
4599 | # USB Physical Layer drivers | ||
4600 | # | ||
4601 | # CONFIG_OMAP_USB3 is not set | ||
4602 | # CONFIG_OMAP_CONTROL_USB is not set | ||
4603 | # CONFIG_USB_ISP1301 is not set | ||
4604 | # CONFIG_USB_RCAR_PHY is not set | ||
4605 | CONFIG_USB_ATM=m | 4622 | CONFIG_USB_ATM=m |
4606 | CONFIG_USB_SPEEDTOUCH=m | 4623 | CONFIG_USB_SPEEDTOUCH=m |
4607 | CONFIG_USB_CXACRU=m | 4624 | CONFIG_USB_CXACRU=m |
4608 | CONFIG_USB_UEAGLEATM=m | 4625 | CONFIG_USB_UEAGLEATM=m |
4609 | CONFIG_USB_XUSBATM=m | 4626 | CONFIG_USB_XUSBATM=m |
4610 | # CONFIG_USB_GADGET is not set | 4627 | CONFIG_USB_PHY=y |
4611 | |||
4612 | # | ||
4613 | # OTG and related infrastructure | ||
4614 | # | ||
4615 | CONFIG_USB_OTG_UTILS=y | ||
4616 | CONFIG_USB_GPIO_VBUS=m | ||
4617 | CONFIG_NOP_USB_XCEIV=m | 4628 | CONFIG_NOP_USB_XCEIV=m |
4629 | # CONFIG_OMAP_CONTROL_USB is not set | ||
4630 | # CONFIG_OMAP_USB3 is not set | ||
4631 | # CONFIG_SAMSUNG_USBPHY is not set | ||
4632 | # CONFIG_SAMSUNG_USB2PHY is not set | ||
4633 | # CONFIG_SAMSUNG_USB3PHY is not set | ||
4634 | CONFIG_USB_GPIO_VBUS=m | ||
4635 | # CONFIG_USB_ISP1301 is not set | ||
4636 | # CONFIG_USB_RCAR_PHY is not set | ||
4637 | # CONFIG_USB_GADGET is not set | ||
4618 | CONFIG_UWB=m | 4638 | CONFIG_UWB=m |
4619 | CONFIG_UWB_HWA=m | 4639 | CONFIG_UWB_HWA=m |
4620 | CONFIG_UWB_WHCI=m | 4640 | CONFIG_UWB_WHCI=m |
@@ -4677,6 +4697,7 @@ CONFIG_LEDS_GPIO=m | |||
4677 | CONFIG_LEDS_LP3944=m | 4697 | CONFIG_LEDS_LP3944=m |
4678 | # CONFIG_LEDS_LP5521 is not set | 4698 | # CONFIG_LEDS_LP5521 is not set |
4679 | # CONFIG_LEDS_LP5523 is not set | 4699 | # CONFIG_LEDS_LP5523 is not set |
4700 | # CONFIG_LEDS_LP5562 is not set | ||
4680 | CONFIG_LEDS_CLEVO_MAIL=m | 4701 | CONFIG_LEDS_CLEVO_MAIL=m |
4681 | CONFIG_LEDS_PCA955X=m | 4702 | CONFIG_LEDS_PCA955X=m |
4682 | # CONFIG_LEDS_PCA9633 is not set | 4703 | # CONFIG_LEDS_PCA9633 is not set |
@@ -4690,11 +4711,11 @@ CONFIG_LEDS_DELL_NETBOOKS=m | |||
4690 | # CONFIG_LEDS_LM355x is not set | 4711 | # CONFIG_LEDS_LM355x is not set |
4691 | # CONFIG_LEDS_OT200 is not set | 4712 | # CONFIG_LEDS_OT200 is not set |
4692 | CONFIG_LEDS_BLINKM=m | 4713 | CONFIG_LEDS_BLINKM=m |
4693 | CONFIG_LEDS_TRIGGERS=y | ||
4694 | 4714 | ||
4695 | # | 4715 | # |
4696 | # LED Triggers | 4716 | # LED Triggers |
4697 | # | 4717 | # |
4718 | CONFIG_LEDS_TRIGGERS=y | ||
4698 | CONFIG_LEDS_TRIGGER_TIMER=m | 4719 | CONFIG_LEDS_TRIGGER_TIMER=m |
4699 | CONFIG_LEDS_TRIGGER_ONESHOT=m | 4720 | CONFIG_LEDS_TRIGGER_ONESHOT=m |
4700 | CONFIG_LEDS_TRIGGER_HEARTBEAT=m | 4721 | CONFIG_LEDS_TRIGGER_HEARTBEAT=m |
@@ -4707,6 +4728,7 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m | |||
4707 | # iptables trigger is under Netfilter config (LED target) | 4728 | # iptables trigger is under Netfilter config (LED target) |
4708 | # | 4729 | # |
4709 | CONFIG_LEDS_TRIGGER_TRANSIENT=m | 4730 | CONFIG_LEDS_TRIGGER_TRANSIENT=m |
4731 | # CONFIG_LEDS_TRIGGER_CAMERA is not set | ||
4710 | CONFIG_ACCESSIBILITY=y | 4732 | CONFIG_ACCESSIBILITY=y |
4711 | # CONFIG_A11Y_BRAILLE_CONSOLE is not set | 4733 | # CONFIG_A11Y_BRAILLE_CONSOLE is not set |
4712 | CONFIG_INFINIBAND=m | 4734 | CONFIG_INFINIBAND=m |
@@ -4731,6 +4753,7 @@ CONFIG_INFINIBAND_IPOIB=m | |||
4731 | CONFIG_INFINIBAND_SRP=m | 4753 | CONFIG_INFINIBAND_SRP=m |
4732 | CONFIG_INFINIBAND_SRPT=m | 4754 | CONFIG_INFINIBAND_SRPT=m |
4733 | CONFIG_INFINIBAND_ISER=m | 4755 | CONFIG_INFINIBAND_ISER=m |
4756 | # CONFIG_INFINIBAND_ISERT is not set | ||
4734 | # CONFIG_EDAC is not set | 4757 | # CONFIG_EDAC is not set |
4735 | CONFIG_RTC_LIB=y | 4758 | CONFIG_RTC_LIB=y |
4736 | CONFIG_RTC_CLASS=y | 4759 | CONFIG_RTC_CLASS=y |
@@ -4826,6 +4849,7 @@ CONFIG_INTEL_IOATDMA=m | |||
4826 | CONFIG_TIMB_DMA=m | 4849 | CONFIG_TIMB_DMA=m |
4827 | CONFIG_PCH_DMA=m | 4850 | CONFIG_PCH_DMA=m |
4828 | CONFIG_DMA_ENGINE=y | 4851 | CONFIG_DMA_ENGINE=y |
4852 | CONFIG_DMA_ACPI=y | ||
4829 | 4853 | ||
4830 | # | 4854 | # |
4831 | # DMA Clients | 4855 | # DMA Clients |
@@ -4853,6 +4877,7 @@ CONFIG_VFIO_IOMMU_TYPE1=m | |||
4853 | CONFIG_VFIO=m | 4877 | CONFIG_VFIO=m |
4854 | CONFIG_VFIO_PCI=m | 4878 | CONFIG_VFIO_PCI=m |
4855 | CONFIG_VFIO_PCI_VGA=y | 4879 | CONFIG_VFIO_PCI_VGA=y |
4880 | CONFIG_VIRT_DRIVERS=y | ||
4856 | CONFIG_VIRTIO=m | 4881 | CONFIG_VIRTIO=m |
4857 | 4882 | ||
4858 | # | 4883 | # |
@@ -4937,6 +4962,7 @@ CONFIG_NET_VENDOR_SILICOM=y | |||
4937 | # CONFIG_CED1401 is not set | 4962 | # CONFIG_CED1401 is not set |
4938 | # CONFIG_DGRP is not set | 4963 | # CONFIG_DGRP is not set |
4939 | # CONFIG_FIREWIRE_SERIAL is not set | 4964 | # CONFIG_FIREWIRE_SERIAL is not set |
4965 | # CONFIG_USB_DWC2 is not set | ||
4940 | CONFIG_X86_PLATFORM_DEVICES=y | 4966 | CONFIG_X86_PLATFORM_DEVICES=y |
4941 | CONFIG_ACER_WMI=m | 4967 | CONFIG_ACER_WMI=m |
4942 | CONFIG_ACERHDF=m | 4968 | CONFIG_ACERHDF=m |
@@ -4985,6 +5011,7 @@ CONFIG_MXM_WMI=m | |||
4985 | CONFIG_INTEL_OAKTRAIL=m | 5011 | CONFIG_INTEL_OAKTRAIL=m |
4986 | # CONFIG_SAMSUNG_Q10 is not set | 5012 | # CONFIG_SAMSUNG_Q10 is not set |
4987 | # CONFIG_APPLE_GMUX is not set | 5013 | # CONFIG_APPLE_GMUX is not set |
5014 | # CONFIG_PVPANIC is not set | ||
4988 | 5015 | ||
4989 | # | 5016 | # |
4990 | # Hardware Spinlock drivers | 5017 | # Hardware Spinlock drivers |
@@ -5010,7 +5037,6 @@ CONFIG_STE_MODEM_RPROC=m | |||
5010 | # | 5037 | # |
5011 | # Rpmsg drivers | 5038 | # Rpmsg drivers |
5012 | # | 5039 | # |
5013 | CONFIG_VIRT_DRIVERS=y | ||
5014 | # CONFIG_PM_DEVFREQ is not set | 5040 | # CONFIG_PM_DEVFREQ is not set |
5015 | CONFIG_EXTCON=m | 5041 | CONFIG_EXTCON=m |
5016 | 5042 | ||
@@ -5023,6 +5049,7 @@ CONFIG_MEMORY=y | |||
5023 | # CONFIG_VME_BUS is not set | 5049 | # CONFIG_VME_BUS is not set |
5024 | CONFIG_PWM=y | 5050 | CONFIG_PWM=y |
5025 | # CONFIG_IPACK_BUS is not set | 5051 | # CONFIG_IPACK_BUS is not set |
5052 | # CONFIG_RESET_CONTROLLER is not set | ||
5026 | 5053 | ||
5027 | # | 5054 | # |
5028 | # Firmware Drivers | 5055 | # Firmware Drivers |
@@ -5076,6 +5103,7 @@ CONFIG_XFS_FS=m | |||
5076 | CONFIG_XFS_QUOTA=y | 5103 | CONFIG_XFS_QUOTA=y |
5077 | CONFIG_XFS_POSIX_ACL=y | 5104 | CONFIG_XFS_POSIX_ACL=y |
5078 | CONFIG_XFS_RT=y | 5105 | CONFIG_XFS_RT=y |
5106 | # CONFIG_XFS_WARN is not set | ||
5079 | # CONFIG_XFS_DEBUG is not set | 5107 | # CONFIG_XFS_DEBUG is not set |
5080 | CONFIG_GFS2_FS=m | 5108 | CONFIG_GFS2_FS=m |
5081 | CONFIG_GFS2_FS_LOCKING_DLM=y | 5109 | CONFIG_GFS2_FS_LOCKING_DLM=y |
@@ -5088,6 +5116,8 @@ CONFIG_OCFS2_DEBUG_MASKLOG=y | |||
5088 | CONFIG_BTRFS_FS=m | 5116 | CONFIG_BTRFS_FS=m |
5089 | CONFIG_BTRFS_FS_POSIX_ACL=y | 5117 | CONFIG_BTRFS_FS_POSIX_ACL=y |
5090 | # CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set | 5118 | # CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set |
5119 | # CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set | ||
5120 | # CONFIG_BTRFS_DEBUG is not set | ||
5091 | CONFIG_NILFS2_FS=m | 5121 | CONFIG_NILFS2_FS=m |
5092 | CONFIG_FS_POSIX_ACL=y | 5122 | CONFIG_FS_POSIX_ACL=y |
5093 | CONFIG_EXPORTFS=m | 5123 | CONFIG_EXPORTFS=m |
@@ -5397,6 +5427,8 @@ CONFIG_RCU_CPU_STALL_TIMEOUT=60 | |||
5397 | # CONFIG_NOTIFIER_ERROR_INJECTION is not set | 5427 | # CONFIG_NOTIFIER_ERROR_INJECTION is not set |
5398 | # CONFIG_FAULT_INJECTION is not set | 5428 | # CONFIG_FAULT_INJECTION is not set |
5399 | CONFIG_LATENCYTOP=y | 5429 | CONFIG_LATENCYTOP=y |
5430 | CONFIG_ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS=y | ||
5431 | # CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set | ||
5400 | # CONFIG_DEBUG_PAGEALLOC is not set | 5432 | # CONFIG_DEBUG_PAGEALLOC is not set |
5401 | CONFIG_USER_STACKTRACE_SUPPORT=y | 5433 | CONFIG_USER_STACKTRACE_SUPPORT=y |
5402 | CONFIG_HAVE_FUNCTION_TRACER=y | 5434 | CONFIG_HAVE_FUNCTION_TRACER=y |
@@ -5423,6 +5455,7 @@ CONFIG_TRACING_SUPPORT=y | |||
5423 | CONFIG_HAVE_ARCH_KGDB=y | 5455 | CONFIG_HAVE_ARCH_KGDB=y |
5424 | # CONFIG_KGDB is not set | 5456 | # CONFIG_KGDB is not set |
5425 | CONFIG_HAVE_ARCH_KMEMCHECK=y | 5457 | CONFIG_HAVE_ARCH_KMEMCHECK=y |
5458 | # CONFIG_TEST_STRING_HELPERS is not set | ||
5426 | CONFIG_TEST_KSTRTOX=m | 5459 | CONFIG_TEST_KSTRTOX=m |
5427 | CONFIG_STRICT_DEVMEM=y | 5460 | CONFIG_STRICT_DEVMEM=y |
5428 | # CONFIG_X86_VERBOSE_BOOTUP is not set | 5461 | # CONFIG_X86_VERBOSE_BOOTUP is not set |
@@ -5431,6 +5464,7 @@ CONFIG_DEBUG_STACKOVERFLOW=y | |||
5431 | # CONFIG_X86_PTDUMP is not set | 5464 | # CONFIG_X86_PTDUMP is not set |
5432 | CONFIG_DEBUG_NX_TEST=m | 5465 | CONFIG_DEBUG_NX_TEST=m |
5433 | CONFIG_DOUBLEFAULT=y | 5466 | CONFIG_DOUBLEFAULT=y |
5467 | # CONFIG_DEBUG_TLBFLUSH is not set | ||
5434 | # CONFIG_IOMMU_STRESS is not set | 5468 | # CONFIG_IOMMU_STRESS is not set |
5435 | CONFIG_HAVE_MMIOTRACE_SUPPORT=y | 5469 | CONFIG_HAVE_MMIOTRACE_SUPPORT=y |
5436 | CONFIG_X86_DECODER_SELFTEST=y | 5470 | CONFIG_X86_DECODER_SELFTEST=y |
@@ -5446,7 +5480,6 @@ CONFIG_DEFAULT_IO_DELAY_TYPE=0 | |||
5446 | CONFIG_DEBUG_BOOT_PARAMS=y | 5480 | CONFIG_DEBUG_BOOT_PARAMS=y |
5447 | # CONFIG_CPA_DEBUG is not set | 5481 | # CONFIG_CPA_DEBUG is not set |
5448 | # CONFIG_OPTIMIZE_INLINING is not set | 5482 | # CONFIG_OPTIMIZE_INLINING is not set |
5449 | # CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set | ||
5450 | CONFIG_DEBUG_NMI_SELFTEST=y | 5483 | CONFIG_DEBUG_NMI_SELFTEST=y |
5451 | 5484 | ||
5452 | # | 5485 | # |
@@ -5582,7 +5615,6 @@ CONFIG_GRKERNSEC_FORKFAIL=y | |||
5582 | CONFIG_GRKERNSEC_TIME=y | 5615 | CONFIG_GRKERNSEC_TIME=y |
5583 | CONFIG_GRKERNSEC_PROC_IPADDR=y | 5616 | CONFIG_GRKERNSEC_PROC_IPADDR=y |
5584 | # CONFIG_GRKERNSEC_RWXMAP_LOG is not set | 5617 | # CONFIG_GRKERNSEC_RWXMAP_LOG is not set |
5585 | # CONFIG_GRKERNSEC_AUDIT_TEXTREL is not set | ||
5586 | 5618 | ||
5587 | # | 5619 | # |
5588 | # Executable Protections | 5620 | # Executable Protections |
@@ -5628,8 +5660,6 @@ CONFIG_ASYNC_MEMCPY=m | |||
5628 | CONFIG_ASYNC_XOR=m | 5660 | CONFIG_ASYNC_XOR=m |
5629 | CONFIG_ASYNC_PQ=m | 5661 | CONFIG_ASYNC_PQ=m |
5630 | CONFIG_ASYNC_RAID6_RECOV=m | 5662 | CONFIG_ASYNC_RAID6_RECOV=m |
5631 | CONFIG_ASYNC_TX_DISABLE_PQ_VAL_DMA=y | ||
5632 | CONFIG_ASYNC_TX_DISABLE_XOR_VAL_DMA=y | ||
5633 | CONFIG_CRYPTO=y | 5663 | CONFIG_CRYPTO=y |
5634 | 5664 | ||
5635 | # | 5665 | # |
@@ -5682,6 +5712,7 @@ CONFIG_CRYPTO_XTS=m | |||
5682 | # | 5712 | # |
5683 | # Hash modes | 5713 | # Hash modes |
5684 | # | 5714 | # |
5715 | # CONFIG_CRYPTO_CMAC is not set | ||
5685 | CONFIG_CRYPTO_HMAC=m | 5716 | CONFIG_CRYPTO_HMAC=m |
5686 | CONFIG_CRYPTO_XCBC=m | 5717 | CONFIG_CRYPTO_XCBC=m |
5687 | CONFIG_CRYPTO_VMAC=m | 5718 | CONFIG_CRYPTO_VMAC=m |
@@ -5761,6 +5792,7 @@ CONFIG_PUBLIC_KEY_ALGO_RSA=m | |||
5761 | CONFIG_X509_CERTIFICATE_PARSER=m | 5792 | CONFIG_X509_CERTIFICATE_PARSER=m |
5762 | CONFIG_HAVE_KVM=y | 5793 | CONFIG_HAVE_KVM=y |
5763 | CONFIG_HAVE_KVM_IRQCHIP=y | 5794 | CONFIG_HAVE_KVM_IRQCHIP=y |
5795 | CONFIG_HAVE_KVM_IRQ_ROUTING=y | ||
5764 | CONFIG_HAVE_KVM_EVENTFD=y | 5796 | CONFIG_HAVE_KVM_EVENTFD=y |
5765 | CONFIG_KVM_APIC_ARCHITECTURE=y | 5797 | CONFIG_KVM_APIC_ARCHITECTURE=y |
5766 | CONFIG_KVM_MMIO=y | 5798 | CONFIG_KVM_MMIO=y |
@@ -5771,8 +5803,7 @@ CONFIG_VIRTUALIZATION=y | |||
5771 | CONFIG_KVM=m | 5803 | CONFIG_KVM=m |
5772 | CONFIG_KVM_INTEL=m | 5804 | CONFIG_KVM_INTEL=m |
5773 | CONFIG_KVM_AMD=m | 5805 | CONFIG_KVM_AMD=m |
5774 | CONFIG_VHOST_NET=m | 5806 | CONFIG_KVM_DEVICE_ASSIGNMENT=y |
5775 | CONFIG_TCM_VHOST=m | ||
5776 | # CONFIG_LGUEST is not set | 5807 | # CONFIG_LGUEST is not set |
5777 | # CONFIG_BINARY_PRINTF is not set | 5808 | # CONFIG_BINARY_PRINTF is not set |
5778 | 5809 | ||
diff --git a/main/linux-grsec/kernelconfig.x86_64 b/main/linux-grsec/kernelconfig.x86_64 index feaf716d88..3e48639202 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.8 Kernel Configuration | 3 | # Linux/x86 3.10.4 Kernel Configuration |
4 | # | 4 | # |
5 | CONFIG_64BIT=y | 5 | CONFIG_64BIT=y |
6 | CONFIG_X86_64=y | 6 | CONFIG_X86_64=y |
@@ -18,12 +18,10 @@ CONFIG_GENERIC_ISA_DMA=y | |||
18 | CONFIG_GENERIC_BUG=y | 18 | CONFIG_GENERIC_BUG=y |
19 | CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y | 19 | CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y |
20 | CONFIG_GENERIC_HWEIGHT=y | 20 | CONFIG_GENERIC_HWEIGHT=y |
21 | CONFIG_GENERIC_GPIO=y | ||
22 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | 21 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y |
23 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 22 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
24 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 23 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
25 | CONFIG_ARCH_HAS_CPU_RELAX=y | 24 | CONFIG_ARCH_HAS_CPU_RELAX=y |
26 | CONFIG_ARCH_HAS_DEFAULT_IDLE=y | ||
27 | CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y | 25 | CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y |
28 | CONFIG_ARCH_HAS_CPU_AUTOPROBE=y | 26 | CONFIG_ARCH_HAS_CPU_AUTOPROBE=y |
29 | CONFIG_HAVE_SETUP_PER_CPU_AREA=y | 27 | CONFIG_HAVE_SETUP_PER_CPU_AREA=y |
@@ -96,6 +94,10 @@ CONFIG_GENERIC_CMOS_UPDATE=y | |||
96 | # Timers subsystem | 94 | # Timers subsystem |
97 | # | 95 | # |
98 | CONFIG_TICK_ONESHOT=y | 96 | CONFIG_TICK_ONESHOT=y |
97 | CONFIG_NO_HZ_COMMON=y | ||
98 | # CONFIG_HZ_PERIODIC is not set | ||
99 | CONFIG_NO_HZ_IDLE=y | ||
100 | # CONFIG_NO_HZ_FULL is not set | ||
99 | CONFIG_NO_HZ=y | 101 | CONFIG_NO_HZ=y |
100 | CONFIG_HIGH_RES_TIMERS=y | 102 | CONFIG_HIGH_RES_TIMERS=y |
101 | 103 | ||
@@ -165,19 +167,19 @@ CONFIG_RD_LZO=y | |||
165 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 167 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
166 | CONFIG_SYSCTL=y | 168 | CONFIG_SYSCTL=y |
167 | CONFIG_ANON_INODES=y | 169 | CONFIG_ANON_INODES=y |
168 | CONFIG_EXPERT=y | ||
169 | CONFIG_HAVE_UID16=y | 170 | CONFIG_HAVE_UID16=y |
171 | CONFIG_SYSCTL_EXCEPTION_TRACE=y | ||
172 | CONFIG_HOTPLUG=y | ||
173 | CONFIG_HAVE_PCSPKR_PLATFORM=y | ||
174 | CONFIG_EXPERT=y | ||
170 | CONFIG_UID16=y | 175 | CONFIG_UID16=y |
171 | CONFIG_SYSCTL_SYSCALL=y | 176 | CONFIG_SYSCTL_SYSCALL=y |
172 | CONFIG_SYSCTL_EXCEPTION_TRACE=y | ||
173 | CONFIG_KALLSYMS=y | 177 | CONFIG_KALLSYMS=y |
174 | CONFIG_KALLSYMS_ALL=y | 178 | CONFIG_KALLSYMS_ALL=y |
175 | CONFIG_HOTPLUG=y | ||
176 | CONFIG_PRINTK=y | 179 | CONFIG_PRINTK=y |
177 | CONFIG_BUG=y | 180 | CONFIG_BUG=y |
178 | CONFIG_ELF_CORE=y | 181 | CONFIG_ELF_CORE=y |
179 | CONFIG_PCSPKR_PLATFORM=y | 182 | CONFIG_PCSPKR_PLATFORM=y |
180 | CONFIG_HAVE_PCSPKR_PLATFORM=y | ||
181 | CONFIG_BASE_FULL=y | 183 | CONFIG_BASE_FULL=y |
182 | CONFIG_FUTEX=y | 184 | CONFIG_FUTEX=y |
183 | CONFIG_EPOLL=y | 185 | CONFIG_EPOLL=y |
@@ -186,6 +188,7 @@ CONFIG_TIMERFD=y | |||
186 | CONFIG_EVENTFD=y | 188 | CONFIG_EVENTFD=y |
187 | CONFIG_SHMEM=y | 189 | CONFIG_SHMEM=y |
188 | CONFIG_AIO=y | 190 | CONFIG_AIO=y |
191 | CONFIG_PCI_QUIRKS=y | ||
189 | CONFIG_EMBEDDED=y | 192 | CONFIG_EMBEDDED=y |
190 | CONFIG_HAVE_PERF_EVENTS=y | 193 | CONFIG_HAVE_PERF_EVENTS=y |
191 | 194 | ||
@@ -195,7 +198,6 @@ CONFIG_HAVE_PERF_EVENTS=y | |||
195 | CONFIG_PERF_EVENTS=y | 198 | CONFIG_PERF_EVENTS=y |
196 | # CONFIG_DEBUG_PERF_USE_VMALLOC is not set | 199 | # CONFIG_DEBUG_PERF_USE_VMALLOC is not set |
197 | CONFIG_VM_EVENT_COUNTERS=y | 200 | CONFIG_VM_EVENT_COUNTERS=y |
198 | CONFIG_PCI_QUIRKS=y | ||
199 | # CONFIG_SLUB_DEBUG is not set | 201 | # CONFIG_SLUB_DEBUG is not set |
200 | # CONFIG_COMPAT_BRK is not set | 202 | # CONFIG_COMPAT_BRK is not set |
201 | # CONFIG_SLAB is not set | 203 | # CONFIG_SLAB is not set |
@@ -323,8 +325,10 @@ CONFIG_X86_EXTENDED_PLATFORM=y | |||
323 | # CONFIG_X86_VSMP is not set | 325 | # CONFIG_X86_VSMP is not set |
324 | # CONFIG_X86_INTEL_LPSS is not set | 326 | # CONFIG_X86_INTEL_LPSS is not set |
325 | CONFIG_SCHED_OMIT_FRAME_POINTER=y | 327 | CONFIG_SCHED_OMIT_FRAME_POINTER=y |
326 | CONFIG_PARAVIRT_GUEST=y | 328 | CONFIG_HYPERVISOR_GUEST=y |
327 | # CONFIG_PARAVIRT_TIME_ACCOUNTING is not set | 329 | CONFIG_PARAVIRT=y |
330 | # CONFIG_PARAVIRT_DEBUG is not set | ||
331 | # CONFIG_PARAVIRT_SPINLOCKS is not set | ||
328 | CONFIG_XEN=y | 332 | CONFIG_XEN=y |
329 | CONFIG_XEN_DOM0=y | 333 | CONFIG_XEN_DOM0=y |
330 | CONFIG_XEN_PRIVILEGED_GUEST=y | 334 | CONFIG_XEN_PRIVILEGED_GUEST=y |
@@ -333,10 +337,8 @@ CONFIG_XEN_MAX_DOMAIN_MEMORY=500 | |||
333 | CONFIG_XEN_SAVE_RESTORE=y | 337 | CONFIG_XEN_SAVE_RESTORE=y |
334 | # CONFIG_XEN_DEBUG_FS is not set | 338 | # CONFIG_XEN_DEBUG_FS is not set |
335 | CONFIG_KVM_GUEST=y | 339 | CONFIG_KVM_GUEST=y |
336 | CONFIG_PARAVIRT=y | 340 | # CONFIG_PARAVIRT_TIME_ACCOUNTING is not set |
337 | # CONFIG_PARAVIRT_SPINLOCKS is not set | ||
338 | CONFIG_PARAVIRT_CLOCK=y | 341 | CONFIG_PARAVIRT_CLOCK=y |
339 | # CONFIG_PARAVIRT_DEBUG is not set | ||
340 | CONFIG_NO_BOOTMEM=y | 342 | CONFIG_NO_BOOTMEM=y |
341 | # CONFIG_MEMTEST is not set | 343 | # CONFIG_MEMTEST is not set |
342 | # CONFIG_MK8 is not set | 344 | # CONFIG_MK8 is not set |
@@ -526,6 +528,7 @@ CONFIG_X86_PCC_CPUFREQ=m | |||
526 | CONFIG_X86_ACPI_CPUFREQ=m | 528 | CONFIG_X86_ACPI_CPUFREQ=m |
527 | # CONFIG_X86_ACPI_CPUFREQ_CPB is not set | 529 | # CONFIG_X86_ACPI_CPUFREQ_CPB is not set |
528 | CONFIG_X86_POWERNOW_K8=m | 530 | CONFIG_X86_POWERNOW_K8=m |
531 | # CONFIG_X86_AMD_FREQ_SENSITIVITY is not set | ||
529 | CONFIG_X86_SPEEDSTEP_CENTRINO=m | 532 | CONFIG_X86_SPEEDSTEP_CENTRINO=m |
530 | CONFIG_X86_P4_CLOCKMOD=m | 533 | CONFIG_X86_P4_CLOCKMOD=m |
531 | 534 | ||
@@ -596,8 +599,6 @@ CONFIG_PD6729=m | |||
596 | CONFIG_I82092=m | 599 | CONFIG_I82092=m |
597 | CONFIG_PCCARD_NONSTATIC=y | 600 | CONFIG_PCCARD_NONSTATIC=y |
598 | CONFIG_HOTPLUG_PCI=m | 601 | CONFIG_HOTPLUG_PCI=m |
599 | CONFIG_HOTPLUG_PCI_ACPI=m | ||
600 | CONFIG_HOTPLUG_PCI_ACPI_IBM=m | ||
601 | CONFIG_HOTPLUG_PCI_CPCI=y | 602 | CONFIG_HOTPLUG_PCI_CPCI=y |
602 | CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m | 603 | CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m |
603 | CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m | 604 | CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m |
@@ -611,6 +612,7 @@ CONFIG_BINFMT_ELF=y | |||
611 | CONFIG_COMPAT_BINFMT_ELF=y | 612 | CONFIG_COMPAT_BINFMT_ELF=y |
612 | CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y | 613 | CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y |
613 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | 614 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
615 | CONFIG_BINFMT_SCRIPT=y | ||
614 | # CONFIG_HAVE_AOUT is not set | 616 | # CONFIG_HAVE_AOUT is not set |
615 | CONFIG_BINFMT_MISC=m | 617 | CONFIG_BINFMT_MISC=m |
616 | CONFIG_COREDUMP=y | 618 | CONFIG_COREDUMP=y |
@@ -653,6 +655,7 @@ CONFIG_IP_ROUTE_CLASSID=y | |||
653 | # CONFIG_IP_PNP is not set | 655 | # CONFIG_IP_PNP is not set |
654 | CONFIG_NET_IPIP=m | 656 | CONFIG_NET_IPIP=m |
655 | CONFIG_NET_IPGRE_DEMUX=y | 657 | CONFIG_NET_IPGRE_DEMUX=y |
658 | CONFIG_NET_IP_TUNNEL=m | ||
656 | CONFIG_NET_IPGRE=m | 659 | CONFIG_NET_IPGRE=m |
657 | CONFIG_NET_IPGRE_BROADCAST=y | 660 | CONFIG_NET_IPGRE_BROADCAST=y |
658 | CONFIG_IP_MROUTE=y | 661 | CONFIG_IP_MROUTE=y |
@@ -1017,6 +1020,7 @@ CONFIG_RDS=m | |||
1017 | # CONFIG_RDS_DEBUG is not set | 1020 | # CONFIG_RDS_DEBUG is not set |
1018 | CONFIG_TIPC=m | 1021 | CONFIG_TIPC=m |
1019 | CONFIG_TIPC_PORTS=8191 | 1022 | CONFIG_TIPC_PORTS=8191 |
1023 | # CONFIG_TIPC_MEDIA_IB is not set | ||
1020 | CONFIG_ATM=m | 1024 | CONFIG_ATM=m |
1021 | CONFIG_ATM_CLIP=m | 1025 | CONFIG_ATM_CLIP=m |
1022 | # CONFIG_ATM_CLIP_NO_ICMP is not set | 1026 | # CONFIG_ATM_CLIP_NO_ICMP is not set |
@@ -1052,7 +1056,6 @@ CONFIG_ATALK=m | |||
1052 | CONFIG_DEV_APPLETALK=m | 1056 | CONFIG_DEV_APPLETALK=m |
1053 | CONFIG_IPDDP=m | 1057 | CONFIG_IPDDP=m |
1054 | CONFIG_IPDDP_ENCAP=y | 1058 | CONFIG_IPDDP_ENCAP=y |
1055 | CONFIG_IPDDP_DECAP=y | ||
1056 | CONFIG_X25=m | 1059 | CONFIG_X25=m |
1057 | CONFIG_LAPB=m | 1060 | CONFIG_LAPB=m |
1058 | CONFIG_PHONET=m | 1061 | CONFIG_PHONET=m |
@@ -1129,6 +1132,8 @@ CONFIG_DNS_RESOLVER=y | |||
1129 | CONFIG_OPENVSWITCH=m | 1132 | CONFIG_OPENVSWITCH=m |
1130 | CONFIG_VSOCKETS=m | 1133 | CONFIG_VSOCKETS=m |
1131 | CONFIG_VMWARE_VMCI_VSOCKETS=m | 1134 | CONFIG_VMWARE_VMCI_VSOCKETS=m |
1135 | CONFIG_NETLINK_MMAP=y | ||
1136 | CONFIG_NETLINK_DIAG=y | ||
1132 | CONFIG_RPS=y | 1137 | CONFIG_RPS=y |
1133 | CONFIG_RFS_ACCEL=y | 1138 | CONFIG_RFS_ACCEL=y |
1134 | CONFIG_XPS=y | 1139 | CONFIG_XPS=y |
@@ -1326,8 +1331,6 @@ CONFIG_MTD_AR7_PARTS=m | |||
1326 | # | 1331 | # |
1327 | # User Modules And Translation Layers | 1332 | # User Modules And Translation Layers |
1328 | # | 1333 | # |
1329 | CONFIG_MTD_CHAR=m | ||
1330 | CONFIG_HAVE_MTD_OTP=y | ||
1331 | CONFIG_MTD_BLKDEVS=m | 1334 | CONFIG_MTD_BLKDEVS=m |
1332 | CONFIG_MTD_BLOCK=m | 1335 | CONFIG_MTD_BLOCK=m |
1333 | CONFIG_MTD_BLOCK_RO=m | 1336 | CONFIG_MTD_BLOCK_RO=m |
@@ -1413,22 +1416,12 @@ CONFIG_MTD_BLOCK2MTD=m | |||
1413 | # | 1416 | # |
1414 | # Disk-On-Chip Device Drivers | 1417 | # Disk-On-Chip Device Drivers |
1415 | # | 1418 | # |
1416 | CONFIG_MTD_DOC2000=m | ||
1417 | CONFIG_MTD_DOC2001=m | ||
1418 | CONFIG_MTD_DOC2001PLUS=m | ||
1419 | # CONFIG_MTD_DOCG3 is not set | 1419 | # CONFIG_MTD_DOCG3 is not set |
1420 | CONFIG_MTD_DOCPROBE=m | ||
1421 | CONFIG_MTD_DOCECC=m | ||
1422 | CONFIG_MTD_DOCPROBE_ADVANCED=y | ||
1423 | CONFIG_MTD_DOCPROBE_ADDRESS=0x0000 | ||
1424 | # CONFIG_MTD_DOCPROBE_HIGH is not set | ||
1425 | # CONFIG_MTD_DOCPROBE_55AA is not set | ||
1426 | CONFIG_MTD_NAND_ECC=m | 1420 | CONFIG_MTD_NAND_ECC=m |
1427 | CONFIG_MTD_NAND_ECC_SMC=y | 1421 | CONFIG_MTD_NAND_ECC_SMC=y |
1428 | CONFIG_MTD_NAND=m | 1422 | CONFIG_MTD_NAND=m |
1429 | # CONFIG_MTD_NAND_ECC_BCH is not set | 1423 | # CONFIG_MTD_NAND_ECC_BCH is not set |
1430 | CONFIG_MTD_SM_COMMON=m | 1424 | CONFIG_MTD_SM_COMMON=m |
1431 | # CONFIG_MTD_NAND_MUSEUM_IDS is not set | ||
1432 | CONFIG_MTD_NAND_DENALI=m | 1425 | CONFIG_MTD_NAND_DENALI=m |
1433 | # CONFIG_MTD_NAND_DENALI_PCI is not set | 1426 | # CONFIG_MTD_NAND_DENALI_PCI is not set |
1434 | CONFIG_MTD_NAND_IDS=m | 1427 | CONFIG_MTD_NAND_IDS=m |
@@ -1447,7 +1440,6 @@ CONFIG_MTD_ONENAND=m | |||
1447 | # CONFIG_MTD_ONENAND_GENERIC is not set | 1440 | # CONFIG_MTD_ONENAND_GENERIC is not set |
1448 | CONFIG_MTD_ONENAND_OTP=y | 1441 | CONFIG_MTD_ONENAND_OTP=y |
1449 | CONFIG_MTD_ONENAND_2X_PROGRAM=y | 1442 | CONFIG_MTD_ONENAND_2X_PROGRAM=y |
1450 | CONFIG_MTD_ONENAND_SIM=m | ||
1451 | 1443 | ||
1452 | # | 1444 | # |
1453 | # LPDDR flash memory drivers | 1445 | # LPDDR flash memory drivers |
@@ -1517,6 +1509,7 @@ CONFIG_SENSORS_LIS3LV02D=m | |||
1517 | CONFIG_AD525X_DPOT=m | 1509 | CONFIG_AD525X_DPOT=m |
1518 | CONFIG_AD525X_DPOT_I2C=m | 1510 | CONFIG_AD525X_DPOT_I2C=m |
1519 | CONFIG_AD525X_DPOT_SPI=m | 1511 | CONFIG_AD525X_DPOT_SPI=m |
1512 | # CONFIG_DUMMY_IRQ is not set | ||
1520 | CONFIG_IBM_ASM=m | 1513 | CONFIG_IBM_ASM=m |
1521 | CONFIG_PHANTOM=m | 1514 | CONFIG_PHANTOM=m |
1522 | # CONFIG_INTEL_MID_PTI is not set | 1515 | # CONFIG_INTEL_MID_PTI is not set |
@@ -1546,6 +1539,7 @@ CONFIG_VMWARE_BALLOON=m | |||
1546 | CONFIG_PCH_PHUB=m | 1539 | CONFIG_PCH_PHUB=m |
1547 | # CONFIG_USB_SWITCH_FSA9480 is not set | 1540 | # CONFIG_USB_SWITCH_FSA9480 is not set |
1548 | # CONFIG_LATTICE_ECP3_CONFIG is not set | 1541 | # CONFIG_LATTICE_ECP3_CONFIG is not set |
1542 | # CONFIG_SRAM is not set | ||
1549 | CONFIG_C2PORT=m | 1543 | CONFIG_C2PORT=m |
1550 | CONFIG_C2PORT_DURAMAR_2150=m | 1544 | CONFIG_C2PORT_DURAMAR_2150=m |
1551 | 1545 | ||
@@ -1573,6 +1567,7 @@ CONFIG_SENSORS_LIS3_I2C=m | |||
1573 | # | 1567 | # |
1574 | CONFIG_ALTERA_STAPL=m | 1568 | CONFIG_ALTERA_STAPL=m |
1575 | # CONFIG_INTEL_MEI is not set | 1569 | # CONFIG_INTEL_MEI is not set |
1570 | # CONFIG_INTEL_MEI_ME is not set | ||
1576 | CONFIG_VMWARE_VMCI=m | 1571 | CONFIG_VMWARE_VMCI=m |
1577 | CONFIG_HAVE_IDE=y | 1572 | CONFIG_HAVE_IDE=y |
1578 | # CONFIG_IDE is not set | 1573 | # CONFIG_IDE is not set |
@@ -1668,6 +1663,7 @@ CONFIG_SCSI_MPT3SAS_MAX_SGE=128 | |||
1668 | # CONFIG_SCSI_MPT3SAS_LOGGING is not set | 1663 | # CONFIG_SCSI_MPT3SAS_LOGGING is not set |
1669 | CONFIG_SCSI_UFSHCD=m | 1664 | CONFIG_SCSI_UFSHCD=m |
1670 | CONFIG_SCSI_UFSHCD_PCI=m | 1665 | CONFIG_SCSI_UFSHCD_PCI=m |
1666 | # CONFIG_SCSI_UFSHCD_PLATFORM is not set | ||
1671 | CONFIG_SCSI_HPTIOP=m | 1667 | CONFIG_SCSI_HPTIOP=m |
1672 | CONFIG_SCSI_BUSLOGIC=m | 1668 | CONFIG_SCSI_BUSLOGIC=m |
1673 | CONFIG_VMWARE_PVSCSI=m | 1669 | CONFIG_VMWARE_PVSCSI=m |
@@ -1833,6 +1829,7 @@ CONFIG_MD_RAID10=m | |||
1833 | CONFIG_MD_RAID456=m | 1829 | CONFIG_MD_RAID456=m |
1834 | CONFIG_MD_MULTIPATH=m | 1830 | CONFIG_MD_MULTIPATH=m |
1835 | CONFIG_MD_FAULTY=m | 1831 | CONFIG_MD_FAULTY=m |
1832 | # CONFIG_BCACHE is not set | ||
1836 | CONFIG_BLK_DEV_DM=m | 1833 | CONFIG_BLK_DEV_DM=m |
1837 | # CONFIG_DM_DEBUG is not set | 1834 | # CONFIG_DM_DEBUG is not set |
1838 | CONFIG_DM_BUFIO=m | 1835 | CONFIG_DM_BUFIO=m |
@@ -1902,6 +1899,7 @@ CONFIG_IFB=m | |||
1902 | CONFIG_NET_TEAM=m | 1899 | CONFIG_NET_TEAM=m |
1903 | CONFIG_NET_TEAM_MODE_BROADCAST=m | 1900 | CONFIG_NET_TEAM_MODE_BROADCAST=m |
1904 | CONFIG_NET_TEAM_MODE_ROUNDROBIN=m | 1901 | CONFIG_NET_TEAM_MODE_ROUNDROBIN=m |
1902 | # CONFIG_NET_TEAM_MODE_RANDOM is not set | ||
1905 | CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m | 1903 | CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m |
1906 | CONFIG_NET_TEAM_MODE_LOADBALANCE=m | 1904 | CONFIG_NET_TEAM_MODE_LOADBALANCE=m |
1907 | CONFIG_MACVLAN=m | 1905 | CONFIG_MACVLAN=m |
@@ -1962,6 +1960,9 @@ CONFIG_ATM_SOLOS=m | |||
1962 | # | 1960 | # |
1963 | # CAIF transport drivers | 1961 | # CAIF transport drivers |
1964 | # | 1962 | # |
1963 | CONFIG_VHOST_NET=m | ||
1964 | # CONFIG_VHOST_SCSI is not set | ||
1965 | CONFIG_VHOST_RING=m | ||
1965 | 1966 | ||
1966 | # | 1967 | # |
1967 | # Distributed Switch Architecture drivers | 1968 | # Distributed Switch Architecture drivers |
@@ -1992,6 +1993,7 @@ CONFIG_ATL2=m | |||
1992 | CONFIG_ATL1=m | 1993 | CONFIG_ATL1=m |
1993 | CONFIG_ATL1E=m | 1994 | CONFIG_ATL1E=m |
1994 | CONFIG_ATL1C=m | 1995 | CONFIG_ATL1C=m |
1996 | # CONFIG_ALX is not set | ||
1995 | CONFIG_NET_CADENCE=y | 1997 | CONFIG_NET_CADENCE=y |
1996 | # CONFIG_ARM_AT91_ETHER is not set | 1998 | # CONFIG_ARM_AT91_ETHER is not set |
1997 | # CONFIG_MACB is not set | 1999 | # CONFIG_MACB is not set |
@@ -2101,6 +2103,7 @@ CONFIG_YELLOWFIN=m | |||
2101 | CONFIG_NET_VENDOR_QLOGIC=y | 2103 | CONFIG_NET_VENDOR_QLOGIC=y |
2102 | CONFIG_QLA3XXX=m | 2104 | CONFIG_QLA3XXX=m |
2103 | CONFIG_QLCNIC=m | 2105 | CONFIG_QLCNIC=m |
2106 | CONFIG_QLCNIC_SRIOV=y | ||
2104 | CONFIG_QLGE=m | 2107 | CONFIG_QLGE=m |
2105 | CONFIG_NETXEN_NIC=m | 2108 | CONFIG_NETXEN_NIC=m |
2106 | CONFIG_NET_VENDOR_REALTEK=y | 2109 | CONFIG_NET_VENDOR_REALTEK=y |
@@ -2134,8 +2137,6 @@ CONFIG_STMMAC_ETH=m | |||
2134 | # CONFIG_STMMAC_PCI is not set | 2137 | # CONFIG_STMMAC_PCI is not set |
2135 | # CONFIG_STMMAC_DEBUG_FS is not set | 2138 | # CONFIG_STMMAC_DEBUG_FS is not set |
2136 | # CONFIG_STMMAC_DA is not set | 2139 | # CONFIG_STMMAC_DA is not set |
2137 | CONFIG_STMMAC_RING=y | ||
2138 | # CONFIG_STMMAC_CHAINED is not set | ||
2139 | CONFIG_NET_VENDOR_SUN=y | 2140 | CONFIG_NET_VENDOR_SUN=y |
2140 | CONFIG_HAPPYMEAL=m | 2141 | CONFIG_HAPPYMEAL=m |
2141 | CONFIG_SUNGEM=m | 2142 | CONFIG_SUNGEM=m |
@@ -2216,6 +2217,7 @@ CONFIG_USB_CATC=m | |||
2216 | CONFIG_USB_KAWETH=m | 2217 | CONFIG_USB_KAWETH=m |
2217 | CONFIG_USB_PEGASUS=m | 2218 | CONFIG_USB_PEGASUS=m |
2218 | CONFIG_USB_RTL8150=m | 2219 | CONFIG_USB_RTL8150=m |
2220 | # CONFIG_USB_RTL8152 is not set | ||
2219 | CONFIG_USB_USBNET=m | 2221 | CONFIG_USB_USBNET=m |
2220 | CONFIG_USB_NET_AX8817X=m | 2222 | CONFIG_USB_NET_AX8817X=m |
2221 | CONFIG_USB_NET_AX88179_178A=m | 2223 | CONFIG_USB_NET_AX88179_178A=m |
@@ -2305,7 +2307,6 @@ CONFIG_B43_SDIO=y | |||
2305 | CONFIG_B43_PIO=y | 2307 | CONFIG_B43_PIO=y |
2306 | CONFIG_B43_PHY_N=y | 2308 | CONFIG_B43_PHY_N=y |
2307 | CONFIG_B43_PHY_LP=y | 2309 | CONFIG_B43_PHY_LP=y |
2308 | CONFIG_B43_PHY_HT=y | ||
2309 | CONFIG_B43_LEDS=y | 2310 | CONFIG_B43_LEDS=y |
2310 | CONFIG_B43_HWRNG=y | 2311 | CONFIG_B43_HWRNG=y |
2311 | # CONFIG_B43_DEBUG is not set | 2312 | # CONFIG_B43_DEBUG is not set |
@@ -2341,6 +2342,7 @@ CONFIG_LIBIPW=m | |||
2341 | CONFIG_IWLWIFI=m | 2342 | CONFIG_IWLWIFI=m |
2342 | CONFIG_IWLDVM=m | 2343 | CONFIG_IWLDVM=m |
2343 | CONFIG_IWLMVM=m | 2344 | CONFIG_IWLMVM=m |
2345 | CONFIG_IWLWIFI_OPMODE_MODULAR=y | ||
2344 | 2346 | ||
2345 | # | 2347 | # |
2346 | # Debugging Options | 2348 | # Debugging Options |
@@ -2392,6 +2394,7 @@ CONFIG_RT2800USB=m | |||
2392 | CONFIG_RT2800USB_RT33XX=y | 2394 | CONFIG_RT2800USB_RT33XX=y |
2393 | # CONFIG_RT2800USB_RT35XX is not set | 2395 | # CONFIG_RT2800USB_RT35XX is not set |
2394 | CONFIG_RT2800USB_RT53XX=y | 2396 | CONFIG_RT2800USB_RT53XX=y |
2397 | # CONFIG_RT2800USB_RT55XX is not set | ||
2395 | CONFIG_RT2800USB_UNKNOWN=y | 2398 | CONFIG_RT2800USB_UNKNOWN=y |
2396 | CONFIG_RT2800_LIB=m | 2399 | CONFIG_RT2800_LIB=m |
2397 | CONFIG_RT2X00_LIB_MMIO=m | 2400 | CONFIG_RT2X00_LIB_MMIO=m |
@@ -2408,6 +2411,7 @@ CONFIG_RTL8192CE=m | |||
2408 | CONFIG_RTL8192SE=m | 2411 | CONFIG_RTL8192SE=m |
2409 | CONFIG_RTL8192DE=m | 2412 | CONFIG_RTL8192DE=m |
2410 | CONFIG_RTL8723AE=m | 2413 | CONFIG_RTL8723AE=m |
2414 | # CONFIG_RTL8188EE is not set | ||
2411 | CONFIG_RTL8192CU=m | 2415 | CONFIG_RTL8192CU=m |
2412 | CONFIG_RTL8192C_COMMON=m | 2416 | CONFIG_RTL8192C_COMMON=m |
2413 | CONFIG_WL_TI=y | 2417 | CONFIG_WL_TI=y |
@@ -2670,6 +2674,7 @@ CONFIG_INPUT_GPIO_ROTARY_ENCODER=m | |||
2670 | CONFIG_INPUT_ADXL34X=m | 2674 | CONFIG_INPUT_ADXL34X=m |
2671 | CONFIG_INPUT_ADXL34X_I2C=m | 2675 | CONFIG_INPUT_ADXL34X_I2C=m |
2672 | CONFIG_INPUT_ADXL34X_SPI=m | 2676 | CONFIG_INPUT_ADXL34X_SPI=m |
2677 | # CONFIG_INPUT_IMS_PCU is not set | ||
2673 | CONFIG_INPUT_CMA3000=m | 2678 | CONFIG_INPUT_CMA3000=m |
2674 | CONFIG_INPUT_CMA3000_I2C=m | 2679 | CONFIG_INPUT_CMA3000_I2C=m |
2675 | CONFIG_INPUT_XEN_KBDDEV_FRONTEND=m | 2680 | CONFIG_INPUT_XEN_KBDDEV_FRONTEND=m |
@@ -2912,6 +2917,11 @@ CONFIG_SPI_DW_PCI=m | |||
2912 | # | 2917 | # |
2913 | CONFIG_SPI_SPIDEV=m | 2918 | CONFIG_SPI_SPIDEV=m |
2914 | CONFIG_SPI_TLE62X0=m | 2919 | CONFIG_SPI_TLE62X0=m |
2920 | |||
2921 | # | ||
2922 | # Qualcomm MSM SSBI bus support | ||
2923 | # | ||
2924 | # CONFIG_SSBI is not set | ||
2915 | # CONFIG_HSI is not set | 2925 | # CONFIG_HSI is not set |
2916 | 2926 | ||
2917 | # | 2927 | # |
@@ -3039,6 +3049,7 @@ CONFIG_SENSORS_ADM1026=m | |||
3039 | CONFIG_SENSORS_ADM1029=m | 3049 | CONFIG_SENSORS_ADM1029=m |
3040 | CONFIG_SENSORS_ADM1031=m | 3050 | CONFIG_SENSORS_ADM1031=m |
3041 | CONFIG_SENSORS_ADM9240=m | 3051 | CONFIG_SENSORS_ADM9240=m |
3052 | # CONFIG_SENSORS_ADT7310 is not set | ||
3042 | # CONFIG_SENSORS_ADT7410 is not set | 3053 | # CONFIG_SENSORS_ADT7410 is not set |
3043 | CONFIG_SENSORS_ADT7411=m | 3054 | CONFIG_SENSORS_ADT7411=m |
3044 | CONFIG_SENSORS_ADT7462=m | 3055 | CONFIG_SENSORS_ADT7462=m |
@@ -3085,6 +3096,7 @@ CONFIG_SENSORS_LTC4151=m | |||
3085 | CONFIG_SENSORS_LTC4215=m | 3096 | CONFIG_SENSORS_LTC4215=m |
3086 | CONFIG_SENSORS_LTC4245=m | 3097 | CONFIG_SENSORS_LTC4245=m |
3087 | CONFIG_SENSORS_LTC4261=m | 3098 | CONFIG_SENSORS_LTC4261=m |
3099 | # CONFIG_SENSORS_LM95234 is not set | ||
3088 | CONFIG_SENSORS_LM95241=m | 3100 | CONFIG_SENSORS_LM95241=m |
3089 | CONFIG_SENSORS_LM95245=m | 3101 | CONFIG_SENSORS_LM95245=m |
3090 | CONFIG_SENSORS_MAX1111=m | 3102 | CONFIG_SENSORS_MAX1111=m |
@@ -3097,6 +3109,7 @@ CONFIG_SENSORS_MAX6642=m | |||
3097 | CONFIG_SENSORS_MAX6650=m | 3109 | CONFIG_SENSORS_MAX6650=m |
3098 | CONFIG_SENSORS_MAX6697=m | 3110 | CONFIG_SENSORS_MAX6697=m |
3099 | CONFIG_SENSORS_MCP3021=m | 3111 | CONFIG_SENSORS_MCP3021=m |
3112 | # CONFIG_SENSORS_NCT6775 is not set | ||
3100 | CONFIG_SENSORS_NTC_THERMISTOR=m | 3113 | CONFIG_SENSORS_NTC_THERMISTOR=m |
3101 | CONFIG_SENSORS_PC87360=m | 3114 | CONFIG_SENSORS_PC87360=m |
3102 | CONFIG_SENSORS_PC87427=m | 3115 | CONFIG_SENSORS_PC87427=m |
@@ -3254,41 +3267,45 @@ CONFIG_BCMA_POSSIBLE=y | |||
3254 | # Multifunction device drivers | 3267 | # Multifunction device drivers |
3255 | # | 3268 | # |
3256 | CONFIG_MFD_CORE=m | 3269 | CONFIG_MFD_CORE=m |
3270 | CONFIG_MFD_CS5535=m | ||
3271 | # CONFIG_MFD_CROS_EC is not set | ||
3272 | # CONFIG_MFD_DA9052_SPI is not set | ||
3273 | # CONFIG_MFD_MC13XXX_SPI is not set | ||
3274 | # CONFIG_MFD_MC13XXX_I2C is not set | ||
3275 | CONFIG_HTC_PASIC3=m | ||
3276 | CONFIG_LPC_ICH=m | ||
3277 | CONFIG_LPC_SCH=m | ||
3278 | CONFIG_MFD_JANZ_CMODIO=m | ||
3279 | # CONFIG_EZX_PCAP is not set | ||
3280 | # CONFIG_MFD_VIPERBOARD is not set | ||
3281 | # CONFIG_MFD_RETU is not set | ||
3282 | CONFIG_MFD_PCF50633=m | ||
3283 | CONFIG_PCF50633_ADC=m | ||
3284 | CONFIG_PCF50633_GPIO=m | ||
3285 | CONFIG_UCB1400_CORE=m | ||
3286 | CONFIG_MFD_RDC321X=m | ||
3287 | # CONFIG_MFD_RTSX_PCI is not set | ||
3288 | # CONFIG_MFD_SI476X_CORE is not set | ||
3257 | CONFIG_MFD_SM501=m | 3289 | CONFIG_MFD_SM501=m |
3258 | # CONFIG_MFD_SM501_GPIO is not set | 3290 | # CONFIG_MFD_SM501_GPIO is not set |
3259 | # CONFIG_MFD_RTSX_PCI is not set | 3291 | CONFIG_ABX500_CORE=y |
3292 | # CONFIG_MFD_STMPE is not set | ||
3293 | # CONFIG_MFD_SYSCON is not set | ||
3260 | # CONFIG_MFD_TI_AM335X_TSCADC is not set | 3294 | # CONFIG_MFD_TI_AM335X_TSCADC is not set |
3261 | CONFIG_HTC_PASIC3=m | ||
3262 | CONFIG_UCB1400_CORE=m | ||
3263 | # CONFIG_MFD_LM3533 is not set | ||
3264 | # CONFIG_TPS6105X is not set | 3295 | # CONFIG_TPS6105X is not set |
3265 | CONFIG_TPS65010=m | 3296 | CONFIG_TPS65010=m |
3266 | CONFIG_TPS6507X=m | 3297 | CONFIG_TPS6507X=m |
3267 | # CONFIG_MFD_TPS65217 is not set | 3298 | # CONFIG_MFD_TPS65217 is not set |
3299 | # CONFIG_MFD_TPS65912 is not set | ||
3268 | # CONFIG_MFD_TPS65912_SPI is not set | 3300 | # CONFIG_MFD_TPS65912_SPI is not set |
3269 | # CONFIG_MFD_STMPE is not set | 3301 | CONFIG_MFD_WL1273_CORE=m |
3302 | # CONFIG_MFD_LM3533 is not set | ||
3303 | CONFIG_MFD_TIMBERDALE=m | ||
3270 | # CONFIG_MFD_TMIO is not set | 3304 | # CONFIG_MFD_TMIO is not set |
3271 | # CONFIG_MFD_DA9052_SPI is not set | 3305 | CONFIG_MFD_VX855=m |
3272 | # CONFIG_MFD_ARIZONA_I2C is not set | 3306 | # CONFIG_MFD_ARIZONA_I2C is not set |
3273 | # CONFIG_MFD_ARIZONA_SPI is not set | 3307 | # CONFIG_MFD_ARIZONA_SPI is not set |
3274 | # CONFIG_MFD_WM831X_SPI is not set | 3308 | # CONFIG_MFD_WM831X_SPI is not set |
3275 | CONFIG_MFD_PCF50633=m | ||
3276 | CONFIG_PCF50633_ADC=m | ||
3277 | CONFIG_PCF50633_GPIO=m | ||
3278 | # CONFIG_MFD_MC13XXX_SPI is not set | ||
3279 | # CONFIG_MFD_MC13XXX_I2C is not set | ||
3280 | CONFIG_ABX500_CORE=y | ||
3281 | # CONFIG_EZX_PCAP is not set | ||
3282 | CONFIG_MFD_CS5535=m | ||
3283 | CONFIG_MFD_TIMBERDALE=m | ||
3284 | CONFIG_LPC_SCH=m | ||
3285 | CONFIG_LPC_ICH=m | ||
3286 | CONFIG_MFD_RDC321X=m | ||
3287 | CONFIG_MFD_JANZ_CMODIO=m | ||
3288 | CONFIG_MFD_VX855=m | ||
3289 | CONFIG_MFD_WL1273_CORE=m | ||
3290 | # CONFIG_MFD_VIPERBOARD is not set | ||
3291 | # CONFIG_MFD_RETU is not set | ||
3292 | # CONFIG_REGULATOR is not set | 3309 | # CONFIG_REGULATOR is not set |
3293 | CONFIG_MEDIA_SUPPORT=m | 3310 | CONFIG_MEDIA_SUPPORT=m |
3294 | 3311 | ||
@@ -3455,7 +3472,6 @@ CONFIG_DVB_USB_FRIIO=m | |||
3455 | CONFIG_DVB_USB_AZ6027=m | 3472 | CONFIG_DVB_USB_AZ6027=m |
3456 | CONFIG_DVB_USB_TECHNISAT_USB2=m | 3473 | CONFIG_DVB_USB_TECHNISAT_USB2=m |
3457 | CONFIG_DVB_USB_V2=m | 3474 | CONFIG_DVB_USB_V2=m |
3458 | CONFIG_DVB_USB_CYPRESS_FIRMWARE=m | ||
3459 | CONFIG_DVB_USB_AF9015=m | 3475 | CONFIG_DVB_USB_AF9015=m |
3460 | CONFIG_DVB_USB_AF9035=m | 3476 | CONFIG_DVB_USB_AF9035=m |
3461 | CONFIG_DVB_USB_ANYSEE=m | 3477 | CONFIG_DVB_USB_ANYSEE=m |
@@ -3553,6 +3569,7 @@ CONFIG_DVB_FIREDTV_INPUT=y | |||
3553 | CONFIG_VIDEO_CX2341X=m | 3569 | CONFIG_VIDEO_CX2341X=m |
3554 | CONFIG_VIDEO_BTCX=m | 3570 | CONFIG_VIDEO_BTCX=m |
3555 | CONFIG_VIDEO_TVEEPROM=m | 3571 | CONFIG_VIDEO_TVEEPROM=m |
3572 | CONFIG_CYPRESS_FIRMWARE=m | ||
3556 | CONFIG_DVB_B2C2_FLEXCOP=m | 3573 | CONFIG_DVB_B2C2_FLEXCOP=m |
3557 | CONFIG_VIDEO_SAA7146=m | 3574 | CONFIG_VIDEO_SAA7146=m |
3558 | CONFIG_VIDEO_SAA7146_VV=m | 3575 | CONFIG_VIDEO_SAA7146_VV=m |
@@ -3561,6 +3578,7 @@ CONFIG_VIDEO_SAA7146_VV=m | |||
3561 | # Media ancillary drivers (tuners, sensors, i2c, frontends) | 3578 | # Media ancillary drivers (tuners, sensors, i2c, frontends) |
3562 | # | 3579 | # |
3563 | CONFIG_MEDIA_SUBDRV_AUTOSELECT=y | 3580 | CONFIG_MEDIA_SUBDRV_AUTOSELECT=y |
3581 | CONFIG_MEDIA_ATTACH=y | ||
3564 | CONFIG_VIDEO_IR_I2C=m | 3582 | CONFIG_VIDEO_IR_I2C=m |
3565 | 3583 | ||
3566 | # | 3584 | # |
@@ -3612,7 +3630,6 @@ CONFIG_VIDEO_MT9V011=m | |||
3612 | # | 3630 | # |
3613 | # Sensors used on soc_camera driver | 3631 | # Sensors used on soc_camera driver |
3614 | # | 3632 | # |
3615 | CONFIG_MEDIA_ATTACH=y | ||
3616 | CONFIG_MEDIA_TUNER_SIMPLE=m | 3633 | CONFIG_MEDIA_TUNER_SIMPLE=m |
3617 | CONFIG_MEDIA_TUNER_TDA8290=m | 3634 | CONFIG_MEDIA_TUNER_TDA8290=m |
3618 | CONFIG_MEDIA_TUNER_TDA827X=m | 3635 | CONFIG_MEDIA_TUNER_TDA827X=m |
@@ -3638,6 +3655,8 @@ CONFIG_MEDIA_TUNER_TDA18212=m | |||
3638 | CONFIG_MEDIA_TUNER_E4000=m | 3655 | CONFIG_MEDIA_TUNER_E4000=m |
3639 | CONFIG_MEDIA_TUNER_FC2580=m | 3656 | CONFIG_MEDIA_TUNER_FC2580=m |
3640 | CONFIG_MEDIA_TUNER_TUA9001=m | 3657 | CONFIG_MEDIA_TUNER_TUA9001=m |
3658 | CONFIG_MEDIA_TUNER_IT913X=m | ||
3659 | CONFIG_MEDIA_TUNER_R820T=m | ||
3641 | 3660 | ||
3642 | # | 3661 | # |
3643 | # Multistandard (satellite) frontends | 3662 | # Multistandard (satellite) frontends |
@@ -3808,6 +3827,7 @@ CONFIG_DRM_GMA3600=y | |||
3808 | CONFIG_DRM_AST=m | 3827 | CONFIG_DRM_AST=m |
3809 | CONFIG_DRM_MGAG200=m | 3828 | CONFIG_DRM_MGAG200=m |
3810 | CONFIG_DRM_CIRRUS_QEMU=m | 3829 | CONFIG_DRM_CIRRUS_QEMU=m |
3830 | # CONFIG_DRM_QXL is not set | ||
3811 | CONFIG_VGASTATE=m | 3831 | CONFIG_VGASTATE=m |
3812 | CONFIG_VIDEO_OUTPUT_CONTROL=m | 3832 | CONFIG_VIDEO_OUTPUT_CONTROL=m |
3813 | CONFIG_HDMI=y | 3833 | CONFIG_HDMI=y |
@@ -3824,7 +3844,6 @@ CONFIG_FB_SYS_COPYAREA=m | |||
3824 | CONFIG_FB_SYS_IMAGEBLIT=m | 3844 | CONFIG_FB_SYS_IMAGEBLIT=m |
3825 | # CONFIG_FB_FOREIGN_ENDIAN is not set | 3845 | # CONFIG_FB_FOREIGN_ENDIAN is not set |
3826 | CONFIG_FB_SYS_FOPS=m | 3846 | CONFIG_FB_SYS_FOPS=m |
3827 | # CONFIG_FB_WMT_GE_ROPS is not set | ||
3828 | CONFIG_FB_DEFERRED_IO=y | 3847 | CONFIG_FB_DEFERRED_IO=y |
3829 | CONFIG_FB_HECUBA=m | 3848 | CONFIG_FB_HECUBA=m |
3830 | CONFIG_FB_SVGALIB=m | 3849 | CONFIG_FB_SVGALIB=m |
@@ -3920,12 +3939,14 @@ CONFIG_FB_MB862XX_PCI_GDC=y | |||
3920 | CONFIG_FB_MB862XX_I2C=y | 3939 | CONFIG_FB_MB862XX_I2C=y |
3921 | CONFIG_FB_BROADSHEET=m | 3940 | CONFIG_FB_BROADSHEET=m |
3922 | # CONFIG_FB_AUO_K190X is not set | 3941 | # CONFIG_FB_AUO_K190X is not set |
3942 | # CONFIG_FB_HYPERV is not set | ||
3923 | # CONFIG_EXYNOS_VIDEO is not set | 3943 | # CONFIG_EXYNOS_VIDEO is not set |
3924 | CONFIG_BACKLIGHT_LCD_SUPPORT=y | 3944 | CONFIG_BACKLIGHT_LCD_SUPPORT=y |
3925 | CONFIG_LCD_CLASS_DEVICE=m | 3945 | CONFIG_LCD_CLASS_DEVICE=m |
3926 | CONFIG_LCD_L4F00242T03=m | 3946 | CONFIG_LCD_L4F00242T03=m |
3927 | CONFIG_LCD_LMS283GF05=m | 3947 | CONFIG_LCD_LMS283GF05=m |
3928 | CONFIG_LCD_LTV350QV=m | 3948 | CONFIG_LCD_LTV350QV=m |
3949 | # CONFIG_LCD_ILI922X is not set | ||
3929 | CONFIG_LCD_ILI9320=m | 3950 | CONFIG_LCD_ILI9320=m |
3930 | CONFIG_LCD_TDO24M=m | 3951 | CONFIG_LCD_TDO24M=m |
3931 | CONFIG_LCD_VGG2432A4=m | 3952 | CONFIG_LCD_VGG2432A4=m |
@@ -4145,6 +4166,7 @@ CONFIG_SND_SOC_AK4535=m | |||
4145 | CONFIG_SND_SOC_AK4641=m | 4166 | CONFIG_SND_SOC_AK4641=m |
4146 | CONFIG_SND_SOC_AK4642=m | 4167 | CONFIG_SND_SOC_AK4642=m |
4147 | CONFIG_SND_SOC_AK4671=m | 4168 | CONFIG_SND_SOC_AK4671=m |
4169 | CONFIG_SND_SOC_AK5386=m | ||
4148 | CONFIG_SND_SOC_ALC5623=m | 4170 | CONFIG_SND_SOC_ALC5623=m |
4149 | CONFIG_SND_SOC_ALC5632=m | 4171 | CONFIG_SND_SOC_ALC5632=m |
4150 | CONFIG_SND_SOC_CS42L51=m | 4172 | CONFIG_SND_SOC_CS42L51=m |
@@ -4173,6 +4195,7 @@ CONFIG_SND_SOC_SPDIF=m | |||
4173 | CONFIG_SND_SOC_SSM2602=m | 4195 | CONFIG_SND_SOC_SSM2602=m |
4174 | CONFIG_SND_SOC_STA32X=m | 4196 | CONFIG_SND_SOC_STA32X=m |
4175 | CONFIG_SND_SOC_STA529=m | 4197 | CONFIG_SND_SOC_STA529=m |
4198 | CONFIG_SND_SOC_TAS5086=m | ||
4176 | CONFIG_SND_SOC_TLV320AIC23=m | 4199 | CONFIG_SND_SOC_TLV320AIC23=m |
4177 | CONFIG_SND_SOC_TLV320AIC26=m | 4200 | CONFIG_SND_SOC_TLV320AIC26=m |
4178 | CONFIG_SND_SOC_TLV320AIC32X4=m | 4201 | CONFIG_SND_SOC_TLV320AIC32X4=m |
@@ -4245,6 +4268,7 @@ CONFIG_HID_GENERIC=m | |||
4245 | # CONFIG_HID_A4TECH is not set | 4268 | # CONFIG_HID_A4TECH is not set |
4246 | # CONFIG_HID_ACRUX is not set | 4269 | # CONFIG_HID_ACRUX is not set |
4247 | CONFIG_HID_APPLE=m | 4270 | CONFIG_HID_APPLE=m |
4271 | # CONFIG_HID_APPLEIR is not set | ||
4248 | # CONFIG_HID_AUREAL is not set | 4272 | # CONFIG_HID_AUREAL is not set |
4249 | # CONFIG_HID_BELKIN is not set | 4273 | # CONFIG_HID_BELKIN is not set |
4250 | # CONFIG_HID_CHERRY is not set | 4274 | # CONFIG_HID_CHERRY is not set |
@@ -4339,10 +4363,10 @@ CONFIG_USB_ANNOUNCE_NEW_DEVICES=y | |||
4339 | # | 4363 | # |
4340 | # Miscellaneous USB options | 4364 | # Miscellaneous USB options |
4341 | # | 4365 | # |
4366 | CONFIG_USB_DEFAULT_PERSIST=y | ||
4342 | # CONFIG_USB_DYNAMIC_MINORS is not set | 4367 | # CONFIG_USB_DYNAMIC_MINORS is not set |
4343 | # CONFIG_USB_OTG_WHITELIST is not set | 4368 | # CONFIG_USB_OTG_WHITELIST is not set |
4344 | # CONFIG_USB_OTG_BLACKLIST_HUB is not set | 4369 | # CONFIG_USB_OTG_BLACKLIST_HUB is not set |
4345 | # CONFIG_USB_DWC3 is not set | ||
4346 | CONFIG_USB_MON=m | 4370 | CONFIG_USB_MON=m |
4347 | CONFIG_USB_WUSB=m | 4371 | CONFIG_USB_WUSB=m |
4348 | CONFIG_USB_WUSB_CBAF=m | 4372 | CONFIG_USB_WUSB_CBAF=m |
@@ -4358,6 +4382,7 @@ CONFIG_USB_EHCI_HCD=m | |||
4358 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | 4382 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set |
4359 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 4383 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
4360 | CONFIG_USB_EHCI_PCI=m | 4384 | CONFIG_USB_EHCI_PCI=m |
4385 | CONFIG_USB_EHCI_HCD_PLATFORM=m | ||
4361 | CONFIG_USB_OXU210HP_HCD=m | 4386 | CONFIG_USB_OXU210HP_HCD=m |
4362 | CONFIG_USB_ISP116X_HCD=m | 4387 | CONFIG_USB_ISP116X_HCD=m |
4363 | CONFIG_USB_ISP1760_HCD=m | 4388 | CONFIG_USB_ISP1760_HCD=m |
@@ -4365,7 +4390,6 @@ CONFIG_USB_ISP1362_HCD=m | |||
4365 | CONFIG_USB_OHCI_HCD=m | 4390 | CONFIG_USB_OHCI_HCD=m |
4366 | CONFIG_USB_OHCI_HCD_SSB=y | 4391 | CONFIG_USB_OHCI_HCD_SSB=y |
4367 | CONFIG_USB_OHCI_HCD_PLATFORM=y | 4392 | CONFIG_USB_OHCI_HCD_PLATFORM=y |
4368 | CONFIG_USB_EHCI_HCD_PLATFORM=m | ||
4369 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set | 4393 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set |
4370 | # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set | 4394 | # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set |
4371 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y | 4395 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y |
@@ -4378,7 +4402,6 @@ CONFIG_USB_R8A66597_HCD=m | |||
4378 | CONFIG_USB_WHCI_HCD=m | 4402 | CONFIG_USB_WHCI_HCD=m |
4379 | CONFIG_USB_HWA_HCD=m | 4403 | CONFIG_USB_HWA_HCD=m |
4380 | CONFIG_USB_HCD_SSB=m | 4404 | CONFIG_USB_HCD_SSB=m |
4381 | # CONFIG_USB_CHIPIDEA is not set | ||
4382 | 4405 | ||
4383 | # | 4406 | # |
4384 | # USB Device Class drivers | 4407 | # USB Device Class drivers |
@@ -4416,6 +4439,8 @@ CONFIG_USB_STORAGE_ENE_UB6250=m | |||
4416 | # | 4439 | # |
4417 | # CONFIG_USB_MDC800 is not set | 4440 | # CONFIG_USB_MDC800 is not set |
4418 | # CONFIG_USB_MICROTEK is not set | 4441 | # CONFIG_USB_MICROTEK is not set |
4442 | # CONFIG_USB_DWC3 is not set | ||
4443 | # CONFIG_USB_CHIPIDEA is not set | ||
4419 | 4444 | ||
4420 | # | 4445 | # |
4421 | # USB port drivers | 4446 | # USB port drivers |
@@ -4475,6 +4500,7 @@ CONFIG_USB_SERIAL_OPTICON=m | |||
4475 | CONFIG_USB_SERIAL_VIVOPAY_SERIAL=m | 4500 | CONFIG_USB_SERIAL_VIVOPAY_SERIAL=m |
4476 | CONFIG_USB_SERIAL_XSENS_MT=m | 4501 | CONFIG_USB_SERIAL_XSENS_MT=m |
4477 | CONFIG_USB_SERIAL_ZIO=m | 4502 | CONFIG_USB_SERIAL_ZIO=m |
4503 | # CONFIG_USB_SERIAL_WISHBONE is not set | ||
4478 | # CONFIG_USB_SERIAL_ZTE is not set | 4504 | # CONFIG_USB_SERIAL_ZTE is not set |
4479 | # CONFIG_USB_SERIAL_SSU100 is not set | 4505 | # CONFIG_USB_SERIAL_SSU100 is not set |
4480 | CONFIG_USB_SERIAL_QT2=m | 4506 | CONFIG_USB_SERIAL_QT2=m |
@@ -4506,27 +4532,22 @@ CONFIG_USB_ISIGHTFW=m | |||
4506 | # CONFIG_USB_YUREX is not set | 4532 | # CONFIG_USB_YUREX is not set |
4507 | CONFIG_USB_EZUSB_FX2=m | 4533 | CONFIG_USB_EZUSB_FX2=m |
4508 | CONFIG_USB_HSIC_USB3503=m | 4534 | CONFIG_USB_HSIC_USB3503=m |
4509 | |||
4510 | # | ||
4511 | # USB Physical Layer drivers | ||
4512 | # | ||
4513 | # CONFIG_OMAP_USB3 is not set | ||
4514 | # CONFIG_OMAP_CONTROL_USB is not set | ||
4515 | # CONFIG_USB_ISP1301 is not set | ||
4516 | # CONFIG_USB_RCAR_PHY is not set | ||
4517 | CONFIG_USB_ATM=m | 4535 | CONFIG_USB_ATM=m |
4518 | CONFIG_USB_SPEEDTOUCH=m | 4536 | CONFIG_USB_SPEEDTOUCH=m |
4519 | CONFIG_USB_CXACRU=m | 4537 | CONFIG_USB_CXACRU=m |
4520 | CONFIG_USB_UEAGLEATM=m | 4538 | CONFIG_USB_UEAGLEATM=m |
4521 | CONFIG_USB_XUSBATM=m | 4539 | CONFIG_USB_XUSBATM=m |
4522 | # CONFIG_USB_GADGET is not set | 4540 | CONFIG_USB_PHY=y |
4523 | |||
4524 | # | ||
4525 | # OTG and related infrastructure | ||
4526 | # | ||
4527 | CONFIG_USB_OTG_UTILS=y | ||
4528 | CONFIG_USB_GPIO_VBUS=m | ||
4529 | CONFIG_NOP_USB_XCEIV=m | 4541 | CONFIG_NOP_USB_XCEIV=m |
4542 | # CONFIG_OMAP_CONTROL_USB is not set | ||
4543 | # CONFIG_OMAP_USB3 is not set | ||
4544 | # CONFIG_SAMSUNG_USBPHY is not set | ||
4545 | # CONFIG_SAMSUNG_USB2PHY is not set | ||
4546 | # CONFIG_SAMSUNG_USB3PHY is not set | ||
4547 | CONFIG_USB_GPIO_VBUS=m | ||
4548 | # CONFIG_USB_ISP1301 is not set | ||
4549 | # CONFIG_USB_RCAR_PHY is not set | ||
4550 | # CONFIG_USB_GADGET is not set | ||
4530 | CONFIG_UWB=m | 4551 | CONFIG_UWB=m |
4531 | CONFIG_UWB_HWA=m | 4552 | CONFIG_UWB_HWA=m |
4532 | CONFIG_UWB_WHCI=m | 4553 | CONFIG_UWB_WHCI=m |
@@ -4590,6 +4611,7 @@ CONFIG_LEDS_GPIO=m | |||
4590 | CONFIG_LEDS_LP3944=m | 4611 | CONFIG_LEDS_LP3944=m |
4591 | # CONFIG_LEDS_LP5521 is not set | 4612 | # CONFIG_LEDS_LP5521 is not set |
4592 | # CONFIG_LEDS_LP5523 is not set | 4613 | # CONFIG_LEDS_LP5523 is not set |
4614 | # CONFIG_LEDS_LP5562 is not set | ||
4593 | CONFIG_LEDS_CLEVO_MAIL=m | 4615 | CONFIG_LEDS_CLEVO_MAIL=m |
4594 | CONFIG_LEDS_PCA955X=m | 4616 | CONFIG_LEDS_PCA955X=m |
4595 | # CONFIG_LEDS_PCA9633 is not set | 4617 | # CONFIG_LEDS_PCA9633 is not set |
@@ -4603,11 +4625,11 @@ CONFIG_LEDS_DELL_NETBOOKS=m | |||
4603 | # CONFIG_LEDS_LM355x is not set | 4625 | # CONFIG_LEDS_LM355x is not set |
4604 | # CONFIG_LEDS_OT200 is not set | 4626 | # CONFIG_LEDS_OT200 is not set |
4605 | CONFIG_LEDS_BLINKM=m | 4627 | CONFIG_LEDS_BLINKM=m |
4606 | CONFIG_LEDS_TRIGGERS=y | ||
4607 | 4628 | ||
4608 | # | 4629 | # |
4609 | # LED Triggers | 4630 | # LED Triggers |
4610 | # | 4631 | # |
4632 | CONFIG_LEDS_TRIGGERS=y | ||
4611 | CONFIG_LEDS_TRIGGER_TIMER=m | 4633 | CONFIG_LEDS_TRIGGER_TIMER=m |
4612 | CONFIG_LEDS_TRIGGER_ONESHOT=m | 4634 | CONFIG_LEDS_TRIGGER_ONESHOT=m |
4613 | CONFIG_LEDS_TRIGGER_HEARTBEAT=m | 4635 | CONFIG_LEDS_TRIGGER_HEARTBEAT=m |
@@ -4620,6 +4642,7 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m | |||
4620 | # iptables trigger is under Netfilter config (LED target) | 4642 | # iptables trigger is under Netfilter config (LED target) |
4621 | # | 4643 | # |
4622 | CONFIG_LEDS_TRIGGER_TRANSIENT=m | 4644 | CONFIG_LEDS_TRIGGER_TRANSIENT=m |
4645 | # CONFIG_LEDS_TRIGGER_CAMERA is not set | ||
4623 | CONFIG_ACCESSIBILITY=y | 4646 | CONFIG_ACCESSIBILITY=y |
4624 | # CONFIG_A11Y_BRAILLE_CONSOLE is not set | 4647 | # CONFIG_A11Y_BRAILLE_CONSOLE is not set |
4625 | CONFIG_INFINIBAND=m | 4648 | CONFIG_INFINIBAND=m |
@@ -4646,6 +4669,7 @@ CONFIG_INFINIBAND_IPOIB=m | |||
4646 | CONFIG_INFINIBAND_SRP=m | 4669 | CONFIG_INFINIBAND_SRP=m |
4647 | CONFIG_INFINIBAND_SRPT=m | 4670 | CONFIG_INFINIBAND_SRPT=m |
4648 | CONFIG_INFINIBAND_ISER=m | 4671 | CONFIG_INFINIBAND_ISER=m |
4672 | # CONFIG_INFINIBAND_ISERT is not set | ||
4649 | # CONFIG_EDAC is not set | 4673 | # CONFIG_EDAC is not set |
4650 | CONFIG_RTC_LIB=y | 4674 | CONFIG_RTC_LIB=y |
4651 | CONFIG_RTC_CLASS=y | 4675 | CONFIG_RTC_CLASS=y |
@@ -4741,6 +4765,7 @@ CONFIG_INTEL_IOATDMA=m | |||
4741 | CONFIG_TIMB_DMA=m | 4765 | CONFIG_TIMB_DMA=m |
4742 | CONFIG_PCH_DMA=m | 4766 | CONFIG_PCH_DMA=m |
4743 | CONFIG_DMA_ENGINE=y | 4767 | CONFIG_DMA_ENGINE=y |
4768 | CONFIG_DMA_ACPI=y | ||
4744 | 4769 | ||
4745 | # | 4770 | # |
4746 | # DMA Clients | 4771 | # DMA Clients |
@@ -4768,6 +4793,7 @@ CONFIG_VFIO_IOMMU_TYPE1=m | |||
4768 | CONFIG_VFIO=m | 4793 | CONFIG_VFIO=m |
4769 | CONFIG_VFIO_PCI=m | 4794 | CONFIG_VFIO_PCI=m |
4770 | CONFIG_VFIO_PCI_VGA=y | 4795 | CONFIG_VFIO_PCI_VGA=y |
4796 | CONFIG_VIRT_DRIVERS=y | ||
4771 | CONFIG_VIRTIO=m | 4797 | CONFIG_VIRTIO=m |
4772 | 4798 | ||
4773 | # | 4799 | # |
@@ -4871,6 +4897,7 @@ CONFIG_NET_VENDOR_SILICOM=y | |||
4871 | # CONFIG_CED1401 is not set | 4897 | # CONFIG_CED1401 is not set |
4872 | # CONFIG_DGRP is not set | 4898 | # CONFIG_DGRP is not set |
4873 | # CONFIG_FIREWIRE_SERIAL is not set | 4899 | # CONFIG_FIREWIRE_SERIAL is not set |
4900 | # CONFIG_USB_DWC2 is not set | ||
4874 | CONFIG_X86_PLATFORM_DEVICES=y | 4901 | CONFIG_X86_PLATFORM_DEVICES=y |
4875 | CONFIG_ACER_WMI=m | 4902 | CONFIG_ACER_WMI=m |
4876 | CONFIG_ACERHDF=m | 4903 | CONFIG_ACERHDF=m |
@@ -4918,6 +4945,7 @@ CONFIG_MXM_WMI=m | |||
4918 | CONFIG_INTEL_OAKTRAIL=m | 4945 | CONFIG_INTEL_OAKTRAIL=m |
4919 | # CONFIG_SAMSUNG_Q10 is not set | 4946 | # CONFIG_SAMSUNG_Q10 is not set |
4920 | # CONFIG_APPLE_GMUX is not set | 4947 | # CONFIG_APPLE_GMUX is not set |
4948 | # CONFIG_PVPANIC is not set | ||
4921 | 4949 | ||
4922 | # | 4950 | # |
4923 | # Hardware Spinlock drivers | 4951 | # Hardware Spinlock drivers |
@@ -4946,7 +4974,6 @@ CONFIG_STE_MODEM_RPROC=m | |||
4946 | # | 4974 | # |
4947 | # Rpmsg drivers | 4975 | # Rpmsg drivers |
4948 | # | 4976 | # |
4949 | CONFIG_VIRT_DRIVERS=y | ||
4950 | # CONFIG_PM_DEVFREQ is not set | 4977 | # CONFIG_PM_DEVFREQ is not set |
4951 | CONFIG_EXTCON=m | 4978 | CONFIG_EXTCON=m |
4952 | 4979 | ||
@@ -4960,6 +4987,7 @@ CONFIG_NTB=m | |||
4960 | # CONFIG_VME_BUS is not set | 4987 | # CONFIG_VME_BUS is not set |
4961 | CONFIG_PWM=y | 4988 | CONFIG_PWM=y |
4962 | # CONFIG_IPACK_BUS is not set | 4989 | # CONFIG_IPACK_BUS is not set |
4990 | # CONFIG_RESET_CONTROLLER is not set | ||
4963 | 4991 | ||
4964 | # | 4992 | # |
4965 | # Firmware Drivers | 4993 | # Firmware Drivers |
@@ -5013,6 +5041,7 @@ CONFIG_XFS_FS=m | |||
5013 | CONFIG_XFS_QUOTA=y | 5041 | CONFIG_XFS_QUOTA=y |
5014 | CONFIG_XFS_POSIX_ACL=y | 5042 | CONFIG_XFS_POSIX_ACL=y |
5015 | CONFIG_XFS_RT=y | 5043 | CONFIG_XFS_RT=y |
5044 | # CONFIG_XFS_WARN is not set | ||
5016 | # CONFIG_XFS_DEBUG is not set | 5045 | # CONFIG_XFS_DEBUG is not set |
5017 | CONFIG_GFS2_FS=m | 5046 | CONFIG_GFS2_FS=m |
5018 | CONFIG_GFS2_FS_LOCKING_DLM=y | 5047 | CONFIG_GFS2_FS_LOCKING_DLM=y |
@@ -5025,6 +5054,8 @@ CONFIG_OCFS2_DEBUG_MASKLOG=y | |||
5025 | CONFIG_BTRFS_FS=m | 5054 | CONFIG_BTRFS_FS=m |
5026 | CONFIG_BTRFS_FS_POSIX_ACL=y | 5055 | CONFIG_BTRFS_FS_POSIX_ACL=y |
5027 | # CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set | 5056 | # CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set |
5057 | # CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set | ||
5058 | # CONFIG_BTRFS_DEBUG is not set | ||
5028 | CONFIG_NILFS2_FS=m | 5059 | CONFIG_NILFS2_FS=m |
5029 | CONFIG_FS_POSIX_ACL=y | 5060 | CONFIG_FS_POSIX_ACL=y |
5030 | CONFIG_EXPORTFS=m | 5061 | CONFIG_EXPORTFS=m |
@@ -5334,6 +5365,8 @@ CONFIG_RCU_CPU_STALL_TIMEOUT=60 | |||
5334 | # CONFIG_NOTIFIER_ERROR_INJECTION is not set | 5365 | # CONFIG_NOTIFIER_ERROR_INJECTION is not set |
5335 | # CONFIG_FAULT_INJECTION is not set | 5366 | # CONFIG_FAULT_INJECTION is not set |
5336 | CONFIG_LATENCYTOP=y | 5367 | CONFIG_LATENCYTOP=y |
5368 | CONFIG_ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS=y | ||
5369 | # CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set | ||
5337 | # CONFIG_DEBUG_PAGEALLOC is not set | 5370 | # CONFIG_DEBUG_PAGEALLOC is not set |
5338 | CONFIG_USER_STACKTRACE_SUPPORT=y | 5371 | CONFIG_USER_STACKTRACE_SUPPORT=y |
5339 | CONFIG_HAVE_FUNCTION_TRACER=y | 5372 | CONFIG_HAVE_FUNCTION_TRACER=y |
@@ -5361,6 +5394,7 @@ CONFIG_TRACING_SUPPORT=y | |||
5361 | CONFIG_HAVE_ARCH_KGDB=y | 5394 | CONFIG_HAVE_ARCH_KGDB=y |
5362 | # CONFIG_KGDB is not set | 5395 | # CONFIG_KGDB is not set |
5363 | CONFIG_HAVE_ARCH_KMEMCHECK=y | 5396 | CONFIG_HAVE_ARCH_KMEMCHECK=y |
5397 | # CONFIG_TEST_STRING_HELPERS is not set | ||
5364 | CONFIG_TEST_KSTRTOX=m | 5398 | CONFIG_TEST_KSTRTOX=m |
5365 | CONFIG_STRICT_DEVMEM=y | 5399 | CONFIG_STRICT_DEVMEM=y |
5366 | # CONFIG_X86_VERBOSE_BOOTUP is not set | 5400 | # CONFIG_X86_VERBOSE_BOOTUP is not set |
@@ -5385,7 +5419,6 @@ CONFIG_DEFAULT_IO_DELAY_TYPE=0 | |||
5385 | CONFIG_DEBUG_BOOT_PARAMS=y | 5419 | CONFIG_DEBUG_BOOT_PARAMS=y |
5386 | # CONFIG_CPA_DEBUG is not set | 5420 | # CONFIG_CPA_DEBUG is not set |
5387 | # CONFIG_OPTIMIZE_INLINING is not set | 5421 | # CONFIG_OPTIMIZE_INLINING is not set |
5388 | # CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set | ||
5389 | CONFIG_DEBUG_NMI_SELFTEST=y | 5422 | CONFIG_DEBUG_NMI_SELFTEST=y |
5390 | 5423 | ||
5391 | # | 5424 | # |
@@ -5519,7 +5552,6 @@ CONFIG_GRKERNSEC_FORKFAIL=y | |||
5519 | CONFIG_GRKERNSEC_TIME=y | 5552 | CONFIG_GRKERNSEC_TIME=y |
5520 | CONFIG_GRKERNSEC_PROC_IPADDR=y | 5553 | CONFIG_GRKERNSEC_PROC_IPADDR=y |
5521 | # CONFIG_GRKERNSEC_RWXMAP_LOG is not set | 5554 | # CONFIG_GRKERNSEC_RWXMAP_LOG is not set |
5522 | # CONFIG_GRKERNSEC_AUDIT_TEXTREL is not set | ||
5523 | 5555 | ||
5524 | # | 5556 | # |
5525 | # Executable Protections | 5557 | # Executable Protections |
@@ -5565,8 +5597,6 @@ CONFIG_ASYNC_MEMCPY=m | |||
5565 | CONFIG_ASYNC_XOR=m | 5597 | CONFIG_ASYNC_XOR=m |
5566 | CONFIG_ASYNC_PQ=m | 5598 | CONFIG_ASYNC_PQ=m |
5567 | CONFIG_ASYNC_RAID6_RECOV=m | 5599 | CONFIG_ASYNC_RAID6_RECOV=m |
5568 | CONFIG_ASYNC_TX_DISABLE_PQ_VAL_DMA=y | ||
5569 | CONFIG_ASYNC_TX_DISABLE_XOR_VAL_DMA=y | ||
5570 | CONFIG_CRYPTO=y | 5600 | CONFIG_CRYPTO=y |
5571 | 5601 | ||
5572 | # | 5602 | # |
@@ -5619,6 +5649,7 @@ CONFIG_CRYPTO_XTS=m | |||
5619 | # | 5649 | # |
5620 | # Hash modes | 5650 | # Hash modes |
5621 | # | 5651 | # |
5652 | # CONFIG_CRYPTO_CMAC is not set | ||
5622 | CONFIG_CRYPTO_HMAC=m | 5653 | CONFIG_CRYPTO_HMAC=m |
5623 | CONFIG_CRYPTO_XCBC=m | 5654 | CONFIG_CRYPTO_XCBC=m |
5624 | CONFIG_CRYPTO_VMAC=m | 5655 | CONFIG_CRYPTO_VMAC=m |
@@ -5627,7 +5658,6 @@ CONFIG_CRYPTO_VMAC=m | |||
5627 | # Digest | 5658 | # Digest |
5628 | # | 5659 | # |
5629 | CONFIG_CRYPTO_CRC32C=m | 5660 | CONFIG_CRYPTO_CRC32C=m |
5630 | CONFIG_CRYPTO_CRC32C_X86_64=y | ||
5631 | CONFIG_CRYPTO_CRC32C_INTEL=m | 5661 | CONFIG_CRYPTO_CRC32C_INTEL=m |
5632 | CONFIG_CRYPTO_CRC32=m | 5662 | CONFIG_CRYPTO_CRC32=m |
5633 | CONFIG_CRYPTO_CRC32_PCLMUL=m | 5663 | CONFIG_CRYPTO_CRC32_PCLMUL=m |
@@ -5641,6 +5671,8 @@ CONFIG_CRYPTO_RMD256=m | |||
5641 | CONFIG_CRYPTO_RMD320=m | 5671 | CONFIG_CRYPTO_RMD320=m |
5642 | CONFIG_CRYPTO_SHA1=m | 5672 | CONFIG_CRYPTO_SHA1=m |
5643 | CONFIG_CRYPTO_SHA1_SSSE3=m | 5673 | CONFIG_CRYPTO_SHA1_SSSE3=m |
5674 | CONFIG_CRYPTO_SHA256_SSSE3=m | ||
5675 | # CONFIG_CRYPTO_SHA512_SSSE3 is not set | ||
5644 | CONFIG_CRYPTO_SHA256=y | 5676 | CONFIG_CRYPTO_SHA256=y |
5645 | CONFIG_CRYPTO_SHA512=m | 5677 | CONFIG_CRYPTO_SHA512=m |
5646 | CONFIG_CRYPTO_TGR192=m | 5678 | CONFIG_CRYPTO_TGR192=m |
@@ -5660,7 +5692,8 @@ CONFIG_CRYPTO_BLOWFISH_COMMON=m | |||
5660 | CONFIG_CRYPTO_BLOWFISH_X86_64=m | 5692 | CONFIG_CRYPTO_BLOWFISH_X86_64=m |
5661 | CONFIG_CRYPTO_CAMELLIA=m | 5693 | CONFIG_CRYPTO_CAMELLIA=m |
5662 | CONFIG_CRYPTO_CAMELLIA_X86_64=m | 5694 | CONFIG_CRYPTO_CAMELLIA_X86_64=m |
5663 | # CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64 is not set | 5695 | CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64=m |
5696 | CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64=m | ||
5664 | CONFIG_CRYPTO_CAST_COMMON=m | 5697 | CONFIG_CRYPTO_CAST_COMMON=m |
5665 | CONFIG_CRYPTO_CAST5=m | 5698 | CONFIG_CRYPTO_CAST5=m |
5666 | CONFIG_CRYPTO_CAST5_AVX_X86_64=m | 5699 | CONFIG_CRYPTO_CAST5_AVX_X86_64=m |
@@ -5675,6 +5708,7 @@ CONFIG_CRYPTO_SEED=m | |||
5675 | CONFIG_CRYPTO_SERPENT=m | 5708 | CONFIG_CRYPTO_SERPENT=m |
5676 | CONFIG_CRYPTO_SERPENT_SSE2_X86_64=m | 5709 | CONFIG_CRYPTO_SERPENT_SSE2_X86_64=m |
5677 | CONFIG_CRYPTO_SERPENT_AVX_X86_64=m | 5710 | CONFIG_CRYPTO_SERPENT_AVX_X86_64=m |
5711 | CONFIG_CRYPTO_SERPENT_AVX2_X86_64=m | ||
5678 | CONFIG_CRYPTO_TEA=m | 5712 | CONFIG_CRYPTO_TEA=m |
5679 | CONFIG_CRYPTO_TWOFISH=m | 5713 | CONFIG_CRYPTO_TWOFISH=m |
5680 | CONFIG_CRYPTO_TWOFISH_COMMON=m | 5714 | CONFIG_CRYPTO_TWOFISH_COMMON=m |
@@ -5706,6 +5740,7 @@ CONFIG_PUBLIC_KEY_ALGO_RSA=m | |||
5706 | CONFIG_X509_CERTIFICATE_PARSER=m | 5740 | CONFIG_X509_CERTIFICATE_PARSER=m |
5707 | CONFIG_HAVE_KVM=y | 5741 | CONFIG_HAVE_KVM=y |
5708 | CONFIG_HAVE_KVM_IRQCHIP=y | 5742 | CONFIG_HAVE_KVM_IRQCHIP=y |
5743 | CONFIG_HAVE_KVM_IRQ_ROUTING=y | ||
5709 | CONFIG_HAVE_KVM_EVENTFD=y | 5744 | CONFIG_HAVE_KVM_EVENTFD=y |
5710 | CONFIG_KVM_APIC_ARCHITECTURE=y | 5745 | CONFIG_KVM_APIC_ARCHITECTURE=y |
5711 | CONFIG_KVM_MMIO=y | 5746 | CONFIG_KVM_MMIO=y |
@@ -5716,8 +5751,7 @@ CONFIG_VIRTUALIZATION=y | |||
5716 | CONFIG_KVM=m | 5751 | CONFIG_KVM=m |
5717 | CONFIG_KVM_INTEL=m | 5752 | CONFIG_KVM_INTEL=m |
5718 | CONFIG_KVM_AMD=m | 5753 | CONFIG_KVM_AMD=m |
5719 | CONFIG_VHOST_NET=m | 5754 | CONFIG_KVM_DEVICE_ASSIGNMENT=y |
5720 | CONFIG_TCM_VHOST=m | ||
5721 | # CONFIG_BINARY_PRINTF is not set | 5755 | # CONFIG_BINARY_PRINTF is not set |
5722 | 5756 | ||
5723 | # | 5757 | # |