aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2014-06-03 14:35:38 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2014-06-03 14:36:28 +0000
commitcfddb54dbf758dab9a1649d1d51c919a11af092b (patch)
tree329d31648c894bddc966859ef609b515b69ed77b
parentdfbaeba59fa9e3a19bc912f7d30c0e05c12033f1 (diff)
downloadalpine_aports-cfddb54dbf758dab9a1649d1d51c919a11af092b.tar.bz2
alpine_aports-cfddb54dbf758dab9a1649d1d51c919a11af092b.tar.xz
alpine_aports-cfddb54dbf758dab9a1649d1d51c919a11af092b.zip
main/linux-virt-grsec: upgrade to 3.14.5
-rw-r--r--main/linux-virt-grsec/APKBUILD36
-rw-r--r--main/linux-virt-grsec/grsecurity-3.0-3.14.5-201406021708.patch (renamed from main/linux-virt-grsec/grsecurity-3.0-3.13.7-201403252047.patch)20341
-rw-r--r--main/linux-virt-grsec/kernelconfig.x8687
-rw-r--r--main/linux-virt-grsec/kernelconfig.x86_6492
4 files changed, 11783 insertions, 8773 deletions
diff --git a/main/linux-virt-grsec/APKBUILD b/main/linux-virt-grsec/APKBUILD
index 58ccadc5c2..0236a81c1e 100644
--- a/main/linux-virt-grsec/APKBUILD
+++ b/main/linux-virt-grsec/APKBUILD
@@ -3,7 +3,7 @@
3 3
4_flavor=virt-grsec 4_flavor=virt-grsec
5pkgname=linux-${_flavor} 5pkgname=linux-${_flavor}
6pkgver=3.13.7 6pkgver=3.14.5
7case $pkgver in 7case $pkgver in
8*.*.*) _kernver=${pkgver%.*};; 8*.*.*) _kernver=${pkgver%.*};;
9*.*) _kernver=${pkgver};; 9*.*) _kernver=${pkgver};;
@@ -18,14 +18,14 @@ _config=${config:-kernelconfig.${CARCH}}
18install= 18install=
19source="http://ftp.kernel.org/pub/linux/kernel/v3.x/linux-$_kernver.tar.xz 19source="http://ftp.kernel.org/pub/linux/kernel/v3.x/linux-$_kernver.tar.xz
20 http://ftp.kernel.org/pub/linux/kernel/v3.x/patch-$pkgver.xz 20 http://ftp.kernel.org/pub/linux/kernel/v3.x/patch-$pkgver.xz
21 grsecurity-3.0-$pkgver-201403252047.patch 21 grsecurity-3.0-3.14.5-201406021708.patch
22 fix-memory-map-for-PIE-applications.patch 22 fix-memory-map-for-PIE-applications.patch
23 23
24 kernelconfig.x86 24 kernelconfig.x86
25 kernelconfig.x86_64 25 kernelconfig.x86_64
26 " 26 "
27subpackages="$pkgname-dev" 27subpackages="$pkgname-dev"
28arch="x86 x86_64 arm" 28arch="x86 x86_64"
29license="GPL-2" 29license="GPL-2"
30 30
31_abi_release=${pkgver}-${pkgrel}-${_flavor} 31_abi_release=${pkgver}-${pkgrel}-${_flavor}
@@ -144,21 +144,21 @@ dev() {
144 "$subpkgdir"/lib/modules/${_abi_release}/build 144 "$subpkgdir"/lib/modules/${_abi_release}/build
145} 145}
146 146
147md5sums="0ecbaf65c00374eb4a826c2f9f37606f linux-3.13.tar.xz 147md5sums="b621207b3f6ecbb67db18b13258f8ea8 linux-3.14.tar.xz
148cb33b329d3417846d310c7f58a2614b6 patch-3.13.7.xz 148a56bf05cb9033097198f9269bbcff130 patch-3.14.5.xz
14900dbb1fb5bfc08842d97c02ece67e441 grsecurity-3.0-3.13.7-201403252047.patch 149e3879ccdca92dbec4e42109a9f5552bb grsecurity-3.0-3.14.5-201406021708.patch
150c6a4ae7e8ca6159e1631545515805216 fix-memory-map-for-PIE-applications.patch 150c6a4ae7e8ca6159e1631545515805216 fix-memory-map-for-PIE-applications.patch
151dafaf5ef5b477d21411b423caa0d6836 kernelconfig.x86 1510593091e003403e5c52c7b173f8866f6 kernelconfig.x86
152492168c5783522e39f26ce5771f93e12 kernelconfig.x86_64" 152d5427d0c3bc034aed0614ce29e66876f kernelconfig.x86_64"
153sha256sums="4d5e5eee5f276424c32e9591f1b6c971baedc7b49f28ce03d1f48b1e5d6226a2 linux-3.13.tar.xz 153sha256sums="61558aa490855f42b6340d1a1596be47454909629327c49a5e4e10268065dffa linux-3.14.tar.xz
1544e7a062493c2a0dd2f2aa0ec636a47b2b1785aebccf652ae56e68f0dfc083f89 patch-3.13.7.xz 154ecc00856830c05736b3f99609bc6d80353c29d2db9b0dffb91eb2d169808cac4 patch-3.14.5.xz
1552bd65311a72df142f5b4f7be20f4b1e26fc62c076dba9991f0efba12dc847538 grsecurity-3.0-3.13.7-201403252047.patch 1558695054d1a1bd02acd2a08b1268eb65349f6877b1be1a00251dcbc5dd95a5a00 grsecurity-3.0-3.14.5-201406021708.patch
156500f3577310be52e87b9fecdc2e9c4ca43210fd97d69089f9005d484563f74c7 fix-memory-map-for-PIE-applications.patch 156500f3577310be52e87b9fecdc2e9c4ca43210fd97d69089f9005d484563f74c7 fix-memory-map-for-PIE-applications.patch
157ae9d10524dde3504cf77db0f3a2efb10a60af804e246117d34c722be34e20d49 kernelconfig.x86 15700f0bdb92fc2878625716b9e6569b597908639e1784ec283d896d87f7a9c8d65 kernelconfig.x86
158f478c9d4e13f687a07bd4148be812ff9489668dd75d8512fc466428fa290198a kernelconfig.x86_64" 158e7832d2bcb090a177640c75ac6a0c259d013e7e3a61cd173b729457d18533132 kernelconfig.x86_64"
159sha512sums="1ba223bb4b885d691a67196d86a8aaf7b4a1c351bf2a762f50f1b0c32da00dd0c28895872a66b49e8d244498d996876609268e64861d28ac4048886ef9f79b87 linux-3.13.tar.xz 159sha512sums="5730d83a7a81134c1e77c0bf89e42dee4f8251ad56c1ac2be20c59e26fdfaa7bea55f277e7af156b637f22e1584914a46089af85039177cb43485089c74ac26e linux-3.14.tar.xz
160bee628e25d8ed378fd32d0e96ac20f24d1bef2950377cee249b65db918bd528a744cc1058006f9e945095ccc81805d715eb27e5c36f2515c7dcfdf5fe6b6c7a6 patch-3.13.7.xz 160068d139063c94f0e3fd4c24217705628b20f996f6e4cce88366c060150a123381babcfc05c953c58023deff0f7b28b4129b8d381b20dd4e3ac80ce4dbc4ec1e3 patch-3.14.5.xz
161f118a017084f8dee3d5ae0f9435f96e9e5cff7c2d4672855622133cc6fd811c4e481c6b6f907b43c691f0531bfaf168dbd08877e29c25da82989492bc4186de4 grsecurity-3.0-3.13.7-201403252047.patch 16186aa2f621e4fe52eaf498236289b66532f7a8bc087e9100ec168861cead44b7a4329ad609314b6b0bcbf114adf7378ae4eb38b37fc7d8e414473b7de1b84bd2f grsecurity-3.0-3.14.5-201406021708.patch
1624665c56ae1bbac311f9205d64918e84ee8b01d47d6e2396ff6b8adfb10aada7f7254531ce62e31edbb65c2a54a830f09ad05d314dfcd75d6272f4068945ad7c7 fix-memory-map-for-PIE-applications.patch 1624665c56ae1bbac311f9205d64918e84ee8b01d47d6e2396ff6b8adfb10aada7f7254531ce62e31edbb65c2a54a830f09ad05d314dfcd75d6272f4068945ad7c7 fix-memory-map-for-PIE-applications.patch
163e3632c26946afe40fad6ebd8bba9631d67c57c948efabc619096aeb108720464ffd70c4b69227b6906593b606d6e6ed0b22e71298a13cf4955076ffeb457198b kernelconfig.x86 16337661c86ee78bae4f71c325437bf5c1e4d3515988f636289ea120caad8925e959a5f7891d3909e8c721be851eb38810b1db5e19ee5db2046597f26f64d34ef23 kernelconfig.x86
164574f8b4373fa4f59aaf4958754baacf2c231718f7aae76264f9cc349582824b9edd4288daea7e3aa66b3c01b176897ad2c8975395971fe2062f7ca5ff27e8f82 kernelconfig.x86_64" 1644bfeb5fe218e6adf6a323166607ce76e235645da53be31a8678f20d00b764e918a0be0bbad4e2b34281fb4aa2a208ccdb208cc1a7ed5a1210e50caec67735bf5 kernelconfig.x86_64"
diff --git a/main/linux-virt-grsec/grsecurity-3.0-3.13.7-201403252047.patch b/main/linux-virt-grsec/grsecurity-3.0-3.14.5-201406021708.patch
index 52f42f1148..400f193d7c 100644
--- a/main/linux-virt-grsec/grsecurity-3.0-3.13.7-201403252047.patch
+++ b/main/linux-virt-grsec/grsecurity-3.0-3.14.5-201406021708.patch
@@ -235,10 +235,10 @@ index b89a739..e289b9b 100644
235+zconf.lex.c 235+zconf.lex.c
236 zoffset.h 236 zoffset.h
237diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt 237diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
238index b9e9bd8..bf49b92 100644 238index 7116fda..d8ed6e8 100644
239--- a/Documentation/kernel-parameters.txt 239--- a/Documentation/kernel-parameters.txt
240+++ b/Documentation/kernel-parameters.txt 240+++ b/Documentation/kernel-parameters.txt
241@@ -1033,6 +1033,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted. 241@@ -1084,6 +1084,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
242 Format: <unsigned int> such that (rxsize & ~0x1fffc0) == 0. 242 Format: <unsigned int> such that (rxsize & ~0x1fffc0) == 0.
243 Default: 1024 243 Default: 1024
244 244
@@ -249,7 +249,7 @@ index b9e9bd8..bf49b92 100644
249 hashdist= [KNL,NUMA] Large hashes allocated during boot 249 hashdist= [KNL,NUMA] Large hashes allocated during boot
250 are distributed across NUMA nodes. Defaults on 250 are distributed across NUMA nodes. Defaults on
251 for 64-bit NUMA, off otherwise. 251 for 64-bit NUMA, off otherwise.
252@@ -2018,6 +2022,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted. 252@@ -2080,6 +2084,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
253 noexec=on: enable non-executable mappings (default) 253 noexec=on: enable non-executable mappings (default)
254 noexec=off: disable non-executable mappings 254 noexec=off: disable non-executable mappings
255 255
@@ -260,7 +260,7 @@ index b9e9bd8..bf49b92 100644
260 nosmap [X86] 260 nosmap [X86]
261 Disable SMAP (Supervisor Mode Access Prevention) 261 Disable SMAP (Supervisor Mode Access Prevention)
262 even if it is supported by processor. 262 even if it is supported by processor.
263@@ -2285,6 +2293,25 @@ bytes respectively. Such letter suffixes can also be entirely omitted. 263@@ -2347,6 +2355,25 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
264 the specified number of seconds. This is to be used if 264 the specified number of seconds. This is to be used if
265 your oopses keep scrolling off the screen. 265 your oopses keep scrolling off the screen.
266 266
@@ -287,7 +287,7 @@ index b9e9bd8..bf49b92 100644
287 287
288 pcd. [PARIDE] 288 pcd. [PARIDE]
289diff --git a/Makefile b/Makefile 289diff --git a/Makefile b/Makefile
290index 9f214b4..8c9c622 100644 290index fa77b0b..dadf5fd 100644
291--- a/Makefile 291--- a/Makefile
292+++ b/Makefile 292+++ b/Makefile
293@@ -244,8 +244,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ 293@@ -244,8 +244,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
@@ -298,27 +298,11 @@ index 9f214b4..8c9c622 100644
298-HOSTCXXFLAGS = -O2 298-HOSTCXXFLAGS = -O2
299+HOSTCFLAGS = -Wall -W -Wmissing-prototypes -Wstrict-prototypes -Wno-unused-parameter -Wno-missing-field-initializers -O2 -fomit-frame-pointer -fno-delete-null-pointer-checks 299+HOSTCFLAGS = -Wall -W -Wmissing-prototypes -Wstrict-prototypes -Wno-unused-parameter -Wno-missing-field-initializers -O2 -fomit-frame-pointer -fno-delete-null-pointer-checks
300+HOSTCFLAGS += $(call cc-option, -Wno-empty-body) 300+HOSTCFLAGS += $(call cc-option, -Wno-empty-body)
301+HOSTCXXFLAGS = -O2 -Wall -W -fno-delete-null-pointer-checks 301+HOSTCXXFLAGS = -O2 -Wall -W -Wno-array-bounds
302 302
303 # Decide whether to build built-in, modular, or both. 303 # Decide whether to build built-in, modular, or both.
304 # Normally, just do built-in. 304 # Normally, just do built-in.
305@@ -311,9 +312,15 @@ endif 305@@ -423,8 +424,8 @@ export RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn \
306 # If the user is running make -s (silent mode), suppress echoing of
307 # commands
308
309+ifneq ($(filter 4.%,$(MAKE_VERSION)),) # make-4
310+ifneq ($(filter %s ,$(firstword x$(MAKEFLAGS))),)
311+ quiet=silent_
312+endif
313+else # make-3.8x
314 ifneq ($(filter s% -s%,$(MAKEFLAGS)),)
315 quiet=silent_
316 endif
317+endif
318
319 export quiet Q KBUILD_VERBOSE
320
321@@ -417,8 +424,8 @@ export RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn \
322 # Rules shared between *config targets and build targets 306 # Rules shared between *config targets and build targets
323 307
324 # Basic helpers built in scripts/ 308 # Basic helpers built in scripts/
@@ -329,7 +313,7 @@ index 9f214b4..8c9c622 100644
329 $(Q)$(MAKE) $(build)=scripts/basic 313 $(Q)$(MAKE) $(build)=scripts/basic
330 $(Q)rm -f .tmp_quiet_recordmcount 314 $(Q)rm -f .tmp_quiet_recordmcount
331 315
332@@ -579,6 +586,72 @@ else 316@@ -585,6 +586,72 @@ else
333 KBUILD_CFLAGS += -O2 317 KBUILD_CFLAGS += -O2
334 endif 318 endif
335 319
@@ -368,7 +352,7 @@ index 9f214b4..8c9c622 100644
368+endif 352+endif
369+COLORIZE_PLUGIN_CFLAGS := -fplugin=$(objtree)/tools/gcc/colorize_plugin.so 353+COLORIZE_PLUGIN_CFLAGS := -fplugin=$(objtree)/tools/gcc/colorize_plugin.so
370+ifdef CONFIG_PAX_SIZE_OVERFLOW 354+ifdef CONFIG_PAX_SIZE_OVERFLOW
371+SIZE_OVERFLOW_PLUGIN_CFLAGS := -fplugin=$(objtree)/tools/gcc/size_overflow_plugin.so -DSIZE_OVERFLOW_PLUGIN 355+SIZE_OVERFLOW_PLUGIN_CFLAGS := -fplugin=$(objtree)/tools/gcc/size_overflow_plugin/size_overflow_plugin.so -DSIZE_OVERFLOW_PLUGIN
372+endif 356+endif
373+ifdef CONFIG_PAX_LATENT_ENTROPY 357+ifdef CONFIG_PAX_LATENT_ENTROPY
374+LATENT_ENTROPY_PLUGIN_CFLAGS := -fplugin=$(objtree)/tools/gcc/latent_entropy_plugin.so -DLATENT_ENTROPY_PLUGIN 358+LATENT_ENTROPY_PLUGIN_CFLAGS := -fplugin=$(objtree)/tools/gcc/latent_entropy_plugin.so -DLATENT_ENTROPY_PLUGIN
@@ -402,16 +386,7 @@ index 9f214b4..8c9c622 100644
402 include $(srctree)/arch/$(SRCARCH)/Makefile 386 include $(srctree)/arch/$(SRCARCH)/Makefile
403 387
404 ifdef CONFIG_READABLE_ASM 388 ifdef CONFIG_READABLE_ASM
405@@ -619,7 +692,7 @@ endif 389@@ -779,7 +846,7 @@ export mod_sign_cmd
406
407 ifdef CONFIG_DEBUG_INFO
408 KBUILD_CFLAGS += -g
409-KBUILD_AFLAGS += -gdwarf-2
410+KBUILD_AFLAGS += -Wa,--gdwarf-2
411 endif
412
413 ifdef CONFIG_DEBUG_INFO_REDUCED
414@@ -754,7 +827,7 @@ export mod_sign_cmd
415 390
416 391
417 ifeq ($(KBUILD_EXTMOD),) 392 ifeq ($(KBUILD_EXTMOD),)
@@ -420,7 +395,7 @@ index 9f214b4..8c9c622 100644
420 395
421 vmlinux-dirs := $(patsubst %/,%,$(filter %/, $(init-y) $(init-m) \ 396 vmlinux-dirs := $(patsubst %/,%,$(filter %/, $(init-y) $(init-m) \
422 $(core-y) $(core-m) $(drivers-y) $(drivers-m) \ 397 $(core-y) $(core-m) $(drivers-y) $(drivers-m) \
423@@ -803,6 +876,8 @@ endif 398@@ -828,6 +895,8 @@ endif
424 399
425 # The actual objects are generated when descending, 400 # The actual objects are generated when descending,
426 # make sure no implicit rule kicks in 401 # make sure no implicit rule kicks in
@@ -429,7 +404,7 @@ index 9f214b4..8c9c622 100644
429 $(sort $(vmlinux-deps)): $(vmlinux-dirs) ; 404 $(sort $(vmlinux-deps)): $(vmlinux-dirs) ;
430 405
431 # Handle descending into subdirectories listed in $(vmlinux-dirs) 406 # Handle descending into subdirectories listed in $(vmlinux-dirs)
432@@ -812,7 +887,7 @@ $(sort $(vmlinux-deps)): $(vmlinux-dirs) ; 407@@ -837,7 +906,7 @@ $(sort $(vmlinux-deps)): $(vmlinux-dirs) ;
433 # Error messages still appears in the original language 408 # Error messages still appears in the original language
434 409
435 PHONY += $(vmlinux-dirs) 410 PHONY += $(vmlinux-dirs)
@@ -438,7 +413,7 @@ index 9f214b4..8c9c622 100644
438 $(Q)$(MAKE) $(build)=$@ 413 $(Q)$(MAKE) $(build)=$@
439 414
440 define filechk_kernel.release 415 define filechk_kernel.release
441@@ -855,10 +930,13 @@ prepare1: prepare2 $(version_h) include/generated/utsrelease.h \ 416@@ -880,10 +949,13 @@ prepare1: prepare2 $(version_h) include/generated/utsrelease.h \
442 417
443 archprepare: archheaders archscripts prepare1 scripts_basic 418 archprepare: archheaders archscripts prepare1 scripts_basic
444 419
@@ -452,7 +427,7 @@ index 9f214b4..8c9c622 100644
452 prepare: prepare0 427 prepare: prepare0
453 428
454 # Generate some files 429 # Generate some files
455@@ -966,6 +1044,8 @@ all: modules 430@@ -991,6 +1063,8 @@ all: modules
456 # using awk while concatenating to the final file. 431 # using awk while concatenating to the final file.
457 432
458 PHONY += modules 433 PHONY += modules
@@ -461,7 +436,7 @@ index 9f214b4..8c9c622 100644
461 modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin 436 modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin
462 $(Q)$(AWK) '!x[$$0]++' $(vmlinux-dirs:%=$(objtree)/%/modules.order) > $(objtree)/modules.order 437 $(Q)$(AWK) '!x[$$0]++' $(vmlinux-dirs:%=$(objtree)/%/modules.order) > $(objtree)/modules.order
463 @$(kecho) ' Building modules, stage 2.'; 438 @$(kecho) ' Building modules, stage 2.';
464@@ -981,7 +1061,7 @@ modules.builtin: $(vmlinux-dirs:%=%/modules.builtin) 439@@ -1006,7 +1080,7 @@ modules.builtin: $(vmlinux-dirs:%=%/modules.builtin)
465 440
466 # Target to prepare building external modules 441 # Target to prepare building external modules
467 PHONY += modules_prepare 442 PHONY += modules_prepare
@@ -470,17 +445,19 @@ index 9f214b4..8c9c622 100644
470 445
471 # Target to install modules 446 # Target to install modules
472 PHONY += modules_install 447 PHONY += modules_install
473@@ -1047,7 +1127,8 @@ MRPROPER_FILES += .config .config.old .version .old_version $(version_h) \ 448@@ -1072,7 +1146,10 @@ MRPROPER_FILES += .config .config.old .version .old_version $(version_h) \
474 Module.symvers tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS \ 449 Module.symvers tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS \
475 signing_key.priv signing_key.x509 x509.genkey \ 450 signing_key.priv signing_key.x509 x509.genkey \
476 extra_certificates signing_key.x509.keyid \ 451 extra_certificates signing_key.x509.keyid \
477- signing_key.x509.signer 452- signing_key.x509.signer
478+ signing_key.x509.signer tools/gcc/size_overflow_hash.h \ 453+ signing_key.x509.signer \
454+ tools/gcc/size_overflow_plugin/size_overflow_hash_aux.h \
455+ tools/gcc/size_overflow_plugin/size_overflow_hash.h \
479+ tools/gcc/randomize_layout_seed.h 456+ tools/gcc/randomize_layout_seed.h
480 457
481 # clean - Delete most, but leave enough to build external modules 458 # clean - Delete most, but leave enough to build external modules
482 # 459 #
483@@ -1087,6 +1168,7 @@ distclean: mrproper 460@@ -1112,6 +1189,7 @@ distclean: mrproper
484 \( -name '*.orig' -o -name '*.rej' -o -name '*~' \ 461 \( -name '*.orig' -o -name '*.rej' -o -name '*~' \
485 -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \ 462 -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \
486 -o -name '.*.rej' \ 463 -o -name '.*.rej' \
@@ -488,7 +465,7 @@ index 9f214b4..8c9c622 100644
488 -o -name '*%' -o -name '.*.cmd' -o -name 'core' \) \ 465 -o -name '*%' -o -name '.*.cmd' -o -name 'core' \) \
489 -type f -print | xargs rm -f 466 -type f -print | xargs rm -f
490 467
491@@ -1248,6 +1330,8 @@ PHONY += $(module-dirs) modules 468@@ -1273,6 +1351,8 @@ PHONY += $(module-dirs) modules
492 $(module-dirs): crmodverdir $(objtree)/Module.symvers 469 $(module-dirs): crmodverdir $(objtree)/Module.symvers
493 $(Q)$(MAKE) $(build)=$(patsubst _module_%,%,$@) 470 $(Q)$(MAKE) $(build)=$(patsubst _module_%,%,$@)
494 471
@@ -497,7 +474,7 @@ index 9f214b4..8c9c622 100644
497 modules: $(module-dirs) 474 modules: $(module-dirs)
498 @$(kecho) ' Building modules, stage 2.'; 475 @$(kecho) ' Building modules, stage 2.';
499 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost 476 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
500@@ -1387,17 +1471,21 @@ else 477@@ -1412,17 +1492,21 @@ else
501 target-dir = $(if $(KBUILD_EXTMOD),$(dir $<),$(dir $@)) 478 target-dir = $(if $(KBUILD_EXTMOD),$(dir $<),$(dir $@))
502 endif 479 endif
503 480
@@ -523,7 +500,7 @@ index 9f214b4..8c9c622 100644
523 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 500 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
524 %.symtypes: %.c prepare scripts FORCE 501 %.symtypes: %.c prepare scripts FORCE
525 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 502 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
526@@ -1407,11 +1495,15 @@ endif 503@@ -1432,11 +1516,15 @@ endif
527 $(cmd_crmodverdir) 504 $(cmd_crmodverdir)
528 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ 505 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
529 $(build)=$(build-dir) 506 $(build)=$(build-dir)
@@ -874,10 +851,10 @@ index 98838a0..b304fb4 100644
874 /* Allow reads even for write-only mappings */ 851 /* Allow reads even for write-only mappings */
875 if (!(vma->vm_flags & (VM_READ | VM_WRITE))) 852 if (!(vma->vm_flags & (VM_READ | VM_WRITE)))
876diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig 853diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
877index 47085a0..f975a53 100644 854index 44298ad..29a20c0 100644
878--- a/arch/arm/Kconfig 855--- a/arch/arm/Kconfig
879+++ b/arch/arm/Kconfig 856+++ b/arch/arm/Kconfig
880@@ -1830,7 +1830,7 @@ config ALIGNMENT_TRAP 857@@ -1862,7 +1862,7 @@ config ALIGNMENT_TRAP
881 858
882 config UACCESS_WITH_MEMCPY 859 config UACCESS_WITH_MEMCPY
883 bool "Use kernel mem{cpy,set}() for {copy_to,clear}_user()" 860 bool "Use kernel mem{cpy,set}() for {copy_to,clear}_user()"
@@ -886,7 +863,7 @@ index 47085a0..f975a53 100644
886 default y if CPU_FEROCEON 863 default y if CPU_FEROCEON
887 help 864 help
888 Implement faster copy_to_user and clear_user methods for CPU 865 Implement faster copy_to_user and clear_user methods for CPU
889@@ -2102,6 +2102,7 @@ config XIP_PHYS_ADDR 866@@ -2125,6 +2125,7 @@ config XIP_PHYS_ADDR
890 config KEXEC 867 config KEXEC
891 bool "Kexec system call (EXPERIMENTAL)" 868 bool "Kexec system call (EXPERIMENTAL)"
892 depends on (!SMP || PM_SLEEP_SMP) 869 depends on (!SMP || PM_SLEEP_SMP)
@@ -1571,7 +1548,7 @@ index 75fe66b..ba3dee4 100644
1571 1548
1572 #endif 1549 #endif
1573diff --git a/arch/arm/include/asm/cacheflush.h b/arch/arm/include/asm/cacheflush.h 1550diff --git a/arch/arm/include/asm/cacheflush.h b/arch/arm/include/asm/cacheflush.h
1574index ab91ebb..2c2afeb 100644 1551index 8b8b616..d973d24 100644
1575--- a/arch/arm/include/asm/cacheflush.h 1552--- a/arch/arm/include/asm/cacheflush.h
1576+++ b/arch/arm/include/asm/cacheflush.h 1553+++ b/arch/arm/include/asm/cacheflush.h
1577@@ -116,7 +116,7 @@ struct cpu_cache_fns { 1554@@ -116,7 +116,7 @@ struct cpu_cache_fns {
@@ -1584,7 +1561,7 @@ index ab91ebb..2c2afeb 100644
1584 /* 1561 /*
1585 * Select the calling method 1562 * Select the calling method
1586diff --git a/arch/arm/include/asm/checksum.h b/arch/arm/include/asm/checksum.h 1563diff --git a/arch/arm/include/asm/checksum.h b/arch/arm/include/asm/checksum.h
1587index 6dcc164..b14d917 100644 1564index 5233151..87a71fa 100644
1588--- a/arch/arm/include/asm/checksum.h 1565--- a/arch/arm/include/asm/checksum.h
1589+++ b/arch/arm/include/asm/checksum.h 1566+++ b/arch/arm/include/asm/checksum.h
1590@@ -37,7 +37,19 @@ __wsum 1567@@ -37,7 +37,19 @@ __wsum
@@ -1728,10 +1705,10 @@ index de53547..52b9a28 100644
1728 (unsigned long)(dest_buf) + (size)); \ 1705 (unsigned long)(dest_buf) + (size)); \
1729 \ 1706 \
1730diff --git a/arch/arm/include/asm/futex.h b/arch/arm/include/asm/futex.h 1707diff --git a/arch/arm/include/asm/futex.h b/arch/arm/include/asm/futex.h
1731index e42cf59..7b94b8f 100644 1708index 2aff798..099eb15 100644
1732--- a/arch/arm/include/asm/futex.h 1709--- a/arch/arm/include/asm/futex.h
1733+++ b/arch/arm/include/asm/futex.h 1710+++ b/arch/arm/include/asm/futex.h
1734@@ -50,6 +50,8 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr, 1711@@ -45,6 +45,8 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
1735 if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32))) 1712 if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32)))
1736 return -EFAULT; 1713 return -EFAULT;
1737 1714
@@ -1740,7 +1717,7 @@ index e42cf59..7b94b8f 100644
1740 smp_mb(); 1717 smp_mb();
1741 __asm__ __volatile__("@futex_atomic_cmpxchg_inatomic\n" 1718 __asm__ __volatile__("@futex_atomic_cmpxchg_inatomic\n"
1742 "1: ldrex %1, [%4]\n" 1719 "1: ldrex %1, [%4]\n"
1743@@ -65,6 +67,8 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr, 1720@@ -60,6 +62,8 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
1744 : "cc", "memory"); 1721 : "cc", "memory");
1745 smp_mb(); 1722 smp_mb();
1746 1723
@@ -1749,7 +1726,7 @@ index e42cf59..7b94b8f 100644
1749 *uval = val; 1726 *uval = val;
1750 return ret; 1727 return ret;
1751 } 1728 }
1752@@ -95,6 +99,8 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr, 1729@@ -90,6 +94,8 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
1753 if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32))) 1730 if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32)))
1754 return -EFAULT; 1731 return -EFAULT;
1755 1732
@@ -1758,7 +1735,7 @@ index e42cf59..7b94b8f 100644
1758 __asm__ __volatile__("@futex_atomic_cmpxchg_inatomic\n" 1735 __asm__ __volatile__("@futex_atomic_cmpxchg_inatomic\n"
1759 "1: " TUSER(ldr) " %1, [%4]\n" 1736 "1: " TUSER(ldr) " %1, [%4]\n"
1760 " teq %1, %2\n" 1737 " teq %1, %2\n"
1761@@ -105,6 +111,8 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr, 1738@@ -100,6 +106,8 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
1762 : "r" (oldval), "r" (newval), "r" (uaddr), "Ir" (-EFAULT) 1739 : "r" (oldval), "r" (newval), "r" (uaddr), "Ir" (-EFAULT)
1763 : "cc", "memory"); 1740 : "cc", "memory");
1764 1741
@@ -1767,7 +1744,7 @@ index e42cf59..7b94b8f 100644
1767 *uval = val; 1744 *uval = val;
1768 return ret; 1745 return ret;
1769 } 1746 }
1770@@ -127,6 +135,7 @@ futex_atomic_op_inuser (int encoded_op, u32 __user *uaddr) 1747@@ -122,6 +130,7 @@ futex_atomic_op_inuser (int encoded_op, u32 __user *uaddr)
1771 return -EFAULT; 1748 return -EFAULT;
1772 1749
1773 pagefault_disable(); /* implies preempt_disable() */ 1750 pagefault_disable(); /* implies preempt_disable() */
@@ -1775,7 +1752,7 @@ index e42cf59..7b94b8f 100644
1775 1752
1776 switch (op) { 1753 switch (op) {
1777 case FUTEX_OP_SET: 1754 case FUTEX_OP_SET:
1778@@ -148,6 +157,7 @@ futex_atomic_op_inuser (int encoded_op, u32 __user *uaddr) 1755@@ -143,6 +152,7 @@ futex_atomic_op_inuser (int encoded_op, u32 __user *uaddr)
1779 ret = -ENOSYS; 1756 ret = -ENOSYS;
1780 } 1757 }
1781 1758
@@ -1809,28 +1786,36 @@ index 9e614a1..3302cca 100644
1809 struct dma_struct { 1786 struct dma_struct {
1810 void *addr; /* single DMA address */ 1787 void *addr; /* single DMA address */
1811diff --git a/arch/arm/include/asm/mach/map.h b/arch/arm/include/asm/mach/map.h 1788diff --git a/arch/arm/include/asm/mach/map.h b/arch/arm/include/asm/mach/map.h
1812index 2fe141f..192dc01 100644 1789index f98c7f3..e5c626d 100644
1813--- a/arch/arm/include/asm/mach/map.h 1790--- a/arch/arm/include/asm/mach/map.h
1814+++ b/arch/arm/include/asm/mach/map.h 1791+++ b/arch/arm/include/asm/mach/map.h
1815@@ -27,13 +27,16 @@ struct map_desc { 1792@@ -23,17 +23,19 @@ struct map_desc {
1816 #define MT_MINICLEAN 6
1817 #define MT_LOW_VECTORS 7
1818 #define MT_HIGH_VECTORS 8
1819-#define MT_MEMORY 9
1820+#define MT_MEMORY_RWX 9
1821 #define MT_ROM 10
1822-#define MT_MEMORY_NONCACHED 11
1823+#define MT_MEMORY_NONCACHED_RX 11
1824 #define MT_MEMORY_DTCM 12
1825 #define MT_MEMORY_ITCM 13
1826 #define MT_MEMORY_SO 14
1827 #define MT_MEMORY_DMA_READY 15
1828+#define MT_MEMORY_RW 16
1829+#define MT_MEMORY_RX 17
1830+#define MT_MEMORY_NONCACHED_RW 18
1831 1793
1832 #ifdef CONFIG_MMU 1794 /* types 0-3 are defined in asm/io.h */
1833 extern void iotable_init(struct map_desc *, int); 1795 enum {
1796- MT_UNCACHED = 4,
1797- MT_CACHECLEAN,
1798- MT_MINICLEAN,
1799+ MT_UNCACHED_RW = 4,
1800+ MT_CACHECLEAN_RO,
1801+ MT_MINICLEAN_RO,
1802 MT_LOW_VECTORS,
1803 MT_HIGH_VECTORS,
1804- MT_MEMORY_RWX,
1805+ __MT_MEMORY_RWX,
1806 MT_MEMORY_RW,
1807- MT_ROM,
1808- MT_MEMORY_RWX_NONCACHED,
1809+ MT_MEMORY_RX,
1810+ MT_ROM_RX,
1811+ MT_MEMORY_RW_NONCACHED,
1812+ MT_MEMORY_RX_NONCACHED,
1813 MT_MEMORY_RW_DTCM,
1814- MT_MEMORY_RWX_ITCM,
1815+ MT_MEMORY_RX_ITCM,
1816 MT_MEMORY_RW_SO,
1817 MT_MEMORY_DMA_READY,
1818 };
1834diff --git a/arch/arm/include/asm/outercache.h b/arch/arm/include/asm/outercache.h 1819diff --git a/arch/arm/include/asm/outercache.h b/arch/arm/include/asm/outercache.h
1835index f94784f..9a09a4a 100644 1820index f94784f..9a09a4a 100644
1836--- a/arch/arm/include/asm/outercache.h 1821--- a/arch/arm/include/asm/outercache.h
@@ -1963,7 +1948,7 @@ index 5cfba15..f415e1a 100644
1963 #define PTE_EXT_AP0 (_AT(pteval_t, 1) << 4) 1948 #define PTE_EXT_AP0 (_AT(pteval_t, 1) << 4)
1964 #define PTE_EXT_AP1 (_AT(pteval_t, 2) << 4) 1949 #define PTE_EXT_AP1 (_AT(pteval_t, 2) << 4)
1965diff --git a/arch/arm/include/asm/pgtable-2level.h b/arch/arm/include/asm/pgtable-2level.h 1950diff --git a/arch/arm/include/asm/pgtable-2level.h b/arch/arm/include/asm/pgtable-2level.h
1966index 86a659a..70e0120 100644 1951index 219ac88..73ec32a 100644
1967--- a/arch/arm/include/asm/pgtable-2level.h 1952--- a/arch/arm/include/asm/pgtable-2level.h
1968+++ b/arch/arm/include/asm/pgtable-2level.h 1953+++ b/arch/arm/include/asm/pgtable-2level.h
1969@@ -126,6 +126,9 @@ 1954@@ -126,6 +126,9 @@
@@ -1989,7 +1974,7 @@ index 626989f..9d67a33 100644
1989 1974
1990 /* 1975 /*
1991diff --git a/arch/arm/include/asm/pgtable-3level.h b/arch/arm/include/asm/pgtable-3level.h 1976diff --git a/arch/arm/include/asm/pgtable-3level.h b/arch/arm/include/asm/pgtable-3level.h
1992index 1d15673..04d626a 100644 1977index 85c60ad..b0bbd7e 100644
1993--- a/arch/arm/include/asm/pgtable-3level.h 1978--- a/arch/arm/include/asm/pgtable-3level.h
1994+++ b/arch/arm/include/asm/pgtable-3level.h 1979+++ b/arch/arm/include/asm/pgtable-3level.h
1995@@ -82,6 +82,7 @@ 1980@@ -82,6 +82,7 @@
@@ -2009,7 +1994,7 @@ index 1d15673..04d626a 100644
2009 #define L_PTE_DIRTY_HIGH (1 << (55 - 32)) 1994 #define L_PTE_DIRTY_HIGH (1 << (55 - 32))
2010 1995
2011diff --git a/arch/arm/include/asm/pgtable.h b/arch/arm/include/asm/pgtable.h 1996diff --git a/arch/arm/include/asm/pgtable.h b/arch/arm/include/asm/pgtable.h
2012index 1571d12..b8a9b43 100644 1997index 7d59b52..27a12f8 100644
2013--- a/arch/arm/include/asm/pgtable.h 1998--- a/arch/arm/include/asm/pgtable.h
2014+++ b/arch/arm/include/asm/pgtable.h 1999+++ b/arch/arm/include/asm/pgtable.h
2015@@ -33,6 +33,9 @@ 2000@@ -33,6 +33,9 @@
@@ -2092,7 +2077,7 @@ index 1571d12..b8a9b43 100644
2092 */ 2077 */
2093 #define _L_PTE_DEFAULT L_PTE_PRESENT | L_PTE_YOUNG 2078 #define _L_PTE_DEFAULT L_PTE_PRESENT | L_PTE_YOUNG
2094 2079
2095@@ -260,7 +308,7 @@ static inline pte_t pte_mkspecial(pte_t pte) { return pte; } 2080@@ -262,7 +310,7 @@ static inline pte_t pte_mkspecial(pte_t pte) { return pte; }
2096 static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) 2081 static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
2097 { 2082 {
2098 const pteval_t mask = L_PTE_XN | L_PTE_RDONLY | L_PTE_USER | 2083 const pteval_t mask = L_PTE_XN | L_PTE_RDONLY | L_PTE_USER |
@@ -2376,10 +2361,10 @@ index 5af0ed1..cea83883 100644
2376 #define PSR_ENDIAN_MASK 0x00000200 /* Endianness state mask */ 2361 #define PSR_ENDIAN_MASK 0x00000200 /* Endianness state mask */
2377 2362
2378diff --git a/arch/arm/kernel/armksyms.c b/arch/arm/kernel/armksyms.c 2363diff --git a/arch/arm/kernel/armksyms.c b/arch/arm/kernel/armksyms.c
2379index 1f031dd..d9b5e4a 100644 2364index 85e664b..419a1cd 100644
2380--- a/arch/arm/kernel/armksyms.c 2365--- a/arch/arm/kernel/armksyms.c
2381+++ b/arch/arm/kernel/armksyms.c 2366+++ b/arch/arm/kernel/armksyms.c
2382@@ -53,7 +53,7 @@ EXPORT_SYMBOL(arm_delay_ops); 2367@@ -55,7 +55,7 @@ EXPORT_SYMBOL(arm_delay_ops);
2383 2368
2384 /* networking */ 2369 /* networking */
2385 EXPORT_SYMBOL(csum_partial); 2370 EXPORT_SYMBOL(csum_partial);
@@ -2388,7 +2373,7 @@ index 1f031dd..d9b5e4a 100644
2388 EXPORT_SYMBOL(csum_partial_copy_nocheck); 2373 EXPORT_SYMBOL(csum_partial_copy_nocheck);
2389 EXPORT_SYMBOL(__csum_ipv6_magic); 2374 EXPORT_SYMBOL(__csum_ipv6_magic);
2390 2375
2391@@ -89,9 +89,9 @@ EXPORT_SYMBOL(__memzero); 2376@@ -91,9 +91,9 @@ EXPORT_SYMBOL(__memzero);
2392 #ifdef CONFIG_MMU 2377 #ifdef CONFIG_MMU
2393 EXPORT_SYMBOL(copy_page); 2378 EXPORT_SYMBOL(copy_page);
2394 2379
@@ -2402,7 +2387,7 @@ index 1f031dd..d9b5e4a 100644
2402 EXPORT_SYMBOL(__get_user_1); 2387 EXPORT_SYMBOL(__get_user_1);
2403 EXPORT_SYMBOL(__get_user_2); 2388 EXPORT_SYMBOL(__get_user_2);
2404diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S 2389diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S
2405index b3fb8c9..59cfab2 100644 2390index 1879e8d..b2207fc 100644
2406--- a/arch/arm/kernel/entry-armv.S 2391--- a/arch/arm/kernel/entry-armv.S
2407+++ b/arch/arm/kernel/entry-armv.S 2392+++ b/arch/arm/kernel/entry-armv.S
2408@@ -47,6 +47,87 @@ 2393@@ -47,6 +47,87 @@
@@ -2554,22 +2539,23 @@ index b3fb8c9..59cfab2 100644
2554 ARM_BE8(rev r0, r0) @ little endian instruction 2539 ARM_BE8(rev r0, r0) @ little endian instruction
2555 2540
2556 @ r0 = 32-bit ARM instruction which caused the exception 2541 @ r0 = 32-bit ARM instruction which caused the exception
2557@@ -450,10 +549,14 @@ __und_usr_thumb: 2542@@ -450,11 +549,15 @@ __und_usr_thumb:
2558 */ 2543 */
2559 .arch armv6t2 2544 .arch armv6t2
2560 #endif 2545 #endif
2561+ pax_open_userland 2546+ pax_open_userland
2562 2: ldrht r5, [r4] 2547 2: ldrht r5, [r4]
2563+ pax_close_userland 2548+ pax_close_userland
2549 ARM_BE8(rev16 r5, r5) @ little endian instruction
2564 cmp r5, #0xe800 @ 32bit instruction if xx != 0 2550 cmp r5, #0xe800 @ 32bit instruction if xx != 0
2565 blo __und_usr_fault_16 @ 16bit undefined instruction 2551 blo __und_usr_fault_16 @ 16bit undefined instruction
2566+ pax_open_userland 2552+ pax_open_userland
2567 3: ldrht r0, [r2] 2553 3: ldrht r0, [r2]
2568+ pax_close_userland 2554+ pax_close_userland
2555 ARM_BE8(rev16 r0, r0) @ little endian instruction
2569 add r2, r2, #2 @ r2 is PC + 2, make it PC + 4 2556 add r2, r2, #2 @ r2 is PC + 2, make it PC + 4
2570 str r2, [sp, #S_PC] @ it's a 2x16bit instr, update 2557 str r2, [sp, #S_PC] @ it's a 2x16bit instr, update
2571 orr r0, r0, r5, lsl #16 2558@@ -484,7 +587,8 @@ ENDPROC(__und_usr)
2572@@ -482,7 +585,8 @@ ENDPROC(__und_usr)
2573 */ 2559 */
2574 .pushsection .fixup, "ax" 2560 .pushsection .fixup, "ax"
2575 .align 2 2561 .align 2
@@ -2579,7 +2565,7 @@ index b3fb8c9..59cfab2 100644
2579 .popsection 2565 .popsection
2580 .pushsection __ex_table,"a" 2566 .pushsection __ex_table,"a"
2581 .long 1b, 4b 2567 .long 1b, 4b
2582@@ -692,7 +796,7 @@ ENTRY(__switch_to) 2568@@ -694,7 +798,7 @@ ENTRY(__switch_to)
2583 THUMB( str lr, [ip], #4 ) 2569 THUMB( str lr, [ip], #4 )
2584 ldr r4, [r2, #TI_TP_VALUE] 2570 ldr r4, [r2, #TI_TP_VALUE]
2585 ldr r5, [r2, #TI_TP_VALUE + 4] 2571 ldr r5, [r2, #TI_TP_VALUE + 4]
@@ -2588,7 +2574,7 @@ index b3fb8c9..59cfab2 100644
2588 ldr r6, [r2, #TI_CPU_DOMAIN] 2574 ldr r6, [r2, #TI_CPU_DOMAIN]
2589 #endif 2575 #endif
2590 switch_tls r1, r4, r5, r3, r7 2576 switch_tls r1, r4, r5, r3, r7
2591@@ -701,7 +805,7 @@ ENTRY(__switch_to) 2577@@ -703,7 +807,7 @@ ENTRY(__switch_to)
2592 ldr r8, =__stack_chk_guard 2578 ldr r8, =__stack_chk_guard
2593 ldr r7, [r7, #TSK_STACK_CANARY] 2579 ldr r7, [r7, #TSK_STACK_CANARY]
2594 #endif 2580 #endif
@@ -2765,21 +2751,10 @@ index 918875d..cd5fa27 100644
2765 flush_icache_range((unsigned long)base + offset, offset + 2751 flush_icache_range((unsigned long)base + offset, offset +
2766 length); 2752 length);
2767diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S 2753diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S
2768index 32f317e..710ae07 100644 2754index f5f381d..a6f36a1 100644
2769--- a/arch/arm/kernel/head.S 2755--- a/arch/arm/kernel/head.S
2770+++ b/arch/arm/kernel/head.S 2756+++ b/arch/arm/kernel/head.S
2771@@ -52,7 +52,9 @@ 2757@@ -437,7 +437,7 @@ __enable_mmu:
2772 .equ swapper_pg_dir, KERNEL_RAM_VADDR - PG_DIR_SIZE
2773
2774 .macro pgtbl, rd, phys
2775- add \rd, \phys, #TEXT_OFFSET - PG_DIR_SIZE
2776+ mov \rd, #TEXT_OFFSET
2777+ sub \rd, #PG_DIR_SIZE
2778+ add \rd, \rd, \phys
2779 .endm
2780
2781 /*
2782@@ -436,7 +438,7 @@ __enable_mmu:
2783 mov r5, #(domain_val(DOMAIN_USER, DOMAIN_MANAGER) | \ 2758 mov r5, #(domain_val(DOMAIN_USER, DOMAIN_MANAGER) | \
2784 domain_val(DOMAIN_KERNEL, DOMAIN_MANAGER) | \ 2759 domain_val(DOMAIN_KERNEL, DOMAIN_MANAGER) | \
2785 domain_val(DOMAIN_TABLE, DOMAIN_MANAGER) | \ 2760 domain_val(DOMAIN_TABLE, DOMAIN_MANAGER) | \
@@ -2991,7 +2966,7 @@ index 0dd3b79..e018f64 100644
2991 if (secure_computing(scno) == -1) 2966 if (secure_computing(scno) == -1)
2992 return -1; 2967 return -1;
2993diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c 2968diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
2994index 987a7f5..ab0c397 100644 2969index 1e8b030..37c3022 100644
2995--- a/arch/arm/kernel/setup.c 2970--- a/arch/arm/kernel/setup.c
2996+++ b/arch/arm/kernel/setup.c 2971+++ b/arch/arm/kernel/setup.c
2997@@ -100,21 +100,23 @@ EXPORT_SYMBOL(system_serial_high); 2972@@ -100,21 +100,23 @@ EXPORT_SYMBOL(system_serial_high);
@@ -3097,7 +3072,7 @@ index 04d6388..5115238 100644
3097- return page; 3072- return page;
3098-} 3073-}
3099diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c 3074diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c
3100index dc894ab..f929a0d 100644 3075index b7b4c86..47c4f77 100644
3101--- a/arch/arm/kernel/smp.c 3076--- a/arch/arm/kernel/smp.c
3102+++ b/arch/arm/kernel/smp.c 3077+++ b/arch/arm/kernel/smp.c
3103@@ -73,7 +73,7 @@ enum ipi_msg_type { 3078@@ -73,7 +73,7 @@ enum ipi_msg_type {
@@ -3109,15 +3084,38 @@ index dc894ab..f929a0d 100644
3109 3084
3110 void __init smp_set_ops(struct smp_operations *ops) 3085 void __init smp_set_ops(struct smp_operations *ops)
3111 { 3086 {
3087diff --git a/arch/arm/kernel/tcm.c b/arch/arm/kernel/tcm.c
3088index 7a3be1d..b00c7de 100644
3089--- a/arch/arm/kernel/tcm.c
3090+++ b/arch/arm/kernel/tcm.c
3091@@ -61,7 +61,7 @@ static struct map_desc itcm_iomap[] __initdata = {
3092 .virtual = ITCM_OFFSET,
3093 .pfn = __phys_to_pfn(ITCM_OFFSET),
3094 .length = 0,
3095- .type = MT_MEMORY_RWX_ITCM,
3096+ .type = MT_MEMORY_RX_ITCM,
3097 }
3098 };
3099
3100@@ -267,7 +267,9 @@ no_dtcm:
3101 start = &__sitcm_text;
3102 end = &__eitcm_text;
3103 ram = &__itcm_start;
3104+ pax_open_kernel();
3105 memcpy(start, ram, itcm_code_sz);
3106+ pax_close_kernel();
3107 pr_debug("CPU ITCM: copied code from %p - %p\n",
3108 start, end);
3109 itcm_present = true;
3112diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c 3110diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c
3113index 4636d56..ce4ec3d 100644 3111index 172ee18..ce4ec3d 100644
3114--- a/arch/arm/kernel/traps.c 3112--- a/arch/arm/kernel/traps.c
3115+++ b/arch/arm/kernel/traps.c 3113+++ b/arch/arm/kernel/traps.c
3116@@ -62,7 +62,7 @@ static void dump_mem(const char *, const char *, unsigned long, unsigned long); 3114@@ -62,7 +62,7 @@ static void dump_mem(const char *, const char *, unsigned long, unsigned long);
3117 void dump_backtrace_entry(unsigned long where, unsigned long from, unsigned long frame) 3115 void dump_backtrace_entry(unsigned long where, unsigned long from, unsigned long frame)
3118 { 3116 {
3119 #ifdef CONFIG_KALLSYMS 3117 #ifdef CONFIG_KALLSYMS
3120- printk("[<%08lx>] (%pS) from [<%08lx>] (%pS)\n", where, (void *)where, from, (void *)from); 3118- printk("[<%08lx>] (%ps) from [<%08lx>] (%pS)\n", where, (void *)where, from, (void *)from);
3121+ printk("[<%08lx>] (%pA) from [<%08lx>] (%pA)\n", where, (void *)where, from, (void *)from); 3119+ printk("[<%08lx>] (%pA) from [<%08lx>] (%pA)\n", where, (void *)where, from, (void *)from);
3122 #else 3120 #else
3123 printk("Function entered at [<%08lx>] from [<%08lx>]\n", where, from); 3121 printk("Function entered at [<%08lx>] from [<%08lx>]\n", where, from);
@@ -3235,10 +3233,10 @@ index 7bcee5c..e2f3249 100644
3235 __data_loc = .; 3233 __data_loc = .;
3236 #endif 3234 #endif
3237diff --git a/arch/arm/kvm/arm.c b/arch/arm/kvm/arm.c 3235diff --git a/arch/arm/kvm/arm.c b/arch/arm/kvm/arm.c
3238index 2a700e0..745b980 100644 3236index bd18bb8..87ede26 100644
3239--- a/arch/arm/kvm/arm.c 3237--- a/arch/arm/kvm/arm.c
3240+++ b/arch/arm/kvm/arm.c 3238+++ b/arch/arm/kvm/arm.c
3241@@ -56,7 +56,7 @@ static unsigned long hyp_default_vectors; 3239@@ -57,7 +57,7 @@ static unsigned long hyp_default_vectors;
3242 static DEFINE_PER_CPU(struct kvm_vcpu *, kvm_arm_running_vcpu); 3240 static DEFINE_PER_CPU(struct kvm_vcpu *, kvm_arm_running_vcpu);
3243 3241
3244 /* The VMID used in the VTTBR */ 3242 /* The VMID used in the VTTBR */
@@ -3247,7 +3245,7 @@ index 2a700e0..745b980 100644
3247 static u8 kvm_next_vmid; 3245 static u8 kvm_next_vmid;
3248 static DEFINE_SPINLOCK(kvm_vmid_lock); 3246 static DEFINE_SPINLOCK(kvm_vmid_lock);
3249 3247
3250@@ -397,7 +397,7 @@ void force_vm_exit(const cpumask_t *mask) 3248@@ -408,7 +408,7 @@ void force_vm_exit(const cpumask_t *mask)
3251 */ 3249 */
3252 static bool need_new_vmid_gen(struct kvm *kvm) 3250 static bool need_new_vmid_gen(struct kvm *kvm)
3253 { 3251 {
@@ -3256,7 +3254,7 @@ index 2a700e0..745b980 100644
3256 } 3254 }
3257 3255
3258 /** 3256 /**
3259@@ -430,7 +430,7 @@ static void update_vttbr(struct kvm *kvm) 3257@@ -441,7 +441,7 @@ static void update_vttbr(struct kvm *kvm)
3260 3258
3261 /* First user of a new VMID generation? */ 3259 /* First user of a new VMID generation? */
3262 if (unlikely(kvm_next_vmid == 0)) { 3260 if (unlikely(kvm_next_vmid == 0)) {
@@ -3265,7 +3263,7 @@ index 2a700e0..745b980 100644
3265 kvm_next_vmid = 1; 3263 kvm_next_vmid = 1;
3266 3264
3267 /* 3265 /*
3268@@ -447,7 +447,7 @@ static void update_vttbr(struct kvm *kvm) 3266@@ -458,7 +458,7 @@ static void update_vttbr(struct kvm *kvm)
3269 kvm_call_hyp(__kvm_flush_vm_context); 3267 kvm_call_hyp(__kvm_flush_vm_context);
3270 } 3268 }
3271 3269
@@ -3420,6 +3418,19 @@ index 3e58d71..029817c 100644
3420 { 3418 {
3421 /* See rational for this in __copy_to_user() above. */ 3419 /* See rational for this in __copy_to_user() above. */
3422 if (n < 64) 3420 if (n < 64)
3421diff --git a/arch/arm/mach-at91/setup.c b/arch/arm/mach-at91/setup.c
3422index f7ca97b..3d7e719 100644
3423--- a/arch/arm/mach-at91/setup.c
3424+++ b/arch/arm/mach-at91/setup.c
3425@@ -81,7 +81,7 @@ void __init at91_init_sram(int bank, unsigned long base, unsigned int length)
3426
3427 desc->pfn = __phys_to_pfn(base);
3428 desc->length = length;
3429- desc->type = MT_MEMORY_RWX_NONCACHED;
3430+ desc->type = MT_MEMORY_RW_NONCACHED;
3431
3432 pr_info("AT91: sram at 0x%lx of 0x%x mapped at 0x%lx\n",
3433 base, length, desc->virtual);
3423diff --git a/arch/arm/mach-kirkwood/common.c b/arch/arm/mach-kirkwood/common.c 3434diff --git a/arch/arm/mach-kirkwood/common.c b/arch/arm/mach-kirkwood/common.c
3424index f3407a5..bd4256f 100644 3435index f3407a5..bd4256f 100644
3425--- a/arch/arm/mach-kirkwood/common.c 3436--- a/arch/arm/mach-kirkwood/common.c
@@ -3458,10 +3469,10 @@ index f3407a5..bd4256f 100644
3458 3469
3459 if (IS_ERR(clk)) 3470 if (IS_ERR(clk))
3460diff --git a/arch/arm/mach-omap2/board-n8x0.c b/arch/arm/mach-omap2/board-n8x0.c 3471diff --git a/arch/arm/mach-omap2/board-n8x0.c b/arch/arm/mach-omap2/board-n8x0.c
3461index 827d1500..2885dc6 100644 3472index aead77a..a2253fa 100644
3462--- a/arch/arm/mach-omap2/board-n8x0.c 3473--- a/arch/arm/mach-omap2/board-n8x0.c
3463+++ b/arch/arm/mach-omap2/board-n8x0.c 3474+++ b/arch/arm/mach-omap2/board-n8x0.c
3464@@ -627,7 +627,7 @@ static int n8x0_menelaus_late_init(struct device *dev) 3475@@ -568,7 +568,7 @@ static int n8x0_menelaus_late_init(struct device *dev)
3465 } 3476 }
3466 #endif 3477 #endif
3467 3478
@@ -3518,7 +3529,7 @@ index ab43755..ccfa231 100644
3518 gpmc_client_irq[1].bitmask = GPMC_IRQ_COUNT_EVENT; 3529 gpmc_client_irq[1].bitmask = GPMC_IRQ_COUNT_EVENT;
3519 3530
3520diff --git a/arch/arm/mach-omap2/omap-mpuss-lowpower.c b/arch/arm/mach-omap2/omap-mpuss-lowpower.c 3531diff --git a/arch/arm/mach-omap2/omap-mpuss-lowpower.c b/arch/arm/mach-omap2/omap-mpuss-lowpower.c
3521index f991016..145ebeb 100644 3532index 667915d..2ee1219 100644
3522--- a/arch/arm/mach-omap2/omap-mpuss-lowpower.c 3533--- a/arch/arm/mach-omap2/omap-mpuss-lowpower.c
3523+++ b/arch/arm/mach-omap2/omap-mpuss-lowpower.c 3534+++ b/arch/arm/mach-omap2/omap-mpuss-lowpower.c
3524@@ -84,7 +84,7 @@ struct cpu_pm_ops { 3535@@ -84,7 +84,7 @@ struct cpu_pm_ops {
@@ -3553,10 +3564,10 @@ index 3664562..72f85c6 100644
3553 }; 3564 };
3554 3565
3555diff --git a/arch/arm/mach-omap2/omap_device.c b/arch/arm/mach-omap2/omap_device.c 3566diff --git a/arch/arm/mach-omap2/omap_device.c b/arch/arm/mach-omap2/omap_device.c
3556index e0a398c..a470fa5 100644 3567index 01ef59d..32ae28a8 100644
3557--- a/arch/arm/mach-omap2/omap_device.c 3568--- a/arch/arm/mach-omap2/omap_device.c
3558+++ b/arch/arm/mach-omap2/omap_device.c 3569+++ b/arch/arm/mach-omap2/omap_device.c
3559@@ -508,7 +508,7 @@ void omap_device_delete(struct omap_device *od) 3570@@ -510,7 +510,7 @@ void omap_device_delete(struct omap_device *od)
3560 struct platform_device __init *omap_device_build(const char *pdev_name, 3571 struct platform_device __init *omap_device_build(const char *pdev_name,
3561 int pdev_id, 3572 int pdev_id,
3562 struct omap_hwmod *oh, 3573 struct omap_hwmod *oh,
@@ -3565,7 +3576,7 @@ index e0a398c..a470fa5 100644
3565 { 3576 {
3566 struct omap_hwmod *ohs[] = { oh }; 3577 struct omap_hwmod *ohs[] = { oh };
3567 3578
3568@@ -536,7 +536,7 @@ struct platform_device __init *omap_device_build(const char *pdev_name, 3579@@ -538,7 +538,7 @@ struct platform_device __init *omap_device_build(const char *pdev_name,
3569 struct platform_device __init *omap_device_build_ss(const char *pdev_name, 3580 struct platform_device __init *omap_device_build_ss(const char *pdev_name,
3570 int pdev_id, 3581 int pdev_id,
3571 struct omap_hwmod **ohs, 3582 struct omap_hwmod **ohs,
@@ -3594,7 +3605,7 @@ index 78c02b3..c94109a 100644
3594 struct omap_device *omap_device_alloc(struct platform_device *pdev, 3605 struct omap_device *omap_device_alloc(struct platform_device *pdev,
3595 struct omap_hwmod **ohs, int oh_cnt); 3606 struct omap_hwmod **ohs, int oh_cnt);
3596diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c 3607diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
3597index 8a1b5e0..5f30074 100644 3608index 66c60fe..c78950d 100644
3598--- a/arch/arm/mach-omap2/omap_hwmod.c 3609--- a/arch/arm/mach-omap2/omap_hwmod.c
3599+++ b/arch/arm/mach-omap2/omap_hwmod.c 3610+++ b/arch/arm/mach-omap2/omap_hwmod.c
3600@@ -194,10 +194,10 @@ struct omap_hwmod_soc_ops { 3611@@ -194,10 +194,10 @@ struct omap_hwmod_soc_ops {
@@ -3671,10 +3682,10 @@ index b82dcae..44ee5b6 100644
3671 cpuidle_coupled_parallel_barrier(dev, &abort_barrier); 3682 cpuidle_coupled_parallel_barrier(dev, &abort_barrier);
3672 3683
3673diff --git a/arch/arm/mach-ux500/setup.h b/arch/arm/mach-ux500/setup.h 3684diff --git a/arch/arm/mach-ux500/setup.h b/arch/arm/mach-ux500/setup.h
3674index bdb3564..cebb96f 100644 3685index 2dea8b5..6499da2 100644
3675--- a/arch/arm/mach-ux500/setup.h 3686--- a/arch/arm/mach-ux500/setup.h
3676+++ b/arch/arm/mach-ux500/setup.h 3687+++ b/arch/arm/mach-ux500/setup.h
3677@@ -39,13 +39,6 @@ extern void ux500_timer_init(void); 3688@@ -33,13 +33,6 @@ extern void ux500_timer_init(void);
3678 .type = MT_DEVICE, \ 3689 .type = MT_DEVICE, \
3679 } 3690 }
3680 3691
@@ -3682,26 +3693,25 @@ index bdb3564..cebb96f 100644
3682- .virtual = IO_ADDRESS(x), \ 3693- .virtual = IO_ADDRESS(x), \
3683- .pfn = __phys_to_pfn(x), \ 3694- .pfn = __phys_to_pfn(x), \
3684- .length = sz, \ 3695- .length = sz, \
3685- .type = MT_MEMORY, \ 3696- .type = MT_MEMORY_RWX, \
3686-} 3697-}
3687- 3698-
3688 extern struct smp_operations ux500_smp_ops; 3699 extern struct smp_operations ux500_smp_ops;
3689 extern void ux500_cpu_die(unsigned int cpu); 3700 extern void ux500_cpu_die(unsigned int cpu);
3690 3701
3691diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig 3702diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig
3692index 1f8fed9..14d7823 100644 3703index ca8ecde..58ba893 100644
3693--- a/arch/arm/mm/Kconfig 3704--- a/arch/arm/mm/Kconfig
3694+++ b/arch/arm/mm/Kconfig 3705+++ b/arch/arm/mm/Kconfig
3695@@ -446,7 +446,7 @@ config CPU_32v5 3706@@ -446,6 +446,7 @@ config CPU_32v5
3696 3707
3697 config CPU_32v6 3708 config CPU_32v6
3698 bool 3709 bool
3699- select CPU_USE_DOMAINS if CPU_V6 && MMU
3700+ select CPU_USE_DOMAINS if CPU_V6 && MMU && !PAX_KERNEXEC && !PAX_MEMORY_UDEREF 3710+ select CPU_USE_DOMAINS if CPU_V6 && MMU && !PAX_KERNEXEC && !PAX_MEMORY_UDEREF
3701 select TLS_REG_EMUL if !CPU_32v6K && !MMU 3711 select TLS_REG_EMUL if !CPU_32v6K && !MMU
3702 3712
3703 config CPU_32v6K 3713 config CPU_32v6K
3704@@ -601,6 +601,7 @@ config CPU_CP15_MPU 3714@@ -600,6 +601,7 @@ config CPU_CP15_MPU
3705 3715
3706 config CPU_USE_DOMAINS 3716 config CPU_USE_DOMAINS
3707 bool 3717 bool
@@ -3709,7 +3719,7 @@ index 1f8fed9..14d7823 100644
3709 help 3719 help
3710 This option enables or disables the use of domain switching 3720 This option enables or disables the use of domain switching
3711 via the set_fs() function. 3721 via the set_fs() function.
3712@@ -800,6 +801,7 @@ config NEED_KUSER_HELPERS 3722@@ -799,6 +801,7 @@ config NEED_KUSER_HELPERS
3713 config KUSER_HELPERS 3723 config KUSER_HELPERS
3714 bool "Enable kuser helpers in vector page" if !NEED_KUSER_HELPERS 3724 bool "Enable kuser helpers in vector page" if !NEED_KUSER_HELPERS
3715 default y 3725 default y
@@ -3717,7 +3727,7 @@ index 1f8fed9..14d7823 100644
3717 help 3727 help
3718 Warning: disabling this option may break user programs. 3728 Warning: disabling this option may break user programs.
3719 3729
3720@@ -812,7 +814,7 @@ config KUSER_HELPERS 3730@@ -811,7 +814,7 @@ config KUSER_HELPERS
3721 See Documentation/arm/kernel_user_helpers.txt for details. 3731 See Documentation/arm/kernel_user_helpers.txt for details.
3722 3732
3723 However, the fixed address nature of these helpers can be used 3733 However, the fixed address nature of these helpers can be used
@@ -3792,10 +3802,10 @@ index 9240364..a2b8cf3 100644
3792 goto fault; \ 3802 goto fault; \
3793 } while (0) 3803 } while (0)
3794diff --git a/arch/arm/mm/cache-l2x0.c b/arch/arm/mm/cache-l2x0.c 3804diff --git a/arch/arm/mm/cache-l2x0.c b/arch/arm/mm/cache-l2x0.c
3795index 447da6f..77a5057 100644 3805index 7abde2c..9df495f 100644
3796--- a/arch/arm/mm/cache-l2x0.c 3806--- a/arch/arm/mm/cache-l2x0.c
3797+++ b/arch/arm/mm/cache-l2x0.c 3807+++ b/arch/arm/mm/cache-l2x0.c
3798@@ -45,7 +45,7 @@ struct l2x0_of_data { 3808@@ -46,7 +46,7 @@ struct l2x0_of_data {
3799 void (*setup)(const struct device_node *, u32 *, u32 *); 3809 void (*setup)(const struct device_node *, u32 *, u32 *);
3800 void (*save)(void); 3810 void (*save)(void);
3801 struct outer_cache_fns outer_cache; 3811 struct outer_cache_fns outer_cache;
@@ -3805,7 +3815,7 @@ index 447da6f..77a5057 100644
3805 static bool of_init = false; 3815 static bool of_init = false;
3806 3816
3807diff --git a/arch/arm/mm/context.c b/arch/arm/mm/context.c 3817diff --git a/arch/arm/mm/context.c b/arch/arm/mm/context.c
3808index 84e6f77..0b52f31 100644 3818index 6eb97b3..ac509f6 100644
3809--- a/arch/arm/mm/context.c 3819--- a/arch/arm/mm/context.c
3810+++ b/arch/arm/mm/context.c 3820+++ b/arch/arm/mm/context.c
3811@@ -43,7 +43,7 @@ 3821@@ -43,7 +43,7 @@
@@ -3817,25 +3827,25 @@ index 84e6f77..0b52f31 100644
3817 static DECLARE_BITMAP(asid_map, NUM_USER_ASIDS); 3827 static DECLARE_BITMAP(asid_map, NUM_USER_ASIDS);
3818 3828
3819 static DEFINE_PER_CPU(atomic64_t, active_asids); 3829 static DEFINE_PER_CPU(atomic64_t, active_asids);
3820@@ -180,7 +180,7 @@ static int is_reserved_asid(u64 asid) 3830@@ -182,7 +182,7 @@ static u64 new_context(struct mm_struct *mm, unsigned int cpu)
3821 static u64 new_context(struct mm_struct *mm, unsigned int cpu)
3822 { 3831 {
3832 static u32 cur_idx = 1;
3823 u64 asid = atomic64_read(&mm->context.id); 3833 u64 asid = atomic64_read(&mm->context.id);
3824- u64 generation = atomic64_read(&asid_generation); 3834- u64 generation = atomic64_read(&asid_generation);
3825+ u64 generation = atomic64_read_unchecked(&asid_generation); 3835+ u64 generation = atomic64_read_unchecked(&asid_generation);
3826 3836
3827 if (asid != 0 && is_reserved_asid(asid)) { 3837 if (asid != 0 && is_reserved_asid(asid)) {
3828 /* 3838 /*
3829@@ -198,7 +198,7 @@ static u64 new_context(struct mm_struct *mm, unsigned int cpu) 3839@@ -203,7 +203,7 @@ static u64 new_context(struct mm_struct *mm, unsigned int cpu)
3830 */ 3840 */
3831 asid = find_next_zero_bit(asid_map, NUM_USER_ASIDS, 1); 3841 asid = find_next_zero_bit(asid_map, NUM_USER_ASIDS, cur_idx);
3832 if (asid == NUM_USER_ASIDS) { 3842 if (asid == NUM_USER_ASIDS) {
3833- generation = atomic64_add_return(ASID_FIRST_VERSION, 3843- generation = atomic64_add_return(ASID_FIRST_VERSION,
3834+ generation = atomic64_add_return_unchecked(ASID_FIRST_VERSION, 3844+ generation = atomic64_add_return_unchecked(ASID_FIRST_VERSION,
3835 &asid_generation); 3845 &asid_generation);
3836 flush_context(cpu); 3846 flush_context(cpu);
3837 asid = find_next_zero_bit(asid_map, NUM_USER_ASIDS, 1); 3847 asid = find_next_zero_bit(asid_map, NUM_USER_ASIDS, 1);
3838@@ -227,14 +227,14 @@ void check_and_switch_context(struct mm_struct *mm, struct task_struct *tsk) 3848@@ -234,14 +234,14 @@ void check_and_switch_context(struct mm_struct *mm, struct task_struct *tsk)
3839 cpu_set_reserved_ttbr0(); 3849 cpu_set_reserved_ttbr0();
3840 3850
3841 asid = atomic64_read(&mm->context.id); 3851 asid = atomic64_read(&mm->context.id);
@@ -4097,7 +4107,7 @@ index cf08bdf..772656c 100644
4097 unsigned long search_exception_table(unsigned long addr); 4107 unsigned long search_exception_table(unsigned long addr);
4098 4108
4099diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c 4109diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c
4100index 3e8f106..a0a1fe4 100644 4110index 804d615..fcec50a 100644
4101--- a/arch/arm/mm/init.c 4111--- a/arch/arm/mm/init.c
4102+++ b/arch/arm/mm/init.c 4112+++ b/arch/arm/mm/init.c
4103@@ -30,6 +30,8 @@ 4113@@ -30,6 +30,8 @@
@@ -4109,7 +4119,7 @@ index 3e8f106..a0a1fe4 100644
4109 4119
4110 #include <asm/mach/arch.h> 4120 #include <asm/mach/arch.h>
4111 #include <asm/mach/map.h> 4121 #include <asm/mach/map.h>
4112@@ -681,7 +683,46 @@ void free_initmem(void) 4122@@ -625,7 +627,46 @@ void free_initmem(void)
4113 { 4123 {
4114 #ifdef CONFIG_HAVE_TCM 4124 #ifdef CONFIG_HAVE_TCM
4115 extern char __tcm_start, __tcm_end; 4125 extern char __tcm_start, __tcm_end;
@@ -4157,18 +4167,18 @@ index 3e8f106..a0a1fe4 100644
4157 free_reserved_area(&__tcm_start, &__tcm_end, -1, "TCM link"); 4167 free_reserved_area(&__tcm_start, &__tcm_end, -1, "TCM link");
4158 #endif 4168 #endif
4159diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c 4169diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c
4160index f123d6e..04bf569 100644 4170index f9c32ba..8540068 100644
4161--- a/arch/arm/mm/ioremap.c 4171--- a/arch/arm/mm/ioremap.c
4162+++ b/arch/arm/mm/ioremap.c 4172+++ b/arch/arm/mm/ioremap.c
4163@@ -392,9 +392,9 @@ __arm_ioremap_exec(phys_addr_t phys_addr, size_t size, bool cached) 4173@@ -392,9 +392,9 @@ __arm_ioremap_exec(phys_addr_t phys_addr, size_t size, bool cached)
4164 unsigned int mtype; 4174 unsigned int mtype;
4165 4175
4166 if (cached) 4176 if (cached)
4167- mtype = MT_MEMORY; 4177- mtype = MT_MEMORY_RWX;
4168+ mtype = MT_MEMORY_RX; 4178+ mtype = MT_MEMORY_RX;
4169 else 4179 else
4170- mtype = MT_MEMORY_NONCACHED; 4180- mtype = MT_MEMORY_RWX_NONCACHED;
4171+ mtype = MT_MEMORY_NONCACHED_RX; 4181+ mtype = MT_MEMORY_RX_NONCACHED;
4172 4182
4173 return __arm_ioremap_caller(phys_addr, size, mtype, 4183 return __arm_ioremap_caller(phys_addr, size, mtype,
4174 __builtin_return_address(0)); 4184 __builtin_return_address(0));
@@ -4284,10 +4294,10 @@ index 5e85ed3..b10a7ed 100644
4284 } 4294 }
4285 } 4295 }
4286diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c 4296diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
4287index 911d433..8580952 100644 4297index b68c6b2..f66c492 100644
4288--- a/arch/arm/mm/mmu.c 4298--- a/arch/arm/mm/mmu.c
4289+++ b/arch/arm/mm/mmu.c 4299+++ b/arch/arm/mm/mmu.c
4290@@ -38,6 +38,22 @@ 4300@@ -39,6 +39,22 @@
4291 #include "mm.h" 4301 #include "mm.h"
4292 #include "tcm.h" 4302 #include "tcm.h"
4293 4303
@@ -4310,12 +4320,7 @@ index 911d433..8580952 100644
4310 /* 4320 /*
4311 * empty_zero_page is a special page that is used for 4321 * empty_zero_page is a special page that is used for
4312 * zero-initialized data and COW. 4322 * zero-initialized data and COW.
4313@@ -230,11 +246,19 @@ __setup("noalign", noalign_setup); 4323@@ -235,7 +251,15 @@ __setup("noalign", noalign_setup);
4314
4315 #endif /* ifdef CONFIG_CPU_CP15 / else */
4316
4317-#define PROT_PTE_DEVICE L_PTE_PRESENT|L_PTE_YOUNG|L_PTE_DIRTY|L_PTE_XN
4318+#define PROT_PTE_DEVICE L_PTE_PRESENT|L_PTE_YOUNG|L_PTE_DIRTY
4319 #define PROT_PTE_S2_DEVICE PROT_PTE_DEVICE 4324 #define PROT_PTE_S2_DEVICE PROT_PTE_DEVICE
4320 #define PROT_SECT_DEVICE PMD_TYPE_SECT|PMD_SECT_AP_WRITE 4325 #define PROT_SECT_DEVICE PMD_TYPE_SECT|PMD_SECT_AP_WRITE
4321 4326
@@ -4332,27 +4337,32 @@ index 911d433..8580952 100644
4332 [MT_DEVICE] = { /* Strongly ordered / ARMv6 shared device */ 4337 [MT_DEVICE] = { /* Strongly ordered / ARMv6 shared device */
4333 .prot_pte = PROT_PTE_DEVICE | L_PTE_MT_DEV_SHARED | 4338 .prot_pte = PROT_PTE_DEVICE | L_PTE_MT_DEV_SHARED |
4334 L_PTE_SHARED, 4339 L_PTE_SHARED,
4335@@ -266,16 +290,16 @@ static struct mem_type mem_types[] = { 4340@@ -264,19 +288,19 @@ static struct mem_type mem_types[] = {
4336 [MT_UNCACHED] = { 4341 .prot_sect = PROT_SECT_DEVICE,
4342 .domain = DOMAIN_IO,
4343 },
4344- [MT_UNCACHED] = {
4345+ [MT_UNCACHED_RW] = {
4337 .prot_pte = PROT_PTE_DEVICE, 4346 .prot_pte = PROT_PTE_DEVICE,
4338 .prot_l1 = PMD_TYPE_TABLE, 4347 .prot_l1 = PMD_TYPE_TABLE,
4339- .prot_sect = PMD_TYPE_SECT | PMD_SECT_XN, 4348 .prot_sect = PMD_TYPE_SECT | PMD_SECT_XN,
4340+ .prot_sect = PROT_SECT_DEVICE,
4341 .domain = DOMAIN_IO, 4349 .domain = DOMAIN_IO,
4342 }, 4350 },
4343 [MT_CACHECLEAN] = { 4351- [MT_CACHECLEAN] = {
4344- .prot_sect = PMD_TYPE_SECT | PMD_SECT_XN, 4352- .prot_sect = PMD_TYPE_SECT | PMD_SECT_XN,
4345+ .prot_sect = PMD_TYPE_SECT | PMD_SECT_RDONLY, 4353+ [MT_CACHECLEAN_RO] = {
4354+ .prot_sect = PMD_TYPE_SECT | PMD_SECT_XN | PMD_SECT_RDONLY,
4346 .domain = DOMAIN_KERNEL, 4355 .domain = DOMAIN_KERNEL,
4347 }, 4356 },
4348 #ifndef CONFIG_ARM_LPAE 4357 #ifndef CONFIG_ARM_LPAE
4349 [MT_MINICLEAN] = { 4358- [MT_MINICLEAN] = {
4350- .prot_sect = PMD_TYPE_SECT | PMD_SECT_XN | PMD_SECT_MINICACHE, 4359- .prot_sect = PMD_TYPE_SECT | PMD_SECT_XN | PMD_SECT_MINICACHE,
4351+ .prot_sect = PMD_TYPE_SECT | PMD_SECT_MINICACHE | PMD_SECT_RDONLY, 4360+ [MT_MINICLEAN_RO] = {
4361+ .prot_sect = PMD_TYPE_SECT | PMD_SECT_MINICACHE | PMD_SECT_XN | PMD_SECT_RDONLY,
4352 .domain = DOMAIN_KERNEL, 4362 .domain = DOMAIN_KERNEL,
4353 }, 4363 },
4354 #endif 4364 #endif
4355@@ -283,36 +307,54 @@ static struct mem_type mem_types[] = { 4365@@ -284,15 +308,15 @@ static struct mem_type mem_types[] = {
4356 .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY | 4366 .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY |
4357 L_PTE_RDONLY, 4367 L_PTE_RDONLY,
4358 .prot_l1 = PMD_TYPE_TABLE, 4368 .prot_l1 = PMD_TYPE_TABLE,
@@ -4366,161 +4376,123 @@ index 911d433..8580952 100644
4366- .domain = DOMAIN_USER, 4376- .domain = DOMAIN_USER,
4367+ .domain = DOMAIN_VECTORS, 4377+ .domain = DOMAIN_VECTORS,
4368 }, 4378 },
4369- [MT_MEMORY] = { 4379- [MT_MEMORY_RWX] = {
4370+ [MT_MEMORY_RWX] = { 4380+ [__MT_MEMORY_RWX] = {
4371 .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY, 4381 .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY,
4372 .prot_l1 = PMD_TYPE_TABLE, 4382 .prot_l1 = PMD_TYPE_TABLE,
4373 .prot_sect = PMD_TYPE_SECT | PMD_SECT_AP_WRITE, 4383 .prot_sect = PMD_TYPE_SECT | PMD_SECT_AP_WRITE,
4384@@ -305,17 +329,30 @@ static struct mem_type mem_types[] = {
4385 .prot_sect = PMD_TYPE_SECT | PMD_SECT_AP_WRITE,
4374 .domain = DOMAIN_KERNEL, 4386 .domain = DOMAIN_KERNEL,
4375 }, 4387 },
4376+ [MT_MEMORY_RW] = { 4388- [MT_ROM] = {
4377+ .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY, 4389- .prot_sect = PMD_TYPE_SECT,
4378+ .prot_l1 = PMD_TYPE_TABLE,
4379+ .prot_sect = PMD_TYPE_SECT | PMD_SECT_AP_WRITE,
4380+ .domain = DOMAIN_KERNEL,
4381+ },
4382+ [MT_MEMORY_RX] = { 4390+ [MT_MEMORY_RX] = {
4383+ .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_KERNEXEC, 4391+ .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_KERNEXEC,
4384+ .prot_l1 = PMD_TYPE_TABLE, 4392+ .prot_l1 = PMD_TYPE_TABLE,
4385+ .prot_sect = PMD_TYPE_SECT | PMD_SECT_KERNEXEC, 4393+ .prot_sect = PMD_TYPE_SECT | PMD_SECT_KERNEXEC,
4386+ .domain = DOMAIN_KERNEL, 4394+ .domain = DOMAIN_KERNEL,
4387+ }, 4395+ },
4388 [MT_ROM] = { 4396+ [MT_ROM_RX] = {
4389- .prot_sect = PMD_TYPE_SECT,
4390+ .prot_sect = PMD_TYPE_SECT | PMD_SECT_RDONLY, 4397+ .prot_sect = PMD_TYPE_SECT | PMD_SECT_RDONLY,
4391 .domain = DOMAIN_KERNEL, 4398 .domain = DOMAIN_KERNEL,
4392 }, 4399 },
4393- [MT_MEMORY_NONCACHED] = { 4400- [MT_MEMORY_RWX_NONCACHED] = {
4394+ [MT_MEMORY_NONCACHED_RW] = { 4401+ [MT_MEMORY_RW_NONCACHED] = {
4395 .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY | 4402 .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY |
4396 L_PTE_MT_BUFFERABLE, 4403 L_PTE_MT_BUFFERABLE,
4397 .prot_l1 = PMD_TYPE_TABLE, 4404 .prot_l1 = PMD_TYPE_TABLE,
4398 .prot_sect = PMD_TYPE_SECT | PMD_SECT_AP_WRITE, 4405 .prot_sect = PMD_TYPE_SECT | PMD_SECT_AP_WRITE,
4399 .domain = DOMAIN_KERNEL, 4406 .domain = DOMAIN_KERNEL,
4400 }, 4407 },
4401+ [MT_MEMORY_NONCACHED_RX] = { 4408+ [MT_MEMORY_RX_NONCACHED] = {
4402+ .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_KERNEXEC | 4409+ .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_KERNEXEC |
4403+ L_PTE_MT_BUFFERABLE, 4410+ L_PTE_MT_BUFFERABLE,
4404+ .prot_l1 = PMD_TYPE_TABLE, 4411+ .prot_l1 = PMD_TYPE_TABLE,
4405+ .prot_sect = PMD_TYPE_SECT | PMD_SECT_KERNEXEC, 4412+ .prot_sect = PMD_TYPE_SECT | PMD_SECT_KERNEXEC,
4406+ .domain = DOMAIN_KERNEL, 4413+ .domain = DOMAIN_KERNEL,
4407+ }, 4414+ },
4408 [MT_MEMORY_DTCM] = { 4415 [MT_MEMORY_RW_DTCM] = {
4409- .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY | 4416 .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY |
4410- L_PTE_XN, 4417 L_PTE_XN,
4411+ .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY, 4418@@ -323,9 +360,10 @@ static struct mem_type mem_types[] = {
4412 .prot_l1 = PMD_TYPE_TABLE, 4419 .prot_sect = PMD_TYPE_SECT | PMD_SECT_XN,
4413- .prot_sect = PMD_TYPE_SECT | PMD_SECT_XN,
4414+ .prot_sect = PMD_TYPE_SECT | PMD_SECT_RDONLY,
4415 .domain = DOMAIN_KERNEL, 4420 .domain = DOMAIN_KERNEL,
4416 }, 4421 },
4417 [MT_MEMORY_ITCM] = { 4422- [MT_MEMORY_RWX_ITCM] = {
4418@@ -322,10 +364,10 @@ static struct mem_type mem_types[] = { 4423- .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY,
4419 }, 4424+ [MT_MEMORY_RX_ITCM] = {
4420 [MT_MEMORY_SO] = { 4425+ .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_KERNEXEC,
4421 .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY |
4422- L_PTE_MT_UNCACHED | L_PTE_XN,
4423+ L_PTE_MT_UNCACHED,
4424 .prot_l1 = PMD_TYPE_TABLE, 4426 .prot_l1 = PMD_TYPE_TABLE,
4425 .prot_sect = PMD_TYPE_SECT | PMD_SECT_AP_WRITE | PMD_SECT_S | 4427+ .prot_sect = PMD_TYPE_SECT | PMD_SECT_KERNEXEC,
4426- PMD_SECT_UNCACHED | PMD_SECT_XN,
4427+ PMD_SECT_UNCACHED,
4428 .domain = DOMAIN_KERNEL, 4428 .domain = DOMAIN_KERNEL,
4429 }, 4429 },
4430 [MT_MEMORY_DMA_READY] = { 4430 [MT_MEMORY_RW_SO] = {
4431@@ -411,9 +453,35 @@ static void __init build_mem_type_table(void) 4431@@ -534,9 +572,14 @@ static void __init build_mem_type_table(void)
4432 * to prevent speculative instruction fetches. 4432 * Mark cache clean areas and XIP ROM read only
4433 */
4434 mem_types[MT_DEVICE].prot_sect |= PMD_SECT_XN;
4435+ mem_types[MT_DEVICE].prot_pte |= L_PTE_XN;
4436 mem_types[MT_DEVICE_NONSHARED].prot_sect |= PMD_SECT_XN;
4437+ mem_types[MT_DEVICE_NONSHARED].prot_pte |= L_PTE_XN;
4438 mem_types[MT_DEVICE_CACHED].prot_sect |= PMD_SECT_XN;
4439+ mem_types[MT_DEVICE_CACHED].prot_pte |= L_PTE_XN;
4440 mem_types[MT_DEVICE_WC].prot_sect |= PMD_SECT_XN;
4441+ mem_types[MT_DEVICE_WC].prot_pte |= L_PTE_XN;
4442+
4443+ /* Mark other regions on ARMv6+ as execute-never */
4444+
4445+#ifdef CONFIG_PAX_KERNEXEC
4446+ mem_types[MT_UNCACHED].prot_sect |= PMD_SECT_XN;
4447+ mem_types[MT_UNCACHED].prot_pte |= L_PTE_XN;
4448+ mem_types[MT_CACHECLEAN].prot_sect |= PMD_SECT_XN;
4449+ mem_types[MT_CACHECLEAN].prot_pte |= L_PTE_XN;
4450+#ifndef CONFIG_ARM_LPAE
4451+ mem_types[MT_MINICLEAN].prot_sect |= PMD_SECT_XN;
4452+ mem_types[MT_MINICLEAN].prot_pte |= L_PTE_XN;
4453+#endif
4454+ mem_types[MT_MEMORY_RW].prot_sect |= PMD_SECT_XN;
4455+ mem_types[MT_MEMORY_RW].prot_pte |= L_PTE_XN;
4456+ mem_types[MT_MEMORY_NONCACHED_RW].prot_sect |= PMD_SECT_XN;
4457+ mem_types[MT_MEMORY_NONCACHED_RW].prot_pte |= PMD_SECT_XN;
4458+ mem_types[MT_MEMORY_DTCM].prot_sect |= PMD_SECT_XN;
4459+ mem_types[MT_MEMORY_DTCM].prot_pte |= L_PTE_XN;
4460+#endif
4461+
4462+ mem_types[MT_MEMORY_SO].prot_sect |= PMD_SECT_XN;
4463+ mem_types[MT_MEMORY_SO].prot_pte |= L_PTE_XN;
4464 }
4465 if (cpu_arch >= CPU_ARCH_ARMv7 && (cr & CR_TRE)) {
4466 /*
4467@@ -475,6 +543,9 @@ static void __init build_mem_type_table(void)
4468 * from SVC mode and no access from userspace. 4433 * from SVC mode and no access from userspace.
4469 */ 4434 */
4470 mem_types[MT_ROM].prot_sect |= PMD_SECT_APX|PMD_SECT_AP_WRITE; 4435- mem_types[MT_ROM].prot_sect |= PMD_SECT_APX|PMD_SECT_AP_WRITE;
4436- mem_types[MT_MINICLEAN].prot_sect |= PMD_SECT_APX|PMD_SECT_AP_WRITE;
4437- mem_types[MT_CACHECLEAN].prot_sect |= PMD_SECT_APX|PMD_SECT_AP_WRITE;
4438+ mem_types[MT_ROM_RX].prot_sect |= PMD_SECT_APX|PMD_SECT_AP_WRITE;
4471+#ifdef CONFIG_PAX_KERNEXEC 4439+#ifdef CONFIG_PAX_KERNEXEC
4472+ mem_types[MT_MEMORY_RX].prot_sect |= PMD_SECT_APX|PMD_SECT_AP_WRITE; 4440+ mem_types[MT_MEMORY_RX].prot_sect |= PMD_SECT_APX|PMD_SECT_AP_WRITE;
4441+ mem_types[MT_MEMORY_RX_NONCACHED].prot_sect |= PMD_SECT_APX|PMD_SECT_AP_WRITE;
4442+ mem_types[MT_MEMORY_RX_ITCM].prot_sect |= PMD_SECT_APX|PMD_SECT_AP_WRITE;
4473+#endif 4443+#endif
4474 mem_types[MT_MINICLEAN].prot_sect |= PMD_SECT_APX|PMD_SECT_AP_WRITE; 4444+ mem_types[MT_MINICLEAN_RO].prot_sect |= PMD_SECT_APX|PMD_SECT_AP_WRITE;
4475 mem_types[MT_CACHECLEAN].prot_sect |= PMD_SECT_APX|PMD_SECT_AP_WRITE; 4445+ mem_types[MT_CACHECLEAN_RO].prot_sect |= PMD_SECT_APX|PMD_SECT_AP_WRITE;
4476 #endif 4446 #endif
4477@@ -492,11 +563,17 @@ static void __init build_mem_type_table(void) 4447
4448 if (is_smp()) {
4449@@ -552,13 +595,17 @@ static void __init build_mem_type_table(void)
4478 mem_types[MT_DEVICE_WC].prot_pte |= L_PTE_SHARED; 4450 mem_types[MT_DEVICE_WC].prot_pte |= L_PTE_SHARED;
4479 mem_types[MT_DEVICE_CACHED].prot_sect |= PMD_SECT_S; 4451 mem_types[MT_DEVICE_CACHED].prot_sect |= PMD_SECT_S;
4480 mem_types[MT_DEVICE_CACHED].prot_pte |= L_PTE_SHARED; 4452 mem_types[MT_DEVICE_CACHED].prot_pte |= L_PTE_SHARED;
4481- mem_types[MT_MEMORY].prot_sect |= PMD_SECT_S; 4453- mem_types[MT_MEMORY_RWX].prot_sect |= PMD_SECT_S;
4482- mem_types[MT_MEMORY].prot_pte |= L_PTE_SHARED; 4454- mem_types[MT_MEMORY_RWX].prot_pte |= L_PTE_SHARED;
4483+ mem_types[MT_MEMORY_RWX].prot_sect |= PMD_SECT_S; 4455+ mem_types[__MT_MEMORY_RWX].prot_sect |= PMD_SECT_S;
4484+ mem_types[MT_MEMORY_RWX].prot_pte |= L_PTE_SHARED; 4456+ mem_types[__MT_MEMORY_RWX].prot_pte |= L_PTE_SHARED;
4485+ mem_types[MT_MEMORY_RW].prot_sect |= PMD_SECT_S; 4457 mem_types[MT_MEMORY_RW].prot_sect |= PMD_SECT_S;
4486+ mem_types[MT_MEMORY_RW].prot_pte |= L_PTE_SHARED; 4458 mem_types[MT_MEMORY_RW].prot_pte |= L_PTE_SHARED;
4487+ mem_types[MT_MEMORY_RX].prot_sect |= PMD_SECT_S; 4459+ mem_types[MT_MEMORY_RX].prot_sect |= PMD_SECT_S;
4488+ mem_types[MT_MEMORY_RX].prot_pte |= L_PTE_SHARED; 4460+ mem_types[MT_MEMORY_RX].prot_pte |= L_PTE_SHARED;
4489 mem_types[MT_MEMORY_DMA_READY].prot_pte |= L_PTE_SHARED; 4461 mem_types[MT_MEMORY_DMA_READY].prot_pte |= L_PTE_SHARED;
4490- mem_types[MT_MEMORY_NONCACHED].prot_sect |= PMD_SECT_S; 4462- mem_types[MT_MEMORY_RWX_NONCACHED].prot_sect |= PMD_SECT_S;
4491- mem_types[MT_MEMORY_NONCACHED].prot_pte |= L_PTE_SHARED; 4463- mem_types[MT_MEMORY_RWX_NONCACHED].prot_pte |= L_PTE_SHARED;
4492+ mem_types[MT_MEMORY_NONCACHED_RW].prot_sect |= PMD_SECT_S; 4464+ mem_types[MT_MEMORY_RW_NONCACHED].prot_sect |= PMD_SECT_S;
4493+ mem_types[MT_MEMORY_NONCACHED_RW].prot_pte |= L_PTE_SHARED; 4465+ mem_types[MT_MEMORY_RW_NONCACHED].prot_pte |= L_PTE_SHARED;
4494+ mem_types[MT_MEMORY_NONCACHED_RX].prot_sect |= PMD_SECT_S; 4466+ mem_types[MT_MEMORY_RX_NONCACHED].prot_sect |= PMD_SECT_S;
4495+ mem_types[MT_MEMORY_NONCACHED_RX].prot_pte |= L_PTE_SHARED; 4467+ mem_types[MT_MEMORY_RX_NONCACHED].prot_pte |= L_PTE_SHARED;
4496 } 4468 }
4497 } 4469 }
4498 4470
4499@@ -507,15 +584,20 @@ static void __init build_mem_type_table(void) 4471@@ -569,15 +616,20 @@ static void __init build_mem_type_table(void)
4500 if (cpu_arch >= CPU_ARCH_ARMv6) { 4472 if (cpu_arch >= CPU_ARCH_ARMv6) {
4501 if (cpu_arch >= CPU_ARCH_ARMv7 && (cr & CR_TRE)) { 4473 if (cpu_arch >= CPU_ARCH_ARMv7 && (cr & CR_TRE)) {
4502 /* Non-cacheable Normal is XCB = 001 */ 4474 /* Non-cacheable Normal is XCB = 001 */
4503- mem_types[MT_MEMORY_NONCACHED].prot_sect |= 4475- mem_types[MT_MEMORY_RWX_NONCACHED].prot_sect |=
4504+ mem_types[MT_MEMORY_NONCACHED_RW].prot_sect |= 4476+ mem_types[MT_MEMORY_RW_NONCACHED].prot_sect |=
4505+ PMD_SECT_BUFFERED; 4477+ PMD_SECT_BUFFERED;
4506+ mem_types[MT_MEMORY_NONCACHED_RX].prot_sect |= 4478+ mem_types[MT_MEMORY_RX_NONCACHED].prot_sect |=
4507 PMD_SECT_BUFFERED; 4479 PMD_SECT_BUFFERED;
4508 } else { 4480 } else {
4509 /* For both ARMv6 and non-TEX-remapping ARMv7 */ 4481 /* For both ARMv6 and non-TEX-remapping ARMv7 */
4510- mem_types[MT_MEMORY_NONCACHED].prot_sect |= 4482- mem_types[MT_MEMORY_RWX_NONCACHED].prot_sect |=
4511+ mem_types[MT_MEMORY_NONCACHED_RW].prot_sect |= 4483+ mem_types[MT_MEMORY_RW_NONCACHED].prot_sect |=
4512+ PMD_SECT_TEX(1); 4484+ PMD_SECT_TEX(1);
4513+ mem_types[MT_MEMORY_NONCACHED_RX].prot_sect |= 4485+ mem_types[MT_MEMORY_RX_NONCACHED].prot_sect |=
4514 PMD_SECT_TEX(1); 4486 PMD_SECT_TEX(1);
4515 } 4487 }
4516 } else { 4488 } else {
4517- mem_types[MT_MEMORY_NONCACHED].prot_sect |= PMD_SECT_BUFFERABLE; 4489- mem_types[MT_MEMORY_RWX_NONCACHED].prot_sect |= PMD_SECT_BUFFERABLE;
4518+ mem_types[MT_MEMORY_NONCACHED_RW].prot_sect |= PMD_SECT_BUFFERABLE; 4490+ mem_types[MT_MEMORY_RW_NONCACHED].prot_sect |= PMD_SECT_BUFFERABLE;
4519+ mem_types[MT_MEMORY_NONCACHED_RX].prot_sect |= PMD_SECT_BUFFERABLE; 4491+ mem_types[MT_MEMORY_RX_NONCACHED].prot_sect |= PMD_SECT_BUFFERABLE;
4520 } 4492 }
4521 4493
4522 #ifdef CONFIG_ARM_LPAE 4494 #ifdef CONFIG_ARM_LPAE
4523@@ -531,6 +613,8 @@ static void __init build_mem_type_table(void) 4495@@ -593,6 +645,8 @@ static void __init build_mem_type_table(void)
4524 vecs_pgprot |= PTE_EXT_AF; 4496 vecs_pgprot |= PTE_EXT_AF;
4525 #endif 4497 #endif
4526 4498
@@ -4529,26 +4501,47 @@ index 911d433..8580952 100644
4529 for (i = 0; i < 16; i++) { 4501 for (i = 0; i < 16; i++) {
4530 pteval_t v = pgprot_val(protection_map[i]); 4502 pteval_t v = pgprot_val(protection_map[i]);
4531 protection_map[i] = __pgprot(v | user_pgprot); 4503 protection_map[i] = __pgprot(v | user_pgprot);
4532@@ -548,10 +632,15 @@ static void __init build_mem_type_table(void) 4504@@ -610,21 +664,24 @@ static void __init build_mem_type_table(void)
4533 4505
4534 mem_types[MT_LOW_VECTORS].prot_l1 |= ecc_mask; 4506 mem_types[MT_LOW_VECTORS].prot_l1 |= ecc_mask;
4535 mem_types[MT_HIGH_VECTORS].prot_l1 |= ecc_mask; 4507 mem_types[MT_HIGH_VECTORS].prot_l1 |= ecc_mask;
4536- mem_types[MT_MEMORY].prot_sect |= ecc_mask | cp->pmd; 4508- mem_types[MT_MEMORY_RWX].prot_sect |= ecc_mask | cp->pmd;
4537- mem_types[MT_MEMORY].prot_pte |= kern_pgprot; 4509- mem_types[MT_MEMORY_RWX].prot_pte |= kern_pgprot;
4538+ mem_types[MT_MEMORY_RWX].prot_sect |= ecc_mask | cp->pmd; 4510+ mem_types[__MT_MEMORY_RWX].prot_sect |= ecc_mask | cp->pmd;
4539+ mem_types[MT_MEMORY_RWX].prot_pte |= kern_pgprot; 4511+ mem_types[__MT_MEMORY_RWX].prot_pte |= kern_pgprot;
4540+ mem_types[MT_MEMORY_RW].prot_sect |= ecc_mask | cp->pmd; 4512 mem_types[MT_MEMORY_RW].prot_sect |= ecc_mask | cp->pmd;
4541+ mem_types[MT_MEMORY_RW].prot_pte |= kern_pgprot; 4513 mem_types[MT_MEMORY_RW].prot_pte |= kern_pgprot;
4542+ mem_types[MT_MEMORY_RX].prot_sect |= ecc_mask | cp->pmd; 4514+ mem_types[MT_MEMORY_RX].prot_sect |= ecc_mask | cp->pmd;
4543+ mem_types[MT_MEMORY_RX].prot_pte |= kern_pgprot; 4515+ mem_types[MT_MEMORY_RX].prot_pte |= kern_pgprot;
4544 mem_types[MT_MEMORY_DMA_READY].prot_pte |= kern_pgprot; 4516 mem_types[MT_MEMORY_DMA_READY].prot_pte |= kern_pgprot;
4545- mem_types[MT_MEMORY_NONCACHED].prot_sect |= ecc_mask; 4517- mem_types[MT_MEMORY_RWX_NONCACHED].prot_sect |= ecc_mask;
4546+ mem_types[MT_MEMORY_NONCACHED_RW].prot_sect |= ecc_mask; 4518- mem_types[MT_ROM].prot_sect |= cp->pmd;
4547+ mem_types[MT_MEMORY_NONCACHED_RX].prot_sect |= ecc_mask; 4519+ mem_types[MT_MEMORY_RW_NONCACHED].prot_sect |= ecc_mask;
4548 mem_types[MT_ROM].prot_sect |= cp->pmd; 4520+ mem_types[MT_MEMORY_RX_NONCACHED].prot_sect |= ecc_mask;
4521+ mem_types[MT_ROM_RX].prot_sect |= cp->pmd;
4549 4522
4550 switch (cp->pmd) { 4523 switch (cp->pmd) {
4551@@ -1193,18 +1282,15 @@ void __init arm_mm_memblock_reserve(void) 4524 case PMD_SECT_WT:
4525- mem_types[MT_CACHECLEAN].prot_sect |= PMD_SECT_WT;
4526+ mem_types[MT_CACHECLEAN_RO].prot_sect |= PMD_SECT_WT;
4527 break;
4528 case PMD_SECT_WB:
4529 case PMD_SECT_WBWA:
4530- mem_types[MT_CACHECLEAN].prot_sect |= PMD_SECT_WB;
4531+ mem_types[MT_CACHECLEAN_RO].prot_sect |= PMD_SECT_WB;
4532 break;
4533 }
4534 pr_info("Memory policy: %sData cache %s\n",
4535@@ -842,7 +899,7 @@ static void __init create_mapping(struct map_desc *md)
4536 return;
4537 }
4538
4539- if ((md->type == MT_DEVICE || md->type == MT_ROM) &&
4540+ if ((md->type == MT_DEVICE || md->type == MT_ROM_RX) &&
4541 md->virtual >= PAGE_OFFSET &&
4542 (md->virtual < VMALLOC_START || md->virtual >= VMALLOC_END)) {
4543 printk(KERN_WARNING "BUG: mapping for 0x%08llx"
4544@@ -1257,18 +1314,15 @@ void __init arm_mm_memblock_reserve(void)
4552 * called function. This means you can't use any function or debugging 4545 * called function. This means you can't use any function or debugging
4553 * method which may touch any device, otherwise the kernel _will_ crash. 4546 * method which may touch any device, otherwise the kernel _will_ crash.
4554 */ 4547 */
@@ -4571,7 +4564,33 @@ index 911d433..8580952 100644
4571 4564
4572 for (addr = VMALLOC_START; addr; addr += PMD_SIZE) 4565 for (addr = VMALLOC_START; addr; addr += PMD_SIZE)
4573 pmd_clear(pmd_off_k(addr)); 4566 pmd_clear(pmd_off_k(addr));
4574@@ -1244,7 +1330,7 @@ static void __init devicemaps_init(const struct machine_desc *mdesc) 4567@@ -1281,7 +1335,7 @@ static void __init devicemaps_init(const struct machine_desc *mdesc)
4568 map.pfn = __phys_to_pfn(CONFIG_XIP_PHYS_ADDR & SECTION_MASK);
4569 map.virtual = MODULES_VADDR;
4570 map.length = ((unsigned long)_etext - map.virtual + ~SECTION_MASK) & SECTION_MASK;
4571- map.type = MT_ROM;
4572+ map.type = MT_ROM_RX;
4573 create_mapping(&map);
4574 #endif
4575
4576@@ -1292,14 +1346,14 @@ static void __init devicemaps_init(const struct machine_desc *mdesc)
4577 map.pfn = __phys_to_pfn(FLUSH_BASE_PHYS);
4578 map.virtual = FLUSH_BASE;
4579 map.length = SZ_1M;
4580- map.type = MT_CACHECLEAN;
4581+ map.type = MT_CACHECLEAN_RO;
4582 create_mapping(&map);
4583 #endif
4584 #ifdef FLUSH_BASE_MINICACHE
4585 map.pfn = __phys_to_pfn(FLUSH_BASE_PHYS + SZ_1M);
4586 map.virtual = FLUSH_BASE_MINICACHE;
4587 map.length = SZ_1M;
4588- map.type = MT_MINICLEAN;
4589+ map.type = MT_MINICLEAN_RO;
4590 create_mapping(&map);
4591 #endif
4592
4593@@ -1308,7 +1362,7 @@ static void __init devicemaps_init(const struct machine_desc *mdesc)
4575 * location (0xffff0000). If we aren't using high-vectors, also 4594 * location (0xffff0000). If we aren't using high-vectors, also
4576 * create a mapping at the low-vectors virtual address. 4595 * create a mapping at the low-vectors virtual address.
4577 */ 4596 */
@@ -4580,13 +4599,26 @@ index 911d433..8580952 100644
4580 map.virtual = 0xffff0000; 4599 map.virtual = 0xffff0000;
4581 map.length = PAGE_SIZE; 4600 map.length = PAGE_SIZE;
4582 #ifdef CONFIG_KUSER_HELPERS 4601 #ifdef CONFIG_KUSER_HELPERS
4583@@ -1316,8 +1402,39 @@ static void __init map_lowmem(void) 4602@@ -1365,8 +1419,10 @@ static void __init kmap_init(void)
4584 map.pfn = __phys_to_pfn(start); 4603 static void __init map_lowmem(void)
4585 map.virtual = __phys_to_virt(start); 4604 {
4586 map.length = end - start; 4605 struct memblock_region *reg;
4587- map.type = MT_MEMORY; 4606+#ifndef CONFIG_PAX_KERNEXEC
4607 unsigned long kernel_x_start = round_down(__pa(_stext), SECTION_SIZE);
4608 unsigned long kernel_x_end = round_up(__pa(__init_end), SECTION_SIZE);
4609+#endif
4610
4611 /* Map all the lowmem memory banks. */
4612 for_each_memblock(memory, reg) {
4613@@ -1379,11 +1435,48 @@ static void __init map_lowmem(void)
4614 if (start >= end)
4615 break;
4588 4616
4589+#ifdef CONFIG_PAX_KERNEXEC 4617+#ifdef CONFIG_PAX_KERNEXEC
4618+ map.pfn = __phys_to_pfn(start);
4619+ map.virtual = __phys_to_virt(start);
4620+ map.length = end - start;
4621+
4590+ if (map.virtual <= (unsigned long)_stext && ((unsigned long)_end < (map.virtual + map.length))) { 4622+ if (map.virtual <= (unsigned long)_stext && ((unsigned long)_end < (map.virtual + map.length))) {
4591+ struct map_desc kernel; 4623+ struct map_desc kernel;
4592+ struct map_desc initmap; 4624+ struct map_desc initmap;
@@ -4595,19 +4627,19 @@ index 911d433..8580952 100644
4595+ initmap.pfn = __phys_to_pfn(__pa(__init_begin)); 4627+ initmap.pfn = __phys_to_pfn(__pa(__init_begin));
4596+ initmap.virtual = (unsigned long)__init_begin; 4628+ initmap.virtual = (unsigned long)__init_begin;
4597+ initmap.length = _sdata - __init_begin; 4629+ initmap.length = _sdata - __init_begin;
4598+ initmap.type = MT_MEMORY_RWX; 4630+ initmap.type = __MT_MEMORY_RWX;
4599+ create_mapping(&initmap); 4631+ create_mapping(&initmap);
4600+ 4632+
4601+ /* when freeing initmem we will make this RX */ 4633+ /* when freeing initmem we will make this RX */
4602+ kernel.pfn = __phys_to_pfn(__pa(_stext)); 4634+ kernel.pfn = __phys_to_pfn(__pa(_stext));
4603+ kernel.virtual = (unsigned long)_stext; 4635+ kernel.virtual = (unsigned long)_stext;
4604+ kernel.length = __init_begin - _stext; 4636+ kernel.length = __init_begin - _stext;
4605+ kernel.type = MT_MEMORY_RWX; 4637+ kernel.type = __MT_MEMORY_RWX;
4606+ create_mapping(&kernel); 4638+ create_mapping(&kernel);
4607+ 4639+
4608+ if (map.virtual < (unsigned long)_stext) { 4640+ if (map.virtual < (unsigned long)_stext) {
4609+ map.length = (unsigned long)_stext - map.virtual; 4641+ map.length = (unsigned long)_stext - map.virtual;
4610+ map.type = MT_MEMORY_RWX; 4642+ map.type = __MT_MEMORY_RWX;
4611+ create_mapping(&map); 4643+ create_mapping(&map);
4612+ } 4644+ }
4613+ 4645+
@@ -4615,12 +4647,49 @@ index 911d433..8580952 100644
4615+ map.virtual = (unsigned long)_sdata; 4647+ map.virtual = (unsigned long)_sdata;
4616+ map.length = end - __pa(_sdata); 4648+ map.length = end - __pa(_sdata);
4617+ } 4649+ }
4618+#endif
4619+ 4650+
4620+ map.type = MT_MEMORY_RW; 4651+ map.type = MT_MEMORY_RW;
4621 create_mapping(&map); 4652+ create_mapping(&map);
4653+#else
4654 if (end < kernel_x_start || start >= kernel_x_end) {
4655 map.pfn = __phys_to_pfn(start);
4656 map.virtual = __phys_to_virt(start);
4657 map.length = end - start;
4658- map.type = MT_MEMORY_RWX;
4659+ map.type = __MT_MEMORY_RWX;
4660
4661 create_mapping(&map);
4662 } else {
4663@@ -1400,7 +1493,7 @@ static void __init map_lowmem(void)
4664 map.pfn = __phys_to_pfn(kernel_x_start);
4665 map.virtual = __phys_to_virt(kernel_x_start);
4666 map.length = kernel_x_end - kernel_x_start;
4667- map.type = MT_MEMORY_RWX;
4668+ map.type = __MT_MEMORY_RWX;
4669
4670 create_mapping(&map);
4671
4672@@ -1413,6 +1506,7 @@ static void __init map_lowmem(void)
4673 create_mapping(&map);
4674 }
4675 }
4676+#endif
4622 } 4677 }
4623 } 4678 }
4679
4680diff --git a/arch/arm/plat-iop/setup.c b/arch/arm/plat-iop/setup.c
4681index 5b217f4..c23f40e 100644
4682--- a/arch/arm/plat-iop/setup.c
4683+++ b/arch/arm/plat-iop/setup.c
4684@@ -24,7 +24,7 @@ static struct map_desc iop3xx_std_desc[] __initdata = {
4685 .virtual = IOP3XX_PERIPHERAL_VIRT_BASE,
4686 .pfn = __phys_to_pfn(IOP3XX_PERIPHERAL_PHYS_BASE),
4687 .length = IOP3XX_PERIPHERAL_SIZE,
4688- .type = MT_UNCACHED,
4689+ .type = MT_UNCACHED_RW,
4690 },
4691 };
4692
4624diff --git a/arch/arm/plat-omap/sram.c b/arch/arm/plat-omap/sram.c 4693diff --git a/arch/arm/plat-omap/sram.c b/arch/arm/plat-omap/sram.c
4625index a5bc92d..0bb4730 100644 4694index a5bc92d..0bb4730 100644
4626--- a/arch/arm/plat-omap/sram.c 4695--- a/arch/arm/plat-omap/sram.c
@@ -4648,7 +4717,7 @@ index ce6d763..cfea917 100644
4648 extern void *samsung_dmadev_get_ops(void); 4717 extern void *samsung_dmadev_get_ops(void);
4649 extern void *s3c_dma_get_ops(void); 4718 extern void *s3c_dma_get_ops(void);
4650diff --git a/arch/arm64/include/asm/uaccess.h b/arch/arm64/include/asm/uaccess.h 4719diff --git a/arch/arm64/include/asm/uaccess.h b/arch/arm64/include/asm/uaccess.h
4651index 7ecc2b2..5e56c66 100644 4720index 6c0f684..5faea9d 100644
4652--- a/arch/arm64/include/asm/uaccess.h 4721--- a/arch/arm64/include/asm/uaccess.h
4653+++ b/arch/arm64/include/asm/uaccess.h 4722+++ b/arch/arm64/include/asm/uaccess.h
4654@@ -99,6 +99,7 @@ static inline void set_fs(mm_segment_t fs) 4723@@ -99,6 +99,7 @@ static inline void set_fs(mm_segment_t fs)
@@ -4657,8 +4726,8 @@ index 7ecc2b2..5e56c66 100644
4657 4726
4658+#define access_ok_noprefault(type, addr, size) access_ok((type), (addr), (size)) 4727+#define access_ok_noprefault(type, addr, size) access_ok((type), (addr), (size))
4659 #define access_ok(type, addr, size) __range_ok(addr, size) 4728 #define access_ok(type, addr, size) __range_ok(addr, size)
4729 #define user_addr_max get_fs
4660 4730
4661 /*
4662diff --git a/arch/avr32/include/asm/cache.h b/arch/avr32/include/asm/cache.h 4731diff --git a/arch/avr32/include/asm/cache.h b/arch/avr32/include/asm/cache.h
4663index c3a58a1..78fbf54 100644 4732index c3a58a1..78fbf54 100644
4664--- a/arch/avr32/include/asm/cache.h 4733--- a/arch/avr32/include/asm/cache.h
@@ -4909,10 +4978,10 @@ index f4ca594..adc72fd6 100644
4909 #define __cacheline_aligned __aligned(L1_CACHE_BYTES) 4978 #define __cacheline_aligned __aligned(L1_CACHE_BYTES)
4910 #define ____cacheline_aligned __aligned(L1_CACHE_BYTES) 4979 #define ____cacheline_aligned __aligned(L1_CACHE_BYTES)
4911diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig 4980diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
4912index 4e4119b..dd7de0a 100644 4981index 0c8e553..112d734 100644
4913--- a/arch/ia64/Kconfig 4982--- a/arch/ia64/Kconfig
4914+++ b/arch/ia64/Kconfig 4983+++ b/arch/ia64/Kconfig
4915@@ -554,6 +554,7 @@ source "drivers/sn/Kconfig" 4984@@ -544,6 +544,7 @@ source "drivers/sn/Kconfig"
4916 config KEXEC 4985 config KEXEC
4917 bool "kexec system call" 4986 bool "kexec system call"
4918 depends on !IA64_HP_SIM && (!SMP || HOTPLUG_CPU) 4987 depends on !IA64_HP_SIM && (!SMP || HOTPLUG_CPU)
@@ -5264,10 +5333,10 @@ index 41e33f8..65180b2a 100644
5264 } 5333 }
5265 5334
5266diff --git a/arch/ia64/kernel/vmlinux.lds.S b/arch/ia64/kernel/vmlinux.lds.S 5335diff --git a/arch/ia64/kernel/vmlinux.lds.S b/arch/ia64/kernel/vmlinux.lds.S
5267index 0ccb28f..8992469 100644 5336index 84f8a52..7c76178 100644
5268--- a/arch/ia64/kernel/vmlinux.lds.S 5337--- a/arch/ia64/kernel/vmlinux.lds.S
5269+++ b/arch/ia64/kernel/vmlinux.lds.S 5338+++ b/arch/ia64/kernel/vmlinux.lds.S
5270@@ -198,7 +198,7 @@ SECTIONS { 5339@@ -192,7 +192,7 @@ SECTIONS {
5271 /* Per-cpu data: */ 5340 /* Per-cpu data: */
5272 . = ALIGN(PERCPU_PAGE_SIZE); 5341 . = ALIGN(PERCPU_PAGE_SIZE);
5273 PERCPU_VADDR(SMP_CACHE_BYTES, PERCPU_ADDR, :percpu) 5342 PERCPU_VADDR(SMP_CACHE_BYTES, PERCPU_ADDR, :percpu)
@@ -5348,7 +5417,7 @@ index 68232db..6ca80af 100644
5348 } 5417 }
5349 5418
5350diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c 5419diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c
5351index 88504ab..cbb6c9f 100644 5420index 25c3502..560dae7 100644
5352--- a/arch/ia64/mm/init.c 5421--- a/arch/ia64/mm/init.c
5353+++ b/arch/ia64/mm/init.c 5422+++ b/arch/ia64/mm/init.c
5354@@ -120,6 +120,19 @@ ia64_init_addr_space (void) 5423@@ -120,6 +120,19 @@ ia64_init_addr_space (void)
@@ -5459,10 +5528,10 @@ index 4efe96a..60e8699 100644
5459 #define SMP_CACHE_BYTES L1_CACHE_BYTES 5528 #define SMP_CACHE_BYTES L1_CACHE_BYTES
5460 5529
5461diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig 5530diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
5462index 650de39..6982b02 100644 5531index 95fa1f1..56a6fa2 100644
5463--- a/arch/mips/Kconfig 5532--- a/arch/mips/Kconfig
5464+++ b/arch/mips/Kconfig 5533+++ b/arch/mips/Kconfig
5465@@ -2268,6 +2268,7 @@ source "kernel/Kconfig.preempt" 5534@@ -2298,6 +2298,7 @@ source "kernel/Kconfig.preempt"
5466 5535
5467 config KEXEC 5536 config KEXEC
5468 bool "Kexec system call" 5537 bool "Kexec system call"
@@ -6408,10 +6477,10 @@ index b4db69f..8f3b093 100644
6408 #define SMP_CACHE_SHIFT L1_CACHE_SHIFT 6477 #define SMP_CACHE_SHIFT L1_CACHE_SHIFT
6409 #define SMP_CACHE_BYTES L1_CACHE_BYTES 6478 #define SMP_CACHE_BYTES L1_CACHE_BYTES
6410diff --git a/arch/mips/include/asm/elf.h b/arch/mips/include/asm/elf.h 6479diff --git a/arch/mips/include/asm/elf.h b/arch/mips/include/asm/elf.h
6411index a66359e..d3d474a 100644 6480index d414405..6bb4ba2 100644
6412--- a/arch/mips/include/asm/elf.h 6481--- a/arch/mips/include/asm/elf.h
6413+++ b/arch/mips/include/asm/elf.h 6482+++ b/arch/mips/include/asm/elf.h
6414@@ -373,13 +373,16 @@ extern const char *__elf_platform; 6483@@ -398,13 +398,16 @@ extern const char *__elf_platform;
6415 #define ELF_ET_DYN_BASE (TASK_SIZE / 3 * 2) 6484 #define ELF_ET_DYN_BASE (TASK_SIZE / 3 * 2)
6416 #endif 6485 #endif
6417 6486
@@ -6444,64 +6513,6 @@ index c1f6afa..38cc6e9 100644
6444+#define arch_align_stack(x) ((x) & ~0xfUL) 6513+#define arch_align_stack(x) ((x) & ~0xfUL)
6445 6514
6446 #endif /* _ASM_EXEC_H */ 6515 #endif /* _ASM_EXEC_H */
6447diff --git a/arch/mips/include/asm/ftrace.h b/arch/mips/include/asm/ftrace.h
6448index ce35c9a..434321c 100644
6449--- a/arch/mips/include/asm/ftrace.h
6450+++ b/arch/mips/include/asm/ftrace.h
6451@@ -22,12 +22,12 @@ extern void _mcount(void);
6452 #define safe_load(load, src, dst, error) \
6453 do { \
6454 asm volatile ( \
6455- "1: " load " %[" STR(dst) "], 0(%[" STR(src) "])\n"\
6456- " li %[" STR(error) "], 0\n" \
6457+ "1: " load " %[dest], 0(%[source])\n" \
6458+ " li %[err], 0\n" \
6459 "2:\n" \
6460 \
6461 ".section .fixup, \"ax\"\n" \
6462- "3: li %[" STR(error) "], 1\n" \
6463+ "3: li %[err], 1\n" \
6464 " j 2b\n" \
6465 ".previous\n" \
6466 \
6467@@ -35,8 +35,8 @@ do { \
6468 STR(PTR) "\t1b, 3b\n\t" \
6469 ".previous\n" \
6470 \
6471- : [dst] "=&r" (dst), [error] "=r" (error)\
6472- : [src] "r" (src) \
6473+ : [dest] "=&r" (dst), [err] "=r" (error)\
6474+ : [source] "r" (src) \
6475 : "memory" \
6476 ); \
6477 } while (0)
6478@@ -44,12 +44,12 @@ do { \
6479 #define safe_store(store, src, dst, error) \
6480 do { \
6481 asm volatile ( \
6482- "1: " store " %[" STR(src) "], 0(%[" STR(dst) "])\n"\
6483- " li %[" STR(error) "], 0\n" \
6484+ "1: " store " %[source], 0(%[dest])\n"\
6485+ " li %[err], 0\n" \
6486 "2:\n" \
6487 \
6488 ".section .fixup, \"ax\"\n" \
6489- "3: li %[" STR(error) "], 1\n" \
6490+ "3: li %[err], 1\n" \
6491 " j 2b\n" \
6492 ".previous\n" \
6493 \
6494@@ -57,8 +57,8 @@ do { \
6495 STR(PTR) "\t1b, 3b\n\t" \
6496 ".previous\n" \
6497 \
6498- : [error] "=r" (error) \
6499- : [dst] "r" (dst), [src] "r" (src)\
6500+ : [err] "=r" (error) \
6501+ : [dest] "r" (dst), [source] "r" (src)\
6502 : "memory" \
6503 ); \
6504 } while (0)
6505diff --git a/arch/mips/include/asm/hw_irq.h b/arch/mips/include/asm/hw_irq.h 6516diff --git a/arch/mips/include/asm/hw_irq.h b/arch/mips/include/asm/hw_irq.h
6506index 9e8ef59..1139d6b 100644 6517index 9e8ef59..1139d6b 100644
6507--- a/arch/mips/include/asm/hw_irq.h 6518--- a/arch/mips/include/asm/hw_irq.h
@@ -6607,10 +6618,10 @@ index d44622c..64990d2 100644
6607 6618
6608 /** 6619 /**
6609diff --git a/arch/mips/include/asm/page.h b/arch/mips/include/asm/page.h 6620diff --git a/arch/mips/include/asm/page.h b/arch/mips/include/asm/page.h
6610index f6be474..12ad554 100644 6621index 5e08bcc..cfedefc 100644
6611--- a/arch/mips/include/asm/page.h 6622--- a/arch/mips/include/asm/page.h
6612+++ b/arch/mips/include/asm/page.h 6623+++ b/arch/mips/include/asm/page.h
6613@@ -95,7 +95,7 @@ extern void copy_user_highpage(struct page *to, struct page *from, 6624@@ -120,7 +120,7 @@ extern void copy_user_highpage(struct page *to, struct page *from,
6614 #ifdef CONFIG_CPU_MIPS32 6625 #ifdef CONFIG_CPU_MIPS32
6615 typedef struct { unsigned long pte_low, pte_high; } pte_t; 6626 typedef struct { unsigned long pte_low, pte_high; } pte_t;
6616 #define pte_val(x) ((x).pte_low | ((unsigned long long)(x).pte_high << 32)) 6627 #define pte_val(x) ((x).pte_low | ((unsigned long long)(x).pte_high << 32))
@@ -6661,65 +6672,22 @@ index 25da651..ae2a259 100644
6661+extern atomic_unchecked_t smtc_fpu_recoveries; 6672+extern atomic_unchecked_t smtc_fpu_recoveries;
6662 6673
6663 #endif /* __ASM_SMTC_PROC_H */ 6674 #endif /* __ASM_SMTC_PROC_H */
6664diff --git a/arch/mips/include/asm/syscall.h b/arch/mips/include/asm/syscall.h
6665index 81c8913..81d8432 100644
6666--- a/arch/mips/include/asm/syscall.h
6667+++ b/arch/mips/include/asm/syscall.h
6668@@ -29,7 +29,7 @@ static inline long syscall_get_nr(struct task_struct *task,
6669 static inline unsigned long mips_get_syscall_arg(unsigned long *arg,
6670 struct task_struct *task, struct pt_regs *regs, unsigned int n)
6671 {
6672- unsigned long usp = regs->regs[29];
6673+ unsigned long usp __maybe_unused = regs->regs[29];
6674
6675 switch (n) {
6676 case 0: case 1: case 2: case 3:
6677@@ -39,14 +39,14 @@ static inline unsigned long mips_get_syscall_arg(unsigned long *arg,
6678
6679 #ifdef CONFIG_32BIT
6680 case 4: case 5: case 6: case 7:
6681- return get_user(*arg, (int *)usp + 4 * n);
6682+ return get_user(*arg, (int *)usp + n);
6683 #endif
6684
6685 #ifdef CONFIG_64BIT
6686 case 4: case 5: case 6: case 7:
6687 #ifdef CONFIG_MIPS32_O32
6688 if (test_thread_flag(TIF_32BIT_REGS))
6689- return get_user(*arg, (int *)usp + 4 * n);
6690+ return get_user(*arg, (int *)usp + n);
6691 else
6692 #endif
6693 *arg = regs->regs[4 + n];
6694@@ -83,11 +83,10 @@ static inline void syscall_get_arguments(struct task_struct *task,
6695 unsigned int i, unsigned int n,
6696 unsigned long *args)
6697 {
6698- unsigned long arg;
6699 int ret;
6700
6701 while (n--)
6702- ret |= mips_get_syscall_arg(&arg, task, regs, i++);
6703+ ret |= mips_get_syscall_arg(args++, task, regs, i++);
6704
6705 /*
6706 * No way to communicate an error because this is a void function.
6707diff --git a/arch/mips/include/asm/thread_info.h b/arch/mips/include/asm/thread_info.h 6675diff --git a/arch/mips/include/asm/thread_info.h b/arch/mips/include/asm/thread_info.h
6708index 4f58ef6..5e7081b 100644 6676index 24846f9..61c49f0 100644
6709--- a/arch/mips/include/asm/thread_info.h 6677--- a/arch/mips/include/asm/thread_info.h
6710+++ b/arch/mips/include/asm/thread_info.h 6678+++ b/arch/mips/include/asm/thread_info.h
6711@@ -115,6 +115,8 @@ static inline struct thread_info *current_thread_info(void) 6679@@ -116,6 +116,8 @@ static inline struct thread_info *current_thread_info(void)
6712 #define TIF_FPUBOUND 24 /* thread bound to FPU-full CPU set */
6713 #define TIF_LOAD_WATCH 25 /* If set, load watch registers */ 6680 #define TIF_LOAD_WATCH 25 /* If set, load watch registers */
6714 #define TIF_SYSCALL_TRACEPOINT 26 /* syscall tracepoint instrumentation */ 6681 #define TIF_SYSCALL_TRACEPOINT 26 /* syscall tracepoint instrumentation */
6682 #define TIF_32BIT_FPREGS 27 /* 32-bit floating point registers */
6715+/* li takes a 32bit immediate */ 6683+/* li takes a 32bit immediate */
6716+#define TIF_GRSEC_SETXID 29 /* update credentials on syscall entry/exit */ 6684+#define TIF_GRSEC_SETXID 29 /* update credentials on syscall entry/exit */
6717 #define TIF_SYSCALL_TRACE 31 /* syscall trace active */ 6685 #define TIF_SYSCALL_TRACE 31 /* syscall trace active */
6718 6686
6719 #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) 6687 #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
6720@@ -132,13 +134,14 @@ static inline struct thread_info *current_thread_info(void) 6688@@ -134,13 +136,14 @@ static inline struct thread_info *current_thread_info(void)
6721 #define _TIF_FPUBOUND (1<<TIF_FPUBOUND)
6722 #define _TIF_LOAD_WATCH (1<<TIF_LOAD_WATCH) 6689 #define _TIF_LOAD_WATCH (1<<TIF_LOAD_WATCH)
6690 #define _TIF_32BIT_FPREGS (1<<TIF_32BIT_FPREGS)
6723 #define _TIF_SYSCALL_TRACEPOINT (1<<TIF_SYSCALL_TRACEPOINT) 6691 #define _TIF_SYSCALL_TRACEPOINT (1<<TIF_SYSCALL_TRACEPOINT)
6724+#define _TIF_GRSEC_SETXID (1<<TIF_GRSEC_SETXID) 6692+#define _TIF_GRSEC_SETXID (1<<TIF_GRSEC_SETXID)
6725 6693
@@ -6734,7 +6702,7 @@ index 4f58ef6..5e7081b 100644
6734 6702
6735 /* work to do on interrupt/exception return */ 6703 /* work to do on interrupt/exception return */
6736 #define _TIF_WORK_MASK \ 6704 #define _TIF_WORK_MASK \
6737@@ -146,7 +149,7 @@ static inline struct thread_info *current_thread_info(void) 6705@@ -148,7 +151,7 @@ static inline struct thread_info *current_thread_info(void)
6738 /* work to do on any return to u-space */ 6706 /* work to do on any return to u-space */
6739 #define _TIF_ALLWORK_MASK (_TIF_NOHZ | _TIF_WORK_MASK | \ 6707 #define _TIF_ALLWORK_MASK (_TIF_NOHZ | _TIF_WORK_MASK | \
6740 _TIF_WORK_SYSCALL_EXIT | \ 6708 _TIF_WORK_SYSCALL_EXIT | \
@@ -6774,10 +6742,10 @@ index 1188e00..41cf144 100644
6774 #include <linux/module.h> 6742 #include <linux/module.h>
6775 #include <linux/elfcore.h> 6743 #include <linux/elfcore.h>
6776diff --git a/arch/mips/kernel/binfmt_elfo32.c b/arch/mips/kernel/binfmt_elfo32.c 6744diff --git a/arch/mips/kernel/binfmt_elfo32.c b/arch/mips/kernel/binfmt_elfo32.c
6777index 202e581..689ca79 100644 6745index 7faf5f2..f3d3cf4 100644
6778--- a/arch/mips/kernel/binfmt_elfo32.c 6746--- a/arch/mips/kernel/binfmt_elfo32.c
6779+++ b/arch/mips/kernel/binfmt_elfo32.c 6747+++ b/arch/mips/kernel/binfmt_elfo32.c
6780@@ -56,6 +56,13 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG]; 6748@@ -70,6 +70,13 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
6781 #undef ELF_ET_DYN_BASE 6749 #undef ELF_ET_DYN_BASE
6782 #define ELF_ET_DYN_BASE (TASK32_SIZE / 3 * 2) 6750 #define ELF_ET_DYN_BASE (TASK32_SIZE / 3 * 2)
6783 6751
@@ -6791,24 +6759,6 @@ index 202e581..689ca79 100644
6791 #include <asm/processor.h> 6759 #include <asm/processor.h>
6792 6760
6793 /* 6761 /*
6794diff --git a/arch/mips/kernel/ftrace.c b/arch/mips/kernel/ftrace.c
6795index 185ba25..374ed74 100644
6796--- a/arch/mips/kernel/ftrace.c
6797+++ b/arch/mips/kernel/ftrace.c
6798@@ -111,11 +111,10 @@ static int ftrace_modify_code_2(unsigned long ip, unsigned int new_code1,
6799 safe_store_code(new_code1, ip, faulted);
6800 if (unlikely(faulted))
6801 return -EFAULT;
6802- ip += 4;
6803- safe_store_code(new_code2, ip, faulted);
6804+ safe_store_code(new_code2, ip + 4, faulted);
6805 if (unlikely(faulted))
6806 return -EFAULT;
6807- flush_icache_range(ip, ip + 8); /* original ip + 12 */
6808+ flush_icache_range(ip, ip + 8);
6809 return 0;
6810 }
6811 #endif
6812diff --git a/arch/mips/kernel/i8259.c b/arch/mips/kernel/i8259.c 6762diff --git a/arch/mips/kernel/i8259.c b/arch/mips/kernel/i8259.c
6813index 2b91fe8..fe4f6b4 100644 6763index 2b91fe8..fe4f6b4 100644
6814--- a/arch/mips/kernel/i8259.c 6764--- a/arch/mips/kernel/i8259.c
@@ -6836,7 +6786,7 @@ index 44a1f79..2bd6aa3 100644
6836 6786
6837 void __init gt641xx_irq_init(void) 6787 void __init gt641xx_irq_init(void)
6838diff --git a/arch/mips/kernel/irq.c b/arch/mips/kernel/irq.c 6788diff --git a/arch/mips/kernel/irq.c b/arch/mips/kernel/irq.c
6839index d1fea7a..45602ea 100644 6789index d1fea7a..2e591b0 100644
6840--- a/arch/mips/kernel/irq.c 6790--- a/arch/mips/kernel/irq.c
6841+++ b/arch/mips/kernel/irq.c 6791+++ b/arch/mips/kernel/irq.c
6842@@ -77,17 +77,17 @@ void ack_bad_irq(unsigned int irq) 6792@@ -77,17 +77,17 @@ void ack_bad_irq(unsigned int irq)
@@ -6860,11 +6810,30 @@ index d1fea7a..45602ea 100644
6860 } 6810 }
6861 6811
6862 void __init init_IRQ(void) 6812 void __init init_IRQ(void)
6813@@ -110,7 +110,10 @@ void __init init_IRQ(void)
6814 #endif
6815 }
6816
6817+
6818 #ifdef DEBUG_STACKOVERFLOW
6819+extern void gr_handle_kernel_exploit(void);
6820+
6821 static inline void check_stack_overflow(void)
6822 {
6823 unsigned long sp;
6824@@ -126,6 +129,7 @@ static inline void check_stack_overflow(void)
6825 printk("do_IRQ: stack overflow: %ld\n",
6826 sp - sizeof(struct thread_info));
6827 dump_stack();
6828+ gr_handle_kernel_exploit();
6829 }
6830 }
6831 #else
6863diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c 6832diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c
6864index ddc7610..8c58f17 100644 6833index 6ae540e..b7396dc 100644
6865--- a/arch/mips/kernel/process.c 6834--- a/arch/mips/kernel/process.c
6866+++ b/arch/mips/kernel/process.c 6835+++ b/arch/mips/kernel/process.c
6867@@ -566,15 +566,3 @@ unsigned long get_wchan(struct task_struct *task) 6836@@ -562,15 +562,3 @@ unsigned long get_wchan(struct task_struct *task)
6868 out: 6837 out:
6869 return pc; 6838 return pc;
6870 } 6839 }
@@ -6881,10 +6850,10 @@ index ddc7610..8c58f17 100644
6881- return sp & ALMASK; 6850- return sp & ALMASK;
6882-} 6851-}
6883diff --git a/arch/mips/kernel/ptrace.c b/arch/mips/kernel/ptrace.c 6852diff --git a/arch/mips/kernel/ptrace.c b/arch/mips/kernel/ptrace.c
6884index b52e1d2..1a3ca09 100644 6853index 7da9b76..21578be 100644
6885--- a/arch/mips/kernel/ptrace.c 6854--- a/arch/mips/kernel/ptrace.c
6886+++ b/arch/mips/kernel/ptrace.c 6855+++ b/arch/mips/kernel/ptrace.c
6887@@ -652,6 +652,10 @@ long arch_ptrace(struct task_struct *child, long request, 6856@@ -658,6 +658,10 @@ long arch_ptrace(struct task_struct *child, long request,
6888 return ret; 6857 return ret;
6889 } 6858 }
6890 6859
@@ -6895,7 +6864,7 @@ index b52e1d2..1a3ca09 100644
6895 /* 6864 /*
6896 * Notification of system call entry/exit 6865 * Notification of system call entry/exit
6897 * - triggered by current->work.syscall_trace 6866 * - triggered by current->work.syscall_trace
6898@@ -668,6 +672,11 @@ asmlinkage void syscall_trace_enter(struct pt_regs *regs) 6867@@ -674,6 +678,11 @@ asmlinkage void syscall_trace_enter(struct pt_regs *regs)
6899 tracehook_report_syscall_entry(regs)) 6868 tracehook_report_syscall_entry(regs))
6900 ret = -1; 6869 ret = -1;
6901 6870
@@ -6984,10 +6953,10 @@ index dfc1b91..11a2c07 100644
6984 6953
6985 6954
6986diff --git a/arch/mips/kernel/sync-r4k.c b/arch/mips/kernel/sync-r4k.c 6955diff --git a/arch/mips/kernel/sync-r4k.c b/arch/mips/kernel/sync-r4k.c
6987index 84536bf..79caa4d 100644 6956index c24ad5f..9983ab2 100644
6988--- a/arch/mips/kernel/sync-r4k.c 6957--- a/arch/mips/kernel/sync-r4k.c
6989+++ b/arch/mips/kernel/sync-r4k.c 6958+++ b/arch/mips/kernel/sync-r4k.c
6990@@ -21,8 +21,8 @@ 6959@@ -20,8 +20,8 @@
6991 #include <asm/mipsregs.h> 6960 #include <asm/mipsregs.h>
6992 6961
6993 static atomic_t count_start_flag = ATOMIC_INIT(0); 6962 static atomic_t count_start_flag = ATOMIC_INIT(0);
@@ -6998,7 +6967,7 @@ index 84536bf..79caa4d 100644
6998 static atomic_t count_reference = ATOMIC_INIT(0); 6967 static atomic_t count_reference = ATOMIC_INIT(0);
6999 6968
7000 #define COUNTON 100 6969 #define COUNTON 100
7001@@ -69,13 +69,13 @@ void synchronise_count_master(int cpu) 6970@@ -68,13 +68,13 @@ void synchronise_count_master(int cpu)
7002 6971
7003 for (i = 0; i < NR_LOOPS; i++) { 6972 for (i = 0; i < NR_LOOPS; i++) {
7004 /* slaves loop on '!= 2' */ 6973 /* slaves loop on '!= 2' */
@@ -7015,7 +6984,7 @@ index 84536bf..79caa4d 100644
7015 6984
7016 /* 6985 /*
7017 * Everyone initialises count in the last loop: 6986 * Everyone initialises count in the last loop:
7018@@ -86,11 +86,11 @@ void synchronise_count_master(int cpu) 6987@@ -85,11 +85,11 @@ void synchronise_count_master(int cpu)
7019 /* 6988 /*
7020 * Wait for all slaves to leave the synchronization point: 6989 * Wait for all slaves to leave the synchronization point:
7021 */ 6990 */
@@ -7030,7 +6999,7 @@ index 84536bf..79caa4d 100644
7030 } 6999 }
7031 /* Arrange for an interrupt in a short while */ 7000 /* Arrange for an interrupt in a short while */
7032 write_c0_compare(read_c0_count() + COUNTON); 7001 write_c0_compare(read_c0_count() + COUNTON);
7033@@ -131,8 +131,8 @@ void synchronise_count_slave(int cpu) 7002@@ -130,8 +130,8 @@ void synchronise_count_slave(int cpu)
7034 initcount = atomic_read(&count_reference); 7003 initcount = atomic_read(&count_reference);
7035 7004
7036 for (i = 0; i < NR_LOOPS; i++) { 7005 for (i = 0; i < NR_LOOPS; i++) {
@@ -7041,7 +7010,7 @@ index 84536bf..79caa4d 100644
7041 mb(); 7010 mb();
7042 7011
7043 /* 7012 /*
7044@@ -141,8 +141,8 @@ void synchronise_count_slave(int cpu) 7013@@ -140,8 +140,8 @@ void synchronise_count_slave(int cpu)
7045 if (i == NR_LOOPS-1) 7014 if (i == NR_LOOPS-1)
7046 write_c0_count(initcount); 7015 write_c0_count(initcount);
7047 7016
@@ -7053,10 +7022,10 @@ index 84536bf..79caa4d 100644
7053 } 7022 }
7054 /* Arrange for an interrupt in a short while */ 7023 /* Arrange for an interrupt in a short while */
7055diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c 7024diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
7056index f9c8746..78b64e3 100644 7025index e0b4996..6b43ce7 100644
7057--- a/arch/mips/kernel/traps.c 7026--- a/arch/mips/kernel/traps.c
7058+++ b/arch/mips/kernel/traps.c 7027+++ b/arch/mips/kernel/traps.c
7059@@ -690,7 +690,18 @@ asmlinkage void do_ov(struct pt_regs *regs) 7028@@ -691,7 +691,18 @@ asmlinkage void do_ov(struct pt_regs *regs)
7060 siginfo_t info; 7029 siginfo_t info;
7061 7030
7062 prev_state = exception_enter(); 7031 prev_state = exception_enter();
@@ -7459,7 +7428,7 @@ index 47f11c7..3420df2 100644
7459 7428
7460 #define SMP_CACHE_BYTES L1_CACHE_BYTES 7429 #define SMP_CACHE_BYTES L1_CACHE_BYTES
7461diff --git a/arch/parisc/include/asm/elf.h b/arch/parisc/include/asm/elf.h 7430diff --git a/arch/parisc/include/asm/elf.h b/arch/parisc/include/asm/elf.h
7462index ad2b503..bdf1651 100644 7431index 3391d06..c23a2cc 100644
7463--- a/arch/parisc/include/asm/elf.h 7432--- a/arch/parisc/include/asm/elf.h
7464+++ b/arch/parisc/include/asm/elf.h 7433+++ b/arch/parisc/include/asm/elf.h
7465@@ -342,6 +342,13 @@ struct pt_regs; /* forward declaration... */ 7434@@ -342,6 +342,13 @@ struct pt_regs; /* forward declaration... */
@@ -7501,7 +7470,7 @@ index f213f5b..0af3e8e 100644
7501 #endif 7470 #endif
7502 7471
7503diff --git a/arch/parisc/include/asm/pgtable.h b/arch/parisc/include/asm/pgtable.h 7472diff --git a/arch/parisc/include/asm/pgtable.h b/arch/parisc/include/asm/pgtable.h
7504index 34899b5..02dd060 100644 7473index 22b89d1..ce34230 100644
7505--- a/arch/parisc/include/asm/pgtable.h 7474--- a/arch/parisc/include/asm/pgtable.h
7506+++ b/arch/parisc/include/asm/pgtable.h 7475+++ b/arch/parisc/include/asm/pgtable.h
7507@@ -223,6 +223,17 @@ extern void purge_tlb_entries(struct mm_struct *, unsigned long); 7476@@ -223,6 +223,17 @@ extern void purge_tlb_entries(struct mm_struct *, unsigned long);
@@ -7643,74 +7612,77 @@ index 50dfafc..b9fc230 100644
7643 DEBUGP("register_unwind_table(), sect = %d at 0x%p - 0x%p (gp=0x%lx)\n", 7612 DEBUGP("register_unwind_table(), sect = %d at 0x%p - 0x%p (gp=0x%lx)\n",
7644 me->arch.unwind_section, table, end, gp); 7613 me->arch.unwind_section, table, end, gp);
7645diff --git a/arch/parisc/kernel/sys_parisc.c b/arch/parisc/kernel/sys_parisc.c 7614diff --git a/arch/parisc/kernel/sys_parisc.c b/arch/parisc/kernel/sys_parisc.c
7646index 0d3a9d4..20a99b0 100644 7615index 31ffa9b..588a798 100644
7647--- a/arch/parisc/kernel/sys_parisc.c 7616--- a/arch/parisc/kernel/sys_parisc.c
7648+++ b/arch/parisc/kernel/sys_parisc.c 7617+++ b/arch/parisc/kernel/sys_parisc.c
7649@@ -33,9 +33,11 @@ 7618@@ -89,6 +89,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr,
7650 #include <linux/utsname.h> 7619 unsigned long task_size = TASK_SIZE;
7651 #include <linux/personality.h> 7620 int do_color_align, last_mmap;
7652
7653-static unsigned long get_unshared_area(unsigned long addr, unsigned long len)
7654+static unsigned long get_unshared_area(unsigned long addr, unsigned long len,
7655+ unsigned long flags)
7656 {
7657 struct vm_unmapped_area_info info; 7621 struct vm_unmapped_area_info info;
7658+ unsigned long offset = gr_rand_threadstack_offset(current->mm, NULL, flags); 7622+ unsigned long offset = gr_rand_threadstack_offset(current->mm, filp, flags);
7659 7623
7660 info.flags = 0; 7624 if (len > task_size)
7661 info.length = len; 7625 return -ENOMEM;
7662@@ -43,6 +45,7 @@ static unsigned long get_unshared_area(unsigned long addr, unsigned long len) 7626@@ -106,6 +107,10 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr,
7663 info.high_limit = TASK_SIZE; 7627 goto found_addr;
7664 info.align_mask = 0; 7628 }
7665 info.align_offset = 0;
7666+ info.threadstack_offset = offset;
7667 return vm_unmapped_area(&info);
7668 }
7669 7629
7670@@ -69,9 +72,10 @@ static unsigned long shared_align_offset(struct file *filp, unsigned long pgoff) 7630+#ifdef CONFIG_PAX_RANDMMAP
7671 } 7631+ if (!(mm->pax_flags & MF_PAX_RANDMMAP))
7632+#endif
7633+
7634 if (addr) {
7635 if (do_color_align && last_mmap)
7636 addr = COLOR_ALIGN(addr, last_mmap, pgoff);
7637@@ -124,6 +129,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr,
7638 info.high_limit = mmap_upper_limit();
7639 info.align_mask = last_mmap ? (PAGE_MASK & (SHM_COLOUR - 1)) : 0;
7640 info.align_offset = shared_align_offset(last_mmap, pgoff);
7641+ info.threadstack_offset = offset;
7642 addr = vm_unmapped_area(&info);
7672 7643
7673 static unsigned long get_shared_area(struct file *filp, unsigned long addr, 7644 found_addr:
7674- unsigned long len, unsigned long pgoff) 7645@@ -143,6 +149,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
7675+ unsigned long len, unsigned long pgoff, unsigned long flags) 7646 unsigned long addr = addr0;
7676 { 7647 int do_color_align, last_mmap;
7677 struct vm_unmapped_area_info info; 7648 struct vm_unmapped_area_info info;
7678+ unsigned long offset = gr_rand_threadstack_offset(current->mm, filp, flags); 7649+ unsigned long offset = gr_rand_threadstack_offset(current->mm, filp, flags);
7679 7650
7680 info.flags = 0; 7651 #ifdef CONFIG_64BIT
7681 info.length = len; 7652 /* This should only ever run for 32-bit processes. */
7682@@ -79,6 +83,7 @@ static unsigned long get_shared_area(struct file *filp, unsigned long addr, 7653@@ -167,6 +174,10 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
7683 info.high_limit = TASK_SIZE;
7684 info.align_mask = PAGE_MASK & (SHMLBA - 1);
7685 info.align_offset = shared_align_offset(filp, pgoff);
7686+ info.threadstack_offset = offset;
7687 return vm_unmapped_area(&info);
7688 }
7689
7690@@ -93,13 +98,20 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr,
7691 return -EINVAL;
7692 return addr;
7693 } 7654 }
7694- if (!addr)
7695+ if (!addr) {
7696 addr = TASK_UNMAPPED_BASE;
7697 7655
7656 /* requesting a specific address */
7698+#ifdef CONFIG_PAX_RANDMMAP 7657+#ifdef CONFIG_PAX_RANDMMAP
7699+ if (current->mm->pax_flags & MF_PAX_RANDMMAP) 7658+ if (!(mm->pax_flags & MF_PAX_RANDMMAP))
7700+ addr += current->mm->delta_mmap;
7701+#endif 7659+#endif
7702+ 7660+
7661 if (addr) {
7662 if (do_color_align && last_mmap)
7663 addr = COLOR_ALIGN(addr, last_mmap, pgoff);
7664@@ -184,6 +195,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
7665 info.high_limit = mm->mmap_base;
7666 info.align_mask = last_mmap ? (PAGE_MASK & (SHM_COLOUR - 1)) : 0;
7667 info.align_offset = shared_align_offset(last_mmap, pgoff);
7668+ info.threadstack_offset = offset;
7669 addr = vm_unmapped_area(&info);
7670 if (!(addr & ~PAGE_MASK))
7671 goto found_addr;
7672@@ -249,6 +261,13 @@ void arch_pick_mmap_layout(struct mm_struct *mm)
7673 mm->mmap_legacy_base = mmap_legacy_base();
7674 mm->mmap_base = mmap_upper_limit();
7675
7676+#ifdef CONFIG_PAX_RANDMMAP
7677+ if (mm->pax_flags & MF_PAX_RANDMMAP) {
7678+ mm->mmap_legacy_base += mm->delta_mmap;
7679+ mm->mmap_base -= mm->delta_mmap + mm->delta_stack;
7703+ } 7680+ }
7681+#endif
7704+ 7682+
7705 if (filp || (flags & MAP_SHARED)) 7683 if (mmap_is_legacy()) {
7706- addr = get_shared_area(filp, addr, len, pgoff); 7684 mm->mmap_base = mm->mmap_legacy_base;
7707+ addr = get_shared_area(filp, addr, len, pgoff, flags); 7685 mm->get_unmapped_area = arch_get_unmapped_area;
7708 else
7709- addr = get_unshared_area(addr, len);
7710+ addr = get_unshared_area(addr, len, flags);
7711
7712 return addr;
7713 }
7714diff --git a/arch/parisc/kernel/traps.c b/arch/parisc/kernel/traps.c 7686diff --git a/arch/parisc/kernel/traps.c b/arch/parisc/kernel/traps.c
7715index 1cd1d0c..44ec918 100644 7687index 1cd1d0c..44ec918 100644
7716--- a/arch/parisc/kernel/traps.c 7688--- a/arch/parisc/kernel/traps.c
@@ -7900,10 +7872,10 @@ index 9d08c71..e2b4d20 100644
7900 /* 7872 /*
7901 * If for any reason at all we couldn't handle the fault, make 7873 * If for any reason at all we couldn't handle the fault, make
7902diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig 7874diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
7903index b44b52c..4cd253c 100644 7875index 957bf34..3430cc8 100644
7904--- a/arch/powerpc/Kconfig 7876--- a/arch/powerpc/Kconfig
7905+++ b/arch/powerpc/Kconfig 7877+++ b/arch/powerpc/Kconfig
7906@@ -382,6 +382,7 @@ config ARCH_ENABLE_MEMORY_HOTREMOVE 7878@@ -393,6 +393,7 @@ config PPC64_SUPPORTS_MEMORY_FAILURE
7907 config KEXEC 7879 config KEXEC
7908 bool "kexec system call" 7880 bool "kexec system call"
7909 depends on (PPC_BOOK3S || FSL_BOOKE || (44x && !SMP)) 7881 depends on (PPC_BOOK3S || FSL_BOOKE || (44x && !SMP))
@@ -7933,7 +7905,7 @@ index e3b1d41..8e81edf 100644
7933 7905
7934 #endif /* __KERNEL__ */ 7906 #endif /* __KERNEL__ */
7935diff --git a/arch/powerpc/include/asm/cache.h b/arch/powerpc/include/asm/cache.h 7907diff --git a/arch/powerpc/include/asm/cache.h b/arch/powerpc/include/asm/cache.h
7936index 9e495c9..b6878e5 100644 7908index ed0afc1..0332825 100644
7937--- a/arch/powerpc/include/asm/cache.h 7909--- a/arch/powerpc/include/asm/cache.h
7938+++ b/arch/powerpc/include/asm/cache.h 7910+++ b/arch/powerpc/include/asm/cache.h
7939@@ -3,6 +3,7 @@ 7911@@ -3,6 +3,7 @@
@@ -8168,7 +8140,7 @@ index 4b0be20..c15a27d 100644
8168 static inline void pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd, 8140 static inline void pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd,
8169 pte_t *pte) 8141 pte_t *pte)
8170diff --git a/arch/powerpc/include/asm/pgtable.h b/arch/powerpc/include/asm/pgtable.h 8142diff --git a/arch/powerpc/include/asm/pgtable.h b/arch/powerpc/include/asm/pgtable.h
8171index 7d6eacf..14c0240 100644 8143index 3ebb188..e17dddf 100644
8172--- a/arch/powerpc/include/asm/pgtable.h 8144--- a/arch/powerpc/include/asm/pgtable.h
8173+++ b/arch/powerpc/include/asm/pgtable.h 8145+++ b/arch/powerpc/include/asm/pgtable.h
8174@@ -2,6 +2,7 @@ 8146@@ -2,6 +2,7 @@
@@ -8177,8 +8149,8 @@ index 7d6eacf..14c0240 100644
8177 8149
8178+#include <linux/const.h> 8150+#include <linux/const.h>
8179 #ifndef __ASSEMBLY__ 8151 #ifndef __ASSEMBLY__
8152 #include <linux/mmdebug.h>
8180 #include <asm/processor.h> /* For TASK_SIZE */ 8153 #include <asm/processor.h> /* For TASK_SIZE */
8181 #include <asm/mmu.h>
8182diff --git a/arch/powerpc/include/asm/pte-hash32.h b/arch/powerpc/include/asm/pte-hash32.h 8154diff --git a/arch/powerpc/include/asm/pte-hash32.h b/arch/powerpc/include/asm/pte-hash32.h
8183index 4aad413..85d86bf 100644 8155index 4aad413..85d86bf 100644
8184--- a/arch/powerpc/include/asm/pte-hash32.h 8156--- a/arch/powerpc/include/asm/pte-hash32.h
@@ -8192,10 +8164,10 @@ index 4aad413..85d86bf 100644
8192 #define _PAGE_NO_CACHE 0x020 /* I: cache inhibit */ 8164 #define _PAGE_NO_CACHE 0x020 /* I: cache inhibit */
8193 #define _PAGE_WRITETHRU 0x040 /* W: cache write-through */ 8165 #define _PAGE_WRITETHRU 0x040 /* W: cache write-through */
8194diff --git a/arch/powerpc/include/asm/reg.h b/arch/powerpc/include/asm/reg.h 8166diff --git a/arch/powerpc/include/asm/reg.h b/arch/powerpc/include/asm/reg.h
8195index fa8388e..f985549 100644 8167index ce17815..c5574cc 100644
8196--- a/arch/powerpc/include/asm/reg.h 8168--- a/arch/powerpc/include/asm/reg.h
8197+++ b/arch/powerpc/include/asm/reg.h 8169+++ b/arch/powerpc/include/asm/reg.h
8198@@ -239,6 +239,7 @@ 8170@@ -249,6 +249,7 @@
8199 #define SPRN_DBCR 0x136 /* e300 Data Breakpoint Control Reg */ 8171 #define SPRN_DBCR 0x136 /* e300 Data Breakpoint Control Reg */
8200 #define SPRN_DSISR 0x012 /* Data Storage Interrupt Status Register */ 8172 #define SPRN_DSISR 0x012 /* Data Storage Interrupt Status Register */
8201 #define DSISR_NOHPTE 0x40000000 /* no translation found */ 8173 #define DSISR_NOHPTE 0x40000000 /* no translation found */
@@ -8217,28 +8189,19 @@ index 084e080..9415a3d 100644
8217 extern void smp_send_debugger_break(void); 8189 extern void smp_send_debugger_break(void);
8218 extern void start_secondary_resume(void); 8190 extern void start_secondary_resume(void);
8219diff --git a/arch/powerpc/include/asm/thread_info.h b/arch/powerpc/include/asm/thread_info.h 8191diff --git a/arch/powerpc/include/asm/thread_info.h b/arch/powerpc/include/asm/thread_info.h
8220index 9854c56..7517190 100644 8192index b034ecd..af7e31f 100644
8221--- a/arch/powerpc/include/asm/thread_info.h 8193--- a/arch/powerpc/include/asm/thread_info.h
8222+++ b/arch/powerpc/include/asm/thread_info.h 8194+++ b/arch/powerpc/include/asm/thread_info.h
8223@@ -91,7 +91,6 @@ static inline struct thread_info *current_thread_info(void) 8195@@ -107,6 +107,8 @@ static inline struct thread_info *current_thread_info(void)
8224 #define TIF_POLLING_NRFLAG 3 /* true if poll_idle() is polling
8225 TIF_NEED_RESCHED */
8226 #define TIF_32BIT 4 /* 32 bit binary */
8227-#define TIF_PERFMON_WORK 5 /* work for pfm_handle_work() */
8228 #define TIF_PERFMON_CTXSW 6 /* perfmon needs ctxsw calls */
8229 #define TIF_SYSCALL_AUDIT 7 /* syscall auditing active */
8230 #define TIF_SINGLESTEP 8 /* singlestepping active */
8231@@ -108,6 +107,9 @@ static inline struct thread_info *current_thread_info(void)
8232 #if defined(CONFIG_PPC64) 8196 #if defined(CONFIG_PPC64)
8233 #define TIF_ELF2ABI 18 /* function descriptors must die! */ 8197 #define TIF_ELF2ABI 18 /* function descriptors must die! */
8234 #endif 8198 #endif
8235+#define TIF_PERFMON_WORK 19 /* work for pfm_handle_work() */
8236+/* mask must be expressable within 16 bits to satisfy 'andi' instruction reqs */ 8199+/* mask must be expressable within 16 bits to satisfy 'andi' instruction reqs */
8237+#define TIF_GRSEC_SETXID 5 /* update credentials on syscall entry/exit */ 8200+#define TIF_GRSEC_SETXID 6 /* update credentials on syscall entry/exit */
8238 8201
8239 /* as above, but as bit values */ 8202 /* as above, but as bit values */
8240 #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) 8203 #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
8241@@ -127,9 +129,10 @@ static inline struct thread_info *current_thread_info(void) 8204@@ -125,9 +127,10 @@ static inline struct thread_info *current_thread_info(void)
8242 #define _TIF_SYSCALL_TRACEPOINT (1<<TIF_SYSCALL_TRACEPOINT) 8205 #define _TIF_SYSCALL_TRACEPOINT (1<<TIF_SYSCALL_TRACEPOINT)
8243 #define _TIF_EMULATE_STACK_STORE (1<<TIF_EMULATE_STACK_STORE) 8206 #define _TIF_EMULATE_STACK_STORE (1<<TIF_EMULATE_STACK_STORE)
8244 #define _TIF_NOHZ (1<<TIF_NOHZ) 8207 #define _TIF_NOHZ (1<<TIF_NOHZ)
@@ -8249,7 +8212,7 @@ index 9854c56..7517190 100644
8249+ _TIF_NOHZ | _TIF_GRSEC_SETXID) 8212+ _TIF_NOHZ | _TIF_GRSEC_SETXID)
8250 8213
8251 #define _TIF_USER_WORK_MASK (_TIF_SIGPENDING | _TIF_NEED_RESCHED | \ 8214 #define _TIF_USER_WORK_MASK (_TIF_SIGPENDING | _TIF_NEED_RESCHED | \
8252 _TIF_NOTIFY_RESUME | _TIF_UPROBE) 8215 _TIF_NOTIFY_RESUME | _TIF_UPROBE | \
8253diff --git a/arch/powerpc/include/asm/uaccess.h b/arch/powerpc/include/asm/uaccess.h 8216diff --git a/arch/powerpc/include/asm/uaccess.h b/arch/powerpc/include/asm/uaccess.h
8254index 9485b43..3bd3c16 100644 8217index 9485b43..3bd3c16 100644
8255--- a/arch/powerpc/include/asm/uaccess.h 8218--- a/arch/powerpc/include/asm/uaccess.h
@@ -8431,7 +8394,7 @@ index 9485b43..3bd3c16 100644
8431 8394
8432 static inline unsigned long clear_user(void __user *addr, unsigned long size) 8395 static inline unsigned long clear_user(void __user *addr, unsigned long size)
8433diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile 8396diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile
8434index 445cb6e..4f80c5d 100644 8397index fcc9a89..07be2bb 100644
8435--- a/arch/powerpc/kernel/Makefile 8398--- a/arch/powerpc/kernel/Makefile
8436+++ b/arch/powerpc/kernel/Makefile 8399+++ b/arch/powerpc/kernel/Makefile
8437@@ -26,6 +26,8 @@ CFLAGS_REMOVE_ftrace.o = -pg -mno-sched-epilog 8400@@ -26,6 +26,8 @@ CFLAGS_REMOVE_ftrace.o = -pg -mno-sched-epilog
@@ -8444,10 +8407,10 @@ index 445cb6e..4f80c5d 100644
8444 irq.o align.o signal_32.o pmc.o vdso.o \ 8407 irq.o align.o signal_32.o pmc.o vdso.o \
8445 process.o systbl.o idle.o \ 8408 process.o systbl.o idle.o \
8446diff --git a/arch/powerpc/kernel/exceptions-64e.S b/arch/powerpc/kernel/exceptions-64e.S 8409diff --git a/arch/powerpc/kernel/exceptions-64e.S b/arch/powerpc/kernel/exceptions-64e.S
8447index e775156..af2d1c0 100644 8410index 063b65d..7a26e9d 100644
8448--- a/arch/powerpc/kernel/exceptions-64e.S 8411--- a/arch/powerpc/kernel/exceptions-64e.S
8449+++ b/arch/powerpc/kernel/exceptions-64e.S 8412+++ b/arch/powerpc/kernel/exceptions-64e.S
8450@@ -759,6 +759,7 @@ storage_fault_common: 8413@@ -771,6 +771,7 @@ storage_fault_common:
8451 std r14,_DAR(r1) 8414 std r14,_DAR(r1)
8452 std r15,_DSISR(r1) 8415 std r15,_DSISR(r1)
8453 addi r3,r1,STACK_FRAME_OVERHEAD 8416 addi r3,r1,STACK_FRAME_OVERHEAD
@@ -8455,7 +8418,7 @@ index e775156..af2d1c0 100644
8455 mr r4,r14 8418 mr r4,r14
8456 mr r5,r15 8419 mr r5,r15
8457 ld r14,PACA_EXGEN+EX_R14(r13) 8420 ld r14,PACA_EXGEN+EX_R14(r13)
8458@@ -767,8 +768,7 @@ storage_fault_common: 8421@@ -779,8 +780,7 @@ storage_fault_common:
8459 cmpdi r3,0 8422 cmpdi r3,0
8460 bne- 1f 8423 bne- 1f
8461 b .ret_from_except_lite 8424 b .ret_from_except_lite
@@ -8466,10 +8429,10 @@ index e775156..af2d1c0 100644
8466 ld r4,_DAR(r1) 8429 ld r4,_DAR(r1)
8467 bl .bad_page_fault 8430 bl .bad_page_fault
8468diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S 8431diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S
8469index 9f905e4..1d6b3d2 100644 8432index 38d5073..f00af8d 100644
8470--- a/arch/powerpc/kernel/exceptions-64s.S 8433--- a/arch/powerpc/kernel/exceptions-64s.S
8471+++ b/arch/powerpc/kernel/exceptions-64s.S 8434+++ b/arch/powerpc/kernel/exceptions-64s.S
8472@@ -1390,10 +1390,10 @@ handle_page_fault: 8435@@ -1584,10 +1584,10 @@ handle_page_fault:
8473 11: ld r4,_DAR(r1) 8436 11: ld r4,_DAR(r1)
8474 ld r5,_DSISR(r1) 8437 ld r5,_DSISR(r1)
8475 addi r3,r1,STACK_FRAME_OVERHEAD 8438 addi r3,r1,STACK_FRAME_OVERHEAD
@@ -8481,6 +8444,27 @@ index 9f905e4..1d6b3d2 100644
8481 mr r5,r3 8444 mr r5,r3
8482 addi r3,r1,STACK_FRAME_OVERHEAD 8445 addi r3,r1,STACK_FRAME_OVERHEAD
8483 lwz r4,_DAR(r1) 8446 lwz r4,_DAR(r1)
8447diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c
8448index 1d0848b..d74685f 100644
8449--- a/arch/powerpc/kernel/irq.c
8450+++ b/arch/powerpc/kernel/irq.c
8451@@ -447,6 +447,8 @@ void migrate_irqs(void)
8452 }
8453 #endif
8454
8455+extern void gr_handle_kernel_exploit(void);
8456+
8457 static inline void check_stack_overflow(void)
8458 {
8459 #ifdef CONFIG_DEBUG_STACKOVERFLOW
8460@@ -459,6 +461,7 @@ static inline void check_stack_overflow(void)
8461 printk("do_IRQ: stack overflow: %ld\n",
8462 sp - sizeof(struct thread_info));
8463 dump_stack();
8464+ gr_handle_kernel_exploit();
8465 }
8466 #endif
8467 }
8484diff --git a/arch/powerpc/kernel/module_32.c b/arch/powerpc/kernel/module_32.c 8468diff --git a/arch/powerpc/kernel/module_32.c b/arch/powerpc/kernel/module_32.c
8485index 6cff040..74ac5d1 100644 8469index 6cff040..74ac5d1 100644
8486--- a/arch/powerpc/kernel/module_32.c 8470--- a/arch/powerpc/kernel/module_32.c
@@ -8524,10 +8508,10 @@ index 6cff040..74ac5d1 100644
8524 sechdrs, module); 8508 sechdrs, module);
8525 #endif 8509 #endif
8526diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c 8510diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
8527index ea2f6a3..dbb2be3 100644 8511index 31d0215..206af70 100644
8528--- a/arch/powerpc/kernel/process.c 8512--- a/arch/powerpc/kernel/process.c
8529+++ b/arch/powerpc/kernel/process.c 8513+++ b/arch/powerpc/kernel/process.c
8530@@ -888,8 +888,8 @@ void show_regs(struct pt_regs * regs) 8514@@ -1031,8 +1031,8 @@ void show_regs(struct pt_regs * regs)
8531 * Lookup NIP late so we have the best change of getting the 8515 * Lookup NIP late so we have the best change of getting the
8532 * above info out without failing 8516 * above info out without failing
8533 */ 8517 */
@@ -8538,7 +8522,7 @@ index ea2f6a3..dbb2be3 100644
8538 #endif 8522 #endif
8539 show_stack(current, (unsigned long *) regs->gpr[1]); 8523 show_stack(current, (unsigned long *) regs->gpr[1]);
8540 if (!user_mode(regs)) 8524 if (!user_mode(regs))
8541@@ -1385,10 +1385,10 @@ void show_stack(struct task_struct *tsk, unsigned long *stack) 8525@@ -1554,10 +1554,10 @@ void show_stack(struct task_struct *tsk, unsigned long *stack)
8542 newsp = stack[0]; 8526 newsp = stack[0];
8543 ip = stack[STACK_FRAME_LR_SAVE]; 8527 ip = stack[STACK_FRAME_LR_SAVE];
8544 if (!firstframe || ip != lr) { 8528 if (!firstframe || ip != lr) {
@@ -8551,7 +8535,7 @@ index ea2f6a3..dbb2be3 100644
8551 (void *)current->ret_stack[curr_frame].ret); 8535 (void *)current->ret_stack[curr_frame].ret);
8552 curr_frame--; 8536 curr_frame--;
8553 } 8537 }
8554@@ -1408,7 +1408,7 @@ void show_stack(struct task_struct *tsk, unsigned long *stack) 8538@@ -1577,7 +1577,7 @@ void show_stack(struct task_struct *tsk, unsigned long *stack)
8555 struct pt_regs *regs = (struct pt_regs *) 8539 struct pt_regs *regs = (struct pt_regs *)
8556 (sp + STACK_FRAME_OVERHEAD); 8540 (sp + STACK_FRAME_OVERHEAD);
8557 lr = regs->link; 8541 lr = regs->link;
@@ -8560,7 +8544,7 @@ index ea2f6a3..dbb2be3 100644
8560 regs->trap, (void *)regs->nip, (void *)lr); 8544 regs->trap, (void *)regs->nip, (void *)lr);
8561 firstframe = 1; 8545 firstframe = 1;
8562 } 8546 }
8563@@ -1444,58 +1444,3 @@ void notrace __ppc64_runlatch_off(void) 8547@@ -1613,58 +1613,3 @@ void notrace __ppc64_runlatch_off(void)
8564 mtspr(SPRN_CTRLT, ctrl); 8548 mtspr(SPRN_CTRLT, ctrl);
8565 } 8549 }
8566 #endif /* CONFIG_PPC64 */ 8550 #endif /* CONFIG_PPC64 */
@@ -8659,10 +8643,10 @@ index 2e3d2bf..35df241 100644
8659 8643
8660 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT))) 8644 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
8661diff --git a/arch/powerpc/kernel/signal_32.c b/arch/powerpc/kernel/signal_32.c 8645diff --git a/arch/powerpc/kernel/signal_32.c b/arch/powerpc/kernel/signal_32.c
8662index 68027bf..b26fd31 100644 8646index 4e47db6..6dcc96e 100644
8663--- a/arch/powerpc/kernel/signal_32.c 8647--- a/arch/powerpc/kernel/signal_32.c
8664+++ b/arch/powerpc/kernel/signal_32.c 8648+++ b/arch/powerpc/kernel/signal_32.c
8665@@ -1004,7 +1004,7 @@ int handle_rt_signal32(unsigned long sig, struct k_sigaction *ka, 8649@@ -1013,7 +1013,7 @@ int handle_rt_signal32(unsigned long sig, struct k_sigaction *ka,
8666 /* Save user registers on the stack */ 8650 /* Save user registers on the stack */
8667 frame = &rt_sf->uc.uc_mcontext; 8651 frame = &rt_sf->uc.uc_mcontext;
8668 addr = frame; 8652 addr = frame;
@@ -8672,11 +8656,11 @@ index 68027bf..b26fd31 100644
8672 tramp = current->mm->context.vdso_base + vdso32_rt_sigtramp; 8656 tramp = current->mm->context.vdso_base + vdso32_rt_sigtramp;
8673 } else { 8657 } else {
8674diff --git a/arch/powerpc/kernel/signal_64.c b/arch/powerpc/kernel/signal_64.c 8658diff --git a/arch/powerpc/kernel/signal_64.c b/arch/powerpc/kernel/signal_64.c
8675index 448245f..b9bae83 100644 8659index d501dc4..e5a0de0 100644
8676--- a/arch/powerpc/kernel/signal_64.c 8660--- a/arch/powerpc/kernel/signal_64.c
8677+++ b/arch/powerpc/kernel/signal_64.c 8661+++ b/arch/powerpc/kernel/signal_64.c
8678@@ -758,7 +758,7 @@ int handle_rt_signal64(int signr, struct k_sigaction *ka, siginfo_t *info, 8662@@ -760,7 +760,7 @@ int handle_rt_signal64(int signr, struct k_sigaction *ka, siginfo_t *info,
8679 #endif 8663 current->thread.fp_state.fpscr = 0;
8680 8664
8681 /* Set up to return from userspace. */ 8665 /* Set up to return from userspace. */
8682- if (vdso64_rt_sigtramp && current->mm->context.vdso_base) { 8666- if (vdso64_rt_sigtramp && current->mm->context.vdso_base) {
@@ -8685,7 +8669,7 @@ index 448245f..b9bae83 100644
8685 } else { 8669 } else {
8686 err |= setup_trampoline(__NR_rt_sigreturn, &frame->tramp[0]); 8670 err |= setup_trampoline(__NR_rt_sigreturn, &frame->tramp[0]);
8687diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c 8671diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c
8688index 907a472..4ba206f 100644 8672index 33cd7a0..d615344 100644
8689--- a/arch/powerpc/kernel/traps.c 8673--- a/arch/powerpc/kernel/traps.c
8690+++ b/arch/powerpc/kernel/traps.c 8674+++ b/arch/powerpc/kernel/traps.c
8691@@ -142,6 +142,8 @@ static unsigned __kprobes long oops_begin(struct pt_regs *regs) 8675@@ -142,6 +142,8 @@ static unsigned __kprobes long oops_begin(struct pt_regs *regs)
@@ -8738,10 +8722,10 @@ index 094e45c..d82b848 100644
8738 rc = vdso_base; 8722 rc = vdso_base;
8739 goto fail_mmapsem; 8723 goto fail_mmapsem;
8740diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c 8724diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c
8741index 9ae9768..87c3448 100644 8725index 3cf541a..ab2d825 100644
8742--- a/arch/powerpc/kvm/powerpc.c 8726--- a/arch/powerpc/kvm/powerpc.c
8743+++ b/arch/powerpc/kvm/powerpc.c 8727+++ b/arch/powerpc/kvm/powerpc.c
8744@@ -1141,7 +1141,7 @@ void kvmppc_init_lpid(unsigned long nr_lpids_param) 8728@@ -1153,7 +1153,7 @@ void kvmppc_init_lpid(unsigned long nr_lpids_param)
8745 } 8729 }
8746 EXPORT_SYMBOL_GPL(kvmppc_init_lpid); 8730 EXPORT_SYMBOL_GPL(kvmppc_init_lpid);
8747 8731
@@ -8947,7 +8931,7 @@ index cb8bdbe..cde4bc7 100644
8947 } 8931 }
8948 } 8932 }
8949diff --git a/arch/powerpc/mm/slice.c b/arch/powerpc/mm/slice.c 8933diff --git a/arch/powerpc/mm/slice.c b/arch/powerpc/mm/slice.c
8950index 7ce9cf3..a964087 100644 8934index b0c75cc..ef7fb93 100644
8951--- a/arch/powerpc/mm/slice.c 8935--- a/arch/powerpc/mm/slice.c
8952+++ b/arch/powerpc/mm/slice.c 8936+++ b/arch/powerpc/mm/slice.c
8953@@ -103,7 +103,7 @@ static int slice_area_is_free(struct mm_struct *mm, unsigned long addr, 8937@@ -103,7 +103,7 @@ static int slice_area_is_free(struct mm_struct *mm, unsigned long addr,
@@ -8974,7 +8958,7 @@ index 7ce9cf3..a964087 100644
8974 if (!slice_scan_available(addr, available, 1, &addr)) 8958 if (!slice_scan_available(addr, available, 1, &addr))
8975@@ -410,6 +416,11 @@ unsigned long slice_get_unmapped_area(unsigned long addr, unsigned long len, 8959@@ -410,6 +416,11 @@ unsigned long slice_get_unmapped_area(unsigned long addr, unsigned long len,
8976 if (fixed && addr > (mm->task_size - len)) 8960 if (fixed && addr > (mm->task_size - len))
8977 return -EINVAL; 8961 return -ENOMEM;
8978 8962
8979+#ifdef CONFIG_PAX_RANDMMAP 8963+#ifdef CONFIG_PAX_RANDMMAP
8980+ if (!fixed && (mm->pax_flags & MF_PAX_RANDMMAP)) 8964+ if (!fixed && (mm->pax_flags & MF_PAX_RANDMMAP))
@@ -9016,10 +9000,10 @@ index 9098692..3d54cd1 100644
9016 struct spu_context *ctx = vma->vm_file->private_data; 9000 struct spu_context *ctx = vma->vm_file->private_data;
9017 unsigned long offset = address - vma->vm_start; 9001 unsigned long offset = address - vma->vm_start;
9018diff --git a/arch/s390/include/asm/atomic.h b/arch/s390/include/asm/atomic.h 9002diff --git a/arch/s390/include/asm/atomic.h b/arch/s390/include/asm/atomic.h
9019index fa9aaf7..3f5d836 100644 9003index 1d47061..0714963 100644
9020--- a/arch/s390/include/asm/atomic.h 9004--- a/arch/s390/include/asm/atomic.h
9021+++ b/arch/s390/include/asm/atomic.h 9005+++ b/arch/s390/include/asm/atomic.h
9022@@ -398,6 +398,16 @@ static inline long long atomic64_dec_if_positive(atomic64_t *v) 9006@@ -412,6 +412,16 @@ static inline long long atomic64_dec_if_positive(atomic64_t *v)
9023 #define atomic64_dec_and_test(_v) (atomic64_sub_return(1, _v) == 0) 9007 #define atomic64_dec_and_test(_v) (atomic64_sub_return(1, _v) == 0)
9024 #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0) 9008 #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0)
9025 9009
@@ -9221,10 +9205,10 @@ index b89b591..fd9609d 100644
9221 if (r_type == R_390_GOTPC) 9205 if (r_type == R_390_GOTPC)
9222 rc = apply_rela_bits(loc, val, 1, 32, 0); 9206 rc = apply_rela_bits(loc, val, 1, 32, 0);
9223diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c 9207diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c
9224index 7ed0d4e..1dfc145 100644 9208index dd14532..1dfc145 100644
9225--- a/arch/s390/kernel/process.c 9209--- a/arch/s390/kernel/process.c
9226+++ b/arch/s390/kernel/process.c 9210+++ b/arch/s390/kernel/process.c
9227@@ -242,39 +242,3 @@ unsigned long get_wchan(struct task_struct *p) 9211@@ -242,37 +242,3 @@ unsigned long get_wchan(struct task_struct *p)
9228 } 9212 }
9229 return 0; 9213 return 0;
9230 } 9214 }
@@ -9247,22 +9231,20 @@ index 7ed0d4e..1dfc145 100644
9247- 9231-
9248-unsigned long arch_randomize_brk(struct mm_struct *mm) 9232-unsigned long arch_randomize_brk(struct mm_struct *mm)
9249-{ 9233-{
9250- unsigned long ret = PAGE_ALIGN(mm->brk + brk_rnd()); 9234- unsigned long ret;
9251- 9235-
9252- if (ret < mm->brk) 9236- ret = PAGE_ALIGN(mm->brk + brk_rnd());
9253- return mm->brk; 9237- return (ret > mm->brk) ? ret : mm->brk;
9254- return ret;
9255-} 9238-}
9256- 9239-
9257-unsigned long randomize_et_dyn(unsigned long base) 9240-unsigned long randomize_et_dyn(unsigned long base)
9258-{ 9241-{
9259- unsigned long ret = PAGE_ALIGN(base + brk_rnd()); 9242- unsigned long ret;
9260- 9243-
9261- if (!(current->flags & PF_RANDOMIZE)) 9244- if (!(current->flags & PF_RANDOMIZE))
9262- return base; 9245- return base;
9263- if (ret < base) 9246- ret = PAGE_ALIGN(base + brk_rnd());
9264- return base; 9247- return (ret > base) ? ret : base;
9265- return ret;
9266-} 9248-}
9267diff --git a/arch/s390/mm/mmap.c b/arch/s390/mm/mmap.c 9249diff --git a/arch/s390/mm/mmap.c b/arch/s390/mm/mmap.c
9268index 9b436c2..54fbf0a 100644 9250index 9b436c2..54fbf0a 100644
@@ -9771,6 +9753,142 @@ index 502f632..da1917f 100644
9771 #define __S100 PAGE_READONLY 9753 #define __S100 PAGE_READONLY
9772 #define __S101 PAGE_READONLY 9754 #define __S101 PAGE_READONLY
9773 #define __S110 PAGE_SHARED 9755 #define __S110 PAGE_SHARED
9756diff --git a/arch/sparc/include/asm/pgtable_64.h b/arch/sparc/include/asm/pgtable_64.h
9757index 0f9e945..a949e55 100644
9758--- a/arch/sparc/include/asm/pgtable_64.h
9759+++ b/arch/sparc/include/asm/pgtable_64.h
9760@@ -71,6 +71,23 @@
9761
9762 #include <linux/sched.h>
9763
9764+extern unsigned long sparc64_valid_addr_bitmap[];
9765+
9766+/* Needs to be defined here and not in linux/mm.h, as it is arch dependent */
9767+static inline bool __kern_addr_valid(unsigned long paddr)
9768+{
9769+ if ((paddr >> MAX_PHYS_ADDRESS_BITS) != 0UL)
9770+ return false;
9771+ return test_bit(paddr >> ILOG2_4MB, sparc64_valid_addr_bitmap);
9772+}
9773+
9774+static inline bool kern_addr_valid(unsigned long addr)
9775+{
9776+ unsigned long paddr = __pa(addr);
9777+
9778+ return __kern_addr_valid(paddr);
9779+}
9780+
9781 /* Entries per page directory level. */
9782 #define PTRS_PER_PTE (1UL << (PAGE_SHIFT-3))
9783 #define PTRS_PER_PMD (1UL << PMD_BITS)
9784@@ -79,9 +96,12 @@
9785 /* Kernel has a separate 44bit address space. */
9786 #define FIRST_USER_ADDRESS 0
9787
9788-#define pte_ERROR(e) __builtin_trap()
9789-#define pmd_ERROR(e) __builtin_trap()
9790-#define pgd_ERROR(e) __builtin_trap()
9791+#define pmd_ERROR(e) \
9792+ pr_err("%s:%d: bad pmd %p(%016lx) seen at (%pS)\n", \
9793+ __FILE__, __LINE__, &(e), pmd_val(e), __builtin_return_address(0))
9794+#define pgd_ERROR(e) \
9795+ pr_err("%s:%d: bad pgd %p(%016lx) seen at (%pS)\n", \
9796+ __FILE__, __LINE__, &(e), pgd_val(e), __builtin_return_address(0))
9797
9798 #endif /* !(__ASSEMBLY__) */
9799
9800@@ -633,7 +653,7 @@ static inline unsigned long pmd_large(pmd_t pmd)
9801 {
9802 pte_t pte = __pte(pmd_val(pmd));
9803
9804- return (pte_val(pte) & _PAGE_PMD_HUGE) && pte_present(pte);
9805+ return pte_val(pte) & _PAGE_PMD_HUGE;
9806 }
9807
9808 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
9809@@ -719,20 +739,6 @@ static inline pmd_t pmd_mkwrite(pmd_t pmd)
9810 return __pmd(pte_val(pte));
9811 }
9812
9813-static inline pmd_t pmd_mknotpresent(pmd_t pmd)
9814-{
9815- unsigned long mask;
9816-
9817- if (tlb_type == hypervisor)
9818- mask = _PAGE_PRESENT_4V;
9819- else
9820- mask = _PAGE_PRESENT_4U;
9821-
9822- pmd_val(pmd) &= ~mask;
9823-
9824- return pmd;
9825-}
9826-
9827 static inline pmd_t pmd_mksplitting(pmd_t pmd)
9828 {
9829 pte_t pte = __pte(pmd_val(pmd));
9830@@ -757,6 +763,20 @@ static inline int pmd_present(pmd_t pmd)
9831
9832 #define pmd_none(pmd) (!pmd_val(pmd))
9833
9834+/* pmd_bad() is only called on non-trans-huge PMDs. Our encoding is
9835+ * very simple, it's just the physical address. PTE tables are of
9836+ * size PAGE_SIZE so make sure the sub-PAGE_SIZE bits are clear and
9837+ * the top bits outside of the range of any physical address size we
9838+ * support are clear as well. We also validate the physical itself.
9839+ */
9840+#define pmd_bad(pmd) ((pmd_val(pmd) & ~PAGE_MASK) || \
9841+ !__kern_addr_valid(pmd_val(pmd)))
9842+
9843+#define pud_none(pud) (!pud_val(pud))
9844+
9845+#define pud_bad(pud) ((pud_val(pud) & ~PAGE_MASK) || \
9846+ !__kern_addr_valid(pud_val(pud)))
9847+
9848 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
9849 extern void set_pmd_at(struct mm_struct *mm, unsigned long addr,
9850 pmd_t *pmdp, pmd_t pmd);
9851@@ -790,10 +810,7 @@ static inline unsigned long __pmd_page(pmd_t pmd)
9852 #define pud_page_vaddr(pud) \
9853 ((unsigned long) __va(pud_val(pud)))
9854 #define pud_page(pud) virt_to_page((void *)pud_page_vaddr(pud))
9855-#define pmd_bad(pmd) (0)
9856 #define pmd_clear(pmdp) (pmd_val(*(pmdp)) = 0UL)
9857-#define pud_none(pud) (!pud_val(pud))
9858-#define pud_bad(pud) (0)
9859 #define pud_present(pud) (pud_val(pud) != 0U)
9860 #define pud_clear(pudp) (pud_val(*(pudp)) = 0UL)
9861
9862@@ -893,6 +910,10 @@ extern void update_mmu_cache(struct vm_area_struct *, unsigned long, pte_t *);
9863 extern void update_mmu_cache_pmd(struct vm_area_struct *vma, unsigned long addr,
9864 pmd_t *pmd);
9865
9866+#define __HAVE_ARCH_PMDP_INVALIDATE
9867+extern void pmdp_invalidate(struct vm_area_struct *vma, unsigned long address,
9868+ pmd_t *pmdp);
9869+
9870 #define __HAVE_ARCH_PGTABLE_DEPOSIT
9871 extern void pgtable_trans_huge_deposit(struct mm_struct *mm, pmd_t *pmdp,
9872 pgtable_t pgtable);
9873@@ -919,18 +940,6 @@ extern unsigned long pte_file(pte_t);
9874 extern pte_t pgoff_to_pte(unsigned long);
9875 #define PTE_FILE_MAX_BITS (64UL - PAGE_SHIFT - 1UL)
9876
9877-extern unsigned long sparc64_valid_addr_bitmap[];
9878-
9879-/* Needs to be defined here and not in linux/mm.h, as it is arch dependent */
9880-static inline bool kern_addr_valid(unsigned long addr)
9881-{
9882- unsigned long paddr = __pa(addr);
9883-
9884- if ((paddr >> 41UL) != 0UL)
9885- return false;
9886- return test_bit(paddr >> 22, sparc64_valid_addr_bitmap);
9887-}
9888-
9889 extern int page_in_phys_avail(unsigned long paddr);
9890
9891 /*
9774diff --git a/arch/sparc/include/asm/pgtsrmmu.h b/arch/sparc/include/asm/pgtsrmmu.h 9892diff --git a/arch/sparc/include/asm/pgtsrmmu.h b/arch/sparc/include/asm/pgtsrmmu.h
9775index 79da178..c2eede8 100644 9893index 79da178..c2eede8 100644
9776--- a/arch/sparc/include/asm/pgtsrmmu.h 9894--- a/arch/sparc/include/asm/pgtsrmmu.h
@@ -9948,6 +10066,20 @@ index a5f01ac..703b554 100644
9948 /* 10066 /*
9949 * Thread-synchronous status. 10067 * Thread-synchronous status.
9950 * 10068 *
10069diff --git a/arch/sparc/include/asm/tsb.h b/arch/sparc/include/asm/tsb.h
10070index 2230f80..90916f9 100644
10071--- a/arch/sparc/include/asm/tsb.h
10072+++ b/arch/sparc/include/asm/tsb.h
10073@@ -171,7 +171,8 @@ extern struct tsb_phys_patch_entry __tsb_phys_patch, __tsb_phys_patch_end;
10074 andcc REG1, REG2, %g0; \
10075 be,pt %xcc, 700f; \
10076 sethi %hi(4 * 1024 * 1024), REG2; \
10077- andn REG1, REG2, REG1; \
10078+ brgez,pn REG1, FAIL_LABEL; \
10079+ andn REG1, REG2, REG1; \
10080 and VADDR, REG2, REG2; \
10081 brlz,pt REG1, PTE_LABEL; \
10082 or REG1, REG2, REG1; \
9951diff --git a/arch/sparc/include/asm/uaccess.h b/arch/sparc/include/asm/uaccess.h 10083diff --git a/arch/sparc/include/asm/uaccess.h b/arch/sparc/include/asm/uaccess.h
9952index 0167d26..767bb0c 100644 10084index 0167d26..767bb0c 100644
9953--- a/arch/sparc/include/asm/uaccess.h 10085--- a/arch/sparc/include/asm/uaccess.h
@@ -10074,10 +10206,10 @@ index d15cc17..d0ae796 100644
10074 extra-y := head_$(BITS).o 10206 extra-y := head_$(BITS).o
10075 10207
10076diff --git a/arch/sparc/kernel/process_32.c b/arch/sparc/kernel/process_32.c 10208diff --git a/arch/sparc/kernel/process_32.c b/arch/sparc/kernel/process_32.c
10077index fdd819d..5af08c8 100644 10209index 510baec..9ff2607 100644
10078--- a/arch/sparc/kernel/process_32.c 10210--- a/arch/sparc/kernel/process_32.c
10079+++ b/arch/sparc/kernel/process_32.c 10211+++ b/arch/sparc/kernel/process_32.c
10080@@ -116,14 +116,14 @@ void show_regs(struct pt_regs *r) 10212@@ -115,14 +115,14 @@ void show_regs(struct pt_regs *r)
10081 10213
10082 printk("PSR: %08lx PC: %08lx NPC: %08lx Y: %08lx %s\n", 10214 printk("PSR: %08lx PC: %08lx NPC: %08lx Y: %08lx %s\n",
10083 r->psr, r->pc, r->npc, r->y, print_tainted()); 10215 r->psr, r->pc, r->npc, r->y, print_tainted());
@@ -10094,7 +10226,7 @@ index fdd819d..5af08c8 100644
10094 10226
10095 printk("%%L: %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n", 10227 printk("%%L: %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
10096 rw->locals[0], rw->locals[1], rw->locals[2], rw->locals[3], 10228 rw->locals[0], rw->locals[1], rw->locals[2], rw->locals[3],
10097@@ -160,7 +160,7 @@ void show_stack(struct task_struct *tsk, unsigned long *_ksp) 10229@@ -159,7 +159,7 @@ void show_stack(struct task_struct *tsk, unsigned long *_ksp)
10098 rw = (struct reg_window32 *) fp; 10230 rw = (struct reg_window32 *) fp;
10099 pc = rw->ins[7]; 10231 pc = rw->ins[7];
10100 printk("[%08lx : ", pc); 10232 printk("[%08lx : ", pc);
@@ -10104,10 +10236,10 @@ index fdd819d..5af08c8 100644
10104 } while (++count < 16); 10236 } while (++count < 16);
10105 printk("\n"); 10237 printk("\n");
10106diff --git a/arch/sparc/kernel/process_64.c b/arch/sparc/kernel/process_64.c 10238diff --git a/arch/sparc/kernel/process_64.c b/arch/sparc/kernel/process_64.c
10107index 32a280e..84fc6a9 100644 10239index d7b4967..2edf827 100644
10108--- a/arch/sparc/kernel/process_64.c 10240--- a/arch/sparc/kernel/process_64.c
10109+++ b/arch/sparc/kernel/process_64.c 10241+++ b/arch/sparc/kernel/process_64.c
10110@@ -159,7 +159,7 @@ static void show_regwindow(struct pt_regs *regs) 10242@@ -161,7 +161,7 @@ static void show_regwindow(struct pt_regs *regs)
10111 printk("i4: %016lx i5: %016lx i6: %016lx i7: %016lx\n", 10243 printk("i4: %016lx i5: %016lx i6: %016lx i7: %016lx\n",
10112 rwk->ins[4], rwk->ins[5], rwk->ins[6], rwk->ins[7]); 10244 rwk->ins[4], rwk->ins[5], rwk->ins[6], rwk->ins[7]);
10113 if (regs->tstate & TSTATE_PRIV) 10245 if (regs->tstate & TSTATE_PRIV)
@@ -10116,7 +10248,7 @@ index 32a280e..84fc6a9 100644
10116 } 10248 }
10117 10249
10118 void show_regs(struct pt_regs *regs) 10250 void show_regs(struct pt_regs *regs)
10119@@ -168,7 +168,7 @@ void show_regs(struct pt_regs *regs) 10251@@ -170,7 +170,7 @@ void show_regs(struct pt_regs *regs)
10120 10252
10121 printk("TSTATE: %016lx TPC: %016lx TNPC: %016lx Y: %08x %s\n", regs->tstate, 10253 printk("TSTATE: %016lx TPC: %016lx TNPC: %016lx Y: %08x %s\n", regs->tstate,
10122 regs->tpc, regs->tnpc, regs->y, print_tainted()); 10254 regs->tpc, regs->tnpc, regs->y, print_tainted());
@@ -10125,7 +10257,7 @@ index 32a280e..84fc6a9 100644
10125 printk("g0: %016lx g1: %016lx g2: %016lx g3: %016lx\n", 10257 printk("g0: %016lx g1: %016lx g2: %016lx g3: %016lx\n",
10126 regs->u_regs[0], regs->u_regs[1], regs->u_regs[2], 10258 regs->u_regs[0], regs->u_regs[1], regs->u_regs[2],
10127 regs->u_regs[3]); 10259 regs->u_regs[3]);
10128@@ -181,7 +181,7 @@ void show_regs(struct pt_regs *regs) 10260@@ -183,7 +183,7 @@ void show_regs(struct pt_regs *regs)
10129 printk("o4: %016lx o5: %016lx sp: %016lx ret_pc: %016lx\n", 10261 printk("o4: %016lx o5: %016lx sp: %016lx ret_pc: %016lx\n",
10130 regs->u_regs[12], regs->u_regs[13], regs->u_regs[14], 10262 regs->u_regs[12], regs->u_regs[13], regs->u_regs[14],
10131 regs->u_regs[15]); 10263 regs->u_regs[15]);
@@ -10134,7 +10266,7 @@ index 32a280e..84fc6a9 100644
10134 show_regwindow(regs); 10266 show_regwindow(regs);
10135 show_stack(current, (unsigned long *) regs->u_regs[UREG_FP]); 10267 show_stack(current, (unsigned long *) regs->u_regs[UREG_FP]);
10136 } 10268 }
10137@@ -270,7 +270,7 @@ void arch_trigger_all_cpu_backtrace(void) 10269@@ -272,7 +272,7 @@ void arch_trigger_all_cpu_backtrace(void)
10138 ((tp && tp->task) ? tp->task->pid : -1)); 10270 ((tp && tp->task) ? tp->task->pid : -1));
10139 10271
10140 if (gp->tstate & TSTATE_PRIV) { 10272 if (gp->tstate & TSTATE_PRIV) {
@@ -10433,7 +10565,7 @@ index beb0b5a..5a153f7 100644
10433 } 10565 }
10434 } 10566 }
10435diff --git a/arch/sparc/kernel/syscalls.S b/arch/sparc/kernel/syscalls.S 10567diff --git a/arch/sparc/kernel/syscalls.S b/arch/sparc/kernel/syscalls.S
10436index 87729ff..d87fb1f 100644 10568index 33a17e7..d87fb1f 100644
10437--- a/arch/sparc/kernel/syscalls.S 10569--- a/arch/sparc/kernel/syscalls.S
10438+++ b/arch/sparc/kernel/syscalls.S 10570+++ b/arch/sparc/kernel/syscalls.S
10439@@ -52,7 +52,7 @@ sys32_rt_sigreturn: 10571@@ -52,7 +52,7 @@ sys32_rt_sigreturn:
@@ -10445,7 +10577,7 @@ index 87729ff..d87fb1f 100644
10445 be,pt %icc, rtrap 10577 be,pt %icc, rtrap
10446 nop 10578 nop
10447 call syscall_trace_leave 10579 call syscall_trace_leave
10448@@ -184,12 +184,13 @@ linux_sparc_syscall32: 10580@@ -184,7 +184,7 @@ linux_sparc_syscall32:
10449 10581
10450 srl %i3, 0, %o3 ! IEU0 10582 srl %i3, 0, %o3 ! IEU0
10451 srl %i2, 0, %o2 ! IEU0 Group 10583 srl %i2, 0, %o2 ! IEU0 Group
@@ -10454,14 +10586,7 @@ index 87729ff..d87fb1f 100644
10454 bne,pn %icc, linux_syscall_trace32 ! CTI 10586 bne,pn %icc, linux_syscall_trace32 ! CTI
10455 mov %i0, %l5 ! IEU1 10587 mov %i0, %l5 ! IEU1
10456 5: call %l7 ! CTI Group brk forced 10588 5: call %l7 ! CTI Group brk forced
10457 srl %i5, 0, %o5 ! IEU1 10589@@ -208,7 +208,7 @@ linux_sparc_syscall:
10458- ba,a,pt %xcc, 3f
10459+ ba,pt %xcc, 3f
10460+ sra %o0, 0, %o0
10461
10462 /* Linux native system calls enter here... */
10463 .align 32
10464@@ -207,7 +208,7 @@ linux_sparc_syscall:
10465 10590
10466 mov %i3, %o3 ! IEU1 10591 mov %i3, %o3 ! IEU1
10467 mov %i4, %o4 ! IEU0 Group 10592 mov %i4, %o4 ! IEU0 Group
@@ -10470,13 +10595,7 @@ index 87729ff..d87fb1f 100644
10470 bne,pn %icc, linux_syscall_trace ! CTI Group 10595 bne,pn %icc, linux_syscall_trace ! CTI Group
10471 mov %i0, %l5 ! IEU0 10596 mov %i0, %l5 ! IEU0
10472 2: call %l7 ! CTI Group brk forced 10597 2: call %l7 ! CTI Group brk forced
10473@@ -217,13 +218,12 @@ linux_sparc_syscall: 10598@@ -223,7 +223,7 @@ ret_sys_call:
10474 3: stx %o0, [%sp + PTREGS_OFF + PT_V9_I0]
10475 ret_sys_call:
10476 ldx [%sp + PTREGS_OFF + PT_V9_TSTATE], %g3
10477- sra %o0, 0, %o0
10478 mov %ulo(TSTATE_XCARRY | TSTATE_ICARRY), %g2
10479 sllx %g2, 32, %g2
10480 10599
10481 cmp %o0, -ERESTART_RESTARTBLOCK 10600 cmp %o0, -ERESTART_RESTARTBLOCK
10482 bgeu,pn %xcc, 1f 10601 bgeu,pn %xcc, 1f
@@ -10709,10 +10828,37 @@ index 4ced92f..965eeed 100644
10709 } 10828 }
10710 EXPORT_SYMBOL(die_if_kernel); 10829 EXPORT_SYMBOL(die_if_kernel);
10711diff --git a/arch/sparc/kernel/unaligned_64.c b/arch/sparc/kernel/unaligned_64.c 10830diff --git a/arch/sparc/kernel/unaligned_64.c b/arch/sparc/kernel/unaligned_64.c
10712index 3c1a7cb..73e1923 100644 10831index 3c1a7cb..9046547 100644
10713--- a/arch/sparc/kernel/unaligned_64.c 10832--- a/arch/sparc/kernel/unaligned_64.c
10714+++ b/arch/sparc/kernel/unaligned_64.c 10833+++ b/arch/sparc/kernel/unaligned_64.c
10715@@ -289,7 +289,7 @@ static void log_unaligned(struct pt_regs *regs) 10834@@ -166,17 +166,23 @@ static unsigned long *fetch_reg_addr(unsigned int reg, struct pt_regs *regs)
10835 unsigned long compute_effective_address(struct pt_regs *regs,
10836 unsigned int insn, unsigned int rd)
10837 {
10838+ int from_kernel = (regs->tstate & TSTATE_PRIV) != 0;
10839 unsigned int rs1 = (insn >> 14) & 0x1f;
10840 unsigned int rs2 = insn & 0x1f;
10841- int from_kernel = (regs->tstate & TSTATE_PRIV) != 0;
10842+ unsigned long addr;
10843
10844 if (insn & 0x2000) {
10845 maybe_flush_windows(rs1, 0, rd, from_kernel);
10846- return (fetch_reg(rs1, regs) + sign_extend_imm13(insn));
10847+ addr = (fetch_reg(rs1, regs) + sign_extend_imm13(insn));
10848 } else {
10849 maybe_flush_windows(rs1, rs2, rd, from_kernel);
10850- return (fetch_reg(rs1, regs) + fetch_reg(rs2, regs));
10851+ addr = (fetch_reg(rs1, regs) + fetch_reg(rs2, regs));
10852 }
10853+
10854+ if (!from_kernel && test_thread_flag(TIF_32BIT))
10855+ addr &= 0xffffffff;
10856+
10857+ return addr;
10858 }
10859
10860 /* This is just to make gcc think die_if_kernel does return... */
10861@@ -289,7 +295,7 @@ static void log_unaligned(struct pt_regs *regs)
10716 static DEFINE_RATELIMIT_STATE(ratelimit, 5 * HZ, 5); 10862 static DEFINE_RATELIMIT_STATE(ratelimit, 5 * HZ, 5);
10717 10863
10718 if (__ratelimit(&ratelimit)) { 10864 if (__ratelimit(&ratelimit)) {
@@ -11302,7 +11448,7 @@ index 59dbd46..1dd7f5e 100644
11302 if (!(vma->vm_flags & (VM_READ | VM_EXEC))) 11448 if (!(vma->vm_flags & (VM_READ | VM_EXEC)))
11303 goto bad_area; 11449 goto bad_area;
11304diff --git a/arch/sparc/mm/fault_64.c b/arch/sparc/mm/fault_64.c 11450diff --git a/arch/sparc/mm/fault_64.c b/arch/sparc/mm/fault_64.c
11305index 69bb818..6ca35c8 100644 11451index 69bb818..3542236 100644
11306--- a/arch/sparc/mm/fault_64.c 11452--- a/arch/sparc/mm/fault_64.c
11307+++ b/arch/sparc/mm/fault_64.c 11453+++ b/arch/sparc/mm/fault_64.c
11308@@ -22,6 +22,9 @@ 11454@@ -22,6 +22,9 @@
@@ -11324,7 +11470,124 @@ index 69bb818..6ca35c8 100644
11324 printk(KERN_CRIT "OOPS: Fault was to vaddr[%lx]\n", vaddr); 11470 printk(KERN_CRIT "OOPS: Fault was to vaddr[%lx]\n", vaddr);
11325 dump_stack(); 11471 dump_stack();
11326 unhandled_fault(regs->tpc, current, regs); 11472 unhandled_fault(regs->tpc, current, regs);
11327@@ -271,6 +274,466 @@ static void noinline __kprobes bogus_32bit_fault_address(struct pt_regs *regs, 11473@@ -96,38 +99,51 @@ static unsigned int get_user_insn(unsigned long tpc)
11474 pte_t *ptep, pte;
11475 unsigned long pa;
11476 u32 insn = 0;
11477- unsigned long pstate;
11478
11479- if (pgd_none(*pgdp))
11480- goto outret;
11481+ if (pgd_none(*pgdp) || unlikely(pgd_bad(*pgdp)))
11482+ goto out;
11483 pudp = pud_offset(pgdp, tpc);
11484- if (pud_none(*pudp))
11485- goto outret;
11486- pmdp = pmd_offset(pudp, tpc);
11487- if (pmd_none(*pmdp))
11488- goto outret;
11489+ if (pud_none(*pudp) || unlikely(pud_bad(*pudp)))
11490+ goto out;
11491
11492 /* This disables preemption for us as well. */
11493- __asm__ __volatile__("rdpr %%pstate, %0" : "=r" (pstate));
11494- __asm__ __volatile__("wrpr %0, %1, %%pstate"
11495- : : "r" (pstate), "i" (PSTATE_IE));
11496- ptep = pte_offset_map(pmdp, tpc);
11497- pte = *ptep;
11498- if (!pte_present(pte))
11499- goto out;
11500+ local_irq_disable();
11501
11502- pa = (pte_pfn(pte) << PAGE_SHIFT);
11503- pa += (tpc & ~PAGE_MASK);
11504+ pmdp = pmd_offset(pudp, tpc);
11505+ if (pmd_none(*pmdp) || unlikely(pmd_bad(*pmdp)))
11506+ goto out_irq_enable;
11507
11508- /* Use phys bypass so we don't pollute dtlb/dcache. */
11509- __asm__ __volatile__("lduwa [%1] %2, %0"
11510- : "=r" (insn)
11511- : "r" (pa), "i" (ASI_PHYS_USE_EC));
11512+#ifdef CONFIG_TRANSPARENT_HUGEPAGE
11513+ if (pmd_trans_huge(*pmdp)) {
11514+ if (pmd_trans_splitting(*pmdp))
11515+ goto out_irq_enable;
11516
11517+ pa = pmd_pfn(*pmdp) << PAGE_SHIFT;
11518+ pa += tpc & ~HPAGE_MASK;
11519+
11520+ /* Use phys bypass so we don't pollute dtlb/dcache. */
11521+ __asm__ __volatile__("lduwa [%1] %2, %0"
11522+ : "=r" (insn)
11523+ : "r" (pa), "i" (ASI_PHYS_USE_EC));
11524+ } else
11525+#endif
11526+ {
11527+ ptep = pte_offset_map(pmdp, tpc);
11528+ pte = *ptep;
11529+ if (pte_present(pte)) {
11530+ pa = (pte_pfn(pte) << PAGE_SHIFT);
11531+ pa += (tpc & ~PAGE_MASK);
11532+
11533+ /* Use phys bypass so we don't pollute dtlb/dcache. */
11534+ __asm__ __volatile__("lduwa [%1] %2, %0"
11535+ : "=r" (insn)
11536+ : "r" (pa), "i" (ASI_PHYS_USE_EC));
11537+ }
11538+ pte_unmap(ptep);
11539+ }
11540+out_irq_enable:
11541+ local_irq_enable();
11542 out:
11543- pte_unmap(ptep);
11544- __asm__ __volatile__("wrpr %0, 0x0, %%pstate" : : "r" (pstate));
11545-outret:
11546 return insn;
11547 }
11548
11549@@ -153,7 +169,8 @@ show_signal_msg(struct pt_regs *regs, int sig, int code,
11550 }
11551
11552 static void do_fault_siginfo(int code, int sig, struct pt_regs *regs,
11553- unsigned int insn, int fault_code)
11554+ unsigned long fault_addr, unsigned int insn,
11555+ int fault_code)
11556 {
11557 unsigned long addr;
11558 siginfo_t info;
11559@@ -161,10 +178,18 @@ static void do_fault_siginfo(int code, int sig, struct pt_regs *regs,
11560 info.si_code = code;
11561 info.si_signo = sig;
11562 info.si_errno = 0;
11563- if (fault_code & FAULT_CODE_ITLB)
11564+ if (fault_code & FAULT_CODE_ITLB) {
11565 addr = regs->tpc;
11566- else
11567- addr = compute_effective_address(regs, insn, 0);
11568+ } else {
11569+ /* If we were able to probe the faulting instruction, use it
11570+ * to compute a precise fault address. Otherwise use the fault
11571+ * time provided address which may only have page granularity.
11572+ */
11573+ if (insn)
11574+ addr = compute_effective_address(regs, insn, 0);
11575+ else
11576+ addr = fault_addr;
11577+ }
11578 info.si_addr = (void __user *) addr;
11579 info.si_trapno = 0;
11580
11581@@ -239,7 +264,7 @@ static void __kprobes do_kernel_fault(struct pt_regs *regs, int si_code,
11582 /* The si_code was set to make clear whether
11583 * this was a SEGV_MAPERR or SEGV_ACCERR fault.
11584 */
11585- do_fault_siginfo(si_code, SIGSEGV, regs, insn, fault_code);
11586+ do_fault_siginfo(si_code, SIGSEGV, regs, address, insn, fault_code);
11587 return;
11588 }
11589
11590@@ -271,6 +296,466 @@ static void noinline __kprobes bogus_32bit_fault_address(struct pt_regs *regs,
11328 show_regs(regs); 11591 show_regs(regs);
11329 } 11592 }
11330 11593
@@ -11791,7 +12054,7 @@ index 69bb818..6ca35c8 100644
11791 asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs) 12054 asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs)
11792 { 12055 {
11793 enum ctx_state prev_state = exception_enter(); 12056 enum ctx_state prev_state = exception_enter();
11794@@ -344,6 +807,29 @@ retry: 12057@@ -344,6 +829,29 @@ retry:
11795 if (!vma) 12058 if (!vma)
11796 goto bad_area; 12059 goto bad_area;
11797 12060
@@ -11821,11 +12084,33 @@ index 69bb818..6ca35c8 100644
11821 /* Pure DTLB misses do not tell us whether the fault causing 12084 /* Pure DTLB misses do not tell us whether the fault causing
11822 * load/store/atomic was a write or not, it only says that there 12085 * load/store/atomic was a write or not, it only says that there
11823 * was no match. So in such a case we (carefully) read the 12086 * was no match. So in such a case we (carefully) read the
12087@@ -525,7 +1033,7 @@ do_sigbus:
12088 * Send a sigbus, regardless of whether we were in kernel
12089 * or user mode.
12090 */
12091- do_fault_siginfo(BUS_ADRERR, SIGBUS, regs, insn, fault_code);
12092+ do_fault_siginfo(BUS_ADRERR, SIGBUS, regs, address, insn, fault_code);
12093
12094 /* Kernel mode? Handle exceptions or die */
12095 if (regs->tstate & TSTATE_PRIV)
12096diff --git a/arch/sparc/mm/gup.c b/arch/sparc/mm/gup.c
12097index c4d3da6..1aed043 100644
12098--- a/arch/sparc/mm/gup.c
12099+++ b/arch/sparc/mm/gup.c
12100@@ -73,7 +73,7 @@ static int gup_huge_pmd(pmd_t *pmdp, pmd_t pmd, unsigned long addr,
12101 struct page *head, *page, *tail;
12102 int refs;
12103
12104- if (!pmd_large(pmd))
12105+ if (!(pmd_val(pmd) & _PAGE_VALID))
12106 return 0;
12107
12108 if (write && !pmd_write(pmd))
11824diff --git a/arch/sparc/mm/hugetlbpage.c b/arch/sparc/mm/hugetlbpage.c 12109diff --git a/arch/sparc/mm/hugetlbpage.c b/arch/sparc/mm/hugetlbpage.c
11825index 3096317..a7b7654 100644 12110index 9bd9ce8..dc84852 100644
11826--- a/arch/sparc/mm/hugetlbpage.c 12111--- a/arch/sparc/mm/hugetlbpage.c
11827+++ b/arch/sparc/mm/hugetlbpage.c 12112+++ b/arch/sparc/mm/hugetlbpage.c
11828@@ -26,7 +26,8 @@ static unsigned long hugetlb_get_unmapped_area_bottomup(struct file *filp, 12113@@ -25,8 +25,10 @@ static unsigned long hugetlb_get_unmapped_area_bottomup(struct file *filp,
11829 unsigned long addr, 12114 unsigned long addr,
11830 unsigned long len, 12115 unsigned long len,
11831 unsigned long pgoff, 12116 unsigned long pgoff,
@@ -11833,9 +12118,11 @@ index 3096317..a7b7654 100644
11833+ unsigned long flags, 12118+ unsigned long flags,
11834+ unsigned long offset) 12119+ unsigned long offset)
11835 { 12120 {
12121+ struct mm_struct *mm = current->mm;
11836 unsigned long task_size = TASK_SIZE; 12122 unsigned long task_size = TASK_SIZE;
11837 struct vm_unmapped_area_info info; 12123 struct vm_unmapped_area_info info;
11838@@ -36,15 +37,22 @@ static unsigned long hugetlb_get_unmapped_area_bottomup(struct file *filp, 12124
12125@@ -35,15 +37,22 @@ static unsigned long hugetlb_get_unmapped_area_bottomup(struct file *filp,
11839 12126
11840 info.flags = 0; 12127 info.flags = 0;
11841 info.length = len; 12128 info.length = len;
@@ -11859,7 +12146,7 @@ index 3096317..a7b7654 100644
11859 info.high_limit = task_size; 12146 info.high_limit = task_size;
11860 addr = vm_unmapped_area(&info); 12147 addr = vm_unmapped_area(&info);
11861 } 12148 }
11862@@ -56,7 +64,8 @@ static unsigned long 12149@@ -55,7 +64,8 @@ static unsigned long
11863 hugetlb_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, 12150 hugetlb_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
11864 const unsigned long len, 12151 const unsigned long len,
11865 const unsigned long pgoff, 12152 const unsigned long pgoff,
@@ -11869,7 +12156,7 @@ index 3096317..a7b7654 100644
11869 { 12156 {
11870 struct mm_struct *mm = current->mm; 12157 struct mm_struct *mm = current->mm;
11871 unsigned long addr = addr0; 12158 unsigned long addr = addr0;
11872@@ -71,6 +80,7 @@ hugetlb_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, 12159@@ -70,6 +80,7 @@ hugetlb_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
11873 info.high_limit = mm->mmap_base; 12160 info.high_limit = mm->mmap_base;
11874 info.align_mask = PAGE_MASK & ~HPAGE_MASK; 12161 info.align_mask = PAGE_MASK & ~HPAGE_MASK;
11875 info.align_offset = 0; 12162 info.align_offset = 0;
@@ -11877,7 +12164,7 @@ index 3096317..a7b7654 100644
11877 addr = vm_unmapped_area(&info); 12164 addr = vm_unmapped_area(&info);
11878 12165
11879 /* 12166 /*
11880@@ -83,6 +93,12 @@ hugetlb_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, 12167@@ -82,6 +93,12 @@ hugetlb_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
11881 VM_BUG_ON(addr != -ENOMEM); 12168 VM_BUG_ON(addr != -ENOMEM);
11882 info.flags = 0; 12169 info.flags = 0;
11883 info.low_limit = TASK_UNMAPPED_BASE; 12170 info.low_limit = TASK_UNMAPPED_BASE;
@@ -11890,7 +12177,7 @@ index 3096317..a7b7654 100644
11890 info.high_limit = STACK_TOP32; 12177 info.high_limit = STACK_TOP32;
11891 addr = vm_unmapped_area(&info); 12178 addr = vm_unmapped_area(&info);
11892 } 12179 }
11893@@ -97,6 +113,7 @@ hugetlb_get_unmapped_area(struct file *file, unsigned long addr, 12180@@ -96,6 +113,7 @@ hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
11894 struct mm_struct *mm = current->mm; 12181 struct mm_struct *mm = current->mm;
11895 struct vm_area_struct *vma; 12182 struct vm_area_struct *vma;
11896 unsigned long task_size = TASK_SIZE; 12183 unsigned long task_size = TASK_SIZE;
@@ -11898,7 +12185,7 @@ index 3096317..a7b7654 100644
11898 12185
11899 if (test_thread_flag(TIF_32BIT)) 12186 if (test_thread_flag(TIF_32BIT))
11900 task_size = STACK_TOP32; 12187 task_size = STACK_TOP32;
11901@@ -112,19 +129,22 @@ hugetlb_get_unmapped_area(struct file *file, unsigned long addr, 12188@@ -111,19 +129,22 @@ hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
11902 return addr; 12189 return addr;
11903 } 12190 }
11904 12191
@@ -11926,7 +12213,7 @@ index 3096317..a7b7654 100644
11926 12213
11927 pte_t *huge_pte_alloc(struct mm_struct *mm, 12214 pte_t *huge_pte_alloc(struct mm_struct *mm,
11928diff --git a/arch/sparc/mm/init_64.c b/arch/sparc/mm/init_64.c 12215diff --git a/arch/sparc/mm/init_64.c b/arch/sparc/mm/init_64.c
11929index 5322e53..f820c5e 100644 12216index eafbc65..5a8070d 100644
11930--- a/arch/sparc/mm/init_64.c 12217--- a/arch/sparc/mm/init_64.c
11931+++ b/arch/sparc/mm/init_64.c 12218+++ b/arch/sparc/mm/init_64.c
11932@@ -188,9 +188,9 @@ unsigned long sparc64_kern_sec_context __read_mostly; 12219@@ -188,9 +188,9 @@ unsigned long sparc64_kern_sec_context __read_mostly;
@@ -11963,6 +12250,67 @@ index 5322e53..f820c5e 100644
11963 #endif /* CONFIG_SMP */ 12250 #endif /* CONFIG_SMP */
11964 #endif /* CONFIG_DEBUG_DCFLUSH */ 12251 #endif /* CONFIG_DEBUG_DCFLUSH */
11965 } 12252 }
12253diff --git a/arch/sparc/mm/tlb.c b/arch/sparc/mm/tlb.c
12254index b12cb5e..b89aba2 100644
12255--- a/arch/sparc/mm/tlb.c
12256+++ b/arch/sparc/mm/tlb.c
12257@@ -134,7 +134,7 @@ no_cache_flush:
12258
12259 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
12260 static void tlb_batch_pmd_scan(struct mm_struct *mm, unsigned long vaddr,
12261- pmd_t pmd, bool exec)
12262+ pmd_t pmd)
12263 {
12264 unsigned long end;
12265 pte_t *pte;
12266@@ -142,8 +142,11 @@ static void tlb_batch_pmd_scan(struct mm_struct *mm, unsigned long vaddr,
12267 pte = pte_offset_map(&pmd, vaddr);
12268 end = vaddr + HPAGE_SIZE;
12269 while (vaddr < end) {
12270- if (pte_val(*pte) & _PAGE_VALID)
12271+ if (pte_val(*pte) & _PAGE_VALID) {
12272+ bool exec = pte_exec(*pte);
12273+
12274 tlb_batch_add_one(mm, vaddr, exec);
12275+ }
12276 pte++;
12277 vaddr += PAGE_SIZE;
12278 }
12279@@ -177,19 +180,30 @@ void set_pmd_at(struct mm_struct *mm, unsigned long addr,
12280 }
12281
12282 if (!pmd_none(orig)) {
12283- pte_t orig_pte = __pte(pmd_val(orig));
12284- bool exec = pte_exec(orig_pte);
12285-
12286 addr &= HPAGE_MASK;
12287 if (pmd_trans_huge(orig)) {
12288+ pte_t orig_pte = __pte(pmd_val(orig));
12289+ bool exec = pte_exec(orig_pte);
12290+
12291 tlb_batch_add_one(mm, addr, exec);
12292 tlb_batch_add_one(mm, addr + REAL_HPAGE_SIZE, exec);
12293 } else {
12294- tlb_batch_pmd_scan(mm, addr, orig, exec);
12295+ tlb_batch_pmd_scan(mm, addr, orig);
12296 }
12297 }
12298 }
12299
12300+void pmdp_invalidate(struct vm_area_struct *vma, unsigned long address,
12301+ pmd_t *pmdp)
12302+{
12303+ pmd_t entry = *pmdp;
12304+
12305+ pmd_val(entry) &= ~_PAGE_VALID;
12306+
12307+ set_pmd_at(vma->vm_mm, address, pmdp, entry);
12308+ flush_tlb_range(vma, address, address + HPAGE_PMD_SIZE);
12309+}
12310+
12311 void pgtable_trans_huge_deposit(struct mm_struct *mm, pmd_t *pmdp,
12312 pgtable_t pgtable)
12313 {
11966diff --git a/arch/tile/Kconfig b/arch/tile/Kconfig 12314diff --git a/arch/tile/Kconfig b/arch/tile/Kconfig
11967index b3692ce..e4517c9 100644 12315index b3692ce..e4517c9 100644
11968--- a/arch/tile/Kconfig 12316--- a/arch/tile/Kconfig
@@ -12168,10 +12516,19 @@ index ad8f795..2c7eec6 100644
12168 /* 12516 /*
12169 * Memory returned by kmalloc() may be used for DMA, so we must make 12517 * Memory returned by kmalloc() may be used for DMA, so we must make
12170diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig 12518diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
12171index 0952ecd..9cf578c 100644 12519index 0af5250..59f9597 100644
12172--- a/arch/x86/Kconfig 12520--- a/arch/x86/Kconfig
12173+++ b/arch/x86/Kconfig 12521+++ b/arch/x86/Kconfig
12174@@ -249,7 +249,7 @@ config X86_HT 12522@@ -126,7 +126,7 @@ config X86
12523 select RTC_LIB
12524 select HAVE_DEBUG_STACKOVERFLOW
12525 select HAVE_IRQ_EXIT_ON_IRQ_STACK if X86_64
12526- select HAVE_CC_STACKPROTECTOR
12527+ select HAVE_CC_STACKPROTECTOR if X86_64 || !PAX_MEMORY_UDEREF
12528
12529 config INSTRUCTION_DECODER
12530 def_bool y
12531@@ -251,7 +251,7 @@ config X86_HT
12175 12532
12176 config X86_32_LAZY_GS 12533 config X86_32_LAZY_GS
12177 def_bool y 12534 def_bool y
@@ -12180,7 +12537,7 @@ index 0952ecd..9cf578c 100644
12180 12537
12181 config ARCH_HWEIGHT_CFLAGS 12538 config ARCH_HWEIGHT_CFLAGS
12182 string 12539 string
12183@@ -602,6 +602,7 @@ config SCHED_OMIT_FRAME_POINTER 12540@@ -589,6 +589,7 @@ config SCHED_OMIT_FRAME_POINTER
12184 12541
12185 menuconfig HYPERVISOR_GUEST 12542 menuconfig HYPERVISOR_GUEST
12186 bool "Linux guest support" 12543 bool "Linux guest support"
@@ -12188,7 +12545,7 @@ index 0952ecd..9cf578c 100644
12188 ---help--- 12545 ---help---
12189 Say Y here to enable options for running Linux under various hyper- 12546 Say Y here to enable options for running Linux under various hyper-
12190 visors. This option enables basic hypervisor detection and platform 12547 visors. This option enables basic hypervisor detection and platform
12191@@ -1127,7 +1128,7 @@ choice 12548@@ -1111,7 +1112,7 @@ choice
12192 12549
12193 config NOHIGHMEM 12550 config NOHIGHMEM
12194 bool "off" 12551 bool "off"
@@ -12197,7 +12554,7 @@ index 0952ecd..9cf578c 100644
12197 ---help--- 12554 ---help---
12198 Linux can use up to 64 Gigabytes of physical memory on x86 systems. 12555 Linux can use up to 64 Gigabytes of physical memory on x86 systems.
12199 However, the address space of 32-bit x86 processors is only 4 12556 However, the address space of 32-bit x86 processors is only 4
12200@@ -1164,7 +1165,7 @@ config NOHIGHMEM 12557@@ -1148,7 +1149,7 @@ config NOHIGHMEM
12201 12558
12202 config HIGHMEM4G 12559 config HIGHMEM4G
12203 bool "4GB" 12560 bool "4GB"
@@ -12206,7 +12563,7 @@ index 0952ecd..9cf578c 100644
12206 ---help--- 12563 ---help---
12207 Select this if you have a 32-bit processor and between 1 and 4 12564 Select this if you have a 32-bit processor and between 1 and 4
12208 gigabytes of physical RAM. 12565 gigabytes of physical RAM.
12209@@ -1217,7 +1218,7 @@ config PAGE_OFFSET 12566@@ -1201,7 +1202,7 @@ config PAGE_OFFSET
12210 hex 12567 hex
12211 default 0xB0000000 if VMSPLIT_3G_OPT 12568 default 0xB0000000 if VMSPLIT_3G_OPT
12212 default 0x80000000 if VMSPLIT_2G 12569 default 0x80000000 if VMSPLIT_2G
@@ -12215,15 +12572,7 @@ index 0952ecd..9cf578c 100644
12215 default 0x40000000 if VMSPLIT_1G 12572 default 0x40000000 if VMSPLIT_1G
12216 default 0xC0000000 12573 default 0xC0000000
12217 depends on X86_32 12574 depends on X86_32
12218@@ -1619,6 +1620,7 @@ config SECCOMP 12575@@ -1605,6 +1606,7 @@ source kernel/Kconfig.hz
12219
12220 config CC_STACKPROTECTOR
12221 bool "Enable -fstack-protector buffer overflow detection"
12222+ depends on X86_64 || !PAX_MEMORY_UDEREF
12223 ---help---
12224 This option turns on the -fstack-protector GCC feature. This
12225 feature puts, at the beginning of functions, a canary value on
12226@@ -1637,6 +1639,7 @@ source kernel/Kconfig.hz
12227 12576
12228 config KEXEC 12577 config KEXEC
12229 bool "kexec system call" 12578 bool "kexec system call"
@@ -12231,16 +12580,18 @@ index 0952ecd..9cf578c 100644
12231 ---help--- 12580 ---help---
12232 kexec is a system call that implements the ability to shutdown your 12581 kexec is a system call that implements the ability to shutdown your
12233 current kernel, and to start another kernel. It is like a reboot 12582 current kernel, and to start another kernel. It is like a reboot
12234@@ -1738,6 +1741,8 @@ config X86_NEED_RELOCS 12583@@ -1756,7 +1758,9 @@ config X86_NEED_RELOCS
12584
12235 config PHYSICAL_ALIGN 12585 config PHYSICAL_ALIGN
12236 hex "Alignment value to which kernel should be aligned" 12586 hex "Alignment value to which kernel should be aligned"
12237 default "0x1000000" 12587- default "0x200000"
12588+ default "0x1000000"
12238+ range 0x200000 0x1000000 if PAX_KERNEXEC && X86_PAE 12589+ range 0x200000 0x1000000 if PAX_KERNEXEC && X86_PAE
12239+ range 0x400000 0x1000000 if PAX_KERNEXEC && !X86_PAE 12590+ range 0x400000 0x1000000 if PAX_KERNEXEC && !X86_PAE
12240 range 0x2000 0x1000000 if X86_32 12591 range 0x2000 0x1000000 if X86_32
12241 range 0x200000 0x1000000 if X86_64 12592 range 0x200000 0x1000000 if X86_64
12242 ---help--- 12593 ---help---
12243@@ -1817,9 +1822,10 @@ config DEBUG_HOTPLUG_CPU0 12594@@ -1836,9 +1840,10 @@ config DEBUG_HOTPLUG_CPU0
12244 If unsure, say N. 12595 If unsure, say N.
12245 12596
12246 config COMPAT_VDSO 12597 config COMPAT_VDSO
@@ -12253,7 +12604,7 @@ index 0952ecd..9cf578c 100644
12253 Map the 32-bit VDSO to the predictable old-style address too. 12604 Map the 32-bit VDSO to the predictable old-style address too.
12254 12605
12255diff --git a/arch/x86/Kconfig.cpu b/arch/x86/Kconfig.cpu 12606diff --git a/arch/x86/Kconfig.cpu b/arch/x86/Kconfig.cpu
12256index c026cca..14657ae 100644 12607index f3aaf23..a1d3c49 100644
12257--- a/arch/x86/Kconfig.cpu 12608--- a/arch/x86/Kconfig.cpu
12258+++ b/arch/x86/Kconfig.cpu 12609+++ b/arch/x86/Kconfig.cpu
12259@@ -319,7 +319,7 @@ config X86_PPRO_FENCE 12610@@ -319,7 +319,7 @@ config X86_PPRO_FENCE
@@ -12274,7 +12625,7 @@ index c026cca..14657ae 100644
12274 12625
12275 config X86_INTEL_USERCOPY 12626 config X86_INTEL_USERCOPY
12276 def_bool y 12627 def_bool y
12277@@ -373,7 +373,7 @@ config X86_CMPXCHG64 12628@@ -369,7 +369,7 @@ config X86_CMPXCHG64
12278 # generates cmov. 12629 # generates cmov.
12279 config X86_CMOV 12630 config X86_CMOV
12280 def_bool y 12631 def_bool y
@@ -12284,7 +12635,7 @@ index c026cca..14657ae 100644
12284 config X86_MINIMUM_CPU_FAMILY 12635 config X86_MINIMUM_CPU_FAMILY
12285 int 12636 int
12286diff --git a/arch/x86/Kconfig.debug b/arch/x86/Kconfig.debug 12637diff --git a/arch/x86/Kconfig.debug b/arch/x86/Kconfig.debug
12287index 0f3621e..282f24b 100644 12638index 321a52c..3d51a5e 100644
12288--- a/arch/x86/Kconfig.debug 12639--- a/arch/x86/Kconfig.debug
12289+++ b/arch/x86/Kconfig.debug 12640+++ b/arch/x86/Kconfig.debug
12290@@ -84,7 +84,7 @@ config X86_PTDUMP 12641@@ -84,7 +84,7 @@ config X86_PTDUMP
@@ -12306,10 +12657,10 @@ index 0f3621e..282f24b 100644
12306 This option helps catch unintended modifications to loadable 12657 This option helps catch unintended modifications to loadable
12307 kernel module's text and read-only data. It also prevents execution 12658 kernel module's text and read-only data. It also prevents execution
12308diff --git a/arch/x86/Makefile b/arch/x86/Makefile 12659diff --git a/arch/x86/Makefile b/arch/x86/Makefile
12309index 57d0215..b4373fb 100644 12660index 0dd99ea..4a63d82 100644
12310--- a/arch/x86/Makefile 12661--- a/arch/x86/Makefile
12311+++ b/arch/x86/Makefile 12662+++ b/arch/x86/Makefile
12312@@ -49,14 +49,12 @@ ifeq ($(CONFIG_X86_32),y) 12663@@ -71,9 +71,6 @@ ifeq ($(CONFIG_X86_32),y)
12313 # CPU-specific tuning. Anything which can be shared with UML should go here. 12664 # CPU-specific tuning. Anything which can be shared with UML should go here.
12314 include $(srctree)/arch/x86/Makefile_32.cpu 12665 include $(srctree)/arch/x86/Makefile_32.cpu
12315 KBUILD_CFLAGS += $(cflags-y) 12666 KBUILD_CFLAGS += $(cflags-y)
@@ -12319,23 +12670,17 @@ index 57d0215..b4373fb 100644
12319 else 12670 else
12320 BITS := 64 12671 BITS := 64
12321 UTS_MACHINE := x86_64 12672 UTS_MACHINE := x86_64
12322 CHECKFLAGS += -D__x86_64__ -m64 12673@@ -112,6 +109,9 @@ else
12323
12324+ biarch := $(call cc-option,-m64)
12325 KBUILD_AFLAGS += -m64
12326 KBUILD_CFLAGS += -m64
12327
12328@@ -89,6 +87,9 @@ else
12329 KBUILD_CFLAGS += -maccumulate-outgoing-args 12674 KBUILD_CFLAGS += -maccumulate-outgoing-args
12330 endif 12675 endif
12331 12676
12332+# temporary until string.h is fixed 12677+# temporary until string.h is fixed
12333+KBUILD_CFLAGS += -ffreestanding 12678+KBUILD_CFLAGS += -ffreestanding
12334+ 12679+
12680 # Make sure compiler does not have buggy stack-protector support.
12335 ifdef CONFIG_CC_STACKPROTECTOR 12681 ifdef CONFIG_CC_STACKPROTECTOR
12336 cc_has_sp := $(srctree)/scripts/gcc-x86_$(BITS)-has-stack-protector.sh 12682 cc_has_sp := $(srctree)/scripts/gcc-x86_$(BITS)-has-stack-protector.sh
12337 ifeq ($(shell $(CONFIG_SHELL) $(cc_has_sp) $(CC) $(KBUILD_CPPFLAGS) $(biarch)),y) 12683@@ -269,3 +269,12 @@ define archhelp
12338@@ -247,3 +248,12 @@ define archhelp
12339 echo ' FDINITRD=file initrd for the booted kernel' 12684 echo ' FDINITRD=file initrd for the booted kernel'
12340 echo ' kvmconfig - Enable additional options for guest kernel support' 12685 echo ' kvmconfig - Enable additional options for guest kernel support'
12341 endef 12686 endef
@@ -12349,13 +12694,13 @@ index 57d0215..b4373fb 100644
12349+archprepare: 12694+archprepare:
12350+ $(if $(LDFLAGS_BUILD_ID),,$(error $(OLD_LD))) 12695+ $(if $(LDFLAGS_BUILD_ID),,$(error $(OLD_LD)))
12351diff --git a/arch/x86/boot/Makefile b/arch/x86/boot/Makefile 12696diff --git a/arch/x86/boot/Makefile b/arch/x86/boot/Makefile
12352index d9c1195..a26ca0d 100644 12697index 878df7e..a803913 100644
12353--- a/arch/x86/boot/Makefile 12698--- a/arch/x86/boot/Makefile
12354+++ b/arch/x86/boot/Makefile 12699+++ b/arch/x86/boot/Makefile
12355@@ -65,6 +65,9 @@ KBUILD_CFLAGS := $(USERINCLUDE) -m32 -g -Os -D_SETUP -D__KERNEL__ \ 12700@@ -52,6 +52,9 @@ $(obj)/cpustr.h: $(obj)/mkcpustr FORCE
12356 $(call cc-option, -fno-unit-at-a-time)) \ 12701 # ---------------------------------------------------------------------------
12357 $(call cc-option, -fno-stack-protector) \ 12702
12358 $(call cc-option, -mpreferred-stack-boundary=2) 12703 KBUILD_CFLAGS := $(USERINCLUDE) $(REALMODE_CFLAGS) -D_SETUP
12359+ifdef CONSTIFY_PLUGIN 12704+ifdef CONSTIFY_PLUGIN
12360+KBUILD_CFLAGS += -fplugin-arg-constify_plugin-no-constify 12705+KBUILD_CFLAGS += -fplugin-arg-constify_plugin-no-constify
12361+endif 12706+endif
@@ -12385,10 +12730,10 @@ index 878e4b9..20537ab 100644
12385 12730
12386 #endif /* BOOT_BITOPS_H */ 12731 #endif /* BOOT_BITOPS_H */
12387diff --git a/arch/x86/boot/boot.h b/arch/x86/boot/boot.h 12732diff --git a/arch/x86/boot/boot.h b/arch/x86/boot/boot.h
12388index ef72bae..353a184 100644 12733index 50f8c5e..4f84fff 100644
12389--- a/arch/x86/boot/boot.h 12734--- a/arch/x86/boot/boot.h
12390+++ b/arch/x86/boot/boot.h 12735+++ b/arch/x86/boot/boot.h
12391@@ -85,7 +85,7 @@ static inline void io_delay(void) 12736@@ -84,7 +84,7 @@ static inline void io_delay(void)
12392 static inline u16 ds(void) 12737 static inline u16 ds(void)
12393 { 12738 {
12394 u16 seg; 12739 u16 seg;
@@ -12397,7 +12742,7 @@ index ef72bae..353a184 100644
12397 return seg; 12742 return seg;
12398 } 12743 }
12399 12744
12400@@ -181,7 +181,7 @@ static inline void wrgs32(u32 v, addr_t addr) 12745@@ -180,7 +180,7 @@ static inline void wrgs32(u32 v, addr_t addr)
12401 static inline int memcmp(const void *s1, const void *s2, size_t len) 12746 static inline int memcmp(const void *s1, const void *s2, size_t len)
12402 { 12747 {
12403 u8 diff; 12748 u8 diff;
@@ -12407,7 +12752,7 @@ index ef72bae..353a184 100644
12407 return diff; 12752 return diff;
12408 } 12753 }
12409diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile 12754diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile
12410index c8a6792..2402765 100644 12755index 0fcd913..3bb5c42 100644
12411--- a/arch/x86/boot/compressed/Makefile 12756--- a/arch/x86/boot/compressed/Makefile
12412+++ b/arch/x86/boot/compressed/Makefile 12757+++ b/arch/x86/boot/compressed/Makefile
12413@@ -16,6 +16,9 @@ KBUILD_CFLAGS += $(cflags-y) 12758@@ -16,6 +16,9 @@ KBUILD_CFLAGS += $(cflags-y)
@@ -12463,41 +12808,53 @@ index a53440e..c3dbf1e 100644
12463 .previous 12808 .previous
12464 12809
12465diff --git a/arch/x86/boot/compressed/head_32.S b/arch/x86/boot/compressed/head_32.S 12810diff --git a/arch/x86/boot/compressed/head_32.S b/arch/x86/boot/compressed/head_32.S
12466index 5d6f689..9d06730 100644 12811index f45ab7a..ebc015f 100644
12467--- a/arch/x86/boot/compressed/head_32.S 12812--- a/arch/x86/boot/compressed/head_32.S
12468+++ b/arch/x86/boot/compressed/head_32.S 12813+++ b/arch/x86/boot/compressed/head_32.S
12469@@ -118,7 +118,7 @@ preferred_addr: 12814@@ -119,10 +119,10 @@ preferred_addr:
12815 addl %eax, %ebx
12470 notl %eax 12816 notl %eax
12471 andl %eax, %ebx 12817 andl %eax, %ebx
12472 #else 12818- cmpl $LOAD_PHYSICAL_ADDR, %ebx
12819+ cmpl $____LOAD_PHYSICAL_ADDR, %ebx
12820 jge 1f
12821 #endif
12473- movl $LOAD_PHYSICAL_ADDR, %ebx 12822- movl $LOAD_PHYSICAL_ADDR, %ebx
12474+ movl $____LOAD_PHYSICAL_ADDR, %ebx 12823+ movl $____LOAD_PHYSICAL_ADDR, %ebx
12475 #endif 12824 1:
12476 12825
12477 /* Target address to relocate to for decompression */ 12826 /* Target address to relocate to for decompression */
12478diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S 12827diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S
12479index c337422..2c5be72 100644 12828index b10fa66..5ee0472 100644
12480--- a/arch/x86/boot/compressed/head_64.S 12829--- a/arch/x86/boot/compressed/head_64.S
12481+++ b/arch/x86/boot/compressed/head_64.S 12830+++ b/arch/x86/boot/compressed/head_64.S
12482@@ -95,7 +95,7 @@ ENTRY(startup_32) 12831@@ -94,10 +94,10 @@ ENTRY(startup_32)
12832 addl %eax, %ebx
12483 notl %eax 12833 notl %eax
12484 andl %eax, %ebx 12834 andl %eax, %ebx
12485 #else 12835- cmpl $LOAD_PHYSICAL_ADDR, %ebx
12836+ cmpl $____LOAD_PHYSICAL_ADDR, %ebx
12837 jge 1f
12838 #endif
12486- movl $LOAD_PHYSICAL_ADDR, %ebx 12839- movl $LOAD_PHYSICAL_ADDR, %ebx
12487+ movl $____LOAD_PHYSICAL_ADDR, %ebx 12840+ movl $____LOAD_PHYSICAL_ADDR, %ebx
12488 #endif 12841 1:
12489 12842
12490 /* Target address to relocate to for decompression */ 12843 /* Target address to relocate to for decompression */
12491@@ -270,7 +270,7 @@ preferred_addr: 12844@@ -268,10 +268,10 @@ preferred_addr:
12845 addq %rax, %rbp
12492 notq %rax 12846 notq %rax
12493 andq %rax, %rbp 12847 andq %rax, %rbp
12494 #else 12848- cmpq $LOAD_PHYSICAL_ADDR, %rbp
12849+ cmpq $____LOAD_PHYSICAL_ADDR, %rbp
12850 jge 1f
12851 #endif
12495- movq $LOAD_PHYSICAL_ADDR, %rbp 12852- movq $LOAD_PHYSICAL_ADDR, %rbp
12496+ movq $____LOAD_PHYSICAL_ADDR, %rbp 12853+ movq $____LOAD_PHYSICAL_ADDR, %rbp
12497 #endif 12854 1:
12498 12855
12499 /* Target address to relocate to for decompression */ 12856 /* Target address to relocate to for decompression */
12500@@ -362,8 +362,8 @@ gdt: 12857@@ -363,8 +363,8 @@ gdt:
12501 .long gdt 12858 .long gdt
12502 .word 0 12859 .word 0
12503 .quad 0x0000000000000000 /* NULL descriptor */ 12860 .quad 0x0000000000000000 /* NULL descriptor */
@@ -12509,10 +12866,19 @@ index c337422..2c5be72 100644
12509 .quad 0x0000000000000000 /* TS continued */ 12866 .quad 0x0000000000000000 /* TS continued */
12510 gdt_end: 12867 gdt_end:
12511diff --git a/arch/x86/boot/compressed/misc.c b/arch/x86/boot/compressed/misc.c 12868diff --git a/arch/x86/boot/compressed/misc.c b/arch/x86/boot/compressed/misc.c
12512index 434f077..b6b4b38 100644 12869index 196eaf3..c96716d 100644
12513--- a/arch/x86/boot/compressed/misc.c 12870--- a/arch/x86/boot/compressed/misc.c
12514+++ b/arch/x86/boot/compressed/misc.c 12871+++ b/arch/x86/boot/compressed/misc.c
12515@@ -283,7 +283,7 @@ static void handle_relocations(void *output, unsigned long output_len) 12872@@ -218,7 +218,7 @@ void __putstr(const char *s)
12873
12874 void *memset(void *s, int c, size_t n)
12875 {
12876- int i;
12877+ size_t i;
12878 char *ss = s;
12879
12880 for (i = 0; i < n; i++)
12881@@ -277,7 +277,7 @@ static void handle_relocations(void *output, unsigned long output_len)
12516 * Calculate the delta between where vmlinux was linked to load 12882 * Calculate the delta between where vmlinux was linked to load
12517 * and where it was actually loaded. 12883 * and where it was actually loaded.
12518 */ 12884 */
@@ -12521,7 +12887,16 @@ index 434f077..b6b4b38 100644
12521 if (!delta) { 12887 if (!delta) {
12522 debug_putstr("No relocation needed... "); 12888 debug_putstr("No relocation needed... ");
12523 return; 12889 return;
12524@@ -380,7 +380,7 @@ static void parse_elf(void *output) 12890@@ -347,7 +347,7 @@ static void parse_elf(void *output)
12891 Elf32_Ehdr ehdr;
12892 Elf32_Phdr *phdrs, *phdr;
12893 #endif
12894- void *dest;
12895+ void *dest, *prev;
12896 int i;
12897
12898 memcpy(&ehdr, output, sizeof(ehdr));
12899@@ -374,13 +374,16 @@ static void parse_elf(void *output)
12525 case PT_LOAD: 12900 case PT_LOAD:
12526 #ifdef CONFIG_RELOCATABLE 12901 #ifdef CONFIG_RELOCATABLE
12527 dest = output; 12902 dest = output;
@@ -12530,7 +12905,16 @@ index 434f077..b6b4b38 100644
12530 #else 12905 #else
12531 dest = (void *)(phdr->p_paddr); 12906 dest = (void *)(phdr->p_paddr);
12532 #endif 12907 #endif
12533@@ -432,7 +432,7 @@ asmlinkage void decompress_kernel(void *rmode, memptr heap, 12908 memcpy(dest,
12909 output + phdr->p_offset,
12910 phdr->p_filesz);
12911+ if (i)
12912+ memset(prev, 0xff, dest - prev);
12913+ prev = dest + phdr->p_filesz;
12914 break;
12915 default: /* Ignore other PT_* */ break;
12916 }
12917@@ -430,7 +433,7 @@ asmlinkage void *decompress_kernel(void *rmode, memptr heap,
12534 error("Destination address too large"); 12918 error("Destination address too large");
12535 #endif 12919 #endif
12536 #ifndef CONFIG_RELOCATABLE 12920 #ifndef CONFIG_RELOCATABLE
@@ -12540,64 +12924,10 @@ index 434f077..b6b4b38 100644
12540 #endif 12924 #endif
12541 12925
12542diff --git a/arch/x86/boot/cpucheck.c b/arch/x86/boot/cpucheck.c 12926diff --git a/arch/x86/boot/cpucheck.c b/arch/x86/boot/cpucheck.c
12543index 4d3ff03..e4972ff 100644 12927index 100a9a1..bb3bdb0 100644
12544--- a/arch/x86/boot/cpucheck.c 12928--- a/arch/x86/boot/cpucheck.c
12545+++ b/arch/x86/boot/cpucheck.c 12929+++ b/arch/x86/boot/cpucheck.c
12546@@ -74,7 +74,7 @@ static int has_fpu(void) 12930@@ -117,9 +117,9 @@ int check_cpu(int *cpu_level_ptr, int *req_level_ptr, u32 **err_flags_ptr)
12547 u16 fcw = -1, fsw = -1;
12548 u32 cr0;
12549
12550- asm("movl %%cr0,%0" : "=r" (cr0));
12551+ asm volatile("movl %%cr0,%0" : "=r" (cr0));
12552 if (cr0 & (X86_CR0_EM|X86_CR0_TS)) {
12553 cr0 &= ~(X86_CR0_EM|X86_CR0_TS);
12554 asm volatile("movl %0,%%cr0" : : "r" (cr0));
12555@@ -90,7 +90,7 @@ static int has_eflag(u32 mask)
12556 {
12557 u32 f0, f1;
12558
12559- asm("pushfl ; "
12560+ asm volatile("pushfl ; "
12561 "pushfl ; "
12562 "popl %0 ; "
12563 "movl %0,%1 ; "
12564@@ -115,7 +115,7 @@ static void get_flags(void)
12565 set_bit(X86_FEATURE_FPU, cpu.flags);
12566
12567 if (has_eflag(X86_EFLAGS_ID)) {
12568- asm("cpuid"
12569+ asm volatile("cpuid"
12570 : "=a" (max_intel_level),
12571 "=b" (cpu_vendor[0]),
12572 "=d" (cpu_vendor[1]),
12573@@ -124,7 +124,7 @@ static void get_flags(void)
12574
12575 if (max_intel_level >= 0x00000001 &&
12576 max_intel_level <= 0x0000ffff) {
12577- asm("cpuid"
12578+ asm volatile("cpuid"
12579 : "=a" (tfms),
12580 "=c" (cpu.flags[4]),
12581 "=d" (cpu.flags[0])
12582@@ -136,7 +136,7 @@ static void get_flags(void)
12583 cpu.model += ((tfms >> 16) & 0xf) << 4;
12584 }
12585
12586- asm("cpuid"
12587+ asm volatile("cpuid"
12588 : "=a" (max_amd_level)
12589 : "a" (0x80000000)
12590 : "ebx", "ecx", "edx");
12591@@ -144,7 +144,7 @@ static void get_flags(void)
12592 if (max_amd_level >= 0x80000001 &&
12593 max_amd_level <= 0x8000ffff) {
12594 u32 eax = 0x80000001;
12595- asm("cpuid"
12596+ asm volatile("cpuid"
12597 : "+a" (eax),
12598 "=c" (cpu.flags[6]),
12599 "=d" (cpu.flags[1])
12600@@ -203,9 +203,9 @@ int check_cpu(int *cpu_level_ptr, int *req_level_ptr, u32 **err_flags_ptr)
12601 u32 ecx = MSR_K7_HWCR; 12931 u32 ecx = MSR_K7_HWCR;
12602 u32 eax, edx; 12932 u32 eax, edx;
12603 12933
@@ -12607,9 +12937,9 @@ index 4d3ff03..e4972ff 100644
12607- asm("wrmsr" : : "a" (eax), "d" (edx), "c" (ecx)); 12937- asm("wrmsr" : : "a" (eax), "d" (edx), "c" (ecx));
12608+ asm volatile("wrmsr" : : "a" (eax), "d" (edx), "c" (ecx)); 12938+ asm volatile("wrmsr" : : "a" (eax), "d" (edx), "c" (ecx));
12609 12939
12610 get_flags(); /* Make sure it really did something */ 12940 get_cpuflags(); /* Make sure it really did something */
12611 err = check_flags(); 12941 err = check_cpuflags();
12612@@ -218,9 +218,9 @@ int check_cpu(int *cpu_level_ptr, int *req_level_ptr, u32 **err_flags_ptr) 12942@@ -132,9 +132,9 @@ int check_cpu(int *cpu_level_ptr, int *req_level_ptr, u32 **err_flags_ptr)
12613 u32 ecx = MSR_VIA_FCR; 12943 u32 ecx = MSR_VIA_FCR;
12614 u32 eax, edx; 12944 u32 eax, edx;
12615 12945
@@ -12620,8 +12950,8 @@ index 4d3ff03..e4972ff 100644
12620+ asm volatile("wrmsr" : : "a" (eax), "d" (edx), "c" (ecx)); 12950+ asm volatile("wrmsr" : : "a" (eax), "d" (edx), "c" (ecx));
12621 12951
12622 set_bit(X86_FEATURE_CX8, cpu.flags); 12952 set_bit(X86_FEATURE_CX8, cpu.flags);
12623 err = check_flags(); 12953 err = check_cpuflags();
12624@@ -231,12 +231,12 @@ int check_cpu(int *cpu_level_ptr, int *req_level_ptr, u32 **err_flags_ptr) 12954@@ -145,12 +145,12 @@ int check_cpu(int *cpu_level_ptr, int *req_level_ptr, u32 **err_flags_ptr)
12625 u32 eax, edx; 12955 u32 eax, edx;
12626 u32 level = 1; 12956 u32 level = 1;
12627 12957
@@ -12636,13 +12966,13 @@ index 4d3ff03..e4972ff 100644
12636- asm("wrmsr" : : "a" (eax), "d" (edx), "c" (ecx)); 12966- asm("wrmsr" : : "a" (eax), "d" (edx), "c" (ecx));
12637+ asm volatile("wrmsr" : : "a" (eax), "d" (edx), "c" (ecx)); 12967+ asm volatile("wrmsr" : : "a" (eax), "d" (edx), "c" (ecx));
12638 12968
12639 err = check_flags(); 12969 err = check_cpuflags();
12640 } 12970 }
12641diff --git a/arch/x86/boot/header.S b/arch/x86/boot/header.S 12971diff --git a/arch/x86/boot/header.S b/arch/x86/boot/header.S
12642index 9ec06a1..2c25e79 100644 12972index ec3b8ba..6a0db1f 100644
12643--- a/arch/x86/boot/header.S 12973--- a/arch/x86/boot/header.S
12644+++ b/arch/x86/boot/header.S 12974+++ b/arch/x86/boot/header.S
12645@@ -409,10 +409,14 @@ setup_data: .quad 0 # 64-bit physical pointer to 12975@@ -416,10 +416,14 @@ setup_data: .quad 0 # 64-bit physical pointer to
12646 # single linked list of 12976 # single linked list of
12647 # struct setup_data 12977 # struct setup_data
12648 12978
@@ -13670,7 +14000,7 @@ index dbc4339..de6e120 100644
13670 14000
13671 ################################################################ 14001 ################################################################
13672diff --git a/arch/x86/crypto/ghash-clmulni-intel_asm.S b/arch/x86/crypto/ghash-clmulni-intel_asm.S 14002diff --git a/arch/x86/crypto/ghash-clmulni-intel_asm.S b/arch/x86/crypto/ghash-clmulni-intel_asm.S
13673index 586f41a..d02851e 100644 14003index 185fad4..ff4cd36 100644
13674--- a/arch/x86/crypto/ghash-clmulni-intel_asm.S 14004--- a/arch/x86/crypto/ghash-clmulni-intel_asm.S
13675+++ b/arch/x86/crypto/ghash-clmulni-intel_asm.S 14005+++ b/arch/x86/crypto/ghash-clmulni-intel_asm.S
13676@@ -18,6 +18,7 @@ 14006@@ -18,6 +18,7 @@
@@ -13681,7 +14011,7 @@ index 586f41a..d02851e 100644
13681 14011
13682 .data 14012 .data
13683 14013
13684@@ -93,6 +94,7 @@ __clmul_gf128mul_ble: 14014@@ -89,6 +90,7 @@ __clmul_gf128mul_ble:
13685 psrlq $1, T2 14015 psrlq $1, T2
13686 pxor T2, T1 14016 pxor T2, T1
13687 pxor T1, DATA 14017 pxor T1, DATA
@@ -13689,7 +14019,7 @@ index 586f41a..d02851e 100644
13689 ret 14019 ret
13690 ENDPROC(__clmul_gf128mul_ble) 14020 ENDPROC(__clmul_gf128mul_ble)
13691 14021
13692@@ -105,6 +107,7 @@ ENTRY(clmul_ghash_mul) 14022@@ -101,6 +103,7 @@ ENTRY(clmul_ghash_mul)
13693 call __clmul_gf128mul_ble 14023 call __clmul_gf128mul_ble
13694 PSHUFB_XMM BSWAP DATA 14024 PSHUFB_XMM BSWAP DATA
13695 movups DATA, (%rdi) 14025 movups DATA, (%rdi)
@@ -13697,21 +14027,13 @@ index 586f41a..d02851e 100644
13697 ret 14027 ret
13698 ENDPROC(clmul_ghash_mul) 14028 ENDPROC(clmul_ghash_mul)
13699 14029
13700@@ -132,6 +135,7 @@ ENTRY(clmul_ghash_update) 14030@@ -128,5 +131,6 @@ ENTRY(clmul_ghash_update)
13701 PSHUFB_XMM BSWAP DATA 14031 PSHUFB_XMM BSWAP DATA
13702 movups DATA, (%rdi) 14032 movups DATA, (%rdi)
13703 .Lupdate_just_ret: 14033 .Lupdate_just_ret:
13704+ pax_force_retaddr 14034+ pax_force_retaddr
13705 ret 14035 ret
13706 ENDPROC(clmul_ghash_update) 14036 ENDPROC(clmul_ghash_update)
13707
13708@@ -157,5 +161,6 @@ ENTRY(clmul_ghash_setkey)
13709 pand .Lpoly, %xmm1
13710 pxor %xmm1, %xmm0
13711 movups %xmm0, (%rdi)
13712+ pax_force_retaddr
13713 ret
13714 ENDPROC(clmul_ghash_setkey)
13715diff --git a/arch/x86/crypto/salsa20-x86_64-asm_64.S b/arch/x86/crypto/salsa20-x86_64-asm_64.S 14037diff --git a/arch/x86/crypto/salsa20-x86_64-asm_64.S b/arch/x86/crypto/salsa20-x86_64-asm_64.S
13716index 9279e0b..c4b3d2c 100644 14038index 9279e0b..c4b3d2c 100644
13717--- a/arch/x86/crypto/salsa20-x86_64-asm_64.S 14039--- a/arch/x86/crypto/salsa20-x86_64-asm_64.S
@@ -16013,7 +16335,7 @@ index f50de69..2b0a458 100644
16013 clac(); 16335 clac();
16014 return ret; 16336 return ret;
16015diff --git a/arch/x86/include/asm/cmpxchg.h b/arch/x86/include/asm/cmpxchg.h 16337diff --git a/arch/x86/include/asm/cmpxchg.h b/arch/x86/include/asm/cmpxchg.h
16016index d47786a..ce1b05d 100644 16338index d47786a..2d8883e 100644
16017--- a/arch/x86/include/asm/cmpxchg.h 16339--- a/arch/x86/include/asm/cmpxchg.h
16018+++ b/arch/x86/include/asm/cmpxchg.h 16340+++ b/arch/x86/include/asm/cmpxchg.h
16019@@ -14,8 +14,12 @@ extern void __cmpxchg_wrong_size(void) 16341@@ -14,8 +14,12 @@ extern void __cmpxchg_wrong_size(void)
@@ -16029,10 +16351,11 @@ index d47786a..ce1b05d 100644
16029 16351
16030 /* 16352 /*
16031 * Constants for operation sizes. On 32-bit, the 64-bit size it set to 16353 * Constants for operation sizes. On 32-bit, the 64-bit size it set to
16032@@ -67,6 +71,34 @@ extern void __add_wrong_size(void) 16354@@ -67,6 +71,38 @@ extern void __add_wrong_size(void)
16033 __ret; \ 16355 __ret; \
16034 }) 16356 })
16035 16357
16358+#ifdef CONFIG_PAX_REFCOUNT
16036+#define __xchg_op_check_overflow(ptr, arg, op, lock) \ 16359+#define __xchg_op_check_overflow(ptr, arg, op, lock) \
16037+ ({ \ 16360+ ({ \
16038+ __typeof__ (*(ptr)) __ret = (arg); \ 16361+ __typeof__ (*(ptr)) __ret = (arg); \
@@ -16060,11 +16383,14 @@ index d47786a..ce1b05d 100644
16060+ } \ 16383+ } \
16061+ __ret; \ 16384+ __ret; \
16062+ }) 16385+ })
16386+#else
16387+#define __xchg_op_check_overflow(ptr, arg, op, lock) __xchg_op(ptr, arg, op, lock)
16388+#endif
16063+ 16389+
16064 /* 16390 /*
16065 * Note: no "lock" prefix even on SMP: xchg always implies lock anyway. 16391 * Note: no "lock" prefix even on SMP: xchg always implies lock anyway.
16066 * Since this is generally used to protect other memory information, we 16392 * Since this is generally used to protect other memory information, we
16067@@ -167,6 +199,9 @@ extern void __add_wrong_size(void) 16393@@ -167,6 +203,9 @@ extern void __add_wrong_size(void)
16068 #define xadd_sync(ptr, inc) __xadd((ptr), (inc), "lock; ") 16394 #define xadd_sync(ptr, inc) __xadd((ptr), (inc), "lock; ")
16069 #define xadd_local(ptr, inc) __xadd((ptr), (inc), "") 16395 #define xadd_local(ptr, inc) __xadd((ptr), (inc), "")
16070 16396
@@ -16088,7 +16414,7 @@ index 59c6c40..5e0b22c 100644
16088 struct compat_timespec { 16414 struct compat_timespec {
16089 compat_time_t tv_sec; 16415 compat_time_t tv_sec;
16090diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h 16416diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h
16091index 89270b4..f0abf8e 100644 16417index 5f12968..a383517 100644
16092--- a/arch/x86/include/asm/cpufeature.h 16418--- a/arch/x86/include/asm/cpufeature.h
16093+++ b/arch/x86/include/asm/cpufeature.h 16419+++ b/arch/x86/include/asm/cpufeature.h
16094@@ -203,7 +203,7 @@ 16420@@ -203,7 +203,7 @@
@@ -16109,7 +16435,7 @@ index 89270b4..f0abf8e 100644
16109 #define X86_FEATURE_BMI2 (9*32+ 8) /* 2nd group bit manipulation extensions */ 16435 #define X86_FEATURE_BMI2 (9*32+ 8) /* 2nd group bit manipulation extensions */
16110 #define X86_FEATURE_ERMS (9*32+ 9) /* Enhanced REP MOVSB/STOSB */ 16436 #define X86_FEATURE_ERMS (9*32+ 9) /* Enhanced REP MOVSB/STOSB */
16111 #define X86_FEATURE_INVPCID (9*32+10) /* Invalidate Processor Context ID */ 16437 #define X86_FEATURE_INVPCID (9*32+10) /* Invalidate Processor Context ID */
16112@@ -353,6 +353,7 @@ extern const char * const x86_power_flags[32]; 16438@@ -358,6 +358,7 @@ extern const char * const x86_power_flags[32];
16113 #undef cpu_has_centaur_mcr 16439 #undef cpu_has_centaur_mcr
16114 #define cpu_has_centaur_mcr 0 16440 #define cpu_has_centaur_mcr 0
16115 16441
@@ -16117,7 +16443,7 @@ index 89270b4..f0abf8e 100644
16117 #endif /* CONFIG_X86_64 */ 16443 #endif /* CONFIG_X86_64 */
16118 16444
16119 #if __GNUC__ >= 4 16445 #if __GNUC__ >= 4
16120@@ -405,7 +406,8 @@ static __always_inline __pure bool __static_cpu_has(u16 bit) 16446@@ -410,7 +411,8 @@ static __always_inline __pure bool __static_cpu_has(u16 bit)
16121 16447
16122 #ifdef CONFIG_X86_DEBUG_STATIC_CPU_HAS 16448 #ifdef CONFIG_X86_DEBUG_STATIC_CPU_HAS
16123 t_warn: 16449 t_warn:
@@ -16127,7 +16453,7 @@ index 89270b4..f0abf8e 100644
16127 return false; 16453 return false;
16128 #endif 16454 #endif
16129 16455
16130@@ -425,7 +427,7 @@ static __always_inline __pure bool __static_cpu_has(u16 bit) 16456@@ -430,7 +432,7 @@ static __always_inline __pure bool __static_cpu_has(u16 bit)
16131 ".section .discard,\"aw\",@progbits\n" 16457 ".section .discard,\"aw\",@progbits\n"
16132 " .byte 0xff + (4f-3f) - (2b-1b)\n" /* size check */ 16458 " .byte 0xff + (4f-3f) - (2b-1b)\n" /* size check */
16133 ".previous\n" 16459 ".previous\n"
@@ -16136,7 +16462,7 @@ index 89270b4..f0abf8e 100644
16136 "3: movb $1,%0\n" 16462 "3: movb $1,%0\n"
16137 "4:\n" 16463 "4:\n"
16138 ".previous\n" 16464 ".previous\n"
16139@@ -462,7 +464,7 @@ static __always_inline __pure bool _static_cpu_has_safe(u16 bit) 16465@@ -467,7 +469,7 @@ static __always_inline __pure bool _static_cpu_has_safe(u16 bit)
16140 " .byte 2b - 1b\n" /* src len */ 16466 " .byte 2b - 1b\n" /* src len */
16141 " .byte 4f - 3f\n" /* repl len */ 16467 " .byte 4f - 3f\n" /* repl len */
16142 ".previous\n" 16468 ".previous\n"
@@ -16145,7 +16471,7 @@ index 89270b4..f0abf8e 100644
16145 "3: .byte 0xe9\n .long %l[t_no] - 2b\n" 16471 "3: .byte 0xe9\n .long %l[t_no] - 2b\n"
16146 "4:\n" 16472 "4:\n"
16147 ".previous\n" 16473 ".previous\n"
16148@@ -495,7 +497,7 @@ static __always_inline __pure bool _static_cpu_has_safe(u16 bit) 16474@@ -500,7 +502,7 @@ static __always_inline __pure bool _static_cpu_has_safe(u16 bit)
16149 ".section .discard,\"aw\",@progbits\n" 16475 ".section .discard,\"aw\",@progbits\n"
16150 " .byte 0xff + (4f-3f) - (2b-1b)\n" /* size check */ 16476 " .byte 0xff + (4f-3f) - (2b-1b)\n" /* size check */
16151 ".previous\n" 16477 ".previous\n"
@@ -16154,7 +16480,7 @@ index 89270b4..f0abf8e 100644
16154 "3: movb $0,%0\n" 16480 "3: movb $0,%0\n"
16155 "4:\n" 16481 "4:\n"
16156 ".previous\n" 16482 ".previous\n"
16157@@ -509,7 +511,7 @@ static __always_inline __pure bool _static_cpu_has_safe(u16 bit) 16483@@ -514,7 +516,7 @@ static __always_inline __pure bool _static_cpu_has_safe(u16 bit)
16158 ".section .discard,\"aw\",@progbits\n" 16484 ".section .discard,\"aw\",@progbits\n"
16159 " .byte 0xff + (6f-5f) - (4b-3b)\n" /* size check */ 16485 " .byte 0xff + (6f-5f) - (4b-3b)\n" /* size check */
16160 ".previous\n" 16486 ".previous\n"
@@ -16569,7 +16895,7 @@ index cea1c76..6c0d79b 100644
16569 16895
16570 return fpu_restore_checking(&tsk->thread.fpu); 16896 return fpu_restore_checking(&tsk->thread.fpu);
16571diff --git a/arch/x86/include/asm/futex.h b/arch/x86/include/asm/futex.h 16897diff --git a/arch/x86/include/asm/futex.h b/arch/x86/include/asm/futex.h
16572index be27ba1..04a8801 100644 16898index b4c1f54..e290c08 100644
16573--- a/arch/x86/include/asm/futex.h 16899--- a/arch/x86/include/asm/futex.h
16574+++ b/arch/x86/include/asm/futex.h 16900+++ b/arch/x86/include/asm/futex.h
16575@@ -12,6 +12,7 @@ 16901@@ -12,6 +12,7 @@
@@ -16632,31 +16958,20 @@ index be27ba1..04a8801 100644
16632 16958
16633 pagefault_enable(); 16959 pagefault_enable();
16634 16960
16635@@ -115,18 +119,20 @@ static inline int futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr, 16961diff --git a/arch/x86/include/asm/hugetlb.h b/arch/x86/include/asm/hugetlb.h
16636 if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32))) 16962index a809121..68c0539 100644
16637 return -EFAULT; 16963--- a/arch/x86/include/asm/hugetlb.h
16638 16964+++ b/arch/x86/include/asm/hugetlb.h
16639+ pax_open_userland(); 16965@@ -52,6 +52,7 @@ static inline pte_t huge_ptep_get_and_clear(struct mm_struct *mm,
16640 asm volatile("\t" ASM_STAC "\n" 16966 static inline void huge_ptep_clear_flush(struct vm_area_struct *vma,
16641- "1:\t" LOCK_PREFIX "cmpxchgl %4, %2\n" 16967 unsigned long addr, pte_t *ptep)
16642+ "1:\t" LOCK_PREFIX __copyuser_seg"cmpxchgl %4, %2\n" 16968 {
16643 "2:\t" ASM_CLAC "\n" 16969+ ptep_clear_flush(vma, addr, ptep);
16644 "\t.section .fixup, \"ax\"\n" 16970 }
16645 "3:\tmov %3, %0\n"
16646 "\tjmp 2b\n"
16647 "\t.previous\n"
16648 _ASM_EXTABLE(1b, 3b)
16649- : "+r" (ret), "=a" (oldval), "+m" (*uaddr)
16650+ : "+r" (ret), "=a" (oldval), "+m" (*(u32 __user *)____m(uaddr))
16651 : "i" (-EFAULT), "r" (newval), "1" (oldval)
16652 : "memory"
16653 );
16654+ pax_close_userland();
16655 16971
16656 *uval = oldval; 16972 static inline int huge_pte_none(pte_t pte)
16657 return ret;
16658diff --git a/arch/x86/include/asm/hw_irq.h b/arch/x86/include/asm/hw_irq.h 16973diff --git a/arch/x86/include/asm/hw_irq.h b/arch/x86/include/asm/hw_irq.h
16659index cba45d9..86344ba 100644 16974index 67d69b8..50e4b77 100644
16660--- a/arch/x86/include/asm/hw_irq.h 16975--- a/arch/x86/include/asm/hw_irq.h
16661+++ b/arch/x86/include/asm/hw_irq.h 16976+++ b/arch/x86/include/asm/hw_irq.h
16662@@ -165,8 +165,8 @@ extern void setup_ioapic_dest(void); 16977@@ -165,8 +165,8 @@ extern void setup_ioapic_dest(void);
@@ -16684,7 +16999,7 @@ index a203659..9889f1c 100644
16684 extern struct legacy_pic *legacy_pic; 16999 extern struct legacy_pic *legacy_pic;
16685 extern struct legacy_pic null_legacy_pic; 17000 extern struct legacy_pic null_legacy_pic;
16686diff --git a/arch/x86/include/asm/io.h b/arch/x86/include/asm/io.h 17001diff --git a/arch/x86/include/asm/io.h b/arch/x86/include/asm/io.h
16687index 34f69cb..6d95446 100644 17002index 91d9c69..dfae7d0 100644
16688--- a/arch/x86/include/asm/io.h 17003--- a/arch/x86/include/asm/io.h
16689+++ b/arch/x86/include/asm/io.h 17004+++ b/arch/x86/include/asm/io.h
16690@@ -51,12 +51,12 @@ static inline void name(type val, volatile void __iomem *addr) \ 17005@@ -51,12 +51,12 @@ static inline void name(type val, volatile void __iomem *addr) \
@@ -17251,7 +17566,7 @@ index 86f9301..b365cda 100644
17251 void unregister_nmi_handler(unsigned int, const char *); 17566 void unregister_nmi_handler(unsigned int, const char *);
17252 17567
17253diff --git a/arch/x86/include/asm/page.h b/arch/x86/include/asm/page.h 17568diff --git a/arch/x86/include/asm/page.h b/arch/x86/include/asm/page.h
17254index c878924..21f4889 100644 17569index 775873d..de5f0304 100644
17255--- a/arch/x86/include/asm/page.h 17570--- a/arch/x86/include/asm/page.h
17256+++ b/arch/x86/include/asm/page.h 17571+++ b/arch/x86/include/asm/page.h
17257@@ -52,6 +52,7 @@ static inline void copy_user_page(void *to, void *from, unsigned long vaddr, 17572@@ -52,6 +52,7 @@ static inline void copy_user_page(void *to, void *from, unsigned long vaddr,
@@ -17279,7 +17594,7 @@ index 0f1ddee..e2fc3d1 100644
17279 unsigned long y = x - __START_KERNEL_map; 17594 unsigned long y = x - __START_KERNEL_map;
17280 17595
17281diff --git a/arch/x86/include/asm/paravirt.h b/arch/x86/include/asm/paravirt.h 17596diff --git a/arch/x86/include/asm/paravirt.h b/arch/x86/include/asm/paravirt.h
17282index 401f350..dee5d13 100644 17597index cd6e1610..70f4418 100644
17283--- a/arch/x86/include/asm/paravirt.h 17598--- a/arch/x86/include/asm/paravirt.h
17284+++ b/arch/x86/include/asm/paravirt.h 17599+++ b/arch/x86/include/asm/paravirt.h
17285@@ -560,7 +560,7 @@ static inline pmd_t __pmd(pmdval_t val) 17600@@ -560,7 +560,7 @@ static inline pmd_t __pmd(pmdval_t val)
@@ -17364,7 +17679,7 @@ index 401f350..dee5d13 100644
17364 17679
17365 #endif /* __ASSEMBLY__ */ 17680 #endif /* __ASSEMBLY__ */
17366diff --git a/arch/x86/include/asm/paravirt_types.h b/arch/x86/include/asm/paravirt_types.h 17681diff --git a/arch/x86/include/asm/paravirt_types.h b/arch/x86/include/asm/paravirt_types.h
17367index aab8f67..0fb0ee4 100644 17682index 7549b8b..f0edfda 100644
17368--- a/arch/x86/include/asm/paravirt_types.h 17683--- a/arch/x86/include/asm/paravirt_types.h
17369+++ b/arch/x86/include/asm/paravirt_types.h 17684+++ b/arch/x86/include/asm/paravirt_types.h
17370@@ -84,7 +84,7 @@ struct pv_init_ops { 17685@@ -84,7 +84,7 @@ struct pv_init_ops {
@@ -17523,7 +17838,7 @@ index c4412e9..90e88c5 100644
17523 { 17838 {
17524 return (pud_t *)get_zeroed_page(GFP_KERNEL|__GFP_REPEAT); 17839 return (pud_t *)get_zeroed_page(GFP_KERNEL|__GFP_REPEAT);
17525diff --git a/arch/x86/include/asm/pgtable-2level.h b/arch/x86/include/asm/pgtable-2level.h 17840diff --git a/arch/x86/include/asm/pgtable-2level.h b/arch/x86/include/asm/pgtable-2level.h
17526index 3bf2dd0..23d2a9f 100644 17841index 0d193e2..bf59aeb 100644
17527--- a/arch/x86/include/asm/pgtable-2level.h 17842--- a/arch/x86/include/asm/pgtable-2level.h
17528+++ b/arch/x86/include/asm/pgtable-2level.h 17843+++ b/arch/x86/include/asm/pgtable-2level.h
17529@@ -18,7 +18,9 @@ static inline void native_set_pte(pte_t *ptep , pte_t pte) 17844@@ -18,7 +18,9 @@ static inline void native_set_pte(pte_t *ptep , pte_t pte)
@@ -17558,7 +17873,7 @@ index 81bb91b..9392125 100644
17558 17873
17559 /* 17874 /*
17560diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h 17875diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h
17561index 5ad38ad..71db3f2 100644 17876index bbc8b12..f228861 100644
17562--- a/arch/x86/include/asm/pgtable.h 17877--- a/arch/x86/include/asm/pgtable.h
17563+++ b/arch/x86/include/asm/pgtable.h 17878+++ b/arch/x86/include/asm/pgtable.h
17564@@ -45,6 +45,7 @@ extern struct mm_struct *pgd_page_get_mm(struct page *page); 17879@@ -45,6 +45,7 @@ extern struct mm_struct *pgd_page_get_mm(struct page *page);
@@ -17681,7 +17996,7 @@ index 5ad38ad..71db3f2 100644
17681 #include <linux/mm_types.h> 17996 #include <linux/mm_types.h>
17682 #include <linux/mmdebug.h> 17997 #include <linux/mmdebug.h>
17683 #include <linux/log2.h> 17998 #include <linux/log2.h>
17684@@ -580,7 +655,7 @@ static inline unsigned long pud_page_vaddr(pud_t pud) 17999@@ -570,7 +645,7 @@ static inline unsigned long pud_page_vaddr(pud_t pud)
17685 * Currently stuck as a macro due to indirect forward reference to 18000 * Currently stuck as a macro due to indirect forward reference to
17686 * linux/mmzone.h's __section_mem_map_addr() definition: 18001 * linux/mmzone.h's __section_mem_map_addr() definition:
17687 */ 18002 */
@@ -17690,7 +18005,7 @@ index 5ad38ad..71db3f2 100644
17690 18005
17691 /* Find an entry in the second-level page table.. */ 18006 /* Find an entry in the second-level page table.. */
17692 static inline pmd_t *pmd_offset(pud_t *pud, unsigned long address) 18007 static inline pmd_t *pmd_offset(pud_t *pud, unsigned long address)
17693@@ -620,7 +695,7 @@ static inline unsigned long pgd_page_vaddr(pgd_t pgd) 18008@@ -610,7 +685,7 @@ static inline unsigned long pgd_page_vaddr(pgd_t pgd)
17694 * Currently stuck as a macro due to indirect forward reference to 18009 * Currently stuck as a macro due to indirect forward reference to
17695 * linux/mmzone.h's __section_mem_map_addr() definition: 18010 * linux/mmzone.h's __section_mem_map_addr() definition:
17696 */ 18011 */
@@ -17699,7 +18014,7 @@ index 5ad38ad..71db3f2 100644
17699 18014
17700 /* to find an entry in a page-table-directory. */ 18015 /* to find an entry in a page-table-directory. */
17701 static inline unsigned long pud_index(unsigned long address) 18016 static inline unsigned long pud_index(unsigned long address)
17702@@ -635,7 +710,7 @@ static inline pud_t *pud_offset(pgd_t *pgd, unsigned long address) 18017@@ -625,7 +700,7 @@ static inline pud_t *pud_offset(pgd_t *pgd, unsigned long address)
17703 18018
17704 static inline int pgd_bad(pgd_t pgd) 18019 static inline int pgd_bad(pgd_t pgd)
17705 { 18020 {
@@ -17708,7 +18023,7 @@ index 5ad38ad..71db3f2 100644
17708 } 18023 }
17709 18024
17710 static inline int pgd_none(pgd_t pgd) 18025 static inline int pgd_none(pgd_t pgd)
17711@@ -658,7 +733,12 @@ static inline int pgd_none(pgd_t pgd) 18026@@ -648,7 +723,12 @@ static inline int pgd_none(pgd_t pgd)
17712 * pgd_offset() returns a (pgd_t *) 18027 * pgd_offset() returns a (pgd_t *)
17713 * pgd_index() is used get the offset into the pgd page's array of pgd_t's; 18028 * pgd_index() is used get the offset into the pgd page's array of pgd_t's;
17714 */ 18029 */
@@ -17722,7 +18037,7 @@ index 5ad38ad..71db3f2 100644
17722 /* 18037 /*
17723 * a shortcut which implies the use of the kernel's pgd, instead 18038 * a shortcut which implies the use of the kernel's pgd, instead
17724 * of a process's 18039 * of a process's
17725@@ -669,6 +749,23 @@ static inline int pgd_none(pgd_t pgd) 18040@@ -659,6 +739,23 @@ static inline int pgd_none(pgd_t pgd)
17726 #define KERNEL_PGD_BOUNDARY pgd_index(PAGE_OFFSET) 18041 #define KERNEL_PGD_BOUNDARY pgd_index(PAGE_OFFSET)
17727 #define KERNEL_PGD_PTRS (PTRS_PER_PGD - KERNEL_PGD_BOUNDARY) 18042 #define KERNEL_PGD_PTRS (PTRS_PER_PGD - KERNEL_PGD_BOUNDARY)
17728 18043
@@ -17746,7 +18061,7 @@ index 5ad38ad..71db3f2 100644
17746 #ifndef __ASSEMBLY__ 18061 #ifndef __ASSEMBLY__
17747 18062
17748 extern int direct_gbpages; 18063 extern int direct_gbpages;
17749@@ -835,11 +932,24 @@ static inline void pmdp_set_wrprotect(struct mm_struct *mm, 18064@@ -825,11 +922,24 @@ static inline void pmdp_set_wrprotect(struct mm_struct *mm,
17750 * dst and src can be on the same page, but the range must not overlap, 18065 * dst and src can be on the same page, but the range must not overlap,
17751 * and must not cross a page boundary. 18066 * and must not cross a page boundary.
17752 */ 18067 */
@@ -17907,11 +18222,11 @@ index e22c1db..23a625a 100644
17907 } 18222 }
17908 18223
17909diff --git a/arch/x86/include/asm/pgtable_64_types.h b/arch/x86/include/asm/pgtable_64_types.h 18224diff --git a/arch/x86/include/asm/pgtable_64_types.h b/arch/x86/include/asm/pgtable_64_types.h
17910index 2d88344..4679fc3 100644 18225index c883bf7..19970b3 100644
17911--- a/arch/x86/include/asm/pgtable_64_types.h 18226--- a/arch/x86/include/asm/pgtable_64_types.h
17912+++ b/arch/x86/include/asm/pgtable_64_types.h 18227+++ b/arch/x86/include/asm/pgtable_64_types.h
17913@@ -61,6 +61,11 @@ typedef struct { pteval_t pte; } pte_t; 18228@@ -61,6 +61,11 @@ typedef struct { pteval_t pte; } pte_t;
17914 #define MODULES_VADDR _AC(0xffffffffa0000000, UL) 18229 #define MODULES_VADDR (__START_KERNEL_map + KERNEL_IMAGE_SIZE)
17915 #define MODULES_END _AC(0xffffffffff000000, UL) 18230 #define MODULES_END _AC(0xffffffffff000000, UL)
17916 #define MODULES_LEN (MODULES_END - MODULES_VADDR) 18231 #define MODULES_LEN (MODULES_END - MODULES_VADDR)
17917+#define MODULES_EXEC_VADDR MODULES_VADDR 18232+#define MODULES_EXEC_VADDR MODULES_VADDR
@@ -17923,7 +18238,7 @@ index 2d88344..4679fc3 100644
17923 #define EARLY_DYNAMIC_PAGE_TABLES 64 18238 #define EARLY_DYNAMIC_PAGE_TABLES 64
17924 18239
17925diff --git a/arch/x86/include/asm/pgtable_types.h b/arch/x86/include/asm/pgtable_types.h 18240diff --git a/arch/x86/include/asm/pgtable_types.h b/arch/x86/include/asm/pgtable_types.h
17926index 840c127..a8f297b 100644 18241index 94e40f1..ebd03e4 100644
17927--- a/arch/x86/include/asm/pgtable_types.h 18242--- a/arch/x86/include/asm/pgtable_types.h
17928+++ b/arch/x86/include/asm/pgtable_types.h 18243+++ b/arch/x86/include/asm/pgtable_types.h
17929@@ -16,13 +16,12 @@ 18244@@ -16,13 +16,12 @@
@@ -18038,10 +18353,10 @@ index 840c127..a8f297b 100644
18038 #define pgprot_writecombine pgprot_writecombine 18353 #define pgprot_writecombine pgprot_writecombine
18039 extern pgprot_t pgprot_writecombine(pgprot_t prot); 18354 extern pgprot_t pgprot_writecombine(pgprot_t prot);
18040diff --git a/arch/x86/include/asm/preempt.h b/arch/x86/include/asm/preempt.h 18355diff --git a/arch/x86/include/asm/preempt.h b/arch/x86/include/asm/preempt.h
18041index c8b0519..fd29e73 100644 18356index b39e194..9d44fd1 100644
18042--- a/arch/x86/include/asm/preempt.h 18357--- a/arch/x86/include/asm/preempt.h
18043+++ b/arch/x86/include/asm/preempt.h 18358+++ b/arch/x86/include/asm/preempt.h
18044@@ -87,7 +87,7 @@ static __always_inline void __preempt_count_sub(int val) 18359@@ -99,7 +99,7 @@ static __always_inline void __preempt_count_sub(int val)
18045 */ 18360 */
18046 static __always_inline bool __preempt_count_dec_and_test(void) 18361 static __always_inline bool __preempt_count_dec_and_test(void)
18047 { 18362 {
@@ -18051,7 +18366,7 @@ index c8b0519..fd29e73 100644
18051 18366
18052 /* 18367 /*
18053diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h 18368diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
18054index 7b034a4..4fe3e3f 100644 18369index fdedd38..95c02c2 100644
18055--- a/arch/x86/include/asm/processor.h 18370--- a/arch/x86/include/asm/processor.h
18056+++ b/arch/x86/include/asm/processor.h 18371+++ b/arch/x86/include/asm/processor.h
18057@@ -128,7 +128,7 @@ struct cpuinfo_x86 { 18372@@ -128,7 +128,7 @@ struct cpuinfo_x86 {
@@ -18095,7 +18410,7 @@ index 7b034a4..4fe3e3f 100644
18095 18410
18096 /* 18411 /*
18097 * Save the original ist values for checking stack pointers during debugging 18412 * Save the original ist values for checking stack pointers during debugging
18098@@ -453,6 +465,7 @@ struct thread_struct { 18413@@ -470,6 +482,7 @@ struct thread_struct {
18099 unsigned short ds; 18414 unsigned short ds;
18100 unsigned short fsindex; 18415 unsigned short fsindex;
18101 unsigned short gsindex; 18416 unsigned short gsindex;
@@ -18103,7 +18418,7 @@ index 7b034a4..4fe3e3f 100644
18103 #endif 18418 #endif
18104 #ifdef CONFIG_X86_32 18419 #ifdef CONFIG_X86_32
18105 unsigned long ip; 18420 unsigned long ip;
18106@@ -562,29 +575,8 @@ static inline void load_sp0(struct tss_struct *tss, 18421@@ -579,29 +592,8 @@ static inline void load_sp0(struct tss_struct *tss,
18107 extern unsigned long mmu_cr4_features; 18422 extern unsigned long mmu_cr4_features;
18108 extern u32 *trampoline_cr4_features; 18423 extern u32 *trampoline_cr4_features;
18109 18424
@@ -18135,7 +18450,7 @@ index 7b034a4..4fe3e3f 100644
18135 18450
18136 typedef struct { 18451 typedef struct {
18137 unsigned long seg; 18452 unsigned long seg;
18138@@ -833,11 +825,18 @@ static inline void spin_lock_prefetch(const void *x) 18453@@ -827,11 +819,18 @@ static inline void spin_lock_prefetch(const void *x)
18139 */ 18454 */
18140 #define TASK_SIZE PAGE_OFFSET 18455 #define TASK_SIZE PAGE_OFFSET
18141 #define TASK_SIZE_MAX TASK_SIZE 18456 #define TASK_SIZE_MAX TASK_SIZE
@@ -18156,7 +18471,7 @@ index 7b034a4..4fe3e3f 100644
18156 .vm86_info = NULL, \ 18471 .vm86_info = NULL, \
18157 .sysenter_cs = __KERNEL_CS, \ 18472 .sysenter_cs = __KERNEL_CS, \
18158 .io_bitmap_ptr = NULL, \ 18473 .io_bitmap_ptr = NULL, \
18159@@ -851,7 +850,7 @@ static inline void spin_lock_prefetch(const void *x) 18474@@ -845,7 +844,7 @@ static inline void spin_lock_prefetch(const void *x)
18160 */ 18475 */
18161 #define INIT_TSS { \ 18476 #define INIT_TSS { \
18162 .x86_tss = { \ 18477 .x86_tss = { \
@@ -18165,7 +18480,7 @@ index 7b034a4..4fe3e3f 100644
18165 .ss0 = __KERNEL_DS, \ 18480 .ss0 = __KERNEL_DS, \
18166 .ss1 = __KERNEL_CS, \ 18481 .ss1 = __KERNEL_CS, \
18167 .io_bitmap_base = INVALID_IO_BITMAP_OFFSET, \ 18482 .io_bitmap_base = INVALID_IO_BITMAP_OFFSET, \
18168@@ -862,11 +861,7 @@ static inline void spin_lock_prefetch(const void *x) 18483@@ -856,11 +855,7 @@ static inline void spin_lock_prefetch(const void *x)
18169 extern unsigned long thread_saved_pc(struct task_struct *tsk); 18484 extern unsigned long thread_saved_pc(struct task_struct *tsk);
18170 18485
18171 #define THREAD_SIZE_LONGS (THREAD_SIZE/sizeof(unsigned long)) 18486 #define THREAD_SIZE_LONGS (THREAD_SIZE/sizeof(unsigned long))
@@ -18178,7 +18493,7 @@ index 7b034a4..4fe3e3f 100644
18178 18493
18179 /* 18494 /*
18180 * The below -8 is to reserve 8 bytes on top of the ring0 stack. 18495 * The below -8 is to reserve 8 bytes on top of the ring0 stack.
18181@@ -881,7 +876,7 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk); 18496@@ -875,7 +870,7 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk);
18182 #define task_pt_regs(task) \ 18497 #define task_pt_regs(task) \
18183 ({ \ 18498 ({ \
18184 struct pt_regs *__regs__; \ 18499 struct pt_regs *__regs__; \
@@ -18187,7 +18502,7 @@ index 7b034a4..4fe3e3f 100644
18187 __regs__ - 1; \ 18502 __regs__ - 1; \
18188 }) 18503 })
18189 18504
18190@@ -891,13 +886,13 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk); 18505@@ -885,13 +880,13 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk);
18191 /* 18506 /*
18192 * User space process size. 47bits minus one guard page. 18507 * User space process size. 47bits minus one guard page.
18193 */ 18508 */
@@ -18203,7 +18518,7 @@ index 7b034a4..4fe3e3f 100644
18203 18518
18204 #define TASK_SIZE (test_thread_flag(TIF_ADDR32) ? \ 18519 #define TASK_SIZE (test_thread_flag(TIF_ADDR32) ? \
18205 IA32_PAGE_OFFSET : TASK_SIZE_MAX) 18520 IA32_PAGE_OFFSET : TASK_SIZE_MAX)
18206@@ -908,11 +903,11 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk); 18521@@ -902,11 +897,11 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk);
18207 #define STACK_TOP_MAX TASK_SIZE_MAX 18522 #define STACK_TOP_MAX TASK_SIZE_MAX
18208 18523
18209 #define INIT_THREAD { \ 18524 #define INIT_THREAD { \
@@ -18217,7 +18532,7 @@ index 7b034a4..4fe3e3f 100644
18217 } 18532 }
18218 18533
18219 /* 18534 /*
18220@@ -940,6 +935,10 @@ extern void start_thread(struct pt_regs *regs, unsigned long new_ip, 18535@@ -934,6 +929,10 @@ extern void start_thread(struct pt_regs *regs, unsigned long new_ip,
18221 */ 18536 */
18222 #define TASK_UNMAPPED_BASE (PAGE_ALIGN(TASK_SIZE / 3)) 18537 #define TASK_UNMAPPED_BASE (PAGE_ALIGN(TASK_SIZE / 3))
18223 18538
@@ -18228,7 +18543,7 @@ index 7b034a4..4fe3e3f 100644
18228 #define KSTK_EIP(task) (task_pt_regs(task)->ip) 18543 #define KSTK_EIP(task) (task_pt_regs(task)->ip)
18229 18544
18230 /* Get/set a process' ability to use the timestamp counter instruction */ 18545 /* Get/set a process' ability to use the timestamp counter instruction */
18231@@ -966,7 +965,7 @@ static inline uint32_t hypervisor_cpuid_base(const char *sig, uint32_t leaves) 18546@@ -960,7 +959,7 @@ static inline uint32_t hypervisor_cpuid_base(const char *sig, uint32_t leaves)
18232 return 0; 18547 return 0;
18233 } 18548 }
18234 18549
@@ -18237,7 +18552,7 @@ index 7b034a4..4fe3e3f 100644
18237 extern void free_init_pages(char *what, unsigned long begin, unsigned long end); 18552 extern void free_init_pages(char *what, unsigned long begin, unsigned long end);
18238 18553
18239 void default_idle(void); 18554 void default_idle(void);
18240@@ -976,6 +975,6 @@ bool xen_set_default_idle(void); 18555@@ -970,6 +969,6 @@ bool xen_set_default_idle(void);
18241 #define xen_set_default_idle 0 18556 #define xen_set_default_idle 0
18242 #endif 18557 #endif
18243 18558
@@ -18246,10 +18561,10 @@ index 7b034a4..4fe3e3f 100644
18246 void df_debug(struct pt_regs *regs, long error_code); 18561 void df_debug(struct pt_regs *regs, long error_code);
18247 #endif /* _ASM_X86_PROCESSOR_H */ 18562 #endif /* _ASM_X86_PROCESSOR_H */
18248diff --git a/arch/x86/include/asm/ptrace.h b/arch/x86/include/asm/ptrace.h 18563diff --git a/arch/x86/include/asm/ptrace.h b/arch/x86/include/asm/ptrace.h
18249index 942a086..6c26446 100644 18564index 14fd6fd..6740420 100644
18250--- a/arch/x86/include/asm/ptrace.h 18565--- a/arch/x86/include/asm/ptrace.h
18251+++ b/arch/x86/include/asm/ptrace.h 18566+++ b/arch/x86/include/asm/ptrace.h
18252@@ -85,28 +85,29 @@ static inline unsigned long regs_return_value(struct pt_regs *regs) 18567@@ -84,28 +84,29 @@ static inline unsigned long regs_return_value(struct pt_regs *regs)
18253 } 18568 }
18254 18569
18255 /* 18570 /*
@@ -18285,7 +18600,7 @@ index 942a086..6c26446 100644
18285 #endif 18600 #endif
18286 } 18601 }
18287 18602
18288@@ -122,15 +123,16 @@ static inline int v8086_mode(struct pt_regs *regs) 18603@@ -121,15 +122,16 @@ static inline int v8086_mode(struct pt_regs *regs)
18289 #ifdef CONFIG_X86_64 18604 #ifdef CONFIG_X86_64
18290 static inline bool user_64bit_mode(struct pt_regs *regs) 18605 static inline bool user_64bit_mode(struct pt_regs *regs)
18291 { 18606 {
@@ -18304,7 +18619,7 @@ index 942a086..6c26446 100644
18304 #endif 18619 #endif
18305 } 18620 }
18306 18621
18307@@ -181,9 +183,11 @@ static inline unsigned long regs_get_register(struct pt_regs *regs, 18622@@ -180,9 +182,11 @@ static inline unsigned long regs_get_register(struct pt_regs *regs,
18308 * Traps from the kernel do not save sp and ss. 18623 * Traps from the kernel do not save sp and ss.
18309 * Use the helper function to retrieve sp. 18624 * Use the helper function to retrieve sp.
18310 */ 18625 */
@@ -18788,10 +19103,10 @@ index 8d3120f..352b440 100644
18788 19103
18789 static __always_inline void clac(void) 19104 static __always_inline void clac(void)
18790diff --git a/arch/x86/include/asm/smp.h b/arch/x86/include/asm/smp.h 19105diff --git a/arch/x86/include/asm/smp.h b/arch/x86/include/asm/smp.h
18791index 4137890..03fa172 100644 19106index 8cd27e0..7f05ec8 100644
18792--- a/arch/x86/include/asm/smp.h 19107--- a/arch/x86/include/asm/smp.h
18793+++ b/arch/x86/include/asm/smp.h 19108+++ b/arch/x86/include/asm/smp.h
18794@@ -36,7 +36,7 @@ DECLARE_PER_CPU_READ_MOSTLY(cpumask_var_t, cpu_core_map); 19109@@ -35,7 +35,7 @@ DECLARE_PER_CPU_READ_MOSTLY(cpumask_var_t, cpu_core_map);
18795 /* cpus sharing the last level cache: */ 19110 /* cpus sharing the last level cache: */
18796 DECLARE_PER_CPU_READ_MOSTLY(cpumask_var_t, cpu_llc_shared_map); 19111 DECLARE_PER_CPU_READ_MOSTLY(cpumask_var_t, cpu_llc_shared_map);
18797 DECLARE_PER_CPU_READ_MOSTLY(u16, cpu_llc_id); 19112 DECLARE_PER_CPU_READ_MOSTLY(u16, cpu_llc_id);
@@ -18800,7 +19115,7 @@ index 4137890..03fa172 100644
18800 19115
18801 static inline struct cpumask *cpu_sibling_mask(int cpu) 19116 static inline struct cpumask *cpu_sibling_mask(int cpu)
18802 { 19117 {
18803@@ -79,7 +79,7 @@ struct smp_ops { 19118@@ -78,7 +78,7 @@ struct smp_ops {
18804 19119
18805 void (*send_call_func_ipi)(const struct cpumask *mask); 19120 void (*send_call_func_ipi)(const struct cpumask *mask);
18806 void (*send_call_func_single_ipi)(int cpu); 19121 void (*send_call_func_single_ipi)(int cpu);
@@ -18809,7 +19124,7 @@ index 4137890..03fa172 100644
18809 19124
18810 /* Globals due to paravirt */ 19125 /* Globals due to paravirt */
18811 extern void set_cpu_sibling_map(int cpu); 19126 extern void set_cpu_sibling_map(int cpu);
18812@@ -191,14 +191,8 @@ extern unsigned disabled_cpus; 19127@@ -190,14 +190,8 @@ extern unsigned disabled_cpus;
18813 extern int safe_smp_processor_id(void); 19128 extern int safe_smp_processor_id(void);
18814 19129
18815 #elif defined(CONFIG_X86_64_SMP) 19130 #elif defined(CONFIG_X86_64_SMP)
@@ -18827,10 +19142,10 @@ index 4137890..03fa172 100644
18827 19142
18828 #endif 19143 #endif
18829diff --git a/arch/x86/include/asm/spinlock.h b/arch/x86/include/asm/spinlock.h 19144diff --git a/arch/x86/include/asm/spinlock.h b/arch/x86/include/asm/spinlock.h
18830index bf156de..1a782ab 100644 19145index 0f62f54..cb5d0dd 100644
18831--- a/arch/x86/include/asm/spinlock.h 19146--- a/arch/x86/include/asm/spinlock.h
18832+++ b/arch/x86/include/asm/spinlock.h 19147+++ b/arch/x86/include/asm/spinlock.h
18833@@ -223,6 +223,14 @@ static inline int arch_write_can_lock(arch_rwlock_t *lock) 19148@@ -222,6 +222,14 @@ static inline int arch_write_can_lock(arch_rwlock_t *lock)
18834 static inline void arch_read_lock(arch_rwlock_t *rw) 19149 static inline void arch_read_lock(arch_rwlock_t *rw)
18835 { 19150 {
18836 asm volatile(LOCK_PREFIX READ_LOCK_SIZE(dec) " (%0)\n\t" 19151 asm volatile(LOCK_PREFIX READ_LOCK_SIZE(dec) " (%0)\n\t"
@@ -18845,7 +19160,7 @@ index bf156de..1a782ab 100644
18845 "jns 1f\n" 19160 "jns 1f\n"
18846 "call __read_lock_failed\n\t" 19161 "call __read_lock_failed\n\t"
18847 "1:\n" 19162 "1:\n"
18848@@ -232,6 +240,14 @@ static inline void arch_read_lock(arch_rwlock_t *rw) 19163@@ -231,6 +239,14 @@ static inline void arch_read_lock(arch_rwlock_t *rw)
18849 static inline void arch_write_lock(arch_rwlock_t *rw) 19164 static inline void arch_write_lock(arch_rwlock_t *rw)
18850 { 19165 {
18851 asm volatile(LOCK_PREFIX WRITE_LOCK_SUB(%1) "(%0)\n\t" 19166 asm volatile(LOCK_PREFIX WRITE_LOCK_SUB(%1) "(%0)\n\t"
@@ -18860,7 +19175,7 @@ index bf156de..1a782ab 100644
18860 "jz 1f\n" 19175 "jz 1f\n"
18861 "call __write_lock_failed\n\t" 19176 "call __write_lock_failed\n\t"
18862 "1:\n" 19177 "1:\n"
18863@@ -261,13 +277,29 @@ static inline int arch_write_trylock(arch_rwlock_t *lock) 19178@@ -260,13 +276,29 @@ static inline int arch_write_trylock(arch_rwlock_t *lock)
18864 19179
18865 static inline void arch_read_unlock(arch_rwlock_t *rw) 19180 static inline void arch_read_unlock(arch_rwlock_t *rw)
18866 { 19181 {
@@ -18990,7 +19305,7 @@ index d7f3b3b..3cc39f1 100644
18990 __switch_canary_iparam \ 19305 __switch_canary_iparam \
18991 : "memory", "cc" __EXTRA_CLOBBER) 19306 : "memory", "cc" __EXTRA_CLOBBER)
18992diff --git a/arch/x86/include/asm/thread_info.h b/arch/x86/include/asm/thread_info.h 19307diff --git a/arch/x86/include/asm/thread_info.h b/arch/x86/include/asm/thread_info.h
18993index 3ba3de4..6c113b2 100644 19308index e1940c0..ac50dd8 100644
18994--- a/arch/x86/include/asm/thread_info.h 19309--- a/arch/x86/include/asm/thread_info.h
18995+++ b/arch/x86/include/asm/thread_info.h 19310+++ b/arch/x86/include/asm/thread_info.h
18996@@ -10,6 +10,7 @@ 19311@@ -10,6 +10,7 @@
@@ -19078,43 +19393,16 @@ index 3ba3de4..6c113b2 100644
19078 19393
19079 /* Only used for 64 bit */ 19394 /* Only used for 64 bit */
19080 #define _TIF_DO_NOTIFY_MASK \ 19395 #define _TIF_DO_NOTIFY_MASK \
19081@@ -153,45 +149,40 @@ struct thread_info { 19396@@ -153,6 +149,23 @@ struct thread_info {
19082 #define _TIF_WORK_CTXSW_PREV (_TIF_WORK_CTXSW|_TIF_USER_RETURN_NOTIFY) 19397 #define _TIF_WORK_CTXSW_PREV (_TIF_WORK_CTXSW|_TIF_USER_RETURN_NOTIFY)
19083 #define _TIF_WORK_CTXSW_NEXT (_TIF_WORK_CTXSW) 19398 #define _TIF_WORK_CTXSW_NEXT (_TIF_WORK_CTXSW)
19084 19399
19085-#ifdef CONFIG_X86_32
19086-
19087-#define STACK_WARN (THREAD_SIZE/8)
19088-/*
19089- * macros/functions for gaining access to the thread information structure
19090- *
19091- * preempt_count needs to be 1 initially, until the scheduler is functional.
19092- */
19093-#ifndef __ASSEMBLY__
19094-
19095-
19096-/* how to get the current stack pointer from C */
19097-register unsigned long current_stack_pointer asm("esp") __used;
19098-
19099-/* how to get the thread information struct from C */
19100-static inline struct thread_info *current_thread_info(void)
19101-{
19102- return (struct thread_info *)
19103- (current_stack_pointer & ~(THREAD_SIZE - 1));
19104-}
19105-
19106-#else /* !__ASSEMBLY__ */
19107-
19108+#ifdef __ASSEMBLY__ 19400+#ifdef __ASSEMBLY__
19109 /* how to get the thread information struct from ASM */ 19401+/* how to get the thread information struct from ASM */
19110 #define GET_THREAD_INFO(reg) \ 19402+#define GET_THREAD_INFO(reg) \
19111- movl $-THREAD_SIZE, reg; \
19112- andl %esp, reg
19113+ mov PER_CPU_VAR(current_tinfo), reg 19403+ mov PER_CPU_VAR(current_tinfo), reg
19114 19404+
19115 /* use this one if reg already contains %esp */ 19405+/* use this one if reg already contains %esp */
19116-#define GET_THREAD_INFO_WITH_ESP(reg) \
19117- andl $-THREAD_SIZE, reg
19118+#define GET_THREAD_INFO_WITH_ESP(reg) GET_THREAD_INFO(reg) 19406+#define GET_THREAD_INFO_WITH_ESP(reg) GET_THREAD_INFO(reg)
19119+#else 19407+#else
19120+/* how to get the thread information struct from C */ 19408+/* how to get the thread information struct from C */
@@ -19126,19 +19414,31 @@ index 3ba3de4..6c113b2 100644
19126+} 19414+}
19127+#endif 19415+#endif
19128+ 19416+
19129+#ifdef CONFIG_X86_32 19417 #ifdef CONFIG_X86_32
19130+ 19418
19131+#define STACK_WARN (THREAD_SIZE/8) 19419 #define STACK_WARN (THREAD_SIZE/8)
19132+/* 19420@@ -169,31 +182,10 @@ struct thread_info {
19133+ * macros/functions for gaining access to the thread information structure 19421 sp; \
19134+ * 19422 })
19135+ * preempt_count needs to be 1 initially, until the scheduler is functional.
19136+ */
19137+#ifndef __ASSEMBLY__
19138+
19139+/* how to get the current stack pointer from C */
19140+register unsigned long current_stack_pointer asm("esp") __used;
19141 19423
19424-/* how to get the thread information struct from C */
19425-static inline struct thread_info *current_thread_info(void)
19426-{
19427- return (struct thread_info *)
19428- (current_stack_pointer & ~(THREAD_SIZE - 1));
19429-}
19430-
19431-#else /* !__ASSEMBLY__ */
19432-
19433-/* how to get the thread information struct from ASM */
19434-#define GET_THREAD_INFO(reg) \
19435- movl $-THREAD_SIZE, reg; \
19436- andl %esp, reg
19437-
19438-/* use this one if reg already contains %esp */
19439-#define GET_THREAD_INFO_WITH_ESP(reg) \
19440- andl $-THREAD_SIZE, reg
19441-
19142 #endif 19442 #endif
19143 19443
19144 #else /* X86_32 */ 19444 #else /* X86_32 */
@@ -19149,7 +19449,7 @@ index 3ba3de4..6c113b2 100644
19149 /* 19449 /*
19150 * macros/functions for gaining access to the thread information structure 19450 * macros/functions for gaining access to the thread information structure
19151 * preempt_count needs to be 1 initially, until the scheduler is functional. 19451 * preempt_count needs to be 1 initially, until the scheduler is functional.
19152@@ -199,27 +190,8 @@ static inline struct thread_info *current_thread_info(void) 19452@@ -201,27 +193,8 @@ static inline struct thread_info *current_thread_info(void)
19153 #ifndef __ASSEMBLY__ 19453 #ifndef __ASSEMBLY__
19154 DECLARE_PER_CPU(unsigned long, kernel_stack); 19454 DECLARE_PER_CPU(unsigned long, kernel_stack);
19155 19455
@@ -19179,7 +19479,7 @@ index 3ba3de4..6c113b2 100644
19179 #endif 19479 #endif
19180 19480
19181 #endif /* !X86_32 */ 19481 #endif /* !X86_32 */
19182@@ -278,5 +250,12 @@ static inline bool is_ia32_task(void) 19482@@ -280,5 +253,12 @@ static inline bool is_ia32_task(void)
19183 extern void arch_task_cache_init(void); 19483 extern void arch_task_cache_init(void);
19184 extern int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src); 19484 extern int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src);
19185 extern void arch_release_task_struct(struct task_struct *tsk); 19485 extern void arch_release_task_struct(struct task_struct *tsk);
@@ -19193,7 +19493,7 @@ index 3ba3de4..6c113b2 100644
19193 #endif 19493 #endif
19194 #endif /* _ASM_X86_THREAD_INFO_H */ 19494 #endif /* _ASM_X86_THREAD_INFO_H */
19195diff --git a/arch/x86/include/asm/tlbflush.h b/arch/x86/include/asm/tlbflush.h 19495diff --git a/arch/x86/include/asm/tlbflush.h b/arch/x86/include/asm/tlbflush.h
19196index e6d90ba..f81f114 100644 19496index 04905bf..49203ca 100644
19197--- a/arch/x86/include/asm/tlbflush.h 19497--- a/arch/x86/include/asm/tlbflush.h
19198+++ b/arch/x86/include/asm/tlbflush.h 19498+++ b/arch/x86/include/asm/tlbflush.h
19199@@ -17,18 +17,44 @@ 19499@@ -17,18 +17,44 @@
@@ -19290,7 +19590,7 @@ index e6d90ba..f81f114 100644
19290 } 19590 }
19291 19591
19292diff --git a/arch/x86/include/asm/uaccess.h b/arch/x86/include/asm/uaccess.h 19592diff --git a/arch/x86/include/asm/uaccess.h b/arch/x86/include/asm/uaccess.h
19293index 8ec57c0..451bcfc 100644 19593index 0d592e0..7437fcc 100644
19294--- a/arch/x86/include/asm/uaccess.h 19594--- a/arch/x86/include/asm/uaccess.h
19295+++ b/arch/x86/include/asm/uaccess.h 19595+++ b/arch/x86/include/asm/uaccess.h
19296@@ -7,6 +7,7 @@ 19596@@ -7,6 +7,7 @@
@@ -19314,36 +19614,38 @@ index 8ec57c0..451bcfc 100644
19314 19614
19315 #define segment_eq(a, b) ((a).seg == (b).seg) 19615 #define segment_eq(a, b) ((a).seg == (b).seg)
19316 19616
19317@@ -77,8 +83,34 @@ 19617@@ -85,8 +91,36 @@ static inline bool __chk_range_not_ok(unsigned long addr, unsigned long size, un
19318 * checks that the pointer is in the user space range - after calling 19618 * checks that the pointer is in the user space range - after calling
19319 * this function, memory access functions may still return -EFAULT. 19619 * this function, memory access functions may still return -EFAULT.
19320 */ 19620 */
19321-#define access_ok(type, addr, size) \ 19621-#define access_ok(type, addr, size) \
19322- (likely(__range_not_ok(addr, size, user_addr_max()) == 0)) 19622- likely(!__range_not_ok(addr, size, user_addr_max()))
19323+extern int _cond_resched(void); 19623+extern int _cond_resched(void);
19324+#define access_ok_noprefault(type, addr, size) (likely(__range_not_ok(addr, size, user_addr_max()) == 0)) 19624+#define access_ok_noprefault(type, addr, size) (likely(!__range_not_ok(addr, size, user_addr_max())))
19325+#define access_ok(type, addr, size) \ 19625+#define access_ok(type, addr, size) \
19326+({ \ 19626+({ \
19327+ long __size = size; \ 19627+ unsigned long __size = size; \
19328+ unsigned long __addr = (unsigned long)addr; \ 19628+ unsigned long __addr = (unsigned long)addr; \
19329+ unsigned long __addr_ao = __addr & PAGE_MASK; \
19330+ unsigned long __end_ao = __addr + __size - 1; \
19331+ bool __ret_ao = __range_not_ok(__addr, __size, user_addr_max()) == 0;\ 19629+ bool __ret_ao = __range_not_ok(__addr, __size, user_addr_max()) == 0;\
19332+ if (__ret_ao && unlikely((__end_ao ^ __addr_ao) & PAGE_MASK)) { \ 19630+ if (__ret_ao && __size) { \
19333+ while(__addr_ao <= __end_ao) { \ 19631+ unsigned long __addr_ao = __addr & PAGE_MASK; \
19334+ char __c_ao; \ 19632+ unsigned long __end_ao = __addr + __size - 1; \
19335+ __addr_ao += PAGE_SIZE; \ 19633+ if (unlikely((__end_ao ^ __addr_ao) & PAGE_MASK)) { \
19336+ if (__size > PAGE_SIZE) \ 19634+ while (__addr_ao <= __end_ao) { \
19337+ _cond_resched(); \ 19635+ char __c_ao; \
19338+ if (__get_user(__c_ao, (char __user *)__addr)) \ 19636+ __addr_ao += PAGE_SIZE; \
19339+ break; \ 19637+ if (__size > PAGE_SIZE) \
19340+ if (type != VERIFY_WRITE) { \ 19638+ _cond_resched(); \
19639+ if (__get_user(__c_ao, (char __user *)__addr)) \
19640+ break; \
19641+ if (type != VERIFY_WRITE) { \
19642+ __addr = __addr_ao; \
19643+ continue; \
19644+ } \
19645+ if (__put_user(__c_ao, (char __user *)__addr)) \
19646+ break; \
19341+ __addr = __addr_ao; \ 19647+ __addr = __addr_ao; \
19342+ continue; \
19343+ } \ 19648+ } \
19344+ if (__put_user(__c_ao, (char __user *)__addr)) \
19345+ break; \
19346+ __addr = __addr_ao; \
19347+ } \ 19649+ } \
19348+ } \ 19650+ } \
19349+ __ret_ao; \ 19651+ __ret_ao; \
@@ -19351,7 +19653,7 @@ index 8ec57c0..451bcfc 100644
19351 19653
19352 /* 19654 /*
19353 * The exception table consists of pairs of addresses relative to the 19655 * The exception table consists of pairs of addresses relative to the
19354@@ -168,10 +200,12 @@ __typeof__(__builtin_choose_expr(sizeof(x) > sizeof(0UL), 0ULL, 0UL)) 19656@@ -176,10 +210,12 @@ __typeof__(__builtin_choose_expr(sizeof(x) > sizeof(0UL), 0ULL, 0UL))
19355 register __inttype(*(ptr)) __val_gu asm("%"_ASM_DX); \ 19657 register __inttype(*(ptr)) __val_gu asm("%"_ASM_DX); \
19356 __chk_user_ptr(ptr); \ 19658 __chk_user_ptr(ptr); \
19357 might_fault(); \ 19659 might_fault(); \
@@ -19364,7 +19666,7 @@ index 8ec57c0..451bcfc 100644
19364 __ret_gu; \ 19666 __ret_gu; \
19365 }) 19667 })
19366 19668
19367@@ -179,13 +213,21 @@ __typeof__(__builtin_choose_expr(sizeof(x) > sizeof(0UL), 0ULL, 0UL)) 19669@@ -187,13 +223,21 @@ __typeof__(__builtin_choose_expr(sizeof(x) > sizeof(0UL), 0ULL, 0UL))
19368 asm volatile("call __put_user_" #size : "=a" (__ret_pu) \ 19670 asm volatile("call __put_user_" #size : "=a" (__ret_pu) \
19369 : "0" ((typeof(*(ptr)))(x)), "c" (ptr) : "ebx") 19671 : "0" ((typeof(*(ptr)))(x)), "c" (ptr) : "ebx")
19370 19672
@@ -19389,7 +19691,7 @@ index 8ec57c0..451bcfc 100644
19389 "3: " ASM_CLAC "\n" \ 19691 "3: " ASM_CLAC "\n" \
19390 ".section .fixup,\"ax\"\n" \ 19692 ".section .fixup,\"ax\"\n" \
19391 "4: movl %3,%0\n" \ 19693 "4: movl %3,%0\n" \
19392@@ -198,8 +240,8 @@ __typeof__(__builtin_choose_expr(sizeof(x) > sizeof(0UL), 0ULL, 0UL)) 19694@@ -206,8 +250,8 @@ __typeof__(__builtin_choose_expr(sizeof(x) > sizeof(0UL), 0ULL, 0UL))
19393 19695
19394 #define __put_user_asm_ex_u64(x, addr) \ 19696 #define __put_user_asm_ex_u64(x, addr) \
19395 asm volatile(ASM_STAC "\n" \ 19697 asm volatile(ASM_STAC "\n" \
@@ -19400,7 +19702,7 @@ index 8ec57c0..451bcfc 100644
19400 "3: " ASM_CLAC "\n" \ 19702 "3: " ASM_CLAC "\n" \
19401 _ASM_EXTABLE_EX(1b, 2b) \ 19703 _ASM_EXTABLE_EX(1b, 2b) \
19402 _ASM_EXTABLE_EX(2b, 3b) \ 19704 _ASM_EXTABLE_EX(2b, 3b) \
19403@@ -249,7 +291,8 @@ extern void __put_user_8(void); 19705@@ -257,7 +301,8 @@ extern void __put_user_8(void);
19404 __typeof__(*(ptr)) __pu_val; \ 19706 __typeof__(*(ptr)) __pu_val; \
19405 __chk_user_ptr(ptr); \ 19707 __chk_user_ptr(ptr); \
19406 might_fault(); \ 19708 might_fault(); \
@@ -19410,7 +19712,7 @@ index 8ec57c0..451bcfc 100644
19410 switch (sizeof(*(ptr))) { \ 19712 switch (sizeof(*(ptr))) { \
19411 case 1: \ 19713 case 1: \
19412 __put_user_x(1, __pu_val, ptr, __ret_pu); \ 19714 __put_user_x(1, __pu_val, ptr, __ret_pu); \
19413@@ -267,6 +310,7 @@ extern void __put_user_8(void); 19715@@ -275,6 +320,7 @@ extern void __put_user_8(void);
19414 __put_user_x(X, __pu_val, ptr, __ret_pu); \ 19716 __put_user_x(X, __pu_val, ptr, __ret_pu); \
19415 break; \ 19717 break; \
19416 } \ 19718 } \
@@ -19418,7 +19720,7 @@ index 8ec57c0..451bcfc 100644
19418 __ret_pu; \ 19720 __ret_pu; \
19419 }) 19721 })
19420 19722
19421@@ -347,8 +391,10 @@ do { \ 19723@@ -355,8 +401,10 @@ do { \
19422 } while (0) 19724 } while (0)
19423 19725
19424 #define __get_user_asm(x, addr, err, itype, rtype, ltype, errret) \ 19726 #define __get_user_asm(x, addr, err, itype, rtype, ltype, errret) \
@@ -19430,7 +19732,7 @@ index 8ec57c0..451bcfc 100644
19430 "2: " ASM_CLAC "\n" \ 19732 "2: " ASM_CLAC "\n" \
19431 ".section .fixup,\"ax\"\n" \ 19733 ".section .fixup,\"ax\"\n" \
19432 "3: mov %3,%0\n" \ 19734 "3: mov %3,%0\n" \
19433@@ -356,8 +402,10 @@ do { \ 19735@@ -364,8 +412,10 @@ do { \
19434 " jmp 2b\n" \ 19736 " jmp 2b\n" \
19435 ".previous\n" \ 19737 ".previous\n" \
19436 _ASM_EXTABLE(1b, 3b) \ 19738 _ASM_EXTABLE(1b, 3b) \
@@ -19443,7 +19745,7 @@ index 8ec57c0..451bcfc 100644
19443 19745
19444 #define __get_user_size_ex(x, ptr, size) \ 19746 #define __get_user_size_ex(x, ptr, size) \
19445 do { \ 19747 do { \
19446@@ -381,7 +429,7 @@ do { \ 19748@@ -389,7 +439,7 @@ do { \
19447 } while (0) 19749 } while (0)
19448 19750
19449 #define __get_user_asm_ex(x, addr, itype, rtype, ltype) \ 19751 #define __get_user_asm_ex(x, addr, itype, rtype, ltype) \
@@ -19452,7 +19754,7 @@ index 8ec57c0..451bcfc 100644
19452 "2:\n" \ 19754 "2:\n" \
19453 _ASM_EXTABLE_EX(1b, 2b) \ 19755 _ASM_EXTABLE_EX(1b, 2b) \
19454 : ltype(x) : "m" (__m(addr))) 19756 : ltype(x) : "m" (__m(addr)))
19455@@ -398,13 +446,24 @@ do { \ 19757@@ -406,13 +456,24 @@ do { \
19456 int __gu_err; \ 19758 int __gu_err; \
19457 unsigned long __gu_val; \ 19759 unsigned long __gu_val; \
19458 __get_user_size(__gu_val, (ptr), (size), __gu_err, -EFAULT); \ 19760 __get_user_size(__gu_val, (ptr), (size), __gu_err, -EFAULT); \
@@ -19479,7 +19781,7 @@ index 8ec57c0..451bcfc 100644
19479 19781
19480 /* 19782 /*
19481 * Tell gcc we read from memory instead of writing: this is because 19783 * Tell gcc we read from memory instead of writing: this is because
19482@@ -412,8 +471,10 @@ struct __large_struct { unsigned long buf[100]; }; 19784@@ -420,8 +481,10 @@ struct __large_struct { unsigned long buf[100]; };
19483 * aliasing issues. 19785 * aliasing issues.
19484 */ 19786 */
19485 #define __put_user_asm(x, addr, err, itype, rtype, ltype, errret) \ 19787 #define __put_user_asm(x, addr, err, itype, rtype, ltype, errret) \
@@ -19491,7 +19793,7 @@ index 8ec57c0..451bcfc 100644
19491 "2: " ASM_CLAC "\n" \ 19793 "2: " ASM_CLAC "\n" \
19492 ".section .fixup,\"ax\"\n" \ 19794 ".section .fixup,\"ax\"\n" \
19493 "3: mov %3,%0\n" \ 19795 "3: mov %3,%0\n" \
19494@@ -421,10 +482,12 @@ struct __large_struct { unsigned long buf[100]; }; 19796@@ -429,10 +492,12 @@ struct __large_struct { unsigned long buf[100]; };
19495 ".previous\n" \ 19797 ".previous\n" \
19496 _ASM_EXTABLE(1b, 3b) \ 19798 _ASM_EXTABLE(1b, 3b) \
19497 : "=r"(err) \ 19799 : "=r"(err) \
@@ -19506,7 +19808,7 @@ index 8ec57c0..451bcfc 100644
19506 "2:\n" \ 19808 "2:\n" \
19507 _ASM_EXTABLE_EX(1b, 2b) \ 19809 _ASM_EXTABLE_EX(1b, 2b) \
19508 : : ltype(x), "m" (__m(addr))) 19810 : : ltype(x), "m" (__m(addr)))
19509@@ -434,11 +497,13 @@ struct __large_struct { unsigned long buf[100]; }; 19811@@ -442,11 +507,13 @@ struct __large_struct { unsigned long buf[100]; };
19510 */ 19812 */
19511 #define uaccess_try do { \ 19813 #define uaccess_try do { \
19512 current_thread_info()->uaccess_err = 0; \ 19814 current_thread_info()->uaccess_err = 0; \
@@ -19520,7 +19822,7 @@ index 8ec57c0..451bcfc 100644
19520 (err) |= (current_thread_info()->uaccess_err ? -EFAULT : 0); \ 19822 (err) |= (current_thread_info()->uaccess_err ? -EFAULT : 0); \
19521 } while (0) 19823 } while (0)
19522 19824
19523@@ -463,8 +528,12 @@ struct __large_struct { unsigned long buf[100]; }; 19825@@ -471,8 +538,12 @@ struct __large_struct { unsigned long buf[100]; };
19524 * On error, the variable @x is set to zero. 19826 * On error, the variable @x is set to zero.
19525 */ 19827 */
19526 19828
@@ -19533,7 +19835,7 @@ index 8ec57c0..451bcfc 100644
19533 19835
19534 /** 19836 /**
19535 * __put_user: - Write a simple value into user space, with less checking. 19837 * __put_user: - Write a simple value into user space, with less checking.
19536@@ -486,8 +555,12 @@ struct __large_struct { unsigned long buf[100]; }; 19838@@ -494,8 +565,12 @@ struct __large_struct { unsigned long buf[100]; };
19537 * Returns zero on success, or -EFAULT on error. 19839 * Returns zero on success, or -EFAULT on error.
19538 */ 19840 */
19539 19841
@@ -19546,7 +19848,7 @@ index 8ec57c0..451bcfc 100644
19546 19848
19547 #define __get_user_unaligned __get_user 19849 #define __get_user_unaligned __get_user
19548 #define __put_user_unaligned __put_user 19850 #define __put_user_unaligned __put_user
19549@@ -505,7 +578,7 @@ struct __large_struct { unsigned long buf[100]; }; 19851@@ -513,7 +588,7 @@ struct __large_struct { unsigned long buf[100]; };
19550 #define get_user_ex(x, ptr) do { \ 19852 #define get_user_ex(x, ptr) do { \
19551 unsigned long __gue_val; \ 19853 unsigned long __gue_val; \
19552 __get_user_size_ex((__gue_val), (ptr), (sizeof(*(ptr)))); \ 19854 __get_user_size_ex((__gue_val), (ptr), (sizeof(*(ptr)))); \
@@ -19555,7 +19857,88 @@ index 8ec57c0..451bcfc 100644
19555 } while (0) 19857 } while (0)
19556 19858
19557 #define put_user_try uaccess_try 19859 #define put_user_try uaccess_try
19558@@ -536,17 +609,6 @@ extern struct movsl_mask { 19860@@ -542,18 +617,19 @@ extern void __cmpxchg_wrong_size(void)
19861 __typeof__(ptr) __uval = (uval); \
19862 __typeof__(*(ptr)) __old = (old); \
19863 __typeof__(*(ptr)) __new = (new); \
19864+ pax_open_userland(); \
19865 switch (size) { \
19866 case 1: \
19867 { \
19868 asm volatile("\t" ASM_STAC "\n" \
19869- "1:\t" LOCK_PREFIX "cmpxchgb %4, %2\n" \
19870+ "1:\t" LOCK_PREFIX __copyuser_seg"cmpxchgb %4, %2\n"\
19871 "2:\t" ASM_CLAC "\n" \
19872 "\t.section .fixup, \"ax\"\n" \
19873 "3:\tmov %3, %0\n" \
19874 "\tjmp 2b\n" \
19875 "\t.previous\n" \
19876 _ASM_EXTABLE(1b, 3b) \
19877- : "+r" (__ret), "=a" (__old), "+m" (*(ptr)) \
19878+ : "+r" (__ret), "=a" (__old), "+m" (*____m(ptr))\
19879 : "i" (-EFAULT), "q" (__new), "1" (__old) \
19880 : "memory" \
19881 ); \
19882@@ -562,14 +638,14 @@ extern void __cmpxchg_wrong_size(void)
19883 case 2: \
19884 { \
19885 asm volatile("\t" ASM_STAC "\n" \
19886- "1:\t" LOCK_PREFIX "cmpxchgw %4, %2\n" \
19887+ "1:\t" LOCK_PREFIX __copyuser_seg"cmpxchgw %4, %2\n"\
19888 "2:\t" ASM_CLAC "\n" \
19889 "\t.section .fixup, \"ax\"\n" \
19890 "3:\tmov %3, %0\n" \
19891 "\tjmp 2b\n" \
19892 "\t.previous\n" \
19893 _ASM_EXTABLE(1b, 3b) \
19894- : "+r" (__ret), "=a" (__old), "+m" (*(ptr)) \
19895+ : "+r" (__ret), "=a" (__old), "+m" (*____m(ptr))\
19896 : "i" (-EFAULT), "r" (__new), "1" (__old) \
19897 : "memory" \
19898 ); \
19899@@ -578,14 +654,14 @@ extern void __cmpxchg_wrong_size(void)
19900 case 4: \
19901 { \
19902 asm volatile("\t" ASM_STAC "\n" \
19903- "1:\t" LOCK_PREFIX "cmpxchgl %4, %2\n" \
19904+ "1:\t" LOCK_PREFIX __copyuser_seg"cmpxchgl %4, %2\n"\
19905 "2:\t" ASM_CLAC "\n" \
19906 "\t.section .fixup, \"ax\"\n" \
19907 "3:\tmov %3, %0\n" \
19908 "\tjmp 2b\n" \
19909 "\t.previous\n" \
19910 _ASM_EXTABLE(1b, 3b) \
19911- : "+r" (__ret), "=a" (__old), "+m" (*(ptr)) \
19912+ : "+r" (__ret), "=a" (__old), "+m" (*____m(ptr))\
19913 : "i" (-EFAULT), "r" (__new), "1" (__old) \
19914 : "memory" \
19915 ); \
19916@@ -597,14 +673,14 @@ extern void __cmpxchg_wrong_size(void)
19917 __cmpxchg_wrong_size(); \
19918 \
19919 asm volatile("\t" ASM_STAC "\n" \
19920- "1:\t" LOCK_PREFIX "cmpxchgq %4, %2\n" \
19921+ "1:\t" LOCK_PREFIX __copyuser_seg"cmpxchgq %4, %2\n"\
19922 "2:\t" ASM_CLAC "\n" \
19923 "\t.section .fixup, \"ax\"\n" \
19924 "3:\tmov %3, %0\n" \
19925 "\tjmp 2b\n" \
19926 "\t.previous\n" \
19927 _ASM_EXTABLE(1b, 3b) \
19928- : "+r" (__ret), "=a" (__old), "+m" (*(ptr)) \
19929+ : "+r" (__ret), "=a" (__old), "+m" (*____m(ptr))\
19930 : "i" (-EFAULT), "r" (__new), "1" (__old) \
19931 : "memory" \
19932 ); \
19933@@ -613,6 +689,7 @@ extern void __cmpxchg_wrong_size(void)
19934 default: \
19935 __cmpxchg_wrong_size(); \
19936 } \
19937+ pax_close_userland(); \
19938 *__uval = __old; \
19939 __ret; \
19940 })
19941@@ -636,17 +713,6 @@ extern struct movsl_mask {
19559 19942
19560 #define ARCH_HAS_NOCACHE_UACCESS 1 19943 #define ARCH_HAS_NOCACHE_UACCESS 1
19561 19944
@@ -19573,7 +19956,7 @@ index 8ec57c0..451bcfc 100644
19573 #ifdef CONFIG_DEBUG_STRICT_USER_COPY_CHECKS 19956 #ifdef CONFIG_DEBUG_STRICT_USER_COPY_CHECKS
19574 # define copy_user_diag __compiletime_error 19957 # define copy_user_diag __compiletime_error
19575 #else 19958 #else
19576@@ -556,7 +618,7 @@ unsigned long __must_check _copy_to_user(void __user *to, const void *from, 19959@@ -656,7 +722,7 @@ unsigned long __must_check _copy_to_user(void __user *to, const void *from,
19577 extern void copy_user_diag("copy_from_user() buffer size is too small") 19960 extern void copy_user_diag("copy_from_user() buffer size is too small")
19578 copy_from_user_overflow(void); 19961 copy_from_user_overflow(void);
19579 extern void copy_user_diag("copy_to_user() buffer size is too small") 19962 extern void copy_user_diag("copy_to_user() buffer size is too small")
@@ -19582,7 +19965,7 @@ index 8ec57c0..451bcfc 100644
19582 19965
19583 #undef copy_user_diag 19966 #undef copy_user_diag
19584 19967
19585@@ -569,7 +631,7 @@ __copy_from_user_overflow(void) __asm__("copy_from_user_overflow"); 19968@@ -669,7 +735,7 @@ __copy_from_user_overflow(void) __asm__("copy_from_user_overflow");
19586 19969
19587 extern void 19970 extern void
19588 __compiletime_warning("copy_to_user() buffer size is not provably correct") 19971 __compiletime_warning("copy_to_user() buffer size is not provably correct")
@@ -19591,7 +19974,7 @@ index 8ec57c0..451bcfc 100644
19591 #define __copy_to_user_overflow(size, count) __copy_to_user_overflow() 19974 #define __copy_to_user_overflow(size, count) __copy_to_user_overflow()
19592 19975
19593 #else 19976 #else
19594@@ -584,10 +646,16 @@ __copy_from_user_overflow(int size, unsigned long count) 19977@@ -684,10 +750,16 @@ __copy_from_user_overflow(int size, unsigned long count)
19595 19978
19596 #endif 19979 #endif
19597 19980
@@ -19609,7 +19992,7 @@ index 8ec57c0..451bcfc 100644
19609 19992
19610 might_fault(); 19993 might_fault();
19611 19994
19612@@ -609,12 +677,15 @@ copy_from_user(void *to, const void __user *from, unsigned long n) 19995@@ -709,12 +781,15 @@ copy_from_user(void *to, const void __user *from, unsigned long n)
19613 * case, and do only runtime checking for non-constant sizes. 19996 * case, and do only runtime checking for non-constant sizes.
19614 */ 19997 */
19615 19998
@@ -19631,7 +20014,7 @@ index 8ec57c0..451bcfc 100644
19631 20014
19632 return n; 20015 return n;
19633 } 20016 }
19634@@ -622,17 +693,18 @@ copy_from_user(void *to, const void __user *from, unsigned long n) 20017@@ -722,17 +797,18 @@ copy_from_user(void *to, const void __user *from, unsigned long n)
19635 static inline unsigned long __must_check 20018 static inline unsigned long __must_check
19636 copy_to_user(void __user *to, const void *from, unsigned long n) 20019 copy_to_user(void __user *to, const void *from, unsigned long n)
19637 { 20020 {
@@ -19727,7 +20110,7 @@ index 3c03a5d..1071638 100644
19727 20110
19728 #endif /* _ASM_X86_UACCESS_32_H */ 20111 #endif /* _ASM_X86_UACCESS_32_H */
19729diff --git a/arch/x86/include/asm/uaccess_64.h b/arch/x86/include/asm/uaccess_64.h 20112diff --git a/arch/x86/include/asm/uaccess_64.h b/arch/x86/include/asm/uaccess_64.h
19730index 190413d..206c200 100644 20113index 12a26b9..206c200 100644
19731--- a/arch/x86/include/asm/uaccess_64.h 20114--- a/arch/x86/include/asm/uaccess_64.h
19732+++ b/arch/x86/include/asm/uaccess_64.h 20115+++ b/arch/x86/include/asm/uaccess_64.h
19733@@ -10,6 +10,9 @@ 20116@@ -10,6 +10,9 @@
@@ -20005,8 +20388,7 @@ index 190413d..206c200 100644
20005+static __must_check __always_inline unsigned long 20388+static __must_check __always_inline unsigned long
20006+__copy_from_user_inatomic(void *dst, const void __user *src, unsigned long size) 20389+__copy_from_user_inatomic(void *dst, const void __user *src, unsigned long size)
20007 { 20390 {
20008- return __copy_from_user_nocheck(dst, (__force const void *)src, size); 20391 return __copy_from_user_nocheck(dst, src, size);
20009+ return __copy_from_user_nocheck(dst, src, size);
20010 } 20392 }
20011 20393
20012-static __must_check __always_inline int 20394-static __must_check __always_inline int
@@ -20014,8 +20396,7 @@ index 190413d..206c200 100644
20014+static __must_check __always_inline unsigned long 20396+static __must_check __always_inline unsigned long
20015+__copy_to_user_inatomic(void __user *dst, const void *src, unsigned long size) 20397+__copy_to_user_inatomic(void __user *dst, const void *src, unsigned long size)
20016 { 20398 {
20017- return __copy_to_user_nocheck((__force void *)dst, src, size); 20399 return __copy_to_user_nocheck(dst, src, size);
20018+ return __copy_to_user_nocheck(dst, src, size);
20019 } 20400 }
20020 20401
20021-extern long __copy_user_nocache(void *dst, const void __user *src, 20402-extern long __copy_user_nocache(void *dst, const void __user *src,
@@ -20077,7 +20458,7 @@ index 5b238981..77fdd78 100644
20077 20458
20078 #define WORD_AT_A_TIME_CONSTANTS { REPEAT_BYTE(0x01), REPEAT_BYTE(0x80) } 20459 #define WORD_AT_A_TIME_CONSTANTS { REPEAT_BYTE(0x01), REPEAT_BYTE(0x80) }
20079diff --git a/arch/x86/include/asm/x86_init.h b/arch/x86/include/asm/x86_init.h 20460diff --git a/arch/x86/include/asm/x86_init.h b/arch/x86/include/asm/x86_init.h
20080index 0f1be11..f7542bf 100644 20461index e45e4da..44e8572 100644
20081--- a/arch/x86/include/asm/x86_init.h 20462--- a/arch/x86/include/asm/x86_init.h
20082+++ b/arch/x86/include/asm/x86_init.h 20463+++ b/arch/x86/include/asm/x86_init.h
20083@@ -129,7 +129,7 @@ struct x86_init_ops { 20464@@ -129,7 +129,7 @@ struct x86_init_ops {
@@ -20126,7 +20507,7 @@ index 0f1be11..f7542bf 100644
20126 extern struct x86_init_ops x86_init; 20507 extern struct x86_init_ops x86_init;
20127 extern struct x86_cpuinit_ops x86_cpuinit; 20508 extern struct x86_cpuinit_ops x86_cpuinit;
20128diff --git a/arch/x86/include/asm/xen/page.h b/arch/x86/include/asm/xen/page.h 20509diff --git a/arch/x86/include/asm/xen/page.h b/arch/x86/include/asm/xen/page.h
20129index b913915..4f5a581 100644 20510index 3e276eb..2eb3c30 100644
20130--- a/arch/x86/include/asm/xen/page.h 20511--- a/arch/x86/include/asm/xen/page.h
20131+++ b/arch/x86/include/asm/xen/page.h 20512+++ b/arch/x86/include/asm/xen/page.h
20132@@ -56,7 +56,7 @@ extern int m2p_remove_override(struct page *page, 20513@@ -56,7 +56,7 @@ extern int m2p_remove_override(struct page *page,
@@ -20139,10 +20520,10 @@ index b913915..4f5a581 100644
20139 unsigned long mfn; 20520 unsigned long mfn;
20140 20521
20141diff --git a/arch/x86/include/asm/xsave.h b/arch/x86/include/asm/xsave.h 20522diff --git a/arch/x86/include/asm/xsave.h b/arch/x86/include/asm/xsave.h
20142index 0415cda..3b22adc 100644 20523index 6c1d741..39e6ecf 100644
20143--- a/arch/x86/include/asm/xsave.h 20524--- a/arch/x86/include/asm/xsave.h
20144+++ b/arch/x86/include/asm/xsave.h 20525+++ b/arch/x86/include/asm/xsave.h
20145@@ -70,8 +70,11 @@ static inline int xsave_user(struct xsave_struct __user *buf) 20526@@ -80,8 +80,11 @@ static inline int xsave_user(struct xsave_struct __user *buf)
20146 if (unlikely(err)) 20527 if (unlikely(err))
20147 return -EFAULT; 20528 return -EFAULT;
20148 20529
@@ -20155,7 +20536,7 @@ index 0415cda..3b22adc 100644
20155 "2: " ASM_CLAC "\n" 20536 "2: " ASM_CLAC "\n"
20156 ".section .fixup,\"ax\"\n" 20537 ".section .fixup,\"ax\"\n"
20157 "3: movl $-1,%[err]\n" 20538 "3: movl $-1,%[err]\n"
20158@@ -81,18 +84,22 @@ static inline int xsave_user(struct xsave_struct __user *buf) 20539@@ -91,18 +94,22 @@ static inline int xsave_user(struct xsave_struct __user *buf)
20159 : [err] "=r" (err) 20540 : [err] "=r" (err)
20160 : "D" (buf), "a" (-1), "d" (-1), "0" (0) 20541 : "D" (buf), "a" (-1), "d" (-1), "0" (0)
20161 : "memory"); 20542 : "memory");
@@ -20180,7 +20561,7 @@ index 0415cda..3b22adc 100644
20180 "2: " ASM_CLAC "\n" 20561 "2: " ASM_CLAC "\n"
20181 ".section .fixup,\"ax\"\n" 20562 ".section .fixup,\"ax\"\n"
20182 "3: movl $-1,%[err]\n" 20563 "3: movl $-1,%[err]\n"
20183@@ -102,6 +109,7 @@ static inline int xrestore_user(struct xsave_struct __user *buf, u64 mask) 20564@@ -112,6 +119,7 @@ static inline int xrestore_user(struct xsave_struct __user *buf, u64 mask)
20184 : [err] "=r" (err) 20565 : [err] "=r" (err)
20185 : "D" (xstate), "a" (lmask), "d" (hmask), "0" (0) 20566 : "D" (xstate), "a" (lmask), "d" (hmask), "0" (0)
20186 : "memory"); /* memory required? */ 20567 : "memory"); /* memory required? */
@@ -20214,7 +20595,7 @@ index 7b0a55a..ad115bf 100644
20214 20595
20215 /* top of stack page */ 20596 /* top of stack page */
20216diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile 20597diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile
20217index 9b0a34e..fc7e553 100644 20598index cb648c8..91cb07e 100644
20218--- a/arch/x86/kernel/Makefile 20599--- a/arch/x86/kernel/Makefile
20219+++ b/arch/x86/kernel/Makefile 20600+++ b/arch/x86/kernel/Makefile
20220@@ -24,7 +24,7 @@ obj-y += time.o ioport.o ldt.o dumpstack.o nmi.o 20601@@ -24,7 +24,7 @@ obj-y += time.o ioport.o ldt.o dumpstack.o nmi.o
@@ -20227,10 +20608,10 @@ index 9b0a34e..fc7e553 100644
20227 obj-y += syscall_$(BITS).o 20608 obj-y += syscall_$(BITS).o
20228 obj-$(CONFIG_X86_64) += vsyscall_64.o 20609 obj-$(CONFIG_X86_64) += vsyscall_64.o
20229diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c 20610diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
20230index 6c0b43b..e67bb31 100644 20611index 1dac942..19c8b0c 100644
20231--- a/arch/x86/kernel/acpi/boot.c 20612--- a/arch/x86/kernel/acpi/boot.c
20232+++ b/arch/x86/kernel/acpi/boot.c 20613+++ b/arch/x86/kernel/acpi/boot.c
20233@@ -1315,7 +1315,7 @@ static int __init dmi_ignore_irq0_timer_override(const struct dmi_system_id *d) 20614@@ -1312,7 +1312,7 @@ static int __init dmi_ignore_irq0_timer_override(const struct dmi_system_id *d)
20234 * If your system is blacklisted here, but you find that acpi=force 20615 * If your system is blacklisted here, but you find that acpi=force
20235 * works for you, please contact linux-acpi@vger.kernel.org 20616 * works for you, please contact linux-acpi@vger.kernel.org
20236 */ 20617 */
@@ -20239,7 +20620,7 @@ index 6c0b43b..e67bb31 100644
20239 /* 20620 /*
20240 * Boxes that need ACPI disabled 20621 * Boxes that need ACPI disabled
20241 */ 20622 */
20242@@ -1390,7 +1390,7 @@ static struct dmi_system_id __initdata acpi_dmi_table[] = { 20623@@ -1387,7 +1387,7 @@ static struct dmi_system_id __initdata acpi_dmi_table[] = {
20243 }; 20624 };
20244 20625
20245 /* second table for DMI checks that should run after early-quirks */ 20626 /* second table for DMI checks that should run after early-quirks */
@@ -20441,10 +20822,10 @@ index df94598..f3b29bf 100644
20441 bp_int3_handler = handler; 20822 bp_int3_handler = handler;
20442 bp_int3_addr = (u8 *)addr + sizeof(int3); 20823 bp_int3_addr = (u8 *)addr + sizeof(int3);
20443diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c 20824diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c
20444index d278736..0b4af9a8 100644 20825index 7f26c9a..694544e 100644
20445--- a/arch/x86/kernel/apic/apic.c 20826--- a/arch/x86/kernel/apic/apic.c
20446+++ b/arch/x86/kernel/apic/apic.c 20827+++ b/arch/x86/kernel/apic/apic.c
20447@@ -191,7 +191,7 @@ int first_system_vector = 0xfe; 20828@@ -198,7 +198,7 @@ int first_system_vector = 0xfe;
20448 /* 20829 /*
20449 * Debug level, exported for io_apic.c 20830 * Debug level, exported for io_apic.c
20450 */ 20831 */
@@ -20453,20 +20834,20 @@ index d278736..0b4af9a8 100644
20453 20834
20454 int pic_mode; 20835 int pic_mode;
20455 20836
20456@@ -1986,7 +1986,7 @@ static inline void __smp_error_interrupt(struct pt_regs *regs) 20837@@ -1992,7 +1992,7 @@ static inline void __smp_error_interrupt(struct pt_regs *regs)
20457 apic_write(APIC_ESR, 0); 20838 apic_write(APIC_ESR, 0);
20458 v1 = apic_read(APIC_ESR); 20839 v = apic_read(APIC_ESR);
20459 ack_APIC_irq(); 20840 ack_APIC_irq();
20460- atomic_inc(&irq_err_count); 20841- atomic_inc(&irq_err_count);
20461+ atomic_inc_unchecked(&irq_err_count); 20842+ atomic_inc_unchecked(&irq_err_count);
20462 20843
20463 apic_printk(APIC_DEBUG, KERN_DEBUG "APIC error on CPU%d: %02x(%02x)", 20844 apic_printk(APIC_DEBUG, KERN_DEBUG "APIC error on CPU%d: %02x",
20464 smp_processor_id(), v0 , v1); 20845 smp_processor_id(), v);
20465diff --git a/arch/x86/kernel/apic/apic_flat_64.c b/arch/x86/kernel/apic/apic_flat_64.c 20846diff --git a/arch/x86/kernel/apic/apic_flat_64.c b/arch/x86/kernel/apic/apic_flat_64.c
20466index 00c77cf..2dc6a2d 100644 20847index 2c621a6..fa2b1ae 100644
20467--- a/arch/x86/kernel/apic/apic_flat_64.c 20848--- a/arch/x86/kernel/apic/apic_flat_64.c
20468+++ b/arch/x86/kernel/apic/apic_flat_64.c 20849+++ b/arch/x86/kernel/apic/apic_flat_64.c
20469@@ -157,7 +157,7 @@ static int flat_probe(void) 20850@@ -154,7 +154,7 @@ static int flat_probe(void)
20470 return 1; 20851 return 1;
20471 } 20852 }
20472 20853
@@ -20475,7 +20856,7 @@ index 00c77cf..2dc6a2d 100644
20475 .name = "flat", 20856 .name = "flat",
20476 .probe = flat_probe, 20857 .probe = flat_probe,
20477 .acpi_madt_oem_check = flat_acpi_madt_oem_check, 20858 .acpi_madt_oem_check = flat_acpi_madt_oem_check,
20478@@ -271,7 +271,7 @@ static int physflat_probe(void) 20859@@ -268,7 +268,7 @@ static int physflat_probe(void)
20479 return 0; 20860 return 0;
20480 } 20861 }
20481 20862
@@ -20485,10 +20866,10 @@ index 00c77cf..2dc6a2d 100644
20485 .name = "physical flat", 20866 .name = "physical flat",
20486 .probe = physflat_probe, 20867 .probe = physflat_probe,
20487diff --git a/arch/x86/kernel/apic/apic_noop.c b/arch/x86/kernel/apic/apic_noop.c 20868diff --git a/arch/x86/kernel/apic/apic_noop.c b/arch/x86/kernel/apic/apic_noop.c
20488index e145f28..2752888 100644 20869index 191ce75..2db6d63 100644
20489--- a/arch/x86/kernel/apic/apic_noop.c 20870--- a/arch/x86/kernel/apic/apic_noop.c
20490+++ b/arch/x86/kernel/apic/apic_noop.c 20871+++ b/arch/x86/kernel/apic/apic_noop.c
20491@@ -119,7 +119,7 @@ static void noop_apic_write(u32 reg, u32 v) 20872@@ -118,7 +118,7 @@ static void noop_apic_write(u32 reg, u32 v)
20492 WARN_ON_ONCE(cpu_has_apic && !disable_apic); 20873 WARN_ON_ONCE(cpu_has_apic && !disable_apic);
20493 } 20874 }
20494 20875
@@ -20534,10 +20915,10 @@ index c552247..587a316 100644
20534 .name = "es7000", 20915 .name = "es7000",
20535 .probe = probe_es7000, 20916 .probe = probe_es7000,
20536diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c 20917diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
20537index e63a5bd..c0babf8 100644 20918index 6ad4658..38a7b5c 100644
20538--- a/arch/x86/kernel/apic/io_apic.c 20919--- a/arch/x86/kernel/apic/io_apic.c
20539+++ b/arch/x86/kernel/apic/io_apic.c 20920+++ b/arch/x86/kernel/apic/io_apic.c
20540@@ -1060,7 +1060,7 @@ int IO_APIC_get_PCI_irq_vector(int bus, int slot, int pin, 20921@@ -1057,7 +1057,7 @@ int IO_APIC_get_PCI_irq_vector(int bus, int slot, int pin,
20541 } 20922 }
20542 EXPORT_SYMBOL(IO_APIC_get_PCI_irq_vector); 20923 EXPORT_SYMBOL(IO_APIC_get_PCI_irq_vector);
20543 20924
@@ -20546,7 +20927,7 @@ index e63a5bd..c0babf8 100644
20546 { 20927 {
20547 /* Used to the online set of cpus does not change 20928 /* Used to the online set of cpus does not change
20548 * during assign_irq_vector. 20929 * during assign_irq_vector.
20549@@ -1068,7 +1068,7 @@ void lock_vector_lock(void) 20930@@ -1065,7 +1065,7 @@ void lock_vector_lock(void)
20550 raw_spin_lock(&vector_lock); 20931 raw_spin_lock(&vector_lock);
20551 } 20932 }
20552 20933
@@ -20555,7 +20936,7 @@ index e63a5bd..c0babf8 100644
20555 { 20936 {
20556 raw_spin_unlock(&vector_lock); 20937 raw_spin_unlock(&vector_lock);
20557 } 20938 }
20558@@ -2367,7 +2367,7 @@ static void ack_apic_edge(struct irq_data *data) 20939@@ -2364,7 +2364,7 @@ static void ack_apic_edge(struct irq_data *data)
20559 ack_APIC_irq(); 20940 ack_APIC_irq();
20560 } 20941 }
20561 20942
@@ -20564,7 +20945,7 @@ index e63a5bd..c0babf8 100644
20564 20945
20565 #ifdef CONFIG_GENERIC_PENDING_IRQ 20946 #ifdef CONFIG_GENERIC_PENDING_IRQ
20566 static bool io_apic_level_ack_pending(struct irq_cfg *cfg) 20947 static bool io_apic_level_ack_pending(struct irq_cfg *cfg)
20567@@ -2508,7 +2508,7 @@ static void ack_apic_level(struct irq_data *data) 20948@@ -2505,7 +2505,7 @@ static void ack_apic_level(struct irq_data *data)
20568 * at the cpu. 20949 * at the cpu.
20569 */ 20950 */
20570 if (!(v & (1 << (i & 0x1f)))) { 20951 if (!(v & (1 << (i & 0x1f)))) {
@@ -20601,10 +20982,10 @@ index eb35ef9..f184a21 100644
20601 .name = "default", 20982 .name = "default",
20602 .probe = probe_default, 20983 .probe = probe_default,
20603diff --git a/arch/x86/kernel/apic/summit_32.c b/arch/x86/kernel/apic/summit_32.c 20984diff --git a/arch/x86/kernel/apic/summit_32.c b/arch/x86/kernel/apic/summit_32.c
20604index 77c95c0..434f8a4 100644 20985index 00146f9..5e299b8 100644
20605--- a/arch/x86/kernel/apic/summit_32.c 20986--- a/arch/x86/kernel/apic/summit_32.c
20606+++ b/arch/x86/kernel/apic/summit_32.c 20987+++ b/arch/x86/kernel/apic/summit_32.c
20607@@ -486,7 +486,7 @@ void setup_summit(void) 20988@@ -485,7 +485,7 @@ void setup_summit(void)
20608 } 20989 }
20609 #endif 20990 #endif
20610 20991
@@ -20614,10 +20995,10 @@ index 77c95c0..434f8a4 100644
20614 .name = "summit", 20995 .name = "summit",
20615 .probe = probe_summit, 20996 .probe = probe_summit,
20616diff --git a/arch/x86/kernel/apic/x2apic_cluster.c b/arch/x86/kernel/apic/x2apic_cluster.c 20997diff --git a/arch/x86/kernel/apic/x2apic_cluster.c b/arch/x86/kernel/apic/x2apic_cluster.c
20617index 140e29d..d88bc95 100644 20998index cac85ee..01fa741 100644
20618--- a/arch/x86/kernel/apic/x2apic_cluster.c 20999--- a/arch/x86/kernel/apic/x2apic_cluster.c
20619+++ b/arch/x86/kernel/apic/x2apic_cluster.c 21000+++ b/arch/x86/kernel/apic/x2apic_cluster.c
20620@@ -183,7 +183,7 @@ update_clusterinfo(struct notifier_block *nfb, unsigned long action, void *hcpu) 21001@@ -182,7 +182,7 @@ update_clusterinfo(struct notifier_block *nfb, unsigned long action, void *hcpu)
20621 return notifier_from_errno(err); 21002 return notifier_from_errno(err);
20622 } 21003 }
20623 21004
@@ -20626,7 +21007,7 @@ index 140e29d..d88bc95 100644
20626 .notifier_call = update_clusterinfo, 21007 .notifier_call = update_clusterinfo,
20627 }; 21008 };
20628 21009
20629@@ -235,7 +235,7 @@ static void cluster_vector_allocation_domain(int cpu, struct cpumask *retmask, 21010@@ -234,7 +234,7 @@ static void cluster_vector_allocation_domain(int cpu, struct cpumask *retmask,
20630 cpumask_and(retmask, mask, per_cpu(cpus_in_cluster, cpu)); 21011 cpumask_and(retmask, mask, per_cpu(cpus_in_cluster, cpu));
20631 } 21012 }
20632 21013
@@ -20636,10 +21017,10 @@ index 140e29d..d88bc95 100644
20636 .name = "cluster x2apic", 21017 .name = "cluster x2apic",
20637 .probe = x2apic_cluster_probe, 21018 .probe = x2apic_cluster_probe,
20638diff --git a/arch/x86/kernel/apic/x2apic_phys.c b/arch/x86/kernel/apic/x2apic_phys.c 21019diff --git a/arch/x86/kernel/apic/x2apic_phys.c b/arch/x86/kernel/apic/x2apic_phys.c
20639index 562a76d..a003c0f 100644 21020index de231e3..1d1b2ee 100644
20640--- a/arch/x86/kernel/apic/x2apic_phys.c 21021--- a/arch/x86/kernel/apic/x2apic_phys.c
20641+++ b/arch/x86/kernel/apic/x2apic_phys.c 21022+++ b/arch/x86/kernel/apic/x2apic_phys.c
20642@@ -89,7 +89,7 @@ static int x2apic_phys_probe(void) 21023@@ -88,7 +88,7 @@ static int x2apic_phys_probe(void)
20643 return apic == &apic_x2apic_phys; 21024 return apic == &apic_x2apic_phys;
20644 } 21025 }
20645 21026
@@ -20649,7 +21030,7 @@ index 562a76d..a003c0f 100644
20649 .name = "physical x2apic", 21030 .name = "physical x2apic",
20650 .probe = x2apic_phys_probe, 21031 .probe = x2apic_phys_probe,
20651diff --git a/arch/x86/kernel/apic/x2apic_uv_x.c b/arch/x86/kernel/apic/x2apic_uv_x.c 21032diff --git a/arch/x86/kernel/apic/x2apic_uv_x.c b/arch/x86/kernel/apic/x2apic_uv_x.c
20652index ad0dc04..0d9cc56 100644 21033index d263b13..963258b 100644
20653--- a/arch/x86/kernel/apic/x2apic_uv_x.c 21034--- a/arch/x86/kernel/apic/x2apic_uv_x.c
20654+++ b/arch/x86/kernel/apic/x2apic_uv_x.c 21035+++ b/arch/x86/kernel/apic/x2apic_uv_x.c
20655@@ -350,7 +350,7 @@ static int uv_probe(void) 21036@@ -350,7 +350,7 @@ static int uv_probe(void)
@@ -20789,7 +21170,7 @@ index e7c798b..2b2019b 100644
20789 BLANK(); 21170 BLANK();
20790 21171
20791diff --git a/arch/x86/kernel/cpu/Makefile b/arch/x86/kernel/cpu/Makefile 21172diff --git a/arch/x86/kernel/cpu/Makefile b/arch/x86/kernel/cpu/Makefile
20792index 47b56a7..efc2bc6 100644 21173index 7fd54f0..0691410 100644
20793--- a/arch/x86/kernel/cpu/Makefile 21174--- a/arch/x86/kernel/cpu/Makefile
20794+++ b/arch/x86/kernel/cpu/Makefile 21175+++ b/arch/x86/kernel/cpu/Makefile
20795@@ -8,10 +8,6 @@ CFLAGS_REMOVE_common.o = -pg 21176@@ -8,10 +8,6 @@ CFLAGS_REMOVE_common.o = -pg
@@ -20804,10 +21185,10 @@ index 47b56a7..efc2bc6 100644
20804 obj-y += proc.o capflags.o powerflags.o common.o 21185 obj-y += proc.o capflags.o powerflags.o common.o
20805 obj-y += rdrand.o 21186 obj-y += rdrand.o
20806diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c 21187diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
20807index 59bfebc..d8f27bd 100644 21188index c67ffa6..f41fbbf 100644
20808--- a/arch/x86/kernel/cpu/amd.c 21189--- a/arch/x86/kernel/cpu/amd.c
20809+++ b/arch/x86/kernel/cpu/amd.c 21190+++ b/arch/x86/kernel/cpu/amd.c
20810@@ -753,7 +753,7 @@ static void init_amd(struct cpuinfo_x86 *c) 21191@@ -752,7 +752,7 @@ static void init_amd(struct cpuinfo_x86 *c)
20811 static unsigned int amd_size_cache(struct cpuinfo_x86 *c, unsigned int size) 21192 static unsigned int amd_size_cache(struct cpuinfo_x86 *c, unsigned int size)
20812 { 21193 {
20813 /* AMD errata T13 (order #21922) */ 21194 /* AMD errata T13 (order #21922) */
@@ -20817,7 +21198,7 @@ index 59bfebc..d8f27bd 100644
20817 if (c->x86_model == 3 && c->x86_mask == 0) 21198 if (c->x86_model == 3 && c->x86_mask == 0)
20818 size = 64; 21199 size = 64;
20819diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c 21200diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
20820index fe2bdd0..77b0d1b 100644 21201index 8e28bf2..bf5c0d2 100644
20821--- a/arch/x86/kernel/cpu/common.c 21202--- a/arch/x86/kernel/cpu/common.c
20822+++ b/arch/x86/kernel/cpu/common.c 21203+++ b/arch/x86/kernel/cpu/common.c
20823@@ -88,60 +88,6 @@ static const struct cpu_dev default_cpu = { 21204@@ -88,60 +88,6 @@ static const struct cpu_dev default_cpu = {
@@ -20950,7 +21331,7 @@ index fe2bdd0..77b0d1b 100644
20950 gdt_descr.size = GDT_SIZE - 1; 21331 gdt_descr.size = GDT_SIZE - 1;
20951 load_gdt(&gdt_descr); 21332 load_gdt(&gdt_descr);
20952 /* Reload the per-cpu base */ 21333 /* Reload the per-cpu base */
20953@@ -882,6 +881,10 @@ static void identify_cpu(struct cpuinfo_x86 *c) 21334@@ -883,6 +882,10 @@ static void identify_cpu(struct cpuinfo_x86 *c)
20954 setup_smep(c); 21335 setup_smep(c);
20955 setup_smap(c); 21336 setup_smap(c);
20956 21337
@@ -20961,7 +21342,7 @@ index fe2bdd0..77b0d1b 100644
20961 /* 21342 /*
20962 * The vendor-specific functions might have changed features. 21343 * The vendor-specific functions might have changed features.
20963 * Now we do "generic changes." 21344 * Now we do "generic changes."
20964@@ -890,6 +893,10 @@ static void identify_cpu(struct cpuinfo_x86 *c) 21345@@ -891,6 +894,10 @@ static void identify_cpu(struct cpuinfo_x86 *c)
20965 /* Filter out anything that depends on CPUID levels we don't have */ 21346 /* Filter out anything that depends on CPUID levels we don't have */
20966 filter_cpuid_features(c, true); 21347 filter_cpuid_features(c, true);
20967 21348
@@ -20972,7 +21353,7 @@ index fe2bdd0..77b0d1b 100644
20972 /* If the model name is still unset, do table lookup. */ 21353 /* If the model name is still unset, do table lookup. */
20973 if (!c->x86_model_id[0]) { 21354 if (!c->x86_model_id[0]) {
20974 const char *p; 21355 const char *p;
20975@@ -1077,10 +1084,12 @@ static __init int setup_disablecpuid(char *arg) 21356@@ -1078,10 +1085,12 @@ static __init int setup_disablecpuid(char *arg)
20976 } 21357 }
20977 __setup("clearcpuid=", setup_disablecpuid); 21358 __setup("clearcpuid=", setup_disablecpuid);
20978 21359
@@ -20988,7 +21369,7 @@ index fe2bdd0..77b0d1b 100644
20988 21369
20989 DEFINE_PER_CPU_FIRST(union irq_stack_union, 21370 DEFINE_PER_CPU_FIRST(union irq_stack_union,
20990 irq_stack_union) __aligned(PAGE_SIZE) __visible; 21371 irq_stack_union) __aligned(PAGE_SIZE) __visible;
20991@@ -1094,7 +1103,7 @@ DEFINE_PER_CPU(struct task_struct *, current_task) ____cacheline_aligned = 21372@@ -1095,7 +1104,7 @@ DEFINE_PER_CPU(struct task_struct *, current_task) ____cacheline_aligned =
20992 EXPORT_PER_CPU_SYMBOL(current_task); 21373 EXPORT_PER_CPU_SYMBOL(current_task);
20993 21374
20994 DEFINE_PER_CPU(unsigned long, kernel_stack) = 21375 DEFINE_PER_CPU(unsigned long, kernel_stack) =
@@ -20997,7 +21378,7 @@ index fe2bdd0..77b0d1b 100644
20997 EXPORT_PER_CPU_SYMBOL(kernel_stack); 21378 EXPORT_PER_CPU_SYMBOL(kernel_stack);
20998 21379
20999 DEFINE_PER_CPU(char *, irq_stack_ptr) = 21380 DEFINE_PER_CPU(char *, irq_stack_ptr) =
21000@@ -1244,7 +1253,7 @@ void cpu_init(void) 21381@@ -1245,7 +1254,7 @@ void cpu_init(void)
21001 load_ucode_ap(); 21382 load_ucode_ap();
21002 21383
21003 cpu = stack_smp_processor_id(); 21384 cpu = stack_smp_processor_id();
@@ -21006,7 +21387,7 @@ index fe2bdd0..77b0d1b 100644
21006 oist = &per_cpu(orig_ist, cpu); 21387 oist = &per_cpu(orig_ist, cpu);
21007 21388
21008 #ifdef CONFIG_NUMA 21389 #ifdef CONFIG_NUMA
21009@@ -1279,7 +1288,6 @@ void cpu_init(void) 21390@@ -1280,7 +1289,6 @@ void cpu_init(void)
21010 wrmsrl(MSR_KERNEL_GS_BASE, 0); 21391 wrmsrl(MSR_KERNEL_GS_BASE, 0);
21011 barrier(); 21392 barrier();
21012 21393
@@ -21014,7 +21395,7 @@ index fe2bdd0..77b0d1b 100644
21014 enable_x2apic(); 21395 enable_x2apic();
21015 21396
21016 /* 21397 /*
21017@@ -1331,7 +1339,7 @@ void cpu_init(void) 21398@@ -1332,7 +1340,7 @@ void cpu_init(void)
21018 { 21399 {
21019 int cpu = smp_processor_id(); 21400 int cpu = smp_processor_id();
21020 struct task_struct *curr = current; 21401 struct task_struct *curr = current;
@@ -21115,7 +21496,7 @@ index 0641113..06f5ba4 100644
21115 "index%1lu", i); 21496 "index%1lu", i);
21116 if (unlikely(retval)) { 21497 if (unlikely(retval)) {
21117diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c 21498diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c
21118index b3218cd..99a75de 100644 21499index 4d5419b..95f11bb 100644
21119--- a/arch/x86/kernel/cpu/mcheck/mce.c 21500--- a/arch/x86/kernel/cpu/mcheck/mce.c
21120+++ b/arch/x86/kernel/cpu/mcheck/mce.c 21501+++ b/arch/x86/kernel/cpu/mcheck/mce.c
21121@@ -45,6 +45,7 @@ 21502@@ -45,6 +45,7 @@
@@ -21239,7 +21620,7 @@ index b3218cd..99a75de 100644
21239 mce_chrdev_open_exclu = 0; 21620 mce_chrdev_open_exclu = 0;
21240 21621
21241 spin_unlock(&mce_chrdev_state_lock); 21622 spin_unlock(&mce_chrdev_state_lock);
21242@@ -2404,7 +2407,7 @@ static __init void mce_init_banks(void) 21623@@ -2406,7 +2409,7 @@ static __init void mce_init_banks(void)
21243 21624
21244 for (i = 0; i < mca_cfg.banks; i++) { 21625 for (i = 0; i < mca_cfg.banks; i++) {
21245 struct mce_bank *b = &mce_banks[i]; 21626 struct mce_bank *b = &mce_banks[i];
@@ -21248,7 +21629,7 @@ index b3218cd..99a75de 100644
21248 21629
21249 sysfs_attr_init(&a->attr); 21630 sysfs_attr_init(&a->attr);
21250 a->attr.name = b->attrname; 21631 a->attr.name = b->attrname;
21251@@ -2472,7 +2475,7 @@ struct dentry *mce_get_debugfs_dir(void) 21632@@ -2474,7 +2477,7 @@ struct dentry *mce_get_debugfs_dir(void)
21252 static void mce_reset(void) 21633 static void mce_reset(void)
21253 { 21634 {
21254 cpu_missing = 0; 21635 cpu_missing = 0;
@@ -21258,10 +21639,10 @@ index b3218cd..99a75de 100644
21258 atomic_set(&mce_callin, 0); 21639 atomic_set(&mce_callin, 0);
21259 atomic_set(&global_nwo, 0); 21640 atomic_set(&global_nwo, 0);
21260diff --git a/arch/x86/kernel/cpu/mcheck/p5.c b/arch/x86/kernel/cpu/mcheck/p5.c 21641diff --git a/arch/x86/kernel/cpu/mcheck/p5.c b/arch/x86/kernel/cpu/mcheck/p5.c
21261index 1c044b1..37a2a43 100644 21642index a304298..49b6d06 100644
21262--- a/arch/x86/kernel/cpu/mcheck/p5.c 21643--- a/arch/x86/kernel/cpu/mcheck/p5.c
21263+++ b/arch/x86/kernel/cpu/mcheck/p5.c 21644+++ b/arch/x86/kernel/cpu/mcheck/p5.c
21264@@ -11,6 +11,7 @@ 21645@@ -10,6 +10,7 @@
21265 #include <asm/processor.h> 21646 #include <asm/processor.h>
21266 #include <asm/mce.h> 21647 #include <asm/mce.h>
21267 #include <asm/msr.h> 21648 #include <asm/msr.h>
@@ -21269,7 +21650,7 @@ index 1c044b1..37a2a43 100644
21269 21650
21270 /* By default disabled */ 21651 /* By default disabled */
21271 int mce_p5_enabled __read_mostly; 21652 int mce_p5_enabled __read_mostly;
21272@@ -49,7 +50,9 @@ void intel_p5_mcheck_init(struct cpuinfo_x86 *c) 21653@@ -48,7 +49,9 @@ void intel_p5_mcheck_init(struct cpuinfo_x86 *c)
21273 if (!cpu_has(c, X86_FEATURE_MCE)) 21654 if (!cpu_has(c, X86_FEATURE_MCE))
21274 return; 21655 return;
21275 21656
@@ -21280,10 +21661,10 @@ index 1c044b1..37a2a43 100644
21280 wmb(); 21661 wmb();
21281 21662
21282diff --git a/arch/x86/kernel/cpu/mcheck/winchip.c b/arch/x86/kernel/cpu/mcheck/winchip.c 21663diff --git a/arch/x86/kernel/cpu/mcheck/winchip.c b/arch/x86/kernel/cpu/mcheck/winchip.c
21283index e9a701a..35317d6 100644 21664index 7dc5564..1273569 100644
21284--- a/arch/x86/kernel/cpu/mcheck/winchip.c 21665--- a/arch/x86/kernel/cpu/mcheck/winchip.c
21285+++ b/arch/x86/kernel/cpu/mcheck/winchip.c 21666+++ b/arch/x86/kernel/cpu/mcheck/winchip.c
21286@@ -10,6 +10,7 @@ 21667@@ -9,6 +9,7 @@
21287 #include <asm/processor.h> 21668 #include <asm/processor.h>
21288 #include <asm/mce.h> 21669 #include <asm/mce.h>
21289 #include <asm/msr.h> 21670 #include <asm/msr.h>
@@ -21291,7 +21672,7 @@ index e9a701a..35317d6 100644
21291 21672
21292 /* Machine check handler for WinChip C6: */ 21673 /* Machine check handler for WinChip C6: */
21293 static void winchip_machine_check(struct pt_regs *regs, long error_code) 21674 static void winchip_machine_check(struct pt_regs *regs, long error_code)
21294@@ -23,7 +24,9 @@ void winchip_mcheck_init(struct cpuinfo_x86 *c) 21675@@ -22,7 +23,9 @@ void winchip_mcheck_init(struct cpuinfo_x86 *c)
21295 { 21676 {
21296 u32 lo, hi; 21677 u32 lo, hi;
21297 21678
@@ -21301,6 +21682,39 @@ index e9a701a..35317d6 100644
21301 /* Make sure the vector pointer is visible before we enable MCEs: */ 21682 /* Make sure the vector pointer is visible before we enable MCEs: */
21302 wmb(); 21683 wmb();
21303 21684
21685diff --git a/arch/x86/kernel/cpu/microcode/core.c b/arch/x86/kernel/cpu/microcode/core.c
21686index 15c9876..0a43909 100644
21687--- a/arch/x86/kernel/cpu/microcode/core.c
21688+++ b/arch/x86/kernel/cpu/microcode/core.c
21689@@ -513,7 +513,7 @@ mc_cpu_callback(struct notifier_block *nb, unsigned long action, void *hcpu)
21690 return NOTIFY_OK;
21691 }
21692
21693-static struct notifier_block __refdata mc_cpu_notifier = {
21694+static struct notifier_block mc_cpu_notifier = {
21695 .notifier_call = mc_cpu_callback,
21696 };
21697
21698diff --git a/arch/x86/kernel/cpu/microcode/intel.c b/arch/x86/kernel/cpu/microcode/intel.c
21699index a276fa7..e66810f 100644
21700--- a/arch/x86/kernel/cpu/microcode/intel.c
21701+++ b/arch/x86/kernel/cpu/microcode/intel.c
21702@@ -293,13 +293,13 @@ static enum ucode_state request_microcode_fw(int cpu, struct device *device,
21703
21704 static int get_ucode_user(void *to, const void *from, size_t n)
21705 {
21706- return copy_from_user(to, from, n);
21707+ return copy_from_user(to, (const void __force_user *)from, n);
21708 }
21709
21710 static enum ucode_state
21711 request_microcode_user(int cpu, const void __user *buf, size_t size)
21712 {
21713- return generic_load_microcode(cpu, (void *)buf, size, &get_ucode_user);
21714+ return generic_load_microcode(cpu, (__force_kernel void *)buf, size, &get_ucode_user);
21715 }
21716
21717 static void microcode_fini_cpu(int cpu)
21304diff --git a/arch/x86/kernel/cpu/mtrr/main.c b/arch/x86/kernel/cpu/mtrr/main.c 21718diff --git a/arch/x86/kernel/cpu/mtrr/main.c b/arch/x86/kernel/cpu/mtrr/main.c
21305index f961de9..8a9d332 100644 21719index f961de9..8a9d332 100644
21306--- a/arch/x86/kernel/cpu/mtrr/main.c 21720--- a/arch/x86/kernel/cpu/mtrr/main.c
@@ -21328,7 +21742,7 @@ index df5e41f..816c719 100644
21328 extern int generic_get_free_region(unsigned long base, unsigned long size, 21742 extern int generic_get_free_region(unsigned long base, unsigned long size,
21329 int replace_reg); 21743 int replace_reg);
21330diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c 21744diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c
21331index db6cdbe..faaf834 100644 21745index 79f9f84..38ace52 100644
21332--- a/arch/x86/kernel/cpu/perf_event.c 21746--- a/arch/x86/kernel/cpu/perf_event.c
21333+++ b/arch/x86/kernel/cpu/perf_event.c 21747+++ b/arch/x86/kernel/cpu/perf_event.c
21334@@ -1351,7 +1351,7 @@ static void __init pmu_check_apic(void) 21748@@ -1351,7 +1351,7 @@ static void __init pmu_check_apic(void)
@@ -21349,7 +21763,7 @@ index db6cdbe..faaf834 100644
21349 .name = "events", 21763 .name = "events",
21350 .attrs = events_attr, 21764 .attrs = events_attr,
21351 }; 21765 };
21352@@ -1961,7 +1961,7 @@ static unsigned long get_segment_base(unsigned int segment) 21766@@ -1971,7 +1971,7 @@ static unsigned long get_segment_base(unsigned int segment)
21353 if (idx > GDT_ENTRIES) 21767 if (idx > GDT_ENTRIES)
21354 return 0; 21768 return 0;
21355 21769
@@ -21358,7 +21772,7 @@ index db6cdbe..faaf834 100644
21358 } 21772 }
21359 21773
21360 return get_desc_base(desc + idx); 21774 return get_desc_base(desc + idx);
21361@@ -2051,7 +2051,7 @@ perf_callchain_user(struct perf_callchain_entry *entry, struct pt_regs *regs) 21775@@ -2061,7 +2061,7 @@ perf_callchain_user(struct perf_callchain_entry *entry, struct pt_regs *regs)
21362 break; 21776 break;
21363 21777
21364 perf_callchain_store(entry, frame.return_address); 21778 perf_callchain_store(entry, frame.return_address);
@@ -21381,13 +21795,13 @@ index 639d128..e92d7e5 100644
21381 21795
21382 while (amd_iommu_v2_event_descs[i].attr.attr.name) 21796 while (amd_iommu_v2_event_descs[i].attr.attr.name)
21383diff --git a/arch/x86/kernel/cpu/perf_event_intel.c b/arch/x86/kernel/cpu/perf_event_intel.c 21797diff --git a/arch/x86/kernel/cpu/perf_event_intel.c b/arch/x86/kernel/cpu/perf_event_intel.c
21384index 0fa4f24..17990ed 100644 21798index aa333d9..f9db700 100644
21385--- a/arch/x86/kernel/cpu/perf_event_intel.c 21799--- a/arch/x86/kernel/cpu/perf_event_intel.c
21386+++ b/arch/x86/kernel/cpu/perf_event_intel.c 21800+++ b/arch/x86/kernel/cpu/perf_event_intel.c
21387@@ -2314,10 +2314,10 @@ __init int intel_pmu_init(void) 21801@@ -2309,10 +2309,10 @@ __init int intel_pmu_init(void)
21388 * v2 and above have a perf capabilities MSR 21802 x86_pmu.num_counters_fixed = max((int)edx.split.num_counters_fixed, 3);
21389 */ 21803
21390 if (version > 1) { 21804 if (boot_cpu_has(X86_FEATURE_PDCM)) {
21391- u64 capabilities; 21805- u64 capabilities;
21392+ u64 capabilities = x86_pmu.intel_cap.capabilities; 21806+ u64 capabilities = x86_pmu.intel_cap.capabilities;
21393 21807
@@ -21398,11 +21812,24 @@ index 0fa4f24..17990ed 100644
21398 } 21812 }
21399 21813
21400 intel_ds_init(); 21814 intel_ds_init();
21815diff --git a/arch/x86/kernel/cpu/perf_event_intel_rapl.c b/arch/x86/kernel/cpu/perf_event_intel_rapl.c
21816index 5ad35ad..e0a3960 100644
21817--- a/arch/x86/kernel/cpu/perf_event_intel_rapl.c
21818+++ b/arch/x86/kernel/cpu/perf_event_intel_rapl.c
21819@@ -425,7 +425,7 @@ static struct attribute *rapl_events_cln_attr[] = {
21820 NULL,
21821 };
21822
21823-static struct attribute_group rapl_pmu_events_group = {
21824+static attribute_group_no_const rapl_pmu_events_group __read_only = {
21825 .name = "events",
21826 .attrs = NULL, /* patched at runtime */
21827 };
21401diff --git a/arch/x86/kernel/cpu/perf_event_intel_uncore.c b/arch/x86/kernel/cpu/perf_event_intel_uncore.c 21828diff --git a/arch/x86/kernel/cpu/perf_event_intel_uncore.c b/arch/x86/kernel/cpu/perf_event_intel_uncore.c
21402index 29c2487..a5606fa 100644 21829index 047f540..afdeba0 100644
21403--- a/arch/x86/kernel/cpu/perf_event_intel_uncore.c 21830--- a/arch/x86/kernel/cpu/perf_event_intel_uncore.c
21404+++ b/arch/x86/kernel/cpu/perf_event_intel_uncore.c 21831+++ b/arch/x86/kernel/cpu/perf_event_intel_uncore.c
21405@@ -3318,7 +3318,7 @@ static void __init uncore_types_exit(struct intel_uncore_type **types) 21832@@ -3326,7 +3326,7 @@ static void __init uncore_types_exit(struct intel_uncore_type **types)
21406 static int __init uncore_type_init(struct intel_uncore_type *type) 21833 static int __init uncore_type_init(struct intel_uncore_type *type)
21407 { 21834 {
21408 struct intel_uncore_pmu *pmus; 21835 struct intel_uncore_pmu *pmus;
@@ -21438,10 +21865,10 @@ index 7d9481c..99c7e4b 100644
21438 .notifier_call = cpuid_class_cpu_callback, 21865 .notifier_call = cpuid_class_cpu_callback,
21439 }; 21866 };
21440diff --git a/arch/x86/kernel/crash.c b/arch/x86/kernel/crash.c 21867diff --git a/arch/x86/kernel/crash.c b/arch/x86/kernel/crash.c
21441index 18677a9..f67c45b 100644 21868index a57902e..ebaae2a 100644
21442--- a/arch/x86/kernel/crash.c 21869--- a/arch/x86/kernel/crash.c
21443+++ b/arch/x86/kernel/crash.c 21870+++ b/arch/x86/kernel/crash.c
21444@@ -58,10 +58,8 @@ static void kdump_nmi_callback(int cpu, struct pt_regs *regs) 21871@@ -57,10 +57,8 @@ static void kdump_nmi_callback(int cpu, struct pt_regs *regs)
21445 { 21872 {
21446 #ifdef CONFIG_X86_32 21873 #ifdef CONFIG_X86_32
21447 struct pt_regs fixed_regs; 21874 struct pt_regs fixed_regs;
@@ -21467,10 +21894,10 @@ index afa64ad..dce67dd 100644
21467 return -EFAULT; 21894 return -EFAULT;
21468 } 21895 }
21469diff --git a/arch/x86/kernel/doublefault.c b/arch/x86/kernel/doublefault.c 21896diff --git a/arch/x86/kernel/doublefault.c b/arch/x86/kernel/doublefault.c
21470index 5d3fe8d..02e1429 100644 21897index f6dfd93..892ade4 100644
21471--- a/arch/x86/kernel/doublefault.c 21898--- a/arch/x86/kernel/doublefault.c
21472+++ b/arch/x86/kernel/doublefault.c 21899+++ b/arch/x86/kernel/doublefault.c
21473@@ -13,7 +13,7 @@ 21900@@ -12,7 +12,7 @@
21474 21901
21475 #define DOUBLEFAULT_STACKSIZE (1024) 21902 #define DOUBLEFAULT_STACKSIZE (1024)
21476 static unsigned long doublefault_stack[DOUBLEFAULT_STACKSIZE]; 21903 static unsigned long doublefault_stack[DOUBLEFAULT_STACKSIZE];
@@ -21479,7 +21906,7 @@ index 5d3fe8d..02e1429 100644
21479 21906
21480 #define ptr_ok(x) ((x) > PAGE_OFFSET && (x) < PAGE_OFFSET + MAXMEM) 21907 #define ptr_ok(x) ((x) > PAGE_OFFSET && (x) < PAGE_OFFSET + MAXMEM)
21481 21908
21482@@ -23,7 +23,7 @@ static void doublefault_fn(void) 21909@@ -22,7 +22,7 @@ static void doublefault_fn(void)
21483 unsigned long gdt, tss; 21910 unsigned long gdt, tss;
21484 21911
21485 native_store_gdt(&gdt_desc); 21912 native_store_gdt(&gdt_desc);
@@ -21488,7 +21915,7 @@ index 5d3fe8d..02e1429 100644
21488 21915
21489 printk(KERN_EMERG "PANIC: double fault, gdt at %08lx [%d bytes]\n", gdt, gdt_desc.size); 21916 printk(KERN_EMERG "PANIC: double fault, gdt at %08lx [%d bytes]\n", gdt, gdt_desc.size);
21490 21917
21491@@ -60,10 +60,10 @@ struct tss_struct doublefault_tss __cacheline_aligned = { 21918@@ -59,10 +59,10 @@ struct tss_struct doublefault_tss __cacheline_aligned = {
21492 /* 0x2 bit is always set */ 21919 /* 0x2 bit is always set */
21493 .flags = X86_EFLAGS_SF | 0x2, 21920 .flags = X86_EFLAGS_SF | 0x2,
21494 .sp = STACK_START, 21921 .sp = STACK_START,
@@ -21656,7 +22083,7 @@ index d9c12d3..7858b62 100644
21656 22083
21657 if (__die(str, regs, err)) 22084 if (__die(str, regs, err))
21658diff --git a/arch/x86/kernel/dumpstack_32.c b/arch/x86/kernel/dumpstack_32.c 22085diff --git a/arch/x86/kernel/dumpstack_32.c b/arch/x86/kernel/dumpstack_32.c
21659index f2a1770..540657f 100644 22086index f2a1770..10fa52d 100644
21660--- a/arch/x86/kernel/dumpstack_32.c 22087--- a/arch/x86/kernel/dumpstack_32.c
21661+++ b/arch/x86/kernel/dumpstack_32.c 22088+++ b/arch/x86/kernel/dumpstack_32.c
21662@@ -38,15 +38,13 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs, 22089@@ -38,15 +38,13 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
@@ -21734,7 +22161,7 @@ index f2a1770..540657f 100644
21734 return ud2 == 0x0b0f; 22161 return ud2 == 0x0b0f;
21735 } 22162 }
21736+ 22163+
21737+#ifdef CONFIG_PAX_MEMORY_STACKLEAK 22164+#if defined(CONFIG_PAX_MEMORY_STACKLEAK) || defined(CONFIG_PAX_USERCOPY)
21738+void pax_check_alloca(unsigned long size) 22165+void pax_check_alloca(unsigned long size)
21739+{ 22166+{
21740+ unsigned long sp = (unsigned long)&sp, stack_left; 22167+ unsigned long sp = (unsigned long)&sp, stack_left;
@@ -21746,7 +22173,7 @@ index f2a1770..540657f 100644
21746+EXPORT_SYMBOL(pax_check_alloca); 22173+EXPORT_SYMBOL(pax_check_alloca);
21747+#endif 22174+#endif
21748diff --git a/arch/x86/kernel/dumpstack_64.c b/arch/x86/kernel/dumpstack_64.c 22175diff --git a/arch/x86/kernel/dumpstack_64.c b/arch/x86/kernel/dumpstack_64.c
21749index addb207..99635fa 100644 22176index addb207..921706b 100644
21750--- a/arch/x86/kernel/dumpstack_64.c 22177--- a/arch/x86/kernel/dumpstack_64.c
21751+++ b/arch/x86/kernel/dumpstack_64.c 22178+++ b/arch/x86/kernel/dumpstack_64.c
21752@@ -119,9 +119,9 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs, 22179@@ -119,9 +119,9 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
@@ -21815,7 +22242,7 @@ index addb207..99635fa 100644
21815 return ud2 == 0x0b0f; 22242 return ud2 == 0x0b0f;
21816 } 22243 }
21817+ 22244+
21818+#ifdef CONFIG_PAX_MEMORY_STACKLEAK 22245+#if defined(CONFIG_PAX_MEMORY_STACKLEAK) || defined(CONFIG_PAX_USERCOPY)
21819+void pax_check_alloca(unsigned long size) 22246+void pax_check_alloca(unsigned long size)
21820+{ 22247+{
21821+ unsigned long sp = (unsigned long)&sp, stack_start, stack_end; 22248+ unsigned long sp = (unsigned long)&sp, stack_start, stack_end;
@@ -21862,7 +22289,7 @@ index addb207..99635fa 100644
21862+EXPORT_SYMBOL(pax_check_alloca); 22289+EXPORT_SYMBOL(pax_check_alloca);
21863+#endif 22290+#endif
21864diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c 22291diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c
21865index 174da5f..5e55606 100644 22292index 988c00a..4f673b6 100644
21866--- a/arch/x86/kernel/e820.c 22293--- a/arch/x86/kernel/e820.c
21867+++ b/arch/x86/kernel/e820.c 22294+++ b/arch/x86/kernel/e820.c
21868@@ -803,8 +803,8 @@ unsigned long __init e820_end_of_low_ram_pfn(void) 22295@@ -803,8 +803,8 @@ unsigned long __init e820_end_of_low_ram_pfn(void)
@@ -23915,7 +24342,7 @@ index 1e96c36..3ff710a 100644
23915 /* 24342 /*
23916 * End of kprobes section 24343 * End of kprobes section
23917diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c 24344diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c
23918index e625319..b9abb9d 100644 24345index 1ffc32d..e52c745 100644
23919--- a/arch/x86/kernel/ftrace.c 24346--- a/arch/x86/kernel/ftrace.c
23920+++ b/arch/x86/kernel/ftrace.c 24347+++ b/arch/x86/kernel/ftrace.c
23921@@ -104,6 +104,8 @@ ftrace_modify_code_direct(unsigned long ip, unsigned const char *old_code, 24348@@ -104,6 +104,8 @@ ftrace_modify_code_direct(unsigned long ip, unsigned const char *old_code,
@@ -24440,7 +24867,7 @@ index f36bd42..56ee1534 100644
24440+ .fill PAGE_SIZE_asm - GDT_SIZE,1,0 24867+ .fill PAGE_SIZE_asm - GDT_SIZE,1,0
24441+ .endr 24868+ .endr
24442diff --git a/arch/x86/kernel/head_64.S b/arch/x86/kernel/head_64.S 24869diff --git a/arch/x86/kernel/head_64.S b/arch/x86/kernel/head_64.S
24443index a468c0a..b9aed84 100644 24870index a468c0a..c7dec74 100644
24444--- a/arch/x86/kernel/head_64.S 24871--- a/arch/x86/kernel/head_64.S
24445+++ b/arch/x86/kernel/head_64.S 24872+++ b/arch/x86/kernel/head_64.S
24446@@ -20,6 +20,8 @@ 24873@@ -20,6 +20,8 @@
@@ -24532,6 +24959,15 @@ index a468c0a..b9aed84 100644
24532 movq initial_code(%rip),%rax 24959 movq initial_code(%rip),%rax
24533 pushq $0 # fake return address to stop unwinder 24960 pushq $0 # fake return address to stop unwinder
24534 pushq $__KERNEL_CS # set correct cs 24961 pushq $__KERNEL_CS # set correct cs
24962@@ -313,7 +344,7 @@ ENDPROC(start_cpu0)
24963 .quad INIT_PER_CPU_VAR(irq_stack_union)
24964
24965 GLOBAL(stack_start)
24966- .quad init_thread_union+THREAD_SIZE-8
24967+ .quad init_thread_union+THREAD_SIZE-16
24968 .word 0
24969 __FINITDATA
24970
24535@@ -391,7 +422,7 @@ ENTRY(early_idt_handler) 24971@@ -391,7 +422,7 @@ ENTRY(early_idt_handler)
24536 call dump_stack 24972 call dump_stack
24537 #ifdef CONFIG_KALLSYMS 24973 #ifdef CONFIG_KALLSYMS
@@ -24836,7 +25272,7 @@ index 4ddaf66..49d5c18 100644
24836 regs->flags = (regs->flags & ~X86_EFLAGS_IOPL) | (level << 12); 25272 regs->flags = (regs->flags & ~X86_EFLAGS_IOPL) | (level << 12);
24837 t->iopl = level << 12; 25273 t->iopl = level << 12;
24838diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c 25274diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c
24839index 22d0687..e07b2a5 100644 25275index d99f31d..1c0f466 100644
24840--- a/arch/x86/kernel/irq.c 25276--- a/arch/x86/kernel/irq.c
24841+++ b/arch/x86/kernel/irq.c 25277+++ b/arch/x86/kernel/irq.c
24842@@ -21,7 +21,7 @@ 25278@@ -21,7 +21,7 @@
@@ -24870,10 +25306,19 @@ index 22d0687..e07b2a5 100644
24870 } 25306 }
24871 25307
24872diff --git a/arch/x86/kernel/irq_32.c b/arch/x86/kernel/irq_32.c 25308diff --git a/arch/x86/kernel/irq_32.c b/arch/x86/kernel/irq_32.c
24873index d7fcbed..1f747f7 100644 25309index d7fcbed..96e715a 100644
24874--- a/arch/x86/kernel/irq_32.c 25310--- a/arch/x86/kernel/irq_32.c
24875+++ b/arch/x86/kernel/irq_32.c 25311+++ b/arch/x86/kernel/irq_32.c
24876@@ -39,7 +39,7 @@ static int check_stack_overflow(void) 25312@@ -29,6 +29,8 @@ EXPORT_PER_CPU_SYMBOL(irq_regs);
25313
25314 #ifdef CONFIG_DEBUG_STACKOVERFLOW
25315
25316+extern void gr_handle_kernel_exploit(void);
25317+
25318 int sysctl_panic_on_stackoverflow __read_mostly;
25319
25320 /* Debugging check for stack overflow: is there less than 1KB free? */
25321@@ -39,13 +41,14 @@ static int check_stack_overflow(void)
24877 __asm__ __volatile__("andl %%esp,%0" : 25322 __asm__ __volatile__("andl %%esp,%0" :
24878 "=r" (sp) : "0" (THREAD_SIZE - 1)); 25323 "=r" (sp) : "0" (THREAD_SIZE - 1));
24879 25324
@@ -24882,7 +25327,14 @@ index d7fcbed..1f747f7 100644
24882 } 25327 }
24883 25328
24884 static void print_stack_overflow(void) 25329 static void print_stack_overflow(void)
24885@@ -59,8 +59,8 @@ static inline void print_stack_overflow(void) { } 25330 {
25331 printk(KERN_WARNING "low stack detected by irq handler\n");
25332 dump_stack();
25333+ gr_handle_kernel_exploit();
25334 if (sysctl_panic_on_stackoverflow)
25335 panic("low stack detected by irq handler - check messages\n");
25336 }
25337@@ -59,8 +62,8 @@ static inline void print_stack_overflow(void) { }
24886 * per-CPU IRQ handling contexts (thread information and stack) 25338 * per-CPU IRQ handling contexts (thread information and stack)
24887 */ 25339 */
24888 union irq_ctx { 25340 union irq_ctx {
@@ -24893,7 +25345,7 @@ index d7fcbed..1f747f7 100644
24893 } __attribute__((aligned(THREAD_SIZE))); 25345 } __attribute__((aligned(THREAD_SIZE)));
24894 25346
24895 static DEFINE_PER_CPU(union irq_ctx *, hardirq_ctx); 25347 static DEFINE_PER_CPU(union irq_ctx *, hardirq_ctx);
24896@@ -80,10 +80,9 @@ static void call_on_stack(void *func, void *stack) 25348@@ -80,10 +83,9 @@ static void call_on_stack(void *func, void *stack)
24897 static inline int 25349 static inline int
24898 execute_on_irq_stack(int overflow, struct irq_desc *desc, int irq) 25350 execute_on_irq_stack(int overflow, struct irq_desc *desc, int irq)
24899 { 25351 {
@@ -24905,7 +25357,7 @@ index d7fcbed..1f747f7 100644
24905 irqctx = __this_cpu_read(hardirq_ctx); 25357 irqctx = __this_cpu_read(hardirq_ctx);
24906 25358
24907 /* 25359 /*
24908@@ -92,13 +91,16 @@ execute_on_irq_stack(int overflow, struct irq_desc *desc, int irq) 25360@@ -92,13 +94,16 @@ execute_on_irq_stack(int overflow, struct irq_desc *desc, int irq)
24909 * handler) we can't do that and just have to keep using the 25361 * handler) we can't do that and just have to keep using the
24910 * current stack (which is the irq stack already after all) 25362 * current stack (which is the irq stack already after all)
24911 */ 25363 */
@@ -24926,7 +25378,7 @@ index d7fcbed..1f747f7 100644
24926 25378
24927 if (unlikely(overflow)) 25379 if (unlikely(overflow))
24928 call_on_stack(print_stack_overflow, isp); 25380 call_on_stack(print_stack_overflow, isp);
24929@@ -110,6 +112,11 @@ execute_on_irq_stack(int overflow, struct irq_desc *desc, int irq) 25381@@ -110,6 +115,11 @@ execute_on_irq_stack(int overflow, struct irq_desc *desc, int irq)
24930 : "0" (irq), "1" (desc), "2" (isp), 25382 : "0" (irq), "1" (desc), "2" (isp),
24931 "D" (desc->handle_irq) 25383 "D" (desc->handle_irq)
24932 : "memory", "cc", "ecx"); 25384 : "memory", "cc", "ecx");
@@ -24938,7 +25390,7 @@ index d7fcbed..1f747f7 100644
24938 return 1; 25390 return 1;
24939 } 25391 }
24940 25392
24941@@ -118,48 +125,34 @@ execute_on_irq_stack(int overflow, struct irq_desc *desc, int irq) 25393@@ -118,48 +128,34 @@ execute_on_irq_stack(int overflow, struct irq_desc *desc, int irq)
24942 */ 25394 */
24943 void irq_ctx_init(int cpu) 25395 void irq_ctx_init(int cpu)
24944 { 25396 {
@@ -25000,7 +25452,7 @@ index d7fcbed..1f747f7 100644
25000 } 25452 }
25001 25453
25002 bool handle_irq(unsigned irq, struct pt_regs *regs) 25454 bool handle_irq(unsigned irq, struct pt_regs *regs)
25003@@ -173,7 +166,7 @@ bool handle_irq(unsigned irq, struct pt_regs *regs) 25455@@ -173,7 +169,7 @@ bool handle_irq(unsigned irq, struct pt_regs *regs)
25004 if (unlikely(!desc)) 25456 if (unlikely(!desc))
25005 return false; 25457 return false;
25006 25458
@@ -25010,10 +25462,19 @@ index d7fcbed..1f747f7 100644
25010 print_stack_overflow(); 25462 print_stack_overflow();
25011 desc->handle_irq(irq, desc); 25463 desc->handle_irq(irq, desc);
25012diff --git a/arch/x86/kernel/irq_64.c b/arch/x86/kernel/irq_64.c 25464diff --git a/arch/x86/kernel/irq_64.c b/arch/x86/kernel/irq_64.c
25013index 4d1c746..232961d 100644 25465index 4d1c746..55a22d6 100644
25014--- a/arch/x86/kernel/irq_64.c 25466--- a/arch/x86/kernel/irq_64.c
25015+++ b/arch/x86/kernel/irq_64.c 25467+++ b/arch/x86/kernel/irq_64.c
25016@@ -44,7 +44,7 @@ static inline void stack_overflow_check(struct pt_regs *regs) 25468@@ -26,6 +26,8 @@ EXPORT_PER_CPU_SYMBOL(irq_stat);
25469 DEFINE_PER_CPU(struct pt_regs *, irq_regs);
25470 EXPORT_PER_CPU_SYMBOL(irq_regs);
25471
25472+extern void gr_handle_kernel_exploit(void);
25473+
25474 int sysctl_panic_on_stackoverflow;
25475
25476 /*
25477@@ -44,7 +46,7 @@ static inline void stack_overflow_check(struct pt_regs *regs)
25017 u64 estack_top, estack_bottom; 25478 u64 estack_top, estack_bottom;
25018 u64 curbase = (u64)task_stack_page(current); 25479 u64 curbase = (u64)task_stack_page(current);
25019 25480
@@ -25022,6 +25483,15 @@ index 4d1c746..232961d 100644
25022 return; 25483 return;
25023 25484
25024 if (regs->sp >= curbase + sizeof(struct thread_info) + 25485 if (regs->sp >= curbase + sizeof(struct thread_info) +
25486@@ -69,6 +71,8 @@ static inline void stack_overflow_check(struct pt_regs *regs)
25487 irq_stack_top, irq_stack_bottom,
25488 estack_top, estack_bottom);
25489
25490+ gr_handle_kernel_exploit();
25491+
25492 if (sysctl_panic_on_stackoverflow)
25493 panic("low stack detected by irq handler - check messages\n");
25494 #endif
25025diff --git a/arch/x86/kernel/jump_label.c b/arch/x86/kernel/jump_label.c 25495diff --git a/arch/x86/kernel/jump_label.c b/arch/x86/kernel/jump_label.c
25026index 26d5a55..a01160a 100644 25496index 26d5a55..a01160a 100644
25027--- a/arch/x86/kernel/jump_label.c 25497--- a/arch/x86/kernel/jump_label.c
@@ -25061,10 +25531,10 @@ index 26d5a55..a01160a 100644
25061 } 25531 }
25062 memcpy(&code, ideal_nops[NOP_ATOMIC5], JUMP_LABEL_NOP_SIZE); 25532 memcpy(&code, ideal_nops[NOP_ATOMIC5], JUMP_LABEL_NOP_SIZE);
25063diff --git a/arch/x86/kernel/kgdb.c b/arch/x86/kernel/kgdb.c 25533diff --git a/arch/x86/kernel/kgdb.c b/arch/x86/kernel/kgdb.c
25064index 836f832..a8bda67 100644 25534index 7ec1d5f..5a7d130 100644
25065--- a/arch/x86/kernel/kgdb.c 25535--- a/arch/x86/kernel/kgdb.c
25066+++ b/arch/x86/kernel/kgdb.c 25536+++ b/arch/x86/kernel/kgdb.c
25067@@ -127,11 +127,11 @@ char *dbg_get_reg(int regno, void *mem, struct pt_regs *regs) 25537@@ -126,11 +126,11 @@ char *dbg_get_reg(int regno, void *mem, struct pt_regs *regs)
25068 #ifdef CONFIG_X86_32 25538 #ifdef CONFIG_X86_32
25069 switch (regno) { 25539 switch (regno) {
25070 case GDB_SS: 25540 case GDB_SS:
@@ -25078,7 +25548,7 @@ index 836f832..a8bda67 100644
25078 *(unsigned long *)mem = kernel_stack_pointer(regs); 25548 *(unsigned long *)mem = kernel_stack_pointer(regs);
25079 break; 25549 break;
25080 case GDB_GS: 25550 case GDB_GS:
25081@@ -229,7 +229,10 @@ static void kgdb_correct_hw_break(void) 25551@@ -228,7 +228,10 @@ static void kgdb_correct_hw_break(void)
25082 bp->attr.bp_addr = breakinfo[breakno].addr; 25552 bp->attr.bp_addr = breakinfo[breakno].addr;
25083 bp->attr.bp_len = breakinfo[breakno].len; 25553 bp->attr.bp_len = breakinfo[breakno].len;
25084 bp->attr.bp_type = breakinfo[breakno].type; 25554 bp->attr.bp_type = breakinfo[breakno].type;
@@ -25090,7 +25560,7 @@ index 836f832..a8bda67 100644
25090 info->len = breakinfo[breakno].len; 25560 info->len = breakinfo[breakno].len;
25091 info->type = breakinfo[breakno].type; 25561 info->type = breakinfo[breakno].type;
25092 val = arch_install_hw_breakpoint(bp); 25562 val = arch_install_hw_breakpoint(bp);
25093@@ -476,12 +479,12 @@ int kgdb_arch_handle_exception(int e_vector, int signo, int err_code, 25563@@ -475,12 +478,12 @@ int kgdb_arch_handle_exception(int e_vector, int signo, int err_code,
25094 case 'k': 25564 case 'k':
25095 /* clear the trace bit */ 25565 /* clear the trace bit */
25096 linux_regs->flags &= ~X86_EFLAGS_TF; 25566 linux_regs->flags &= ~X86_EFLAGS_TF;
@@ -25105,7 +25575,7 @@ index 836f832..a8bda67 100644
25105 raw_smp_processor_id()); 25575 raw_smp_processor_id());
25106 } 25576 }
25107 25577
25108@@ -546,7 +549,7 @@ static int __kgdb_notify(struct die_args *args, unsigned long cmd) 25578@@ -545,7 +548,7 @@ static int __kgdb_notify(struct die_args *args, unsigned long cmd)
25109 25579
25110 switch (cmd) { 25580 switch (cmd) {
25111 case DIE_DEBUG: 25581 case DIE_DEBUG:
@@ -25114,7 +25584,7 @@ index 836f832..a8bda67 100644
25114 if (user_mode(regs)) 25584 if (user_mode(regs))
25115 return single_step_cont(regs, args); 25585 return single_step_cont(regs, args);
25116 break; 25586 break;
25117@@ -751,11 +754,11 @@ int kgdb_arch_set_breakpoint(struct kgdb_bkpt *bpt) 25587@@ -750,11 +753,11 @@ int kgdb_arch_set_breakpoint(struct kgdb_bkpt *bpt)
25118 #endif /* CONFIG_DEBUG_RODATA */ 25588 #endif /* CONFIG_DEBUG_RODATA */
25119 25589
25120 bpt->type = BP_BREAKPOINT; 25590 bpt->type = BP_BREAKPOINT;
@@ -25128,7 +25598,7 @@ index 836f832..a8bda67 100644
25128 arch_kgdb_ops.gdb_bpt_instr, BREAK_INSTR_SIZE); 25598 arch_kgdb_ops.gdb_bpt_instr, BREAK_INSTR_SIZE);
25129 #ifdef CONFIG_DEBUG_RODATA 25599 #ifdef CONFIG_DEBUG_RODATA
25130 if (!err) 25600 if (!err)
25131@@ -768,7 +771,7 @@ int kgdb_arch_set_breakpoint(struct kgdb_bkpt *bpt) 25601@@ -767,7 +770,7 @@ int kgdb_arch_set_breakpoint(struct kgdb_bkpt *bpt)
25132 return -EBUSY; 25602 return -EBUSY;
25133 text_poke((void *)bpt->bpt_addr, arch_kgdb_ops.gdb_bpt_instr, 25603 text_poke((void *)bpt->bpt_addr, arch_kgdb_ops.gdb_bpt_instr,
25134 BREAK_INSTR_SIZE); 25604 BREAK_INSTR_SIZE);
@@ -25137,7 +25607,7 @@ index 836f832..a8bda67 100644
25137 if (err) 25607 if (err)
25138 return err; 25608 return err;
25139 if (memcmp(opc, arch_kgdb_ops.gdb_bpt_instr, BREAK_INSTR_SIZE)) 25609 if (memcmp(opc, arch_kgdb_ops.gdb_bpt_instr, BREAK_INSTR_SIZE))
25140@@ -793,13 +796,13 @@ int kgdb_arch_remove_breakpoint(struct kgdb_bkpt *bpt) 25610@@ -792,13 +795,13 @@ int kgdb_arch_remove_breakpoint(struct kgdb_bkpt *bpt)
25141 if (mutex_is_locked(&text_mutex)) 25611 if (mutex_is_locked(&text_mutex))
25142 goto knl_write; 25612 goto knl_write;
25143 text_poke((void *)bpt->bpt_addr, bpt->saved_instr, BREAK_INSTR_SIZE); 25613 text_poke((void *)bpt->bpt_addr, bpt->saved_instr, BREAK_INSTR_SIZE);
@@ -25339,11 +25809,33 @@ index 898160b..758cde8 100644
25339 if (!reenter) 25809 if (!reenter)
25340 reset_current_kprobe(); 25810 reset_current_kprobe();
25341 preempt_enable_no_resched(); 25811 preempt_enable_no_resched();
25812diff --git a/arch/x86/kernel/ksysfs.c b/arch/x86/kernel/ksysfs.c
25813index c2bedae..25e7ab6 100644
25814--- a/arch/x86/kernel/ksysfs.c
25815+++ b/arch/x86/kernel/ksysfs.c
25816@@ -184,7 +184,7 @@ out:
25817
25818 static struct kobj_attribute type_attr = __ATTR_RO(type);
25819
25820-static struct bin_attribute data_attr = {
25821+static bin_attribute_no_const data_attr __read_only = {
25822 .attr = {
25823 .name = "data",
25824 .mode = S_IRUGO,
25342diff --git a/arch/x86/kernel/ldt.c b/arch/x86/kernel/ldt.c 25825diff --git a/arch/x86/kernel/ldt.c b/arch/x86/kernel/ldt.c
25343index ebc9873..1b9724b 100644 25826index af1d14a..81ae763 100644
25344--- a/arch/x86/kernel/ldt.c 25827--- a/arch/x86/kernel/ldt.c
25345+++ b/arch/x86/kernel/ldt.c 25828+++ b/arch/x86/kernel/ldt.c
25346@@ -66,13 +66,13 @@ static int alloc_ldt(mm_context_t *pc, int mincount, int reload) 25829@@ -20,6 +20,8 @@
25830 #include <asm/mmu_context.h>
25831 #include <asm/syscalls.h>
25832
25833+int sysctl_ldt16 = 0;
25834+
25835 #ifdef CONFIG_SMP
25836 static void flush_ldt(void *current_mm)
25837 {
25838@@ -66,13 +68,13 @@ static int alloc_ldt(mm_context_t *pc, int mincount, int reload)
25347 if (reload) { 25839 if (reload) {
25348 #ifdef CONFIG_SMP 25840 #ifdef CONFIG_SMP
25349 preempt_disable(); 25841 preempt_disable();
@@ -25359,7 +25851,7 @@ index ebc9873..1b9724b 100644
25359 #endif 25851 #endif
25360 } 25852 }
25361 if (oldsize) { 25853 if (oldsize) {
25362@@ -94,7 +94,7 @@ static inline int copy_ldt(mm_context_t *new, mm_context_t *old) 25854@@ -94,7 +96,7 @@ static inline int copy_ldt(mm_context_t *new, mm_context_t *old)
25363 return err; 25855 return err;
25364 25856
25365 for (i = 0; i < old->size; i++) 25857 for (i = 0; i < old->size; i++)
@@ -25368,7 +25860,7 @@ index ebc9873..1b9724b 100644
25368 return 0; 25860 return 0;
25369 } 25861 }
25370 25862
25371@@ -115,6 +115,24 @@ int init_new_context(struct task_struct *tsk, struct mm_struct *mm) 25863@@ -115,6 +117,24 @@ int init_new_context(struct task_struct *tsk, struct mm_struct *mm)
25372 retval = copy_ldt(&mm->context, &old_mm->context); 25864 retval = copy_ldt(&mm->context, &old_mm->context);
25373 mutex_unlock(&old_mm->context.lock); 25865 mutex_unlock(&old_mm->context.lock);
25374 } 25866 }
@@ -25393,7 +25885,7 @@ index ebc9873..1b9724b 100644
25393 return retval; 25885 return retval;
25394 } 25886 }
25395 25887
25396@@ -229,6 +247,13 @@ static int write_ldt(void __user *ptr, unsigned long bytecount, int oldmode) 25888@@ -229,12 +249,19 @@ static int write_ldt(void __user *ptr, unsigned long bytecount, int oldmode)
25397 } 25889 }
25398 } 25890 }
25399 25891
@@ -25404,14 +25896,21 @@ index ebc9873..1b9724b 100644
25404+ } 25896+ }
25405+#endif 25897+#endif
25406+ 25898+
25407 fill_ldt(&ldt, &ldt_info); 25899 /*
25408 if (oldmode) 25900 * On x86-64 we do not support 16-bit segments due to
25409 ldt.avl = 0; 25901 * IRET leaking the high bits of the kernel stack address.
25902 */
25903 #ifdef CONFIG_X86_64
25904- if (!ldt_info.seg_32bit) {
25905+ if (!ldt_info.seg_32bit && !sysctl_ldt16) {
25906 error = -EINVAL;
25907 goto out_unlock;
25908 }
25410diff --git a/arch/x86/kernel/machine_kexec_32.c b/arch/x86/kernel/machine_kexec_32.c 25909diff --git a/arch/x86/kernel/machine_kexec_32.c b/arch/x86/kernel/machine_kexec_32.c
25411index 5b19e4d..6476a76 100644 25910index 1667b1d..16492c5 100644
25412--- a/arch/x86/kernel/machine_kexec_32.c 25911--- a/arch/x86/kernel/machine_kexec_32.c
25413+++ b/arch/x86/kernel/machine_kexec_32.c 25912+++ b/arch/x86/kernel/machine_kexec_32.c
25414@@ -26,7 +26,7 @@ 25913@@ -25,7 +25,7 @@
25415 #include <asm/cacheflush.h> 25914 #include <asm/cacheflush.h>
25416 #include <asm/debugreg.h> 25915 #include <asm/debugreg.h>
25417 25916
@@ -25420,7 +25919,7 @@ index 5b19e4d..6476a76 100644
25420 { 25919 {
25421 struct desc_ptr curidt; 25920 struct desc_ptr curidt;
25422 25921
25423@@ -38,7 +38,7 @@ static void set_idt(void *newidt, __u16 limit) 25922@@ -37,7 +37,7 @@ static void set_idt(void *newidt, __u16 limit)
25424 } 25923 }
25425 25924
25426 25925
@@ -25429,7 +25928,7 @@ index 5b19e4d..6476a76 100644
25429 { 25928 {
25430 struct desc_ptr curgdt; 25929 struct desc_ptr curgdt;
25431 25930
25432@@ -216,7 +216,7 @@ void machine_kexec(struct kimage *image) 25931@@ -215,7 +215,7 @@ void machine_kexec(struct kimage *image)
25433 } 25932 }
25434 25933
25435 control_page = page_address(image->control_code_page); 25934 control_page = page_address(image->control_code_page);
@@ -25438,39 +25937,6 @@ index 5b19e4d..6476a76 100644
25438 25937
25439 relocate_kernel_ptr = control_page; 25938 relocate_kernel_ptr = control_page;
25440 page_list[PA_CONTROL_PAGE] = __pa(control_page); 25939 page_list[PA_CONTROL_PAGE] = __pa(control_page);
25441diff --git a/arch/x86/kernel/microcode_core.c b/arch/x86/kernel/microcode_core.c
25442index 15c9876..0a43909 100644
25443--- a/arch/x86/kernel/microcode_core.c
25444+++ b/arch/x86/kernel/microcode_core.c
25445@@ -513,7 +513,7 @@ mc_cpu_callback(struct notifier_block *nb, unsigned long action, void *hcpu)
25446 return NOTIFY_OK;
25447 }
25448
25449-static struct notifier_block __refdata mc_cpu_notifier = {
25450+static struct notifier_block mc_cpu_notifier = {
25451 .notifier_call = mc_cpu_callback,
25452 };
25453
25454diff --git a/arch/x86/kernel/microcode_intel.c b/arch/x86/kernel/microcode_intel.c
25455index 5fb2ceb..3ae90bb 100644
25456--- a/arch/x86/kernel/microcode_intel.c
25457+++ b/arch/x86/kernel/microcode_intel.c
25458@@ -293,13 +293,13 @@ static enum ucode_state request_microcode_fw(int cpu, struct device *device,
25459
25460 static int get_ucode_user(void *to, const void *from, size_t n)
25461 {
25462- return copy_from_user(to, from, n);
25463+ return copy_from_user(to, (const void __force_user *)from, n);
25464 }
25465
25466 static enum ucode_state
25467 request_microcode_user(int cpu, const void __user *buf, size_t size)
25468 {
25469- return generic_load_microcode(cpu, (void *)buf, size, &get_ucode_user);
25470+ return generic_load_microcode(cpu, (__force_kernel void *)buf, size, &get_ucode_user);
25471 }
25472
25473 static void microcode_fini_cpu(int cpu)
25474diff --git a/arch/x86/kernel/module.c b/arch/x86/kernel/module.c 25940diff --git a/arch/x86/kernel/module.c b/arch/x86/kernel/module.c
25475index 18be189..4a9fe40 100644 25941index 18be189..4a9fe40 100644
25476--- a/arch/x86/kernel/module.c 25942--- a/arch/x86/kernel/module.c
@@ -25740,7 +26206,7 @@ index bbb6c73..24a58ef 100644
25740 .lock_spinning = __PV_IS_CALLEE_SAVE(paravirt_nop), 26206 .lock_spinning = __PV_IS_CALLEE_SAVE(paravirt_nop),
25741 .unlock_kick = paravirt_nop, 26207 .unlock_kick = paravirt_nop,
25742diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c 26208diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c
25743index 1b10af8..0b58cbc 100644 26209index 1b10af8..45bfbec 100644
25744--- a/arch/x86/kernel/paravirt.c 26210--- a/arch/x86/kernel/paravirt.c
25745+++ b/arch/x86/kernel/paravirt.c 26211+++ b/arch/x86/kernel/paravirt.c
25746@@ -55,6 +55,9 @@ u64 _paravirt_ident_64(u64 x) 26212@@ -55,6 +55,9 @@ u64 _paravirt_ident_64(u64 x)
@@ -25753,11 +26219,13 @@ index 1b10af8..0b58cbc 100644
25753 26219
25754 void __init default_banner(void) 26220 void __init default_banner(void)
25755 { 26221 {
25756@@ -142,15 +145,19 @@ unsigned paravirt_patch_default(u8 type, u16 clobbers, void *insnbuf, 26222@@ -141,16 +144,20 @@ unsigned paravirt_patch_default(u8 type, u16 clobbers, void *insnbuf,
26223
25757 if (opfunc == NULL) 26224 if (opfunc == NULL)
25758 /* If there's no function, patch it with a ud2a (BUG) */ 26225 /* If there's no function, patch it with a ud2a (BUG) */
25759 ret = paravirt_patch_insns(insnbuf, len, ud2a, ud2a+sizeof(ud2a)); 26226- ret = paravirt_patch_insns(insnbuf, len, ud2a, ud2a+sizeof(ud2a));
25760- else if (opfunc == _paravirt_nop) 26227- else if (opfunc == _paravirt_nop)
26228+ ret = paravirt_patch_insns(insnbuf, len, ktva_ktla(ud2a), ud2a+sizeof(ud2a));
25761+ else if (opfunc == (void *)_paravirt_nop) 26229+ else if (opfunc == (void *)_paravirt_nop)
25762 /* If the operation is a nop, then nop the callsite */ 26230 /* If the operation is a nop, then nop the callsite */
25763 ret = paravirt_patch_nop(); 26231 ret = paravirt_patch_nop();
@@ -26049,10 +26517,10 @@ index 3fb8d95..254dc51 100644
26049+} 26517+}
26050+#endif 26518+#endif
26051diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c 26519diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c
26052index 6f1236c..fd448d4 100644 26520index 0de43e9..056b840 100644
26053--- a/arch/x86/kernel/process_32.c 26521--- a/arch/x86/kernel/process_32.c
26054+++ b/arch/x86/kernel/process_32.c 26522+++ b/arch/x86/kernel/process_32.c
26055@@ -65,6 +65,7 @@ asmlinkage void ret_from_kernel_thread(void) __asm__("ret_from_kernel_thread"); 26523@@ -64,6 +64,7 @@ asmlinkage void ret_from_kernel_thread(void) __asm__("ret_from_kernel_thread");
26056 unsigned long thread_saved_pc(struct task_struct *tsk) 26524 unsigned long thread_saved_pc(struct task_struct *tsk)
26057 { 26525 {
26058 return ((unsigned long *)tsk->thread.sp)[3]; 26526 return ((unsigned long *)tsk->thread.sp)[3];
@@ -26060,7 +26528,7 @@ index 6f1236c..fd448d4 100644
26060 } 26528 }
26061 26529
26062 void __show_regs(struct pt_regs *regs, int all) 26530 void __show_regs(struct pt_regs *regs, int all)
26063@@ -74,19 +75,18 @@ void __show_regs(struct pt_regs *regs, int all) 26531@@ -73,19 +74,18 @@ void __show_regs(struct pt_regs *regs, int all)
26064 unsigned long sp; 26532 unsigned long sp;
26065 unsigned short ss, gs; 26533 unsigned short ss, gs;
26066 26534
@@ -26083,7 +26551,7 @@ index 6f1236c..fd448d4 100644
26083 print_symbol("EIP is at %s\n", regs->ip); 26551 print_symbol("EIP is at %s\n", regs->ip);
26084 26552
26085 printk(KERN_DEFAULT "EAX: %08lx EBX: %08lx ECX: %08lx EDX: %08lx\n", 26553 printk(KERN_DEFAULT "EAX: %08lx EBX: %08lx ECX: %08lx EDX: %08lx\n",
26086@@ -133,20 +133,21 @@ void release_thread(struct task_struct *dead_task) 26554@@ -132,20 +132,21 @@ void release_thread(struct task_struct *dead_task)
26087 int copy_thread(unsigned long clone_flags, unsigned long sp, 26555 int copy_thread(unsigned long clone_flags, unsigned long sp,
26088 unsigned long arg, struct task_struct *p) 26556 unsigned long arg, struct task_struct *p)
26089 { 26557 {
@@ -26109,7 +26577,7 @@ index 6f1236c..fd448d4 100644
26109 childregs->fs = __KERNEL_PERCPU; 26577 childregs->fs = __KERNEL_PERCPU;
26110 childregs->bx = sp; /* function */ 26578 childregs->bx = sp; /* function */
26111 childregs->bp = arg; 26579 childregs->bp = arg;
26112@@ -253,7 +254,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) 26580@@ -252,7 +253,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
26113 struct thread_struct *prev = &prev_p->thread, 26581 struct thread_struct *prev = &prev_p->thread,
26114 *next = &next_p->thread; 26582 *next = &next_p->thread;
26115 int cpu = smp_processor_id(); 26583 int cpu = smp_processor_id();
@@ -26118,7 +26586,7 @@ index 6f1236c..fd448d4 100644
26118 fpu_switch_t fpu; 26586 fpu_switch_t fpu;
26119 26587
26120 /* never put a printk in __switch_to... printk() calls wake_up*() indirectly */ 26588 /* never put a printk in __switch_to... printk() calls wake_up*() indirectly */
26121@@ -277,6 +278,10 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) 26589@@ -276,6 +277,10 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
26122 */ 26590 */
26123 lazy_save_gs(prev->gs); 26591 lazy_save_gs(prev->gs);
26124 26592
@@ -26129,7 +26597,7 @@ index 6f1236c..fd448d4 100644
26129 /* 26597 /*
26130 * Load the per-thread Thread-Local Storage descriptor. 26598 * Load the per-thread Thread-Local Storage descriptor.
26131 */ 26599 */
26132@@ -315,6 +320,9 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) 26600@@ -314,6 +319,9 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
26133 */ 26601 */
26134 arch_end_context_switch(next_p); 26602 arch_end_context_switch(next_p);
26135 26603
@@ -26139,7 +26607,7 @@ index 6f1236c..fd448d4 100644
26139 /* 26607 /*
26140 * Restore %gs if needed (which is common) 26608 * Restore %gs if needed (which is common)
26141 */ 26609 */
26142@@ -323,8 +331,6 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) 26610@@ -322,8 +330,6 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
26143 26611
26144 switch_fpu_finish(next_p, fpu); 26612 switch_fpu_finish(next_p, fpu);
26145 26613
@@ -26148,7 +26616,7 @@ index 6f1236c..fd448d4 100644
26148 return prev_p; 26616 return prev_p;
26149 } 26617 }
26150 26618
26151@@ -354,4 +360,3 @@ unsigned long get_wchan(struct task_struct *p) 26619@@ -353,4 +359,3 @@ unsigned long get_wchan(struct task_struct *p)
26152 } while (count++ < 16); 26620 } while (count++ < 16);
26153 return 0; 26621 return 0;
26154 } 26622 }
@@ -26509,18 +26977,10 @@ index c8e41e9..64049ef 100644
26509 /* 26977 /*
26510 * PCI ids solely used for fixups_table go here 26978 * PCI ids solely used for fixups_table go here
26511diff --git a/arch/x86/kernel/relocate_kernel_64.S b/arch/x86/kernel/relocate_kernel_64.S 26979diff --git a/arch/x86/kernel/relocate_kernel_64.S b/arch/x86/kernel/relocate_kernel_64.S
26512index 3fd2c69..16ef367 100644 26980index 3fd2c69..a444264 100644
26513--- a/arch/x86/kernel/relocate_kernel_64.S 26981--- a/arch/x86/kernel/relocate_kernel_64.S
26514+++ b/arch/x86/kernel/relocate_kernel_64.S 26982+++ b/arch/x86/kernel/relocate_kernel_64.S
26515@@ -11,6 +11,7 @@ 26983@@ -96,8 +96,7 @@ relocate_kernel:
26516 #include <asm/kexec.h>
26517 #include <asm/processor-flags.h>
26518 #include <asm/pgtable_types.h>
26519+#include <asm/alternative-asm.h>
26520
26521 /*
26522 * Must be relocatable PIC code callable as a C function
26523@@ -96,8 +97,7 @@ relocate_kernel:
26524 26984
26525 /* jump to identity mapped page */ 26985 /* jump to identity mapped page */
26526 addq $(identity_mapped - relocate_kernel), %r8 26986 addq $(identity_mapped - relocate_kernel), %r8
@@ -26530,16 +26990,8 @@ index 3fd2c69..16ef367 100644
26530 26990
26531 identity_mapped: 26991 identity_mapped:
26532 /* set return address to 0 if not preserving context */ 26992 /* set return address to 0 if not preserving context */
26533@@ -167,6 +167,7 @@ identity_mapped:
26534 xorl %r14d, %r14d
26535 xorl %r15d, %r15d
26536
26537+ pax_force_retaddr 0, 1
26538 ret
26539
26540 1:
26541diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c 26993diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
26542index cb233bc..23b4879 100644 26994index ce72964..be8aea7 100644
26543--- a/arch/x86/kernel/setup.c 26995--- a/arch/x86/kernel/setup.c
26544+++ b/arch/x86/kernel/setup.c 26996+++ b/arch/x86/kernel/setup.c
26545@@ -110,6 +110,7 @@ 26997@@ -110,6 +110,7 @@
@@ -26604,7 +27056,7 @@ index cb233bc..23b4879 100644
26604 /* Boot loader ID and version as integers, for the benefit of proc_dointvec */ 27056 /* Boot loader ID and version as integers, for the benefit of proc_dointvec */
26605 int bootloader_type, bootloader_version; 27057 int bootloader_type, bootloader_version;
26606 27058
26607@@ -768,7 +807,7 @@ static void __init trim_bios_range(void) 27059@@ -772,7 +811,7 @@ static void __init trim_bios_range(void)
26608 * area (640->1Mb) as ram even though it is not. 27060 * area (640->1Mb) as ram even though it is not.
26609 * take them out. 27061 * take them out.
26610 */ 27062 */
@@ -26613,7 +27065,7 @@ index cb233bc..23b4879 100644
26613 27065
26614 sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &e820.nr_map); 27066 sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &e820.nr_map);
26615 } 27067 }
26616@@ -776,7 +815,7 @@ static void __init trim_bios_range(void) 27068@@ -780,7 +819,7 @@ static void __init trim_bios_range(void)
26617 /* called before trim_bios_range() to spare extra sanitize */ 27069 /* called before trim_bios_range() to spare extra sanitize */
26618 static void __init e820_add_kernel_range(void) 27070 static void __init e820_add_kernel_range(void)
26619 { 27071 {
@@ -26622,7 +27074,7 @@ index cb233bc..23b4879 100644
26622 u64 size = __pa_symbol(_end) - start; 27074 u64 size = __pa_symbol(_end) - start;
26623 27075
26624 /* 27076 /*
26625@@ -838,8 +877,12 @@ static void __init trim_low_memory_range(void) 27077@@ -856,8 +895,12 @@ dump_kernel_offset(struct notifier_block *self, unsigned long v, void *p)
26626 27078
26627 void __init setup_arch(char **cmdline_p) 27079 void __init setup_arch(char **cmdline_p)
26628 { 27080 {
@@ -26635,7 +27087,7 @@ index cb233bc..23b4879 100644
26635 27087
26636 early_reserve_initrd(); 27088 early_reserve_initrd();
26637 27089
26638@@ -931,14 +974,14 @@ void __init setup_arch(char **cmdline_p) 27090@@ -947,14 +990,14 @@ void __init setup_arch(char **cmdline_p)
26639 27091
26640 if (!boot_params.hdr.root_flags) 27092 if (!boot_params.hdr.root_flags)
26641 root_mountflags &= ~MS_RDONLY; 27093 root_mountflags &= ~MS_RDONLY;
@@ -26823,7 +27275,7 @@ index 7c3a5a6..f0a8961 100644
26823 .smp_prepare_cpus = native_smp_prepare_cpus, 27275 .smp_prepare_cpus = native_smp_prepare_cpus,
26824 .smp_cpus_done = native_smp_cpus_done, 27276 .smp_cpus_done = native_smp_cpus_done,
26825diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c 27277diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
26826index 85dc05a..1241266 100644 27278index a32da80..30c97f1 100644
26827--- a/arch/x86/kernel/smpboot.c 27279--- a/arch/x86/kernel/smpboot.c
26828+++ b/arch/x86/kernel/smpboot.c 27280+++ b/arch/x86/kernel/smpboot.c
26829@@ -229,14 +229,18 @@ static void notrace start_secondary(void *unused) 27281@@ -229,14 +229,18 @@ static void notrace start_secondary(void *unused)
@@ -26851,9 +27303,12 @@ index 85dc05a..1241266 100644
26851 /* 27303 /*
26852 * Check TSC synchronization with the BP: 27304 * Check TSC synchronization with the BP:
26853 */ 27305 */
26854@@ -751,6 +755,7 @@ static int do_boot_cpu(int apicid, int cpu, struct task_struct *idle) 27306@@ -749,8 +753,9 @@ static int do_boot_cpu(int apicid, int cpu, struct task_struct *idle)
27307 alternatives_enable_smp();
27308
26855 idle->thread.sp = (unsigned long) (((struct pt_regs *) 27309 idle->thread.sp = (unsigned long) (((struct pt_regs *)
26856 (THREAD_SIZE + task_stack_page(idle))) - 1); 27310- (THREAD_SIZE + task_stack_page(idle))) - 1);
27311+ (THREAD_SIZE - 16 + task_stack_page(idle))) - 1);
26857 per_cpu(current_task, cpu) = idle; 27312 per_cpu(current_task, cpu) = idle;
26858+ per_cpu(current_tinfo, cpu) = &idle->tinfo; 27313+ per_cpu(current_tinfo, cpu) = &idle->tinfo;
26859 27314
@@ -27348,7 +27803,7 @@ index 1c113db..287b42e 100644
27348 static int trace_irq_vector_refcount; 27803 static int trace_irq_vector_refcount;
27349 static DEFINE_MUTEX(irq_vector_mutex); 27804 static DEFINE_MUTEX(irq_vector_mutex);
27350diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c 27805diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
27351index b857ed8..51ae4cb 100644 27806index 57409f6..b505597 100644
27352--- a/arch/x86/kernel/traps.c 27807--- a/arch/x86/kernel/traps.c
27353+++ b/arch/x86/kernel/traps.c 27808+++ b/arch/x86/kernel/traps.c
27354@@ -66,7 +66,7 @@ 27809@@ -66,7 +66,7 @@
@@ -27394,7 +27849,7 @@ index b857ed8..51ae4cb 100644
27394 tsk->thread.trap_nr = trapnr; 27849 tsk->thread.trap_nr = trapnr;
27395+ 27850+
27396+#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC) 27851+#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC)
27397+ if (trapnr == 12 && ((regs->cs & 0xFFFF) == __KERNEL_CS || (regs->cs & 0xFFFF) == __KERNEXEC_KERNEL_CS)) 27852+ if (trapnr == X86_TRAP_SS && ((regs->cs & 0xFFFF) == __KERNEL_CS || (regs->cs & 0xFFFF) == __KERNEXEC_KERNEL_CS))
27398+ str = "PAX: suspicious stack segment fault"; 27853+ str = "PAX: suspicious stack segment fault";
27399+#endif 27854+#endif
27400+ 27855+
@@ -27402,7 +27857,7 @@ index b857ed8..51ae4cb 100644
27402 } 27857 }
27403+ 27858+
27404+#ifdef CONFIG_PAX_REFCOUNT 27859+#ifdef CONFIG_PAX_REFCOUNT
27405+ if (trapnr == 4) 27860+ if (trapnr == X86_TRAP_OF)
27406+ pax_report_refcount_overflow(regs); 27861+ pax_report_refcount_overflow(regs);
27407+#endif 27862+#endif
27408+ 27863+
@@ -27427,7 +27882,19 @@ index b857ed8..51ae4cb 100644
27427 regs->ip, regs->sp, error_code); 27882 regs->ip, regs->sp, error_code);
27428 print_vma_addr(" in ", regs->ip); 27883 print_vma_addr(" in ", regs->ip);
27429 pr_cont("\n"); 27884 pr_cont("\n");
27430@@ -277,7 +289,7 @@ do_general_protection(struct pt_regs *regs, long error_code) 27885@@ -251,6 +263,11 @@ dotraplinkage void do_double_fault(struct pt_regs *regs, long error_code)
27886 tsk->thread.error_code = error_code;
27887 tsk->thread.trap_nr = X86_TRAP_DF;
27888
27889+#ifdef CONFIG_GRKERNSEC_KSTACKOVERFLOW
27890+ if ((unsigned long)tsk->stack - regs->sp <= PAGE_SIZE)
27891+ die("grsec: kernel stack overflow detected", regs, error_code);
27892+#endif
27893+
27894 #ifdef CONFIG_DOUBLEFAULT
27895 df_debug(regs, error_code);
27896 #endif
27897@@ -273,7 +290,7 @@ do_general_protection(struct pt_regs *regs, long error_code)
27431 conditional_sti(regs); 27898 conditional_sti(regs);
27432 27899
27433 #ifdef CONFIG_X86_32 27900 #ifdef CONFIG_X86_32
@@ -27436,7 +27903,7 @@ index b857ed8..51ae4cb 100644
27436 local_irq_enable(); 27903 local_irq_enable();
27437 handle_vm86_fault((struct kernel_vm86_regs *) regs, error_code); 27904 handle_vm86_fault((struct kernel_vm86_regs *) regs, error_code);
27438 goto exit; 27905 goto exit;
27439@@ -285,18 +297,42 @@ do_general_protection(struct pt_regs *regs, long error_code) 27906@@ -281,18 +298,42 @@ do_general_protection(struct pt_regs *regs, long error_code)
27440 #endif 27907 #endif
27441 27908
27442 tsk = current; 27909 tsk = current;
@@ -27481,7 +27948,7 @@ index b857ed8..51ae4cb 100644
27481 tsk->thread.error_code = error_code; 27948 tsk->thread.error_code = error_code;
27482 tsk->thread.trap_nr = X86_TRAP_GP; 27949 tsk->thread.trap_nr = X86_TRAP_GP;
27483 27950
27484@@ -457,7 +493,7 @@ dotraplinkage void __kprobes do_debug(struct pt_regs *regs, long error_code) 27951@@ -453,7 +494,7 @@ dotraplinkage void __kprobes do_debug(struct pt_regs *regs, long error_code)
27485 /* It's safe to allow irq's after DR6 has been saved */ 27952 /* It's safe to allow irq's after DR6 has been saved */
27486 preempt_conditional_sti(regs); 27953 preempt_conditional_sti(regs);
27487 27954
@@ -27490,7 +27957,7 @@ index b857ed8..51ae4cb 100644
27490 handle_vm86_trap((struct kernel_vm86_regs *) regs, error_code, 27957 handle_vm86_trap((struct kernel_vm86_regs *) regs, error_code,
27491 X86_TRAP_DB); 27958 X86_TRAP_DB);
27492 preempt_conditional_cli(regs); 27959 preempt_conditional_cli(regs);
27493@@ -472,7 +508,7 @@ dotraplinkage void __kprobes do_debug(struct pt_regs *regs, long error_code) 27960@@ -468,7 +509,7 @@ dotraplinkage void __kprobes do_debug(struct pt_regs *regs, long error_code)
27494 * We already checked v86 mode above, so we can check for kernel mode 27961 * We already checked v86 mode above, so we can check for kernel mode
27495 * by just checking the CPL of CS. 27962 * by just checking the CPL of CS.
27496 */ 27963 */
@@ -27499,7 +27966,7 @@ index b857ed8..51ae4cb 100644
27499 tsk->thread.debugreg6 &= ~DR_STEP; 27966 tsk->thread.debugreg6 &= ~DR_STEP;
27500 set_tsk_thread_flag(tsk, TIF_SINGLESTEP); 27967 set_tsk_thread_flag(tsk, TIF_SINGLESTEP);
27501 regs->flags &= ~X86_EFLAGS_TF; 27968 regs->flags &= ~X86_EFLAGS_TF;
27502@@ -504,7 +540,7 @@ void math_error(struct pt_regs *regs, int error_code, int trapnr) 27969@@ -500,7 +541,7 @@ void math_error(struct pt_regs *regs, int error_code, int trapnr)
27503 return; 27970 return;
27504 conditional_sti(regs); 27971 conditional_sti(regs);
27505 27972
@@ -27508,6 +27975,19 @@ index b857ed8..51ae4cb 100644
27508 { 27975 {
27509 if (!fixup_exception(regs)) { 27976 if (!fixup_exception(regs)) {
27510 task->thread.error_code = error_code; 27977 task->thread.error_code = error_code;
27978diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c
27979index cfbe99f..a6e8fa7 100644
27980--- a/arch/x86/kernel/tsc.c
27981+++ b/arch/x86/kernel/tsc.c
27982@@ -150,7 +150,7 @@ static void cyc2ns_write_end(int cpu, struct cyc2ns_data *data)
27983 */
27984 smp_wmb();
27985
27986- ACCESS_ONCE(c2n->head) = data;
27987+ ACCESS_ONCE_RW(c2n->head) = data;
27988 }
27989
27990 /*
27511diff --git a/arch/x86/kernel/uprobes.c b/arch/x86/kernel/uprobes.c 27991diff --git a/arch/x86/kernel/uprobes.c b/arch/x86/kernel/uprobes.c
27512index 2ed8459..7cf329f 100644 27992index 2ed8459..7cf329f 100644
27513--- a/arch/x86/kernel/uprobes.c 27993--- a/arch/x86/kernel/uprobes.c
@@ -27875,7 +28355,7 @@ index da6b35a..977e9cf 100644
27875 28355
27876 #ifdef CONFIG_SMP 28356 #ifdef CONFIG_SMP
27877diff --git a/arch/x86/kernel/vsyscall_64.c b/arch/x86/kernel/vsyscall_64.c 28357diff --git a/arch/x86/kernel/vsyscall_64.c b/arch/x86/kernel/vsyscall_64.c
27878index 1f96f93..d5c8f7a 100644 28358index 1f96f93..6f29be7 100644
27879--- a/arch/x86/kernel/vsyscall_64.c 28359--- a/arch/x86/kernel/vsyscall_64.c
27880+++ b/arch/x86/kernel/vsyscall_64.c 28360+++ b/arch/x86/kernel/vsyscall_64.c
27881@@ -56,15 +56,13 @@ 28361@@ -56,15 +56,13 @@
@@ -27895,6 +28375,15 @@ index 1f96f93..d5c8f7a 100644
27895 else if (!strcmp("none", str)) 28375 else if (!strcmp("none", str))
27896 vsyscall_mode = NONE; 28376 vsyscall_mode = NONE;
27897 else 28377 else
28378@@ -101,7 +99,7 @@ void update_vsyscall(struct timekeeper *tk)
28379 vdata->monotonic_time_sec = tk->xtime_sec
28380 + tk->wall_to_monotonic.tv_sec;
28381 vdata->monotonic_time_snsec = tk->xtime_nsec
28382- + (tk->wall_to_monotonic.tv_nsec
28383+ + ((u64)tk->wall_to_monotonic.tv_nsec
28384 << tk->shift);
28385 while (vdata->monotonic_time_snsec >=
28386 (((u64)NSEC_PER_SEC) << tk->shift)) {
27898@@ -323,8 +321,7 @@ do_ret: 28387@@ -323,8 +321,7 @@ do_ret:
27899 return true; 28388 return true;
27900 28389
@@ -27939,7 +28428,7 @@ index 04068192..4d75aa6 100644
27939+EXPORT_SYMBOL(cpu_pgd); 28428+EXPORT_SYMBOL(cpu_pgd);
27940+#endif 28429+#endif
27941diff --git a/arch/x86/kernel/x86_init.c b/arch/x86/kernel/x86_init.c 28430diff --git a/arch/x86/kernel/x86_init.c b/arch/x86/kernel/x86_init.c
27942index 021783b..6511282 100644 28431index e48b674..a451dd9 100644
27943--- a/arch/x86/kernel/x86_init.c 28432--- a/arch/x86/kernel/x86_init.c
27944+++ b/arch/x86/kernel/x86_init.c 28433+++ b/arch/x86/kernel/x86_init.c
27945@@ -93,7 +93,7 @@ struct x86_cpuinit_ops x86_cpuinit = { 28434@@ -93,7 +93,7 @@ struct x86_cpuinit_ops x86_cpuinit = {
@@ -27970,7 +28459,7 @@ index 021783b..6511282 100644
27970 .read = native_io_apic_read, 28459 .read = native_io_apic_read,
27971 .write = native_io_apic_write, 28460 .write = native_io_apic_write,
27972diff --git a/arch/x86/kernel/xsave.c b/arch/x86/kernel/xsave.c 28461diff --git a/arch/x86/kernel/xsave.c b/arch/x86/kernel/xsave.c
27973index 422fd82..b2d262e 100644 28462index a4b451c..8dfe1ad 100644
27974--- a/arch/x86/kernel/xsave.c 28463--- a/arch/x86/kernel/xsave.c
27975+++ b/arch/x86/kernel/xsave.c 28464+++ b/arch/x86/kernel/xsave.c
27976@@ -164,18 +164,18 @@ static inline int save_xstate_epilog(void __user *buf, int ia32_frame) 28465@@ -164,18 +164,18 @@ static inline int save_xstate_epilog(void __user *buf, int ia32_frame)
@@ -28072,7 +28561,7 @@ index c697625..a032162 100644
28072 28561
28073 out: 28562 out:
28074diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c 28563diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c
28075index d86ff15..e77b023 100644 28564index 9736529..ab4f54c 100644
28076--- a/arch/x86/kvm/lapic.c 28565--- a/arch/x86/kvm/lapic.c
28077+++ b/arch/x86/kvm/lapic.c 28566+++ b/arch/x86/kvm/lapic.c
28078@@ -55,7 +55,7 @@ 28567@@ -55,7 +55,7 @@
@@ -28085,7 +28574,7 @@ index d86ff15..e77b023 100644
28085 #define APIC_LVT_NUM 6 28574 #define APIC_LVT_NUM 6
28086 /* 14 is the version for Xeon and Pentium 8.4.8*/ 28575 /* 14 is the version for Xeon and Pentium 8.4.8*/
28087diff --git a/arch/x86/kvm/paging_tmpl.h b/arch/x86/kvm/paging_tmpl.h 28576diff --git a/arch/x86/kvm/paging_tmpl.h b/arch/x86/kvm/paging_tmpl.h
28088index ad75d77..a679d32 100644 28577index cba218a..1cc1bed 100644
28089--- a/arch/x86/kvm/paging_tmpl.h 28578--- a/arch/x86/kvm/paging_tmpl.h
28090+++ b/arch/x86/kvm/paging_tmpl.h 28579+++ b/arch/x86/kvm/paging_tmpl.h
28091@@ -331,7 +331,7 @@ retry_walk: 28580@@ -331,7 +331,7 @@ retry_walk:
@@ -28098,10 +28587,10 @@ index ad75d77..a679d32 100644
28098 goto error; 28587 goto error;
28099 walker->ptep_user[walker->level - 1] = ptep_user; 28588 walker->ptep_user[walker->level - 1] = ptep_user;
28100diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c 28589diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
28101index 532add1..59eb241 100644 28590index 2de1bc0..22251ee 100644
28102--- a/arch/x86/kvm/svm.c 28591--- a/arch/x86/kvm/svm.c
28103+++ b/arch/x86/kvm/svm.c 28592+++ b/arch/x86/kvm/svm.c
28104@@ -3495,7 +3495,11 @@ static void reload_tss(struct kvm_vcpu *vcpu) 28593@@ -3508,7 +3508,11 @@ static void reload_tss(struct kvm_vcpu *vcpu)
28105 int cpu = raw_smp_processor_id(); 28594 int cpu = raw_smp_processor_id();
28106 28595
28107 struct svm_cpu_data *sd = per_cpu(svm_data, cpu); 28596 struct svm_cpu_data *sd = per_cpu(svm_data, cpu);
@@ -28113,7 +28602,7 @@ index 532add1..59eb241 100644
28113 load_TR_desc(); 28602 load_TR_desc();
28114 } 28603 }
28115 28604
28116@@ -3898,6 +3902,10 @@ static void svm_vcpu_run(struct kvm_vcpu *vcpu) 28605@@ -3911,6 +3915,10 @@ static void svm_vcpu_run(struct kvm_vcpu *vcpu)
28117 #endif 28606 #endif
28118 #endif 28607 #endif
28119 28608
@@ -28125,10 +28614,10 @@ index 532add1..59eb241 100644
28125 28614
28126 local_irq_disable(); 28615 local_irq_disable();
28127diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c 28616diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
28128index dcc4de3..6bf73f4 100644 28617index 3927528..fc19971 100644
28129--- a/arch/x86/kvm/vmx.c 28618--- a/arch/x86/kvm/vmx.c
28130+++ b/arch/x86/kvm/vmx.c 28619+++ b/arch/x86/kvm/vmx.c
28131@@ -1316,12 +1316,12 @@ static void vmcs_write64(unsigned long field, u64 value) 28620@@ -1320,12 +1320,12 @@ static void vmcs_write64(unsigned long field, u64 value)
28132 #endif 28621 #endif
28133 } 28622 }
28134 28623
@@ -28143,7 +28632,7 @@ index dcc4de3..6bf73f4 100644
28143 { 28632 {
28144 vmcs_writel(field, vmcs_readl(field) | mask); 28633 vmcs_writel(field, vmcs_readl(field) | mask);
28145 } 28634 }
28146@@ -1522,7 +1522,11 @@ static void reload_tss(void) 28635@@ -1585,7 +1585,11 @@ static void reload_tss(void)
28147 struct desc_struct *descs; 28636 struct desc_struct *descs;
28148 28637
28149 descs = (void *)gdt->address; 28638 descs = (void *)gdt->address;
@@ -28155,7 +28644,7 @@ index dcc4de3..6bf73f4 100644
28155 load_TR_desc(); 28644 load_TR_desc();
28156 } 28645 }
28157 28646
28158@@ -1746,6 +1750,10 @@ static void vmx_vcpu_load(struct kvm_vcpu *vcpu, int cpu) 28647@@ -1809,6 +1813,10 @@ static void vmx_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
28159 vmcs_writel(HOST_TR_BASE, kvm_read_tr_base()); /* 22.2.4 */ 28648 vmcs_writel(HOST_TR_BASE, kvm_read_tr_base()); /* 22.2.4 */
28160 vmcs_writel(HOST_GDTR_BASE, gdt->address); /* 22.2.4 */ 28649 vmcs_writel(HOST_GDTR_BASE, gdt->address); /* 22.2.4 */
28161 28650
@@ -28166,7 +28655,7 @@ index dcc4de3..6bf73f4 100644
28166 rdmsrl(MSR_IA32_SYSENTER_ESP, sysenter_esp); 28655 rdmsrl(MSR_IA32_SYSENTER_ESP, sysenter_esp);
28167 vmcs_writel(HOST_IA32_SYSENTER_ESP, sysenter_esp); /* 22.2.3 */ 28656 vmcs_writel(HOST_IA32_SYSENTER_ESP, sysenter_esp); /* 22.2.3 */
28168 vmx->loaded_vmcs->cpu = cpu; 28657 vmx->loaded_vmcs->cpu = cpu;
28169@@ -2033,7 +2041,7 @@ static void setup_msrs(struct vcpu_vmx *vmx) 28658@@ -2098,7 +2106,7 @@ static void setup_msrs(struct vcpu_vmx *vmx)
28170 * reads and returns guest's timestamp counter "register" 28659 * reads and returns guest's timestamp counter "register"
28171 * guest_tsc = host_tsc + tsc_offset -- 21.3 28660 * guest_tsc = host_tsc + tsc_offset -- 21.3
28172 */ 28661 */
@@ -28175,7 +28664,7 @@ index dcc4de3..6bf73f4 100644
28175 { 28664 {
28176 u64 host_tsc, tsc_offset; 28665 u64 host_tsc, tsc_offset;
28177 28666
28178@@ -2987,8 +2995,11 @@ static __init int hardware_setup(void) 28667@@ -3024,8 +3032,11 @@ static __init int hardware_setup(void)
28179 if (!cpu_has_vmx_flexpriority()) 28668 if (!cpu_has_vmx_flexpriority())
28180 flexpriority_enabled = 0; 28669 flexpriority_enabled = 0;
28181 28670
@@ -28189,7 +28678,7 @@ index dcc4de3..6bf73f4 100644
28189 28678
28190 if (enable_ept && !cpu_has_vmx_ept_2m_page()) 28679 if (enable_ept && !cpu_has_vmx_ept_2m_page())
28191 kvm_disable_largepages(); 28680 kvm_disable_largepages();
28192@@ -2999,13 +3010,15 @@ static __init int hardware_setup(void) 28681@@ -3036,13 +3047,15 @@ static __init int hardware_setup(void)
28193 if (!cpu_has_vmx_apicv()) 28682 if (!cpu_has_vmx_apicv())
28194 enable_apicv = 0; 28683 enable_apicv = 0;
28195 28684
@@ -28209,7 +28698,7 @@ index dcc4de3..6bf73f4 100644
28209 28698
28210 if (nested) 28699 if (nested)
28211 nested_vmx_setup_ctls_msrs(); 28700 nested_vmx_setup_ctls_msrs();
28212@@ -4134,7 +4147,10 @@ static void vmx_set_constant_host_state(struct vcpu_vmx *vmx) 28701@@ -4165,7 +4178,10 @@ static void vmx_set_constant_host_state(struct vcpu_vmx *vmx)
28213 28702
28214 vmcs_writel(HOST_CR0, read_cr0() & ~X86_CR0_TS); /* 22.2.3 */ 28703 vmcs_writel(HOST_CR0, read_cr0() & ~X86_CR0_TS); /* 22.2.3 */
28215 vmcs_writel(HOST_CR4, read_cr4()); /* 22.2.3, 22.2.5 */ 28704 vmcs_writel(HOST_CR4, read_cr4()); /* 22.2.3, 22.2.5 */
@@ -28220,7 +28709,7 @@ index dcc4de3..6bf73f4 100644
28220 28709
28221 vmcs_write16(HOST_CS_SELECTOR, __KERNEL_CS); /* 22.2.4 */ 28710 vmcs_write16(HOST_CS_SELECTOR, __KERNEL_CS); /* 22.2.4 */
28222 #ifdef CONFIG_X86_64 28711 #ifdef CONFIG_X86_64
28223@@ -4156,7 +4172,7 @@ static void vmx_set_constant_host_state(struct vcpu_vmx *vmx) 28712@@ -4187,7 +4203,7 @@ static void vmx_set_constant_host_state(struct vcpu_vmx *vmx)
28224 vmcs_writel(HOST_IDTR_BASE, dt.address); /* 22.2.4 */ 28713 vmcs_writel(HOST_IDTR_BASE, dt.address); /* 22.2.4 */
28225 vmx->host_idt_base = dt.address; 28714 vmx->host_idt_base = dt.address;
28226 28715
@@ -28229,7 +28718,7 @@ index dcc4de3..6bf73f4 100644
28229 28718
28230 rdmsr(MSR_IA32_SYSENTER_CS, low32, high32); 28719 rdmsr(MSR_IA32_SYSENTER_CS, low32, high32);
28231 vmcs_write32(HOST_IA32_SYSENTER_CS, low32); 28720 vmcs_write32(HOST_IA32_SYSENTER_CS, low32);
28232@@ -7219,6 +7235,12 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu) 28721@@ -7265,6 +7281,12 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
28233 "jmp 2f \n\t" 28722 "jmp 2f \n\t"
28234 "1: " __ex(ASM_VMX_VMRESUME) "\n\t" 28723 "1: " __ex(ASM_VMX_VMRESUME) "\n\t"
28235 "2: " 28724 "2: "
@@ -28242,7 +28731,7 @@ index dcc4de3..6bf73f4 100644
28242 /* Save guest registers, load host registers, keep flags */ 28731 /* Save guest registers, load host registers, keep flags */
28243 "mov %0, %c[wordsize](%%" _ASM_SP ") \n\t" 28732 "mov %0, %c[wordsize](%%" _ASM_SP ") \n\t"
28244 "pop %0 \n\t" 28733 "pop %0 \n\t"
28245@@ -7271,6 +7293,11 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu) 28734@@ -7317,6 +7339,11 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
28246 #endif 28735 #endif
28247 [cr2]"i"(offsetof(struct vcpu_vmx, vcpu.arch.cr2)), 28736 [cr2]"i"(offsetof(struct vcpu_vmx, vcpu.arch.cr2)),
28248 [wordsize]"i"(sizeof(ulong)) 28737 [wordsize]"i"(sizeof(ulong))
@@ -28254,7 +28743,7 @@ index dcc4de3..6bf73f4 100644
28254 : "cc", "memory" 28743 : "cc", "memory"
28255 #ifdef CONFIG_X86_64 28744 #ifdef CONFIG_X86_64
28256 , "rax", "rbx", "rdi", "rsi" 28745 , "rax", "rbx", "rdi", "rsi"
28257@@ -7284,7 +7311,7 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu) 28746@@ -7330,7 +7357,7 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
28258 if (debugctlmsr) 28747 if (debugctlmsr)
28259 update_debugctlmsr(debugctlmsr); 28748 update_debugctlmsr(debugctlmsr);
28260 28749
@@ -28263,7 +28752,7 @@ index dcc4de3..6bf73f4 100644
28263 /* 28752 /*
28264 * The sysexit path does not restore ds/es, so we must set them to 28753 * The sysexit path does not restore ds/es, so we must set them to
28265 * a reasonable value ourselves. 28754 * a reasonable value ourselves.
28266@@ -7293,8 +7320,18 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu) 28755@@ -7339,8 +7366,18 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
28267 * may be executed in interrupt context, which saves and restore segments 28756 * may be executed in interrupt context, which saves and restore segments
28268 * around it, nullifying its effect. 28757 * around it, nullifying its effect.
28269 */ 28758 */
@@ -28285,10 +28774,10 @@ index dcc4de3..6bf73f4 100644
28285 28774
28286 vcpu->arch.regs_avail = ~((1 << VCPU_REGS_RIP) | (1 << VCPU_REGS_RSP) 28775 vcpu->arch.regs_avail = ~((1 << VCPU_REGS_RIP) | (1 << VCPU_REGS_RSP)
28287diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c 28776diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
28288index 4e33b85..fa94855 100644 28777index ee0c3b5..773bb94 100644
28289--- a/arch/x86/kvm/x86.c 28778--- a/arch/x86/kvm/x86.c
28290+++ b/arch/x86/kvm/x86.c 28779+++ b/arch/x86/kvm/x86.c
28291@@ -1791,8 +1791,8 @@ static int xen_hvm_config(struct kvm_vcpu *vcpu, u64 data) 28780@@ -1776,8 +1776,8 @@ static int xen_hvm_config(struct kvm_vcpu *vcpu, u64 data)
28292 { 28781 {
28293 struct kvm *kvm = vcpu->kvm; 28782 struct kvm *kvm = vcpu->kvm;
28294 int lm = is_long_mode(vcpu); 28783 int lm = is_long_mode(vcpu);
@@ -28299,7 +28788,7 @@ index 4e33b85..fa94855 100644
28299 u8 blob_size = lm ? kvm->arch.xen_hvm_config.blob_size_64 28788 u8 blob_size = lm ? kvm->arch.xen_hvm_config.blob_size_64
28300 : kvm->arch.xen_hvm_config.blob_size_32; 28789 : kvm->arch.xen_hvm_config.blob_size_32;
28301 u32 page_num = data & ~PAGE_MASK; 28790 u32 page_num = data & ~PAGE_MASK;
28302@@ -2676,6 +2676,8 @@ long kvm_arch_dev_ioctl(struct file *filp, 28791@@ -2688,6 +2688,8 @@ long kvm_arch_dev_ioctl(struct file *filp,
28303 if (n < msr_list.nmsrs) 28792 if (n < msr_list.nmsrs)
28304 goto out; 28793 goto out;
28305 r = -EFAULT; 28794 r = -EFAULT;
@@ -28308,7 +28797,7 @@ index 4e33b85..fa94855 100644
28308 if (copy_to_user(user_msr_list->indices, &msrs_to_save, 28797 if (copy_to_user(user_msr_list->indices, &msrs_to_save,
28309 num_msrs_to_save * sizeof(u32))) 28798 num_msrs_to_save * sizeof(u32)))
28310 goto out; 28799 goto out;
28311@@ -5485,7 +5487,7 @@ static struct notifier_block pvclock_gtod_notifier = { 28800@@ -5502,7 +5504,7 @@ static struct notifier_block pvclock_gtod_notifier = {
28312 }; 28801 };
28313 #endif 28802 #endif
28314 28803
@@ -28318,7 +28807,7 @@ index 4e33b85..fa94855 100644
28318 int r; 28807 int r;
28319 struct kvm_x86_ops *ops = opaque; 28808 struct kvm_x86_ops *ops = opaque;
28320diff --git a/arch/x86/lguest/boot.c b/arch/x86/lguest/boot.c 28809diff --git a/arch/x86/lguest/boot.c b/arch/x86/lguest/boot.c
28321index bdf8532..f63c587 100644 28810index ad1fb5f..fe30b66 100644
28322--- a/arch/x86/lguest/boot.c 28811--- a/arch/x86/lguest/boot.c
28323+++ b/arch/x86/lguest/boot.c 28812+++ b/arch/x86/lguest/boot.c
28324@@ -1206,9 +1206,10 @@ static __init int early_put_chars(u32 vtermno, const char *buf, int count) 28813@@ -1206,9 +1206,10 @@ static __init int early_put_chars(u32 vtermno, const char *buf, int count)
@@ -29203,7 +29692,7 @@ index 176cca6..e0d658e 100644
29203 .byte (copy_page_rep - copy_page) - (2f - 1b) /* offset */ 29692 .byte (copy_page_rep - copy_page) - (2f - 1b) /* offset */
29204 2: 29693 2:
29205diff --git a/arch/x86/lib/copy_user_64.S b/arch/x86/lib/copy_user_64.S 29694diff --git a/arch/x86/lib/copy_user_64.S b/arch/x86/lib/copy_user_64.S
29206index a30ca15..407412b 100644 29695index dee945d..a84067b 100644
29207--- a/arch/x86/lib/copy_user_64.S 29696--- a/arch/x86/lib/copy_user_64.S
29208+++ b/arch/x86/lib/copy_user_64.S 29697+++ b/arch/x86/lib/copy_user_64.S
29209@@ -18,31 +18,7 @@ 29698@@ -18,31 +18,7 @@
@@ -29315,28 +29804,27 @@ index a30ca15..407412b 100644
29315 CFI_STARTPROC 29804 CFI_STARTPROC
29316+ ASM_PAX_OPEN_USERLAND 29805+ ASM_PAX_OPEN_USERLAND
29317 ASM_STAC 29806 ASM_STAC
29318 andl %edx,%edx 29807 cmpl $8,%edx
29319 jz 4f 29808 jb 2f /* less than 8 bytes, go to byte copy loop */
29320@@ -251,6 +185,8 @@ ENTRY(copy_user_generic_string) 29809@@ -249,6 +183,8 @@ ENTRY(copy_user_generic_string)
29321 movsb 29810 movsb
29322 4: xorl %eax,%eax 29811 xorl %eax,%eax
29323 ASM_CLAC 29812 ASM_CLAC
29324+ ASM_PAX_CLOSE_USERLAND 29813+ ASM_PAX_CLOSE_USERLAND
29325+ pax_force_retaddr 29814+ pax_force_retaddr
29326 ret 29815 ret
29327 29816
29328 .section .fixup,"ax" 29817 .section .fixup,"ax"
29329@@ -278,6 +214,7 @@ ENDPROC(copy_user_generic_string) 29818@@ -276,12 +212,15 @@ ENDPROC(copy_user_generic_string)
29330 */ 29819 */
29331 ENTRY(copy_user_enhanced_fast_string) 29820 ENTRY(copy_user_enhanced_fast_string)
29332 CFI_STARTPROC 29821 CFI_STARTPROC
29333+ ASM_PAX_OPEN_USERLAND 29822+ ASM_PAX_OPEN_USERLAND
29334 ASM_STAC 29823 ASM_STAC
29335 andl %edx,%edx 29824 movl %edx,%ecx
29336 jz 2f 29825 1: rep
29337@@ -286,6 +223,8 @@ ENTRY(copy_user_enhanced_fast_string)
29338 movsb 29826 movsb
29339 2: xorl %eax,%eax 29827 xorl %eax,%eax
29340 ASM_CLAC 29828 ASM_CLAC
29341+ ASM_PAX_CLOSE_USERLAND 29829+ ASM_PAX_CLOSE_USERLAND
29342+ pax_force_retaddr 29830+ pax_force_retaddr
@@ -31180,7 +31668,7 @@ index 903ec1e..c4166b2 100644
31180 } 31668 }
31181 31669
31182diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c 31670diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
31183index 6dea040..31e52ff 100644 31671index a10c8c7..35a5abb 100644
31184--- a/arch/x86/mm/fault.c 31672--- a/arch/x86/mm/fault.c
31185+++ b/arch/x86/mm/fault.c 31673+++ b/arch/x86/mm/fault.c
31186@@ -14,11 +14,18 @@ 31674@@ -14,11 +14,18 @@
@@ -31553,9 +32041,9 @@ index 6dea040..31e52ff 100644
31553 return false; 32041 return false;
31554 32042
31555 return true; 32043 return true;
31556@@ -1037,6 +1245,22 @@ __do_page_fault(struct pt_regs *regs, unsigned long error_code) 32044@@ -1038,6 +1246,22 @@ __do_page_fault(struct pt_regs *regs, unsigned long error_code,
31557 /* Get the faulting address: */ 32045 tsk = current;
31558 address = read_cr2(); 32046 mm = tsk->mm;
31559 32047
31560+#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF) 32048+#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
31561+ if (!user_mode(regs) && address < 2 * pax_user_shadow_base) { 32049+ if (!user_mode(regs) && address < 2 * pax_user_shadow_base) {
@@ -31576,7 +32064,7 @@ index 6dea040..31e52ff 100644
31576 /* 32064 /*
31577 * Detect and handle instructions that would cause a page fault for 32065 * Detect and handle instructions that would cause a page fault for
31578 * both a tracked kernel page and a userspace page. 32066 * both a tracked kernel page and a userspace page.
31579@@ -1114,7 +1338,7 @@ __do_page_fault(struct pt_regs *regs, unsigned long error_code) 32067@@ -1115,7 +1339,7 @@ __do_page_fault(struct pt_regs *regs, unsigned long error_code,
31580 * User-mode registers count as a user access even for any 32068 * User-mode registers count as a user access even for any
31581 * potential system fault or CPU buglet: 32069 * potential system fault or CPU buglet:
31582 */ 32070 */
@@ -31585,7 +32073,7 @@ index 6dea040..31e52ff 100644
31585 local_irq_enable(); 32073 local_irq_enable();
31586 error_code |= PF_USER; 32074 error_code |= PF_USER;
31587 flags |= FAULT_FLAG_USER; 32075 flags |= FAULT_FLAG_USER;
31588@@ -1161,6 +1385,11 @@ retry: 32076@@ -1162,6 +1386,11 @@ retry:
31589 might_sleep(); 32077 might_sleep();
31590 } 32078 }
31591 32079
@@ -31597,7 +32085,7 @@ index 6dea040..31e52ff 100644
31597 vma = find_vma(mm, address); 32085 vma = find_vma(mm, address);
31598 if (unlikely(!vma)) { 32086 if (unlikely(!vma)) {
31599 bad_area(regs, error_code, address); 32087 bad_area(regs, error_code, address);
31600@@ -1172,18 +1401,24 @@ retry: 32088@@ -1173,18 +1402,24 @@ retry:
31601 bad_area(regs, error_code, address); 32089 bad_area(regs, error_code, address);
31602 return; 32090 return;
31603 } 32091 }
@@ -31633,10 +32121,10 @@ index 6dea040..31e52ff 100644
31633 if (unlikely(expand_stack(vma, address))) { 32121 if (unlikely(expand_stack(vma, address))) {
31634 bad_area(regs, error_code, address); 32122 bad_area(regs, error_code, address);
31635 return; 32123 return;
31636@@ -1277,3 +1512,292 @@ trace_do_page_fault(struct pt_regs *regs, unsigned long error_code) 32124@@ -1296,3 +1531,292 @@ trace_do_page_fault(struct pt_regs *regs, unsigned long error_code)
31637 __do_page_fault(regs, error_code);
31638 exception_exit(prev_state); 32125 exception_exit(prev_state);
31639 } 32126 }
32127 #endif /* CONFIG_TRACING */
31640+ 32128+
31641+#if defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC) 32129+#if defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC)
31642+static bool pax_is_fetch_fault(struct pt_regs *regs, unsigned long error_code, unsigned long address) 32130+static bool pax_is_fetch_fault(struct pt_regs *regs, unsigned long error_code, unsigned long address)
@@ -31927,7 +32415,7 @@ index 6dea040..31e52ff 100644
31927+ return ret ? -EFAULT : 0; 32415+ return ret ? -EFAULT : 0;
31928+} 32416+}
31929diff --git a/arch/x86/mm/gup.c b/arch/x86/mm/gup.c 32417diff --git a/arch/x86/mm/gup.c b/arch/x86/mm/gup.c
31930index 0596e8e..5626789 100644 32418index 207d9aef..69030980 100644
31931--- a/arch/x86/mm/gup.c 32419--- a/arch/x86/mm/gup.c
31932+++ b/arch/x86/mm/gup.c 32420+++ b/arch/x86/mm/gup.c
31933@@ -268,7 +268,7 @@ int __get_user_pages_fast(unsigned long start, int nr_pages, int write, 32421@@ -268,7 +268,7 @@ int __get_user_pages_fast(unsigned long start, int nr_pages, int write,
@@ -31967,11 +32455,11 @@ index 4500142..53a363c 100644
31967 32455
31968 return (void *)vaddr; 32456 return (void *)vaddr;
31969diff --git a/arch/x86/mm/hugetlbpage.c b/arch/x86/mm/hugetlbpage.c 32457diff --git a/arch/x86/mm/hugetlbpage.c b/arch/x86/mm/hugetlbpage.c
31970index 9d980d8..6bbfacb 100644 32458index 8c9f647..57cb402 100644
31971--- a/arch/x86/mm/hugetlbpage.c 32459--- a/arch/x86/mm/hugetlbpage.c
31972+++ b/arch/x86/mm/hugetlbpage.c 32460+++ b/arch/x86/mm/hugetlbpage.c
31973@@ -92,23 +92,30 @@ int pmd_huge_support(void) 32461@@ -90,23 +90,24 @@ int pmd_huge_support(void)
31974 #ifdef HAVE_ARCH_HUGETLB_UNMAPPED_AREA 32462 #ifdef CONFIG_HUGETLB_PAGE
31975 static unsigned long hugetlb_get_unmapped_area_bottomup(struct file *file, 32463 static unsigned long hugetlb_get_unmapped_area_bottomup(struct file *file,
31976 unsigned long addr, unsigned long len, 32464 unsigned long addr, unsigned long len,
31977- unsigned long pgoff, unsigned long flags) 32465- unsigned long pgoff, unsigned long flags)
@@ -31983,13 +32471,7 @@ index 9d980d8..6bbfacb 100644
31983+ 32471+
31984 info.flags = 0; 32472 info.flags = 0;
31985 info.length = len; 32473 info.length = len;
31986 info.low_limit = TASK_UNMAPPED_BASE; 32474 info.low_limit = current->mm->mmap_legacy_base;
31987+
31988+#ifdef CONFIG_PAX_RANDMMAP
31989+ if (current->mm->pax_flags & MF_PAX_RANDMMAP)
31990+ info.low_limit += current->mm->delta_mmap;
31991+#endif
31992+
31993 info.high_limit = TASK_SIZE; 32475 info.high_limit = TASK_SIZE;
31994 info.align_mask = PAGE_MASK & ~huge_page_mask(h); 32476 info.align_mask = PAGE_MASK & ~huge_page_mask(h);
31995 info.align_offset = 0; 32477 info.align_offset = 0;
@@ -32004,7 +32486,7 @@ index 9d980d8..6bbfacb 100644
32004 { 32486 {
32005 struct hstate *h = hstate_file(file); 32487 struct hstate *h = hstate_file(file);
32006 struct vm_unmapped_area_info info; 32488 struct vm_unmapped_area_info info;
32007@@ -120,6 +127,7 @@ static unsigned long hugetlb_get_unmapped_area_topdown(struct file *file, 32489@@ -118,6 +119,7 @@ static unsigned long hugetlb_get_unmapped_area_topdown(struct file *file,
32008 info.high_limit = current->mm->mmap_base; 32490 info.high_limit = current->mm->mmap_base;
32009 info.align_mask = PAGE_MASK & ~huge_page_mask(h); 32491 info.align_mask = PAGE_MASK & ~huge_page_mask(h);
32010 info.align_offset = 0; 32492 info.align_offset = 0;
@@ -32012,7 +32494,7 @@ index 9d980d8..6bbfacb 100644
32012 addr = vm_unmapped_area(&info); 32494 addr = vm_unmapped_area(&info);
32013 32495
32014 /* 32496 /*
32015@@ -132,6 +140,12 @@ static unsigned long hugetlb_get_unmapped_area_topdown(struct file *file, 32497@@ -130,6 +132,12 @@ static unsigned long hugetlb_get_unmapped_area_topdown(struct file *file,
32016 VM_BUG_ON(addr != -ENOMEM); 32498 VM_BUG_ON(addr != -ENOMEM);
32017 info.flags = 0; 32499 info.flags = 0;
32018 info.low_limit = TASK_UNMAPPED_BASE; 32500 info.low_limit = TASK_UNMAPPED_BASE;
@@ -32025,7 +32507,7 @@ index 9d980d8..6bbfacb 100644
32025 info.high_limit = TASK_SIZE; 32507 info.high_limit = TASK_SIZE;
32026 addr = vm_unmapped_area(&info); 32508 addr = vm_unmapped_area(&info);
32027 } 32509 }
32028@@ -146,10 +160,20 @@ hugetlb_get_unmapped_area(struct file *file, unsigned long addr, 32510@@ -144,10 +152,20 @@ hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
32029 struct hstate *h = hstate_file(file); 32511 struct hstate *h = hstate_file(file);
32030 struct mm_struct *mm = current->mm; 32512 struct mm_struct *mm = current->mm;
32031 struct vm_area_struct *vma; 32513 struct vm_area_struct *vma;
@@ -32047,7 +32529,7 @@ index 9d980d8..6bbfacb 100644
32047 return -ENOMEM; 32529 return -ENOMEM;
32048 32530
32049 if (flags & MAP_FIXED) { 32531 if (flags & MAP_FIXED) {
32050@@ -158,19 +182,22 @@ hugetlb_get_unmapped_area(struct file *file, unsigned long addr, 32532@@ -156,19 +174,22 @@ hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
32051 return addr; 32533 return addr;
32052 } 32534 }
32053 32535
@@ -32072,8 +32554,8 @@ index 9d980d8..6bbfacb 100644
32072- pgoff, flags); 32554- pgoff, flags);
32073+ pgoff, flags, offset); 32555+ pgoff, flags, offset);
32074 } 32556 }
32557 #endif /* CONFIG_HUGETLB_PAGE */
32075 32558
32076 #endif /*HAVE_ARCH_HUGETLB_UNMAPPED_AREA*/
32077diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c 32559diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c
32078index f971306..e83e0f6 100644 32560index f971306..e83e0f6 100644
32079--- a/arch/x86/mm/init.c 32561--- a/arch/x86/mm/init.c
@@ -32275,7 +32757,7 @@ index f971306..e83e0f6 100644
32275 (unsigned long)(&__init_begin), 32757 (unsigned long)(&__init_begin),
32276 (unsigned long)(&__init_end)); 32758 (unsigned long)(&__init_end));
32277diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c 32759diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c
32278index 4287f1f..3b99c71 100644 32760index e395048..cd38278 100644
32279--- a/arch/x86/mm/init_32.c 32761--- a/arch/x86/mm/init_32.c
32280+++ b/arch/x86/mm/init_32.c 32762+++ b/arch/x86/mm/init_32.c
32281@@ -62,33 +62,6 @@ static noinline int do_test_wp_bit(void); 32763@@ -62,33 +62,6 @@ static noinline int do_test_wp_bit(void);
@@ -32375,13 +32857,13 @@ index 4287f1f..3b99c71 100644
32375- if (addr >= (unsigned long)_text && addr <= (unsigned long)__init_end) 32857- if (addr >= (unsigned long)_text && addr <= (unsigned long)__init_end)
32376- return 1; 32858- return 1;
32377- return 0; 32859- return 0;
32378+ if ((start > ktla_ktva((unsigned long)_etext) || 32860+ if ((start >= ktla_ktva((unsigned long)_etext) ||
32379+ end <= ktla_ktva((unsigned long)_stext)) && 32861+ end <= ktla_ktva((unsigned long)_stext)) &&
32380+ (start > ktla_ktva((unsigned long)_einittext) || 32862+ (start >= ktla_ktva((unsigned long)_einittext) ||
32381+ end <= ktla_ktva((unsigned long)_sinittext)) && 32863+ end <= ktla_ktva((unsigned long)_sinittext)) &&
32382+ 32864+
32383+#ifdef CONFIG_ACPI_SLEEP 32865+#ifdef CONFIG_ACPI_SLEEP
32384+ (start > (unsigned long)__va(acpi_wakeup_address) + 0x4000 || end <= (unsigned long)__va(acpi_wakeup_address)) && 32866+ (start >= (unsigned long)__va(acpi_wakeup_address) + 0x4000 || end <= (unsigned long)__va(acpi_wakeup_address)) &&
32385+#endif 32867+#endif
32386+ 32868+
32387+ (start > (unsigned long)__va(0xfffff) || end <= (unsigned long)__va(0xc0000))) 32869+ (start > (unsigned long)__va(0xfffff) || end <= (unsigned long)__va(0xc0000)))
@@ -32503,7 +32985,7 @@ index 4287f1f..3b99c71 100644
32503 ((unsigned long)&_etext - (unsigned long)&_text) >> 10); 32985 ((unsigned long)&_etext - (unsigned long)&_text) >> 10);
32504 32986
32505 /* 32987 /*
32506@@ -880,6 +882,7 @@ void set_kernel_text_rw(void) 32988@@ -883,6 +885,7 @@ void set_kernel_text_rw(void)
32507 if (!kernel_set_to_readonly) 32989 if (!kernel_set_to_readonly)
32508 return; 32990 return;
32509 32991
@@ -32511,7 +32993,7 @@ index 4287f1f..3b99c71 100644
32511 pr_debug("Set kernel text: %lx - %lx for read write\n", 32993 pr_debug("Set kernel text: %lx - %lx for read write\n",
32512 start, start+size); 32994 start, start+size);
32513 32995
32514@@ -894,6 +897,7 @@ void set_kernel_text_ro(void) 32996@@ -897,6 +900,7 @@ void set_kernel_text_ro(void)
32515 if (!kernel_set_to_readonly) 32997 if (!kernel_set_to_readonly)
32516 return; 32998 return;
32517 32999
@@ -32519,7 +33001,7 @@ index 4287f1f..3b99c71 100644
32519 pr_debug("Set kernel text: %lx - %lx for read only\n", 33001 pr_debug("Set kernel text: %lx - %lx for read only\n",
32520 start, start+size); 33002 start, start+size);
32521 33003
32522@@ -922,6 +926,7 @@ void mark_rodata_ro(void) 33004@@ -925,6 +929,7 @@ void mark_rodata_ro(void)
32523 unsigned long start = PFN_ALIGN(_text); 33005 unsigned long start = PFN_ALIGN(_text);
32524 unsigned long size = PFN_ALIGN(_etext) - start; 33006 unsigned long size = PFN_ALIGN(_etext) - start;
32525 33007
@@ -32528,7 +33010,7 @@ index 4287f1f..3b99c71 100644
32528 printk(KERN_INFO "Write protecting the kernel text: %luk\n", 33010 printk(KERN_INFO "Write protecting the kernel text: %luk\n",
32529 size >> 10); 33011 size >> 10);
32530diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c 33012diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
32531index 104d56a..62ba13f1 100644 33013index f35c66c..84b95ef 100644
32532--- a/arch/x86/mm/init_64.c 33014--- a/arch/x86/mm/init_64.c
32533+++ b/arch/x86/mm/init_64.c 33015+++ b/arch/x86/mm/init_64.c
32534@@ -151,7 +151,7 @@ early_param("gbpages", parse_direct_gbpages_on); 33016@@ -151,7 +151,7 @@ early_param("gbpages", parse_direct_gbpages_on);
@@ -32892,10 +33374,10 @@ index 0057a7a..95c7edd 100644
32892 might_sleep(); 33374 might_sleep();
32893 if (is_enabled()) /* recheck and proper locking in *_core() */ 33375 if (is_enabled()) /* recheck and proper locking in *_core() */
32894diff --git a/arch/x86/mm/numa.c b/arch/x86/mm/numa.c 33376diff --git a/arch/x86/mm/numa.c b/arch/x86/mm/numa.c
32895index 24aec58..c39fe8b 100644 33377index 27aa0455..0eb1406 100644
32896--- a/arch/x86/mm/numa.c 33378--- a/arch/x86/mm/numa.c
32897+++ b/arch/x86/mm/numa.c 33379+++ b/arch/x86/mm/numa.c
32898@@ -474,7 +474,7 @@ static bool __init numa_meminfo_cover_memory(const struct numa_meminfo *mi) 33380@@ -478,7 +478,7 @@ static bool __init numa_meminfo_cover_memory(const struct numa_meminfo *mi)
32899 return true; 33381 return true;
32900 } 33382 }
32901 33383
@@ -32905,10 +33387,10 @@ index 24aec58..c39fe8b 100644
32905 unsigned long uninitialized_var(pfn_align); 33387 unsigned long uninitialized_var(pfn_align);
32906 int i, nid; 33388 int i, nid;
32907diff --git a/arch/x86/mm/pageattr-test.c b/arch/x86/mm/pageattr-test.c 33389diff --git a/arch/x86/mm/pageattr-test.c b/arch/x86/mm/pageattr-test.c
32908index d0b1773..4c3327c 100644 33390index 461bc82..4e091a3 100644
32909--- a/arch/x86/mm/pageattr-test.c 33391--- a/arch/x86/mm/pageattr-test.c
32910+++ b/arch/x86/mm/pageattr-test.c 33392+++ b/arch/x86/mm/pageattr-test.c
32911@@ -36,7 +36,7 @@ enum { 33393@@ -35,7 +35,7 @@ enum {
32912 33394
32913 static int pte_testbit(pte_t pte) 33395 static int pte_testbit(pte_t pte)
32914 { 33396 {
@@ -32918,10 +33400,10 @@ index d0b1773..4c3327c 100644
32918 33400
32919 struct split_state { 33401 struct split_state {
32920diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c 33402diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c
32921index bb32480..75f2f5e 100644 33403index a348868..3c64310 100644
32922--- a/arch/x86/mm/pageattr.c 33404--- a/arch/x86/mm/pageattr.c
32923+++ b/arch/x86/mm/pageattr.c 33405+++ b/arch/x86/mm/pageattr.c
32924@@ -261,7 +261,7 @@ static inline pgprot_t static_protections(pgprot_t prot, unsigned long address, 33406@@ -262,7 +262,7 @@ static inline pgprot_t static_protections(pgprot_t prot, unsigned long address,
32925 */ 33407 */
32926 #ifdef CONFIG_PCI_BIOS 33408 #ifdef CONFIG_PCI_BIOS
32927 if (pcibios_enabled && within(pfn, BIOS_BEGIN >> PAGE_SHIFT, BIOS_END >> PAGE_SHIFT)) 33409 if (pcibios_enabled && within(pfn, BIOS_BEGIN >> PAGE_SHIFT, BIOS_END >> PAGE_SHIFT))
@@ -32930,7 +33412,7 @@ index bb32480..75f2f5e 100644
32930 #endif 33412 #endif
32931 33413
32932 /* 33414 /*
32933@@ -269,9 +269,10 @@ static inline pgprot_t static_protections(pgprot_t prot, unsigned long address, 33415@@ -270,9 +270,10 @@ static inline pgprot_t static_protections(pgprot_t prot, unsigned long address,
32934 * Does not cover __inittext since that is gone later on. On 33416 * Does not cover __inittext since that is gone later on. On
32935 * 64bit we do not enforce !NX on the low mapping 33417 * 64bit we do not enforce !NX on the low mapping
32936 */ 33418 */
@@ -32943,7 +33425,7 @@ index bb32480..75f2f5e 100644
32943 /* 33425 /*
32944 * The .rodata section needs to be read-only. Using the pfn 33426 * The .rodata section needs to be read-only. Using the pfn
32945 * catches all aliases. 33427 * catches all aliases.
32946@@ -279,6 +280,7 @@ static inline pgprot_t static_protections(pgprot_t prot, unsigned long address, 33428@@ -280,6 +281,7 @@ static inline pgprot_t static_protections(pgprot_t prot, unsigned long address,
32947 if (within(pfn, __pa_symbol(__start_rodata) >> PAGE_SHIFT, 33429 if (within(pfn, __pa_symbol(__start_rodata) >> PAGE_SHIFT,
32948 __pa_symbol(__end_rodata) >> PAGE_SHIFT)) 33430 __pa_symbol(__end_rodata) >> PAGE_SHIFT))
32949 pgprot_val(forbidden) |= _PAGE_RW; 33431 pgprot_val(forbidden) |= _PAGE_RW;
@@ -32951,7 +33433,7 @@ index bb32480..75f2f5e 100644
32951 33433
32952 #if defined(CONFIG_X86_64) && defined(CONFIG_DEBUG_RODATA) 33434 #if defined(CONFIG_X86_64) && defined(CONFIG_DEBUG_RODATA)
32953 /* 33435 /*
32954@@ -317,6 +319,13 @@ static inline pgprot_t static_protections(pgprot_t prot, unsigned long address, 33436@@ -318,6 +320,13 @@ static inline pgprot_t static_protections(pgprot_t prot, unsigned long address,
32955 } 33437 }
32956 #endif 33438 #endif
32957 33439
@@ -32965,7 +33447,7 @@ index bb32480..75f2f5e 100644
32965 prot = __pgprot(pgprot_val(prot) & ~pgprot_val(forbidden)); 33447 prot = __pgprot(pgprot_val(prot) & ~pgprot_val(forbidden));
32966 33448
32967 return prot; 33449 return prot;
32968@@ -400,23 +409,37 @@ EXPORT_SYMBOL_GPL(slow_virt_to_phys); 33450@@ -416,23 +425,37 @@ EXPORT_SYMBOL_GPL(slow_virt_to_phys);
32969 static void __set_pmd_pte(pte_t *kpte, unsigned long address, pte_t pte) 33451 static void __set_pmd_pte(pte_t *kpte, unsigned long address, pte_t pte)
32970 { 33452 {
32971 /* change init_mm */ 33453 /* change init_mm */
@@ -33468,7 +33950,7 @@ index 90555bf..f5f1828 100644
33468 } 33950 }
33469 33951
33470diff --git a/arch/x86/mm/tlb.c b/arch/x86/mm/tlb.c 33952diff --git a/arch/x86/mm/tlb.c b/arch/x86/mm/tlb.c
33471index ae699b3..f1b2ad2 100644 33953index dd8dda1..9e9b0f6 100644
33472--- a/arch/x86/mm/tlb.c 33954--- a/arch/x86/mm/tlb.c
33473+++ b/arch/x86/mm/tlb.c 33955+++ b/arch/x86/mm/tlb.c
33474@@ -48,7 +48,11 @@ void leave_mm(int cpu) 33956@@ -48,7 +48,11 @@ void leave_mm(int cpu)
@@ -33527,7 +34009,7 @@ index 0000000..dace51c
33527+EXPORT_SYMBOL(__pax_close_userland); 34009+EXPORT_SYMBOL(__pax_close_userland);
33528+#endif 34010+#endif
33529diff --git a/arch/x86/net/bpf_jit.S b/arch/x86/net/bpf_jit.S 34011diff --git a/arch/x86/net/bpf_jit.S b/arch/x86/net/bpf_jit.S
33530index 877b9a1..f746de8 100644 34012index 0149575..f746de8 100644
33531--- a/arch/x86/net/bpf_jit.S 34013--- a/arch/x86/net/bpf_jit.S
33532+++ b/arch/x86/net/bpf_jit.S 34014+++ b/arch/x86/net/bpf_jit.S
33533@@ -9,6 +9,7 @@ 34015@@ -9,6 +9,7 @@
@@ -33601,15 +34083,6 @@ index 877b9a1..f746de8 100644
33601 ret 34083 ret
33602 34084
33603 #define sk_negative_common(SIZE) \ 34085 #define sk_negative_common(SIZE) \
33604@@ -140,7 +149,7 @@ bpf_slow_path_byte_msh:
33605 push %r9; \
33606 push SKBDATA; \
33607 /* rsi already has offset */ \
33608- mov $SIZE,%ecx; /* size */ \
33609+ mov $SIZE,%edx; /* size */ \
33610 call bpf_internal_load_pointer_neg_helper; \
33611 test %rax,%rax; \
33612 pop SKBDATA; \
33613@@ -157,6 +166,7 @@ sk_load_word_negative_offset: 34086@@ -157,6 +166,7 @@ sk_load_word_negative_offset:
33614 sk_negative_common(4) 34087 sk_negative_common(4)
33615 mov (%rax), %eax 34088 mov (%rax), %eax
@@ -33649,7 +34122,7 @@ index 877b9a1..f746de8 100644
33649+ pax_force_retaddr 34122+ pax_force_retaddr
33650 ret 34123 ret
33651diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c 34124diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c
33652index 4ed75dd..3cf24f0b 100644 34125index af2d431..3cf24f0b 100644
33653--- a/arch/x86/net/bpf_jit_comp.c 34126--- a/arch/x86/net/bpf_jit_comp.c
33654+++ b/arch/x86/net/bpf_jit_comp.c 34127+++ b/arch/x86/net/bpf_jit_comp.c
33655@@ -50,13 +50,90 @@ static inline u8 *emit_code(u8 *ptr, u32 bytes, unsigned int len) 34128@@ -50,13 +50,90 @@ static inline u8 *emit_code(u8 *ptr, u32 bytes, unsigned int len)
@@ -33815,7 +34288,7 @@ index 4ed75dd..3cf24f0b 100644
33815+ pax_close_kernel(); 34288+ pax_close_kernel();
33816 34289
33817- header->pages = sz / PAGE_SIZE; 34290- header->pages = sz / PAGE_SIZE;
33818- hole = sz - (proglen + sizeof(*header)); 34291- hole = min(sz - (proglen + sizeof(*header)), PAGE_SIZE - sizeof(*header));
33819+ hole = PAGE_SIZE - (proglen & ~PAGE_MASK); 34292+ hole = PAGE_SIZE - (proglen & ~PAGE_MASK);
33820 34293
33821 /* insert a random number of int3 instructions before BPF code */ 34294 /* insert a random number of int3 instructions before BPF code */
@@ -34074,10 +34547,10 @@ index 71e8a67..6a313bb 100644
34074 struct op_counter_config; 34547 struct op_counter_config;
34075 34548
34076diff --git a/arch/x86/pci/intel_mid_pci.c b/arch/x86/pci/intel_mid_pci.c 34549diff --git a/arch/x86/pci/intel_mid_pci.c b/arch/x86/pci/intel_mid_pci.c
34077index 51384ca..a25f51e 100644 34550index 84b9d67..260e5ff 100644
34078--- a/arch/x86/pci/intel_mid_pci.c 34551--- a/arch/x86/pci/intel_mid_pci.c
34079+++ b/arch/x86/pci/intel_mid_pci.c 34552+++ b/arch/x86/pci/intel_mid_pci.c
34080@@ -241,7 +241,7 @@ int __init intel_mid_pci_init(void) 34553@@ -245,7 +245,7 @@ int __init intel_mid_pci_init(void)
34081 pr_info("Intel MID platform detected, using MID PCI ops\n"); 34554 pr_info("Intel MID platform detected, using MID PCI ops\n");
34082 pci_mmcfg_late_init(); 34555 pci_mmcfg_late_init();
34083 pcibios_enable_irq = intel_mid_pci_irq_enable; 34556 pcibios_enable_irq = intel_mid_pci_irq_enable;
@@ -34429,10 +34902,10 @@ index c77b24a..c979855 100644
34429 } 34902 }
34430 EXPORT_SYMBOL(pcibios_set_irq_routing); 34903 EXPORT_SYMBOL(pcibios_set_irq_routing);
34431diff --git a/arch/x86/platform/efi/efi_32.c b/arch/x86/platform/efi/efi_32.c 34904diff --git a/arch/x86/platform/efi/efi_32.c b/arch/x86/platform/efi/efi_32.c
34432index 40e4469..d915bf9 100644 34905index 9ee3491..872192f 100644
34433--- a/arch/x86/platform/efi/efi_32.c 34906--- a/arch/x86/platform/efi/efi_32.c
34434+++ b/arch/x86/platform/efi/efi_32.c 34907+++ b/arch/x86/platform/efi/efi_32.c
34435@@ -44,11 +44,22 @@ void efi_call_phys_prelog(void) 34908@@ -59,11 +59,22 @@ void efi_call_phys_prelog(void)
34436 { 34909 {
34437 struct desc_ptr gdt_descr; 34910 struct desc_ptr gdt_descr;
34438 34911
@@ -34455,7 +34928,7 @@ index 40e4469..d915bf9 100644
34455 gdt_descr.address = __pa(get_cpu_gdt_table(0)); 34928 gdt_descr.address = __pa(get_cpu_gdt_table(0));
34456 gdt_descr.size = GDT_SIZE - 1; 34929 gdt_descr.size = GDT_SIZE - 1;
34457 load_gdt(&gdt_descr); 34930 load_gdt(&gdt_descr);
34458@@ -58,11 +69,24 @@ void efi_call_phys_epilog(void) 34931@@ -73,11 +84,24 @@ void efi_call_phys_epilog(void)
34459 { 34932 {
34460 struct desc_ptr gdt_descr; 34933 struct desc_ptr gdt_descr;
34461 34934
@@ -34481,10 +34954,10 @@ index 40e4469..d915bf9 100644
34481 34954
34482 local_irq_restore(efi_rt_eflags); 34955 local_irq_restore(efi_rt_eflags);
34483diff --git a/arch/x86/platform/efi/efi_64.c b/arch/x86/platform/efi/efi_64.c 34956diff --git a/arch/x86/platform/efi/efi_64.c b/arch/x86/platform/efi/efi_64.c
34484index 39a0e7f1..872396e 100644 34957index 666b74a..673d88f 100644
34485--- a/arch/x86/platform/efi/efi_64.c 34958--- a/arch/x86/platform/efi/efi_64.c
34486+++ b/arch/x86/platform/efi/efi_64.c 34959+++ b/arch/x86/platform/efi/efi_64.c
34487@@ -76,6 +76,11 @@ void __init efi_call_phys_prelog(void) 34960@@ -97,6 +97,11 @@ void __init efi_call_phys_prelog(void)
34488 vaddress = (unsigned long)__va(pgd * PGDIR_SIZE); 34961 vaddress = (unsigned long)__va(pgd * PGDIR_SIZE);
34489 set_pgd(pgd_offset_k(pgd * PGDIR_SIZE), *pgd_offset_k(vaddress)); 34962 set_pgd(pgd_offset_k(pgd * PGDIR_SIZE), *pgd_offset_k(vaddress));
34490 } 34963 }
@@ -34496,7 +34969,7 @@ index 39a0e7f1..872396e 100644
34496 __flush_tlb_all(); 34969 __flush_tlb_all();
34497 } 34970 }
34498 34971
34499@@ -89,6 +94,11 @@ void __init efi_call_phys_epilog(void) 34972@@ -114,6 +119,11 @@ void __init efi_call_phys_epilog(void)
34500 for (pgd = 0; pgd < n_pgds; pgd++) 34973 for (pgd = 0; pgd < n_pgds; pgd++)
34501 set_pgd(pgd_offset_k(pgd * PGDIR_SIZE), save_pgd[pgd]); 34974 set_pgd(pgd_offset_k(pgd * PGDIR_SIZE), save_pgd[pgd]);
34502 kfree(save_pgd); 34975 kfree(save_pgd);
@@ -34638,7 +35111,7 @@ index fbe66e6..eae5e38 100644
34638 .long 0 35111 .long 0
34639 efi_rt_function_ptr: 35112 efi_rt_function_ptr:
34640diff --git a/arch/x86/platform/efi/efi_stub_64.S b/arch/x86/platform/efi/efi_stub_64.S 35113diff --git a/arch/x86/platform/efi/efi_stub_64.S b/arch/x86/platform/efi/efi_stub_64.S
34641index 4c07cca..2c8427d 100644 35114index 88073b1..1cc2f53 100644
34642--- a/arch/x86/platform/efi/efi_stub_64.S 35115--- a/arch/x86/platform/efi/efi_stub_64.S
34643+++ b/arch/x86/platform/efi/efi_stub_64.S 35116+++ b/arch/x86/platform/efi/efi_stub_64.S
34644@@ -7,6 +7,7 @@ 35117@@ -7,6 +7,7 @@
@@ -34649,68 +35122,69 @@ index 4c07cca..2c8427d 100644
34649 35122
34650 #define SAVE_XMM \ 35123 #define SAVE_XMM \
34651 mov %rsp, %rax; \ 35124 mov %rsp, %rax; \
34652@@ -40,6 +41,7 @@ ENTRY(efi_call0) 35125@@ -77,6 +78,7 @@ ENTRY(efi_call0)
34653 call *%rdi 35126 RESTORE_PGT
34654 addq $32, %rsp 35127 addq $32, %rsp
34655 RESTORE_XMM 35128 RESTORE_XMM
34656+ pax_force_retaddr 0, 1 35129+ pax_force_retaddr 0, 1
34657 ret 35130 ret
34658 ENDPROC(efi_call0) 35131 ENDPROC(efi_call0)
34659 35132
34660@@ -50,6 +52,7 @@ ENTRY(efi_call1) 35133@@ -89,6 +91,7 @@ ENTRY(efi_call1)
34661 call *%rdi 35134 RESTORE_PGT
34662 addq $32, %rsp 35135 addq $32, %rsp
34663 RESTORE_XMM 35136 RESTORE_XMM
34664+ pax_force_retaddr 0, 1 35137+ pax_force_retaddr 0, 1
34665 ret 35138 ret
34666 ENDPROC(efi_call1) 35139 ENDPROC(efi_call1)
34667 35140
34668@@ -60,6 +63,7 @@ ENTRY(efi_call2) 35141@@ -101,6 +104,7 @@ ENTRY(efi_call2)
34669 call *%rdi 35142 RESTORE_PGT
34670 addq $32, %rsp 35143 addq $32, %rsp
34671 RESTORE_XMM 35144 RESTORE_XMM
34672+ pax_force_retaddr 0, 1 35145+ pax_force_retaddr 0, 1
34673 ret 35146 ret
34674 ENDPROC(efi_call2) 35147 ENDPROC(efi_call2)
34675 35148
34676@@ -71,6 +75,7 @@ ENTRY(efi_call3) 35149@@ -114,6 +118,7 @@ ENTRY(efi_call3)
34677 call *%rdi 35150 RESTORE_PGT
34678 addq $32, %rsp 35151 addq $32, %rsp
34679 RESTORE_XMM 35152 RESTORE_XMM
34680+ pax_force_retaddr 0, 1 35153+ pax_force_retaddr 0, 1
34681 ret 35154 ret
34682 ENDPROC(efi_call3) 35155 ENDPROC(efi_call3)
34683 35156
34684@@ -83,6 +88,7 @@ ENTRY(efi_call4) 35157@@ -128,6 +133,7 @@ ENTRY(efi_call4)
34685 call *%rdi 35158 RESTORE_PGT
34686 addq $32, %rsp 35159 addq $32, %rsp
34687 RESTORE_XMM 35160 RESTORE_XMM
34688+ pax_force_retaddr 0, 1 35161+ pax_force_retaddr 0, 1
34689 ret 35162 ret
34690 ENDPROC(efi_call4) 35163 ENDPROC(efi_call4)
34691 35164
34692@@ -96,6 +102,7 @@ ENTRY(efi_call5) 35165@@ -143,6 +149,7 @@ ENTRY(efi_call5)
34693 call *%rdi 35166 RESTORE_PGT
34694 addq $48, %rsp 35167 addq $48, %rsp
34695 RESTORE_XMM 35168 RESTORE_XMM
34696+ pax_force_retaddr 0, 1 35169+ pax_force_retaddr 0, 1
34697 ret 35170 ret
34698 ENDPROC(efi_call5) 35171 ENDPROC(efi_call5)
34699 35172
34700@@ -112,5 +119,6 @@ ENTRY(efi_call6) 35173@@ -161,6 +168,7 @@ ENTRY(efi_call6)
34701 call *%rdi 35174 RESTORE_PGT
34702 addq $48, %rsp 35175 addq $48, %rsp
34703 RESTORE_XMM 35176 RESTORE_XMM
34704+ pax_force_retaddr 0, 1 35177+ pax_force_retaddr 0, 1
34705 ret 35178 ret
34706 ENDPROC(efi_call6) 35179 ENDPROC(efi_call6)
35180
34707diff --git a/arch/x86/platform/intel-mid/intel-mid.c b/arch/x86/platform/intel-mid/intel-mid.c 35181diff --git a/arch/x86/platform/intel-mid/intel-mid.c b/arch/x86/platform/intel-mid/intel-mid.c
34708index f90e290..435f0dd 100644 35182index 1bbedc4..eb795b5 100644
34709--- a/arch/x86/platform/intel-mid/intel-mid.c 35183--- a/arch/x86/platform/intel-mid/intel-mid.c
34710+++ b/arch/x86/platform/intel-mid/intel-mid.c 35184+++ b/arch/x86/platform/intel-mid/intel-mid.c
34711@@ -65,9 +65,10 @@ static void intel_mid_power_off(void) 35185@@ -71,9 +71,10 @@ static void intel_mid_power_off(void)
34712 { 35186 {
34713 } 35187 };
34714 35188
34715-static void intel_mid_reboot(void) 35189-static void intel_mid_reboot(void)
34716+static void __noreturn intel_mid_reboot(void) 35190+static void __noreturn intel_mid_reboot(void)
@@ -34763,10 +35237,10 @@ index 424f4c9..f2a2988 100644
34763 #endif 35237 #endif
34764 load_TR_desc(); /* This does ltr */ 35238 load_TR_desc(); /* This does ltr */
34765diff --git a/arch/x86/realmode/init.c b/arch/x86/realmode/init.c 35239diff --git a/arch/x86/realmode/init.c b/arch/x86/realmode/init.c
34766index a44f457..9140171 100644 35240index bad628a..a102610 100644
34767--- a/arch/x86/realmode/init.c 35241--- a/arch/x86/realmode/init.c
34768+++ b/arch/x86/realmode/init.c 35242+++ b/arch/x86/realmode/init.c
34769@@ -70,7 +70,13 @@ void __init setup_real_mode(void) 35243@@ -68,7 +68,13 @@ void __init setup_real_mode(void)
34770 __va(real_mode_header->trampoline_header); 35244 __va(real_mode_header->trampoline_header);
34771 35245
34772 #ifdef CONFIG_X86_32 35246 #ifdef CONFIG_X86_32
@@ -34781,7 +35255,7 @@ index a44f457..9140171 100644
34781 trampoline_header->gdt_limit = __BOOT_DS + 7; 35255 trampoline_header->gdt_limit = __BOOT_DS + 7;
34782 trampoline_header->gdt_base = __pa_symbol(boot_gdt); 35256 trampoline_header->gdt_base = __pa_symbol(boot_gdt);
34783 #else 35257 #else
34784@@ -86,7 +92,7 @@ void __init setup_real_mode(void) 35258@@ -84,7 +90,7 @@ void __init setup_real_mode(void)
34785 *trampoline_cr4_features = read_cr4(); 35259 *trampoline_cr4_features = read_cr4();
34786 35260
34787 trampoline_pgd = (u64 *) __va(real_mode_header->trampoline_pgd); 35261 trampoline_pgd = (u64 *) __va(real_mode_header->trampoline_pgd);
@@ -34791,13 +35265,13 @@ index a44f457..9140171 100644
34791 #endif 35265 #endif
34792 } 35266 }
34793diff --git a/arch/x86/realmode/rm/Makefile b/arch/x86/realmode/rm/Makefile 35267diff --git a/arch/x86/realmode/rm/Makefile b/arch/x86/realmode/rm/Makefile
34794index 9cac825..4890b25 100644 35268index 3497f14..cc73b92 100644
34795--- a/arch/x86/realmode/rm/Makefile 35269--- a/arch/x86/realmode/rm/Makefile
34796+++ b/arch/x86/realmode/rm/Makefile 35270+++ b/arch/x86/realmode/rm/Makefile
34797@@ -79,5 +79,8 @@ KBUILD_CFLAGS := $(LINUXINCLUDE) -m32 -g -Os -D_SETUP -D__KERNEL__ -D_WAKEUP \ 35271@@ -66,5 +66,8 @@ $(obj)/realmode.relocs: $(obj)/realmode.elf FORCE
34798 $(call cc-option, -fno-unit-at-a-time)) \ 35272
34799 $(call cc-option, -fno-stack-protector) \ 35273 KBUILD_CFLAGS := $(LINUXINCLUDE) $(REALMODE_CFLAGS) -D_SETUP -D_WAKEUP \
34800 $(call cc-option, -mpreferred-stack-boundary=2) 35274 -I$(srctree)/arch/x86/boot
34801+ifdef CONSTIFY_PLUGIN 35275+ifdef CONSTIFY_PLUGIN
34802+KBUILD_CFLAGS += -fplugin-arg-constify_plugin-no-constify 35276+KBUILD_CFLAGS += -fplugin-arg-constify_plugin-no-constify
34803+endif 35277+endif
@@ -34819,10 +35293,10 @@ index a28221d..93c40f1 100644
34819 #endif 35293 #endif
34820 END(real_mode_header) 35294 END(real_mode_header)
34821diff --git a/arch/x86/realmode/rm/trampoline_32.S b/arch/x86/realmode/rm/trampoline_32.S 35295diff --git a/arch/x86/realmode/rm/trampoline_32.S b/arch/x86/realmode/rm/trampoline_32.S
34822index c1b2791..f9e31c7 100644 35296index 48ddd76..c26749f 100644
34823--- a/arch/x86/realmode/rm/trampoline_32.S 35297--- a/arch/x86/realmode/rm/trampoline_32.S
34824+++ b/arch/x86/realmode/rm/trampoline_32.S 35298+++ b/arch/x86/realmode/rm/trampoline_32.S
34825@@ -25,6 +25,12 @@ 35299@@ -24,6 +24,12 @@
34826 #include <asm/page_types.h> 35300 #include <asm/page_types.h>
34827 #include "realmode.h" 35301 #include "realmode.h"
34828 35302
@@ -34835,7 +35309,7 @@ index c1b2791..f9e31c7 100644
34835 .text 35309 .text
34836 .code16 35310 .code16
34837 35311
34838@@ -39,8 +45,6 @@ ENTRY(trampoline_start) 35312@@ -38,8 +44,6 @@ ENTRY(trampoline_start)
34839 35313
34840 cli # We should be safe anyway 35314 cli # We should be safe anyway
34841 35315
@@ -34844,7 +35318,7 @@ index c1b2791..f9e31c7 100644
34844 movl $0xA5A5A5A5, trampoline_status 35318 movl $0xA5A5A5A5, trampoline_status
34845 # write marker for master knows we're running 35319 # write marker for master knows we're running
34846 35320
34847@@ -56,7 +60,7 @@ ENTRY(trampoline_start) 35321@@ -55,7 +59,7 @@ ENTRY(trampoline_start)
34848 movw $1, %dx # protected mode (PE) bit 35322 movw $1, %dx # protected mode (PE) bit
34849 lmsw %dx # into protected mode 35323 lmsw %dx # into protected mode
34850 35324
@@ -34853,7 +35327,7 @@ index c1b2791..f9e31c7 100644
34853 35327
34854 .section ".text32","ax" 35328 .section ".text32","ax"
34855 .code32 35329 .code32
34856@@ -67,7 +71,7 @@ ENTRY(startup_32) # note: also used from wakeup_asm.S 35330@@ -66,7 +70,7 @@ ENTRY(startup_32) # note: also used from wakeup_asm.S
34857 .balign 8 35331 .balign 8
34858 GLOBAL(trampoline_header) 35332 GLOBAL(trampoline_header)
34859 tr_start: .space 4 35333 tr_start: .space 4
@@ -34863,10 +35337,10 @@ index c1b2791..f9e31c7 100644
34863 END(trampoline_header) 35337 END(trampoline_header)
34864 35338
34865diff --git a/arch/x86/realmode/rm/trampoline_64.S b/arch/x86/realmode/rm/trampoline_64.S 35339diff --git a/arch/x86/realmode/rm/trampoline_64.S b/arch/x86/realmode/rm/trampoline_64.S
34866index bb360dc..d0fd8f8 100644 35340index dac7b20..72dbaca 100644
34867--- a/arch/x86/realmode/rm/trampoline_64.S 35341--- a/arch/x86/realmode/rm/trampoline_64.S
34868+++ b/arch/x86/realmode/rm/trampoline_64.S 35342+++ b/arch/x86/realmode/rm/trampoline_64.S
34869@@ -94,6 +94,7 @@ ENTRY(startup_32) 35343@@ -93,6 +93,7 @@ ENTRY(startup_32)
34870 movl %edx, %gs 35344 movl %edx, %gs
34871 35345
34872 movl pa_tr_cr4, %eax 35346 movl pa_tr_cr4, %eax
@@ -34874,7 +35348,7 @@ index bb360dc..d0fd8f8 100644
34874 movl %eax, %cr4 # Enable PAE mode 35348 movl %eax, %cr4 # Enable PAE mode
34875 35349
34876 # Setup trampoline 4 level pagetables 35350 # Setup trampoline 4 level pagetables
34877@@ -107,7 +108,7 @@ ENTRY(startup_32) 35351@@ -106,7 +107,7 @@ ENTRY(startup_32)
34878 wrmsr 35352 wrmsr
34879 35353
34880 # Enable paging and in turn activate Long Mode 35354 # Enable paging and in turn activate Long Mode
@@ -34883,6 +35357,24 @@ index bb360dc..d0fd8f8 100644
34883 movl %eax, %cr0 35357 movl %eax, %cr0
34884 35358
34885 /* 35359 /*
35360diff --git a/arch/x86/realmode/rm/wakeup_asm.S b/arch/x86/realmode/rm/wakeup_asm.S
35361index 9e7e147..25a4158 100644
35362--- a/arch/x86/realmode/rm/wakeup_asm.S
35363+++ b/arch/x86/realmode/rm/wakeup_asm.S
35364@@ -126,11 +126,10 @@ ENTRY(wakeup_start)
35365 lgdtl pmode_gdt
35366
35367 /* This really couldn't... */
35368- movl pmode_entry, %eax
35369 movl pmode_cr0, %ecx
35370 movl %ecx, %cr0
35371- ljmpl $__KERNEL_CS, $pa_startup_32
35372- /* -> jmp *%eax in trampoline_32.S */
35373+
35374+ ljmpl *pmode_entry
35375 #else
35376 jmp trampoline_start
35377 #endif
34886diff --git a/arch/x86/tools/Makefile b/arch/x86/tools/Makefile 35378diff --git a/arch/x86/tools/Makefile b/arch/x86/tools/Makefile
34887index e812034..c747134 100644 35379index e812034..c747134 100644
34888--- a/arch/x86/tools/Makefile 35380--- a/arch/x86/tools/Makefile
@@ -34897,7 +35389,7 @@ index e812034..c747134 100644
34897 relocs-objs := relocs_32.o relocs_64.o relocs_common.o 35389 relocs-objs := relocs_32.o relocs_64.o relocs_common.o
34898 relocs: $(obj)/relocs 35390 relocs: $(obj)/relocs
34899diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c 35391diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c
34900index f7bab68..b6d9886 100644 35392index cfbdbdb..1aa763c 100644
34901--- a/arch/x86/tools/relocs.c 35393--- a/arch/x86/tools/relocs.c
34902+++ b/arch/x86/tools/relocs.c 35394+++ b/arch/x86/tools/relocs.c
34903@@ -1,5 +1,7 @@ 35395@@ -1,5 +1,7 @@
@@ -35065,7 +35557,7 @@ index f7bab68..b6d9886 100644
35065 struct section *sec = &secs[i]; 35557 struct section *sec = &secs[i];
35066 35558
35067 if (sec->shdr.sh_type != SHT_REL_TYPE) { 35559 if (sec->shdr.sh_type != SHT_REL_TYPE) {
35068@@ -812,6 +860,23 @@ static int do_reloc32(struct section *sec, Elf_Rel *rel, Elf_Sym *sym, 35560@@ -822,6 +870,23 @@ static int do_reloc32(struct section *sec, Elf_Rel *rel, Elf_Sym *sym,
35069 { 35561 {
35070 unsigned r_type = ELF32_R_TYPE(rel->r_info); 35562 unsigned r_type = ELF32_R_TYPE(rel->r_info);
35071 int shn_abs = (sym->st_shndx == SHN_ABS) && !is_reloc(S_REL, symname); 35563 int shn_abs = (sym->st_shndx == SHN_ABS) && !is_reloc(S_REL, symname);
@@ -35089,7 +35581,7 @@ index f7bab68..b6d9886 100644
35089 35581
35090 switch (r_type) { 35582 switch (r_type) {
35091 case R_386_NONE: 35583 case R_386_NONE:
35092@@ -950,7 +1015,7 @@ static int write32_as_text(uint32_t v, FILE *f) 35584@@ -960,7 +1025,7 @@ static int write32_as_text(uint32_t v, FILE *f)
35093 35585
35094 static void emit_relocs(int as_text, int use_real_mode) 35586 static void emit_relocs(int as_text, int use_real_mode)
35095 { 35587 {
@@ -35098,7 +35590,7 @@ index f7bab68..b6d9886 100644
35098 int (*write_reloc)(uint32_t, FILE *) = write32; 35590 int (*write_reloc)(uint32_t, FILE *) = write32;
35099 int (*do_reloc)(struct section *sec, Elf_Rel *rel, Elf_Sym *sym, 35591 int (*do_reloc)(struct section *sec, Elf_Rel *rel, Elf_Sym *sym,
35100 const char *symname); 35592 const char *symname);
35101@@ -1026,10 +1091,11 @@ void process(FILE *fp, int use_real_mode, int as_text, 35593@@ -1060,10 +1125,11 @@ void process(FILE *fp, int use_real_mode, int as_text,
35102 { 35594 {
35103 regex_init(use_real_mode); 35595 regex_init(use_real_mode);
35104 read_ehdr(fp); 35596 read_ehdr(fp);
@@ -35138,7 +35630,7 @@ index fd14be1..e3c79c0 100644
35138 35630
35139 # 35631 #
35140diff --git a/arch/x86/vdso/vdso32-setup.c b/arch/x86/vdso/vdso32-setup.c 35632diff --git a/arch/x86/vdso/vdso32-setup.c b/arch/x86/vdso/vdso32-setup.c
35141index d6bfb87..876ee18 100644 35633index d6bfb87..a75c5f7 100644
35142--- a/arch/x86/vdso/vdso32-setup.c 35634--- a/arch/x86/vdso/vdso32-setup.c
35143+++ b/arch/x86/vdso/vdso32-setup.c 35635+++ b/arch/x86/vdso/vdso32-setup.c
35144@@ -25,6 +25,7 @@ 35636@@ -25,6 +25,7 @@
@@ -35149,7 +35641,15 @@ index d6bfb87..876ee18 100644
35149 35641
35150 enum { 35642 enum {
35151 VDSO_DISABLED = 0, 35643 VDSO_DISABLED = 0,
35152@@ -226,7 +227,7 @@ static inline void map_compat_vdso(int map) 35644@@ -41,6 +42,7 @@ enum {
35645 #ifdef CONFIG_X86_64
35646 #define vdso_enabled sysctl_vsyscall32
35647 #define arch_setup_additional_pages syscall32_setup_pages
35648+extern int sysctl_ldt16;
35649 #endif
35650
35651 /*
35652@@ -226,7 +228,7 @@ static inline void map_compat_vdso(int map)
35153 void enable_sep_cpu(void) 35653 void enable_sep_cpu(void)
35154 { 35654 {
35155 int cpu = get_cpu(); 35655 int cpu = get_cpu();
@@ -35158,7 +35658,7 @@ index d6bfb87..876ee18 100644
35158 35658
35159 if (!boot_cpu_has(X86_FEATURE_SEP)) { 35659 if (!boot_cpu_has(X86_FEATURE_SEP)) {
35160 put_cpu(); 35660 put_cpu();
35161@@ -249,7 +250,7 @@ static int __init gate_vma_init(void) 35661@@ -249,7 +251,7 @@ static int __init gate_vma_init(void)
35162 gate_vma.vm_start = FIXADDR_USER_START; 35662 gate_vma.vm_start = FIXADDR_USER_START;
35163 gate_vma.vm_end = FIXADDR_USER_END; 35663 gate_vma.vm_end = FIXADDR_USER_END;
35164 gate_vma.vm_flags = VM_READ | VM_MAYREAD | VM_EXEC | VM_MAYEXEC; 35664 gate_vma.vm_flags = VM_READ | VM_MAYREAD | VM_EXEC | VM_MAYEXEC;
@@ -35167,7 +35667,7 @@ index d6bfb87..876ee18 100644
35167 35667
35168 return 0; 35668 return 0;
35169 } 35669 }
35170@@ -330,14 +331,14 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) 35670@@ -330,14 +332,14 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
35171 if (compat) 35671 if (compat)
35172 addr = VDSO_HIGH_BASE; 35672 addr = VDSO_HIGH_BASE;
35173 else { 35673 else {
@@ -35184,7 +35684,7 @@ index d6bfb87..876ee18 100644
35184 35684
35185 if (compat_uses_vma || !compat) { 35685 if (compat_uses_vma || !compat) {
35186 /* 35686 /*
35187@@ -353,11 +354,11 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) 35687@@ -353,11 +355,11 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
35188 } 35688 }
35189 35689
35190 current_thread_info()->sysenter_return = 35690 current_thread_info()->sysenter_return =
@@ -35198,7 +35698,21 @@ index d6bfb87..876ee18 100644
35198 35698
35199 up_write(&mm->mmap_sem); 35699 up_write(&mm->mmap_sem);
35200 35700
35201@@ -404,8 +405,14 @@ __initcall(ia32_binfmt_init); 35701@@ -380,6 +382,13 @@ static struct ctl_table abi_table2[] = {
35702 .mode = 0644,
35703 .proc_handler = proc_dointvec
35704 },
35705+ {
35706+ .procname = "ldt16",
35707+ .data = &sysctl_ldt16,
35708+ .maxlen = sizeof(int),
35709+ .mode = 0644,
35710+ .proc_handler = proc_dointvec
35711+ },
35712 {}
35713 };
35714
35715@@ -404,8 +413,14 @@ __initcall(ia32_binfmt_init);
35202 35716
35203 const char *arch_vma_name(struct vm_area_struct *vma) 35717 const char *arch_vma_name(struct vm_area_struct *vma)
35204 { 35718 {
@@ -35214,7 +35728,7 @@ index d6bfb87..876ee18 100644
35214 return NULL; 35728 return NULL;
35215 } 35729 }
35216 35730
35217@@ -415,7 +422,7 @@ struct vm_area_struct *get_gate_vma(struct mm_struct *mm) 35731@@ -415,7 +430,7 @@ struct vm_area_struct *get_gate_vma(struct mm_struct *mm)
35218 * Check to see if the corresponding task was created in compat vdso 35732 * Check to see if the corresponding task was created in compat vdso
35219 * mode. 35733 * mode.
35220 */ 35734 */
@@ -35297,7 +35811,7 @@ index 431e875..cbb23f3 100644
35297-} 35811-}
35298-__setup("vdso=", vdso_setup); 35812-__setup("vdso=", vdso_setup);
35299diff --git a/arch/x86/xen/Kconfig b/arch/x86/xen/Kconfig 35813diff --git a/arch/x86/xen/Kconfig b/arch/x86/xen/Kconfig
35300index 1a3c765..3d2e8d1 100644 35814index 01b9026..1e476df 100644
35301--- a/arch/x86/xen/Kconfig 35815--- a/arch/x86/xen/Kconfig
35302+++ b/arch/x86/xen/Kconfig 35816+++ b/arch/x86/xen/Kconfig
35303@@ -9,6 +9,7 @@ config XEN 35817@@ -9,6 +9,7 @@ config XEN
@@ -35309,7 +35823,7 @@ index 1a3c765..3d2e8d1 100644
35309 This is the Linux Xen port. Enabling this will allow the 35823 This is the Linux Xen port. Enabling this will allow the
35310 kernel to boot in a paravirtualized environment under the 35824 kernel to boot in a paravirtualized environment under the
35311diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c 35825diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
35312index fa6ade7..73da73a5 100644 35826index 201d09a..e4723e5 100644
35313--- a/arch/x86/xen/enlighten.c 35827--- a/arch/x86/xen/enlighten.c
35314+++ b/arch/x86/xen/enlighten.c 35828+++ b/arch/x86/xen/enlighten.c
35315@@ -123,8 +123,6 @@ EXPORT_SYMBOL_GPL(xen_start_info); 35829@@ -123,8 +123,6 @@ EXPORT_SYMBOL_GPL(xen_start_info);
@@ -35321,7 +35835,7 @@ index fa6ade7..73da73a5 100644
35321 RESERVE_BRK(shared_info_page_brk, PAGE_SIZE); 35835 RESERVE_BRK(shared_info_page_brk, PAGE_SIZE);
35322 __read_mostly int xen_have_vector_callback; 35836 __read_mostly int xen_have_vector_callback;
35323 EXPORT_SYMBOL_GPL(xen_have_vector_callback); 35837 EXPORT_SYMBOL_GPL(xen_have_vector_callback);
35324@@ -541,8 +539,7 @@ static void xen_load_gdt(const struct desc_ptr *dtr) 35838@@ -542,8 +540,7 @@ static void xen_load_gdt(const struct desc_ptr *dtr)
35325 { 35839 {
35326 unsigned long va = dtr->address; 35840 unsigned long va = dtr->address;
35327 unsigned int size = dtr->size + 1; 35841 unsigned int size = dtr->size + 1;
@@ -35331,7 +35845,7 @@ index fa6ade7..73da73a5 100644
35331 int f; 35845 int f;
35332 35846
35333 /* 35847 /*
35334@@ -590,8 +587,7 @@ static void __init xen_load_gdt_boot(const struct desc_ptr *dtr) 35848@@ -591,8 +588,7 @@ static void __init xen_load_gdt_boot(const struct desc_ptr *dtr)
35335 { 35849 {
35336 unsigned long va = dtr->address; 35850 unsigned long va = dtr->address;
35337 unsigned int size = dtr->size + 1; 35851 unsigned int size = dtr->size + 1;
@@ -35341,7 +35855,7 @@ index fa6ade7..73da73a5 100644
35341 int f; 35855 int f;
35342 35856
35343 /* 35857 /*
35344@@ -599,7 +595,7 @@ static void __init xen_load_gdt_boot(const struct desc_ptr *dtr) 35858@@ -600,7 +596,7 @@ static void __init xen_load_gdt_boot(const struct desc_ptr *dtr)
35345 * 8-byte entries, or 16 4k pages.. 35859 * 8-byte entries, or 16 4k pages..
35346 */ 35860 */
35347 35861
@@ -35350,7 +35864,7 @@ index fa6ade7..73da73a5 100644
35350 BUG_ON(va & ~PAGE_MASK); 35864 BUG_ON(va & ~PAGE_MASK);
35351 35865
35352 for (f = 0; va < dtr->address + size; va += PAGE_SIZE, f++) { 35866 for (f = 0; va < dtr->address + size; va += PAGE_SIZE, f++) {
35353@@ -988,7 +984,7 @@ static u32 xen_safe_apic_wait_icr_idle(void) 35867@@ -989,7 +985,7 @@ static u32 xen_safe_apic_wait_icr_idle(void)
35354 return 0; 35868 return 0;
35355 } 35869 }
35356 35870
@@ -35359,7 +35873,7 @@ index fa6ade7..73da73a5 100644
35359 { 35873 {
35360 apic->read = xen_apic_read; 35874 apic->read = xen_apic_read;
35361 apic->write = xen_apic_write; 35875 apic->write = xen_apic_write;
35362@@ -1293,30 +1289,30 @@ static const struct pv_apic_ops xen_apic_ops __initconst = { 35876@@ -1295,30 +1291,30 @@ static const struct pv_apic_ops xen_apic_ops __initconst = {
35363 #endif 35877 #endif
35364 }; 35878 };
35365 35879
@@ -35397,7 +35911,7 @@ index fa6ade7..73da73a5 100644
35397 { 35911 {
35398 if (pm_power_off) 35912 if (pm_power_off)
35399 pm_power_off(); 35913 pm_power_off();
35400@@ -1467,7 +1463,17 @@ asmlinkage void __init xen_start_kernel(void) 35914@@ -1564,7 +1560,17 @@ asmlinkage void __init xen_start_kernel(void)
35401 __userpte_alloc_gfp &= ~__GFP_HIGHMEM; 35915 __userpte_alloc_gfp &= ~__GFP_HIGHMEM;
35402 35916
35403 /* Work out if we support NX */ 35917 /* Work out if we support NX */
@@ -35414,9 +35928,9 @@ index fa6ade7..73da73a5 100644
35414+ } 35928+ }
35415+#endif 35929+#endif
35416 35930
35417 xen_setup_features(); 35931 /* Get mfn list */
35418 35932 xen_build_dynamic_phys_to_machine();
35419@@ -1498,13 +1504,6 @@ asmlinkage void __init xen_start_kernel(void) 35933@@ -1592,13 +1598,6 @@ asmlinkage void __init xen_start_kernel(void)
35420 35934
35421 machine_ops = xen_machine_ops; 35935 machine_ops = xen_machine_ops;
35422 35936
@@ -35431,7 +35945,7 @@ index fa6ade7..73da73a5 100644
35431 35945
35432 #ifdef CONFIG_ACPI_NUMA 35946 #ifdef CONFIG_ACPI_NUMA
35433diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c 35947diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c
35434index 3c76c3d..7871755 100644 35948index 2423ef0..4f6fb5b 100644
35435--- a/arch/x86/xen/mmu.c 35949--- a/arch/x86/xen/mmu.c
35436+++ b/arch/x86/xen/mmu.c 35950+++ b/arch/x86/xen/mmu.c
35437@@ -379,7 +379,7 @@ static pteval_t pte_mfn_to_pfn(pteval_t val) 35951@@ -379,7 +379,7 @@ static pteval_t pte_mfn_to_pfn(pteval_t val)
@@ -35441,32 +35955,32 @@ index 3c76c3d..7871755 100644
35441-static pteval_t pte_pfn_to_mfn(pteval_t val) 35955-static pteval_t pte_pfn_to_mfn(pteval_t val)
35442+static pteval_t __intentional_overflow(-1) pte_pfn_to_mfn(pteval_t val) 35956+static pteval_t __intentional_overflow(-1) pte_pfn_to_mfn(pteval_t val)
35443 { 35957 {
35444 if (pteval_present(val)) { 35958 if (val & _PAGE_PRESENT) {
35445 unsigned long pfn = (val & PTE_PFN_MASK) >> PAGE_SHIFT; 35959 unsigned long pfn = (val & PTE_PFN_MASK) >> PAGE_SHIFT;
35446@@ -1894,6 +1894,9 @@ void __init xen_setup_kernel_pagetable(pgd_t *pgd, unsigned long max_pfn) 35960@@ -1904,6 +1904,9 @@ void __init xen_setup_kernel_pagetable(pgd_t *pgd, unsigned long max_pfn)
35447 /* L3_k[510] -> level2_kernel_pgt 35961 /* L3_k[510] -> level2_kernel_pgt
35448 * L3_i[511] -> level2_fixmap_pgt */ 35962 * L3_i[511] -> level2_fixmap_pgt */
35449 convert_pfn_mfn(level3_kernel_pgt); 35963 convert_pfn_mfn(level3_kernel_pgt);
35450+ convert_pfn_mfn(level3_vmalloc_start_pgt); 35964+ convert_pfn_mfn(level3_vmalloc_start_pgt);
35451+ convert_pfn_mfn(level3_vmalloc_end_pgt); 35965+ convert_pfn_mfn(level3_vmalloc_end_pgt);
35452+ convert_pfn_mfn(level3_vmemmap_pgt); 35966+ convert_pfn_mfn(level3_vmemmap_pgt);
35453 35967 }
35454 /* We get [511][511] and have Xen's version of level2_kernel_pgt */ 35968 /* We get [511][511] and have Xen's version of level2_kernel_pgt */
35455 l3 = m2v(pgd[pgd_index(__START_KERNEL_map)].pgd); 35969 l3 = m2v(pgd[pgd_index(__START_KERNEL_map)].pgd);
35456@@ -1923,8 +1926,12 @@ void __init xen_setup_kernel_pagetable(pgd_t *pgd, unsigned long max_pfn) 35970@@ -1933,8 +1936,12 @@ void __init xen_setup_kernel_pagetable(pgd_t *pgd, unsigned long max_pfn)
35457 set_page_prot(init_level4_pgt, PAGE_KERNEL_RO); 35971 set_page_prot(init_level4_pgt, PAGE_KERNEL_RO);
35458 set_page_prot(level3_ident_pgt, PAGE_KERNEL_RO); 35972 set_page_prot(level3_ident_pgt, PAGE_KERNEL_RO);
35459 set_page_prot(level3_kernel_pgt, PAGE_KERNEL_RO); 35973 set_page_prot(level3_kernel_pgt, PAGE_KERNEL_RO);
35460+ set_page_prot(level3_vmalloc_start_pgt, PAGE_KERNEL_RO); 35974+ set_page_prot(level3_vmalloc_start_pgt, PAGE_KERNEL_RO);
35461+ set_page_prot(level3_vmalloc_end_pgt, PAGE_KERNEL_RO); 35975+ set_page_prot(level3_vmalloc_end_pgt, PAGE_KERNEL_RO);
35462+ set_page_prot(level3_vmemmap_pgt, PAGE_KERNEL_RO); 35976+ set_page_prot(level3_vmemmap_pgt, PAGE_KERNEL_RO);
35463 set_page_prot(level3_user_vsyscall, PAGE_KERNEL_RO); 35977 set_page_prot(level3_user_vsyscall, PAGE_KERNEL_RO);
35464 set_page_prot(level2_ident_pgt, PAGE_KERNEL_RO); 35978 set_page_prot(level2_ident_pgt, PAGE_KERNEL_RO);
35465+ set_page_prot(level2_vmemmap_pgt, PAGE_KERNEL_RO); 35979+ set_page_prot(level2_vmemmap_pgt, PAGE_KERNEL_RO);
35466 set_page_prot(level2_kernel_pgt, PAGE_KERNEL_RO); 35980 set_page_prot(level2_kernel_pgt, PAGE_KERNEL_RO);
35467 set_page_prot(level2_fixmap_pgt, PAGE_KERNEL_RO); 35981 set_page_prot(level2_fixmap_pgt, PAGE_KERNEL_RO);
35468 35982
35469@@ -2108,6 +2115,7 @@ static void __init xen_post_allocator_init(void) 35983@@ -2123,6 +2130,7 @@ static void __init xen_post_allocator_init(void)
35470 pv_mmu_ops.set_pud = xen_set_pud; 35984 pv_mmu_ops.set_pud = xen_set_pud;
35471 #if PAGETABLE_LEVELS == 4 35985 #if PAGETABLE_LEVELS == 4
35472 pv_mmu_ops.set_pgd = xen_set_pgd; 35986 pv_mmu_ops.set_pgd = xen_set_pgd;
@@ -35474,7 +35988,7 @@ index 3c76c3d..7871755 100644
35474 #endif 35988 #endif
35475 35989
35476 /* This will work as long as patching hasn't happened yet 35990 /* This will work as long as patching hasn't happened yet
35477@@ -2186,6 +2194,7 @@ static const struct pv_mmu_ops xen_mmu_ops __initconst = { 35991@@ -2201,6 +2209,7 @@ static const struct pv_mmu_ops xen_mmu_ops __initconst = {
35478 .pud_val = PV_CALLEE_SAVE(xen_pud_val), 35992 .pud_val = PV_CALLEE_SAVE(xen_pud_val),
35479 .make_pud = PV_CALLEE_SAVE(xen_make_pud), 35993 .make_pud = PV_CALLEE_SAVE(xen_make_pud),
35480 .set_pgd = xen_set_pgd_hyper, 35994 .set_pgd = xen_set_pgd_hyper,
@@ -35483,16 +35997,16 @@ index 3c76c3d..7871755 100644
35483 .alloc_pud = xen_alloc_pmd_init, 35997 .alloc_pud = xen_alloc_pmd_init,
35484 .release_pud = xen_release_pmd_init, 35998 .release_pud = xen_release_pmd_init,
35485diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c 35999diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c
35486index c36b325..b0f1518 100644 36000index a18eadd..2e2f10e 100644
35487--- a/arch/x86/xen/smp.c 36001--- a/arch/x86/xen/smp.c
35488+++ b/arch/x86/xen/smp.c 36002+++ b/arch/x86/xen/smp.c
35489@@ -274,17 +274,13 @@ static void __init xen_smp_prepare_boot_cpu(void) 36003@@ -283,17 +283,13 @@ static void __init xen_smp_prepare_boot_cpu(void)
35490 native_smp_prepare_boot_cpu();
35491 36004
35492 if (xen_pv_domain()) { 36005 if (xen_pv_domain()) {
35493- /* We've switched to the "real" per-cpu gdt, so make sure the 36006 if (!xen_feature(XENFEAT_writable_page_tables))
35494- old memory can be recycled */ 36007- /* We've switched to the "real" per-cpu gdt, so make
35495- make_lowmem_page_readwrite(xen_initial_gdt); 36008- * sure the old memory can be recycled. */
36009- make_lowmem_page_readwrite(xen_initial_gdt);
35496- 36010-
35497 #ifdef CONFIG_X86_32 36011 #ifdef CONFIG_X86_32
35498 /* 36012 /*
@@ -35506,27 +36020,27 @@ index c36b325..b0f1518 100644
35506 #endif 36020 #endif
35507 36021
35508 xen_filter_cpu_maps(); 36022 xen_filter_cpu_maps();
35509@@ -364,7 +360,7 @@ cpu_initialize_context(unsigned int cpu, struct task_struct *idle) 36023@@ -372,7 +368,7 @@ cpu_initialize_context(unsigned int cpu, struct task_struct *idle)
35510 ctxt->user_regs.ss = __KERNEL_DS;
35511 #ifdef CONFIG_X86_32 36024 #ifdef CONFIG_X86_32
36025 /* Note: PVH is not yet supported on x86_32. */
35512 ctxt->user_regs.fs = __KERNEL_PERCPU; 36026 ctxt->user_regs.fs = __KERNEL_PERCPU;
35513- ctxt->user_regs.gs = __KERNEL_STACK_CANARY; 36027- ctxt->user_regs.gs = __KERNEL_STACK_CANARY;
35514+ savesegment(gs, ctxt->user_regs.gs); 36028+ savesegment(gs, ctxt->user_regs.gs);
35515 #else
35516 ctxt->gs_base_kernel = per_cpu_offset(cpu);
35517 #endif 36029 #endif
35518@@ -374,8 +370,8 @@ cpu_initialize_context(unsigned int cpu, struct task_struct *idle) 36030 ctxt->user_regs.eip = (unsigned long)cpu_bringup_and_idle;
35519 36031
35520 { 36032@@ -381,8 +377,8 @@ cpu_initialize_context(unsigned int cpu, struct task_struct *idle)
36033 if (!xen_feature(XENFEAT_auto_translated_physmap)) {
36034 ctxt->flags = VGCF_IN_KERNEL;
35521 ctxt->user_regs.eflags = 0x1000; /* IOPL_RING1 */ 36035 ctxt->user_regs.eflags = 0x1000; /* IOPL_RING1 */
35522- ctxt->user_regs.ds = __USER_DS; 36036- ctxt->user_regs.ds = __USER_DS;
35523- ctxt->user_regs.es = __USER_DS; 36037- ctxt->user_regs.es = __USER_DS;
35524+ ctxt->user_regs.ds = __KERNEL_DS; 36038+ ctxt->user_regs.ds = __KERNEL_DS;
35525+ ctxt->user_regs.es = __KERNEL_DS; 36039+ ctxt->user_regs.es = __KERNEL_DS;
36040 ctxt->user_regs.ss = __KERNEL_DS;
35526 36041
35527 xen_copy_trap_info(ctxt->trap_ctxt); 36042 xen_copy_trap_info(ctxt->trap_ctxt);
35528 36043@@ -437,13 +433,12 @@ static int xen_cpu_up(unsigned int cpu, struct task_struct *idle)
35529@@ -420,13 +416,12 @@ static int xen_cpu_up(unsigned int cpu, struct task_struct *idle)
35530 int rc; 36044 int rc;
35531 36045
35532 per_cpu(current_task, cpu) = idle; 36046 per_cpu(current_task, cpu) = idle;
@@ -35542,7 +36056,7 @@ index c36b325..b0f1518 100644
35542 #endif 36056 #endif
35543 xen_setup_runstate_info(cpu); 36057 xen_setup_runstate_info(cpu);
35544 xen_setup_timer(cpu); 36058 xen_setup_timer(cpu);
35545@@ -702,7 +697,7 @@ static const struct smp_ops xen_smp_ops __initconst = { 36059@@ -719,7 +714,7 @@ static const struct smp_ops xen_smp_ops __initconst = {
35546 36060
35547 void __init xen_smp_init(void) 36061 void __init xen_smp_init(void)
35548 { 36062 {
@@ -35577,10 +36091,10 @@ index 33ca6e4..0ded929 100644
35577 movl %ss:xen_vcpu, %eax 36091 movl %ss:xen_vcpu, %eax
35578 #endif 36092 #endif
35579diff --git a/arch/x86/xen/xen-head.S b/arch/x86/xen/xen-head.S 36093diff --git a/arch/x86/xen/xen-head.S b/arch/x86/xen/xen-head.S
35580index 7faed58..ba4427c 100644 36094index 485b695..fda3e7c 100644
35581--- a/arch/x86/xen/xen-head.S 36095--- a/arch/x86/xen/xen-head.S
35582+++ b/arch/x86/xen/xen-head.S 36096+++ b/arch/x86/xen/xen-head.S
35583@@ -19,6 +19,17 @@ ENTRY(startup_xen) 36097@@ -39,6 +39,17 @@ ENTRY(startup_xen)
35584 #ifdef CONFIG_X86_32 36098 #ifdef CONFIG_X86_32
35585 mov %esi,xen_start_info 36099 mov %esi,xen_start_info
35586 mov $init_thread_union+THREAD_SIZE,%esp 36100 mov $init_thread_union+THREAD_SIZE,%esp
@@ -35599,7 +36113,7 @@ index 7faed58..ba4427c 100644
35599 mov %rsi,xen_start_info 36113 mov %rsi,xen_start_info
35600 mov $init_thread_union+THREAD_SIZE,%rsp 36114 mov $init_thread_union+THREAD_SIZE,%rsp
35601diff --git a/arch/x86/xen/xen-ops.h b/arch/x86/xen/xen-ops.h 36115diff --git a/arch/x86/xen/xen-ops.h b/arch/x86/xen/xen-ops.h
35602index 95f8c61..611d6e8 100644 36116index 1cb6f4c..9981524 100644
35603--- a/arch/x86/xen/xen-ops.h 36117--- a/arch/x86/xen/xen-ops.h
35604+++ b/arch/x86/xen/xen-ops.h 36118+++ b/arch/x86/xen/xen-ops.h
35605@@ -10,8 +10,6 @@ 36119@@ -10,8 +10,6 @@
@@ -35708,7 +36222,7 @@ index 1855bf5..af12b06 100644
35708 struct list_head *list = this_cpu_ptr(&blk_cpu_iopoll); 36222 struct list_head *list = this_cpu_ptr(&blk_cpu_iopoll);
35709 int rearm = 0, budget = blk_iopoll_budget; 36223 int rearm = 0, budget = blk_iopoll_budget;
35710diff --git a/block/blk-map.c b/block/blk-map.c 36224diff --git a/block/blk-map.c b/block/blk-map.c
35711index 623e1cd..ca1e109 100644 36225index ae4ae10..c470b8d 100644
35712--- a/block/blk-map.c 36226--- a/block/blk-map.c
35713+++ b/block/blk-map.c 36227+++ b/block/blk-map.c
35714@@ -302,7 +302,7 @@ int blk_rq_map_kern(struct request_queue *q, struct request *rq, void *kbuf, 36228@@ -302,7 +302,7 @@ int blk_rq_map_kern(struct request_queue *q, struct request *rq, void *kbuf,
@@ -35844,7 +36358,7 @@ index dc51f46..d5446a8 100644
35844 (u8 *) pte, count) < count) { 36358 (u8 *) pte, count) < count) {
35845 kfree(pte); 36359 kfree(pte);
35846diff --git a/block/scsi_ioctl.c b/block/scsi_ioctl.c 36360diff --git a/block/scsi_ioctl.c b/block/scsi_ioctl.c
35847index 625e3e4..b5339f9 100644 36361index 2648797..92ed21f 100644
35848--- a/block/scsi_ioctl.c 36362--- a/block/scsi_ioctl.c
35849+++ b/block/scsi_ioctl.c 36363+++ b/block/scsi_ioctl.c
35850@@ -67,7 +67,7 @@ static int scsi_get_bus(struct request_queue *q, int __user *p) 36364@@ -67,7 +67,7 @@ static int scsi_get_bus(struct request_queue *q, int __user *p)
@@ -35878,7 +36392,7 @@ index 625e3e4..b5339f9 100644
35878 if (blk_verify_command(rq->cmd, mode & FMODE_WRITE)) 36392 if (blk_verify_command(rq->cmd, mode & FMODE_WRITE))
35879 return -EPERM; 36393 return -EPERM;
35880 36394
35881@@ -415,6 +427,8 @@ int sg_scsi_ioctl(struct request_queue *q, struct gendisk *disk, fmode_t mode, 36395@@ -417,6 +429,8 @@ int sg_scsi_ioctl(struct request_queue *q, struct gendisk *disk, fmode_t mode,
35882 int err; 36396 int err;
35883 unsigned int in_len, out_len, bytes, opcode, cmdlen; 36397 unsigned int in_len, out_len, bytes, opcode, cmdlen;
35884 char *buffer = NULL, sense[SCSI_SENSE_BUFFERSIZE]; 36398 char *buffer = NULL, sense[SCSI_SENSE_BUFFERSIZE];
@@ -35887,7 +36401,7 @@ index 625e3e4..b5339f9 100644
35887 36401
35888 if (!sic) 36402 if (!sic)
35889 return -EINVAL; 36403 return -EINVAL;
35890@@ -448,9 +462,18 @@ int sg_scsi_ioctl(struct request_queue *q, struct gendisk *disk, fmode_t mode, 36404@@ -450,9 +464,18 @@ int sg_scsi_ioctl(struct request_queue *q, struct gendisk *disk, fmode_t mode,
35891 */ 36405 */
35892 err = -EFAULT; 36406 err = -EFAULT;
35893 rq->cmd_len = cmdlen; 36407 rq->cmd_len = cmdlen;
@@ -35930,7 +36444,7 @@ index 7bdd61b..afec999 100644
35930 static void cryptd_queue_worker(struct work_struct *work); 36444 static void cryptd_queue_worker(struct work_struct *work);
35931 36445
35932diff --git a/crypto/pcrypt.c b/crypto/pcrypt.c 36446diff --git a/crypto/pcrypt.c b/crypto/pcrypt.c
35933index f8c920c..ab2cb5a 100644 36447index 309d345..1632720 100644
35934--- a/crypto/pcrypt.c 36448--- a/crypto/pcrypt.c
35935+++ b/crypto/pcrypt.c 36449+++ b/crypto/pcrypt.c
35936@@ -440,7 +440,7 @@ static int pcrypt_sysfs_add(struct padata_instance *pinst, const char *name) 36450@@ -440,7 +440,7 @@ static int pcrypt_sysfs_add(struct padata_instance *pinst, const char *name)
@@ -35965,10 +36479,10 @@ index 15dddc1..b61cf0c 100644
35965 36479
35966 /* 36480 /*
35967diff --git a/drivers/acpi/apei/apei-internal.h b/drivers/acpi/apei/apei-internal.h 36481diff --git a/drivers/acpi/apei/apei-internal.h b/drivers/acpi/apei/apei-internal.h
35968index 21ba34a..cb05966 100644 36482index e5bcd91..74f050d 100644
35969--- a/drivers/acpi/apei/apei-internal.h 36483--- a/drivers/acpi/apei/apei-internal.h
35970+++ b/drivers/acpi/apei/apei-internal.h 36484+++ b/drivers/acpi/apei/apei-internal.h
35971@@ -20,7 +20,7 @@ typedef int (*apei_exec_ins_func_t)(struct apei_exec_context *ctx, 36485@@ -19,7 +19,7 @@ typedef int (*apei_exec_ins_func_t)(struct apei_exec_context *ctx,
35972 struct apei_exec_ins_type { 36486 struct apei_exec_ins_type {
35973 u32 flags; 36487 u32 flags;
35974 apei_exec_ins_func_t run; 36488 apei_exec_ins_func_t run;
@@ -35978,10 +36492,10 @@ index 21ba34a..cb05966 100644
35978 struct apei_exec_context { 36492 struct apei_exec_context {
35979 u32 ip; 36493 u32 ip;
35980diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c 36494diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c
35981index a30bc31..b91c4d5 100644 36495index dab7cb7..f0d2994 100644
35982--- a/drivers/acpi/apei/ghes.c 36496--- a/drivers/acpi/apei/ghes.c
35983+++ b/drivers/acpi/apei/ghes.c 36497+++ b/drivers/acpi/apei/ghes.c
35984@@ -498,7 +498,7 @@ static void __ghes_print_estatus(const char *pfx, 36498@@ -500,7 +500,7 @@ static void __ghes_print_estatus(const char *pfx,
35985 const struct acpi_hest_generic *generic, 36499 const struct acpi_hest_generic *generic,
35986 const struct acpi_generic_status *estatus) 36500 const struct acpi_generic_status *estatus)
35987 { 36501 {
@@ -35990,7 +36504,7 @@ index a30bc31..b91c4d5 100644
35990 unsigned int curr_seqno; 36504 unsigned int curr_seqno;
35991 char pfx_seq[64]; 36505 char pfx_seq[64];
35992 36506
35993@@ -509,7 +509,7 @@ static void __ghes_print_estatus(const char *pfx, 36507@@ -511,7 +511,7 @@ static void __ghes_print_estatus(const char *pfx,
35994 else 36508 else
35995 pfx = KERN_ERR; 36509 pfx = KERN_ERR;
35996 } 36510 }
@@ -36017,10 +36531,10 @@ index a83e3c6..c3d617f 100644
36017 bgrt_kobj = kobject_create_and_add("bgrt", acpi_kobj); 36531 bgrt_kobj = kobject_create_and_add("bgrt", acpi_kobj);
36018 if (!bgrt_kobj) 36532 if (!bgrt_kobj)
36019diff --git a/drivers/acpi/blacklist.c b/drivers/acpi/blacklist.c 36533diff --git a/drivers/acpi/blacklist.c b/drivers/acpi/blacklist.c
36020index 078c4f7..410e272 100644 36534index afec452..c5d8b96 100644
36021--- a/drivers/acpi/blacklist.c 36535--- a/drivers/acpi/blacklist.c
36022+++ b/drivers/acpi/blacklist.c 36536+++ b/drivers/acpi/blacklist.c
36023@@ -52,7 +52,7 @@ struct acpi_blacklist_item { 36537@@ -51,7 +51,7 @@ struct acpi_blacklist_item {
36024 u32 is_critical_error; 36538 u32 is_critical_error;
36025 }; 36539 };
36026 36540
@@ -36029,7 +36543,7 @@ index 078c4f7..410e272 100644
36029 36543
36030 /* 36544 /*
36031 * POLICY: If *anything* doesn't work, put it on the blacklist. 36545 * POLICY: If *anything* doesn't work, put it on the blacklist.
36032@@ -164,7 +164,7 @@ static int __init dmi_disable_osi_win8(const struct dmi_system_id *d) 36546@@ -163,7 +163,7 @@ static int __init dmi_disable_osi_win8(const struct dmi_system_id *d)
36033 return 0; 36547 return 0;
36034 } 36548 }
36035 36549
@@ -36039,7 +36553,7 @@ index 078c4f7..410e272 100644
36039 .callback = dmi_disable_osi_vista, 36553 .callback = dmi_disable_osi_vista,
36040 .ident = "Fujitsu Siemens", 36554 .ident = "Fujitsu Siemens",
36041diff --git a/drivers/acpi/custom_method.c b/drivers/acpi/custom_method.c 36555diff --git a/drivers/acpi/custom_method.c b/drivers/acpi/custom_method.c
36042index 12b62f2..dc2aac8 100644 36556index c68e724..e863008 100644
36043--- a/drivers/acpi/custom_method.c 36557--- a/drivers/acpi/custom_method.c
36044+++ b/drivers/acpi/custom_method.c 36558+++ b/drivers/acpi/custom_method.c
36045@@ -29,6 +29,10 @@ static ssize_t cm_write(struct file *file, const char __user * user_buf, 36559@@ -29,6 +29,10 @@ static ssize_t cm_write(struct file *file, const char __user * user_buf,
@@ -36054,10 +36568,10 @@ index 12b62f2..dc2aac8 100644
36054 /* parse the table header to get the table length */ 36568 /* parse the table header to get the table length */
36055 if (count <= sizeof(struct acpi_table_header)) 36569 if (count <= sizeof(struct acpi_table_header))
36056diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c 36570diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
36057index 644516d..643937e 100644 36571index 3dca36d..abaf070 100644
36058--- a/drivers/acpi/processor_idle.c 36572--- a/drivers/acpi/processor_idle.c
36059+++ b/drivers/acpi/processor_idle.c 36573+++ b/drivers/acpi/processor_idle.c
36060@@ -963,7 +963,7 @@ static int acpi_processor_setup_cpuidle_states(struct acpi_processor *pr) 36574@@ -952,7 +952,7 @@ static int acpi_processor_setup_cpuidle_states(struct acpi_processor *pr)
36061 { 36575 {
36062 int i, count = CPUIDLE_DRIVER_STATE_START; 36576 int i, count = CPUIDLE_DRIVER_STATE_START;
36063 struct acpi_processor_cx *cx; 36577 struct acpi_processor_cx *cx;
@@ -36067,7 +36581,7 @@ index 644516d..643937e 100644
36067 36581
36068 if (!pr->flags.power_setup_done) 36582 if (!pr->flags.power_setup_done)
36069diff --git a/drivers/acpi/sysfs.c b/drivers/acpi/sysfs.c 36583diff --git a/drivers/acpi/sysfs.c b/drivers/acpi/sysfs.c
36070index 6dbc3ca..b8b59a0 100644 36584index 91a32ce..d77fcaf 100644
36071--- a/drivers/acpi/sysfs.c 36585--- a/drivers/acpi/sysfs.c
36072+++ b/drivers/acpi/sysfs.c 36586+++ b/drivers/acpi/sysfs.c
36073@@ -425,11 +425,11 @@ static u32 num_counters; 36587@@ -425,11 +425,11 @@ static u32 num_counters;
@@ -36085,7 +36599,7 @@ index 6dbc3ca..b8b59a0 100644
36085 static void delete_gpe_attr_array(void) 36599 static void delete_gpe_attr_array(void)
36086 { 36600 {
36087diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c 36601diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c
36088index c482f8c..c832240 100644 36602index 36605ab..6ef6d4b 100644
36089--- a/drivers/ata/libahci.c 36603--- a/drivers/ata/libahci.c
36090+++ b/drivers/ata/libahci.c 36604+++ b/drivers/ata/libahci.c
36091@@ -1239,7 +1239,7 @@ int ahci_kick_engine(struct ata_port *ap) 36605@@ -1239,7 +1239,7 @@ int ahci_kick_engine(struct ata_port *ap)
@@ -36098,7 +36612,7 @@ index c482f8c..c832240 100644
36098 unsigned long timeout_msec) 36612 unsigned long timeout_msec)
36099 { 36613 {
36100diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c 36614diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
36101index 8cb2522..a815e54 100644 36615index 0a79c54..c1b92ed 100644
36102--- a/drivers/ata/libata-core.c 36616--- a/drivers/ata/libata-core.c
36103+++ b/drivers/ata/libata-core.c 36617+++ b/drivers/ata/libata-core.c
36104@@ -98,7 +98,7 @@ static unsigned int ata_dev_set_xfermode(struct ata_device *dev); 36618@@ -98,7 +98,7 @@ static unsigned int ata_dev_set_xfermode(struct ata_device *dev);
@@ -36110,7 +36624,7 @@ index 8cb2522..a815e54 100644
36110 36624
36111 struct ata_force_param { 36625 struct ata_force_param {
36112 const char *name; 36626 const char *name;
36113@@ -4851,7 +4851,7 @@ void ata_qc_free(struct ata_queued_cmd *qc) 36627@@ -4858,7 +4858,7 @@ void ata_qc_free(struct ata_queued_cmd *qc)
36114 struct ata_port *ap; 36628 struct ata_port *ap;
36115 unsigned int tag; 36629 unsigned int tag;
36116 36630
@@ -36119,7 +36633,7 @@ index 8cb2522..a815e54 100644
36119 ap = qc->ap; 36633 ap = qc->ap;
36120 36634
36121 qc->flags = 0; 36635 qc->flags = 0;
36122@@ -4867,7 +4867,7 @@ void __ata_qc_complete(struct ata_queued_cmd *qc) 36636@@ -4874,7 +4874,7 @@ void __ata_qc_complete(struct ata_queued_cmd *qc)
36123 struct ata_port *ap; 36637 struct ata_port *ap;
36124 struct ata_link *link; 36638 struct ata_link *link;
36125 36639
@@ -36128,7 +36642,7 @@ index 8cb2522..a815e54 100644
36128 WARN_ON_ONCE(!(qc->flags & ATA_QCFLAG_ACTIVE)); 36642 WARN_ON_ONCE(!(qc->flags & ATA_QCFLAG_ACTIVE));
36129 ap = qc->ap; 36643 ap = qc->ap;
36130 link = qc->dev->link; 36644 link = qc->dev->link;
36131@@ -5986,6 +5986,7 @@ static void ata_finalize_port_ops(struct ata_port_operations *ops) 36645@@ -5993,6 +5993,7 @@ static void ata_finalize_port_ops(struct ata_port_operations *ops)
36132 return; 36646 return;
36133 36647
36134 spin_lock(&lock); 36648 spin_lock(&lock);
@@ -36136,7 +36650,7 @@ index 8cb2522..a815e54 100644
36136 36650
36137 for (cur = ops->inherits; cur; cur = cur->inherits) { 36651 for (cur = ops->inherits; cur; cur = cur->inherits) {
36138 void **inherit = (void **)cur; 36652 void **inherit = (void **)cur;
36139@@ -5999,8 +6000,9 @@ static void ata_finalize_port_ops(struct ata_port_operations *ops) 36653@@ -6006,8 +6007,9 @@ static void ata_finalize_port_ops(struct ata_port_operations *ops)
36140 if (IS_ERR(*pp)) 36654 if (IS_ERR(*pp))
36141 *pp = NULL; 36655 *pp = NULL;
36142 36656
@@ -36147,7 +36661,7 @@ index 8cb2522..a815e54 100644
36147 spin_unlock(&lock); 36661 spin_unlock(&lock);
36148 } 36662 }
36149 36663
36150@@ -6193,7 +6195,7 @@ int ata_host_register(struct ata_host *host, struct scsi_host_template *sht) 36664@@ -6200,7 +6202,7 @@ int ata_host_register(struct ata_host *host, struct scsi_host_template *sht)
36151 36665
36152 /* give ports names and add SCSI hosts */ 36666 /* give ports names and add SCSI hosts */
36153 for (i = 0; i < host->n_ports; i++) { 36667 for (i = 0; i < host->n_ports; i++) {
@@ -36450,10 +36964,10 @@ index 204814e..cede831 100644
36450 fore200e->tx_sat++; 36964 fore200e->tx_sat++;
36451 DPRINTK(2, "tx queue of device %s is saturated, PDU dropped - heartbeat is %08x\n", 36965 DPRINTK(2, "tx queue of device %s is saturated, PDU dropped - heartbeat is %08x\n",
36452diff --git a/drivers/atm/he.c b/drivers/atm/he.c 36966diff --git a/drivers/atm/he.c b/drivers/atm/he.c
36453index 8557adc..3fb5d55 100644 36967index aa6be26..f70a785 100644
36454--- a/drivers/atm/he.c 36968--- a/drivers/atm/he.c
36455+++ b/drivers/atm/he.c 36969+++ b/drivers/atm/he.c
36456@@ -1691,7 +1691,7 @@ he_service_rbrq(struct he_dev *he_dev, int group) 36970@@ -1690,7 +1690,7 @@ he_service_rbrq(struct he_dev *he_dev, int group)
36457 36971
36458 if (RBRQ_HBUF_ERR(he_dev->rbrq_head)) { 36972 if (RBRQ_HBUF_ERR(he_dev->rbrq_head)) {
36459 hprintk("HBUF_ERR! (cid 0x%x)\n", cid); 36973 hprintk("HBUF_ERR! (cid 0x%x)\n", cid);
@@ -36462,7 +36976,7 @@ index 8557adc..3fb5d55 100644
36462 goto return_host_buffers; 36976 goto return_host_buffers;
36463 } 36977 }
36464 36978
36465@@ -1718,7 +1718,7 @@ he_service_rbrq(struct he_dev *he_dev, int group) 36979@@ -1717,7 +1717,7 @@ he_service_rbrq(struct he_dev *he_dev, int group)
36466 RBRQ_LEN_ERR(he_dev->rbrq_head) 36980 RBRQ_LEN_ERR(he_dev->rbrq_head)
36467 ? "LEN_ERR" : "", 36981 ? "LEN_ERR" : "",
36468 vcc->vpi, vcc->vci); 36982 vcc->vpi, vcc->vci);
@@ -36471,7 +36985,7 @@ index 8557adc..3fb5d55 100644
36471 goto return_host_buffers; 36985 goto return_host_buffers;
36472 } 36986 }
36473 36987
36474@@ -1770,7 +1770,7 @@ he_service_rbrq(struct he_dev *he_dev, int group) 36988@@ -1769,7 +1769,7 @@ he_service_rbrq(struct he_dev *he_dev, int group)
36475 vcc->push(vcc, skb); 36989 vcc->push(vcc, skb);
36476 spin_lock(&he_dev->global_lock); 36990 spin_lock(&he_dev->global_lock);
36477 36991
@@ -36480,7 +36994,7 @@ index 8557adc..3fb5d55 100644
36480 36994
36481 return_host_buffers: 36995 return_host_buffers:
36482 ++pdus_assembled; 36996 ++pdus_assembled;
36483@@ -2096,7 +2096,7 @@ __enqueue_tpd(struct he_dev *he_dev, struct he_tpd *tpd, unsigned cid) 36997@@ -2095,7 +2095,7 @@ __enqueue_tpd(struct he_dev *he_dev, struct he_tpd *tpd, unsigned cid)
36484 tpd->vcc->pop(tpd->vcc, tpd->skb); 36998 tpd->vcc->pop(tpd->vcc, tpd->skb);
36485 else 36999 else
36486 dev_kfree_skb_any(tpd->skb); 37000 dev_kfree_skb_any(tpd->skb);
@@ -36489,7 +37003,7 @@ index 8557adc..3fb5d55 100644
36489 } 37003 }
36490 pci_pool_free(he_dev->tpd_pool, tpd, TPD_ADDR(tpd->status)); 37004 pci_pool_free(he_dev->tpd_pool, tpd, TPD_ADDR(tpd->status));
36491 return; 37005 return;
36492@@ -2508,7 +2508,7 @@ he_send(struct atm_vcc *vcc, struct sk_buff *skb) 37006@@ -2507,7 +2507,7 @@ he_send(struct atm_vcc *vcc, struct sk_buff *skb)
36493 vcc->pop(vcc, skb); 37007 vcc->pop(vcc, skb);
36494 else 37008 else
36495 dev_kfree_skb_any(skb); 37009 dev_kfree_skb_any(skb);
@@ -36498,7 +37012,7 @@ index 8557adc..3fb5d55 100644
36498 return -EINVAL; 37012 return -EINVAL;
36499 } 37013 }
36500 37014
36501@@ -2519,7 +2519,7 @@ he_send(struct atm_vcc *vcc, struct sk_buff *skb) 37015@@ -2518,7 +2518,7 @@ he_send(struct atm_vcc *vcc, struct sk_buff *skb)
36502 vcc->pop(vcc, skb); 37016 vcc->pop(vcc, skb);
36503 else 37017 else
36504 dev_kfree_skb_any(skb); 37018 dev_kfree_skb_any(skb);
@@ -36507,7 +37021,7 @@ index 8557adc..3fb5d55 100644
36507 return -EINVAL; 37021 return -EINVAL;
36508 } 37022 }
36509 #endif 37023 #endif
36510@@ -2531,7 +2531,7 @@ he_send(struct atm_vcc *vcc, struct sk_buff *skb) 37024@@ -2530,7 +2530,7 @@ he_send(struct atm_vcc *vcc, struct sk_buff *skb)
36511 vcc->pop(vcc, skb); 37025 vcc->pop(vcc, skb);
36512 else 37026 else
36513 dev_kfree_skb_any(skb); 37027 dev_kfree_skb_any(skb);
@@ -36516,7 +37030,7 @@ index 8557adc..3fb5d55 100644
36516 spin_unlock_irqrestore(&he_dev->global_lock, flags); 37030 spin_unlock_irqrestore(&he_dev->global_lock, flags);
36517 return -ENOMEM; 37031 return -ENOMEM;
36518 } 37032 }
36519@@ -2573,7 +2573,7 @@ he_send(struct atm_vcc *vcc, struct sk_buff *skb) 37033@@ -2572,7 +2572,7 @@ he_send(struct atm_vcc *vcc, struct sk_buff *skb)
36520 vcc->pop(vcc, skb); 37034 vcc->pop(vcc, skb);
36521 else 37035 else
36522 dev_kfree_skb_any(skb); 37036 dev_kfree_skb_any(skb);
@@ -36525,7 +37039,7 @@ index 8557adc..3fb5d55 100644
36525 spin_unlock_irqrestore(&he_dev->global_lock, flags); 37039 spin_unlock_irqrestore(&he_dev->global_lock, flags);
36526 return -ENOMEM; 37040 return -ENOMEM;
36527 } 37041 }
36528@@ -2604,7 +2604,7 @@ he_send(struct atm_vcc *vcc, struct sk_buff *skb) 37042@@ -2603,7 +2603,7 @@ he_send(struct atm_vcc *vcc, struct sk_buff *skb)
36529 __enqueue_tpd(he_dev, tpd, cid); 37043 __enqueue_tpd(he_dev, tpd, cid);
36530 spin_unlock_irqrestore(&he_dev->global_lock, flags); 37044 spin_unlock_irqrestore(&he_dev->global_lock, flags);
36531 37045
@@ -36873,7 +37387,7 @@ index fa7d701..1e404c7 100644
36873 lvcc->rx.buf.ptr = &lvcc->rx.buf.start[SERVICE_GET_END(s) * 4]; 37387 lvcc->rx.buf.ptr = &lvcc->rx.buf.start[SERVICE_GET_END(s) * 4];
36874 cardvcc_write(lvcc, SERVICE_GET_END(s), vcc_rxreadptr); 37388 cardvcc_write(lvcc, SERVICE_GET_END(s), vcc_rxreadptr);
36875diff --git a/drivers/atm/nicstar.c b/drivers/atm/nicstar.c 37389diff --git a/drivers/atm/nicstar.c b/drivers/atm/nicstar.c
36876index 5aca5f4..ce3a6b0 100644 37390index 9587e95..b45c5cb 100644
36877--- a/drivers/atm/nicstar.c 37391--- a/drivers/atm/nicstar.c
36878+++ b/drivers/atm/nicstar.c 37392+++ b/drivers/atm/nicstar.c
36879@@ -1640,7 +1640,7 @@ static int ns_send(struct atm_vcc *vcc, struct sk_buff *skb) 37393@@ -1640,7 +1640,7 @@ static int ns_send(struct atm_vcc *vcc, struct sk_buff *skb)
@@ -37078,7 +37592,7 @@ index 5aca5f4..ce3a6b0 100644
37078 } 37592 }
37079 37593
37080diff --git a/drivers/atm/solos-pci.c b/drivers/atm/solos-pci.c 37594diff --git a/drivers/atm/solos-pci.c b/drivers/atm/solos-pci.c
37081index 32784d1..4a8434a 100644 37595index e3fb496..d9646bf 100644
37082--- a/drivers/atm/solos-pci.c 37596--- a/drivers/atm/solos-pci.c
37083+++ b/drivers/atm/solos-pci.c 37597+++ b/drivers/atm/solos-pci.c
37084@@ -838,7 +838,7 @@ void solos_bh(unsigned long card_arg) 37598@@ -838,7 +838,7 @@ void solos_bh(unsigned long card_arg)
@@ -37194,10 +37708,10 @@ index 969c3c2..9b72956 100644
37194 } 37708 }
37195 37709
37196diff --git a/drivers/base/bus.c b/drivers/base/bus.c 37710diff --git a/drivers/base/bus.c b/drivers/base/bus.c
37197index 73f6c29..b0c0e13 100644 37711index 59dc808..f10c74e 100644
37198--- a/drivers/base/bus.c 37712--- a/drivers/base/bus.c
37199+++ b/drivers/base/bus.c 37713+++ b/drivers/base/bus.c
37200@@ -1115,7 +1115,7 @@ int subsys_interface_register(struct subsys_interface *sif) 37714@@ -1124,7 +1124,7 @@ int subsys_interface_register(struct subsys_interface *sif)
37201 return -EINVAL; 37715 return -EINVAL;
37202 37716
37203 mutex_lock(&subsys->p->mutex); 37717 mutex_lock(&subsys->p->mutex);
@@ -37206,7 +37720,7 @@ index 73f6c29..b0c0e13 100644
37206 if (sif->add_dev) { 37720 if (sif->add_dev) {
37207 subsys_dev_iter_init(&iter, subsys, NULL, NULL); 37721 subsys_dev_iter_init(&iter, subsys, NULL, NULL);
37208 while ((dev = subsys_dev_iter_next(&iter))) 37722 while ((dev = subsys_dev_iter_next(&iter)))
37209@@ -1140,7 +1140,7 @@ void subsys_interface_unregister(struct subsys_interface *sif) 37723@@ -1149,7 +1149,7 @@ void subsys_interface_unregister(struct subsys_interface *sif)
37210 subsys = sif->subsys; 37724 subsys = sif->subsys;
37211 37725
37212 mutex_lock(&subsys->p->mutex); 37726 mutex_lock(&subsys->p->mutex);
@@ -37216,7 +37730,7 @@ index 73f6c29..b0c0e13 100644
37216 subsys_dev_iter_init(&iter, subsys, NULL, NULL); 37730 subsys_dev_iter_init(&iter, subsys, NULL, NULL);
37217 while ((dev = subsys_dev_iter_next(&iter))) 37731 while ((dev = subsys_dev_iter_next(&iter)))
37218diff --git a/drivers/base/devtmpfs.c b/drivers/base/devtmpfs.c 37732diff --git a/drivers/base/devtmpfs.c b/drivers/base/devtmpfs.c
37219index 0f38201..6c2b444 100644 37733index 25798db..15f130e 100644
37220--- a/drivers/base/devtmpfs.c 37734--- a/drivers/base/devtmpfs.c
37221+++ b/drivers/base/devtmpfs.c 37735+++ b/drivers/base/devtmpfs.c
37222@@ -354,7 +354,7 @@ int devtmpfs_mount(const char *mntdir) 37736@@ -354,7 +354,7 @@ int devtmpfs_mount(const char *mntdir)
@@ -37365,7 +37879,7 @@ index e8d11b6..7b1b36f 100644
37365 } 37879 }
37366 EXPORT_SYMBOL_GPL(unregister_syscore_ops); 37880 EXPORT_SYMBOL_GPL(unregister_syscore_ops);
37367diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c 37881diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
37368index b35fc4f..c902870 100644 37882index 036e8ab..6221dec 100644
37369--- a/drivers/block/cciss.c 37883--- a/drivers/block/cciss.c
37370+++ b/drivers/block/cciss.c 37884+++ b/drivers/block/cciss.c
37371@@ -3011,7 +3011,7 @@ static void start_io(ctlr_info_t *h) 37885@@ -3011,7 +3011,7 @@ static void start_io(ctlr_info_t *h)
@@ -37720,7 +38234,7 @@ index 89c497c..9c736ae 100644
37720 38234
37721 /** 38235 /**
37722diff --git a/drivers/block/drbd/drbd_main.c b/drivers/block/drbd/drbd_main.c 38236diff --git a/drivers/block/drbd/drbd_main.c b/drivers/block/drbd/drbd_main.c
37723index 9e3818b..7b64c92 100644 38237index 929468e..7d934eb 100644
37724--- a/drivers/block/drbd/drbd_main.c 38238--- a/drivers/block/drbd/drbd_main.c
37725+++ b/drivers/block/drbd/drbd_main.c 38239+++ b/drivers/block/drbd/drbd_main.c
37726@@ -1317,7 +1317,7 @@ static int _drbd_send_ack(struct drbd_conf *mdev, enum drbd_packet cmd, 38240@@ -1317,7 +1317,7 @@ static int _drbd_send_ack(struct drbd_conf *mdev, enum drbd_packet cmd,
@@ -37732,7 +38246,7 @@ index 9e3818b..7b64c92 100644
37732 return drbd_send_command(mdev, sock, cmd, sizeof(*p), NULL, 0); 38246 return drbd_send_command(mdev, sock, cmd, sizeof(*p), NULL, 0);
37733 } 38247 }
37734 38248
37735@@ -1619,7 +1619,7 @@ int drbd_send_dblock(struct drbd_conf *mdev, struct drbd_request *req) 38249@@ -1622,7 +1622,7 @@ int drbd_send_dblock(struct drbd_conf *mdev, struct drbd_request *req)
37736 return -EIO; 38250 return -EIO;
37737 p->sector = cpu_to_be64(req->i.sector); 38251 p->sector = cpu_to_be64(req->i.sector);
37738 p->block_id = (unsigned long)req; 38252 p->block_id = (unsigned long)req;
@@ -37741,7 +38255,7 @@ index 9e3818b..7b64c92 100644
37741 dp_flags = bio_flags_to_wire(mdev, req->master_bio->bi_rw); 38255 dp_flags = bio_flags_to_wire(mdev, req->master_bio->bi_rw);
37742 if (mdev->state.conn >= C_SYNC_SOURCE && 38256 if (mdev->state.conn >= C_SYNC_SOURCE &&
37743 mdev->state.conn <= C_PAUSED_SYNC_T) 38257 mdev->state.conn <= C_PAUSED_SYNC_T)
37744@@ -2574,8 +2574,8 @@ void conn_destroy(struct kref *kref) 38258@@ -2577,8 +2577,8 @@ void conn_destroy(struct kref *kref)
37745 { 38259 {
37746 struct drbd_tconn *tconn = container_of(kref, struct drbd_tconn, kref); 38260 struct drbd_tconn *tconn = container_of(kref, struct drbd_tconn, kref);
37747 38261
@@ -37775,7 +38289,7 @@ index c706d50..5e1b472 100644
37775 if (!msg) 38289 if (!msg)
37776 goto failed; 38290 goto failed;
37777diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c 38291diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c
37778index 6fa6673..b7f97e9 100644 38292index d073305..4998fea 100644
37779--- a/drivers/block/drbd/drbd_receiver.c 38293--- a/drivers/block/drbd/drbd_receiver.c
37780+++ b/drivers/block/drbd/drbd_receiver.c 38294+++ b/drivers/block/drbd/drbd_receiver.c
37781@@ -834,7 +834,7 @@ int drbd_connected(struct drbd_conf *mdev) 38295@@ -834,7 +834,7 @@ int drbd_connected(struct drbd_conf *mdev)
@@ -37828,7 +38342,7 @@ index 6fa6673..b7f97e9 100644
37828 list_add(&epoch->list, &tconn->current_epoch->list); 38342 list_add(&epoch->list, &tconn->current_epoch->list);
37829 tconn->current_epoch = epoch; 38343 tconn->current_epoch = epoch;
37830 tconn->epochs++; 38344 tconn->epochs++;
37831@@ -2163,7 +2163,7 @@ static int receive_Data(struct drbd_tconn *tconn, struct packet_info *pi) 38345@@ -2164,7 +2164,7 @@ static int receive_Data(struct drbd_tconn *tconn, struct packet_info *pi)
37832 38346
37833 err = wait_for_and_update_peer_seq(mdev, peer_seq); 38347 err = wait_for_and_update_peer_seq(mdev, peer_seq);
37834 drbd_send_ack_dp(mdev, P_NEG_ACK, p, pi->size); 38348 drbd_send_ack_dp(mdev, P_NEG_ACK, p, pi->size);
@@ -37837,7 +38351,7 @@ index 6fa6673..b7f97e9 100644
37837 err2 = drbd_drain_block(mdev, pi->size); 38351 err2 = drbd_drain_block(mdev, pi->size);
37838 if (!err) 38352 if (!err)
37839 err = err2; 38353 err = err2;
37840@@ -2197,7 +2197,7 @@ static int receive_Data(struct drbd_tconn *tconn, struct packet_info *pi) 38354@@ -2198,7 +2198,7 @@ static int receive_Data(struct drbd_tconn *tconn, struct packet_info *pi)
37841 38355
37842 spin_lock(&tconn->epoch_lock); 38356 spin_lock(&tconn->epoch_lock);
37843 peer_req->epoch = tconn->current_epoch; 38357 peer_req->epoch = tconn->current_epoch;
@@ -37846,7 +38360,7 @@ index 6fa6673..b7f97e9 100644
37846 atomic_inc(&peer_req->epoch->active); 38360 atomic_inc(&peer_req->epoch->active);
37847 spin_unlock(&tconn->epoch_lock); 38361 spin_unlock(&tconn->epoch_lock);
37848 38362
37849@@ -4344,7 +4344,7 @@ struct data_cmd { 38363@@ -4345,7 +4345,7 @@ struct data_cmd {
37850 int expect_payload; 38364 int expect_payload;
37851 size_t pkt_size; 38365 size_t pkt_size;
37852 int (*fn)(struct drbd_tconn *, struct packet_info *); 38366 int (*fn)(struct drbd_tconn *, struct packet_info *);
@@ -37855,7 +38369,7 @@ index 6fa6673..b7f97e9 100644
37855 38369
37856 static struct data_cmd drbd_cmd_handler[] = { 38370 static struct data_cmd drbd_cmd_handler[] = {
37857 [P_DATA] = { 1, sizeof(struct p_data), receive_Data }, 38371 [P_DATA] = { 1, sizeof(struct p_data), receive_Data },
37858@@ -4464,7 +4464,7 @@ static void conn_disconnect(struct drbd_tconn *tconn) 38372@@ -4465,7 +4465,7 @@ static void conn_disconnect(struct drbd_tconn *tconn)
37859 if (!list_empty(&tconn->current_epoch->list)) 38373 if (!list_empty(&tconn->current_epoch->list))
37860 conn_err(tconn, "ASSERTION FAILED: tconn->current_epoch->list not empty\n"); 38374 conn_err(tconn, "ASSERTION FAILED: tconn->current_epoch->list not empty\n");
37861 /* ok, no more ee's on the fly, it is safe to reset the epoch_size */ 38375 /* ok, no more ee's on the fly, it is safe to reset the epoch_size */
@@ -37864,7 +38378,7 @@ index 6fa6673..b7f97e9 100644
37864 tconn->send.seen_any_write_yet = false; 38378 tconn->send.seen_any_write_yet = false;
37865 38379
37866 conn_info(tconn, "Connection closed\n"); 38380 conn_info(tconn, "Connection closed\n");
37867@@ -5220,7 +5220,7 @@ static int tconn_finish_peer_reqs(struct drbd_tconn *tconn) 38381@@ -5221,7 +5221,7 @@ static int tconn_finish_peer_reqs(struct drbd_tconn *tconn)
37868 struct asender_cmd { 38382 struct asender_cmd {
37869 size_t pkt_size; 38383 size_t pkt_size;
37870 int (*fn)(struct drbd_tconn *tconn, struct packet_info *); 38384 int (*fn)(struct drbd_tconn *tconn, struct packet_info *);
@@ -37874,7 +38388,7 @@ index 6fa6673..b7f97e9 100644
37874 static struct asender_cmd asender_tbl[] = { 38388 static struct asender_cmd asender_tbl[] = {
37875 [P_PING] = { 0, got_Ping }, 38389 [P_PING] = { 0, got_Ping },
37876diff --git a/drivers/block/loop.c b/drivers/block/loop.c 38390diff --git a/drivers/block/loop.c b/drivers/block/loop.c
37877index c8dac73..1800093 100644 38391index 66e8c3b..9b68dd9 100644
37878--- a/drivers/block/loop.c 38392--- a/drivers/block/loop.c
37879+++ b/drivers/block/loop.c 38393+++ b/drivers/block/loop.c
37880@@ -232,7 +232,7 @@ static int __do_lo_send_write(struct file *file, 38394@@ -232,7 +232,7 @@ static int __do_lo_send_write(struct file *file,
@@ -37887,10 +38401,10 @@ index c8dac73..1800093 100644
37887 file_end_write(file); 38401 file_end_write(file);
37888 if (likely(bw == len)) 38402 if (likely(bw == len))
37889diff --git a/drivers/block/null_blk.c b/drivers/block/null_blk.c 38403diff --git a/drivers/block/null_blk.c b/drivers/block/null_blk.c
37890index 83a598e..2de5ce3 100644 38404index 091b9ea..f5428f8 100644
37891--- a/drivers/block/null_blk.c 38405--- a/drivers/block/null_blk.c
37892+++ b/drivers/block/null_blk.c 38406+++ b/drivers/block/null_blk.c
37893@@ -407,14 +407,24 @@ static int null_init_hctx(struct blk_mq_hw_ctx *hctx, void *data, 38407@@ -382,15 +382,25 @@ static int null_init_hctx(struct blk_mq_hw_ctx *hctx, void *data,
37894 return 0; 38408 return 0;
37895 } 38409 }
37896 38410
@@ -37901,6 +38415,7 @@ index 83a598e..2de5ce3 100644
37901+ .queue_rq = null_queue_rq, 38415+ .queue_rq = null_queue_rq,
37902+ .map_queue = blk_mq_map_queue, 38416+ .map_queue = blk_mq_map_queue,
37903 .init_hctx = null_init_hctx, 38417 .init_hctx = null_init_hctx,
38418 .complete = null_softirq_done_fn,
37904+ .alloc_hctx = blk_mq_alloc_single_hw_queue, 38419+ .alloc_hctx = blk_mq_alloc_single_hw_queue,
37905+ .free_hctx = blk_mq_free_single_hw_queue, 38420+ .free_hctx = blk_mq_free_single_hw_queue,
37906+}; 38421+};
@@ -37919,7 +38434,7 @@ index 83a598e..2de5ce3 100644
37919 .queue_depth = 64, 38434 .queue_depth = 64,
37920 .cmd_size = sizeof(struct nullb_cmd), 38435 .cmd_size = sizeof(struct nullb_cmd),
37921 .flags = BLK_MQ_F_SHOULD_MERGE, 38436 .flags = BLK_MQ_F_SHOULD_MERGE,
37922@@ -545,13 +555,8 @@ static int null_add_dev(void) 38437@@ -521,13 +531,8 @@ static int null_add_dev(void)
37923 null_mq_reg.queue_depth = hw_queue_depth; 38438 null_mq_reg.queue_depth = hw_queue_depth;
37924 null_mq_reg.nr_hw_queues = submit_queues; 38439 null_mq_reg.nr_hw_queues = submit_queues;
37925 38440
@@ -37936,7 +38451,7 @@ index 83a598e..2de5ce3 100644
37936 nullb->q = blk_mq_init_queue(&null_mq_reg, nullb); 38451 nullb->q = blk_mq_init_queue(&null_mq_reg, nullb);
37937 } else if (queue_mode == NULL_Q_BIO) { 38452 } else if (queue_mode == NULL_Q_BIO) {
37938diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c 38453diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c
37939index ff8668c..f62167a 100644 38454index a2af73d..c0b8f61 100644
37940--- a/drivers/block/pktcdvd.c 38455--- a/drivers/block/pktcdvd.c
37941+++ b/drivers/block/pktcdvd.c 38456+++ b/drivers/block/pktcdvd.c
37942@@ -108,7 +108,7 @@ static int pkt_seq_show(struct seq_file *m, void *p); 38457@@ -108,7 +108,7 @@ static int pkt_seq_show(struct seq_file *m, void *p);
@@ -37948,7 +38463,7 @@ index ff8668c..f62167a 100644
37948 } 38463 }
37949 38464
37950 /* 38465 /*
37951@@ -1883,7 +1883,7 @@ static noinline_for_stack int pkt_probe_settings(struct pktcdvd_device *pd) 38466@@ -1888,7 +1888,7 @@ static noinline_for_stack int pkt_probe_settings(struct pktcdvd_device *pd)
37952 return -EROFS; 38467 return -EROFS;
37953 } 38468 }
37954 pd->settings.fp = ti.fp; 38469 pd->settings.fp = ti.fp;
@@ -38040,19 +38555,6 @@ index f038dba..bb74c08 100644
38040 struct hci_dev *hdev; 38555 struct hci_dev *hdev;
38041 int err; 38556 int err;
38042 38557
38043diff --git a/drivers/bus/arm-cci.c b/drivers/bus/arm-cci.c
38044index b6739cb..962fd35 100644
38045--- a/drivers/bus/arm-cci.c
38046+++ b/drivers/bus/arm-cci.c
38047@@ -979,7 +979,7 @@ static int cci_probe(void)
38048
38049 nb_cci_ports = cci_config->nb_ace + cci_config->nb_ace_lite;
38050
38051- ports = kcalloc(sizeof(*ports), nb_cci_ports, GFP_KERNEL);
38052+ ports = kcalloc(nb_cci_ports, sizeof(*ports), GFP_KERNEL);
38053 if (!ports)
38054 return -ENOMEM;
38055
38056diff --git a/drivers/cdrom/cdrom.c b/drivers/cdrom/cdrom.c 38558diff --git a/drivers/cdrom/cdrom.c b/drivers/cdrom/cdrom.c
38057index 8a3aff7..d7538c2 100644 38559index 8a3aff7..d7538c2 100644
38058--- a/drivers/cdrom/cdrom.c 38560--- a/drivers/cdrom/cdrom.c
@@ -38106,7 +38608,7 @@ index 8a3aff7..d7538c2 100644
38106 return 1; 38608 return 1;
38107 38609
38108diff --git a/drivers/cdrom/gdrom.c b/drivers/cdrom/gdrom.c 38610diff --git a/drivers/cdrom/gdrom.c b/drivers/cdrom/gdrom.c
38109index 5980cb9..6d7bd7e 100644 38611index 51e75ad..39c4c76 100644
38110--- a/drivers/cdrom/gdrom.c 38612--- a/drivers/cdrom/gdrom.c
38111+++ b/drivers/cdrom/gdrom.c 38613+++ b/drivers/cdrom/gdrom.c
38112@@ -491,7 +491,6 @@ static struct cdrom_device_ops gdrom_ops = { 38614@@ -491,7 +491,6 @@ static struct cdrom_device_ops gdrom_ops = {
@@ -38118,7 +38620,7 @@ index 5980cb9..6d7bd7e 100644
38118 38620
38119 static int gdrom_bdops_open(struct block_device *bdev, fmode_t mode) 38621 static int gdrom_bdops_open(struct block_device *bdev, fmode_t mode)
38120diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig 38622diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig
38121index fa3243d..8c98297 100644 38623index 1386749..5430258 100644
38122--- a/drivers/char/Kconfig 38624--- a/drivers/char/Kconfig
38123+++ b/drivers/char/Kconfig 38625+++ b/drivers/char/Kconfig
38124@@ -8,7 +8,8 @@ source "drivers/tty/Kconfig" 38626@@ -8,7 +8,8 @@ source "drivers/tty/Kconfig"
@@ -38131,7 +38633,7 @@ index fa3243d..8c98297 100644
38131 help 38633 help
38132 Say Y here if you want to support the /dev/kmem device. The 38634 Say Y here if you want to support the /dev/kmem device. The
38133 /dev/kmem device is rarely used, but can be used for certain 38635 /dev/kmem device is rarely used, but can be used for certain
38134@@ -576,6 +577,7 @@ config DEVPORT 38636@@ -577,6 +578,7 @@ config DEVPORT
38135 bool 38637 bool
38136 depends on !M68K 38638 depends on !M68K
38137 depends on ISA || PCI 38639 depends on ISA || PCI
@@ -38153,10 +38655,18 @@ index a48e05b..6bac831 100644
38153 kfree(usegment); 38655 kfree(usegment);
38154 kfree(ksegment); 38656 kfree(ksegment);
38155diff --git a/drivers/char/agp/frontend.c b/drivers/char/agp/frontend.c 38657diff --git a/drivers/char/agp/frontend.c b/drivers/char/agp/frontend.c
38156index 1b19239..b87b143 100644 38658index 1b19239..963967b 100644
38157--- a/drivers/char/agp/frontend.c 38659--- a/drivers/char/agp/frontend.c
38158+++ b/drivers/char/agp/frontend.c 38660+++ b/drivers/char/agp/frontend.c
38159@@ -819,7 +819,7 @@ static int agpioc_reserve_wrap(struct agp_file_private *priv, void __user *arg) 38661@@ -731,6 +731,7 @@ static int agpioc_info_wrap(struct agp_file_private *priv, void __user *arg)
38662
38663 agp_copy_info(agp_bridge, &kerninfo);
38664
38665+ memset(&userinfo, 0, sizeof(userinfo));
38666 userinfo.version.major = kerninfo.version.major;
38667 userinfo.version.minor = kerninfo.version.minor;
38668 userinfo.bridge_id = kerninfo.device->vendor |
38669@@ -819,7 +820,7 @@ static int agpioc_reserve_wrap(struct agp_file_private *priv, void __user *arg)
38160 if (copy_from_user(&reserve, arg, sizeof(struct agp_region))) 38670 if (copy_from_user(&reserve, arg, sizeof(struct agp_region)))
38161 return -EFAULT; 38671 return -EFAULT;
38162 38672
@@ -38165,7 +38675,7 @@ index 1b19239..b87b143 100644
38165 return -EFAULT; 38675 return -EFAULT;
38166 38676
38167 client = agp_find_client_by_pid(reserve.pid); 38677 client = agp_find_client_by_pid(reserve.pid);
38168@@ -849,7 +849,7 @@ static int agpioc_reserve_wrap(struct agp_file_private *priv, void __user *arg) 38678@@ -849,7 +850,7 @@ static int agpioc_reserve_wrap(struct agp_file_private *priv, void __user *arg)
38169 if (segment == NULL) 38679 if (segment == NULL)
38170 return -ENOMEM; 38680 return -ENOMEM;
38171 38681
@@ -38187,10 +38697,10 @@ index 4f94375..413694e 100644
38187 return -EINVAL; 38697 return -EINVAL;
38188 else 38698 else
38189diff --git a/drivers/char/hpet.c b/drivers/char/hpet.c 38699diff --git a/drivers/char/hpet.c b/drivers/char/hpet.c
38190index 5d9c31d..c94ccb5 100644 38700index d5d4cd8..22d561d 100644
38191--- a/drivers/char/hpet.c 38701--- a/drivers/char/hpet.c
38192+++ b/drivers/char/hpet.c 38702+++ b/drivers/char/hpet.c
38193@@ -578,7 +578,7 @@ static inline unsigned long hpet_time_div(struct hpets *hpets, 38703@@ -575,7 +575,7 @@ static inline unsigned long hpet_time_div(struct hpets *hpets,
38194 } 38704 }
38195 38705
38196 static int 38706 static int
@@ -38247,7 +38757,7 @@ index ec4e10f..f2a763b 100644
38247 intf->proc_dir = NULL; 38757 intf->proc_dir = NULL;
38248 38758
38249diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c 38759diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c
38250index 15e4a60..b046093 100644 38760index 03f4189..e79f5e0 100644
38251--- a/drivers/char/ipmi/ipmi_si_intf.c 38761--- a/drivers/char/ipmi/ipmi_si_intf.c
38252+++ b/drivers/char/ipmi/ipmi_si_intf.c 38762+++ b/drivers/char/ipmi/ipmi_si_intf.c
38253@@ -280,7 +280,7 @@ struct smi_info { 38763@@ -280,7 +280,7 @@ struct smi_info {
@@ -38271,7 +38781,7 @@ index 15e4a60..b046093 100644
38271 38781
38272 #define SI_MAX_PARMS 4 38782 #define SI_MAX_PARMS 4
38273 38783
38274@@ -3324,7 +3324,7 @@ static int try_smi_init(struct smi_info *new_smi) 38784@@ -3339,7 +3339,7 @@ static int try_smi_init(struct smi_info *new_smi)
38275 atomic_set(&new_smi->req_events, 0); 38785 atomic_set(&new_smi->req_events, 0);
38276 new_smi->run_to_completion = 0; 38786 new_smi->run_to_completion = 0;
38277 for (i = 0; i < SI_NUM_STATS; i++) 38787 for (i = 0; i < SI_NUM_STATS; i++)
@@ -38281,7 +38791,7 @@ index 15e4a60..b046093 100644
38281 new_smi->interrupt_disabled = 1; 38791 new_smi->interrupt_disabled = 1;
38282 atomic_set(&new_smi->stop_operation, 0); 38792 atomic_set(&new_smi->stop_operation, 0);
38283diff --git a/drivers/char/mem.c b/drivers/char/mem.c 38793diff --git a/drivers/char/mem.c b/drivers/char/mem.c
38284index f895a8c..2bc9147 100644 38794index 92c5937..1be4e4d 100644
38285--- a/drivers/char/mem.c 38795--- a/drivers/char/mem.c
38286+++ b/drivers/char/mem.c 38796+++ b/drivers/char/mem.c
38287@@ -18,6 +18,7 @@ 38797@@ -18,6 +18,7 @@
@@ -38292,7 +38802,7 @@ index f895a8c..2bc9147 100644
38292 #include <linux/ptrace.h> 38802 #include <linux/ptrace.h>
38293 #include <linux/device.h> 38803 #include <linux/device.h>
38294 #include <linux/highmem.h> 38804 #include <linux/highmem.h>
38295@@ -37,6 +38,10 @@ 38805@@ -36,6 +37,10 @@
38296 38806
38297 #define DEVPORT_MINOR 4 38807 #define DEVPORT_MINOR 4
38298 38808
@@ -38303,7 +38813,7 @@ index f895a8c..2bc9147 100644
38303 static inline unsigned long size_inside_page(unsigned long start, 38813 static inline unsigned long size_inside_page(unsigned long start,
38304 unsigned long size) 38814 unsigned long size)
38305 { 38815 {
38306@@ -68,9 +73,13 @@ static inline int range_is_allowed(unsigned long pfn, unsigned long size) 38816@@ -67,9 +72,13 @@ static inline int range_is_allowed(unsigned long pfn, unsigned long size)
38307 38817
38308 while (cursor < to) { 38818 while (cursor < to) {
38309 if (!devmem_is_allowed(pfn)) { 38819 if (!devmem_is_allowed(pfn)) {
@@ -38317,7 +38827,7 @@ index f895a8c..2bc9147 100644
38317 return 0; 38827 return 0;
38318 } 38828 }
38319 cursor += PAGE_SIZE; 38829 cursor += PAGE_SIZE;
38320@@ -78,6 +87,11 @@ static inline int range_is_allowed(unsigned long pfn, unsigned long size) 38830@@ -77,6 +86,11 @@ static inline int range_is_allowed(unsigned long pfn, unsigned long size)
38321 } 38831 }
38322 return 1; 38832 return 1;
38323 } 38833 }
@@ -38329,7 +38839,7 @@ index f895a8c..2bc9147 100644
38329 #else 38839 #else
38330 static inline int range_is_allowed(unsigned long pfn, unsigned long size) 38840 static inline int range_is_allowed(unsigned long pfn, unsigned long size)
38331 { 38841 {
38332@@ -120,6 +134,7 @@ static ssize_t read_mem(struct file *file, char __user *buf, 38842@@ -119,6 +133,7 @@ static ssize_t read_mem(struct file *file, char __user *buf,
38333 38843
38334 while (count > 0) { 38844 while (count > 0) {
38335 unsigned long remaining; 38845 unsigned long remaining;
@@ -38337,7 +38847,7 @@ index f895a8c..2bc9147 100644
38337 38847
38338 sz = size_inside_page(p, count); 38848 sz = size_inside_page(p, count);
38339 38849
38340@@ -135,7 +150,23 @@ static ssize_t read_mem(struct file *file, char __user *buf, 38850@@ -134,7 +149,23 @@ static ssize_t read_mem(struct file *file, char __user *buf,
38341 if (!ptr) 38851 if (!ptr)
38342 return -EFAULT; 38852 return -EFAULT;
38343 38853
@@ -38362,7 +38872,7 @@ index f895a8c..2bc9147 100644
38362 unxlate_dev_mem_ptr(p, ptr); 38872 unxlate_dev_mem_ptr(p, ptr);
38363 if (remaining) 38873 if (remaining)
38364 return -EFAULT; 38874 return -EFAULT;
38365@@ -364,9 +395,8 @@ static ssize_t read_kmem(struct file *file, char __user *buf, 38875@@ -363,9 +394,8 @@ static ssize_t read_kmem(struct file *file, char __user *buf,
38366 size_t count, loff_t *ppos) 38876 size_t count, loff_t *ppos)
38367 { 38877 {
38368 unsigned long p = *ppos; 38878 unsigned long p = *ppos;
@@ -38373,7 +38883,7 @@ index f895a8c..2bc9147 100644
38373 38883
38374 read = 0; 38884 read = 0;
38375 if (p < (unsigned long) high_memory) { 38885 if (p < (unsigned long) high_memory) {
38376@@ -388,6 +418,8 @@ static ssize_t read_kmem(struct file *file, char __user *buf, 38886@@ -387,6 +417,8 @@ static ssize_t read_kmem(struct file *file, char __user *buf,
38377 } 38887 }
38378 #endif 38888 #endif
38379 while (low_count > 0) { 38889 while (low_count > 0) {
@@ -38382,7 +38892,7 @@ index f895a8c..2bc9147 100644
38382 sz = size_inside_page(p, low_count); 38892 sz = size_inside_page(p, low_count);
38383 38893
38384 /* 38894 /*
38385@@ -397,7 +429,22 @@ static ssize_t read_kmem(struct file *file, char __user *buf, 38895@@ -396,7 +428,22 @@ static ssize_t read_kmem(struct file *file, char __user *buf,
38386 */ 38896 */
38387 kbuf = xlate_dev_kmem_ptr((char *)p); 38897 kbuf = xlate_dev_kmem_ptr((char *)p);
38388 38898
@@ -38406,7 +38916,7 @@ index f895a8c..2bc9147 100644
38406 return -EFAULT; 38916 return -EFAULT;
38407 buf += sz; 38917 buf += sz;
38408 p += sz; 38918 p += sz;
38409@@ -822,6 +869,9 @@ static const struct memdev { 38919@@ -821,6 +868,9 @@ static const struct memdev {
38410 #ifdef CONFIG_PRINTK 38920 #ifdef CONFIG_PRINTK
38411 [11] = { "kmsg", 0644, &kmsg_fops, NULL }, 38921 [11] = { "kmsg", 0644, &kmsg_fops, NULL },
38412 #endif 38922 #endif
@@ -38416,7 +38926,7 @@ index f895a8c..2bc9147 100644
38416 }; 38926 };
38417 38927
38418 static int memory_open(struct inode *inode, struct file *filp) 38928 static int memory_open(struct inode *inode, struct file *filp)
38419@@ -893,7 +943,7 @@ static int __init chr_dev_init(void) 38929@@ -892,7 +942,7 @@ static int __init chr_dev_init(void)
38420 continue; 38930 continue;
38421 38931
38422 device_create(mem_class, NULL, MKDEV(MEM_MAJOR, minor), 38932 device_create(mem_class, NULL, MKDEV(MEM_MAJOR, minor),
@@ -38439,7 +38949,7 @@ index 9df78e2..01ba9ae 100644
38439 38949
38440 *ppos = i; 38950 *ppos = i;
38441diff --git a/drivers/char/pcmcia/synclink_cs.c b/drivers/char/pcmcia/synclink_cs.c 38951diff --git a/drivers/char/pcmcia/synclink_cs.c b/drivers/char/pcmcia/synclink_cs.c
38442index d39cca6..8c1e269 100644 38952index 8320abd..ec48108 100644
38443--- a/drivers/char/pcmcia/synclink_cs.c 38953--- a/drivers/char/pcmcia/synclink_cs.c
38444+++ b/drivers/char/pcmcia/synclink_cs.c 38954+++ b/drivers/char/pcmcia/synclink_cs.c
38445@@ -2345,9 +2345,9 @@ static void mgslpc_close(struct tty_struct *tty, struct file * filp) 38955@@ -2345,9 +2345,9 @@ static void mgslpc_close(struct tty_struct *tty, struct file * filp)
@@ -38677,7 +39187,7 @@ index 7cc1fe22..b602d6b 100644
38677 39187
38678 return 0; 39188 return 0;
38679diff --git a/drivers/char/tpm/tpm_acpi.c b/drivers/char/tpm/tpm_acpi.c 39189diff --git a/drivers/char/tpm/tpm_acpi.c b/drivers/char/tpm/tpm_acpi.c
38680index 64420b3..5c40b56 100644 39190index b9a57fa..5bb9e38 100644
38681--- a/drivers/char/tpm/tpm_acpi.c 39191--- a/drivers/char/tpm/tpm_acpi.c
38682+++ b/drivers/char/tpm/tpm_acpi.c 39192+++ b/drivers/char/tpm/tpm_acpi.c
38683@@ -98,11 +98,12 @@ int read_log(struct tpm_bios_log *log) 39193@@ -98,11 +98,12 @@ int read_log(struct tpm_bios_log *log)
@@ -38727,7 +39237,7 @@ index 59f7cb2..bac8b6d 100644
38727 return 0; 39237 return 0;
38728 } 39238 }
38729diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c 39239diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c
38730index feea87c..18aefff 100644 39240index 6928d09..ff6abe8 100644
38731--- a/drivers/char/virtio_console.c 39241--- a/drivers/char/virtio_console.c
38732+++ b/drivers/char/virtio_console.c 39242+++ b/drivers/char/virtio_console.c
38733@@ -684,7 +684,7 @@ static ssize_t fill_readbuf(struct port *port, char *out_buf, size_t out_count, 39243@@ -684,7 +684,7 @@ static ssize_t fill_readbuf(struct port *port, char *out_buf, size_t out_count,
@@ -38749,10 +39259,10 @@ index feea87c..18aefff 100644
38749 39259
38750 static int wait_port_writable(struct port *port, bool nonblock) 39260 static int wait_port_writable(struct port *port, bool nonblock)
38751diff --git a/drivers/clk/clk-composite.c b/drivers/clk/clk-composite.c 39261diff --git a/drivers/clk/clk-composite.c b/drivers/clk/clk-composite.c
38752index a33f46f..a720eed 100644 39262index 57a078e..c17cde8 100644
38753--- a/drivers/clk/clk-composite.c 39263--- a/drivers/clk/clk-composite.c
38754+++ b/drivers/clk/clk-composite.c 39264+++ b/drivers/clk/clk-composite.c
38755@@ -122,7 +122,7 @@ struct clk *clk_register_composite(struct device *dev, const char *name, 39265@@ -146,7 +146,7 @@ struct clk *clk_register_composite(struct device *dev, const char *name,
38756 struct clk *clk; 39266 struct clk *clk;
38757 struct clk_init_data init; 39267 struct clk_init_data init;
38758 struct clk_composite *composite; 39268 struct clk_composite *composite;
@@ -38762,7 +39272,7 @@ index a33f46f..a720eed 100644
38762 composite = kzalloc(sizeof(*composite), GFP_KERNEL); 39272 composite = kzalloc(sizeof(*composite), GFP_KERNEL);
38763 if (!composite) { 39273 if (!composite) {
38764diff --git a/drivers/clk/socfpga/clk.c b/drivers/clk/socfpga/clk.c 39274diff --git a/drivers/clk/socfpga/clk.c b/drivers/clk/socfpga/clk.c
38765index 81dd31a..ef5c542 100644 39275index 5983a26..65d5f46 100644
38766--- a/drivers/clk/socfpga/clk.c 39276--- a/drivers/clk/socfpga/clk.c
38767+++ b/drivers/clk/socfpga/clk.c 39277+++ b/drivers/clk/socfpga/clk.c
38768@@ -22,6 +22,7 @@ 39278@@ -22,6 +22,7 @@
@@ -38773,7 +39283,7 @@ index 81dd31a..ef5c542 100644
38773 39283
38774 /* Clock Manager offsets */ 39284 /* Clock Manager offsets */
38775 #define CLKMGR_CTRL 0x0 39285 #define CLKMGR_CTRL 0x0
38776@@ -152,8 +153,10 @@ static __init struct clk *socfpga_clk_init(struct device_node *node, 39286@@ -150,8 +151,10 @@ static __init struct clk *socfpga_clk_init(struct device_node *node,
38777 streq(clk_name, "periph_pll") || 39287 streq(clk_name, "periph_pll") ||
38778 streq(clk_name, "sdram_pll")) { 39288 streq(clk_name, "sdram_pll")) {
38779 socfpga_clk->hw.bit_idx = SOCFPGA_PLL_EXT_ENA; 39289 socfpga_clk->hw.bit_idx = SOCFPGA_PLL_EXT_ENA;
@@ -38786,7 +39296,7 @@ index 81dd31a..ef5c542 100644
38786 } 39296 }
38787 39297
38788 clk = clk_register(NULL, &socfpga_clk->hw.hw); 39298 clk = clk_register(NULL, &socfpga_clk->hw.hw);
38789@@ -244,7 +247,7 @@ static unsigned long socfpga_clk_recalc_rate(struct clk_hw *hwclk, 39299@@ -242,7 +245,7 @@ static unsigned long socfpga_clk_recalc_rate(struct clk_hw *hwclk,
38790 return parent_rate / div; 39300 return parent_rate / div;
38791 } 39301 }
38792 39302
@@ -38796,19 +39306,10 @@ index 81dd31a..ef5c542 100644
38796 .get_parent = socfpga_clk_get_parent, 39306 .get_parent = socfpga_clk_get_parent,
38797 .set_parent = socfpga_clk_set_parent, 39307 .set_parent = socfpga_clk_set_parent,
38798diff --git a/drivers/cpufreq/acpi-cpufreq.c b/drivers/cpufreq/acpi-cpufreq.c 39308diff --git a/drivers/cpufreq/acpi-cpufreq.c b/drivers/cpufreq/acpi-cpufreq.c
38799index caf41eb..223d27a 100644 39309index 18448a7..d5fad43 100644
38800--- a/drivers/cpufreq/acpi-cpufreq.c 39310--- a/drivers/cpufreq/acpi-cpufreq.c
38801+++ b/drivers/cpufreq/acpi-cpufreq.c 39311+++ b/drivers/cpufreq/acpi-cpufreq.c
38802@@ -172,7 +172,7 @@ static ssize_t show_global_boost(struct kobject *kobj, 39312@@ -676,8 +676,11 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)
38803 return sprintf(buf, "%u\n", boost_enabled);
38804 }
38805
38806-static struct global_attr global_boost = __ATTR(boost, 0644,
38807+static global_attr_no_const global_boost = __ATTR(boost, 0644,
38808 show_global_boost,
38809 store_global_boost);
38810
38811@@ -693,8 +693,11 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)
38812 data->acpi_data = per_cpu_ptr(acpi_perf_data, cpu); 39313 data->acpi_data = per_cpu_ptr(acpi_perf_data, cpu);
38813 per_cpu(acfreq_data, cpu) = data; 39314 per_cpu(acfreq_data, cpu) = data;
38814 39315
@@ -38822,7 +39323,7 @@ index caf41eb..223d27a 100644
38822 39323
38823 result = acpi_processor_register_performance(data->acpi_data, cpu); 39324 result = acpi_processor_register_performance(data->acpi_data, cpu);
38824 if (result) 39325 if (result)
38825@@ -827,7 +830,9 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy) 39326@@ -810,7 +813,9 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)
38826 policy->cur = acpi_cpufreq_guess_freq(data, policy->cpu); 39327 policy->cur = acpi_cpufreq_guess_freq(data, policy->cpu);
38827 break; 39328 break;
38828 case ACPI_ADR_SPACE_FIXED_HARDWARE: 39329 case ACPI_ADR_SPACE_FIXED_HARDWARE:
@@ -38833,11 +39334,24 @@ index caf41eb..223d27a 100644
38833 break; 39334 break;
38834 default: 39335 default:
38835 break; 39336 break;
39337@@ -905,8 +910,10 @@ static void __init acpi_cpufreq_boost_init(void)
39338 if (!msrs)
39339 return;
39340
39341- acpi_cpufreq_driver.boost_supported = true;
39342- acpi_cpufreq_driver.boost_enabled = boost_state(0);
39343+ pax_open_kernel();
39344+ *(bool *)&acpi_cpufreq_driver.boost_supported = true;
39345+ *(bool *)&acpi_cpufreq_driver.boost_enabled = boost_state(0);
39346+ pax_close_kernel();
39347 get_online_cpus();
39348
39349 /* Force all MSRs to the same value */
38836diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c 39350diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
38837index 99a443e..8cb6f02 100644 39351index 199b52b..e3503bb 100644
38838--- a/drivers/cpufreq/cpufreq.c 39352--- a/drivers/cpufreq/cpufreq.c
38839+++ b/drivers/cpufreq/cpufreq.c 39353+++ b/drivers/cpufreq/cpufreq.c
38840@@ -1878,7 +1878,7 @@ void cpufreq_unregister_governor(struct cpufreq_governor *governor) 39354@@ -1970,7 +1970,7 @@ void cpufreq_unregister_governor(struct cpufreq_governor *governor)
38841 #endif 39355 #endif
38842 39356
38843 mutex_lock(&cpufreq_governor_mutex); 39357 mutex_lock(&cpufreq_governor_mutex);
@@ -38846,7 +39360,7 @@ index 99a443e..8cb6f02 100644
38846 mutex_unlock(&cpufreq_governor_mutex); 39360 mutex_unlock(&cpufreq_governor_mutex);
38847 return; 39361 return;
38848 } 39362 }
38849@@ -2108,7 +2108,7 @@ static int cpufreq_cpu_callback(struct notifier_block *nfb, 39363@@ -2200,7 +2200,7 @@ static int cpufreq_cpu_callback(struct notifier_block *nfb,
38850 return NOTIFY_OK; 39364 return NOTIFY_OK;
38851 } 39365 }
38852 39366
@@ -38855,7 +39369,27 @@ index 99a443e..8cb6f02 100644
38855 .notifier_call = cpufreq_cpu_callback, 39369 .notifier_call = cpufreq_cpu_callback,
38856 }; 39370 };
38857 39371
38858@@ -2141,8 +2141,11 @@ int cpufreq_register_driver(struct cpufreq_driver *driver_data) 39372@@ -2240,13 +2240,17 @@ int cpufreq_boost_trigger_state(int state)
39373 return 0;
39374
39375 write_lock_irqsave(&cpufreq_driver_lock, flags);
39376- cpufreq_driver->boost_enabled = state;
39377+ pax_open_kernel();
39378+ *(bool *)&cpufreq_driver->boost_enabled = state;
39379+ pax_close_kernel();
39380 write_unlock_irqrestore(&cpufreq_driver_lock, flags);
39381
39382 ret = cpufreq_driver->set_boost(state);
39383 if (ret) {
39384 write_lock_irqsave(&cpufreq_driver_lock, flags);
39385- cpufreq_driver->boost_enabled = !state;
39386+ pax_open_kernel();
39387+ *(bool *)&cpufreq_driver->boost_enabled = !state;
39388+ pax_close_kernel();
39389 write_unlock_irqrestore(&cpufreq_driver_lock, flags);
39390
39391 pr_err("%s: Cannot %s BOOST\n", __func__,
39392@@ -2300,8 +2304,11 @@ int cpufreq_register_driver(struct cpufreq_driver *driver_data)
38859 39393
38860 pr_debug("trying to register driver %s\n", driver_data->name); 39394 pr_debug("trying to register driver %s\n", driver_data->name);
38861 39395
@@ -38869,11 +39403,25 @@ index 99a443e..8cb6f02 100644
38869 39403
38870 write_lock_irqsave(&cpufreq_driver_lock, flags); 39404 write_lock_irqsave(&cpufreq_driver_lock, flags);
38871 if (cpufreq_driver) { 39405 if (cpufreq_driver) {
39406@@ -2316,8 +2323,11 @@ int cpufreq_register_driver(struct cpufreq_driver *driver_data)
39407 * Check if driver provides function to enable boost -
39408 * if not, use cpufreq_boost_set_sw as default
39409 */
39410- if (!cpufreq_driver->set_boost)
39411- cpufreq_driver->set_boost = cpufreq_boost_set_sw;
39412+ if (!cpufreq_driver->set_boost) {
39413+ pax_open_kernel();
39414+ *(void **)&cpufreq_driver->set_boost = cpufreq_boost_set_sw;
39415+ pax_close_kernel();
39416+ }
39417
39418 ret = cpufreq_sysfs_create_file(&boost.attr);
39419 if (ret) {
38872diff --git a/drivers/cpufreq/cpufreq_governor.c b/drivers/cpufreq/cpufreq_governor.c 39420diff --git a/drivers/cpufreq/cpufreq_governor.c b/drivers/cpufreq/cpufreq_governor.c
38873index e6be635..f8a90dc 100644 39421index ba43991..23858ffb 100644
38874--- a/drivers/cpufreq/cpufreq_governor.c 39422--- a/drivers/cpufreq/cpufreq_governor.c
38875+++ b/drivers/cpufreq/cpufreq_governor.c 39423+++ b/drivers/cpufreq/cpufreq_governor.c
38876@@ -187,7 +187,7 @@ int cpufreq_governor_dbs(struct cpufreq_policy *policy, 39424@@ -191,7 +191,7 @@ int cpufreq_governor_dbs(struct cpufreq_policy *policy,
38877 struct dbs_data *dbs_data; 39425 struct dbs_data *dbs_data;
38878 struct od_cpu_dbs_info_s *od_dbs_info = NULL; 39426 struct od_cpu_dbs_info_s *od_dbs_info = NULL;
38879 struct cs_cpu_dbs_info_s *cs_dbs_info = NULL; 39427 struct cs_cpu_dbs_info_s *cs_dbs_info = NULL;
@@ -38882,7 +39430,7 @@ index e6be635..f8a90dc 100644
38882 struct od_dbs_tuners *od_tuners = NULL; 39430 struct od_dbs_tuners *od_tuners = NULL;
38883 struct cs_dbs_tuners *cs_tuners = NULL; 39431 struct cs_dbs_tuners *cs_tuners = NULL;
38884 struct cpu_dbs_common_info *cpu_cdbs; 39432 struct cpu_dbs_common_info *cpu_cdbs;
38885@@ -253,7 +253,7 @@ int cpufreq_governor_dbs(struct cpufreq_policy *policy, 39433@@ -257,7 +257,7 @@ int cpufreq_governor_dbs(struct cpufreq_policy *policy,
38886 39434
38887 if ((cdata->governor == GOV_CONSERVATIVE) && 39435 if ((cdata->governor == GOV_CONSERVATIVE) &&
38888 (!policy->governor->initialized)) { 39436 (!policy->governor->initialized)) {
@@ -38891,7 +39439,7 @@ index e6be635..f8a90dc 100644
38891 39439
38892 cpufreq_register_notifier(cs_ops->notifier_block, 39440 cpufreq_register_notifier(cs_ops->notifier_block,
38893 CPUFREQ_TRANSITION_NOTIFIER); 39441 CPUFREQ_TRANSITION_NOTIFIER);
38894@@ -273,7 +273,7 @@ int cpufreq_governor_dbs(struct cpufreq_policy *policy, 39442@@ -277,7 +277,7 @@ int cpufreq_governor_dbs(struct cpufreq_policy *policy,
38895 39443
38896 if ((dbs_data->cdata->governor == GOV_CONSERVATIVE) && 39444 if ((dbs_data->cdata->governor == GOV_CONSERVATIVE) &&
38897 (policy->governor->initialized == 1)) { 39445 (policy->governor->initialized == 1)) {
@@ -38901,7 +39449,7 @@ index e6be635..f8a90dc 100644
38901 cpufreq_unregister_notifier(cs_ops->notifier_block, 39449 cpufreq_unregister_notifier(cs_ops->notifier_block,
38902 CPUFREQ_TRANSITION_NOTIFIER); 39450 CPUFREQ_TRANSITION_NOTIFIER);
38903diff --git a/drivers/cpufreq/cpufreq_governor.h b/drivers/cpufreq/cpufreq_governor.h 39451diff --git a/drivers/cpufreq/cpufreq_governor.h b/drivers/cpufreq/cpufreq_governor.h
38904index b5f2b86..daa801b 100644 39452index bfb9ae1..e1d3a7e 100644
38905--- a/drivers/cpufreq/cpufreq_governor.h 39453--- a/drivers/cpufreq/cpufreq_governor.h
38906+++ b/drivers/cpufreq/cpufreq_governor.h 39454+++ b/drivers/cpufreq/cpufreq_governor.h
38907@@ -205,7 +205,7 @@ struct common_dbs_data { 39455@@ -205,7 +205,7 @@ struct common_dbs_data {
@@ -38956,24 +39504,11 @@ index 18d4091..434be15 100644
38956 od_set_powersave_bias(0); 39504 od_set_powersave_bias(0);
38957 } 39505 }
38958 EXPORT_SYMBOL_GPL(od_unregister_powersave_bias_handler); 39506 EXPORT_SYMBOL_GPL(od_unregister_powersave_bias_handler);
38959diff --git a/drivers/cpufreq/cpufreq_stats.c b/drivers/cpufreq/cpufreq_stats.c
38960index 4cf0d28..5830372 100644
38961--- a/drivers/cpufreq/cpufreq_stats.c
38962+++ b/drivers/cpufreq/cpufreq_stats.c
38963@@ -352,7 +352,7 @@ static int cpufreq_stat_cpu_callback(struct notifier_block *nfb,
38964 }
38965
38966 /* priority=1 so this will get called before cpufreq_remove_dev */
38967-static struct notifier_block cpufreq_stat_cpu_notifier __refdata = {
38968+static struct notifier_block cpufreq_stat_cpu_notifier = {
38969 .notifier_call = cpufreq_stat_cpu_callback,
38970 .priority = 1,
38971 };
38972diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c 39507diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
38973index b687df8..ae733fc 100644 39508index 2cd36b9..8f07fae 100644
38974--- a/drivers/cpufreq/intel_pstate.c 39509--- a/drivers/cpufreq/intel_pstate.c
38975+++ b/drivers/cpufreq/intel_pstate.c 39510+++ b/drivers/cpufreq/intel_pstate.c
38976@@ -123,10 +123,10 @@ struct pstate_funcs { 39511@@ -124,10 +124,10 @@ struct pstate_funcs {
38977 struct cpu_defaults { 39512 struct cpu_defaults {
38978 struct pstate_adjust_policy pid_policy; 39513 struct pstate_adjust_policy pid_policy;
38979 struct pstate_funcs funcs; 39514 struct pstate_funcs funcs;
@@ -38986,7 +39521,7 @@ index b687df8..ae733fc 100644
38986 39521
38987 struct perf_limits { 39522 struct perf_limits {
38988 int no_turbo; 39523 int no_turbo;
38989@@ -517,7 +517,7 @@ static void intel_pstate_set_pstate(struct cpudata *cpu, int pstate) 39524@@ -518,7 +518,7 @@ static void intel_pstate_set_pstate(struct cpudata *cpu, int pstate)
38990 39525
38991 cpu->pstate.current_pstate = pstate; 39526 cpu->pstate.current_pstate = pstate;
38992 39527
@@ -38995,7 +39530,7 @@ index b687df8..ae733fc 100644
38995 } 39530 }
38996 39531
38997 static inline void intel_pstate_pstate_increase(struct cpudata *cpu, int steps) 39532 static inline void intel_pstate_pstate_increase(struct cpudata *cpu, int steps)
38998@@ -539,12 +539,12 @@ static void intel_pstate_get_cpu_pstates(struct cpudata *cpu) 39533@@ -540,12 +540,12 @@ static void intel_pstate_get_cpu_pstates(struct cpudata *cpu)
38999 { 39534 {
39000 sprintf(cpu->name, "Intel 2nd generation core"); 39535 sprintf(cpu->name, "Intel 2nd generation core");
39001 39536
@@ -39013,7 +39548,7 @@ index b687df8..ae733fc 100644
39013 39548
39014 /* 39549 /*
39015 * goto max pstate so we don't slow up boot if we are built-in if we are 39550 * goto max pstate so we don't slow up boot if we are built-in if we are
39016@@ -808,9 +808,9 @@ static int intel_pstate_msrs_not_valid(void) 39551@@ -832,9 +832,9 @@ static int intel_pstate_msrs_not_valid(void)
39017 rdmsrl(MSR_IA32_APERF, aperf); 39552 rdmsrl(MSR_IA32_APERF, aperf);
39018 rdmsrl(MSR_IA32_MPERF, mperf); 39553 rdmsrl(MSR_IA32_MPERF, mperf);
39019 39554
@@ -39026,7 +39561,7 @@ index b687df8..ae733fc 100644
39026 return -ENODEV; 39561 return -ENODEV;
39027 39562
39028 rdmsrl(MSR_IA32_APERF, tmp); 39563 rdmsrl(MSR_IA32_APERF, tmp);
39029@@ -824,7 +824,7 @@ static int intel_pstate_msrs_not_valid(void) 39564@@ -848,7 +848,7 @@ static int intel_pstate_msrs_not_valid(void)
39030 return 0; 39565 return 0;
39031 } 39566 }
39032 39567
@@ -39035,7 +39570,7 @@ index b687df8..ae733fc 100644
39035 { 39570 {
39036 pid_params.sample_rate_ms = policy->sample_rate_ms; 39571 pid_params.sample_rate_ms = policy->sample_rate_ms;
39037 pid_params.p_gain_pct = policy->p_gain_pct; 39572 pid_params.p_gain_pct = policy->p_gain_pct;
39038@@ -836,11 +836,7 @@ static void copy_pid_params(struct pstate_adjust_policy *policy) 39573@@ -860,11 +860,7 @@ static void copy_pid_params(struct pstate_adjust_policy *policy)
39039 39574
39040 static void copy_cpu_funcs(struct pstate_funcs *funcs) 39575 static void copy_cpu_funcs(struct pstate_funcs *funcs)
39041 { 39576 {
@@ -39081,7 +39616,7 @@ index 3d1cba9..0ab21d2 100644
39081 if (speedstep_detect_processor() == SPEEDSTEP_CPU_P4M) { 39616 if (speedstep_detect_processor() == SPEEDSTEP_CPU_P4M) {
39082 printk(KERN_WARNING PFX "Warning: Pentium 4-M detected. " 39617 printk(KERN_WARNING PFX "Warning: Pentium 4-M detected. "
39083diff --git a/drivers/cpufreq/sparc-us3-cpufreq.c b/drivers/cpufreq/sparc-us3-cpufreq.c 39618diff --git a/drivers/cpufreq/sparc-us3-cpufreq.c b/drivers/cpufreq/sparc-us3-cpufreq.c
39084index 724ffbd..ad83692 100644 39619index 724ffbd..f06aaaa 100644
39085--- a/drivers/cpufreq/sparc-us3-cpufreq.c 39620--- a/drivers/cpufreq/sparc-us3-cpufreq.c
39086+++ b/drivers/cpufreq/sparc-us3-cpufreq.c 39621+++ b/drivers/cpufreq/sparc-us3-cpufreq.c
39087@@ -18,14 +18,12 @@ 39622@@ -18,14 +18,12 @@
@@ -39100,7 +39635,7 @@ index 724ffbd..ad83692 100644
39100 39635
39101 /* UltraSPARC-III has three dividers: 1, 2, and 32. These are controlled 39636 /* UltraSPARC-III has three dividers: 1, 2, and 32. These are controlled
39102 * in the Safari config register. 39637 * in the Safari config register.
39103@@ -156,14 +154,26 @@ static int __init us3_freq_cpu_init(struct cpufreq_policy *policy) 39638@@ -156,18 +154,28 @@ static int __init us3_freq_cpu_init(struct cpufreq_policy *policy)
39104 39639
39105 static int us3_freq_cpu_exit(struct cpufreq_policy *policy) 39640 static int us3_freq_cpu_exit(struct cpufreq_policy *policy)
39106 { 39641 {
@@ -39123,7 +39658,6 @@ index 724ffbd..ad83692 100644
39123+ .target_index = us3_freq_target, 39658+ .target_index = us3_freq_target,
39124+ .get = us3_freq_get, 39659+ .get = us3_freq_get,
39125+ .exit = us3_freq_cpu_exit, 39660+ .exit = us3_freq_cpu_exit,
39126+ .owner = THIS_MODULE,
39127+ .name = "UltraSPARC-III", 39661+ .name = "UltraSPARC-III",
39128+ 39662+
39129+}; 39663+};
@@ -39131,7 +39665,11 @@ index 724ffbd..ad83692 100644
39131 static int __init us3_freq_init(void) 39665 static int __init us3_freq_init(void)
39132 { 39666 {
39133 unsigned long manuf, impl, ver; 39667 unsigned long manuf, impl, ver;
39134@@ -180,55 +190,15 @@ static int __init us3_freq_init(void) 39668- int ret;
39669
39670 if (tlb_type != cheetah && tlb_type != cheetah_plus)
39671 return -ENODEV;
39672@@ -180,55 +188,15 @@ static int __init us3_freq_init(void)
39135 (impl == CHEETAH_IMPL || 39673 (impl == CHEETAH_IMPL ||
39136 impl == CHEETAH_PLUS_IMPL || 39674 impl == CHEETAH_PLUS_IMPL ||
39137 impl == JAGUAR_IMPL || 39675 impl == JAGUAR_IMPL ||
@@ -39291,6 +39829,21 @@ index a0b2f7e..1b6f028 100644
39291 err_out: 39829 err_out:
39292 mutex_unlock(&devfreq_list_lock); 39830 mutex_unlock(&devfreq_list_lock);
39293 39831
39832diff --git a/drivers/dma/sh/shdma-base.c b/drivers/dma/sh/shdma-base.c
39833index 2e7b394..1371a64 100644
39834--- a/drivers/dma/sh/shdma-base.c
39835+++ b/drivers/dma/sh/shdma-base.c
39836@@ -267,8 +267,8 @@ static int shdma_alloc_chan_resources(struct dma_chan *chan)
39837 schan->slave_id = -EINVAL;
39838 }
39839
39840- schan->desc = kcalloc(NR_DESCS_PER_CHANNEL,
39841- sdev->desc_size, GFP_KERNEL);
39842+ schan->desc = kcalloc(sdev->desc_size,
39843+ NR_DESCS_PER_CHANNEL, GFP_KERNEL);
39844 if (!schan->desc) {
39845 ret = -ENOMEM;
39846 goto edescalloc;
39294diff --git a/drivers/dma/sh/shdmac.c b/drivers/dma/sh/shdmac.c 39847diff --git a/drivers/dma/sh/shdmac.c b/drivers/dma/sh/shdmac.c
39295index 0d765c0..60b7480 100644 39848index 0d765c0..60b7480 100644
39296--- a/drivers/dma/sh/shdmac.c 39849--- a/drivers/dma/sh/shdmac.c
@@ -39305,10 +39858,10 @@ index 0d765c0..60b7480 100644
39305 39858
39306 /* Run before NMI debug handler and KGDB */ 39859 /* Run before NMI debug handler and KGDB */
39307diff --git a/drivers/edac/edac_device.c b/drivers/edac/edac_device.c 39860diff --git a/drivers/edac/edac_device.c b/drivers/edac/edac_device.c
39308index 1026743..80b081c 100644 39861index 592af5f..bb1d583 100644
39309--- a/drivers/edac/edac_device.c 39862--- a/drivers/edac/edac_device.c
39310+++ b/drivers/edac/edac_device.c 39863+++ b/drivers/edac/edac_device.c
39311@@ -474,9 +474,9 @@ void edac_device_reset_delay_period(struct edac_device_ctl_info *edac_dev, 39864@@ -477,9 +477,9 @@ void edac_device_reset_delay_period(struct edac_device_ctl_info *edac_dev,
39312 */ 39865 */
39313 int edac_device_alloc_index(void) 39866 int edac_device_alloc_index(void)
39314 { 39867 {
@@ -39321,7 +39874,7 @@ index 1026743..80b081c 100644
39321 EXPORT_SYMBOL_GPL(edac_device_alloc_index); 39874 EXPORT_SYMBOL_GPL(edac_device_alloc_index);
39322 39875
39323diff --git a/drivers/edac/edac_mc_sysfs.c b/drivers/edac/edac_mc_sysfs.c 39876diff --git a/drivers/edac/edac_mc_sysfs.c b/drivers/edac/edac_mc_sysfs.c
39324index e5bdf21..b8f9055 100644 39877index b335c6a..db65b44 100644
39325--- a/drivers/edac/edac_mc_sysfs.c 39878--- a/drivers/edac/edac_mc_sysfs.c
39326+++ b/drivers/edac/edac_mc_sysfs.c 39879+++ b/drivers/edac/edac_mc_sysfs.c
39327@@ -152,7 +152,7 @@ static const char * const edac_caps[] = { 39880@@ -152,7 +152,7 @@ static const char * const edac_caps[] = {
@@ -39524,7 +40077,7 @@ index 2c6d5e1..a2cca6b 100644
39524 static ssize_t show_immediate(struct device *dev, 40077 static ssize_t show_immediate(struct device *dev,
39525 struct device_attribute *dattr, char *buf) 40078 struct device_attribute *dattr, char *buf)
39526diff --git a/drivers/firewire/core-transaction.c b/drivers/firewire/core-transaction.c 40079diff --git a/drivers/firewire/core-transaction.c b/drivers/firewire/core-transaction.c
39527index 0e79951..b180217 100644 40080index eb6935c..3cc2bfa 100644
39528--- a/drivers/firewire/core-transaction.c 40081--- a/drivers/firewire/core-transaction.c
39529+++ b/drivers/firewire/core-transaction.c 40082+++ b/drivers/firewire/core-transaction.c
39530@@ -38,6 +38,7 @@ 40083@@ -38,6 +38,7 @@
@@ -39536,7 +40089,7 @@ index 0e79951..b180217 100644
39536 #include <asm/byteorder.h> 40089 #include <asm/byteorder.h>
39537 40090
39538diff --git a/drivers/firewire/core.h b/drivers/firewire/core.h 40091diff --git a/drivers/firewire/core.h b/drivers/firewire/core.h
39539index 515a42c..5ecf3ba 100644 40092index c98764a..551b520 100644
39540--- a/drivers/firewire/core.h 40093--- a/drivers/firewire/core.h
39541+++ b/drivers/firewire/core.h 40094+++ b/drivers/firewire/core.h
39542@@ -111,6 +111,7 @@ struct fw_card_driver { 40095@@ -111,6 +111,7 @@ struct fw_card_driver {
@@ -39547,6 +40100,34 @@ index 515a42c..5ecf3ba 100644
39547 40100
39548 void fw_card_initialize(struct fw_card *card, 40101 void fw_card_initialize(struct fw_card *card,
39549 const struct fw_card_driver *driver, struct device *device); 40102 const struct fw_card_driver *driver, struct device *device);
40103diff --git a/drivers/firewire/ohci.c b/drivers/firewire/ohci.c
40104index 8db6632..9bbc8ca 100644
40105--- a/drivers/firewire/ohci.c
40106+++ b/drivers/firewire/ohci.c
40107@@ -2049,10 +2049,12 @@ static void bus_reset_work(struct work_struct *work)
40108 be32_to_cpu(ohci->next_header));
40109 }
40110
40111+#ifndef CONFIG_GRKERNSEC
40112 if (param_remote_dma) {
40113 reg_write(ohci, OHCI1394_PhyReqFilterHiSet, ~0);
40114 reg_write(ohci, OHCI1394_PhyReqFilterLoSet, ~0);
40115 }
40116+#endif
40117
40118 spin_unlock_irq(&ohci->lock);
40119
40120@@ -2584,8 +2586,10 @@ static int ohci_enable_phys_dma(struct fw_card *card,
40121 unsigned long flags;
40122 int n, ret = 0;
40123
40124+#ifndef CONFIG_GRKERNSEC
40125 if (param_remote_dma)
40126 return 0;
40127+#endif
40128
40129 /*
40130 * FIXME: Make sure this bitmask is cleared when we clear the busReset
39550diff --git a/drivers/firmware/dmi-id.c b/drivers/firmware/dmi-id.c 40131diff --git a/drivers/firmware/dmi-id.c b/drivers/firmware/dmi-id.c
39551index 94a58a0..f5eba42 100644 40132index 94a58a0..f5eba42 100644
39552--- a/drivers/firmware/dmi-id.c 40133--- a/drivers/firmware/dmi-id.c
@@ -39561,7 +40142,7 @@ index 94a58a0..f5eba42 100644
39561 container_of(_dev_attr, struct dmi_device_attribute, dev_attr) 40142 container_of(_dev_attr, struct dmi_device_attribute, dev_attr)
39562 40143
39563diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c 40144diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c
39564index c7e81ff..94a7401 100644 40145index 17afc51..0ef90cd 100644
39565--- a/drivers/firmware/dmi_scan.c 40146--- a/drivers/firmware/dmi_scan.c
39566+++ b/drivers/firmware/dmi_scan.c 40147+++ b/drivers/firmware/dmi_scan.c
39567@@ -835,7 +835,7 @@ int dmi_walk(void (*decode)(const struct dmi_header *, void *), 40148@@ -835,7 +835,7 @@ int dmi_walk(void (*decode)(const struct dmi_header *, void *),
@@ -39571,7 +40152,7 @@ index c7e81ff..94a7401 100644
39571- dmi_table(buf, dmi_len, dmi_num, decode, private_data); 40152- dmi_table(buf, dmi_len, dmi_num, decode, private_data);
39572+ dmi_table((char __force_kernel *)buf, dmi_len, dmi_num, decode, private_data); 40153+ dmi_table((char __force_kernel *)buf, dmi_len, dmi_num, decode, private_data);
39573 40154
39574 iounmap(buf); 40155 dmi_unmap(buf);
39575 return 0; 40156 return 0;
39576diff --git a/drivers/firmware/efi/cper.c b/drivers/firmware/efi/cper.c 40157diff --git a/drivers/firmware/efi/cper.c b/drivers/firmware/efi/cper.c
39577index 1491dd4..aa910db 100644 40158index 1491dd4..aa910db 100644
@@ -39595,10 +40176,10 @@ index 1491dd4..aa910db 100644
39595 EXPORT_SYMBOL_GPL(cper_next_record_id); 40176 EXPORT_SYMBOL_GPL(cper_next_record_id);
39596 40177
39597diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c 40178diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c
39598index 2e2fbde..7676c8b 100644 40179index 4753bac..02861a2 100644
39599--- a/drivers/firmware/efi/efi.c 40180--- a/drivers/firmware/efi/efi.c
39600+++ b/drivers/firmware/efi/efi.c 40181+++ b/drivers/firmware/efi/efi.c
39601@@ -81,14 +81,16 @@ static struct attribute_group efi_subsys_attr_group = { 40182@@ -120,14 +120,16 @@ static struct attribute_group efi_subsys_attr_group = {
39602 }; 40183 };
39603 40184
39604 static struct efivars generic_efivars; 40185 static struct efivars generic_efivars;
@@ -39649,10 +40230,10 @@ index 2a90ba6..07f3733 100644
39649 ret = sysfs_create_bin_file(firmware_kobj, &memconsole_bin_attr); 40230 ret = sysfs_create_bin_file(firmware_kobj, &memconsole_bin_attr);
39650 40231
39651diff --git a/drivers/gpio/gpio-em.c b/drivers/gpio/gpio-em.c 40232diff --git a/drivers/gpio/gpio-em.c b/drivers/gpio/gpio-em.c
39652index ec19036..8ffafc2 100644 40233index 1e98a98..b444372 100644
39653--- a/drivers/gpio/gpio-em.c 40234--- a/drivers/gpio/gpio-em.c
39654+++ b/drivers/gpio/gpio-em.c 40235+++ b/drivers/gpio/gpio-em.c
39655@@ -257,7 +257,7 @@ static int em_gio_probe(struct platform_device *pdev) 40236@@ -278,7 +278,7 @@ static int em_gio_probe(struct platform_device *pdev)
39656 struct em_gio_priv *p; 40237 struct em_gio_priv *p;
39657 struct resource *io[2], *irq[2]; 40238 struct resource *io[2], *irq[2];
39658 struct gpio_chip *gpio_chip; 40239 struct gpio_chip *gpio_chip;
@@ -39662,7 +40243,7 @@ index ec19036..8ffafc2 100644
39662 int ret; 40243 int ret;
39663 40244
39664diff --git a/drivers/gpio/gpio-ich.c b/drivers/gpio/gpio-ich.c 40245diff --git a/drivers/gpio/gpio-ich.c b/drivers/gpio/gpio-ich.c
39665index 814addb..0937d7f 100644 40246index f5bf3c3..7baaa59 100644
39666--- a/drivers/gpio/gpio-ich.c 40247--- a/drivers/gpio/gpio-ich.c
39667+++ b/drivers/gpio/gpio-ich.c 40248+++ b/drivers/gpio/gpio-ich.c
39668@@ -71,7 +71,7 @@ struct ichx_desc { 40249@@ -71,7 +71,7 @@ struct ichx_desc {
@@ -39675,10 +40256,10 @@ index 814addb..0937d7f 100644
39675 static struct { 40256 static struct {
39676 spinlock_t lock; 40257 spinlock_t lock;
39677diff --git a/drivers/gpio/gpio-rcar.c b/drivers/gpio/gpio-rcar.c 40258diff --git a/drivers/gpio/gpio-rcar.c b/drivers/gpio/gpio-rcar.c
39678index 8b7e719..dc089dc 100644 40259index ca76ce7..68b384b 100644
39679--- a/drivers/gpio/gpio-rcar.c 40260--- a/drivers/gpio/gpio-rcar.c
39680+++ b/drivers/gpio/gpio-rcar.c 40261+++ b/drivers/gpio/gpio-rcar.c
39681@@ -316,7 +316,7 @@ static int gpio_rcar_probe(struct platform_device *pdev) 40262@@ -355,7 +355,7 @@ static int gpio_rcar_probe(struct platform_device *pdev)
39682 struct gpio_rcar_priv *p; 40263 struct gpio_rcar_priv *p;
39683 struct resource *io, *irq; 40264 struct resource *io, *irq;
39684 struct gpio_chip *gpio_chip; 40265 struct gpio_chip *gpio_chip;
@@ -39701,10 +40282,10 @@ index 9902732..64b62dd 100644
39701 return -EINVAL; 40282 return -EINVAL;
39702 } 40283 }
39703diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c 40284diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
39704index d6cf77c..2842146 100644 40285index 3b7d32d..05c2f74 100644
39705--- a/drivers/gpu/drm/drm_crtc.c 40286--- a/drivers/gpu/drm/drm_crtc.c
39706+++ b/drivers/gpu/drm/drm_crtc.c 40287+++ b/drivers/gpu/drm/drm_crtc.c
39707@@ -3102,7 +3102,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev, 40288@@ -3123,7 +3123,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
39708 goto done; 40289 goto done;
39709 } 40290 }
39710 40291
@@ -39713,21 +40294,8 @@ index d6cf77c..2842146 100644
39713 &prop_enum->name, DRM_PROP_NAME_LEN)) { 40294 &prop_enum->name, DRM_PROP_NAME_LEN)) {
39714 ret = -EFAULT; 40295 ret = -EFAULT;
39715 goto done; 40296 goto done;
39716diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c
39717index 01361ab..891e821 100644
39718--- a/drivers/gpu/drm/drm_crtc_helper.c
39719+++ b/drivers/gpu/drm/drm_crtc_helper.c
39720@@ -338,7 +338,7 @@ static bool drm_encoder_crtc_ok(struct drm_encoder *encoder,
39721 struct drm_crtc *tmp;
39722 int crtc_mask = 1;
39723
39724- WARN(!crtc, "checking null crtc?\n");
39725+ BUG_ON(!crtc);
39726
39727 dev = crtc->dev;
39728
39729diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c 40297diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
39730index d9137e4..69b73a0 100644 40298index 345be03..158368d 100644
39731--- a/drivers/gpu/drm/drm_drv.c 40299--- a/drivers/gpu/drm/drm_drv.c
39732+++ b/drivers/gpu/drm/drm_drv.c 40300+++ b/drivers/gpu/drm/drm_drv.c
39733@@ -233,7 +233,7 @@ module_exit(drm_core_exit); 40301@@ -233,7 +233,7 @@ module_exit(drm_core_exit);
@@ -39749,7 +40317,7 @@ index d9137e4..69b73a0 100644
39749 int retcode = -EINVAL; 40317 int retcode = -EINVAL;
39750 char stack_kdata[128]; 40318 char stack_kdata[128];
39751diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c 40319diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c
39752index c5b929c..8a3b8be 100644 40320index 7f2af9a..1561914 100644
39753--- a/drivers/gpu/drm/drm_fops.c 40321--- a/drivers/gpu/drm/drm_fops.c
39754+++ b/drivers/gpu/drm/drm_fops.c 40322+++ b/drivers/gpu/drm/drm_fops.c
39755@@ -97,7 +97,7 @@ int drm_open(struct inode *inode, struct file *filp) 40323@@ -97,7 +97,7 @@ int drm_open(struct inode *inode, struct file *filp)
@@ -39770,7 +40338,7 @@ index c5b929c..8a3b8be 100644
39770 return retcode; 40338 return retcode;
39771 } 40339 }
39772 EXPORT_SYMBOL(drm_open); 40340 EXPORT_SYMBOL(drm_open);
39773@@ -467,7 +467,7 @@ int drm_release(struct inode *inode, struct file *filp) 40341@@ -463,7 +463,7 @@ int drm_release(struct inode *inode, struct file *filp)
39774 40342
39775 mutex_lock(&drm_global_mutex); 40343 mutex_lock(&drm_global_mutex);
39776 40344
@@ -39779,7 +40347,7 @@ index c5b929c..8a3b8be 100644
39779 40347
39780 if (dev->driver->preclose) 40348 if (dev->driver->preclose)
39781 dev->driver->preclose(dev, file_priv); 40349 dev->driver->preclose(dev, file_priv);
39782@@ -476,10 +476,10 @@ int drm_release(struct inode *inode, struct file *filp) 40350@@ -472,10 +472,10 @@ int drm_release(struct inode *inode, struct file *filp)
39783 * Begin inline drm_release 40351 * Begin inline drm_release
39784 */ 40352 */
39785 40353
@@ -39792,15 +40360,15 @@ index c5b929c..8a3b8be 100644
39792 40360
39793 /* Release any auth tokens that might point to this file_priv, 40361 /* Release any auth tokens that might point to this file_priv,
39794 (do that under the drm_global_mutex) */ 40362 (do that under the drm_global_mutex) */
39795@@ -577,7 +577,7 @@ int drm_release(struct inode *inode, struct file *filp) 40363@@ -573,7 +573,7 @@ int drm_release(struct inode *inode, struct file *filp)
39796 * End inline drm_release 40364 * End inline drm_release
39797 */ 40365 */
39798 40366
39799- if (!--dev->open_count) { 40367- if (!--dev->open_count) {
39800+ if (local_dec_and_test(&dev->open_count)) { 40368+ if (local_dec_and_test(&dev->open_count)) {
39801 if (atomic_read(&dev->ioctl_count)) { 40369 retcode = drm_lastclose(dev);
39802 DRM_ERROR("Device busy: %d\n", 40370 if (drm_device_is_unplugged(dev))
39803 atomic_read(&dev->ioctl_count)); 40371 drm_put_dev(dev);
39804diff --git a/drivers/gpu/drm/drm_global.c b/drivers/gpu/drm/drm_global.c 40372diff --git a/drivers/gpu/drm/drm_global.c b/drivers/gpu/drm/drm_global.c
39805index 3d2e91c..d31c4c9 100644 40373index 3d2e91c..d31c4c9 100644
39806--- a/drivers/gpu/drm/drm_global.c 40374--- a/drivers/gpu/drm/drm_global.c
@@ -39863,10 +40431,10 @@ index 3d2e91c..d31c4c9 100644
39863 item->object = NULL; 40431 item->object = NULL;
39864 } 40432 }
39865diff --git a/drivers/gpu/drm/drm_info.c b/drivers/gpu/drm/drm_info.c 40433diff --git a/drivers/gpu/drm/drm_info.c b/drivers/gpu/drm/drm_info.c
39866index 7d5a152..d7186da 100644 40434index 7473035..a48b9c5 100644
39867--- a/drivers/gpu/drm/drm_info.c 40435--- a/drivers/gpu/drm/drm_info.c
39868+++ b/drivers/gpu/drm/drm_info.c 40436+++ b/drivers/gpu/drm/drm_info.c
39869@@ -75,10 +75,14 @@ int drm_vm_info(struct seq_file *m, void *data) 40437@@ -75,10 +75,13 @@ int drm_vm_info(struct seq_file *m, void *data)
39870 struct drm_local_map *map; 40438 struct drm_local_map *map;
39871 struct drm_map_list *r_list; 40439 struct drm_map_list *r_list;
39872 40440
@@ -39880,12 +40448,11 @@ index 7d5a152..d7186da 100644
39880+ [_DRM_SHM] = "SHM", 40448+ [_DRM_SHM] = "SHM",
39881+ [_DRM_AGP] = "AGP", 40449+ [_DRM_AGP] = "AGP",
39882+ [_DRM_SCATTER_GATHER] = "SG", 40450+ [_DRM_SCATTER_GATHER] = "SG",
39883+ [_DRM_CONSISTENT] = "PCI", 40451+ [_DRM_CONSISTENT] = "PCI"};
39884+ [_DRM_GEM] = "GEM" };
39885 const char *type; 40452 const char *type;
39886 int i; 40453 int i;
39887 40454
39888@@ -89,7 +93,7 @@ int drm_vm_info(struct seq_file *m, void *data) 40455@@ -89,7 +92,7 @@ int drm_vm_info(struct seq_file *m, void *data)
39889 map = r_list->map; 40456 map = r_list->map;
39890 if (!map) 40457 if (!map)
39891 continue; 40458 continue;
@@ -39894,7 +40461,7 @@ index 7d5a152..d7186da 100644
39894 type = "??"; 40461 type = "??";
39895 else 40462 else
39896 type = types[map->type]; 40463 type = types[map->type];
39897@@ -257,7 +261,11 @@ int drm_vma_info(struct seq_file *m, void *data) 40464@@ -261,7 +264,11 @@ int drm_vma_info(struct seq_file *m, void *data)
39898 vma->vm_flags & VM_MAYSHARE ? 's' : 'p', 40465 vma->vm_flags & VM_MAYSHARE ? 's' : 'p',
39899 vma->vm_flags & VM_LOCKED ? 'l' : '-', 40466 vma->vm_flags & VM_LOCKED ? 'l' : '-',
39900 vma->vm_flags & VM_IO ? 'i' : '-', 40467 vma->vm_flags & VM_IO ? 'i' : '-',
@@ -39959,10 +40526,10 @@ index 2f4c4343..dd12cd2 100644
39959 ret = drm_ioctl(filp, cmd, arg); 40526 ret = drm_ioctl(filp, cmd, arg);
39960 40527
39961diff --git a/drivers/gpu/drm/drm_stub.c b/drivers/gpu/drm/drm_stub.c 40528diff --git a/drivers/gpu/drm/drm_stub.c b/drivers/gpu/drm/drm_stub.c
39962index 66dd3a0..3bed6c4 100644 40529index 98a33c580..8fd1c2b 100644
39963--- a/drivers/gpu/drm/drm_stub.c 40530--- a/drivers/gpu/drm/drm_stub.c
39964+++ b/drivers/gpu/drm/drm_stub.c 40531+++ b/drivers/gpu/drm/drm_stub.c
39965@@ -403,7 +403,7 @@ void drm_unplug_dev(struct drm_device *dev) 40532@@ -409,7 +409,7 @@ void drm_unplug_dev(struct drm_device *dev)
39966 40533
39967 drm_device_set_unplugged(dev); 40534 drm_device_set_unplugged(dev);
39968 40535
@@ -40000,10 +40567,10 @@ index d4d16ed..8fb0b51 100644
40000 int front_offset; 40567 int front_offset;
40001 } drm_i810_private_t; 40568 } drm_i810_private_t;
40002diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c 40569diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
40003index 6ed45a9..eb6dc41 100644 40570index b2b46c5..feb9fe7 100644
40004--- a/drivers/gpu/drm/i915/i915_debugfs.c 40571--- a/drivers/gpu/drm/i915/i915_debugfs.c
40005+++ b/drivers/gpu/drm/i915/i915_debugfs.c 40572+++ b/drivers/gpu/drm/i915/i915_debugfs.c
40006@@ -702,7 +702,7 @@ static int i915_interrupt_info(struct seq_file *m, void *data) 40573@@ -713,7 +713,7 @@ static int i915_interrupt_info(struct seq_file *m, void *data)
40007 I915_READ(GTIMR)); 40574 I915_READ(GTIMR));
40008 } 40575 }
40009 seq_printf(m, "Interrupts received: %d\n", 40576 seq_printf(m, "Interrupts received: %d\n",
@@ -40013,10 +40580,10 @@ index 6ed45a9..eb6dc41 100644
40013 if (INTEL_INFO(dev)->gen >= 6) { 40580 if (INTEL_INFO(dev)->gen >= 6) {
40014 seq_printf(m, 40581 seq_printf(m,
40015diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c 40582diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
40016index e02266a..e3411aa 100644 40583index 15a74f9..4278889 100644
40017--- a/drivers/gpu/drm/i915/i915_dma.c 40584--- a/drivers/gpu/drm/i915/i915_dma.c
40018+++ b/drivers/gpu/drm/i915/i915_dma.c 40585+++ b/drivers/gpu/drm/i915/i915_dma.c
40019@@ -1271,7 +1271,7 @@ static bool i915_switcheroo_can_switch(struct pci_dev *pdev) 40586@@ -1273,7 +1273,7 @@ static bool i915_switcheroo_can_switch(struct pci_dev *pdev)
40020 bool can_switch; 40587 bool can_switch;
40021 40588
40022 spin_lock(&dev->count_lock); 40589 spin_lock(&dev->count_lock);
@@ -40026,10 +40593,10 @@ index e02266a..e3411aa 100644
40026 return can_switch; 40593 return can_switch;
40027 } 40594 }
40028diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h 40595diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
40029index 221ac62..f56acc8 100644 40596index 697f215..6f89b7f 100644
40030--- a/drivers/gpu/drm/i915/i915_drv.h 40597--- a/drivers/gpu/drm/i915/i915_drv.h
40031+++ b/drivers/gpu/drm/i915/i915_drv.h 40598+++ b/drivers/gpu/drm/i915/i915_drv.h
40032@@ -1326,7 +1326,7 @@ typedef struct drm_i915_private { 40599@@ -1362,7 +1362,7 @@ typedef struct drm_i915_private {
40033 drm_dma_handle_t *status_page_dmah; 40600 drm_dma_handle_t *status_page_dmah;
40034 struct resource mch_res; 40601 struct resource mch_res;
40035 40602
@@ -40039,10 +40606,10 @@ index 221ac62..f56acc8 100644
40039 /* protects the irq masks */ 40606 /* protects the irq masks */
40040 spinlock_t irq_lock; 40607 spinlock_t irq_lock;
40041diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c 40608diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
40042index a3ba9a8..ee52ddd 100644 40609index d269ecf..6d857bc 100644
40043--- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c 40610--- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
40044+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c 40611+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
40045@@ -861,9 +861,9 @@ i915_gem_check_execbuffer(struct drm_i915_gem_execbuffer2 *exec) 40612@@ -860,9 +860,9 @@ i915_gem_check_execbuffer(struct drm_i915_gem_execbuffer2 *exec)
40046 40613
40047 static int 40614 static int
40048 validate_exec_list(struct drm_i915_gem_exec_object2 *exec, 40615 validate_exec_list(struct drm_i915_gem_exec_object2 *exec,
@@ -40090,10 +40657,10 @@ index 3c59584..500f2e9 100644
40090 40657
40091 return ret; 40658 return ret;
40092diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c 40659diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
40093index a209177..842a89a 100644 40660index d554169..f4426bb 100644
40094--- a/drivers/gpu/drm/i915/i915_irq.c 40661--- a/drivers/gpu/drm/i915/i915_irq.c
40095+++ b/drivers/gpu/drm/i915/i915_irq.c 40662+++ b/drivers/gpu/drm/i915/i915_irq.c
40096@@ -1419,7 +1419,7 @@ static irqreturn_t valleyview_irq_handler(int irq, void *arg) 40663@@ -1438,7 +1438,7 @@ static irqreturn_t valleyview_irq_handler(int irq, void *arg)
40097 int pipe; 40664 int pipe;
40098 u32 pipe_stats[I915_MAX_PIPES]; 40665 u32 pipe_stats[I915_MAX_PIPES];
40099 40666
@@ -40102,7 +40669,7 @@ index a209177..842a89a 100644
40102 40669
40103 while (true) { 40670 while (true) {
40104 iir = I915_READ(VLV_IIR); 40671 iir = I915_READ(VLV_IIR);
40105@@ -1729,7 +1729,7 @@ static irqreturn_t ironlake_irq_handler(int irq, void *arg) 40672@@ -1751,7 +1751,7 @@ static irqreturn_t ironlake_irq_handler(int irq, void *arg)
40106 u32 de_iir, gt_iir, de_ier, sde_ier = 0; 40673 u32 de_iir, gt_iir, de_ier, sde_ier = 0;
40107 irqreturn_t ret = IRQ_NONE; 40674 irqreturn_t ret = IRQ_NONE;
40108 40675
@@ -40111,7 +40678,7 @@ index a209177..842a89a 100644
40111 40678
40112 /* We get interrupts on unclaimed registers, so check for this before we 40679 /* We get interrupts on unclaimed registers, so check for this before we
40113 * do any I915_{READ,WRITE}. */ 40680 * do any I915_{READ,WRITE}. */
40114@@ -1799,7 +1799,7 @@ static irqreturn_t gen8_irq_handler(int irq, void *arg) 40681@@ -1821,7 +1821,7 @@ static irqreturn_t gen8_irq_handler(int irq, void *arg)
40115 uint32_t tmp = 0; 40682 uint32_t tmp = 0;
40116 enum pipe pipe; 40683 enum pipe pipe;
40117 40684
@@ -40120,7 +40687,7 @@ index a209177..842a89a 100644
40120 40687
40121 master_ctl = I915_READ(GEN8_MASTER_IRQ); 40688 master_ctl = I915_READ(GEN8_MASTER_IRQ);
40122 master_ctl &= ~GEN8_MASTER_IRQ_CONTROL; 40689 master_ctl &= ~GEN8_MASTER_IRQ_CONTROL;
40123@@ -2623,7 +2623,7 @@ static void ironlake_irq_preinstall(struct drm_device *dev) 40690@@ -2645,7 +2645,7 @@ static void ironlake_irq_preinstall(struct drm_device *dev)
40124 { 40691 {
40125 drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; 40692 drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
40126 40693
@@ -40129,7 +40696,7 @@ index a209177..842a89a 100644
40129 40696
40130 I915_WRITE(HWSTAM, 0xeffe); 40697 I915_WRITE(HWSTAM, 0xeffe);
40131 40698
40132@@ -2641,7 +2641,7 @@ static void valleyview_irq_preinstall(struct drm_device *dev) 40699@@ -2663,7 +2663,7 @@ static void valleyview_irq_preinstall(struct drm_device *dev)
40133 drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; 40700 drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
40134 int pipe; 40701 int pipe;
40135 40702
@@ -40138,7 +40705,7 @@ index a209177..842a89a 100644
40138 40705
40139 /* VLV magic */ 40706 /* VLV magic */
40140 I915_WRITE(VLV_IMR, 0); 40707 I915_WRITE(VLV_IMR, 0);
40141@@ -2672,7 +2672,7 @@ static void gen8_irq_preinstall(struct drm_device *dev) 40708@@ -2694,7 +2694,7 @@ static void gen8_irq_preinstall(struct drm_device *dev)
40142 struct drm_i915_private *dev_priv = dev->dev_private; 40709 struct drm_i915_private *dev_priv = dev->dev_private;
40143 int pipe; 40710 int pipe;
40144 40711
@@ -40147,7 +40714,7 @@ index a209177..842a89a 100644
40147 40714
40148 I915_WRITE(GEN8_MASTER_IRQ, 0); 40715 I915_WRITE(GEN8_MASTER_IRQ, 0);
40149 POSTING_READ(GEN8_MASTER_IRQ); 40716 POSTING_READ(GEN8_MASTER_IRQ);
40150@@ -2998,7 +2998,7 @@ static void gen8_irq_uninstall(struct drm_device *dev) 40717@@ -3018,7 +3018,7 @@ static void gen8_irq_uninstall(struct drm_device *dev)
40151 if (!dev_priv) 40718 if (!dev_priv)
40152 return; 40719 return;
40153 40720
@@ -40156,7 +40723,7 @@ index a209177..842a89a 100644
40156 40723
40157 I915_WRITE(GEN8_MASTER_IRQ, 0); 40724 I915_WRITE(GEN8_MASTER_IRQ, 0);
40158 40725
40159@@ -3092,7 +3092,7 @@ static void i8xx_irq_preinstall(struct drm_device * dev) 40726@@ -3112,7 +3112,7 @@ static void i8xx_irq_preinstall(struct drm_device * dev)
40160 drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; 40727 drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
40161 int pipe; 40728 int pipe;
40162 40729
@@ -40165,7 +40732,7 @@ index a209177..842a89a 100644
40165 40732
40166 for_each_pipe(pipe) 40733 for_each_pipe(pipe)
40167 I915_WRITE(PIPESTAT(pipe), 0); 40734 I915_WRITE(PIPESTAT(pipe), 0);
40168@@ -3178,7 +3178,7 @@ static irqreturn_t i8xx_irq_handler(int irq, void *arg) 40735@@ -3198,7 +3198,7 @@ static irqreturn_t i8xx_irq_handler(int irq, void *arg)
40169 I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT | 40736 I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT |
40170 I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT; 40737 I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT;
40171 40738
@@ -40174,7 +40741,7 @@ index a209177..842a89a 100644
40174 40741
40175 iir = I915_READ16(IIR); 40742 iir = I915_READ16(IIR);
40176 if (iir == 0) 40743 if (iir == 0)
40177@@ -3253,7 +3253,7 @@ static void i915_irq_preinstall(struct drm_device * dev) 40744@@ -3277,7 +3277,7 @@ static void i915_irq_preinstall(struct drm_device * dev)
40178 drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; 40745 drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
40179 int pipe; 40746 int pipe;
40180 40747
@@ -40183,7 +40750,7 @@ index a209177..842a89a 100644
40183 40750
40184 if (I915_HAS_HOTPLUG(dev)) { 40751 if (I915_HAS_HOTPLUG(dev)) {
40185 I915_WRITE(PORT_HOTPLUG_EN, 0); 40752 I915_WRITE(PORT_HOTPLUG_EN, 0);
40186@@ -3360,7 +3360,7 @@ static irqreturn_t i915_irq_handler(int irq, void *arg) 40753@@ -3384,7 +3384,7 @@ static irqreturn_t i915_irq_handler(int irq, void *arg)
40187 I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT; 40754 I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT;
40188 int pipe, ret = IRQ_NONE; 40755 int pipe, ret = IRQ_NONE;
40189 40756
@@ -40192,7 +40759,7 @@ index a209177..842a89a 100644
40192 40759
40193 iir = I915_READ(IIR); 40760 iir = I915_READ(IIR);
40194 do { 40761 do {
40195@@ -3487,7 +3487,7 @@ static void i965_irq_preinstall(struct drm_device * dev) 40762@@ -3511,7 +3511,7 @@ static void i965_irq_preinstall(struct drm_device * dev)
40196 drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; 40763 drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
40197 int pipe; 40764 int pipe;
40198 40765
@@ -40201,7 +40768,7 @@ index a209177..842a89a 100644
40201 40768
40202 I915_WRITE(PORT_HOTPLUG_EN, 0); 40769 I915_WRITE(PORT_HOTPLUG_EN, 0);
40203 I915_WRITE(PORT_HOTPLUG_STAT, I915_READ(PORT_HOTPLUG_STAT)); 40770 I915_WRITE(PORT_HOTPLUG_STAT, I915_READ(PORT_HOTPLUG_STAT));
40204@@ -3603,7 +3603,7 @@ static irqreturn_t i965_irq_handler(int irq, void *arg) 40771@@ -3627,7 +3627,7 @@ static irqreturn_t i965_irq_handler(int irq, void *arg)
40205 I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT | 40772 I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT |
40206 I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT; 40773 I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT;
40207 40774
@@ -40211,10 +40778,10 @@ index a209177..842a89a 100644
40211 iir = I915_READ(IIR); 40778 iir = I915_READ(IIR);
40212 40779
40213diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c 40780diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
40214index 3c5ff7a..ae759ca 100644 40781index 963639d..ea0c0cb 100644
40215--- a/drivers/gpu/drm/i915/intel_display.c 40782--- a/drivers/gpu/drm/i915/intel_display.c
40216+++ b/drivers/gpu/drm/i915/intel_display.c 40783+++ b/drivers/gpu/drm/i915/intel_display.c
40217@@ -10506,13 +10506,13 @@ struct intel_quirk { 40784@@ -10787,13 +10787,13 @@ struct intel_quirk {
40218 int subsystem_vendor; 40785 int subsystem_vendor;
40219 int subsystem_device; 40786 int subsystem_device;
40220 void (*hook)(struct drm_device *dev); 40787 void (*hook)(struct drm_device *dev);
@@ -40230,7 +40797,7 @@ index 3c5ff7a..ae759ca 100644
40230 40797
40231 static int intel_dmi_reverse_brightness(const struct dmi_system_id *id) 40798 static int intel_dmi_reverse_brightness(const struct dmi_system_id *id)
40232 { 40799 {
40233@@ -10520,18 +10520,20 @@ static int intel_dmi_reverse_brightness(const struct dmi_system_id *id) 40800@@ -10801,18 +10801,20 @@ static int intel_dmi_reverse_brightness(const struct dmi_system_id *id)
40234 return 1; 40801 return 1;
40235 } 40802 }
40236 40803
@@ -40262,7 +40829,7 @@ index 3c5ff7a..ae759ca 100644
40262 }, 40829 },
40263 }; 40830 };
40264diff --git a/drivers/gpu/drm/mga/mga_drv.h b/drivers/gpu/drm/mga/mga_drv.h 40831diff --git a/drivers/gpu/drm/mga/mga_drv.h b/drivers/gpu/drm/mga/mga_drv.h
40265index ca4bc54..ee598a2 100644 40832index fe45321..836fdca 100644
40266--- a/drivers/gpu/drm/mga/mga_drv.h 40833--- a/drivers/gpu/drm/mga/mga_drv.h
40267+++ b/drivers/gpu/drm/mga/mga_drv.h 40834+++ b/drivers/gpu/drm/mga/mga_drv.h
40268@@ -120,9 +120,9 @@ typedef struct drm_mga_private { 40835@@ -120,9 +120,9 @@ typedef struct drm_mga_private {
@@ -40278,10 +40845,10 @@ index ca4bc54..ee598a2 100644
40278 40845
40279 unsigned int fb_cpp; 40846 unsigned int fb_cpp;
40280diff --git a/drivers/gpu/drm/mga/mga_ioc32.c b/drivers/gpu/drm/mga/mga_ioc32.c 40847diff --git a/drivers/gpu/drm/mga/mga_ioc32.c b/drivers/gpu/drm/mga/mga_ioc32.c
40281index 709e90d..89a1c0d 100644 40848index 86b4bb8..ae237ad 100644
40282--- a/drivers/gpu/drm/mga/mga_ioc32.c 40849--- a/drivers/gpu/drm/mga/mga_ioc32.c
40283+++ b/drivers/gpu/drm/mga/mga_ioc32.c 40850+++ b/drivers/gpu/drm/mga/mga_ioc32.c
40284@@ -189,7 +189,7 @@ static int compat_mga_dma_bootstrap(struct file *file, unsigned int cmd, 40851@@ -190,7 +190,7 @@ static int compat_mga_dma_bootstrap(struct file *file, unsigned int cmd,
40285 return 0; 40852 return 0;
40286 } 40853 }
40287 40854
@@ -40290,7 +40857,7 @@ index 709e90d..89a1c0d 100644
40290 [DRM_MGA_INIT] = compat_mga_init, 40857 [DRM_MGA_INIT] = compat_mga_init,
40291 [DRM_MGA_GETPARAM] = compat_mga_getparam, 40858 [DRM_MGA_GETPARAM] = compat_mga_getparam,
40292 [DRM_MGA_DMA_BOOTSTRAP] = compat_mga_dma_bootstrap, 40859 [DRM_MGA_DMA_BOOTSTRAP] = compat_mga_dma_bootstrap,
40293@@ -207,18 +207,15 @@ drm_ioctl_compat_t *mga_compat_ioctls[] = { 40860@@ -208,18 +208,15 @@ drm_ioctl_compat_t *mga_compat_ioctls[] = {
40294 long mga_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) 40861 long mga_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
40295 { 40862 {
40296 unsigned int nr = DRM_IOCTL_NR(cmd); 40863 unsigned int nr = DRM_IOCTL_NR(cmd);
@@ -40313,7 +40880,7 @@ index 709e90d..89a1c0d 100644
40313 40880
40314 return ret; 40881 return ret;
40315diff --git a/drivers/gpu/drm/mga/mga_irq.c b/drivers/gpu/drm/mga/mga_irq.c 40882diff --git a/drivers/gpu/drm/mga/mga_irq.c b/drivers/gpu/drm/mga/mga_irq.c
40316index 2b0ceb8..517e99e 100644 40883index 1b071b8..de8601a 100644
40317--- a/drivers/gpu/drm/mga/mga_irq.c 40884--- a/drivers/gpu/drm/mga/mga_irq.c
40318+++ b/drivers/gpu/drm/mga/mga_irq.c 40885+++ b/drivers/gpu/drm/mga/mga_irq.c
40319@@ -43,7 +43,7 @@ u32 mga_get_vblank_counter(struct drm_device *dev, int crtc) 40886@@ -43,7 +43,7 @@ u32 mga_get_vblank_counter(struct drm_device *dev, int crtc)
@@ -40325,7 +40892,7 @@ index 2b0ceb8..517e99e 100644
40325 } 40892 }
40326 40893
40327 40894
40328@@ -59,7 +59,7 @@ irqreturn_t mga_driver_irq_handler(DRM_IRQ_ARGS) 40895@@ -59,7 +59,7 @@ irqreturn_t mga_driver_irq_handler(int irq, void *arg)
40329 /* VBLANK interrupt */ 40896 /* VBLANK interrupt */
40330 if (status & MGA_VLINEPEN) { 40897 if (status & MGA_VLINEPEN) {
40331 MGA_WRITE(MGA_ICLEAR, MGA_VLINEICLR); 40898 MGA_WRITE(MGA_ICLEAR, MGA_VLINEICLR);
@@ -40334,19 +40901,19 @@ index 2b0ceb8..517e99e 100644
40334 drm_handle_vblank(dev, 0); 40901 drm_handle_vblank(dev, 0);
40335 handled = 1; 40902 handled = 1;
40336 } 40903 }
40337@@ -78,7 +78,7 @@ irqreturn_t mga_driver_irq_handler(DRM_IRQ_ARGS) 40904@@ -78,7 +78,7 @@ irqreturn_t mga_driver_irq_handler(int irq, void *arg)
40338 if ((prim_start & ~0x03) != (prim_end & ~0x03)) 40905 if ((prim_start & ~0x03) != (prim_end & ~0x03))
40339 MGA_WRITE(MGA_PRIMEND, prim_end); 40906 MGA_WRITE(MGA_PRIMEND, prim_end);
40340 40907
40341- atomic_inc(&dev_priv->last_fence_retired); 40908- atomic_inc(&dev_priv->last_fence_retired);
40342+ atomic_inc_unchecked(&dev_priv->last_fence_retired); 40909+ atomic_inc_unchecked(&dev_priv->last_fence_retired);
40343 DRM_WAKEUP(&dev_priv->fence_queue); 40910 wake_up(&dev_priv->fence_queue);
40344 handled = 1; 40911 handled = 1;
40345 } 40912 }
40346@@ -129,7 +129,7 @@ int mga_driver_fence_wait(struct drm_device *dev, unsigned int *sequence) 40913@@ -129,7 +129,7 @@ int mga_driver_fence_wait(struct drm_device *dev, unsigned int *sequence)
40347 * using fences. 40914 * using fences.
40348 */ 40915 */
40349 DRM_WAIT_ON(ret, dev_priv->fence_queue, 3 * DRM_HZ, 40916 DRM_WAIT_ON(ret, dev_priv->fence_queue, 3 * HZ,
40350- (((cur_fence = atomic_read(&dev_priv->last_fence_retired)) 40917- (((cur_fence = atomic_read(&dev_priv->last_fence_retired))
40351+ (((cur_fence = atomic_read_unchecked(&dev_priv->last_fence_retired)) 40918+ (((cur_fence = atomic_read_unchecked(&dev_priv->last_fence_retired))
40352 - *sequence) <= (1 << 23))); 40919 - *sequence) <= (1 << 23)));
@@ -40366,10 +40933,10 @@ index 4c3feaa..26391ce 100644
40366 #define BIT_TABLE(id, funcid) ((struct bit_table){ id, parse_bit_##funcid##_tbl_entry }) 40933 #define BIT_TABLE(id, funcid) ((struct bit_table){ id, parse_bit_##funcid##_tbl_entry })
40367 40934
40368diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.h b/drivers/gpu/drm/nouveau/nouveau_drm.h 40935diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.h b/drivers/gpu/drm/nouveau/nouveau_drm.h
40369index 4b0fb6c..67667a9 100644 40936index 23ca7a5..b6c955d 100644
40370--- a/drivers/gpu/drm/nouveau/nouveau_drm.h 40937--- a/drivers/gpu/drm/nouveau/nouveau_drm.h
40371+++ b/drivers/gpu/drm/nouveau/nouveau_drm.h 40938+++ b/drivers/gpu/drm/nouveau/nouveau_drm.h
40372@@ -96,7 +96,6 @@ struct nouveau_drm { 40939@@ -97,7 +97,6 @@ struct nouveau_drm {
40373 struct drm_global_reference mem_global_ref; 40940 struct drm_global_reference mem_global_ref;
40374 struct ttm_bo_global_ref bo_global_ref; 40941 struct ttm_bo_global_ref bo_global_ref;
40375 struct ttm_bo_device bdev; 40942 struct ttm_bo_device bdev;
@@ -40391,7 +40958,7 @@ index c1a7e5a..38b8539 100644
40391 40958
40392 if (nr < DRM_COMMAND_BASE) 40959 if (nr < DRM_COMMAND_BASE)
40393diff --git a/drivers/gpu/drm/nouveau/nouveau_ttm.c b/drivers/gpu/drm/nouveau/nouveau_ttm.c 40960diff --git a/drivers/gpu/drm/nouveau/nouveau_ttm.c b/drivers/gpu/drm/nouveau/nouveau_ttm.c
40394index 19e3757..ad16478 100644 40961index d45d50d..72a5dd2 100644
40395--- a/drivers/gpu/drm/nouveau/nouveau_ttm.c 40962--- a/drivers/gpu/drm/nouveau/nouveau_ttm.c
40396+++ b/drivers/gpu/drm/nouveau/nouveau_ttm.c 40963+++ b/drivers/gpu/drm/nouveau/nouveau_ttm.c
40397@@ -130,11 +130,11 @@ nouveau_vram_manager_debug(struct ttm_mem_type_manager *man, const char *prefix) 40964@@ -130,11 +130,11 @@ nouveau_vram_manager_debug(struct ttm_mem_type_manager *man, const char *prefix)
@@ -40411,7 +40978,7 @@ index 19e3757..ad16478 100644
40411 }; 40978 };
40412 40979
40413 static int 40980 static int
40414@@ -198,11 +198,11 @@ nouveau_gart_manager_debug(struct ttm_mem_type_manager *man, const char *prefix) 40981@@ -199,11 +199,11 @@ nouveau_gart_manager_debug(struct ttm_mem_type_manager *man, const char *prefix)
40415 } 40982 }
40416 40983
40417 const struct ttm_mem_type_manager_func nouveau_gart_manager = { 40984 const struct ttm_mem_type_manager_func nouveau_gart_manager = {
@@ -40428,7 +40995,7 @@ index 19e3757..ad16478 100644
40428 }; 40995 };
40429 40996
40430 #include <core/subdev/vm/nv04.h> 40997 #include <core/subdev/vm/nv04.h>
40431@@ -270,11 +270,11 @@ nv04_gart_manager_debug(struct ttm_mem_type_manager *man, const char *prefix) 40998@@ -271,11 +271,11 @@ nv04_gart_manager_debug(struct ttm_mem_type_manager *man, const char *prefix)
40432 } 40999 }
40433 41000
40434 const struct ttm_mem_type_manager_func nv04_gart_manager = { 41001 const struct ttm_mem_type_manager_func nv04_gart_manager = {
@@ -40446,10 +41013,10 @@ index 19e3757..ad16478 100644
40446 41013
40447 int 41014 int
40448diff --git a/drivers/gpu/drm/nouveau/nouveau_vga.c b/drivers/gpu/drm/nouveau/nouveau_vga.c 41015diff --git a/drivers/gpu/drm/nouveau/nouveau_vga.c b/drivers/gpu/drm/nouveau/nouveau_vga.c
40449index 81638d7..2e45854 100644 41016index 471347e..5adc6b9 100644
40450--- a/drivers/gpu/drm/nouveau/nouveau_vga.c 41017--- a/drivers/gpu/drm/nouveau/nouveau_vga.c
40451+++ b/drivers/gpu/drm/nouveau/nouveau_vga.c 41018+++ b/drivers/gpu/drm/nouveau/nouveau_vga.c
40452@@ -65,7 +65,7 @@ nouveau_switcheroo_can_switch(struct pci_dev *pdev) 41019@@ -67,7 +67,7 @@ nouveau_switcheroo_can_switch(struct pci_dev *pdev)
40453 bool can_switch; 41020 bool can_switch;
40454 41021
40455 spin_lock(&dev->count_lock); 41022 spin_lock(&dev->count_lock);
@@ -40516,7 +41083,7 @@ index c3c2bbd..bc3c0fb 100644
40516 return 0; 41083 return 0;
40517 } 41084 }
40518diff --git a/drivers/gpu/drm/qxl/qxl_drv.h b/drivers/gpu/drm/qxl/qxl_drv.h 41085diff --git a/drivers/gpu/drm/qxl/qxl_drv.h b/drivers/gpu/drm/qxl/qxl_drv.h
40519index 7bda32f..dd98fc5 100644 41086index 36ed40b..0397633 100644
40520--- a/drivers/gpu/drm/qxl/qxl_drv.h 41087--- a/drivers/gpu/drm/qxl/qxl_drv.h
40521+++ b/drivers/gpu/drm/qxl/qxl_drv.h 41088+++ b/drivers/gpu/drm/qxl/qxl_drv.h
40522@@ -290,10 +290,10 @@ struct qxl_device { 41089@@ -290,10 +290,10 @@ struct qxl_device {
@@ -40535,7 +41102,7 @@ index 7bda32f..dd98fc5 100644
40535 wait_queue_head_t display_event; 41102 wait_queue_head_t display_event;
40536 wait_queue_head_t cursor_event; 41103 wait_queue_head_t cursor_event;
40537diff --git a/drivers/gpu/drm/qxl/qxl_ioctl.c b/drivers/gpu/drm/qxl/qxl_ioctl.c 41104diff --git a/drivers/gpu/drm/qxl/qxl_ioctl.c b/drivers/gpu/drm/qxl/qxl_ioctl.c
40538index 7b95c75..9cffb4f 100644 41105index 0bb86e6..d41416d 100644
40539--- a/drivers/gpu/drm/qxl/qxl_ioctl.c 41106--- a/drivers/gpu/drm/qxl/qxl_ioctl.c
40540+++ b/drivers/gpu/drm/qxl/qxl_ioctl.c 41107+++ b/drivers/gpu/drm/qxl/qxl_ioctl.c
40541@@ -181,7 +181,7 @@ static int qxl_process_single_command(struct qxl_device *qdev, 41108@@ -181,7 +181,7 @@ static int qxl_process_single_command(struct qxl_device *qdev,
@@ -40550,26 +41117,31 @@ index 7b95c75..9cffb4f 100644
40550@@ -201,7 +201,7 @@ static int qxl_process_single_command(struct qxl_device *qdev, 41117@@ -201,7 +201,7 @@ static int qxl_process_single_command(struct qxl_device *qdev,
40551 struct drm_qxl_reloc reloc; 41118 struct drm_qxl_reloc reloc;
40552 41119
40553 if (DRM_COPY_FROM_USER(&reloc, 41120 if (copy_from_user(&reloc,
40554- &((struct drm_qxl_reloc *)(uintptr_t)cmd->relocs)[i], 41121- &((struct drm_qxl_reloc *)(uintptr_t)cmd->relocs)[i],
40555+ &((struct drm_qxl_reloc __force_user *)(uintptr_t)cmd->relocs)[i], 41122+ &((struct drm_qxl_reloc __force_user *)(uintptr_t)cmd->relocs)[i],
40556 sizeof(reloc))) { 41123 sizeof(reloc))) {
40557 ret = -EFAULT; 41124 ret = -EFAULT;
40558 goto out_free_bos; 41125 goto out_free_bos;
40559@@ -297,7 +297,7 @@ static int qxl_execbuffer_ioctl(struct drm_device *dev, void *data, 41126@@ -294,10 +294,10 @@ static int qxl_execbuffer_ioctl(struct drm_device *dev, void *data,
40560 struct drm_qxl_command *commands = 41127
40561 (struct drm_qxl_command *)(uintptr_t)execbuffer->commands; 41128 for (cmd_num = 0; cmd_num < execbuffer->commands_num; ++cmd_num) {
40562 41129
40563- if (DRM_COPY_FROM_USER(&user_cmd, &commands[cmd_num], 41130- struct drm_qxl_command *commands =
40564+ if (DRM_COPY_FROM_USER(&user_cmd, (struct drm_qxl_command __force_user *)&commands[cmd_num], 41131- (struct drm_qxl_command *)(uintptr_t)execbuffer->commands;
41132+ struct drm_qxl_command __user *commands =
41133+ (struct drm_qxl_command __user *)(uintptr_t)execbuffer->commands;
41134
41135- if (copy_from_user(&user_cmd, &commands[cmd_num],
41136+ if (copy_from_user(&user_cmd, (struct drm_qxl_command __force_user *)&commands[cmd_num],
40565 sizeof(user_cmd))) 41137 sizeof(user_cmd)))
40566 return -EFAULT; 41138 return -EFAULT;
40567 41139
40568diff --git a/drivers/gpu/drm/qxl/qxl_irq.c b/drivers/gpu/drm/qxl/qxl_irq.c 41140diff --git a/drivers/gpu/drm/qxl/qxl_irq.c b/drivers/gpu/drm/qxl/qxl_irq.c
40569index 21393dc..329f3a9 100644 41141index 28f84b4..fb3e224 100644
40570--- a/drivers/gpu/drm/qxl/qxl_irq.c 41142--- a/drivers/gpu/drm/qxl/qxl_irq.c
40571+++ b/drivers/gpu/drm/qxl/qxl_irq.c 41143+++ b/drivers/gpu/drm/qxl/qxl_irq.c
40572@@ -33,19 +33,19 @@ irqreturn_t qxl_irq_handler(DRM_IRQ_ARGS) 41144@@ -33,19 +33,19 @@ irqreturn_t qxl_irq_handler(int irq, void *arg)
40573 41145
40574 pending = xchg(&qdev->ram_header->int_pending, 0); 41146 pending = xchg(&qdev->ram_header->int_pending, 0);
40575 41147
@@ -40609,7 +41181,7 @@ index 21393dc..329f3a9 100644
40609 ret = drm_irq_install(qdev->ddev); 41181 ret = drm_irq_install(qdev->ddev);
40610 qdev->ram_header->int_mask = QXL_INTERRUPT_MASK; 41182 qdev->ram_header->int_mask = QXL_INTERRUPT_MASK;
40611diff --git a/drivers/gpu/drm/qxl/qxl_ttm.c b/drivers/gpu/drm/qxl/qxl_ttm.c 41183diff --git a/drivers/gpu/drm/qxl/qxl_ttm.c b/drivers/gpu/drm/qxl/qxl_ttm.c
40612index c7e7e65..7dddd4d 100644 41184index c82c1d6a9..6158c02 100644
40613--- a/drivers/gpu/drm/qxl/qxl_ttm.c 41185--- a/drivers/gpu/drm/qxl/qxl_ttm.c
40614+++ b/drivers/gpu/drm/qxl/qxl_ttm.c 41186+++ b/drivers/gpu/drm/qxl/qxl_ttm.c
40615@@ -103,7 +103,7 @@ static void qxl_ttm_global_fini(struct qxl_device *qdev) 41187@@ -103,7 +103,7 @@ static void qxl_ttm_global_fini(struct qxl_device *qdev)
@@ -40632,7 +41204,7 @@ index c7e7e65..7dddd4d 100644
40632 } 41204 }
40633 vma->vm_ops = &qxl_ttm_vm_ops; 41205 vma->vm_ops = &qxl_ttm_vm_ops;
40634 return 0; 41206 return 0;
40635@@ -560,25 +562,23 @@ static int qxl_mm_dump_table(struct seq_file *m, void *data) 41207@@ -561,25 +563,23 @@ static int qxl_mm_dump_table(struct seq_file *m, void *data)
40636 static int qxl_ttm_debugfs_init(struct qxl_device *qdev) 41208 static int qxl_ttm_debugfs_init(struct qxl_device *qdev)
40637 { 41209 {
40638 #if defined(CONFIG_DEBUG_FS) 41210 #if defined(CONFIG_DEBUG_FS)
@@ -40674,7 +41246,7 @@ index c7e7e65..7dddd4d 100644
40674 return 0; 41246 return 0;
40675 #endif 41247 #endif
40676diff --git a/drivers/gpu/drm/r128/r128_cce.c b/drivers/gpu/drm/r128/r128_cce.c 41248diff --git a/drivers/gpu/drm/r128/r128_cce.c b/drivers/gpu/drm/r128/r128_cce.c
40677index c451257..0ad2134 100644 41249index 59459fe..be26b31 100644
40678--- a/drivers/gpu/drm/r128/r128_cce.c 41250--- a/drivers/gpu/drm/r128/r128_cce.c
40679+++ b/drivers/gpu/drm/r128/r128_cce.c 41251+++ b/drivers/gpu/drm/r128/r128_cce.c
40680@@ -377,7 +377,7 @@ static int r128_do_init_cce(struct drm_device *dev, drm_r128_init_t *init) 41252@@ -377,7 +377,7 @@ static int r128_do_init_cce(struct drm_device *dev, drm_r128_init_t *init)
@@ -40687,7 +41259,7 @@ index c451257..0ad2134 100644
40687 /* We don't support anything other than bus-mastering ring mode, 41259 /* We don't support anything other than bus-mastering ring mode,
40688 * but the ring can be in either AGP or PCI space for the ring 41260 * but the ring can be in either AGP or PCI space for the ring
40689diff --git a/drivers/gpu/drm/r128/r128_drv.h b/drivers/gpu/drm/r128/r128_drv.h 41261diff --git a/drivers/gpu/drm/r128/r128_drv.h b/drivers/gpu/drm/r128/r128_drv.h
40690index 56eb5e3..c4ec43d 100644 41262index 5bf3f5f..7000661 100644
40691--- a/drivers/gpu/drm/r128/r128_drv.h 41263--- a/drivers/gpu/drm/r128/r128_drv.h
40692+++ b/drivers/gpu/drm/r128/r128_drv.h 41264+++ b/drivers/gpu/drm/r128/r128_drv.h
40693@@ -90,14 +90,14 @@ typedef struct drm_r128_private { 41265@@ -90,14 +90,14 @@ typedef struct drm_r128_private {
@@ -40708,10 +41280,10 @@ index 56eb5e3..c4ec43d 100644
40708 u32 color_fmt; 41280 u32 color_fmt;
40709 unsigned int front_offset; 41281 unsigned int front_offset;
40710diff --git a/drivers/gpu/drm/r128/r128_ioc32.c b/drivers/gpu/drm/r128/r128_ioc32.c 41282diff --git a/drivers/gpu/drm/r128/r128_ioc32.c b/drivers/gpu/drm/r128/r128_ioc32.c
40711index a954c54..9cc595c 100644 41283index b0d0fd3..a6fbbe4 100644
40712--- a/drivers/gpu/drm/r128/r128_ioc32.c 41284--- a/drivers/gpu/drm/r128/r128_ioc32.c
40713+++ b/drivers/gpu/drm/r128/r128_ioc32.c 41285+++ b/drivers/gpu/drm/r128/r128_ioc32.c
40714@@ -177,7 +177,7 @@ static int compat_r128_getparam(struct file *file, unsigned int cmd, 41286@@ -178,7 +178,7 @@ static int compat_r128_getparam(struct file *file, unsigned int cmd,
40715 return drm_ioctl(file, DRM_IOCTL_R128_GETPARAM, (unsigned long)getparam); 41287 return drm_ioctl(file, DRM_IOCTL_R128_GETPARAM, (unsigned long)getparam);
40716 } 41288 }
40717 41289
@@ -40720,7 +41292,7 @@ index a954c54..9cc595c 100644
40720 [DRM_R128_INIT] = compat_r128_init, 41292 [DRM_R128_INIT] = compat_r128_init,
40721 [DRM_R128_DEPTH] = compat_r128_depth, 41293 [DRM_R128_DEPTH] = compat_r128_depth,
40722 [DRM_R128_STIPPLE] = compat_r128_stipple, 41294 [DRM_R128_STIPPLE] = compat_r128_stipple,
40723@@ -196,18 +196,15 @@ drm_ioctl_compat_t *r128_compat_ioctls[] = { 41295@@ -197,18 +197,15 @@ drm_ioctl_compat_t *r128_compat_ioctls[] = {
40724 long r128_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) 41296 long r128_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
40725 { 41297 {
40726 unsigned int nr = DRM_IOCTL_NR(cmd); 41298 unsigned int nr = DRM_IOCTL_NR(cmd);
@@ -40743,7 +41315,7 @@ index a954c54..9cc595c 100644
40743 41315
40744 return ret; 41316 return ret;
40745diff --git a/drivers/gpu/drm/r128/r128_irq.c b/drivers/gpu/drm/r128/r128_irq.c 41317diff --git a/drivers/gpu/drm/r128/r128_irq.c b/drivers/gpu/drm/r128/r128_irq.c
40746index 2ea4f09..d391371 100644 41318index c2ae496..30b5993 100644
40747--- a/drivers/gpu/drm/r128/r128_irq.c 41319--- a/drivers/gpu/drm/r128/r128_irq.c
40748+++ b/drivers/gpu/drm/r128/r128_irq.c 41320+++ b/drivers/gpu/drm/r128/r128_irq.c
40749@@ -41,7 +41,7 @@ u32 r128_get_vblank_counter(struct drm_device *dev, int crtc) 41321@@ -41,7 +41,7 @@ u32 r128_get_vblank_counter(struct drm_device *dev, int crtc)
@@ -40754,8 +41326,8 @@ index 2ea4f09..d391371 100644
40754+ return atomic_read_unchecked(&dev_priv->vbl_received); 41326+ return atomic_read_unchecked(&dev_priv->vbl_received);
40755 } 41327 }
40756 41328
40757 irqreturn_t r128_driver_irq_handler(DRM_IRQ_ARGS) 41329 irqreturn_t r128_driver_irq_handler(int irq, void *arg)
40758@@ -55,7 +55,7 @@ irqreturn_t r128_driver_irq_handler(DRM_IRQ_ARGS) 41330@@ -55,7 +55,7 @@ irqreturn_t r128_driver_irq_handler(int irq, void *arg)
40759 /* VBLANK interrupt */ 41331 /* VBLANK interrupt */
40760 if (status & R128_CRTC_VBLANK_INT) { 41332 if (status & R128_CRTC_VBLANK_INT) {
40761 R128_WRITE(R128_GEN_INT_STATUS, R128_CRTC_VBLANK_INT_AK); 41333 R128_WRITE(R128_GEN_INT_STATUS, R128_CRTC_VBLANK_INT_AK);
@@ -40765,7 +41337,7 @@ index 2ea4f09..d391371 100644
40765 return IRQ_HANDLED; 41337 return IRQ_HANDLED;
40766 } 41338 }
40767diff --git a/drivers/gpu/drm/r128/r128_state.c b/drivers/gpu/drm/r128/r128_state.c 41339diff --git a/drivers/gpu/drm/r128/r128_state.c b/drivers/gpu/drm/r128/r128_state.c
40768index 01dd9ae..6352f04 100644 41340index e806dac..f81d32f 100644
40769--- a/drivers/gpu/drm/r128/r128_state.c 41341--- a/drivers/gpu/drm/r128/r128_state.c
40770+++ b/drivers/gpu/drm/r128/r128_state.c 41342+++ b/drivers/gpu/drm/r128/r128_state.c
40771@@ -320,10 +320,10 @@ static void r128_clear_box(drm_r128_private_t *dev_priv, 41343@@ -320,10 +320,10 @@ static void r128_clear_box(drm_r128_private_t *dev_priv,
@@ -40782,7 +41354,7 @@ index 01dd9ae..6352f04 100644
40782 41354
40783 #endif 41355 #endif
40784diff --git a/drivers/gpu/drm/radeon/mkregtable.c b/drivers/gpu/drm/radeon/mkregtable.c 41356diff --git a/drivers/gpu/drm/radeon/mkregtable.c b/drivers/gpu/drm/radeon/mkregtable.c
40785index af85299..ed9ac8d 100644 41357index 4a85bb6..aaea819 100644
40786--- a/drivers/gpu/drm/radeon/mkregtable.c 41358--- a/drivers/gpu/drm/radeon/mkregtable.c
40787+++ b/drivers/gpu/drm/radeon/mkregtable.c 41359+++ b/drivers/gpu/drm/radeon/mkregtable.c
40788@@ -624,14 +624,14 @@ static int parser_auth(struct table *t, const char *filename) 41360@@ -624,14 +624,14 @@ static int parser_auth(struct table *t, const char *filename)
@@ -40803,10 +41375,10 @@ index af85299..ed9ac8d 100644
40803 if (regcomp 41375 if (regcomp
40804 (&mask_rex, "(0x[0-9a-fA-F]*) *([_a-zA-Z0-9]*)", REG_EXTENDED)) { 41376 (&mask_rex, "(0x[0-9a-fA-F]*) *([_a-zA-Z0-9]*)", REG_EXTENDED)) {
40805diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c 41377diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
40806index 39b033b..6efc056 100644 41378index 044bc98..50ced9b 100644
40807--- a/drivers/gpu/drm/radeon/radeon_device.c 41379--- a/drivers/gpu/drm/radeon/radeon_device.c
40808+++ b/drivers/gpu/drm/radeon/radeon_device.c 41380+++ b/drivers/gpu/drm/radeon/radeon_device.c
40809@@ -1120,7 +1120,7 @@ static bool radeon_switcheroo_can_switch(struct pci_dev *pdev) 41381@@ -1125,7 +1125,7 @@ static bool radeon_switcheroo_can_switch(struct pci_dev *pdev)
40810 bool can_switch; 41382 bool can_switch;
40811 41383
40812 spin_lock(&dev->count_lock); 41384 spin_lock(&dev->count_lock);
@@ -40816,7 +41388,7 @@ index 39b033b..6efc056 100644
40816 return can_switch; 41388 return can_switch;
40817 } 41389 }
40818diff --git a/drivers/gpu/drm/radeon/radeon_drv.h b/drivers/gpu/drm/radeon/radeon_drv.h 41390diff --git a/drivers/gpu/drm/radeon/radeon_drv.h b/drivers/gpu/drm/radeon/radeon_drv.h
40819index 00e0d44..08381a4 100644 41391index dafd812..1bf20c7 100644
40820--- a/drivers/gpu/drm/radeon/radeon_drv.h 41392--- a/drivers/gpu/drm/radeon/radeon_drv.h
40821+++ b/drivers/gpu/drm/radeon/radeon_drv.h 41393+++ b/drivers/gpu/drm/radeon/radeon_drv.h
40822@@ -262,7 +262,7 @@ typedef struct drm_radeon_private { 41394@@ -262,7 +262,7 @@ typedef struct drm_radeon_private {
@@ -40873,7 +41445,7 @@ index bdb0f93..5ff558f 100644
40873 41445
40874 return ret; 41446 return ret;
40875diff --git a/drivers/gpu/drm/radeon/radeon_irq.c b/drivers/gpu/drm/radeon/radeon_irq.c 41447diff --git a/drivers/gpu/drm/radeon/radeon_irq.c b/drivers/gpu/drm/radeon/radeon_irq.c
40876index 8d68e97..9dcfed8 100644 41448index 244b19b..c19226d 100644
40877--- a/drivers/gpu/drm/radeon/radeon_irq.c 41449--- a/drivers/gpu/drm/radeon/radeon_irq.c
40878+++ b/drivers/gpu/drm/radeon/radeon_irq.c 41450+++ b/drivers/gpu/drm/radeon/radeon_irq.c
40879@@ -226,8 +226,8 @@ static int radeon_emit_irq(struct drm_device * dev) 41451@@ -226,8 +226,8 @@ static int radeon_emit_irq(struct drm_device * dev)
@@ -40893,19 +41465,19 @@ index 8d68e97..9dcfed8 100644
40893 41465
40894- atomic_set(&dev_priv->swi_emitted, 0); 41466- atomic_set(&dev_priv->swi_emitted, 0);
40895+ atomic_set_unchecked(&dev_priv->swi_emitted, 0); 41467+ atomic_set_unchecked(&dev_priv->swi_emitted, 0);
40896 DRM_INIT_WAITQUEUE(&dev_priv->swi_queue); 41468 init_waitqueue_head(&dev_priv->swi_queue);
40897 41469
40898 dev->max_vblank_count = 0x001fffff; 41470 dev->max_vblank_count = 0x001fffff;
40899diff --git a/drivers/gpu/drm/radeon/radeon_state.c b/drivers/gpu/drm/radeon/radeon_state.c 41471diff --git a/drivers/gpu/drm/radeon/radeon_state.c b/drivers/gpu/drm/radeon/radeon_state.c
40900index 4d20910..6726b6d 100644 41472index 956ab7f..fbd36d8 100644
40901--- a/drivers/gpu/drm/radeon/radeon_state.c 41473--- a/drivers/gpu/drm/radeon/radeon_state.c
40902+++ b/drivers/gpu/drm/radeon/radeon_state.c 41474+++ b/drivers/gpu/drm/radeon/radeon_state.c
40903@@ -2168,7 +2168,7 @@ static int radeon_cp_clear(struct drm_device *dev, void *data, struct drm_file * 41475@@ -2168,7 +2168,7 @@ static int radeon_cp_clear(struct drm_device *dev, void *data, struct drm_file *
40904 if (sarea_priv->nbox > RADEON_NR_SAREA_CLIPRECTS) 41476 if (sarea_priv->nbox > RADEON_NR_SAREA_CLIPRECTS)
40905 sarea_priv->nbox = RADEON_NR_SAREA_CLIPRECTS; 41477 sarea_priv->nbox = RADEON_NR_SAREA_CLIPRECTS;
40906 41478
40907- if (DRM_COPY_FROM_USER(&depth_boxes, clear->depth_boxes, 41479- if (copy_from_user(&depth_boxes, clear->depth_boxes,
40908+ if (sarea_priv->nbox > RADEON_NR_SAREA_CLIPRECTS || DRM_COPY_FROM_USER(&depth_boxes, clear->depth_boxes, 41480+ if (sarea_priv->nbox > RADEON_NR_SAREA_CLIPRECTS || copy_from_user(&depth_boxes, clear->depth_boxes,
40909 sarea_priv->nbox * sizeof(depth_boxes[0]))) 41481 sarea_priv->nbox * sizeof(depth_boxes[0])))
40910 return -EFAULT; 41482 return -EFAULT;
40911 41483
@@ -40919,10 +41491,10 @@ index 4d20910..6726b6d 100644
40919 DRM_DEBUG("pid=%d\n", DRM_CURRENTPID); 41491 DRM_DEBUG("pid=%d\n", DRM_CURRENTPID);
40920 41492
40921diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c 41493diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c
40922index 84323c9..cf07baf 100644 41494index 040a2a1..eae4e54 100644
40923--- a/drivers/gpu/drm/radeon/radeon_ttm.c 41495--- a/drivers/gpu/drm/radeon/radeon_ttm.c
40924+++ b/drivers/gpu/drm/radeon/radeon_ttm.c 41496+++ b/drivers/gpu/drm/radeon/radeon_ttm.c
40925@@ -787,7 +787,7 @@ void radeon_ttm_set_active_vram_size(struct radeon_device *rdev, u64 size) 41497@@ -790,7 +790,7 @@ void radeon_ttm_set_active_vram_size(struct radeon_device *rdev, u64 size)
40926 man->size = size >> PAGE_SHIFT; 41498 man->size = size >> PAGE_SHIFT;
40927 } 41499 }
40928 41500
@@ -40931,7 +41503,7 @@ index 84323c9..cf07baf 100644
40931 static const struct vm_operations_struct *ttm_vm_ops = NULL; 41503 static const struct vm_operations_struct *ttm_vm_ops = NULL;
40932 41504
40933 static int radeon_ttm_fault(struct vm_area_struct *vma, struct vm_fault *vmf) 41505 static int radeon_ttm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
40934@@ -828,8 +828,10 @@ int radeon_mmap(struct file *filp, struct vm_area_struct *vma) 41506@@ -831,8 +831,10 @@ int radeon_mmap(struct file *filp, struct vm_area_struct *vma)
40935 } 41507 }
40936 if (unlikely(ttm_vm_ops == NULL)) { 41508 if (unlikely(ttm_vm_ops == NULL)) {
40937 ttm_vm_ops = vma->vm_ops; 41509 ttm_vm_ops = vma->vm_ops;
@@ -40942,75 +41514,11 @@ index 84323c9..cf07baf 100644
40942 } 41514 }
40943 vma->vm_ops = &radeon_ttm_vm_ops; 41515 vma->vm_ops = &radeon_ttm_vm_ops;
40944 return 0; 41516 return 0;
40945@@ -858,38 +860,33 @@ static int radeon_mm_dump_table(struct seq_file *m, void *data)
40946 static int radeon_ttm_debugfs_init(struct radeon_device *rdev)
40947 {
40948 #if defined(CONFIG_DEBUG_FS)
40949- static struct drm_info_list radeon_mem_types_list[RADEON_DEBUGFS_MEM_TYPES+2];
40950- static char radeon_mem_types_names[RADEON_DEBUGFS_MEM_TYPES+2][32];
40951- unsigned i;
40952+ static struct drm_info_list radeon_mem_types_list[RADEON_DEBUGFS_MEM_TYPES+2] = {
40953+ {
40954+ .name = "radeon_vram_mm",
40955+ .show = &radeon_mm_dump_table,
40956+ },
40957+ {
40958+ .name = "radeon_gtt_mm",
40959+ .show = &radeon_mm_dump_table,
40960+ },
40961+ {
40962+ .name = "ttm_page_pool",
40963+ .show = &ttm_page_alloc_debugfs,
40964+ },
40965+ {
40966+ .name = "ttm_dma_page_pool",
40967+ .show = &ttm_dma_page_alloc_debugfs,
40968+ },
40969+ };
40970+ unsigned i = RADEON_DEBUGFS_MEM_TYPES + 1;
40971
40972- for (i = 0; i < RADEON_DEBUGFS_MEM_TYPES; i++) {
40973- if (i == 0)
40974- sprintf(radeon_mem_types_names[i], "radeon_vram_mm");
40975- else
40976- sprintf(radeon_mem_types_names[i], "radeon_gtt_mm");
40977- radeon_mem_types_list[i].name = radeon_mem_types_names[i];
40978- radeon_mem_types_list[i].show = &radeon_mm_dump_table;
40979- radeon_mem_types_list[i].driver_features = 0;
40980- if (i == 0)
40981- radeon_mem_types_list[i].data = rdev->mman.bdev.man[TTM_PL_VRAM].priv;
40982- else
40983- radeon_mem_types_list[i].data = rdev->mman.bdev.man[TTM_PL_TT].priv;
40984-
40985- }
40986- /* Add ttm page pool to debugfs */
40987- sprintf(radeon_mem_types_names[i], "ttm_page_pool");
40988- radeon_mem_types_list[i].name = radeon_mem_types_names[i];
40989- radeon_mem_types_list[i].show = &ttm_page_alloc_debugfs;
40990- radeon_mem_types_list[i].driver_features = 0;
40991- radeon_mem_types_list[i++].data = NULL;
40992+ pax_open_kernel();
40993+ *(void **)&radeon_mem_types_list[0].data = rdev->mman.bdev.man[TTM_PL_VRAM].priv;
40994+ *(void **)&radeon_mem_types_list[1].data = rdev->mman.bdev.man[TTM_PL_TT].priv;
40995+ pax_close_kernel();
40996 #ifdef CONFIG_SWIOTLB
40997- if (swiotlb_nr_tbl()) {
40998- sprintf(radeon_mem_types_names[i], "ttm_dma_page_pool");
40999- radeon_mem_types_list[i].name = radeon_mem_types_names[i];
41000- radeon_mem_types_list[i].show = &ttm_dma_page_alloc_debugfs;
41001- radeon_mem_types_list[i].driver_features = 0;
41002- radeon_mem_types_list[i++].data = NULL;
41003- }
41004+ if (swiotlb_nr_tbl())
41005+ i++;
41006 #endif
41007 return radeon_debugfs_add_files(rdev, radeon_mem_types_list, i);
41008
41009diff --git a/drivers/gpu/drm/tegra/dc.c b/drivers/gpu/drm/tegra/dc.c 41517diff --git a/drivers/gpu/drm/tegra/dc.c b/drivers/gpu/drm/tegra/dc.c
41010index ae1cb31..5b5b6b7c 100644 41518index 9336006..ce78aa7 100644
41011--- a/drivers/gpu/drm/tegra/dc.c 41519--- a/drivers/gpu/drm/tegra/dc.c
41012+++ b/drivers/gpu/drm/tegra/dc.c 41520+++ b/drivers/gpu/drm/tegra/dc.c
41013@@ -1064,7 +1064,7 @@ static int tegra_dc_debugfs_init(struct tegra_dc *dc, struct drm_minor *minor) 41521@@ -1057,7 +1057,7 @@ static int tegra_dc_debugfs_init(struct tegra_dc *dc, struct drm_minor *minor)
41014 } 41522 }
41015 41523
41016 for (i = 0; i < ARRAY_SIZE(debugfs_files); i++) 41524 for (i = 0; i < ARRAY_SIZE(debugfs_files); i++)
@@ -41019,11 +41527,24 @@ index ae1cb31..5b5b6b7c 100644
41019 41527
41020 err = drm_debugfs_create_files(dc->debugfs_files, 41528 err = drm_debugfs_create_files(dc->debugfs_files,
41021 ARRAY_SIZE(debugfs_files), 41529 ARRAY_SIZE(debugfs_files),
41530diff --git a/drivers/gpu/drm/tegra/dsi.c b/drivers/gpu/drm/tegra/dsi.c
41531index d452faab..f8cbc6a 100644
41532--- a/drivers/gpu/drm/tegra/dsi.c
41533+++ b/drivers/gpu/drm/tegra/dsi.c
41534@@ -53,7 +53,7 @@ struct tegra_dsi {
41535 struct clk *clk_lp;
41536 struct clk *clk;
41537
41538- struct drm_info_list *debugfs_files;
41539+ drm_info_list_no_const *debugfs_files;
41540 struct drm_minor *minor;
41541 struct dentry *debugfs;
41542
41022diff --git a/drivers/gpu/drm/tegra/hdmi.c b/drivers/gpu/drm/tegra/hdmi.c 41543diff --git a/drivers/gpu/drm/tegra/hdmi.c b/drivers/gpu/drm/tegra/hdmi.c
41023index 0cd9bc2..9759be4 100644 41544index 6928015..c9853e7 100644
41024--- a/drivers/gpu/drm/tegra/hdmi.c 41545--- a/drivers/gpu/drm/tegra/hdmi.c
41025+++ b/drivers/gpu/drm/tegra/hdmi.c 41546+++ b/drivers/gpu/drm/tegra/hdmi.c
41026@@ -57,7 +57,7 @@ struct tegra_hdmi { 41547@@ -59,7 +59,7 @@ struct tegra_hdmi {
41027 bool stereo; 41548 bool stereo;
41028 bool dvi; 41549 bool dvi;
41029 41550
@@ -41091,7 +41612,7 @@ index 863bef9..cba15cf 100644
41091 int shrink_pages = sc->nr_to_scan; 41612 int shrink_pages = sc->nr_to_scan;
41092 unsigned long freed = 0; 41613 unsigned long freed = 0;
41093diff --git a/drivers/gpu/drm/udl/udl_fb.c b/drivers/gpu/drm/udl/udl_fb.c 41614diff --git a/drivers/gpu/drm/udl/udl_fb.c b/drivers/gpu/drm/udl/udl_fb.c
41094index 97e9d61..bf23c461 100644 41615index dbadd49..1b7457b 100644
41095--- a/drivers/gpu/drm/udl/udl_fb.c 41616--- a/drivers/gpu/drm/udl/udl_fb.c
41096+++ b/drivers/gpu/drm/udl/udl_fb.c 41617+++ b/drivers/gpu/drm/udl/udl_fb.c
41097@@ -367,7 +367,6 @@ static int udl_fb_release(struct fb_info *info, int user) 41618@@ -367,7 +367,6 @@ static int udl_fb_release(struct fb_info *info, int user)
@@ -41103,7 +41624,7 @@ index 97e9d61..bf23c461 100644
41103 41624
41104 pr_warn("released /dev/fb%d user=%d count=%d\n", 41625 pr_warn("released /dev/fb%d user=%d count=%d\n",
41105diff --git a/drivers/gpu/drm/via/via_drv.h b/drivers/gpu/drm/via/via_drv.h 41626diff --git a/drivers/gpu/drm/via/via_drv.h b/drivers/gpu/drm/via/via_drv.h
41106index a811ef2..ff99b05 100644 41627index ad02732..144f5ed 100644
41107--- a/drivers/gpu/drm/via/via_drv.h 41628--- a/drivers/gpu/drm/via/via_drv.h
41108+++ b/drivers/gpu/drm/via/via_drv.h 41629+++ b/drivers/gpu/drm/via/via_drv.h
41109@@ -51,7 +51,7 @@ typedef struct drm_via_ring_buffer { 41630@@ -51,7 +51,7 @@ typedef struct drm_via_ring_buffer {
@@ -41125,7 +41646,7 @@ index a811ef2..ff99b05 100644
41125 char pci_buf[VIA_PCI_BUF_SIZE]; 41646 char pci_buf[VIA_PCI_BUF_SIZE];
41126 const uint32_t *fire_offsets[VIA_FIRE_BUF_SIZE]; 41647 const uint32_t *fire_offsets[VIA_FIRE_BUF_SIZE];
41127diff --git a/drivers/gpu/drm/via/via_irq.c b/drivers/gpu/drm/via/via_irq.c 41648diff --git a/drivers/gpu/drm/via/via_irq.c b/drivers/gpu/drm/via/via_irq.c
41128index ac98964..5dbf512 100644 41649index 1319433..a993b0c 100644
41129--- a/drivers/gpu/drm/via/via_irq.c 41650--- a/drivers/gpu/drm/via/via_irq.c
41130+++ b/drivers/gpu/drm/via/via_irq.c 41651+++ b/drivers/gpu/drm/via/via_irq.c
41131@@ -101,7 +101,7 @@ u32 via_get_vblank_counter(struct drm_device *dev, int crtc) 41652@@ -101,7 +101,7 @@ u32 via_get_vblank_counter(struct drm_device *dev, int crtc)
@@ -41136,8 +41657,8 @@ index ac98964..5dbf512 100644
41136+ return atomic_read_unchecked(&dev_priv->vbl_received); 41657+ return atomic_read_unchecked(&dev_priv->vbl_received);
41137 } 41658 }
41138 41659
41139 irqreturn_t via_driver_irq_handler(DRM_IRQ_ARGS) 41660 irqreturn_t via_driver_irq_handler(int irq, void *arg)
41140@@ -116,8 +116,8 @@ irqreturn_t via_driver_irq_handler(DRM_IRQ_ARGS) 41661@@ -116,8 +116,8 @@ irqreturn_t via_driver_irq_handler(int irq, void *arg)
41141 41662
41142 status = VIA_READ(VIA_REG_INTERRUPT); 41663 status = VIA_READ(VIA_REG_INTERRUPT);
41143 if (status & VIA_IRQ_VBLANK_PENDING) { 41664 if (status & VIA_IRQ_VBLANK_PENDING) {
@@ -41148,7 +41669,7 @@ index ac98964..5dbf512 100644
41148 do_gettimeofday(&cur_vblank); 41669 do_gettimeofday(&cur_vblank);
41149 if (dev_priv->last_vblank_valid) { 41670 if (dev_priv->last_vblank_valid) {
41150 dev_priv->usec_per_vblank = 41671 dev_priv->usec_per_vblank =
41151@@ -127,7 +127,7 @@ irqreturn_t via_driver_irq_handler(DRM_IRQ_ARGS) 41672@@ -127,7 +127,7 @@ irqreturn_t via_driver_irq_handler(int irq, void *arg)
41152 dev_priv->last_vblank = cur_vblank; 41673 dev_priv->last_vblank = cur_vblank;
41153 dev_priv->last_vblank_valid = 1; 41674 dev_priv->last_vblank_valid = 1;
41154 } 41675 }
@@ -41157,23 +41678,23 @@ index ac98964..5dbf512 100644
41157 DRM_DEBUG("US per vblank is: %u\n", 41678 DRM_DEBUG("US per vblank is: %u\n",
41158 dev_priv->usec_per_vblank); 41679 dev_priv->usec_per_vblank);
41159 } 41680 }
41160@@ -137,7 +137,7 @@ irqreturn_t via_driver_irq_handler(DRM_IRQ_ARGS) 41681@@ -137,7 +137,7 @@ irqreturn_t via_driver_irq_handler(int irq, void *arg)
41161 41682
41162 for (i = 0; i < dev_priv->num_irqs; ++i) { 41683 for (i = 0; i < dev_priv->num_irqs; ++i) {
41163 if (status & cur_irq->pending_mask) { 41684 if (status & cur_irq->pending_mask) {
41164- atomic_inc(&cur_irq->irq_received); 41685- atomic_inc(&cur_irq->irq_received);
41165+ atomic_inc_unchecked(&cur_irq->irq_received); 41686+ atomic_inc_unchecked(&cur_irq->irq_received);
41166 DRM_WAKEUP(&cur_irq->irq_queue); 41687 wake_up(&cur_irq->irq_queue);
41167 handled = 1; 41688 handled = 1;
41168 if (dev_priv->irq_map[drm_via_irq_dma0_td] == i) 41689 if (dev_priv->irq_map[drm_via_irq_dma0_td] == i)
41169@@ -242,11 +242,11 @@ via_driver_irq_wait(struct drm_device *dev, unsigned int irq, int force_sequence 41690@@ -242,11 +242,11 @@ via_driver_irq_wait(struct drm_device *dev, unsigned int irq, int force_sequence
41170 DRM_WAIT_ON(ret, cur_irq->irq_queue, 3 * DRM_HZ, 41691 DRM_WAIT_ON(ret, cur_irq->irq_queue, 3 * HZ,
41171 ((VIA_READ(masks[irq][2]) & masks[irq][3]) == 41692 ((VIA_READ(masks[irq][2]) & masks[irq][3]) ==
41172 masks[irq][4])); 41693 masks[irq][4]));
41173- cur_irq_sequence = atomic_read(&cur_irq->irq_received); 41694- cur_irq_sequence = atomic_read(&cur_irq->irq_received);
41174+ cur_irq_sequence = atomic_read_unchecked(&cur_irq->irq_received); 41695+ cur_irq_sequence = atomic_read_unchecked(&cur_irq->irq_received);
41175 } else { 41696 } else {
41176 DRM_WAIT_ON(ret, cur_irq->irq_queue, 3 * DRM_HZ, 41697 DRM_WAIT_ON(ret, cur_irq->irq_queue, 3 * HZ,
41177 (((cur_irq_sequence = 41698 (((cur_irq_sequence =
41178- atomic_read(&cur_irq->irq_received)) - 41699- atomic_read(&cur_irq->irq_received)) -
41179+ atomic_read_unchecked(&cur_irq->irq_received)) - 41700+ atomic_read_unchecked(&cur_irq->irq_received)) -
@@ -41188,7 +41709,7 @@ index ac98964..5dbf512 100644
41188+ atomic_set_unchecked(&cur_irq->irq_received, 0); 41709+ atomic_set_unchecked(&cur_irq->irq_received, 0);
41189 cur_irq->enable_mask = dev_priv->irq_masks[i][0]; 41710 cur_irq->enable_mask = dev_priv->irq_masks[i][0];
41190 cur_irq->pending_mask = dev_priv->irq_masks[i][1]; 41711 cur_irq->pending_mask = dev_priv->irq_masks[i][1];
41191 DRM_INIT_WAITQUEUE(&cur_irq->irq_queue); 41712 init_waitqueue_head(&cur_irq->irq_queue);
41192@@ -366,7 +366,7 @@ int via_wait_irq(struct drm_device *dev, void *data, struct drm_file *file_priv) 41713@@ -366,7 +366,7 @@ int via_wait_irq(struct drm_device *dev, void *data, struct drm_file *file_priv)
41193 switch (irqwait->request.type & ~VIA_IRQ_FLAGS_MASK) { 41714 switch (irqwait->request.type & ~VIA_IRQ_FLAGS_MASK) {
41194 case VIA_IRQ_RELATIVE: 41715 case VIA_IRQ_RELATIVE:
@@ -41199,10 +41720,10 @@ index ac98964..5dbf512 100644
41199 case VIA_IRQ_ABSOLUTE: 41720 case VIA_IRQ_ABSOLUTE:
41200 break; 41721 break;
41201diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h 41722diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
41202index c0b73b9..f6f7f34 100644 41723index 0783155..b29e18e 100644
41203--- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h 41724--- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
41204+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h 41725+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
41205@@ -341,7 +341,7 @@ struct vmw_private { 41726@@ -437,7 +437,7 @@ struct vmw_private {
41206 * Fencing and IRQs. 41727 * Fencing and IRQs.
41207 */ 41728 */
41208 41729
@@ -41212,10 +41733,10 @@ index c0b73b9..f6f7f34 100644
41212 wait_queue_head_t fifo_queue; 41733 wait_queue_head_t fifo_queue;
41213 int fence_queue_waiters; /* Protected by hw_mutex */ 41734 int fence_queue_waiters; /* Protected by hw_mutex */
41214diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c b/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c 41735diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c b/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c
41215index 3eb1486..0a47ee9 100644 41736index 6ccd993..618d592 100644
41216--- a/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c 41737--- a/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c
41217+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c 41738+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c
41218@@ -137,7 +137,7 @@ int vmw_fifo_init(struct vmw_private *dev_priv, struct vmw_fifo_state *fifo) 41739@@ -154,7 +154,7 @@ int vmw_fifo_init(struct vmw_private *dev_priv, struct vmw_fifo_state *fifo)
41219 (unsigned int) min, 41740 (unsigned int) min,
41220 (unsigned int) fifo->capabilities); 41741 (unsigned int) fifo->capabilities);
41221 41742
@@ -41224,7 +41745,7 @@ index 3eb1486..0a47ee9 100644
41224 iowrite32(dev_priv->last_read_seqno, fifo_mem + SVGA_FIFO_FENCE); 41745 iowrite32(dev_priv->last_read_seqno, fifo_mem + SVGA_FIFO_FENCE);
41225 vmw_marker_queue_init(&fifo->marker_queue); 41746 vmw_marker_queue_init(&fifo->marker_queue);
41226 return vmw_fifo_send_fence(dev_priv, &dummy); 41747 return vmw_fifo_send_fence(dev_priv, &dummy);
41227@@ -355,7 +355,7 @@ void *vmw_fifo_reserve(struct vmw_private *dev_priv, uint32_t bytes) 41748@@ -372,7 +372,7 @@ void *vmw_fifo_reserve(struct vmw_private *dev_priv, uint32_t bytes)
41228 if (reserveable) 41749 if (reserveable)
41229 iowrite32(bytes, fifo_mem + 41750 iowrite32(bytes, fifo_mem +
41230 SVGA_FIFO_RESERVED); 41751 SVGA_FIFO_RESERVED);
@@ -41233,7 +41754,7 @@ index 3eb1486..0a47ee9 100644
41233 } else { 41754 } else {
41234 need_bounce = true; 41755 need_bounce = true;
41235 } 41756 }
41236@@ -475,7 +475,7 @@ int vmw_fifo_send_fence(struct vmw_private *dev_priv, uint32_t *seqno) 41757@@ -492,7 +492,7 @@ int vmw_fifo_send_fence(struct vmw_private *dev_priv, uint32_t *seqno)
41237 41758
41238 fm = vmw_fifo_reserve(dev_priv, bytes); 41759 fm = vmw_fifo_reserve(dev_priv, bytes);
41239 if (unlikely(fm == NULL)) { 41760 if (unlikely(fm == NULL)) {
@@ -41242,7 +41763,7 @@ index 3eb1486..0a47ee9 100644
41242 ret = -ENOMEM; 41763 ret = -ENOMEM;
41243 (void)vmw_fallback_wait(dev_priv, false, true, *seqno, 41764 (void)vmw_fallback_wait(dev_priv, false, true, *seqno,
41244 false, 3*HZ); 41765 false, 3*HZ);
41245@@ -483,7 +483,7 @@ int vmw_fifo_send_fence(struct vmw_private *dev_priv, uint32_t *seqno) 41766@@ -500,7 +500,7 @@ int vmw_fifo_send_fence(struct vmw_private *dev_priv, uint32_t *seqno)
41246 } 41767 }
41247 41768
41248 do { 41769 do {
@@ -41252,10 +41773,10 @@ index 3eb1486..0a47ee9 100644
41252 41773
41253 if (!(fifo_state->capabilities & SVGA_FIFO_CAP_FENCE)) { 41774 if (!(fifo_state->capabilities & SVGA_FIFO_CAP_FENCE)) {
41254diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c b/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c 41775diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c b/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c
41255index c5c054a..46f0548 100644 41776index b1273e8..9c274fd 100644
41256--- a/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c 41777--- a/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c
41257+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c 41778+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c
41258@@ -153,9 +153,9 @@ static void vmw_gmrid_man_debug(struct ttm_mem_type_manager *man, 41779@@ -164,9 +164,9 @@ static void vmw_gmrid_man_debug(struct ttm_mem_type_manager *man,
41259 } 41780 }
41260 41781
41261 const struct ttm_mem_type_manager_func vmw_gmrid_manager_func = { 41782 const struct ttm_mem_type_manager_func vmw_gmrid_manager_func = {
@@ -41271,10 +41792,10 @@ index c5c054a..46f0548 100644
41271+ .debug = vmw_gmrid_man_debug 41792+ .debug = vmw_gmrid_man_debug
41272 }; 41793 };
41273diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c b/drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c 41794diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c b/drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c
41274index 45d5b5a..f3f5e4e 100644 41795index 47b7094..698ba09 100644
41275--- a/drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c 41796--- a/drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c
41276+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c 41797+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c
41277@@ -141,7 +141,7 @@ int vmw_present_ioctl(struct drm_device *dev, void *data, 41798@@ -236,7 +236,7 @@ int vmw_present_ioctl(struct drm_device *dev, void *data,
41278 int ret; 41799 int ret;
41279 41800
41280 num_clips = arg->num_clips; 41801 num_clips = arg->num_clips;
@@ -41283,7 +41804,7 @@ index 45d5b5a..f3f5e4e 100644
41283 41804
41284 if (unlikely(num_clips == 0)) 41805 if (unlikely(num_clips == 0))
41285 return 0; 41806 return 0;
41286@@ -225,7 +225,7 @@ int vmw_present_readback_ioctl(struct drm_device *dev, void *data, 41807@@ -320,7 +320,7 @@ int vmw_present_readback_ioctl(struct drm_device *dev, void *data,
41287 int ret; 41808 int ret;
41288 41809
41289 num_clips = arg->num_clips; 41810 num_clips = arg->num_clips;
@@ -41293,7 +41814,7 @@ index 45d5b5a..f3f5e4e 100644
41293 if (unlikely(num_clips == 0)) 41814 if (unlikely(num_clips == 0))
41294 return 0; 41815 return 0;
41295diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c b/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c 41816diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c b/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c
41296index 4640adb..e1384ed 100644 41817index 0c42376..6febe77 100644
41297--- a/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c 41818--- a/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c
41298+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c 41819+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c
41299@@ -107,7 +107,7 @@ bool vmw_seqno_passed(struct vmw_private *dev_priv, 41820@@ -107,7 +107,7 @@ bool vmw_seqno_passed(struct vmw_private *dev_priv,
@@ -41350,10 +41871,10 @@ index ec0ae2d..dc0780b 100644
41350 /* copy over all the bus versions */ 41871 /* copy over all the bus versions */
41351 if (dev->bus && dev->bus->pm) { 41872 if (dev->bus && dev->bus->pm) {
41352diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c 41873diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
41353index 253fe23..0dfec5f 100644 41874index 8a5384c..cf63c18 100644
41354--- a/drivers/hid/hid-core.c 41875--- a/drivers/hid/hid-core.c
41355+++ b/drivers/hid/hid-core.c 41876+++ b/drivers/hid/hid-core.c
41356@@ -2416,7 +2416,7 @@ EXPORT_SYMBOL_GPL(hid_ignore); 41877@@ -2422,7 +2422,7 @@ EXPORT_SYMBOL_GPL(hid_ignore);
41357 41878
41358 int hid_add_device(struct hid_device *hdev) 41879 int hid_add_device(struct hid_device *hdev)
41359 { 41880 {
@@ -41362,7 +41883,7 @@ index 253fe23..0dfec5f 100644
41362 int ret; 41883 int ret;
41363 41884
41364 if (WARN_ON(hdev->status & HID_STAT_ADDED)) 41885 if (WARN_ON(hdev->status & HID_STAT_ADDED))
41365@@ -2450,7 +2450,7 @@ int hid_add_device(struct hid_device *hdev) 41886@@ -2456,7 +2456,7 @@ int hid_add_device(struct hid_device *hdev)
41366 /* XXX hack, any other cleaner solution after the driver core 41887 /* XXX hack, any other cleaner solution after the driver core
41367 * is converted to allow more than 20 bytes as the device name? */ 41888 * is converted to allow more than 20 bytes as the device name? */
41368 dev_set_name(&hdev->dev, "%04X:%04X:%04X.%04X", hdev->bus, 41889 dev_set_name(&hdev->dev, "%04X:%04X:%04X.%04X", hdev->bus,
@@ -41416,10 +41937,10 @@ index cedc6da..2c3da2a 100644
41416 if (atomic_read(&uhid->report_done)) 41937 if (atomic_read(&uhid->report_done))
41417 goto unlock; 41938 goto unlock;
41418diff --git a/drivers/hv/channel.c b/drivers/hv/channel.c 41939diff --git a/drivers/hv/channel.c b/drivers/hv/channel.c
41419index cea623c..73011b0 100644 41940index 69ea36f..8dbf4bb 100644
41420--- a/drivers/hv/channel.c 41941--- a/drivers/hv/channel.c
41421+++ b/drivers/hv/channel.c 41942+++ b/drivers/hv/channel.c
41422@@ -362,8 +362,8 @@ int vmbus_establish_gpadl(struct vmbus_channel *channel, void *kbuffer, 41943@@ -364,8 +364,8 @@ int vmbus_establish_gpadl(struct vmbus_channel *channel, void *kbuffer,
41423 int ret = 0; 41944 int ret = 0;
41424 int t; 41945 int t;
41425 41946
@@ -41431,7 +41952,7 @@ index cea623c..73011b0 100644
41431 ret = create_gpadl_header(kbuffer, size, &msginfo, &msgcount); 41952 ret = create_gpadl_header(kbuffer, size, &msginfo, &msgcount);
41432 if (ret) 41953 if (ret)
41433diff --git a/drivers/hv/hv.c b/drivers/hv/hv.c 41954diff --git a/drivers/hv/hv.c b/drivers/hv/hv.c
41434index f0c5e07..399256e 100644 41955index bcb4950..61dba6c 100644
41435--- a/drivers/hv/hv.c 41956--- a/drivers/hv/hv.c
41436+++ b/drivers/hv/hv.c 41957+++ b/drivers/hv/hv.c
41437@@ -112,7 +112,7 @@ static u64 do_hypercall(u64 control, void *input, void *output) 41958@@ -112,7 +112,7 @@ static u64 do_hypercall(u64 control, void *input, void *output)
@@ -41443,6 +41964,15 @@ index f0c5e07..399256e 100644
41443 41964
41444 __asm__ __volatile__ ("call *%8" : "=d"(hv_status_hi), 41965 __asm__ __volatile__ ("call *%8" : "=d"(hv_status_hi),
41445 "=a"(hv_status_lo) : "d" (control_hi), 41966 "=a"(hv_status_lo) : "d" (control_hi),
41967@@ -154,7 +154,7 @@ int hv_init(void)
41968 /* See if the hypercall page is already set */
41969 rdmsrl(HV_X64_MSR_HYPERCALL, hypercall_msr.as_uint64);
41970
41971- virtaddr = __vmalloc(PAGE_SIZE, GFP_KERNEL, PAGE_KERNEL_EXEC);
41972+ virtaddr = __vmalloc(PAGE_SIZE, GFP_KERNEL, PAGE_KERNEL_RX);
41973
41974 if (!virtaddr)
41975 goto cleanup;
41446diff --git a/drivers/hv/hv_balloon.c b/drivers/hv/hv_balloon.c 41976diff --git a/drivers/hv/hv_balloon.c b/drivers/hv/hv_balloon.c
41447index 7e17a54..a50a33d 100644 41977index 7e17a54..a50a33d 100644
41448--- a/drivers/hv/hv_balloon.c 41978--- a/drivers/hv/hv_balloon.c
@@ -41542,10 +42072,10 @@ index e055176..c22ff1f 100644
41542 /* 42072 /*
41543 * Represents channel interrupts. Each bit position represents a 42073 * Represents channel interrupts. Each bit position represents a
41544diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c 42074diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c
41545index 48aad4f..c768fb2 100644 42075index 077bb1b..d433d74 100644
41546--- a/drivers/hv/vmbus_drv.c 42076--- a/drivers/hv/vmbus_drv.c
41547+++ b/drivers/hv/vmbus_drv.c 42077+++ b/drivers/hv/vmbus_drv.c
41548@@ -846,10 +846,10 @@ int vmbus_device_register(struct hv_device *child_device_obj) 42078@@ -844,10 +844,10 @@ int vmbus_device_register(struct hv_device *child_device_obj)
41549 { 42079 {
41550 int ret = 0; 42080 int ret = 0;
41551 42081
@@ -41559,10 +42089,10 @@ index 48aad4f..c768fb2 100644
41559 child_device_obj->device.bus = &hv_bus; 42089 child_device_obj->device.bus = &hv_bus;
41560 child_device_obj->device.parent = &hv_acpi_dev->dev; 42090 child_device_obj->device.parent = &hv_acpi_dev->dev;
41561diff --git a/drivers/hwmon/acpi_power_meter.c b/drivers/hwmon/acpi_power_meter.c 42091diff --git a/drivers/hwmon/acpi_power_meter.c b/drivers/hwmon/acpi_power_meter.c
41562index 6a34f7f..aa4c3a6 100644 42092index 579bdf9..75118b5 100644
41563--- a/drivers/hwmon/acpi_power_meter.c 42093--- a/drivers/hwmon/acpi_power_meter.c
41564+++ b/drivers/hwmon/acpi_power_meter.c 42094+++ b/drivers/hwmon/acpi_power_meter.c
41565@@ -117,7 +117,7 @@ struct sensor_template { 42095@@ -116,7 +116,7 @@ struct sensor_template {
41566 struct device_attribute *devattr, 42096 struct device_attribute *devattr,
41567 const char *buf, size_t count); 42097 const char *buf, size_t count);
41568 int index; 42098 int index;
@@ -41571,7 +42101,7 @@ index 6a34f7f..aa4c3a6 100644
41571 42101
41572 /* Averaging interval */ 42102 /* Averaging interval */
41573 static int update_avg_interval(struct acpi_power_meter_resource *resource) 42103 static int update_avg_interval(struct acpi_power_meter_resource *resource)
41574@@ -632,7 +632,7 @@ static int register_attrs(struct acpi_power_meter_resource *resource, 42104@@ -631,7 +631,7 @@ static int register_attrs(struct acpi_power_meter_resource *resource,
41575 struct sensor_template *attrs) 42105 struct sensor_template *attrs)
41576 { 42106 {
41577 struct device *dev = &resource->acpi_dev->dev; 42107 struct device *dev = &resource->acpi_dev->dev;
@@ -41594,10 +42124,10 @@ index 3288f13..71cfb4e 100644
41594 42124
41595 for (grp = groups; grp->format; grp++) { 42125 for (grp = groups; grp->format; grp++) {
41596diff --git a/drivers/hwmon/asus_atk0110.c b/drivers/hwmon/asus_atk0110.c 42126diff --git a/drivers/hwmon/asus_atk0110.c b/drivers/hwmon/asus_atk0110.c
41597index dafc63c..4abb96c 100644 42127index ae208f6..48b6c5b 100644
41598--- a/drivers/hwmon/asus_atk0110.c 42128--- a/drivers/hwmon/asus_atk0110.c
41599+++ b/drivers/hwmon/asus_atk0110.c 42129+++ b/drivers/hwmon/asus_atk0110.c
41600@@ -151,10 +151,10 @@ MODULE_DEVICE_TABLE(acpi, atk_ids); 42130@@ -147,10 +147,10 @@ MODULE_DEVICE_TABLE(acpi, atk_ids);
41601 struct atk_sensor_data { 42131 struct atk_sensor_data {
41602 struct list_head list; 42132 struct list_head list;
41603 struct atk_data *data; 42133 struct atk_data *data;
@@ -41612,7 +42142,7 @@ index dafc63c..4abb96c 100644
41612 char label_attr_name[ATTR_NAME_SIZE]; 42142 char label_attr_name[ATTR_NAME_SIZE];
41613 char input_attr_name[ATTR_NAME_SIZE]; 42143 char input_attr_name[ATTR_NAME_SIZE];
41614 char limit1_attr_name[ATTR_NAME_SIZE]; 42144 char limit1_attr_name[ATTR_NAME_SIZE];
41615@@ -274,7 +274,7 @@ static ssize_t atk_name_show(struct device *dev, 42145@@ -270,7 +270,7 @@ static ssize_t atk_name_show(struct device *dev,
41616 static struct device_attribute atk_name_attr = 42146 static struct device_attribute atk_name_attr =
41617 __ATTR(name, 0444, atk_name_show, NULL); 42147 __ATTR(name, 0444, atk_name_show, NULL);
41618 42148
@@ -41622,10 +42152,10 @@ index dafc63c..4abb96c 100644
41622 { 42152 {
41623 sysfs_attr_init(&attr->attr); 42153 sysfs_attr_init(&attr->attr);
41624diff --git a/drivers/hwmon/coretemp.c b/drivers/hwmon/coretemp.c 42154diff --git a/drivers/hwmon/coretemp.c b/drivers/hwmon/coretemp.c
41625index 9425098..7646cc5 100644 42155index bbb0b0d..9fe1332 100644
41626--- a/drivers/hwmon/coretemp.c 42156--- a/drivers/hwmon/coretemp.c
41627+++ b/drivers/hwmon/coretemp.c 42157+++ b/drivers/hwmon/coretemp.c
41628@@ -797,7 +797,7 @@ static int coretemp_cpu_callback(struct notifier_block *nfb, 42158@@ -823,7 +823,7 @@ static int coretemp_cpu_callback(struct notifier_block *nfb,
41629 return NOTIFY_OK; 42159 return NOTIFY_OK;
41630 } 42160 }
41631 42161
@@ -41661,7 +42191,7 @@ index 708081b..fe2d4ab 100644
41661 int in_i = 1, temp_i = 1, curr_i = 1; 42191 int in_i = 1, temp_i = 1, curr_i = 1;
41662 enum iio_chan_type type; 42192 enum iio_chan_type type;
41663diff --git a/drivers/hwmon/nct6775.c b/drivers/hwmon/nct6775.c 42193diff --git a/drivers/hwmon/nct6775.c b/drivers/hwmon/nct6775.c
41664index cf811c1..4c17110 100644 42194index 38d5a63..cf2c2ea 100644
41665--- a/drivers/hwmon/nct6775.c 42195--- a/drivers/hwmon/nct6775.c
41666+++ b/drivers/hwmon/nct6775.c 42196+++ b/drivers/hwmon/nct6775.c
41667@@ -944,10 +944,10 @@ static struct attribute_group * 42197@@ -944,10 +944,10 @@ static struct attribute_group *
@@ -41679,10 +42209,10 @@ index cf811c1..4c17110 100644
41679 struct sensor_device_template **t; 42209 struct sensor_device_template **t;
41680 int i, count; 42210 int i, count;
41681diff --git a/drivers/hwmon/pmbus/pmbus_core.c b/drivers/hwmon/pmbus/pmbus_core.c 42211diff --git a/drivers/hwmon/pmbus/pmbus_core.c b/drivers/hwmon/pmbus/pmbus_core.c
41682index 3cbf66e..8c5cc2a 100644 42212index 291d11f..3f0dbbd 100644
41683--- a/drivers/hwmon/pmbus/pmbus_core.c 42213--- a/drivers/hwmon/pmbus/pmbus_core.c
41684+++ b/drivers/hwmon/pmbus/pmbus_core.c 42214+++ b/drivers/hwmon/pmbus/pmbus_core.c
41685@@ -782,7 +782,7 @@ static int pmbus_add_attribute(struct pmbus_data *data, struct attribute *attr) 42215@@ -783,7 +783,7 @@ static int pmbus_add_attribute(struct pmbus_data *data, struct attribute *attr)
41686 return 0; 42216 return 0;
41687 } 42217 }
41688 42218
@@ -41691,7 +42221,7 @@ index 3cbf66e..8c5cc2a 100644
41691 const char *name, 42221 const char *name,
41692 umode_t mode, 42222 umode_t mode,
41693 ssize_t (*show)(struct device *dev, 42223 ssize_t (*show)(struct device *dev,
41694@@ -799,7 +799,7 @@ static void pmbus_dev_attr_init(struct device_attribute *dev_attr, 42224@@ -800,7 +800,7 @@ static void pmbus_dev_attr_init(struct device_attribute *dev_attr,
41695 dev_attr->store = store; 42225 dev_attr->store = store;
41696 } 42226 }
41697 42227
@@ -41700,7 +42230,7 @@ index 3cbf66e..8c5cc2a 100644
41700 const char *name, 42230 const char *name,
41701 umode_t mode, 42231 umode_t mode,
41702 ssize_t (*show)(struct device *dev, 42232 ssize_t (*show)(struct device *dev,
41703@@ -821,7 +821,7 @@ static int pmbus_add_boolean(struct pmbus_data *data, 42233@@ -822,7 +822,7 @@ static int pmbus_add_boolean(struct pmbus_data *data,
41704 u16 reg, u8 mask) 42234 u16 reg, u8 mask)
41705 { 42235 {
41706 struct pmbus_boolean *boolean; 42236 struct pmbus_boolean *boolean;
@@ -41709,7 +42239,7 @@ index 3cbf66e..8c5cc2a 100644
41709 42239
41710 boolean = devm_kzalloc(data->dev, sizeof(*boolean), GFP_KERNEL); 42240 boolean = devm_kzalloc(data->dev, sizeof(*boolean), GFP_KERNEL);
41711 if (!boolean) 42241 if (!boolean)
41712@@ -846,7 +846,7 @@ static struct pmbus_sensor *pmbus_add_sensor(struct pmbus_data *data, 42242@@ -847,7 +847,7 @@ static struct pmbus_sensor *pmbus_add_sensor(struct pmbus_data *data,
41713 bool update, bool readonly) 42243 bool update, bool readonly)
41714 { 42244 {
41715 struct pmbus_sensor *sensor; 42245 struct pmbus_sensor *sensor;
@@ -41718,7 +42248,7 @@ index 3cbf66e..8c5cc2a 100644
41718 42248
41719 sensor = devm_kzalloc(data->dev, sizeof(*sensor), GFP_KERNEL); 42249 sensor = devm_kzalloc(data->dev, sizeof(*sensor), GFP_KERNEL);
41720 if (!sensor) 42250 if (!sensor)
41721@@ -877,7 +877,7 @@ static int pmbus_add_label(struct pmbus_data *data, 42251@@ -878,7 +878,7 @@ static int pmbus_add_label(struct pmbus_data *data,
41722 const char *lstring, int index) 42252 const char *lstring, int index)
41723 { 42253 {
41724 struct pmbus_label *label; 42254 struct pmbus_label *label;
@@ -41793,7 +42323,7 @@ index 38944e9..ae9e5ed 100644
41793 }; 42323 };
41794 42324
41795diff --git a/drivers/i2c/busses/i2c-amd756-s4882.c b/drivers/i2c/busses/i2c-amd756-s4882.c 42325diff --git a/drivers/i2c/busses/i2c-amd756-s4882.c b/drivers/i2c/busses/i2c-amd756-s4882.c
41796index 07f01ac..d79ad3d 100644 42326index 41fc683..a39cfea 100644
41797--- a/drivers/i2c/busses/i2c-amd756-s4882.c 42327--- a/drivers/i2c/busses/i2c-amd756-s4882.c
41798+++ b/drivers/i2c/busses/i2c-amd756-s4882.c 42328+++ b/drivers/i2c/busses/i2c-amd756-s4882.c
41799@@ -43,7 +43,7 @@ 42329@@ -43,7 +43,7 @@
@@ -41819,7 +42349,7 @@ index 721f7eb..0fd2a09 100644
41819 int ret = 0; 42349 int ret = 0;
41820 int actual; 42350 int actual;
41821diff --git a/drivers/i2c/busses/i2c-nforce2-s4985.c b/drivers/i2c/busses/i2c-nforce2-s4985.c 42351diff --git a/drivers/i2c/busses/i2c-nforce2-s4985.c b/drivers/i2c/busses/i2c-nforce2-s4985.c
41822index 2ca268d..c6acbdf 100644 42352index b170bdf..3c76427 100644
41823--- a/drivers/i2c/busses/i2c-nforce2-s4985.c 42353--- a/drivers/i2c/busses/i2c-nforce2-s4985.c
41824+++ b/drivers/i2c/busses/i2c-nforce2-s4985.c 42354+++ b/drivers/i2c/busses/i2c-nforce2-s4985.c
41825@@ -41,7 +41,7 @@ 42355@@ -41,7 +41,7 @@
@@ -41858,10 +42388,10 @@ index 0b510ba..4fbb5085 100644
41858 } 42388 }
41859 } 42389 }
41860diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c 42390diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
41861index 18f72e3..3722327 100644 42391index acc911a..8700c3c 100644
41862--- a/drivers/iio/industrialio-core.c 42392--- a/drivers/iio/industrialio-core.c
41863+++ b/drivers/iio/industrialio-core.c 42393+++ b/drivers/iio/industrialio-core.c
41864@@ -521,7 +521,7 @@ static ssize_t iio_write_channel_info(struct device *dev, 42394@@ -527,7 +527,7 @@ static ssize_t iio_write_channel_info(struct device *dev,
41865 } 42395 }
41866 42396
41867 static 42397 static
@@ -41871,10 +42401,10 @@ index 18f72e3..3722327 100644
41871 struct iio_chan_spec const *chan, 42401 struct iio_chan_spec const *chan,
41872 ssize_t (*readfunc)(struct device *dev, 42402 ssize_t (*readfunc)(struct device *dev,
41873diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c 42403diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c
41874index f2ef7ef..743d02f 100644 42404index c323917..6ddea8b 100644
41875--- a/drivers/infiniband/core/cm.c 42405--- a/drivers/infiniband/core/cm.c
41876+++ b/drivers/infiniband/core/cm.c 42406+++ b/drivers/infiniband/core/cm.c
41877@@ -114,7 +114,7 @@ static char const counter_group_names[CM_COUNTER_GROUPS] 42407@@ -115,7 +115,7 @@ static char const counter_group_names[CM_COUNTER_GROUPS]
41878 42408
41879 struct cm_counter_group { 42409 struct cm_counter_group {
41880 struct kobject obj; 42410 struct kobject obj;
@@ -41883,7 +42413,7 @@ index f2ef7ef..743d02f 100644
41883 }; 42413 };
41884 42414
41885 struct cm_counter_attribute { 42415 struct cm_counter_attribute {
41886@@ -1392,7 +1392,7 @@ static void cm_dup_req_handler(struct cm_work *work, 42416@@ -1398,7 +1398,7 @@ static void cm_dup_req_handler(struct cm_work *work,
41887 struct ib_mad_send_buf *msg = NULL; 42417 struct ib_mad_send_buf *msg = NULL;
41888 int ret; 42418 int ret;
41889 42419
@@ -41892,7 +42422,7 @@ index f2ef7ef..743d02f 100644
41892 counter[CM_REQ_COUNTER]); 42422 counter[CM_REQ_COUNTER]);
41893 42423
41894 /* Quick state check to discard duplicate REQs. */ 42424 /* Quick state check to discard duplicate REQs. */
41895@@ -1776,7 +1776,7 @@ static void cm_dup_rep_handler(struct cm_work *work) 42425@@ -1785,7 +1785,7 @@ static void cm_dup_rep_handler(struct cm_work *work)
41896 if (!cm_id_priv) 42426 if (!cm_id_priv)
41897 return; 42427 return;
41898 42428
@@ -41901,7 +42431,7 @@ index f2ef7ef..743d02f 100644
41901 counter[CM_REP_COUNTER]); 42431 counter[CM_REP_COUNTER]);
41902 ret = cm_alloc_response_msg(work->port, work->mad_recv_wc, &msg); 42432 ret = cm_alloc_response_msg(work->port, work->mad_recv_wc, &msg);
41903 if (ret) 42433 if (ret)
41904@@ -1943,7 +1943,7 @@ static int cm_rtu_handler(struct cm_work *work) 42434@@ -1952,7 +1952,7 @@ static int cm_rtu_handler(struct cm_work *work)
41905 if (cm_id_priv->id.state != IB_CM_REP_SENT && 42435 if (cm_id_priv->id.state != IB_CM_REP_SENT &&
41906 cm_id_priv->id.state != IB_CM_MRA_REP_RCVD) { 42436 cm_id_priv->id.state != IB_CM_MRA_REP_RCVD) {
41907 spin_unlock_irq(&cm_id_priv->lock); 42437 spin_unlock_irq(&cm_id_priv->lock);
@@ -41910,7 +42440,7 @@ index f2ef7ef..743d02f 100644
41910 counter[CM_RTU_COUNTER]); 42440 counter[CM_RTU_COUNTER]);
41911 goto out; 42441 goto out;
41912 } 42442 }
41913@@ -2126,7 +2126,7 @@ static int cm_dreq_handler(struct cm_work *work) 42443@@ -2135,7 +2135,7 @@ static int cm_dreq_handler(struct cm_work *work)
41914 cm_id_priv = cm_acquire_id(dreq_msg->remote_comm_id, 42444 cm_id_priv = cm_acquire_id(dreq_msg->remote_comm_id,
41915 dreq_msg->local_comm_id); 42445 dreq_msg->local_comm_id);
41916 if (!cm_id_priv) { 42446 if (!cm_id_priv) {
@@ -41919,7 +42449,7 @@ index f2ef7ef..743d02f 100644
41919 counter[CM_DREQ_COUNTER]); 42449 counter[CM_DREQ_COUNTER]);
41920 cm_issue_drep(work->port, work->mad_recv_wc); 42450 cm_issue_drep(work->port, work->mad_recv_wc);
41921 return -EINVAL; 42451 return -EINVAL;
41922@@ -2151,7 +2151,7 @@ static int cm_dreq_handler(struct cm_work *work) 42452@@ -2160,7 +2160,7 @@ static int cm_dreq_handler(struct cm_work *work)
41923 case IB_CM_MRA_REP_RCVD: 42453 case IB_CM_MRA_REP_RCVD:
41924 break; 42454 break;
41925 case IB_CM_TIMEWAIT: 42455 case IB_CM_TIMEWAIT:
@@ -41928,7 +42458,7 @@ index f2ef7ef..743d02f 100644
41928 counter[CM_DREQ_COUNTER]); 42458 counter[CM_DREQ_COUNTER]);
41929 if (cm_alloc_response_msg(work->port, work->mad_recv_wc, &msg)) 42459 if (cm_alloc_response_msg(work->port, work->mad_recv_wc, &msg))
41930 goto unlock; 42460 goto unlock;
41931@@ -2165,7 +2165,7 @@ static int cm_dreq_handler(struct cm_work *work) 42461@@ -2174,7 +2174,7 @@ static int cm_dreq_handler(struct cm_work *work)
41932 cm_free_msg(msg); 42462 cm_free_msg(msg);
41933 goto deref; 42463 goto deref;
41934 case IB_CM_DREQ_RCVD: 42464 case IB_CM_DREQ_RCVD:
@@ -41937,7 +42467,7 @@ index f2ef7ef..743d02f 100644
41937 counter[CM_DREQ_COUNTER]); 42467 counter[CM_DREQ_COUNTER]);
41938 goto unlock; 42468 goto unlock;
41939 default: 42469 default:
41940@@ -2532,7 +2532,7 @@ static int cm_mra_handler(struct cm_work *work) 42470@@ -2541,7 +2541,7 @@ static int cm_mra_handler(struct cm_work *work)
41941 ib_modify_mad(cm_id_priv->av.port->mad_agent, 42471 ib_modify_mad(cm_id_priv->av.port->mad_agent,
41942 cm_id_priv->msg, timeout)) { 42472 cm_id_priv->msg, timeout)) {
41943 if (cm_id_priv->id.lap_state == IB_CM_MRA_LAP_RCVD) 42473 if (cm_id_priv->id.lap_state == IB_CM_MRA_LAP_RCVD)
@@ -41946,7 +42476,7 @@ index f2ef7ef..743d02f 100644
41946 counter_group[CM_RECV_DUPLICATES]. 42476 counter_group[CM_RECV_DUPLICATES].
41947 counter[CM_MRA_COUNTER]); 42477 counter[CM_MRA_COUNTER]);
41948 goto out; 42478 goto out;
41949@@ -2541,7 +2541,7 @@ static int cm_mra_handler(struct cm_work *work) 42479@@ -2550,7 +2550,7 @@ static int cm_mra_handler(struct cm_work *work)
41950 break; 42480 break;
41951 case IB_CM_MRA_REQ_RCVD: 42481 case IB_CM_MRA_REQ_RCVD:
41952 case IB_CM_MRA_REP_RCVD: 42482 case IB_CM_MRA_REP_RCVD:
@@ -41955,7 +42485,7 @@ index f2ef7ef..743d02f 100644
41955 counter[CM_MRA_COUNTER]); 42485 counter[CM_MRA_COUNTER]);
41956 /* fall through */ 42486 /* fall through */
41957 default: 42487 default:
41958@@ -2703,7 +2703,7 @@ static int cm_lap_handler(struct cm_work *work) 42488@@ -2712,7 +2712,7 @@ static int cm_lap_handler(struct cm_work *work)
41959 case IB_CM_LAP_IDLE: 42489 case IB_CM_LAP_IDLE:
41960 break; 42490 break;
41961 case IB_CM_MRA_LAP_SENT: 42491 case IB_CM_MRA_LAP_SENT:
@@ -41964,7 +42494,7 @@ index f2ef7ef..743d02f 100644
41964 counter[CM_LAP_COUNTER]); 42494 counter[CM_LAP_COUNTER]);
41965 if (cm_alloc_response_msg(work->port, work->mad_recv_wc, &msg)) 42495 if (cm_alloc_response_msg(work->port, work->mad_recv_wc, &msg))
41966 goto unlock; 42496 goto unlock;
41967@@ -2719,7 +2719,7 @@ static int cm_lap_handler(struct cm_work *work) 42497@@ -2728,7 +2728,7 @@ static int cm_lap_handler(struct cm_work *work)
41968 cm_free_msg(msg); 42498 cm_free_msg(msg);
41969 goto deref; 42499 goto deref;
41970 case IB_CM_LAP_RCVD: 42500 case IB_CM_LAP_RCVD:
@@ -41973,7 +42503,7 @@ index f2ef7ef..743d02f 100644
41973 counter[CM_LAP_COUNTER]); 42503 counter[CM_LAP_COUNTER]);
41974 goto unlock; 42504 goto unlock;
41975 default: 42505 default:
41976@@ -3003,7 +3003,7 @@ static int cm_sidr_req_handler(struct cm_work *work) 42506@@ -3012,7 +3012,7 @@ static int cm_sidr_req_handler(struct cm_work *work)
41977 cur_cm_id_priv = cm_insert_remote_sidr(cm_id_priv); 42507 cur_cm_id_priv = cm_insert_remote_sidr(cm_id_priv);
41978 if (cur_cm_id_priv) { 42508 if (cur_cm_id_priv) {
41979 spin_unlock_irq(&cm.lock); 42509 spin_unlock_irq(&cm.lock);
@@ -41982,7 +42512,7 @@ index f2ef7ef..743d02f 100644
41982 counter[CM_SIDR_REQ_COUNTER]); 42512 counter[CM_SIDR_REQ_COUNTER]);
41983 goto out; /* Duplicate message. */ 42513 goto out; /* Duplicate message. */
41984 } 42514 }
41985@@ -3215,10 +3215,10 @@ static void cm_send_handler(struct ib_mad_agent *mad_agent, 42515@@ -3224,10 +3224,10 @@ static void cm_send_handler(struct ib_mad_agent *mad_agent,
41986 if (!msg->context[0] && (attr_index != CM_REJ_COUNTER)) 42516 if (!msg->context[0] && (attr_index != CM_REJ_COUNTER))
41987 msg->retries = 1; 42517 msg->retries = 1;
41988 42518
@@ -41995,7 +42525,7 @@ index f2ef7ef..743d02f 100644
41995 &port->counter_group[CM_XMIT_RETRIES]. 42525 &port->counter_group[CM_XMIT_RETRIES].
41996 counter[attr_index]); 42526 counter[attr_index]);
41997 42527
41998@@ -3428,7 +3428,7 @@ static void cm_recv_handler(struct ib_mad_agent *mad_agent, 42528@@ -3437,7 +3437,7 @@ static void cm_recv_handler(struct ib_mad_agent *mad_agent,
41999 } 42529 }
42000 42530
42001 attr_id = be16_to_cpu(mad_recv_wc->recv_buf.mad->mad_hdr.attr_id); 42531 attr_id = be16_to_cpu(mad_recv_wc->recv_buf.mad->mad_hdr.attr_id);
@@ -42004,7 +42534,7 @@ index f2ef7ef..743d02f 100644
42004 counter[attr_id - CM_ATTR_ID_OFFSET]); 42534 counter[attr_id - CM_ATTR_ID_OFFSET]);
42005 42535
42006 work = kmalloc(sizeof *work + sizeof(struct ib_sa_path_rec) * paths, 42536 work = kmalloc(sizeof *work + sizeof(struct ib_sa_path_rec) * paths,
42007@@ -3633,7 +3633,7 @@ static ssize_t cm_show_counter(struct kobject *obj, struct attribute *attr, 42537@@ -3668,7 +3668,7 @@ static ssize_t cm_show_counter(struct kobject *obj, struct attribute *attr,
42008 cm_attr = container_of(attr, struct cm_counter_attribute, attr); 42538 cm_attr = container_of(attr, struct cm_counter_attribute, attr);
42009 42539
42010 return sprintf(buf, "%ld\n", 42540 return sprintf(buf, "%ld\n",
@@ -42085,7 +42615,7 @@ index 9f5ad7c..588cd84 100644
42085 } 42615 }
42086 } 42616 }
42087diff --git a/drivers/infiniband/hw/cxgb4/mem.c b/drivers/infiniband/hw/cxgb4/mem.c 42617diff --git a/drivers/infiniband/hw/cxgb4/mem.c b/drivers/infiniband/hw/cxgb4/mem.c
42088index 84e4500..2c9beeb 100644 42618index 41b1195..27971a0 100644
42089--- a/drivers/infiniband/hw/cxgb4/mem.c 42619--- a/drivers/infiniband/hw/cxgb4/mem.c
42090+++ b/drivers/infiniband/hw/cxgb4/mem.c 42620+++ b/drivers/infiniband/hw/cxgb4/mem.c
42091@@ -249,7 +249,7 @@ static int write_tpt_entry(struct c4iw_rdev *rdev, u32 reset_tpt_entry, 42621@@ -249,7 +249,7 @@ static int write_tpt_entry(struct c4iw_rdev *rdev, u32 reset_tpt_entry,
@@ -42222,10 +42752,10 @@ index 25b2cdf..099ff97 100644
42222 ctx->mcg_wq = create_singlethread_workqueue(name); 42752 ctx->mcg_wq = create_singlethread_workqueue(name);
42223 if (!ctx->mcg_wq) 42753 if (!ctx->mcg_wq)
42224diff --git a/drivers/infiniband/hw/mlx4/mlx4_ib.h b/drivers/infiniband/hw/mlx4/mlx4_ib.h 42754diff --git a/drivers/infiniband/hw/mlx4/mlx4_ib.h b/drivers/infiniband/hw/mlx4/mlx4_ib.h
42225index 036b663..c9a8c73 100644 42755index a230683..3723f2d 100644
42226--- a/drivers/infiniband/hw/mlx4/mlx4_ib.h 42756--- a/drivers/infiniband/hw/mlx4/mlx4_ib.h
42227+++ b/drivers/infiniband/hw/mlx4/mlx4_ib.h 42757+++ b/drivers/infiniband/hw/mlx4/mlx4_ib.h
42228@@ -404,7 +404,7 @@ struct mlx4_ib_demux_ctx { 42758@@ -408,7 +408,7 @@ struct mlx4_ib_demux_ctx {
42229 struct list_head mcg_mgid0_list; 42759 struct list_head mcg_mgid0_list;
42230 struct workqueue_struct *mcg_wq; 42760 struct workqueue_struct *mcg_wq;
42231 struct mlx4_ib_demux_pv_ctx **tun; 42761 struct mlx4_ib_demux_pv_ctx **tun;
@@ -42319,10 +42849,10 @@ index ed9a989..6aa5dc2 100644
42319 int list_len, u64 iova, u64 total_size, 42849 int list_len, u64 iova, u64 total_size,
42320 u32 access, struct mthca_mr *mr) 42850 u32 access, struct mthca_mr *mr)
42321diff --git a/drivers/infiniband/hw/mthca/mthca_provider.c b/drivers/infiniband/hw/mthca/mthca_provider.c 42851diff --git a/drivers/infiniband/hw/mthca/mthca_provider.c b/drivers/infiniband/hw/mthca/mthca_provider.c
42322index 5b71d43..35a9e14 100644 42852index 42dde06..1257310 100644
42323--- a/drivers/infiniband/hw/mthca/mthca_provider.c 42853--- a/drivers/infiniband/hw/mthca/mthca_provider.c
42324+++ b/drivers/infiniband/hw/mthca/mthca_provider.c 42854+++ b/drivers/infiniband/hw/mthca/mthca_provider.c
42325@@ -763,7 +763,7 @@ unlock: 42855@@ -764,7 +764,7 @@ unlock:
42326 return 0; 42856 return 0;
42327 } 42857 }
42328 42858
@@ -42332,7 +42862,7 @@ index 5b71d43..35a9e14 100644
42332 struct mthca_dev *dev = to_mdev(ibcq->device); 42862 struct mthca_dev *dev = to_mdev(ibcq->device);
42333 struct mthca_cq *cq = to_mcq(ibcq); 42863 struct mthca_cq *cq = to_mcq(ibcq);
42334diff --git a/drivers/infiniband/hw/nes/nes.c b/drivers/infiniband/hw/nes/nes.c 42864diff --git a/drivers/infiniband/hw/nes/nes.c b/drivers/infiniband/hw/nes/nes.c
42335index 4291410..d2ab1fb 100644 42865index 353c7b0..c6ce921 100644
42336--- a/drivers/infiniband/hw/nes/nes.c 42866--- a/drivers/infiniband/hw/nes/nes.c
42337+++ b/drivers/infiniband/hw/nes/nes.c 42867+++ b/drivers/infiniband/hw/nes/nes.c
42338@@ -98,7 +98,7 @@ MODULE_PARM_DESC(limit_maxrdreqsz, "Limit max read request size to 256 Bytes"); 42868@@ -98,7 +98,7 @@ MODULE_PARM_DESC(limit_maxrdreqsz, "Limit max read request size to 256 Bytes");
@@ -42413,7 +42943,7 @@ index 33cc589..3bd6538 100644
42413 extern u32 int_mod_timer_init; 42943 extern u32 int_mod_timer_init;
42414 extern u32 int_mod_cq_depth_256; 42944 extern u32 int_mod_cq_depth_256;
42415diff --git a/drivers/infiniband/hw/nes/nes_cm.c b/drivers/infiniband/hw/nes/nes_cm.c 42945diff --git a/drivers/infiniband/hw/nes/nes_cm.c b/drivers/infiniband/hw/nes/nes_cm.c
42416index 6b29249..461d143 100644 42946index 9c9f2f5..2559190 100644
42417--- a/drivers/infiniband/hw/nes/nes_cm.c 42947--- a/drivers/infiniband/hw/nes/nes_cm.c
42418+++ b/drivers/infiniband/hw/nes/nes_cm.c 42948+++ b/drivers/infiniband/hw/nes/nes_cm.c
42419@@ -68,14 +68,14 @@ u32 cm_packets_dropped; 42949@@ -68,14 +68,14 @@ u32 cm_packets_dropped;
@@ -42494,7 +43024,7 @@ index 6b29249..461d143 100644
42494 } else { 43024 } else {
42495 spin_unlock_irqrestore(&cm_core->listen_list_lock, flags); 43025 spin_unlock_irqrestore(&cm_core->listen_list_lock, flags);
42496 } 43026 }
42497@@ -1466,7 +1466,7 @@ static struct nes_cm_node *make_cm_node(struct nes_cm_core *cm_core, 43027@@ -1465,7 +1465,7 @@ static struct nes_cm_node *make_cm_node(struct nes_cm_core *cm_core,
42498 cm_node->rem_mac); 43028 cm_node->rem_mac);
42499 43029
42500 add_hte_node(cm_core, cm_node); 43030 add_hte_node(cm_core, cm_node);
@@ -42503,7 +43033,7 @@ index 6b29249..461d143 100644
42503 43033
42504 return cm_node; 43034 return cm_node;
42505 } 43035 }
42506@@ -1524,7 +1524,7 @@ static int rem_ref_cm_node(struct nes_cm_core *cm_core, 43036@@ -1523,7 +1523,7 @@ static int rem_ref_cm_node(struct nes_cm_core *cm_core,
42507 } 43037 }
42508 43038
42509 atomic_dec(&cm_core->node_cnt); 43039 atomic_dec(&cm_core->node_cnt);
@@ -42512,7 +43042,7 @@ index 6b29249..461d143 100644
42512 nesqp = cm_node->nesqp; 43042 nesqp = cm_node->nesqp;
42513 if (nesqp) { 43043 if (nesqp) {
42514 nesqp->cm_node = NULL; 43044 nesqp->cm_node = NULL;
42515@@ -1588,7 +1588,7 @@ static int process_options(struct nes_cm_node *cm_node, u8 *optionsloc, 43045@@ -1587,7 +1587,7 @@ static int process_options(struct nes_cm_node *cm_node, u8 *optionsloc,
42516 43046
42517 static void drop_packet(struct sk_buff *skb) 43047 static void drop_packet(struct sk_buff *skb)
42518 { 43048 {
@@ -42521,7 +43051,7 @@ index 6b29249..461d143 100644
42521 dev_kfree_skb_any(skb); 43051 dev_kfree_skb_any(skb);
42522 } 43052 }
42523 43053
42524@@ -1651,7 +1651,7 @@ static void handle_rst_pkt(struct nes_cm_node *cm_node, struct sk_buff *skb, 43054@@ -1650,7 +1650,7 @@ static void handle_rst_pkt(struct nes_cm_node *cm_node, struct sk_buff *skb,
42525 { 43055 {
42526 43056
42527 int reset = 0; /* whether to send reset in case of err.. */ 43057 int reset = 0; /* whether to send reset in case of err.. */
@@ -42530,7 +43060,7 @@ index 6b29249..461d143 100644
42530 nes_debug(NES_DBG_CM, "Received Reset, cm_node = %p, state = %u." 43060 nes_debug(NES_DBG_CM, "Received Reset, cm_node = %p, state = %u."
42531 " refcnt=%d\n", cm_node, cm_node->state, 43061 " refcnt=%d\n", cm_node, cm_node->state,
42532 atomic_read(&cm_node->ref_count)); 43062 atomic_read(&cm_node->ref_count));
42533@@ -2292,7 +2292,7 @@ static struct nes_cm_node *mini_cm_connect(struct nes_cm_core *cm_core, 43063@@ -2291,7 +2291,7 @@ static struct nes_cm_node *mini_cm_connect(struct nes_cm_core *cm_core,
42534 rem_ref_cm_node(cm_node->cm_core, cm_node); 43064 rem_ref_cm_node(cm_node->cm_core, cm_node);
42535 return NULL; 43065 return NULL;
42536 } 43066 }
@@ -42539,7 +43069,7 @@ index 6b29249..461d143 100644
42539 loopbackremotenode->loopbackpartner = cm_node; 43069 loopbackremotenode->loopbackpartner = cm_node;
42540 loopbackremotenode->tcp_cntxt.rcv_wscale = 43070 loopbackremotenode->tcp_cntxt.rcv_wscale =
42541 NES_CM_DEFAULT_RCV_WND_SCALE; 43071 NES_CM_DEFAULT_RCV_WND_SCALE;
42542@@ -2567,7 +2567,7 @@ static int mini_cm_recv_pkt(struct nes_cm_core *cm_core, 43072@@ -2566,7 +2566,7 @@ static int mini_cm_recv_pkt(struct nes_cm_core *cm_core,
42543 nes_queue_mgt_skbs(skb, nesvnic, cm_node->nesqp); 43073 nes_queue_mgt_skbs(skb, nesvnic, cm_node->nesqp);
42544 else { 43074 else {
42545 rem_ref_cm_node(cm_core, cm_node); 43075 rem_ref_cm_node(cm_core, cm_node);
@@ -42548,7 +43078,7 @@ index 6b29249..461d143 100644
42548 dev_kfree_skb_any(skb); 43078 dev_kfree_skb_any(skb);
42549 } 43079 }
42550 break; 43080 break;
42551@@ -2875,7 +2875,7 @@ static int nes_cm_disconn_true(struct nes_qp *nesqp) 43081@@ -2874,7 +2874,7 @@ static int nes_cm_disconn_true(struct nes_qp *nesqp)
42552 43082
42553 if ((cm_id) && (cm_id->event_handler)) { 43083 if ((cm_id) && (cm_id->event_handler)) {
42554 if (issue_disconn) { 43084 if (issue_disconn) {
@@ -42557,7 +43087,7 @@ index 6b29249..461d143 100644
42557 cm_event.event = IW_CM_EVENT_DISCONNECT; 43087 cm_event.event = IW_CM_EVENT_DISCONNECT;
42558 cm_event.status = disconn_status; 43088 cm_event.status = disconn_status;
42559 cm_event.local_addr = cm_id->local_addr; 43089 cm_event.local_addr = cm_id->local_addr;
42560@@ -2897,7 +2897,7 @@ static int nes_cm_disconn_true(struct nes_qp *nesqp) 43090@@ -2896,7 +2896,7 @@ static int nes_cm_disconn_true(struct nes_qp *nesqp)
42561 } 43091 }
42562 43092
42563 if (issue_close) { 43093 if (issue_close) {
@@ -42566,7 +43096,7 @@ index 6b29249..461d143 100644
42566 nes_disconnect(nesqp, 1); 43096 nes_disconnect(nesqp, 1);
42567 43097
42568 cm_id->provider_data = nesqp; 43098 cm_id->provider_data = nesqp;
42569@@ -3035,7 +3035,7 @@ int nes_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param) 43099@@ -3034,7 +3034,7 @@ int nes_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
42570 43100
42571 nes_debug(NES_DBG_CM, "QP%u, cm_node=%p, jiffies = %lu listener = %p\n", 43101 nes_debug(NES_DBG_CM, "QP%u, cm_node=%p, jiffies = %lu listener = %p\n",
42572 nesqp->hwqp.qp_id, cm_node, jiffies, cm_node->listener); 43102 nesqp->hwqp.qp_id, cm_node, jiffies, cm_node->listener);
@@ -42575,7 +43105,7 @@ index 6b29249..461d143 100644
42575 43105
42576 nes_debug(NES_DBG_CM, "netdev refcnt = %u.\n", 43106 nes_debug(NES_DBG_CM, "netdev refcnt = %u.\n",
42577 netdev_refcnt_read(nesvnic->netdev)); 43107 netdev_refcnt_read(nesvnic->netdev));
42578@@ -3224,7 +3224,7 @@ int nes_reject(struct iw_cm_id *cm_id, const void *pdata, u8 pdata_len) 43108@@ -3223,7 +3223,7 @@ int nes_reject(struct iw_cm_id *cm_id, const void *pdata, u8 pdata_len)
42579 struct nes_cm_core *cm_core; 43109 struct nes_cm_core *cm_core;
42580 u8 *start_buff; 43110 u8 *start_buff;
42581 43111
@@ -42584,7 +43114,7 @@ index 6b29249..461d143 100644
42584 cm_node = (struct nes_cm_node *)cm_id->provider_data; 43114 cm_node = (struct nes_cm_node *)cm_id->provider_data;
42585 loopback = cm_node->loopbackpartner; 43115 loopback = cm_node->loopbackpartner;
42586 cm_core = cm_node->cm_core; 43116 cm_core = cm_node->cm_core;
42587@@ -3286,7 +3286,7 @@ int nes_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param) 43117@@ -3285,7 +3285,7 @@ int nes_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
42588 ntohs(raddr->sin_port), ntohl(laddr->sin_addr.s_addr), 43118 ntohs(raddr->sin_port), ntohl(laddr->sin_addr.s_addr),
42589 ntohs(laddr->sin_port)); 43119 ntohs(laddr->sin_port));
42590 43120
@@ -42593,7 +43123,7 @@ index 6b29249..461d143 100644
42593 nesqp->active_conn = 1; 43123 nesqp->active_conn = 1;
42594 43124
42595 /* cache the cm_id in the qp */ 43125 /* cache the cm_id in the qp */
42596@@ -3398,7 +3398,7 @@ int nes_create_listen(struct iw_cm_id *cm_id, int backlog) 43126@@ -3397,7 +3397,7 @@ int nes_create_listen(struct iw_cm_id *cm_id, int backlog)
42597 g_cm_core->api->stop_listener(g_cm_core, (void *)cm_node); 43127 g_cm_core->api->stop_listener(g_cm_core, (void *)cm_node);
42598 return err; 43128 return err;
42599 } 43129 }
@@ -42602,7 +43132,7 @@ index 6b29249..461d143 100644
42602 } 43132 }
42603 43133
42604 cm_id->add_ref(cm_id); 43134 cm_id->add_ref(cm_id);
42605@@ -3505,7 +3505,7 @@ static void cm_event_connected(struct nes_cm_event *event) 43135@@ -3504,7 +3504,7 @@ static void cm_event_connected(struct nes_cm_event *event)
42606 43136
42607 if (nesqp->destroyed) 43137 if (nesqp->destroyed)
42608 return; 43138 return;
@@ -42611,7 +43141,7 @@ index 6b29249..461d143 100644
42611 nes_debug(NES_DBG_CM, "QP%u attempting to connect to 0x%08X:0x%04X on" 43141 nes_debug(NES_DBG_CM, "QP%u attempting to connect to 0x%08X:0x%04X on"
42612 " local port 0x%04X. jiffies = %lu.\n", 43142 " local port 0x%04X. jiffies = %lu.\n",
42613 nesqp->hwqp.qp_id, ntohl(raddr->sin_addr.s_addr), 43143 nesqp->hwqp.qp_id, ntohl(raddr->sin_addr.s_addr),
42614@@ -3686,7 +3686,7 @@ static void cm_event_reset(struct nes_cm_event *event) 43144@@ -3685,7 +3685,7 @@ static void cm_event_reset(struct nes_cm_event *event)
42615 43145
42616 cm_id->add_ref(cm_id); 43146 cm_id->add_ref(cm_id);
42617 ret = cm_id->event_handler(cm_id, &cm_event); 43147 ret = cm_id->event_handler(cm_id, &cm_event);
@@ -42620,7 +43150,7 @@ index 6b29249..461d143 100644
42620 cm_event.event = IW_CM_EVENT_CLOSE; 43150 cm_event.event = IW_CM_EVENT_CLOSE;
42621 cm_event.status = 0; 43151 cm_event.status = 0;
42622 cm_event.provider_data = cm_id->provider_data; 43152 cm_event.provider_data = cm_id->provider_data;
42623@@ -3726,7 +3726,7 @@ static void cm_event_mpa_req(struct nes_cm_event *event) 43153@@ -3725,7 +3725,7 @@ static void cm_event_mpa_req(struct nes_cm_event *event)
42624 return; 43154 return;
42625 cm_id = cm_node->cm_id; 43155 cm_id = cm_node->cm_id;
42626 43156
@@ -42629,7 +43159,7 @@ index 6b29249..461d143 100644
42629 nes_debug(NES_DBG_CM, "cm_node = %p - cm_id = %p, jiffies = %lu\n", 43159 nes_debug(NES_DBG_CM, "cm_node = %p - cm_id = %p, jiffies = %lu\n",
42630 cm_node, cm_id, jiffies); 43160 cm_node, cm_id, jiffies);
42631 43161
42632@@ -3770,7 +3770,7 @@ static void cm_event_mpa_reject(struct nes_cm_event *event) 43162@@ -3769,7 +3769,7 @@ static void cm_event_mpa_reject(struct nes_cm_event *event)
42633 return; 43163 return;
42634 cm_id = cm_node->cm_id; 43164 cm_id = cm_node->cm_id;
42635 43165
@@ -42736,7 +43266,7 @@ index 49eb511..a774366 100644
42736 43266
42737 /** 43267 /**
42738diff --git a/drivers/infiniband/hw/nes/nes_verbs.c b/drivers/infiniband/hw/nes/nes_verbs.c 43268diff --git a/drivers/infiniband/hw/nes/nes_verbs.c b/drivers/infiniband/hw/nes/nes_verbs.c
42739index 8308e36..ae0d3b5 100644 43269index eb62461..2b7fc71 100644
42740--- a/drivers/infiniband/hw/nes/nes_verbs.c 43270--- a/drivers/infiniband/hw/nes/nes_verbs.c
42741+++ b/drivers/infiniband/hw/nes/nes_verbs.c 43271+++ b/drivers/infiniband/hw/nes/nes_verbs.c
42742@@ -46,9 +46,9 @@ 43272@@ -46,9 +46,9 @@
@@ -42804,10 +43334,10 @@ index 24c41ba..102d71f 100644
42804 gameport->dev.release = gameport_release_port; 43334 gameport->dev.release = gameport_release_port;
42805 if (gameport->parent) 43335 if (gameport->parent)
42806diff --git a/drivers/input/input.c b/drivers/input/input.c 43336diff --git a/drivers/input/input.c b/drivers/input/input.c
42807index d2965e4..f52b7d7 100644 43337index 1c4c0db..6f7abe3 100644
42808--- a/drivers/input/input.c 43338--- a/drivers/input/input.c
42809+++ b/drivers/input/input.c 43339+++ b/drivers/input/input.c
42810@@ -1734,7 +1734,7 @@ EXPORT_SYMBOL_GPL(input_class); 43340@@ -1772,7 +1772,7 @@ EXPORT_SYMBOL_GPL(input_class);
42811 */ 43341 */
42812 struct input_dev *input_allocate_device(void) 43342 struct input_dev *input_allocate_device(void)
42813 { 43343 {
@@ -42816,7 +43346,7 @@ index d2965e4..f52b7d7 100644
42816 struct input_dev *dev; 43346 struct input_dev *dev;
42817 43347
42818 dev = kzalloc(sizeof(struct input_dev), GFP_KERNEL); 43348 dev = kzalloc(sizeof(struct input_dev), GFP_KERNEL);
42819@@ -1749,7 +1749,7 @@ struct input_dev *input_allocate_device(void) 43349@@ -1787,7 +1787,7 @@ struct input_dev *input_allocate_device(void)
42820 INIT_LIST_HEAD(&dev->node); 43350 INIT_LIST_HEAD(&dev->node);
42821 43351
42822 dev_set_name(&dev->dev, "input%ld", 43352 dev_set_name(&dev->dev, "input%ld",
@@ -42826,7 +43356,7 @@ index d2965e4..f52b7d7 100644
42826 __module_get(THIS_MODULE); 43356 __module_get(THIS_MODULE);
42827 } 43357 }
42828diff --git a/drivers/input/joystick/sidewinder.c b/drivers/input/joystick/sidewinder.c 43358diff --git a/drivers/input/joystick/sidewinder.c b/drivers/input/joystick/sidewinder.c
42829index 04c69af..5f92d00 100644 43359index 4a95b22..874c182 100644
42830--- a/drivers/input/joystick/sidewinder.c 43360--- a/drivers/input/joystick/sidewinder.c
42831+++ b/drivers/input/joystick/sidewinder.c 43361+++ b/drivers/input/joystick/sidewinder.c
42832@@ -30,6 +30,7 @@ 43362@@ -30,6 +30,7 @@
@@ -42834,14 +43364,14 @@ index 04c69af..5f92d00 100644
42834 #include <linux/module.h> 43364 #include <linux/module.h>
42835 #include <linux/slab.h> 43365 #include <linux/slab.h>
42836+#include <linux/sched.h> 43366+#include <linux/sched.h>
42837 #include <linux/init.h>
42838 #include <linux/input.h> 43367 #include <linux/input.h>
42839 #include <linux/gameport.h> 43368 #include <linux/gameport.h>
43369 #include <linux/jiffies.h>
42840diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c 43370diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c
42841index 75e3b10..fb390fd 100644 43371index 603fe0d..f63decc 100644
42842--- a/drivers/input/joystick/xpad.c 43372--- a/drivers/input/joystick/xpad.c
42843+++ b/drivers/input/joystick/xpad.c 43373+++ b/drivers/input/joystick/xpad.c
42844@@ -736,7 +736,7 @@ static void xpad_led_set(struct led_classdev *led_cdev, 43374@@ -737,7 +737,7 @@ static void xpad_led_set(struct led_classdev *led_cdev,
42845 43375
42846 static int xpad_led_probe(struct usb_xpad *xpad) 43376 static int xpad_led_probe(struct usb_xpad *xpad)
42847 { 43377 {
@@ -42850,7 +43380,7 @@ index 75e3b10..fb390fd 100644
42850 long led_no; 43380 long led_no;
42851 struct xpad_led *led; 43381 struct xpad_led *led;
42852 struct led_classdev *led_cdev; 43382 struct led_classdev *led_cdev;
42853@@ -749,7 +749,7 @@ static int xpad_led_probe(struct usb_xpad *xpad) 43383@@ -750,7 +750,7 @@ static int xpad_led_probe(struct usb_xpad *xpad)
42854 if (!led) 43384 if (!led)
42855 return -ENOMEM; 43385 return -ENOMEM;
42856 43386
@@ -42895,10 +43425,10 @@ index 2f0b39d..7370f13 100644
42895 43425
42896 ssize_t psmouse_attr_show_helper(struct device *dev, struct device_attribute *attr, 43426 ssize_t psmouse_attr_show_helper(struct device *dev, struct device_attribute *attr,
42897diff --git a/drivers/input/mousedev.c b/drivers/input/mousedev.c 43427diff --git a/drivers/input/mousedev.c b/drivers/input/mousedev.c
42898index 4c842c3..590b0bf 100644 43428index b604564..3f14ae4 100644
42899--- a/drivers/input/mousedev.c 43429--- a/drivers/input/mousedev.c
42900+++ b/drivers/input/mousedev.c 43430+++ b/drivers/input/mousedev.c
42901@@ -738,7 +738,7 @@ static ssize_t mousedev_read(struct file *file, char __user *buffer, 43431@@ -744,7 +744,7 @@ static ssize_t mousedev_read(struct file *file, char __user *buffer,
42902 43432
42903 spin_unlock_irq(&client->packet_lock); 43433 spin_unlock_irq(&client->packet_lock);
42904 43434
@@ -42930,10 +43460,10 @@ index 8f4c4ab..5fc8a45 100644
42930 serio->dev.release = serio_release_port; 43460 serio->dev.release = serio_release_port;
42931 serio->dev.groups = serio_device_attr_groups; 43461 serio->dev.groups = serio_device_attr_groups;
42932diff --git a/drivers/input/serio/serio_raw.c b/drivers/input/serio/serio_raw.c 43462diff --git a/drivers/input/serio/serio_raw.c b/drivers/input/serio/serio_raw.c
42933index 59df2e7..8f1cafb 100644 43463index c9a02fe..0debc75 100644
42934--- a/drivers/input/serio/serio_raw.c 43464--- a/drivers/input/serio/serio_raw.c
42935+++ b/drivers/input/serio/serio_raw.c 43465+++ b/drivers/input/serio/serio_raw.c
42936@@ -293,7 +293,7 @@ static irqreturn_t serio_raw_interrupt(struct serio *serio, unsigned char data, 43466@@ -292,7 +292,7 @@ static irqreturn_t serio_raw_interrupt(struct serio *serio, unsigned char data,
42937 43467
42938 static int serio_raw_connect(struct serio *serio, struct serio_driver *drv) 43468 static int serio_raw_connect(struct serio *serio, struct serio_driver *drv)
42939 { 43469 {
@@ -42942,7 +43472,7 @@ index 59df2e7..8f1cafb 100644
42942 struct serio_raw *serio_raw; 43472 struct serio_raw *serio_raw;
42943 int err; 43473 int err;
42944 43474
42945@@ -304,7 +304,7 @@ static int serio_raw_connect(struct serio *serio, struct serio_driver *drv) 43475@@ -303,7 +303,7 @@ static int serio_raw_connect(struct serio *serio, struct serio_driver *drv)
42946 } 43476 }
42947 43477
42948 snprintf(serio_raw->name, sizeof(serio_raw->name), 43478 snprintf(serio_raw->name, sizeof(serio_raw->name),
@@ -42965,7 +43495,7 @@ index e5555fc..937986d 100644
42965 43495
42966 /** 43496 /**
42967diff --git a/drivers/iommu/irq_remapping.c b/drivers/iommu/irq_remapping.c 43497diff --git a/drivers/iommu/irq_remapping.c b/drivers/iommu/irq_remapping.c
42968index 39f81ae..2660096 100644 43498index 228632c9..edfe331 100644
42969--- a/drivers/iommu/irq_remapping.c 43499--- a/drivers/iommu/irq_remapping.c
42970+++ b/drivers/iommu/irq_remapping.c 43500+++ b/drivers/iommu/irq_remapping.c
42971@@ -356,7 +356,7 @@ int setup_hpet_msi_remapped(unsigned int irq, unsigned int id) 43501@@ -356,7 +356,7 @@ int setup_hpet_msi_remapped(unsigned int irq, unsigned int id)
@@ -43016,6 +43546,19 @@ index 341c601..e5f407e 100644
43016 .name = "GIC", 43546 .name = "GIC",
43017 .irq_mask = gic_mask_irq, 43547 .irq_mask = gic_mask_irq,
43018 .irq_unmask = gic_unmask_irq, 43548 .irq_unmask = gic_unmask_irq,
43549diff --git a/drivers/irqchip/irq-renesas-irqc.c b/drivers/irqchip/irq-renesas-irqc.c
43550index 8777065..a4a9967 100644
43551--- a/drivers/irqchip/irq-renesas-irqc.c
43552+++ b/drivers/irqchip/irq-renesas-irqc.c
43553@@ -151,7 +151,7 @@ static int irqc_probe(struct platform_device *pdev)
43554 struct irqc_priv *p;
43555 struct resource *io;
43556 struct resource *irq;
43557- struct irq_chip *irq_chip;
43558+ irq_chip_no_const *irq_chip;
43559 const char *name = dev_name(&pdev->dev);
43560 int ret;
43561 int k;
43019diff --git a/drivers/isdn/capi/capi.c b/drivers/isdn/capi/capi.c 43562diff --git a/drivers/isdn/capi/capi.c b/drivers/isdn/capi/capi.c
43020index ac6f72b..81150f2 100644 43563index ac6f72b..81150f2 100644
43021--- a/drivers/isdn/capi/capi.c 43564--- a/drivers/isdn/capi/capi.c
@@ -43368,7 +43911,7 @@ index e2d4e58..40cd045 100644
43368 43911
43369 /* error message helper function */ 43912 /* error message helper function */
43370diff --git a/drivers/isdn/icn/icn.c b/drivers/isdn/icn/icn.c 43913diff --git a/drivers/isdn/icn/icn.c b/drivers/isdn/icn/icn.c
43371index 53d487f..f020f41 100644 43914index 53d487f..cae33fe 100644
43372--- a/drivers/isdn/icn/icn.c 43915--- a/drivers/isdn/icn/icn.c
43373+++ b/drivers/isdn/icn/icn.c 43916+++ b/drivers/isdn/icn/icn.c
43374@@ -1045,7 +1045,7 @@ icn_writecmd(const u_char *buf, int len, int user, icn_card *card) 43917@@ -1045,7 +1045,7 @@ icn_writecmd(const u_char *buf, int len, int user, icn_card *card)
@@ -43380,6 +43923,38 @@ index 53d487f..f020f41 100644
43380 return -EFAULT; 43923 return -EFAULT;
43381 } else 43924 } else
43382 memcpy(msg, buf, count); 43925 memcpy(msg, buf, count);
43926@@ -1155,7 +1155,7 @@ icn_command(isdn_ctrl *c, icn_card *card)
43927 ulong a;
43928 ulong flags;
43929 int i;
43930- char cbuf[60];
43931+ char cbuf[80];
43932 isdn_ctrl cmd;
43933 icn_cdef cdef;
43934 char __user *arg;
43935@@ -1309,7 +1309,6 @@ icn_command(isdn_ctrl *c, icn_card *card)
43936 break;
43937 if ((c->arg & 255) < ICN_BCH) {
43938 char *p;
43939- char dial[50];
43940 char dcode[4];
43941
43942 a = c->arg;
43943@@ -1321,10 +1320,10 @@ icn_command(isdn_ctrl *c, icn_card *card)
43944 } else
43945 /* Normal Dial */
43946 strcpy(dcode, "CAL");
43947- strcpy(dial, p);
43948- sprintf(cbuf, "%02d;D%s_R%s,%02d,%02d,%s\n", (int) (a + 1),
43949- dcode, dial, c->parm.setup.si1,
43950- c->parm.setup.si2, c->parm.setup.eazmsn);
43951+ snprintf(cbuf, sizeof(cbuf),
43952+ "%02d;D%s_R%s,%02d,%02d,%s\n", (int) (a + 1),
43953+ dcode, p, c->parm.setup.si1,
43954+ c->parm.setup.si2, c->parm.setup.eazmsn);
43955 i = icn_writecmd(cbuf, strlen(cbuf), 0, card);
43956 }
43957 break;
43383diff --git a/drivers/isdn/mISDN/dsp_cmx.c b/drivers/isdn/mISDN/dsp_cmx.c 43958diff --git a/drivers/isdn/mISDN/dsp_cmx.c b/drivers/isdn/mISDN/dsp_cmx.c
43384index a4f05c5..1433bc5 100644 43959index a4f05c5..1433bc5 100644
43385--- a/drivers/isdn/mISDN/dsp_cmx.c 43960--- a/drivers/isdn/mISDN/dsp_cmx.c
@@ -43571,10 +44146,10 @@ index 40634b0..4f5855e 100644
43571 // Every interrupt can come to us here 44146 // Every interrupt can come to us here
43572 // But we must truly tell each apart. 44147 // But we must truly tell each apart.
43573diff --git a/drivers/md/bcache/closure.h b/drivers/md/bcache/closure.h 44148diff --git a/drivers/md/bcache/closure.h b/drivers/md/bcache/closure.h
43574index 9762f1b..3e79734 100644 44149index 7ef7461..5a09dac 100644
43575--- a/drivers/md/bcache/closure.h 44150--- a/drivers/md/bcache/closure.h
43576+++ b/drivers/md/bcache/closure.h 44151+++ b/drivers/md/bcache/closure.h
43577@@ -483,7 +483,7 @@ static inline void closure_queue(struct closure *cl) 44152@@ -238,7 +238,7 @@ static inline void closure_set_stopped(struct closure *cl)
43578 static inline void set_closure_fn(struct closure *cl, closure_fn *fn, 44153 static inline void set_closure_fn(struct closure *cl, closure_fn *fn,
43579 struct workqueue_struct *wq) 44154 struct workqueue_struct *wq)
43580 { 44155 {
@@ -43584,7 +44159,7 @@ index 9762f1b..3e79734 100644
43584 cl->fn = fn; 44159 cl->fn = fn;
43585 cl->wq = wq; 44160 cl->wq = wq;
43586diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c 44161diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c
43587index 12dc29b..1596277 100644 44162index 4195a01..42527ac 100644
43588--- a/drivers/md/bitmap.c 44163--- a/drivers/md/bitmap.c
43589+++ b/drivers/md/bitmap.c 44164+++ b/drivers/md/bitmap.c
43590@@ -1779,7 +1779,7 @@ void bitmap_status(struct seq_file *seq, struct bitmap *bitmap) 44165@@ -1779,7 +1779,7 @@ void bitmap_status(struct seq_file *seq, struct bitmap *bitmap)
@@ -43610,7 +44185,7 @@ index 5152142..623d141 100644
43610 DMWARN("name not supplied when creating device"); 44185 DMWARN("name not supplied when creating device");
43611 return -EINVAL; 44186 return -EINVAL;
43612diff --git a/drivers/md/dm-raid1.c b/drivers/md/dm-raid1.c 44187diff --git a/drivers/md/dm-raid1.c b/drivers/md/dm-raid1.c
43613index 9584443..9fc9ac9 100644 44188index 7dfdb5c..4caada6 100644
43614--- a/drivers/md/dm-raid1.c 44189--- a/drivers/md/dm-raid1.c
43615+++ b/drivers/md/dm-raid1.c 44190+++ b/drivers/md/dm-raid1.c
43616@@ -40,7 +40,7 @@ enum dm_raid1_error { 44191@@ -40,7 +40,7 @@ enum dm_raid1_error {
@@ -43661,7 +44236,7 @@ index 9584443..9fc9ac9 100644
43661@@ -560,7 +560,7 @@ static void do_reads(struct mirror_set *ms, struct bio_list *reads) 44236@@ -560,7 +560,7 @@ static void do_reads(struct mirror_set *ms, struct bio_list *reads)
43662 */ 44237 */
43663 if (likely(region_in_sync(ms, region, 1))) 44238 if (likely(region_in_sync(ms, region, 1)))
43664 m = choose_mirror(ms, bio->bi_sector); 44239 m = choose_mirror(ms, bio->bi_iter.bi_sector);
43665- else if (m && atomic_read(&m->error_count)) 44240- else if (m && atomic_read(&m->error_count))
43666+ else if (m && atomic_read_unchecked(&m->error_count)) 44241+ else if (m && atomic_read_unchecked(&m->error_count))
43667 m = NULL; 44242 m = NULL;
@@ -43676,7 +44251,7 @@ index 9584443..9fc9ac9 100644
43676 ms->mirror[mirror].error_type = 0; 44251 ms->mirror[mirror].error_type = 0;
43677 ms->mirror[mirror].offset = offset; 44252 ms->mirror[mirror].offset = offset;
43678 44253
43679@@ -1339,7 +1339,7 @@ static void mirror_resume(struct dm_target *ti) 44254@@ -1342,7 +1342,7 @@ static void mirror_resume(struct dm_target *ti)
43680 */ 44255 */
43681 static char device_status_char(struct mirror *m) 44256 static char device_status_char(struct mirror *m)
43682 { 44257 {
@@ -43710,7 +44285,7 @@ index 28a9012..9c0f6a5 100644
43710 44285
43711 rcu_read_lock(); 44286 rcu_read_lock();
43712diff --git a/drivers/md/dm-stripe.c b/drivers/md/dm-stripe.c 44287diff --git a/drivers/md/dm-stripe.c b/drivers/md/dm-stripe.c
43713index 73c1712..7347292 100644 44288index d1600d2..4c3af3a 100644
43714--- a/drivers/md/dm-stripe.c 44289--- a/drivers/md/dm-stripe.c
43715+++ b/drivers/md/dm-stripe.c 44290+++ b/drivers/md/dm-stripe.c
43716@@ -21,7 +21,7 @@ struct stripe { 44291@@ -21,7 +21,7 @@ struct stripe {
@@ -43731,7 +44306,7 @@ index 73c1712..7347292 100644
43731 } 44306 }
43732 44307
43733 ti->private = sc; 44308 ti->private = sc;
43734@@ -327,7 +327,7 @@ static void stripe_status(struct dm_target *ti, status_type_t type, 44309@@ -330,7 +330,7 @@ static void stripe_status(struct dm_target *ti, status_type_t type,
43735 DMEMIT("%d ", sc->stripes); 44310 DMEMIT("%d ", sc->stripes);
43736 for (i = 0; i < sc->stripes; i++) { 44311 for (i = 0; i < sc->stripes; i++) {
43737 DMEMIT("%s ", sc->stripe[i].dev->name); 44312 DMEMIT("%s ", sc->stripe[i].dev->name);
@@ -43740,7 +44315,7 @@ index 73c1712..7347292 100644
43740 'D' : 'A'; 44315 'D' : 'A';
43741 } 44316 }
43742 buffer[i] = '\0'; 44317 buffer[i] = '\0';
43743@@ -372,8 +372,8 @@ static int stripe_end_io(struct dm_target *ti, struct bio *bio, int error) 44318@@ -375,8 +375,8 @@ static int stripe_end_io(struct dm_target *ti, struct bio *bio, int error)
43744 */ 44319 */
43745 for (i = 0; i < sc->stripes; i++) 44320 for (i = 0; i < sc->stripes; i++)
43746 if (!strcmp(sc->stripe[i].dev->name, major_minor)) { 44321 if (!strcmp(sc->stripe[i].dev->name, major_minor)) {
@@ -43752,10 +44327,10 @@ index 73c1712..7347292 100644
43752 schedule_work(&sc->trigger_event); 44327 schedule_work(&sc->trigger_event);
43753 } 44328 }
43754diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c 44329diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c
43755index 3ba6a38..b0fa9b0 100644 44330index 6a7f2b8..fea0bde 100644
43756--- a/drivers/md/dm-table.c 44331--- a/drivers/md/dm-table.c
43757+++ b/drivers/md/dm-table.c 44332+++ b/drivers/md/dm-table.c
43758@@ -291,7 +291,7 @@ static struct dm_dev_internal *find_device(struct list_head *l, dev_t dev) 44333@@ -274,7 +274,7 @@ static struct dm_dev_internal *find_device(struct list_head *l, dev_t dev)
43759 static int open_dev(struct dm_dev_internal *d, dev_t dev, 44334 static int open_dev(struct dm_dev_internal *d, dev_t dev,
43760 struct mapped_device *md) 44335 struct mapped_device *md)
43761 { 44336 {
@@ -43764,7 +44339,7 @@ index 3ba6a38..b0fa9b0 100644
43764 struct block_device *bdev; 44339 struct block_device *bdev;
43765 44340
43766 int r; 44341 int r;
43767@@ -359,7 +359,7 @@ static int device_area_is_invalid(struct dm_target *ti, struct dm_dev *dev, 44342@@ -342,7 +342,7 @@ static int device_area_is_invalid(struct dm_target *ti, struct dm_dev *dev,
43768 if (!dev_size) 44343 if (!dev_size)
43769 return 0; 44344 return 0;
43770 44345
@@ -43774,10 +44349,10 @@ index 3ba6a38..b0fa9b0 100644
43774 "start=%llu, len=%llu, dev_size=%llu", 44349 "start=%llu, len=%llu, dev_size=%llu",
43775 dm_device_name(ti->table->md), bdevname(bdev, b), 44350 dm_device_name(ti->table->md), bdevname(bdev, b),
43776diff --git a/drivers/md/dm-thin-metadata.c b/drivers/md/dm-thin-metadata.c 44351diff --git a/drivers/md/dm-thin-metadata.c b/drivers/md/dm-thin-metadata.c
43777index 3bb4506..56e20cc 100644 44352index b086a94..74cb67e 100644
43778--- a/drivers/md/dm-thin-metadata.c 44353--- a/drivers/md/dm-thin-metadata.c
43779+++ b/drivers/md/dm-thin-metadata.c 44354+++ b/drivers/md/dm-thin-metadata.c
43780@@ -397,7 +397,7 @@ static void __setup_btree_details(struct dm_pool_metadata *pmd) 44355@@ -404,7 +404,7 @@ static void __setup_btree_details(struct dm_pool_metadata *pmd)
43781 { 44356 {
43782 pmd->info.tm = pmd->tm; 44357 pmd->info.tm = pmd->tm;
43783 pmd->info.levels = 2; 44358 pmd->info.levels = 2;
@@ -43786,7 +44361,7 @@ index 3bb4506..56e20cc 100644
43786 pmd->info.value_type.size = sizeof(__le64); 44361 pmd->info.value_type.size = sizeof(__le64);
43787 pmd->info.value_type.inc = data_block_inc; 44362 pmd->info.value_type.inc = data_block_inc;
43788 pmd->info.value_type.dec = data_block_dec; 44363 pmd->info.value_type.dec = data_block_dec;
43789@@ -416,7 +416,7 @@ static void __setup_btree_details(struct dm_pool_metadata *pmd) 44364@@ -423,7 +423,7 @@ static void __setup_btree_details(struct dm_pool_metadata *pmd)
43790 44365
43791 pmd->bl_info.tm = pmd->tm; 44366 pmd->bl_info.tm = pmd->tm;
43792 pmd->bl_info.levels = 1; 44367 pmd->bl_info.levels = 1;
@@ -43796,7 +44371,7 @@ index 3bb4506..56e20cc 100644
43796 pmd->bl_info.value_type.inc = data_block_inc; 44371 pmd->bl_info.value_type.inc = data_block_inc;
43797 pmd->bl_info.value_type.dec = data_block_dec; 44372 pmd->bl_info.value_type.dec = data_block_dec;
43798diff --git a/drivers/md/dm.c b/drivers/md/dm.c 44373diff --git a/drivers/md/dm.c b/drivers/md/dm.c
43799index b49c762..c9503cf 100644 44374index 8c53b09..f1fb2b0 100644
43800--- a/drivers/md/dm.c 44375--- a/drivers/md/dm.c
43801+++ b/drivers/md/dm.c 44376+++ b/drivers/md/dm.c
43802@@ -185,9 +185,9 @@ struct mapped_device { 44377@@ -185,9 +185,9 @@ struct mapped_device {
@@ -43811,7 +44386,7 @@ index b49c762..c9503cf 100644
43811 struct list_head uevent_list; 44386 struct list_head uevent_list;
43812 spinlock_t uevent_lock; /* Protect access to uevent_list */ 44387 spinlock_t uevent_lock; /* Protect access to uevent_list */
43813 44388
43814@@ -2021,8 +2021,8 @@ static struct mapped_device *alloc_dev(int minor) 44389@@ -1888,8 +1888,8 @@ static struct mapped_device *alloc_dev(int minor)
43815 spin_lock_init(&md->deferred_lock); 44390 spin_lock_init(&md->deferred_lock);
43816 atomic_set(&md->holders, 1); 44391 atomic_set(&md->holders, 1);
43817 atomic_set(&md->open_count, 0); 44392 atomic_set(&md->open_count, 0);
@@ -43822,7 +44397,7 @@ index b49c762..c9503cf 100644
43822 INIT_LIST_HEAD(&md->uevent_list); 44397 INIT_LIST_HEAD(&md->uevent_list);
43823 spin_lock_init(&md->uevent_lock); 44398 spin_lock_init(&md->uevent_lock);
43824 44399
43825@@ -2176,7 +2176,7 @@ static void event_callback(void *context) 44400@@ -2043,7 +2043,7 @@ static void event_callback(void *context)
43826 44401
43827 dm_send_uevents(&uevents, &disk_to_dev(md->disk)->kobj); 44402 dm_send_uevents(&uevents, &disk_to_dev(md->disk)->kobj);
43828 44403
@@ -43831,7 +44406,7 @@ index b49c762..c9503cf 100644
43831 wake_up(&md->eventq); 44406 wake_up(&md->eventq);
43832 } 44407 }
43833 44408
43834@@ -2869,18 +2869,18 @@ int dm_kobject_uevent(struct mapped_device *md, enum kobject_action action, 44409@@ -2736,18 +2736,18 @@ int dm_kobject_uevent(struct mapped_device *md, enum kobject_action action,
43835 44410
43836 uint32_t dm_next_uevent_seq(struct mapped_device *md) 44411 uint32_t dm_next_uevent_seq(struct mapped_device *md)
43837 { 44412 {
@@ -43854,7 +44429,7 @@ index b49c762..c9503cf 100644
43854 44429
43855 void dm_uevent_add(struct mapped_device *md, struct list_head *elist) 44430 void dm_uevent_add(struct mapped_device *md, struct list_head *elist)
43856diff --git a/drivers/md/md.c b/drivers/md/md.c 44431diff --git a/drivers/md/md.c b/drivers/md/md.c
43857index 369d919..ba7049c 100644 44432index 4ad5cc4..0f19664 100644
43858--- a/drivers/md/md.c 44433--- a/drivers/md/md.c
43859+++ b/drivers/md/md.c 44434+++ b/drivers/md/md.c
43860@@ -194,10 +194,10 @@ EXPORT_SYMBOL_GPL(bio_clone_mddev); 44435@@ -194,10 +194,10 @@ EXPORT_SYMBOL_GPL(bio_clone_mddev);
@@ -43879,7 +44454,7 @@ index 369d919..ba7049c 100644
43879 wake_up(&md_event_waiters); 44454 wake_up(&md_event_waiters);
43880 } 44455 }
43881 44456
43882@@ -1463,7 +1463,7 @@ static int super_1_load(struct md_rdev *rdev, struct md_rdev *refdev, int minor_ 44457@@ -1462,7 +1462,7 @@ static int super_1_load(struct md_rdev *rdev, struct md_rdev *refdev, int minor_
43883 if ((le32_to_cpu(sb->feature_map) & MD_FEATURE_RESHAPE_ACTIVE) && 44458 if ((le32_to_cpu(sb->feature_map) & MD_FEATURE_RESHAPE_ACTIVE) &&
43884 (le32_to_cpu(sb->feature_map) & MD_FEATURE_NEW_OFFSET)) 44459 (le32_to_cpu(sb->feature_map) & MD_FEATURE_NEW_OFFSET))
43885 rdev->new_data_offset += (s32)le32_to_cpu(sb->new_offset); 44460 rdev->new_data_offset += (s32)le32_to_cpu(sb->new_offset);
@@ -43888,7 +44463,7 @@ index 369d919..ba7049c 100644
43888 44463
43889 rdev->sb_size = le32_to_cpu(sb->max_dev) * 2 + 256; 44464 rdev->sb_size = le32_to_cpu(sb->max_dev) * 2 + 256;
43890 bmask = queue_logical_block_size(rdev->bdev->bd_disk->queue)-1; 44465 bmask = queue_logical_block_size(rdev->bdev->bd_disk->queue)-1;
43891@@ -1710,7 +1710,7 @@ static void super_1_sync(struct mddev *mddev, struct md_rdev *rdev) 44466@@ -1713,7 +1713,7 @@ static void super_1_sync(struct mddev *mddev, struct md_rdev *rdev)
43892 else 44467 else
43893 sb->resync_offset = cpu_to_le64(0); 44468 sb->resync_offset = cpu_to_le64(0);
43894 44469
@@ -43897,7 +44472,7 @@ index 369d919..ba7049c 100644
43897 44472
43898 sb->raid_disks = cpu_to_le32(mddev->raid_disks); 44473 sb->raid_disks = cpu_to_le32(mddev->raid_disks);
43899 sb->size = cpu_to_le64(mddev->dev_sectors); 44474 sb->size = cpu_to_le64(mddev->dev_sectors);
43900@@ -2715,7 +2715,7 @@ __ATTR(state, S_IRUGO|S_IWUSR, state_show, state_store); 44475@@ -2725,7 +2725,7 @@ __ATTR(state, S_IRUGO|S_IWUSR, state_show, state_store);
43901 static ssize_t 44476 static ssize_t
43902 errors_show(struct md_rdev *rdev, char *page) 44477 errors_show(struct md_rdev *rdev, char *page)
43903 { 44478 {
@@ -43906,7 +44481,7 @@ index 369d919..ba7049c 100644
43906 } 44481 }
43907 44482
43908 static ssize_t 44483 static ssize_t
43909@@ -2724,7 +2724,7 @@ errors_store(struct md_rdev *rdev, const char *buf, size_t len) 44484@@ -2734,7 +2734,7 @@ errors_store(struct md_rdev *rdev, const char *buf, size_t len)
43910 char *e; 44485 char *e;
43911 unsigned long n = simple_strtoul(buf, &e, 10); 44486 unsigned long n = simple_strtoul(buf, &e, 10);
43912 if (*buf && (*e == 0 || *e == '\n')) { 44487 if (*buf && (*e == 0 || *e == '\n')) {
@@ -43915,7 +44490,7 @@ index 369d919..ba7049c 100644
43915 return len; 44490 return len;
43916 } 44491 }
43917 return -EINVAL; 44492 return -EINVAL;
43918@@ -3173,8 +3173,8 @@ int md_rdev_init(struct md_rdev *rdev) 44493@@ -3183,8 +3183,8 @@ int md_rdev_init(struct md_rdev *rdev)
43919 rdev->sb_loaded = 0; 44494 rdev->sb_loaded = 0;
43920 rdev->bb_page = NULL; 44495 rdev->bb_page = NULL;
43921 atomic_set(&rdev->nr_pending, 0); 44496 atomic_set(&rdev->nr_pending, 0);
@@ -43926,7 +44501,7 @@ index 369d919..ba7049c 100644
43926 44501
43927 INIT_LIST_HEAD(&rdev->same_set); 44502 INIT_LIST_HEAD(&rdev->same_set);
43928 init_waitqueue_head(&rdev->blocked_wait); 44503 init_waitqueue_head(&rdev->blocked_wait);
43929@@ -7038,7 +7038,7 @@ static int md_seq_show(struct seq_file *seq, void *v) 44504@@ -7075,7 +7075,7 @@ static int md_seq_show(struct seq_file *seq, void *v)
43930 44505
43931 spin_unlock(&pers_lock); 44506 spin_unlock(&pers_lock);
43932 seq_printf(seq, "\n"); 44507 seq_printf(seq, "\n");
@@ -43935,7 +44510,7 @@ index 369d919..ba7049c 100644
43935 return 0; 44510 return 0;
43936 } 44511 }
43937 if (v == (void*)2) { 44512 if (v == (void*)2) {
43938@@ -7141,7 +7141,7 @@ static int md_seq_open(struct inode *inode, struct file *file) 44513@@ -7178,7 +7178,7 @@ static int md_seq_open(struct inode *inode, struct file *file)
43939 return error; 44514 return error;
43940 44515
43941 seq = file->private_data; 44516 seq = file->private_data;
@@ -43944,7 +44519,7 @@ index 369d919..ba7049c 100644
43944 return error; 44519 return error;
43945 } 44520 }
43946 44521
43947@@ -7155,7 +7155,7 @@ static unsigned int mdstat_poll(struct file *filp, poll_table *wait) 44522@@ -7192,7 +7192,7 @@ static unsigned int mdstat_poll(struct file *filp, poll_table *wait)
43948 /* always allow read */ 44523 /* always allow read */
43949 mask = POLLIN | POLLRDNORM; 44524 mask = POLLIN | POLLRDNORM;
43950 44525
@@ -43953,7 +44528,7 @@ index 369d919..ba7049c 100644
43953 mask |= POLLERR | POLLPRI; 44528 mask |= POLLERR | POLLPRI;
43954 return mask; 44529 return mask;
43955 } 44530 }
43956@@ -7199,7 +7199,7 @@ static int is_mddev_idle(struct mddev *mddev, int init) 44531@@ -7236,7 +7236,7 @@ static int is_mddev_idle(struct mddev *mddev, int init)
43957 struct gendisk *disk = rdev->bdev->bd_contains->bd_disk; 44532 struct gendisk *disk = rdev->bdev->bd_contains->bd_disk;
43958 curr_events = (int)part_stat_read(&disk->part0, sectors[0]) + 44533 curr_events = (int)part_stat_read(&disk->part0, sectors[0]) +
43959 (int)part_stat_read(&disk->part0, sectors[1]) - 44534 (int)part_stat_read(&disk->part0, sectors[1]) -
@@ -43963,7 +44538,7 @@ index 369d919..ba7049c 100644
43963 * as sync_io is counted when a request starts, and 44538 * as sync_io is counted when a request starts, and
43964 * disk_stats is counted when it completes. 44539 * disk_stats is counted when it completes.
43965diff --git a/drivers/md/md.h b/drivers/md/md.h 44540diff --git a/drivers/md/md.h b/drivers/md/md.h
43966index 0095ec8..c89277a 100644 44541index 07bba96..2d6788c 100644
43967--- a/drivers/md/md.h 44542--- a/drivers/md/md.h
43968+++ b/drivers/md/md.h 44543+++ b/drivers/md/md.h
43969@@ -94,13 +94,13 @@ struct md_rdev { 44544@@ -94,13 +94,13 @@ struct md_rdev {
@@ -43991,6 +44566,28 @@ index 0095ec8..c89277a 100644
43991 } 44566 }
43992 44567
43993 struct md_personality 44568 struct md_personality
44569diff --git a/drivers/md/persistent-data/dm-space-map-metadata.c b/drivers/md/persistent-data/dm-space-map-metadata.c
44570index 786b689..ea8c956 100644
44571--- a/drivers/md/persistent-data/dm-space-map-metadata.c
44572+++ b/drivers/md/persistent-data/dm-space-map-metadata.c
44573@@ -679,7 +679,7 @@ static int sm_metadata_extend(struct dm_space_map *sm, dm_block_t extra_blocks)
44574 * Flick into a mode where all blocks get allocated in the new area.
44575 */
44576 smm->begin = old_len;
44577- memcpy(sm, &bootstrap_ops, sizeof(*sm));
44578+ memcpy((void *)sm, &bootstrap_ops, sizeof(*sm));
44579
44580 /*
44581 * Extend.
44582@@ -710,7 +710,7 @@ out:
44583 /*
44584 * Switch back to normal behaviour.
44585 */
44586- memcpy(sm, &ops, sizeof(*sm));
44587+ memcpy((void *)sm, &ops, sizeof(*sm));
44588 return r;
44589 }
44590
43994diff --git a/drivers/md/persistent-data/dm-space-map.h b/drivers/md/persistent-data/dm-space-map.h 44591diff --git a/drivers/md/persistent-data/dm-space-map.h b/drivers/md/persistent-data/dm-space-map.h
43995index 3e6d115..ffecdeb 100644 44592index 3e6d115..ffecdeb 100644
43996--- a/drivers/md/persistent-data/dm-space-map.h 44593--- a/drivers/md/persistent-data/dm-space-map.h
@@ -44004,10 +44601,10 @@ index 3e6d115..ffecdeb 100644
44004 /*----------------------------------------------------------------*/ 44601 /*----------------------------------------------------------------*/
44005 44602
44006diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c 44603diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
44007index 63b2e8d..225f16b 100644 44604index 56e24c0..e1c8e1f 100644
44008--- a/drivers/md/raid1.c 44605--- a/drivers/md/raid1.c
44009+++ b/drivers/md/raid1.c 44606+++ b/drivers/md/raid1.c
44010@@ -1921,7 +1921,7 @@ static int fix_sync_read_error(struct r1bio *r1_bio) 44607@@ -1931,7 +1931,7 @@ static int fix_sync_read_error(struct r1bio *r1_bio)
44011 if (r1_sync_page_io(rdev, sect, s, 44608 if (r1_sync_page_io(rdev, sect, s,
44012 bio->bi_io_vec[idx].bv_page, 44609 bio->bi_io_vec[idx].bv_page,
44013 READ) != 0) 44610 READ) != 0)
@@ -44016,7 +44613,7 @@ index 63b2e8d..225f16b 100644
44016 } 44613 }
44017 sectors -= s; 44614 sectors -= s;
44018 sect += s; 44615 sect += s;
44019@@ -2155,7 +2155,7 @@ static void fix_read_error(struct r1conf *conf, int read_disk, 44616@@ -2165,7 +2165,7 @@ static void fix_read_error(struct r1conf *conf, int read_disk,
44020 test_bit(In_sync, &rdev->flags)) { 44617 test_bit(In_sync, &rdev->flags)) {
44021 if (r1_sync_page_io(rdev, sect, s, 44618 if (r1_sync_page_io(rdev, sect, s,
44022 conf->tmppage, READ)) { 44619 conf->tmppage, READ)) {
@@ -44026,10 +44623,10 @@ index 63b2e8d..225f16b 100644
44026 "md/raid1:%s: read error corrected " 44623 "md/raid1:%s: read error corrected "
44027 "(%d sectors at %llu on %s)\n", 44624 "(%d sectors at %llu on %s)\n",
44028diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c 44625diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
44029index 06eeb99..770613e 100644 44626index 33fc408..fc61709 100644
44030--- a/drivers/md/raid10.c 44627--- a/drivers/md/raid10.c
44031+++ b/drivers/md/raid10.c 44628+++ b/drivers/md/raid10.c
44032@@ -1963,7 +1963,7 @@ static void end_sync_read(struct bio *bio, int error) 44629@@ -1948,7 +1948,7 @@ static void end_sync_read(struct bio *bio, int error)
44033 /* The write handler will notice the lack of 44630 /* The write handler will notice the lack of
44034 * R10BIO_Uptodate and record any errors etc 44631 * R10BIO_Uptodate and record any errors etc
44035 */ 44632 */
@@ -44038,7 +44635,7 @@ index 06eeb99..770613e 100644
44038 &conf->mirrors[d].rdev->corrected_errors); 44635 &conf->mirrors[d].rdev->corrected_errors);
44039 44636
44040 /* for reconstruct, we always reschedule after a read. 44637 /* for reconstruct, we always reschedule after a read.
44041@@ -2321,7 +2321,7 @@ static void check_decay_read_errors(struct mddev *mddev, struct md_rdev *rdev) 44638@@ -2306,7 +2306,7 @@ static void check_decay_read_errors(struct mddev *mddev, struct md_rdev *rdev)
44042 { 44639 {
44043 struct timespec cur_time_mon; 44640 struct timespec cur_time_mon;
44044 unsigned long hours_since_last; 44641 unsigned long hours_since_last;
@@ -44047,7 +44644,7 @@ index 06eeb99..770613e 100644
44047 44644
44048 ktime_get_ts(&cur_time_mon); 44645 ktime_get_ts(&cur_time_mon);
44049 44646
44050@@ -2343,9 +2343,9 @@ static void check_decay_read_errors(struct mddev *mddev, struct md_rdev *rdev) 44647@@ -2328,9 +2328,9 @@ static void check_decay_read_errors(struct mddev *mddev, struct md_rdev *rdev)
44051 * overflowing the shift of read_errors by hours_since_last. 44648 * overflowing the shift of read_errors by hours_since_last.
44052 */ 44649 */
44053 if (hours_since_last >= 8 * sizeof(read_errors)) 44650 if (hours_since_last >= 8 * sizeof(read_errors))
@@ -44059,7 +44656,7 @@ index 06eeb99..770613e 100644
44059 } 44656 }
44060 44657
44061 static int r10_sync_page_io(struct md_rdev *rdev, sector_t sector, 44658 static int r10_sync_page_io(struct md_rdev *rdev, sector_t sector,
44062@@ -2399,8 +2399,8 @@ static void fix_read_error(struct r10conf *conf, struct mddev *mddev, struct r10 44659@@ -2384,8 +2384,8 @@ static void fix_read_error(struct r10conf *conf, struct mddev *mddev, struct r10
44063 return; 44660 return;
44064 44661
44065 check_decay_read_errors(mddev, rdev); 44662 check_decay_read_errors(mddev, rdev);
@@ -44070,7 +44667,7 @@ index 06eeb99..770613e 100644
44070 char b[BDEVNAME_SIZE]; 44667 char b[BDEVNAME_SIZE];
44071 bdevname(rdev->bdev, b); 44668 bdevname(rdev->bdev, b);
44072 44669
44073@@ -2408,7 +2408,7 @@ static void fix_read_error(struct r10conf *conf, struct mddev *mddev, struct r10 44670@@ -2393,7 +2393,7 @@ static void fix_read_error(struct r10conf *conf, struct mddev *mddev, struct r10
44074 "md/raid10:%s: %s: Raid device exceeded " 44671 "md/raid10:%s: %s: Raid device exceeded "
44075 "read_error threshold [cur %d:max %d]\n", 44672 "read_error threshold [cur %d:max %d]\n",
44076 mdname(mddev), b, 44673 mdname(mddev), b,
@@ -44079,7 +44676,7 @@ index 06eeb99..770613e 100644
44079 printk(KERN_NOTICE 44676 printk(KERN_NOTICE
44080 "md/raid10:%s: %s: Failing raid device\n", 44677 "md/raid10:%s: %s: Failing raid device\n",
44081 mdname(mddev), b); 44678 mdname(mddev), b);
44082@@ -2563,7 +2563,7 @@ static void fix_read_error(struct r10conf *conf, struct mddev *mddev, struct r10 44679@@ -2548,7 +2548,7 @@ static void fix_read_error(struct r10conf *conf, struct mddev *mddev, struct r10
44083 sect + 44680 sect +
44084 choose_data_offset(r10_bio, rdev)), 44681 choose_data_offset(r10_bio, rdev)),
44085 bdevname(rdev->bdev, b)); 44682 bdevname(rdev->bdev, b));
@@ -44089,7 +44686,7 @@ index 06eeb99..770613e 100644
44089 44686
44090 rdev_dec_pending(rdev, mddev); 44687 rdev_dec_pending(rdev, mddev);
44091diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c 44688diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
44092index 48cdec8..c7726b1 100644 44689index 16f5c21..4df20dc 100644
44093--- a/drivers/md/raid5.c 44690--- a/drivers/md/raid5.c
44094+++ b/drivers/md/raid5.c 44691+++ b/drivers/md/raid5.c
44095@@ -1991,21 +1991,21 @@ static void raid5_end_read_request(struct bio * bi, int error) 44692@@ -1991,21 +1991,21 @@ static void raid5_end_read_request(struct bio * bi, int error)
@@ -44153,6 +44750,18 @@ index 9b6c3bb..baeb5c7 100644
44153 44750
44154 #if IS_ENABLED(CONFIG_DVB_DIB3000MB) 44751 #if IS_ENABLED(CONFIG_DVB_DIB3000MB)
44155 extern struct dvb_frontend* dib3000mb_attach(const struct dib3000_config* config, 44752 extern struct dvb_frontend* dib3000mb_attach(const struct dib3000_config* config,
44753diff --git a/drivers/media/media-device.c b/drivers/media/media-device.c
44754index d5a7a13..703560f 100644
44755--- a/drivers/media/media-device.c
44756+++ b/drivers/media/media-device.c
44757@@ -93,6 +93,7 @@ static long media_device_enum_entities(struct media_device *mdev,
44758 struct media_entity *ent;
44759 struct media_entity_desc u_ent;
44760
44761+ memset(&u_ent, 0, sizeof(u_ent));
44762 if (copy_from_user(&u_ent.id, &uent->id, sizeof(u_ent.id)))
44763 return -EFAULT;
44764
44156diff --git a/drivers/media/pci/cx88/cx88-video.c b/drivers/media/pci/cx88/cx88-video.c 44765diff --git a/drivers/media/pci/cx88/cx88-video.c b/drivers/media/pci/cx88/cx88-video.c
44157index ed8cb90..5ef7f79 100644 44766index ed8cb90..5ef7f79 100644
44158--- a/drivers/media/pci/cx88/cx88-video.c 44767--- a/drivers/media/pci/cx88/cx88-video.c
@@ -44259,7 +44868,7 @@ index b713403..53cb5ad 100644
44259 if (done && done != layer->shadow_buf) 44868 if (done && done != layer->shadow_buf)
44260 vb2_buffer_done(&done->vb, VB2_BUF_STATE_DONE); 44869 vb2_buffer_done(&done->vb, VB2_BUF_STATE_DONE);
44261diff --git a/drivers/media/platform/s5p-tv/mixer_video.c b/drivers/media/platform/s5p-tv/mixer_video.c 44870diff --git a/drivers/media/platform/s5p-tv/mixer_video.c b/drivers/media/platform/s5p-tv/mixer_video.c
44262index 81b97db..b089ccd 100644 44871index c5059ba..2649f28 100644
44263--- a/drivers/media/platform/s5p-tv/mixer_video.c 44872--- a/drivers/media/platform/s5p-tv/mixer_video.c
44264+++ b/drivers/media/platform/s5p-tv/mixer_video.c 44873+++ b/drivers/media/platform/s5p-tv/mixer_video.c
44265@@ -210,7 +210,7 @@ static void mxr_layer_default_geo(struct mxr_layer *layer) 44874@@ -210,7 +210,7 @@ static void mxr_layer_default_geo(struct mxr_layer *layer)
@@ -44460,33 +45069,11 @@ index 2fd9009..278cc1e 100644
44460 45069
44461 radio = devm_kzalloc(&pdev->dev, sizeof(*radio), GFP_KERNEL); 45070 radio = devm_kzalloc(&pdev->dev, sizeof(*radio), GFP_KERNEL);
44462 if (!radio) 45071 if (!radio)
44463diff --git a/drivers/media/rc/rc-main.c b/drivers/media/rc/rc-main.c
44464index 46da365..3ba4206 100644
44465--- a/drivers/media/rc/rc-main.c
44466+++ b/drivers/media/rc/rc-main.c
44467@@ -1065,7 +1065,7 @@ EXPORT_SYMBOL_GPL(rc_free_device);
44468 int rc_register_device(struct rc_dev *dev)
44469 {
44470 static bool raw_init = false; /* raw decoders loaded? */
44471- static atomic_t devno = ATOMIC_INIT(0);
44472+ static atomic_unchecked_t devno = ATOMIC_INIT(0);
44473 struct rc_map *rc_map;
44474 const char *path;
44475 int rc;
44476@@ -1096,7 +1096,7 @@ int rc_register_device(struct rc_dev *dev)
44477 */
44478 mutex_lock(&dev->lock);
44479
44480- dev->devno = (unsigned long)(atomic_inc_return(&devno) - 1);
44481+ dev->devno = (unsigned long)(atomic_inc_return_unchecked(&devno) - 1);
44482 dev_set_name(&dev->dev, "rc%ld", dev->devno);
44483 dev_set_drvdata(&dev->dev, dev);
44484 rc = device_add(&dev->dev);
44485diff --git a/drivers/media/usb/dvb-usb/cxusb.c b/drivers/media/usb/dvb-usb/cxusb.c 45072diff --git a/drivers/media/usb/dvb-usb/cxusb.c b/drivers/media/usb/dvb-usb/cxusb.c
44486index 20e345d..da56fe4 100644 45073index a1c641e..3007da9 100644
44487--- a/drivers/media/usb/dvb-usb/cxusb.c 45074--- a/drivers/media/usb/dvb-usb/cxusb.c
44488+++ b/drivers/media/usb/dvb-usb/cxusb.c 45075+++ b/drivers/media/usb/dvb-usb/cxusb.c
44489@@ -1101,7 +1101,7 @@ static struct dib0070_config dib7070p_dib0070_config = { 45076@@ -1112,7 +1112,7 @@ static struct dib0070_config dib7070p_dib0070_config = {
44490 45077
44491 struct dib0700_adapter_state { 45078 struct dib0700_adapter_state {
44492 int (*set_param_save) (struct dvb_frontend *); 45079 int (*set_param_save) (struct dvb_frontend *);
@@ -44496,10 +45083,10 @@ index 20e345d..da56fe4 100644
44496 static int dib7070_set_param_override(struct dvb_frontend *fe) 45083 static int dib7070_set_param_override(struct dvb_frontend *fe)
44497 { 45084 {
44498diff --git a/drivers/media/usb/dvb-usb/dw2102.c b/drivers/media/usb/dvb-usb/dw2102.c 45085diff --git a/drivers/media/usb/dvb-usb/dw2102.c b/drivers/media/usb/dvb-usb/dw2102.c
44499index c1a63b2..dbcbfb6 100644 45086index ae0f56a..ec71784 100644
44500--- a/drivers/media/usb/dvb-usb/dw2102.c 45087--- a/drivers/media/usb/dvb-usb/dw2102.c
44501+++ b/drivers/media/usb/dvb-usb/dw2102.c 45088+++ b/drivers/media/usb/dvb-usb/dw2102.c
44502@@ -121,7 +121,7 @@ struct su3000_state { 45089@@ -118,7 +118,7 @@ struct su3000_state {
44503 45090
44504 struct s6x0_state { 45091 struct s6x0_state {
44505 int (*old_set_voltage)(struct dvb_frontend *f, fe_sec_voltage_t v); 45092 int (*old_set_voltage)(struct dvb_frontend *f, fe_sec_voltage_t v);
@@ -44509,7 +45096,7 @@ index c1a63b2..dbcbfb6 100644
44509 /* debug */ 45096 /* debug */
44510 static int dvb_usb_dw2102_debug; 45097 static int dvb_usb_dw2102_debug;
44511diff --git a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c b/drivers/media/v4l2-core/v4l2-compat-ioctl32.c 45098diff --git a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c b/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
44512index 8f7a6a4..eb0e1d4 100644 45099index b63a5e5..b16a062 100644
44513--- a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c 45100--- a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
44514+++ b/drivers/media/v4l2-core/v4l2-compat-ioctl32.c 45101+++ b/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
44515@@ -326,7 +326,7 @@ struct v4l2_buffer32 { 45102@@ -326,7 +326,7 @@ struct v4l2_buffer32 {
@@ -44585,10 +45172,10 @@ index 8f7a6a4..eb0e1d4 100644
44585 return 0; 45172 return 0;
44586 } 45173 }
44587diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c b/drivers/media/v4l2-core/v4l2-ctrls.c 45174diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c b/drivers/media/v4l2-core/v4l2-ctrls.c
44588index fb46790..ae1f8fa 100644 45175index 6ff002b..6b9316b 100644
44589--- a/drivers/media/v4l2-core/v4l2-ctrls.c 45176--- a/drivers/media/v4l2-core/v4l2-ctrls.c
44590+++ b/drivers/media/v4l2-core/v4l2-ctrls.c 45177+++ b/drivers/media/v4l2-core/v4l2-ctrls.c
44591@@ -1396,8 +1396,8 @@ static int validate_new(const struct v4l2_ctrl *ctrl, 45178@@ -1401,8 +1401,8 @@ static int validate_new(const struct v4l2_ctrl *ctrl,
44592 return 0; 45179 return 0;
44593 45180
44594 case V4L2_CTRL_TYPE_STRING: 45181 case V4L2_CTRL_TYPE_STRING:
@@ -44616,10 +45203,10 @@ index 02d1b63..5fd6b16 100644
44616 45203
44617 if (basename[len - 1] >= '0' && basename[len - 1] <= '9') 45204 if (basename[len - 1] >= '0' && basename[len - 1] <= '9')
44618diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c 45205diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c
44619index 68e6b5e..8eb2aec 100644 45206index 707aef7..93b8ac0 100644
44620--- a/drivers/media/v4l2-core/v4l2-ioctl.c 45207--- a/drivers/media/v4l2-core/v4l2-ioctl.c
44621+++ b/drivers/media/v4l2-core/v4l2-ioctl.c 45208+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
44622@@ -1939,7 +1939,8 @@ struct v4l2_ioctl_info { 45209@@ -1942,7 +1942,8 @@ struct v4l2_ioctl_info {
44623 struct file *file, void *fh, void *p); 45210 struct file *file, void *fh, void *p);
44624 } u; 45211 } u;
44625 void (*debug)(const void *arg, bool write_only); 45212 void (*debug)(const void *arg, bool write_only);
@@ -44629,7 +45216,7 @@ index 68e6b5e..8eb2aec 100644
44629 45216
44630 /* This control needs a priority check */ 45217 /* This control needs a priority check */
44631 #define INFO_FL_PRIO (1 << 0) 45218 #define INFO_FL_PRIO (1 << 0)
44632@@ -2120,7 +2121,7 @@ static long __video_do_ioctl(struct file *file, 45219@@ -2123,7 +2124,7 @@ static long __video_do_ioctl(struct file *file,
44633 struct video_device *vfd = video_devdata(file); 45220 struct video_device *vfd = video_devdata(file);
44634 const struct v4l2_ioctl_ops *ops = vfd->ioctl_ops; 45221 const struct v4l2_ioctl_ops *ops = vfd->ioctl_ops;
44635 bool write_only = false; 45222 bool write_only = false;
@@ -44638,7 +45225,7 @@ index 68e6b5e..8eb2aec 100644
44638 const struct v4l2_ioctl_info *info; 45225 const struct v4l2_ioctl_info *info;
44639 void *fh = file->private_data; 45226 void *fh = file->private_data;
44640 struct v4l2_fh *vfh = NULL; 45227 struct v4l2_fh *vfh = NULL;
44641@@ -2194,7 +2195,7 @@ done: 45228@@ -2197,7 +2198,7 @@ done:
44642 } 45229 }
44643 45230
44644 static int check_array_args(unsigned int cmd, void *parg, size_t *array_size, 45231 static int check_array_args(unsigned int cmd, void *parg, size_t *array_size,
@@ -44647,7 +45234,7 @@ index 68e6b5e..8eb2aec 100644
44647 { 45234 {
44648 int ret = 0; 45235 int ret = 0;
44649 45236
44650@@ -2210,7 +2211,7 @@ static int check_array_args(unsigned int cmd, void *parg, size_t *array_size, 45237@@ -2213,7 +2214,7 @@ static int check_array_args(unsigned int cmd, void *parg, size_t *array_size,
44651 ret = -EINVAL; 45238 ret = -EINVAL;
44652 break; 45239 break;
44653 } 45240 }
@@ -44656,7 +45243,7 @@ index 68e6b5e..8eb2aec 100644
44656 *kernel_ptr = (void *)&buf->m.planes; 45243 *kernel_ptr = (void *)&buf->m.planes;
44657 *array_size = sizeof(struct v4l2_plane) * buf->length; 45244 *array_size = sizeof(struct v4l2_plane) * buf->length;
44658 ret = 1; 45245 ret = 1;
44659@@ -2245,7 +2246,7 @@ static int check_array_args(unsigned int cmd, void *parg, size_t *array_size, 45246@@ -2248,7 +2249,7 @@ static int check_array_args(unsigned int cmd, void *parg, size_t *array_size,
44660 ret = -EINVAL; 45247 ret = -EINVAL;
44661 break; 45248 break;
44662 } 45249 }
@@ -44665,8 +45252,8 @@ index 68e6b5e..8eb2aec 100644
44665 *kernel_ptr = (void *)&ctrls->controls; 45252 *kernel_ptr = (void *)&ctrls->controls;
44666 *array_size = sizeof(struct v4l2_ext_control) 45253 *array_size = sizeof(struct v4l2_ext_control)
44667 * ctrls->count; 45254 * ctrls->count;
44668@@ -2340,7 +2341,7 @@ video_usercopy(struct file *file, unsigned int cmd, unsigned long arg, 45255@@ -2349,7 +2350,7 @@ video_usercopy(struct file *file, unsigned int cmd, unsigned long arg,
44669 err = -ENOTTY; 45256 }
44670 45257
44671 if (has_array_args) { 45258 if (has_array_args) {
44672- *kernel_ptr = user_ptr; 45259- *kernel_ptr = user_ptr;
@@ -44675,7 +45262,7 @@ index 68e6b5e..8eb2aec 100644
44675 err = -EFAULT; 45262 err = -EFAULT;
44676 goto out_array_args; 45263 goto out_array_args;
44677diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c 45264diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c
44678index 767ff4d..c69d259 100644 45265index 570b18a..f880314 100644
44679--- a/drivers/message/fusion/mptbase.c 45266--- a/drivers/message/fusion/mptbase.c
44680+++ b/drivers/message/fusion/mptbase.c 45267+++ b/drivers/message/fusion/mptbase.c
44681@@ -6755,8 +6755,13 @@ static int mpt_iocinfo_proc_show(struct seq_file *m, void *v) 45268@@ -6755,8 +6755,13 @@ static int mpt_iocinfo_proc_show(struct seq_file *m, void *v)
@@ -44705,7 +45292,7 @@ index 767ff4d..c69d259 100644
44705 seq_printf(m, " {CurRepSz=%d} x {CurRepDepth=%d} = %d bytes ^= 0x%x\n", 45292 seq_printf(m, " {CurRepSz=%d} x {CurRepDepth=%d} = %d bytes ^= 0x%x\n",
44706 ioc->reply_sz, ioc->reply_depth, ioc->reply_sz*ioc->reply_depth, sz); 45293 ioc->reply_sz, ioc->reply_depth, ioc->reply_sz*ioc->reply_depth, sz);
44707diff --git a/drivers/message/fusion/mptsas.c b/drivers/message/fusion/mptsas.c 45294diff --git a/drivers/message/fusion/mptsas.c b/drivers/message/fusion/mptsas.c
44708index dd239bd..689c4f7 100644 45295index 00d339c..2ea899d 100644
44709--- a/drivers/message/fusion/mptsas.c 45296--- a/drivers/message/fusion/mptsas.c
44710+++ b/drivers/message/fusion/mptsas.c 45297+++ b/drivers/message/fusion/mptsas.c
44711@@ -446,6 +446,23 @@ mptsas_is_end_device(struct mptsas_devinfo * attached) 45298@@ -446,6 +446,23 @@ mptsas_is_end_device(struct mptsas_devinfo * attached)
@@ -44977,7 +45564,7 @@ index a8c08f3..155fe3d 100644
44977 #endif 45564 #endif
44978 45565
44979diff --git a/drivers/mfd/ab8500-debugfs.c b/drivers/mfd/ab8500-debugfs.c 45566diff --git a/drivers/mfd/ab8500-debugfs.c b/drivers/mfd/ab8500-debugfs.c
44980index e33e385..28dfd23 100644 45567index d1a22aa..d0f7bf7 100644
44981--- a/drivers/mfd/ab8500-debugfs.c 45568--- a/drivers/mfd/ab8500-debugfs.c
44982+++ b/drivers/mfd/ab8500-debugfs.c 45569+++ b/drivers/mfd/ab8500-debugfs.c
44983@@ -100,7 +100,7 @@ static int irq_last; 45570@@ -100,7 +100,7 @@ static int irq_last;
@@ -44990,7 +45577,7 @@ index e33e385..28dfd23 100644
44990 45577
44991 static u8 avg_sample = SAMPLE_16; 45578 static u8 avg_sample = SAMPLE_16;
44992diff --git a/drivers/mfd/janz-cmodio.c b/drivers/mfd/janz-cmodio.c 45579diff --git a/drivers/mfd/janz-cmodio.c b/drivers/mfd/janz-cmodio.c
44993index fcbb2e9..2635e11 100644 45580index 81b7d88..95ae998 100644
44994--- a/drivers/mfd/janz-cmodio.c 45581--- a/drivers/mfd/janz-cmodio.c
44995+++ b/drivers/mfd/janz-cmodio.c 45582+++ b/drivers/mfd/janz-cmodio.c
44996@@ -13,6 +13,7 @@ 45583@@ -13,6 +13,7 @@
@@ -45002,7 +45589,7 @@ index fcbb2e9..2635e11 100644
45002 #include <linux/pci.h> 45589 #include <linux/pci.h>
45003 #include <linux/interrupt.h> 45590 #include <linux/interrupt.h>
45004diff --git a/drivers/mfd/max8925-i2c.c b/drivers/mfd/max8925-i2c.c 45591diff --git a/drivers/mfd/max8925-i2c.c b/drivers/mfd/max8925-i2c.c
45005index 176aa26..27811b2 100644 45592index a83eed5..62a58a9 100644
45006--- a/drivers/mfd/max8925-i2c.c 45593--- a/drivers/mfd/max8925-i2c.c
45007+++ b/drivers/mfd/max8925-i2c.c 45594+++ b/drivers/mfd/max8925-i2c.c
45008@@ -152,7 +152,7 @@ static int max8925_probe(struct i2c_client *client, 45595@@ -152,7 +152,7 @@ static int max8925_probe(struct i2c_client *client,
@@ -45015,7 +45602,7 @@ index 176aa26..27811b2 100644
45015 45602
45016 if (node && !pdata) { 45603 if (node && !pdata) {
45017diff --git a/drivers/mfd/tps65910.c b/drivers/mfd/tps65910.c 45604diff --git a/drivers/mfd/tps65910.c b/drivers/mfd/tps65910.c
45018index c0f608e..286f8ec 100644 45605index d657331..0d9a80f 100644
45019--- a/drivers/mfd/tps65910.c 45606--- a/drivers/mfd/tps65910.c
45020+++ b/drivers/mfd/tps65910.c 45607+++ b/drivers/mfd/tps65910.c
45021@@ -230,7 +230,7 @@ static int tps65910_irq_init(struct tps65910 *tps65910, int irq, 45608@@ -230,7 +230,7 @@ static int tps65910_irq_init(struct tps65910 *tps65910, int irq,
@@ -45476,19 +46063,6 @@ index 7b5424f..ed1d6ac 100644
45476 err = -EFAULT; 46063 err = -EFAULT;
45477 goto cmd_rel_host; 46064 goto cmd_rel_host;
45478 } 46065 }
45479diff --git a/drivers/mmc/card/queue.c b/drivers/mmc/card/queue.c
45480index 357bbc5..3e049c1 100644
45481--- a/drivers/mmc/card/queue.c
45482+++ b/drivers/mmc/card/queue.c
45483@@ -197,7 +197,7 @@ int mmc_init_queue(struct mmc_queue *mq, struct mmc_card *card,
45484 struct mmc_queue_req *mqrq_prev = &mq->mqrq[1];
45485
45486 if (mmc_dev(host)->dma_mask && *mmc_dev(host)->dma_mask)
45487- limit = dma_max_pfn(mmc_dev(host)) << PAGE_SHIFT;
45488+ limit = (u64)dma_max_pfn(mmc_dev(host)) << PAGE_SHIFT;
45489
45490 mq->card = card;
45491 mq->queue = blk_init_queue(mmc_request_fn, lock);
45492diff --git a/drivers/mmc/core/mmc_ops.c b/drivers/mmc/core/mmc_ops.c 46066diff --git a/drivers/mmc/core/mmc_ops.c b/drivers/mmc/core/mmc_ops.c
45493index e5b5eeb..7bf2212 100644 46067index e5b5eeb..7bf2212 100644
45494--- a/drivers/mmc/core/mmc_ops.c 46068--- a/drivers/mmc/core/mmc_ops.c
@@ -45514,7 +46088,7 @@ index 6bf24ab..13d0293b 100644
45514+} __do_const; 46088+} __do_const;
45515 #endif /* _DW_MMC_H_ */ 46089 #endif /* _DW_MMC_H_ */
45516diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c 46090diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c
45517index f320579..7b7ebac 100644 46091index b931226..df6a085 100644
45518--- a/drivers/mmc/host/mmci.c 46092--- a/drivers/mmc/host/mmci.c
45519+++ b/drivers/mmc/host/mmci.c 46093+++ b/drivers/mmc/host/mmci.c
45520@@ -1504,7 +1504,9 @@ static int mmci_probe(struct amba_device *dev, 46094@@ -1504,7 +1504,9 @@ static int mmci_probe(struct amba_device *dev,
@@ -45529,11 +46103,11 @@ index f320579..7b7ebac 100644
45529 } 46103 }
45530 46104
45531diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c 46105diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c
45532index 1dcaf8a..025af25 100644 46106index b841bb7..d82712f5 100644
45533--- a/drivers/mmc/host/sdhci-esdhc-imx.c 46107--- a/drivers/mmc/host/sdhci-esdhc-imx.c
45534+++ b/drivers/mmc/host/sdhci-esdhc-imx.c 46108+++ b/drivers/mmc/host/sdhci-esdhc-imx.c
45535@@ -1009,9 +1009,12 @@ static int sdhci_esdhc_imx_probe(struct platform_device *pdev) 46109@@ -1031,9 +1031,12 @@ static int sdhci_esdhc_imx_probe(struct platform_device *pdev)
45536 host->quirks2 |= SDHCI_QUIRK2_PRESET_VALUE_BROKEN; 46110 host->mmc->caps |= MMC_CAP_1_8V_DDR;
45537 } 46111 }
45538 46112
45539- if (imx_data->socdata->flags & ESDHC_FLAG_MAN_TUNING) 46113- if (imx_data->socdata->flags & ESDHC_FLAG_MAN_TUNING)
@@ -45544,9 +46118,9 @@ index 1dcaf8a..025af25 100644
45544 esdhc_executing_tuning; 46118 esdhc_executing_tuning;
45545+ pax_close_kernel(); 46119+ pax_close_kernel();
45546+ } 46120+ }
45547 boarddata = &imx_data->boarddata; 46121
45548 if (sdhci_esdhc_imx_probe_dt(pdev, boarddata) < 0) { 46122 if (imx_data->socdata->flags & ESDHC_FLAG_STD_TUNING)
45549 if (!host->mmc->parent->platform_data) { 46123 writel(readl(host->ioaddr + ESDHC_TUNING_CTRL) |
45550diff --git a/drivers/mmc/host/sdhci-s3c.c b/drivers/mmc/host/sdhci-s3c.c 46124diff --git a/drivers/mmc/host/sdhci-s3c.c b/drivers/mmc/host/sdhci-s3c.c
45551index 6debda9..2ba7427 100644 46125index 6debda9..2ba7427 100644
45552--- a/drivers/mmc/host/sdhci-s3c.c 46126--- a/drivers/mmc/host/sdhci-s3c.c
@@ -45580,7 +46154,7 @@ index 096993f..f02c23b 100644
45580 if (!ECCBUF_SIZE) { 46154 if (!ECCBUF_SIZE) {
45581 /* We should fall back to a general writev implementation. 46155 /* We should fall back to a general writev implementation.
45582diff --git a/drivers/mtd/nand/denali.c b/drivers/mtd/nand/denali.c 46156diff --git a/drivers/mtd/nand/denali.c b/drivers/mtd/nand/denali.c
45583index 370b9dd..1a1176b 100644 46157index c07cd57..61c4fbd 100644
45584--- a/drivers/mtd/nand/denali.c 46158--- a/drivers/mtd/nand/denali.c
45585+++ b/drivers/mtd/nand/denali.c 46159+++ b/drivers/mtd/nand/denali.c
45586@@ -24,6 +24,7 @@ 46160@@ -24,6 +24,7 @@
@@ -45591,6 +46165,19 @@ index 370b9dd..1a1176b 100644
45591 46165
45592 #include "denali.h" 46166 #include "denali.h"
45593 46167
46168diff --git a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c
46169index ca6369f..0ce9fed 100644
46170--- a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c
46171+++ b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c
46172@@ -369,7 +369,7 @@ void prepare_data_dma(struct gpmi_nand_data *this, enum dma_data_direction dr)
46173
46174 /* first try to map the upper buffer directly */
46175 if (virt_addr_valid(this->upper_buf) &&
46176- !object_is_on_stack(this->upper_buf)) {
46177+ !object_starts_on_stack(this->upper_buf)) {
46178 sg_init_one(sgl, this->upper_buf, this->upper_len);
46179 ret = dma_map_sg(this->dev, sgl, 1, dr);
46180 if (ret == 0)
45594diff --git a/drivers/mtd/nftlmount.c b/drivers/mtd/nftlmount.c 46181diff --git a/drivers/mtd/nftlmount.c b/drivers/mtd/nftlmount.c
45595index 51b9d6a..52af9a7 100644 46182index 51b9d6a..52af9a7 100644
45596--- a/drivers/mtd/nftlmount.c 46183--- a/drivers/mtd/nftlmount.c
@@ -45604,7 +46191,7 @@ index 51b9d6a..52af9a7 100644
45604 #include <linux/mtd/nand.h> 46191 #include <linux/mtd/nand.h>
45605 #include <linux/mtd/nftl.h> 46192 #include <linux/mtd/nftl.h>
45606diff --git a/drivers/mtd/sm_ftl.c b/drivers/mtd/sm_ftl.c 46193diff --git a/drivers/mtd/sm_ftl.c b/drivers/mtd/sm_ftl.c
45607index 4b8e895..6b3c498 100644 46194index cf49c22..971b133 100644
45608--- a/drivers/mtd/sm_ftl.c 46195--- a/drivers/mtd/sm_ftl.c
45609+++ b/drivers/mtd/sm_ftl.c 46196+++ b/drivers/mtd/sm_ftl.c
45610@@ -56,7 +56,7 @@ static ssize_t sm_attr_show(struct device *dev, struct device_attribute *attr, 46197@@ -56,7 +56,7 @@ static ssize_t sm_attr_show(struct device *dev, struct device_attribute *attr,
@@ -45615,12 +46202,12 @@ index 4b8e895..6b3c498 100644
45615+ attribute_group_no_const *attr_group; 46202+ attribute_group_no_const *attr_group;
45616 struct attribute **attributes; 46203 struct attribute **attributes;
45617 struct sm_sysfs_attribute *vendor_attribute; 46204 struct sm_sysfs_attribute *vendor_attribute;
45618 46205 char *vendor;
45619diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c 46206diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
45620index 4b8c58b..a200546 100644 46207index 91ec8cd..562ff5f 100644
45621--- a/drivers/net/bonding/bond_main.c 46208--- a/drivers/net/bonding/bond_main.c
45622+++ b/drivers/net/bonding/bond_main.c 46209+++ b/drivers/net/bonding/bond_main.c
45623@@ -4527,6 +4527,7 @@ static void __exit bonding_exit(void) 46210@@ -4552,6 +4552,7 @@ static void __exit bonding_exit(void)
45624 46211
45625 bond_netlink_fini(); 46212 bond_netlink_fini();
45626 unregister_pernet_subsys(&bond_net_ops); 46213 unregister_pernet_subsys(&bond_net_ops);
@@ -45629,10 +46216,10 @@ index 4b8c58b..a200546 100644
45629 #ifdef CONFIG_NET_POLL_CONTROLLER 46216 #ifdef CONFIG_NET_POLL_CONTROLLER
45630 /* 46217 /*
45631diff --git a/drivers/net/bonding/bond_netlink.c b/drivers/net/bonding/bond_netlink.c 46218diff --git a/drivers/net/bonding/bond_netlink.c b/drivers/net/bonding/bond_netlink.c
45632index 40e7b1c..6a70fff 100644 46219index 70651f8..7eb1bdf 100644
45633--- a/drivers/net/bonding/bond_netlink.c 46220--- a/drivers/net/bonding/bond_netlink.c
45634+++ b/drivers/net/bonding/bond_netlink.c 46221+++ b/drivers/net/bonding/bond_netlink.c
45635@@ -102,7 +102,7 @@ nla_put_failure: 46222@@ -542,7 +542,7 @@ nla_put_failure:
45636 return -EMSGSIZE; 46223 return -EMSGSIZE;
45637 } 46224 }
45638 46225
@@ -45642,7 +46229,7 @@ index 40e7b1c..6a70fff 100644
45642 .priv_size = sizeof(struct bonding), 46229 .priv_size = sizeof(struct bonding),
45643 .setup = bond_setup, 46230 .setup = bond_setup,
45644diff --git a/drivers/net/can/Kconfig b/drivers/net/can/Kconfig 46231diff --git a/drivers/net/can/Kconfig b/drivers/net/can/Kconfig
45645index 3c06947..fd0e5de 100644 46232index 9e7d95d..d447b88 100644
45646--- a/drivers/net/can/Kconfig 46233--- a/drivers/net/can/Kconfig
45647+++ b/drivers/net/can/Kconfig 46234+++ b/drivers/net/can/Kconfig
45648@@ -104,7 +104,7 @@ config CAN_JANZ_ICAN3 46235@@ -104,7 +104,7 @@ config CAN_JANZ_ICAN3
@@ -45655,10 +46242,10 @@ index 3c06947..fd0e5de 100644
45655 Say Y here if you want to support for Freescale FlexCAN. 46242 Say Y here if you want to support for Freescale FlexCAN.
45656 46243
45657diff --git a/drivers/net/ethernet/8390/ax88796.c b/drivers/net/ethernet/8390/ax88796.c 46244diff --git a/drivers/net/ethernet/8390/ax88796.c b/drivers/net/ethernet/8390/ax88796.c
45658index 36fa577..a158806 100644 46245index 455d4c3..3353ee7 100644
45659--- a/drivers/net/ethernet/8390/ax88796.c 46246--- a/drivers/net/ethernet/8390/ax88796.c
45660+++ b/drivers/net/ethernet/8390/ax88796.c 46247+++ b/drivers/net/ethernet/8390/ax88796.c
45661@@ -872,9 +872,11 @@ static int ax_probe(struct platform_device *pdev) 46248@@ -889,9 +889,11 @@ static int ax_probe(struct platform_device *pdev)
45662 if (ax->plat->reg_offsets) 46249 if (ax->plat->reg_offsets)
45663 ei_local->reg_offset = ax->plat->reg_offsets; 46250 ei_local->reg_offset = ax->plat->reg_offsets;
45664 else { 46251 else {
@@ -45672,10 +46259,10 @@ index 36fa577..a158806 100644
45672 46259
45673 if (!request_mem_region(mem->start, mem_size, pdev->name)) { 46260 if (!request_mem_region(mem->start, mem_size, pdev->name)) {
45674diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h 46261diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h
45675index 41f3ca5a..1ee5364 100644 46262index a89a40f..5a8a2ac 100644
45676--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h 46263--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h
45677+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h 46264+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h
45678@@ -1139,7 +1139,7 @@ static inline u8 bnx2x_get_path_func_num(struct bnx2x *bp) 46265@@ -1062,7 +1062,7 @@ static inline u8 bnx2x_get_path_func_num(struct bnx2x *bp)
45679 static inline void bnx2x_init_bp_objs(struct bnx2x *bp) 46266 static inline void bnx2x_init_bp_objs(struct bnx2x *bp)
45680 { 46267 {
45681 /* RX_MODE controlling object */ 46268 /* RX_MODE controlling object */
@@ -45685,10 +46272,10 @@ index 41f3ca5a..1ee5364 100644
45685 /* multicast configuration controlling object */ 46272 /* multicast configuration controlling object */
45686 bnx2x_init_mcast_obj(bp, &bp->mcast_obj, bp->fp->cl_id, bp->fp->cid, 46273 bnx2x_init_mcast_obj(bp, &bp->mcast_obj, bp->fp->cl_id, bp->fp->cid,
45687diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c 46274diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c
45688index 18438a5..c923b8e 100644 46275index 0fb6ff2..78fd55c 100644
45689--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c 46276--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c
45690+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c 46277+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c
45691@@ -2591,15 +2591,14 @@ int bnx2x_config_rx_mode(struct bnx2x *bp, 46278@@ -2329,15 +2329,14 @@ int bnx2x_config_rx_mode(struct bnx2x *bp,
45692 return rc; 46279 return rc;
45693 } 46280 }
45694 46281
@@ -45710,10 +46297,10 @@ index 18438a5..c923b8e 100644
45710 } 46297 }
45711 46298
45712diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h 46299diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h
45713index 6a53c15..6e7d1e7 100644 46300index 00d7f21..2cddec4 100644
45714--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h 46301--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h
45715+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h 46302+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h
45716@@ -1332,8 +1332,7 @@ int bnx2x_vlan_mac_move(struct bnx2x *bp, 46303@@ -1321,8 +1321,7 @@ int bnx2x_vlan_mac_move(struct bnx2x *bp,
45717 46304
45718 /********************* RX MODE ****************/ 46305 /********************* RX MODE ****************/
45719 46306
@@ -45724,7 +46311,7 @@ index 6a53c15..6e7d1e7 100644
45724 /** 46311 /**
45725 * bnx2x_config_rx_mode - Send and RX_MODE ramrod according to the provided parameters. 46312 * bnx2x_config_rx_mode - Send and RX_MODE ramrod according to the provided parameters.
45726diff --git a/drivers/net/ethernet/broadcom/tg3.h b/drivers/net/ethernet/broadcom/tg3.h 46313diff --git a/drivers/net/ethernet/broadcom/tg3.h b/drivers/net/ethernet/broadcom/tg3.h
45727index cf9917b..c658558 100644 46314index 04321e5..b51cdc4 100644
45728--- a/drivers/net/ethernet/broadcom/tg3.h 46315--- a/drivers/net/ethernet/broadcom/tg3.h
45729+++ b/drivers/net/ethernet/broadcom/tg3.h 46316+++ b/drivers/net/ethernet/broadcom/tg3.h
45730@@ -150,6 +150,7 @@ 46317@@ -150,6 +150,7 @@
@@ -45736,7 +46323,7 @@ index cf9917b..c658558 100644
45736 #define CHIPREV_ID_5752_A0_HW 0x5000 46323 #define CHIPREV_ID_5752_A0_HW 0x5000
45737 #define CHIPREV_ID_5752_A0 0x6000 46324 #define CHIPREV_ID_5752_A0 0x6000
45738diff --git a/drivers/net/ethernet/brocade/bna/bna_enet.c b/drivers/net/ethernet/brocade/bna/bna_enet.c 46325diff --git a/drivers/net/ethernet/brocade/bna/bna_enet.c b/drivers/net/ethernet/brocade/bna/bna_enet.c
45739index 3ca77fa..fcc015f 100644 46326index 13f9636..228040f 100644
45740--- a/drivers/net/ethernet/brocade/bna/bna_enet.c 46327--- a/drivers/net/ethernet/brocade/bna/bna_enet.c
45741+++ b/drivers/net/ethernet/brocade/bna/bna_enet.c 46328+++ b/drivers/net/ethernet/brocade/bna/bna_enet.c
45742@@ -1690,10 +1690,10 @@ bna_cb_ioceth_reset(void *arg) 46329@@ -1690,10 +1690,10 @@ bna_cb_ioceth_reset(void *arg)
@@ -45768,7 +46355,7 @@ index 8cffcdf..aadf043 100644
45768 #define L2T_SKB_CB(skb) ((struct l2t_skb_cb *)(skb)->cb) 46355 #define L2T_SKB_CB(skb) ((struct l2t_skb_cb *)(skb)->cb)
45769 46356
45770diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c 46357diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
45771index fff02ed..d421412 100644 46358index 34e2488..07e2079 100644
45772--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c 46359--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
45773+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c 46360+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
45774@@ -2120,7 +2120,7 @@ static void get_regs(struct net_device *dev, struct ethtool_regs *regs, 46361@@ -2120,7 +2120,7 @@ static void get_regs(struct net_device *dev, struct ethtool_regs *regs,
@@ -45803,10 +46390,10 @@ index c05b66d..ed69872 100644
45803 break; 46390 break;
45804 } 46391 }
45805diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c 46392diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
45806index a37039d..a51d7e8 100644 46393index 36c8061..ca5e1e0 100644
45807--- a/drivers/net/ethernet/emulex/benet/be_main.c 46394--- a/drivers/net/ethernet/emulex/benet/be_main.c
45808+++ b/drivers/net/ethernet/emulex/benet/be_main.c 46395+++ b/drivers/net/ethernet/emulex/benet/be_main.c
45809@@ -533,7 +533,7 @@ static void accumulate_16bit_val(u32 *acc, u16 val) 46396@@ -534,7 +534,7 @@ static void accumulate_16bit_val(u32 *acc, u16 val)
45810 46397
45811 if (wrapped) 46398 if (wrapped)
45812 newacc += 65536; 46399 newacc += 65536;
@@ -45816,10 +46403,10 @@ index a37039d..a51d7e8 100644
45816 46403
45817 static void populate_erx_stats(struct be_adapter *adapter, 46404 static void populate_erx_stats(struct be_adapter *adapter,
45818diff --git a/drivers/net/ethernet/faraday/ftgmac100.c b/drivers/net/ethernet/faraday/ftgmac100.c 46405diff --git a/drivers/net/ethernet/faraday/ftgmac100.c b/drivers/net/ethernet/faraday/ftgmac100.c
45819index 212f44b..fb69959 100644 46406index c11ecbc..13bb299 100644
45820--- a/drivers/net/ethernet/faraday/ftgmac100.c 46407--- a/drivers/net/ethernet/faraday/ftgmac100.c
45821+++ b/drivers/net/ethernet/faraday/ftgmac100.c 46408+++ b/drivers/net/ethernet/faraday/ftgmac100.c
45822@@ -31,6 +31,8 @@ 46409@@ -30,6 +30,8 @@
45823 #include <linux/netdevice.h> 46410 #include <linux/netdevice.h>
45824 #include <linux/phy.h> 46411 #include <linux/phy.h>
45825 #include <linux/platform_device.h> 46412 #include <linux/platform_device.h>
@@ -45841,6 +46428,19 @@ index 8be5b40..081bc1b 100644
45841 46428
45842 #include "ftmac100.h" 46429 #include "ftmac100.h"
45843 46430
46431diff --git a/drivers/net/ethernet/intel/i40e/i40e_ptp.c b/drivers/net/ethernet/intel/i40e/i40e_ptp.c
46432index e33ec6c..f54cfe7 100644
46433--- a/drivers/net/ethernet/intel/i40e/i40e_ptp.c
46434+++ b/drivers/net/ethernet/intel/i40e/i40e_ptp.c
46435@@ -436,7 +436,7 @@ void i40e_ptp_set_increment(struct i40e_pf *pf)
46436 wr32(hw, I40E_PRTTSYN_INC_H, incval >> 32);
46437
46438 /* Update the base adjustement value. */
46439- ACCESS_ONCE(pf->ptp_base_adj) = incval;
46440+ ACCESS_ONCE_RW(pf->ptp_base_adj) = incval;
46441 smp_mb(); /* Force the above update. */
46442 }
46443
45844diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c 46444diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c
45845index 5184e2a..acb28c3 100644 46445index 5184e2a..acb28c3 100644
45846--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c 46446--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c
@@ -45855,7 +46455,7 @@ index 5184e2a..acb28c3 100644
45855 46455
45856 /* need lock to prevent incorrect read while modifying cyclecounter */ 46456 /* need lock to prevent incorrect read while modifying cyclecounter */
45857diff --git a/drivers/net/ethernet/neterion/vxge/vxge-config.c b/drivers/net/ethernet/neterion/vxge/vxge-config.c 46457diff --git a/drivers/net/ethernet/neterion/vxge/vxge-config.c b/drivers/net/ethernet/neterion/vxge/vxge-config.c
45858index fbe5363..266b4e3 100644 46458index 089b713..28d87ae 100644
45859--- a/drivers/net/ethernet/neterion/vxge/vxge-config.c 46459--- a/drivers/net/ethernet/neterion/vxge/vxge-config.c
45860+++ b/drivers/net/ethernet/neterion/vxge/vxge-config.c 46460+++ b/drivers/net/ethernet/neterion/vxge/vxge-config.c
45861@@ -3461,7 +3461,10 @@ __vxge_hw_fifo_create(struct __vxge_hw_vpath_handle *vp, 46461@@ -3461,7 +3461,10 @@ __vxge_hw_fifo_create(struct __vxge_hw_vpath_handle *vp,
@@ -45880,10 +46480,10 @@ index fbe5363..266b4e3 100644
45880 __vxge_hw_mempool_create(vpath->hldev, 46480 __vxge_hw_mempool_create(vpath->hldev,
45881 fifo->config->memblock_size, 46481 fifo->config->memblock_size,
45882diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c 46482diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c
45883index 918e18d..4ca3650 100644 46483index 90a2dda..47e620e 100644
45884--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c 46484--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c
45885+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c 46485+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c
45886@@ -2086,7 +2086,9 @@ int qlcnic_83xx_configure_opmode(struct qlcnic_adapter *adapter) 46486@@ -2088,7 +2088,9 @@ int qlcnic_83xx_configure_opmode(struct qlcnic_adapter *adapter)
45887 adapter->max_tx_rings = QLCNIC_MAX_VNIC_TX_RINGS; 46487 adapter->max_tx_rings = QLCNIC_MAX_VNIC_TX_RINGS;
45888 } else if (ret == QLC_83XX_DEFAULT_OPMODE) { 46488 } else if (ret == QLC_83XX_DEFAULT_OPMODE) {
45889 ahw->nic_mode = QLCNIC_DEFAULT_MODE; 46489 ahw->nic_mode = QLCNIC_DEFAULT_MODE;
@@ -45895,7 +46495,7 @@ index 918e18d..4ca3650 100644
45895 adapter->max_sds_rings = QLCNIC_MAX_SDS_RINGS; 46495 adapter->max_sds_rings = QLCNIC_MAX_SDS_RINGS;
45896 adapter->max_tx_rings = QLCNIC_MAX_TX_RINGS; 46496 adapter->max_tx_rings = QLCNIC_MAX_TX_RINGS;
45897diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_vnic.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_vnic.c 46497diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_vnic.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_vnic.c
45898index 734d286..b017bf5 100644 46498index be7d7a6..a8983f8 100644
45899--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_vnic.c 46499--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_vnic.c
45900+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_vnic.c 46500+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_vnic.c
45901@@ -207,17 +207,23 @@ int qlcnic_83xx_config_vnic_opmode(struct qlcnic_adapter *adapter) 46501@@ -207,17 +207,23 @@ int qlcnic_83xx_config_vnic_opmode(struct qlcnic_adapter *adapter)
@@ -45939,10 +46539,10 @@ index 7763962..c3499a7 100644
45939 struct qlcnic_hardware_context *ahw; 46539 struct qlcnic_hardware_context *ahw;
45940 void *temp_buffer; 46540 void *temp_buffer;
45941diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c 46541diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
45942index c737f0e..32b8682 100644 46542index 3ff7bc3..366091b 100644
45943--- a/drivers/net/ethernet/realtek/r8169.c 46543--- a/drivers/net/ethernet/realtek/r8169.c
45944+++ b/drivers/net/ethernet/realtek/r8169.c 46544+++ b/drivers/net/ethernet/realtek/r8169.c
45945@@ -759,22 +759,22 @@ struct rtl8169_private { 46545@@ -758,22 +758,22 @@ struct rtl8169_private {
45946 struct mdio_ops { 46546 struct mdio_ops {
45947 void (*write)(struct rtl8169_private *, int, int); 46547 void (*write)(struct rtl8169_private *, int, int);
45948 int (*read)(struct rtl8169_private *, int); 46548 int (*read)(struct rtl8169_private *, int);
@@ -45970,10 +46570,10 @@ index c737f0e..32b8682 100644
45970 int (*set_speed)(struct net_device *, u8 aneg, u16 sp, u8 dpx, u32 adv); 46570 int (*set_speed)(struct net_device *, u8 aneg, u16 sp, u8 dpx, u32 adv);
45971 int (*get_settings)(struct net_device *, struct ethtool_cmd *); 46571 int (*get_settings)(struct net_device *, struct ethtool_cmd *);
45972diff --git a/drivers/net/ethernet/sfc/ptp.c b/drivers/net/ethernet/sfc/ptp.c 46572diff --git a/drivers/net/ethernet/sfc/ptp.c b/drivers/net/ethernet/sfc/ptp.c
45973index a124103..59c74f8 100644 46573index d7a3682..9ce272a 100644
45974--- a/drivers/net/ethernet/sfc/ptp.c 46574--- a/drivers/net/ethernet/sfc/ptp.c
45975+++ b/drivers/net/ethernet/sfc/ptp.c 46575+++ b/drivers/net/ethernet/sfc/ptp.c
45976@@ -541,7 +541,7 @@ static int efx_ptp_synchronize(struct efx_nic *efx, unsigned int num_readings) 46576@@ -825,7 +825,7 @@ static int efx_ptp_synchronize(struct efx_nic *efx, unsigned int num_readings)
45977 ptp->start.dma_addr); 46577 ptp->start.dma_addr);
45978 46578
45979 /* Clear flag that signals MC ready */ 46579 /* Clear flag that signals MC ready */
@@ -45998,10 +46598,10 @@ index 50617c5..b13724c 100644
45998 46598
45999 /* To mask all all interrupts.*/ 46599 /* To mask all all interrupts.*/
46000diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h 46600diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
46001index e6fe0d8..2b7d752 100644 46601index 7b594ce..1f6c5708 100644
46002--- a/drivers/net/hyperv/hyperv_net.h 46602--- a/drivers/net/hyperv/hyperv_net.h
46003+++ b/drivers/net/hyperv/hyperv_net.h 46603+++ b/drivers/net/hyperv/hyperv_net.h
46004@@ -101,7 +101,7 @@ struct rndis_device { 46604@@ -100,7 +100,7 @@ struct rndis_device {
46005 46605
46006 enum rndis_device_state state; 46606 enum rndis_device_state state;
46007 bool link_state; 46607 bool link_state;
@@ -46011,10 +46611,10 @@ index e6fe0d8..2b7d752 100644
46011 spinlock_t request_lock; 46611 spinlock_t request_lock;
46012 struct list_head req_list; 46612 struct list_head req_list;
46013diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c 46613diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c
46014index 0775f0a..d4fb316 100644 46614index b54fd25..9bd2bae 100644
46015--- a/drivers/net/hyperv/rndis_filter.c 46615--- a/drivers/net/hyperv/rndis_filter.c
46016+++ b/drivers/net/hyperv/rndis_filter.c 46616+++ b/drivers/net/hyperv/rndis_filter.c
46017@@ -104,7 +104,7 @@ static struct rndis_request *get_rndis_request(struct rndis_device *dev, 46617@@ -103,7 +103,7 @@ static struct rndis_request *get_rndis_request(struct rndis_device *dev,
46018 * template 46618 * template
46019 */ 46619 */
46020 set = &rndis_msg->msg.set_req; 46620 set = &rndis_msg->msg.set_req;
@@ -46023,7 +46623,7 @@ index 0775f0a..d4fb316 100644
46023 46623
46024 /* Add to the request list */ 46624 /* Add to the request list */
46025 spin_lock_irqsave(&dev->request_lock, flags); 46625 spin_lock_irqsave(&dev->request_lock, flags);
46026@@ -752,7 +752,7 @@ static void rndis_filter_halt_device(struct rndis_device *dev) 46626@@ -770,7 +770,7 @@ static void rndis_filter_halt_device(struct rndis_device *dev)
46027 46627
46028 /* Setup the rndis set */ 46628 /* Setup the rndis set */
46029 halt = &request->request_msg.msg.halt_req; 46629 halt = &request->request_msg.msg.halt_req;
@@ -46046,10 +46646,10 @@ index bf0d55e..82bcfbd1 100644
46046 priv = netdev_priv(dev); 46646 priv = netdev_priv(dev);
46047 priv->phy = phy; 46647 priv->phy = phy;
46048diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c 46648diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
46049index d7e2907..1f8bfee 100644 46649index 20bb669..9a0e17e 100644
46050--- a/drivers/net/macvlan.c 46650--- a/drivers/net/macvlan.c
46051+++ b/drivers/net/macvlan.c 46651+++ b/drivers/net/macvlan.c
46052@@ -993,13 +993,15 @@ static const struct nla_policy macvlan_policy[IFLA_MACVLAN_MAX + 1] = { 46652@@ -991,13 +991,15 @@ static const struct nla_policy macvlan_policy[IFLA_MACVLAN_MAX + 1] = {
46053 int macvlan_link_register(struct rtnl_link_ops *ops) 46653 int macvlan_link_register(struct rtnl_link_ops *ops)
46054 { 46654 {
46055 /* common fields */ 46655 /* common fields */
@@ -46072,7 +46672,7 @@ index d7e2907..1f8bfee 100644
46072 46672
46073 return rtnl_link_register(ops); 46673 return rtnl_link_register(ops);
46074 }; 46674 };
46075@@ -1054,7 +1056,7 @@ static int macvlan_device_event(struct notifier_block *unused, 46675@@ -1052,7 +1054,7 @@ static int macvlan_device_event(struct notifier_block *unused,
46076 return NOTIFY_DONE; 46676 return NOTIFY_DONE;
46077 } 46677 }
46078 46678
@@ -46082,10 +46682,10 @@ index d7e2907..1f8bfee 100644
46082 }; 46682 };
46083 46683
46084diff --git a/drivers/net/macvtap.c b/drivers/net/macvtap.c 46684diff --git a/drivers/net/macvtap.c b/drivers/net/macvtap.c
46085index 2a89da0..c17fe1d 100644 46685index 3381c4f..dea5fd5 100644
46086--- a/drivers/net/macvtap.c 46686--- a/drivers/net/macvtap.c
46087+++ b/drivers/net/macvtap.c 46687+++ b/drivers/net/macvtap.c
46088@@ -1012,7 +1012,7 @@ static long macvtap_ioctl(struct file *file, unsigned int cmd, 46688@@ -1020,7 +1020,7 @@ static long macvtap_ioctl(struct file *file, unsigned int cmd,
46089 } 46689 }
46090 46690
46091 ret = 0; 46691 ret = 0;
@@ -46094,7 +46694,7 @@ index 2a89da0..c17fe1d 100644
46094 put_user(q->flags, &ifr->ifr_flags)) 46694 put_user(q->flags, &ifr->ifr_flags))
46095 ret = -EFAULT; 46695 ret = -EFAULT;
46096 macvtap_put_vlan(vlan); 46696 macvtap_put_vlan(vlan);
46097@@ -1182,7 +1182,7 @@ static int macvtap_device_event(struct notifier_block *unused, 46697@@ -1190,7 +1190,7 @@ static int macvtap_device_event(struct notifier_block *unused,
46098 return NOTIFY_DONE; 46698 return NOTIFY_DONE;
46099 } 46699 }
46100 46700
@@ -46151,10 +46751,10 @@ index 1252d9c..80e660b 100644
46151 46751
46152 /* We've got a compressed packet; read the change byte */ 46752 /* We've got a compressed packet; read the change byte */
46153diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c 46753diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c
46154index b75ae5b..953c157 100644 46754index c8624a8..f0a4f6a 100644
46155--- a/drivers/net/team/team.c 46755--- a/drivers/net/team/team.c
46156+++ b/drivers/net/team/team.c 46756+++ b/drivers/net/team/team.c
46157@@ -2865,7 +2865,7 @@ static int team_device_event(struct notifier_block *unused, 46757@@ -2869,7 +2869,7 @@ static int team_device_event(struct notifier_block *unused,
46158 return NOTIFY_DONE; 46758 return NOTIFY_DONE;
46159 } 46759 }
46160 46760
@@ -46164,10 +46764,10 @@ index b75ae5b..953c157 100644
46164 }; 46764 };
46165 46765
46166diff --git a/drivers/net/tun.c b/drivers/net/tun.c 46766diff --git a/drivers/net/tun.c b/drivers/net/tun.c
46167index 55c9238..ebb6ee5 100644 46767index 26f8635..c237839 100644
46168--- a/drivers/net/tun.c 46768--- a/drivers/net/tun.c
46169+++ b/drivers/net/tun.c 46769+++ b/drivers/net/tun.c
46170@@ -1841,7 +1841,7 @@ unlock: 46770@@ -1876,7 +1876,7 @@ unlock:
46171 } 46771 }
46172 46772
46173 static long __tun_chr_ioctl(struct file *file, unsigned int cmd, 46773 static long __tun_chr_ioctl(struct file *file, unsigned int cmd,
@@ -46176,7 +46776,7 @@ index 55c9238..ebb6ee5 100644
46176 { 46776 {
46177 struct tun_file *tfile = file->private_data; 46777 struct tun_file *tfile = file->private_data;
46178 struct tun_struct *tun; 46778 struct tun_struct *tun;
46179@@ -1854,6 +1854,9 @@ static long __tun_chr_ioctl(struct file *file, unsigned int cmd, 46779@@ -1889,6 +1889,9 @@ static long __tun_chr_ioctl(struct file *file, unsigned int cmd,
46180 unsigned int ifindex; 46780 unsigned int ifindex;
46181 int ret; 46781 int ret;
46182 46782
@@ -46187,7 +46787,7 @@ index 55c9238..ebb6ee5 100644
46187 if (copy_from_user(&ifr, argp, ifreq_len)) 46787 if (copy_from_user(&ifr, argp, ifreq_len))
46188 return -EFAULT; 46788 return -EFAULT;
46189diff --git a/drivers/net/usb/hso.c b/drivers/net/usb/hso.c 46789diff --git a/drivers/net/usb/hso.c b/drivers/net/usb/hso.c
46190index 1a48234..a555339 100644 46790index 660bd5e..ac59452 100644
46191--- a/drivers/net/usb/hso.c 46791--- a/drivers/net/usb/hso.c
46192+++ b/drivers/net/usb/hso.c 46792+++ b/drivers/net/usb/hso.c
46193@@ -71,7 +71,7 @@ 46793@@ -71,7 +71,7 @@
@@ -46208,7 +46808,7 @@ index 1a48234..a555339 100644
46208 count = put_rxbuf_data(urb, serial); 46808 count = put_rxbuf_data(urb, serial);
46209 if (count == -1) 46809 if (count == -1)
46210 return; 46810 return;
46211@@ -1215,7 +1215,7 @@ static void hso_std_serial_read_bulk_callback(struct urb *urb) 46811@@ -1217,7 +1217,7 @@ static void hso_std_serial_read_bulk_callback(struct urb *urb)
46212 DUMP1(urb->transfer_buffer, urb->actual_length); 46812 DUMP1(urb->transfer_buffer, urb->actual_length);
46213 46813
46214 /* Anyone listening? */ 46814 /* Anyone listening? */
@@ -46216,8 +46816,8 @@ index 1a48234..a555339 100644
46216+ if (atomic_read(&serial->port.count) == 0) 46816+ if (atomic_read(&serial->port.count) == 0)
46217 return; 46817 return;
46218 46818
46219 if (status == 0) { 46819 if (serial->parent->port_spec & HSO_INFO_CRC_BUG)
46220@@ -1297,8 +1297,7 @@ static int hso_serial_open(struct tty_struct *tty, struct file *filp) 46820@@ -1287,8 +1287,7 @@ static int hso_serial_open(struct tty_struct *tty, struct file *filp)
46221 tty_port_tty_set(&serial->port, tty); 46821 tty_port_tty_set(&serial->port, tty);
46222 46822
46223 /* check for port already opened, if not set the termios */ 46823 /* check for port already opened, if not set the termios */
@@ -46227,7 +46827,7 @@ index 1a48234..a555339 100644
46227 serial->rx_state = RX_IDLE; 46827 serial->rx_state = RX_IDLE;
46228 /* Force default termio settings */ 46828 /* Force default termio settings */
46229 _hso_serial_set_termios(tty, NULL); 46829 _hso_serial_set_termios(tty, NULL);
46230@@ -1310,7 +1309,7 @@ static int hso_serial_open(struct tty_struct *tty, struct file *filp) 46830@@ -1300,7 +1299,7 @@ static int hso_serial_open(struct tty_struct *tty, struct file *filp)
46231 result = hso_start_serial_device(serial->parent, GFP_KERNEL); 46831 result = hso_start_serial_device(serial->parent, GFP_KERNEL);
46232 if (result) { 46832 if (result) {
46233 hso_stop_serial_device(serial->parent); 46833 hso_stop_serial_device(serial->parent);
@@ -46236,7 +46836,7 @@ index 1a48234..a555339 100644
46236 kref_put(&serial->parent->ref, hso_serial_ref_free); 46836 kref_put(&serial->parent->ref, hso_serial_ref_free);
46237 } 46837 }
46238 } else { 46838 } else {
46239@@ -1347,10 +1346,10 @@ static void hso_serial_close(struct tty_struct *tty, struct file *filp) 46839@@ -1337,10 +1336,10 @@ static void hso_serial_close(struct tty_struct *tty, struct file *filp)
46240 46840
46241 /* reset the rts and dtr */ 46841 /* reset the rts and dtr */
46242 /* do the actual close */ 46842 /* do the actual close */
@@ -46250,7 +46850,7 @@ index 1a48234..a555339 100644
46250 tty_port_tty_set(&serial->port, NULL); 46850 tty_port_tty_set(&serial->port, NULL);
46251 if (!usb_gone) 46851 if (!usb_gone)
46252 hso_stop_serial_device(serial->parent); 46852 hso_stop_serial_device(serial->parent);
46253@@ -1426,7 +1425,7 @@ static void hso_serial_set_termios(struct tty_struct *tty, struct ktermios *old) 46853@@ -1416,7 +1415,7 @@ static void hso_serial_set_termios(struct tty_struct *tty, struct ktermios *old)
46254 46854
46255 /* the actual setup */ 46855 /* the actual setup */
46256 spin_lock_irqsave(&serial->serial_lock, flags); 46856 spin_lock_irqsave(&serial->serial_lock, flags);
@@ -46259,7 +46859,7 @@ index 1a48234..a555339 100644
46259 _hso_serial_set_termios(tty, old); 46859 _hso_serial_set_termios(tty, old);
46260 else 46860 else
46261 tty->termios = *old; 46861 tty->termios = *old;
46262@@ -1895,7 +1894,7 @@ static void intr_callback(struct urb *urb) 46862@@ -1885,7 +1884,7 @@ static void intr_callback(struct urb *urb)
46263 D1("Pending read interrupt on port %d\n", i); 46863 D1("Pending read interrupt on port %d\n", i);
46264 spin_lock(&serial->serial_lock); 46864 spin_lock(&serial->serial_lock);
46265 if (serial->rx_state == RX_IDLE && 46865 if (serial->rx_state == RX_IDLE &&
@@ -46268,7 +46868,7 @@ index 1a48234..a555339 100644
46268 /* Setup and send a ctrl req read on 46868 /* Setup and send a ctrl req read on
46269 * port i */ 46869 * port i */
46270 if (!serial->rx_urb_filled[0]) { 46870 if (!serial->rx_urb_filled[0]) {
46271@@ -3071,7 +3070,7 @@ static int hso_resume(struct usb_interface *iface) 46871@@ -3061,7 +3060,7 @@ static int hso_resume(struct usb_interface *iface)
46272 /* Start all serial ports */ 46872 /* Start all serial ports */
46273 for (i = 0; i < HSO_SERIAL_TTY_MINORS; i++) { 46873 for (i = 0; i < HSO_SERIAL_TTY_MINORS; i++) {
46274 if (serial_table[i] && (serial_table[i]->interface == iface)) { 46874 if (serial_table[i] && (serial_table[i]->interface == iface)) {
@@ -46277,11 +46877,24 @@ index 1a48234..a555339 100644
46277 result = 46877 result =
46278 hso_start_serial_device(serial_table[i], GFP_NOIO); 46878 hso_start_serial_device(serial_table[i], GFP_NOIO);
46279 hso_kick_transmit(dev2ser(serial_table[i])); 46879 hso_kick_transmit(dev2ser(serial_table[i]));
46880diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
46881index adb12f3..48005ab 100644
46882--- a/drivers/net/usb/r8152.c
46883+++ b/drivers/net/usb/r8152.c
46884@@ -513,7 +513,7 @@ struct r8152 {
46885 void (*disable)(struct r8152 *);
46886 void (*down)(struct r8152 *);
46887 void (*unload)(struct r8152 *);
46888- } rtl_ops;
46889+ } __no_const rtl_ops;
46890
46891 int intr_interval;
46892 u32 msg_enable;
46280diff --git a/drivers/net/usb/sierra_net.c b/drivers/net/usb/sierra_net.c 46893diff --git a/drivers/net/usb/sierra_net.c b/drivers/net/usb/sierra_net.c
46281index a79e9d3..78cd4fa 100644 46894index a2515887..6d13233 100644
46282--- a/drivers/net/usb/sierra_net.c 46895--- a/drivers/net/usb/sierra_net.c
46283+++ b/drivers/net/usb/sierra_net.c 46896+++ b/drivers/net/usb/sierra_net.c
46284@@ -52,7 +52,7 @@ static const char driver_name[] = "sierra_net"; 46897@@ -51,7 +51,7 @@ static const char driver_name[] = "sierra_net";
46285 /* atomic counter partially included in MAC address to make sure 2 devices 46898 /* atomic counter partially included in MAC address to make sure 2 devices
46286 * do not end up with the same MAC - concept breaks in case of > 255 ifaces 46899 * do not end up with the same MAC - concept breaks in case of > 255 ifaces
46287 */ 46900 */
@@ -46290,7 +46903,7 @@ index a79e9d3..78cd4fa 100644
46290 46903
46291 /* 46904 /*
46292 * SYNC Timer Delay definition used to set the expiry time 46905 * SYNC Timer Delay definition used to set the expiry time
46293@@ -698,7 +698,7 @@ static int sierra_net_bind(struct usbnet *dev, struct usb_interface *intf) 46906@@ -697,7 +697,7 @@ static int sierra_net_bind(struct usbnet *dev, struct usb_interface *intf)
46294 dev->net->netdev_ops = &sierra_net_device_ops; 46907 dev->net->netdev_ops = &sierra_net_device_ops;
46295 46908
46296 /* change MAC addr to include, ifacenum, and to be unique */ 46909 /* change MAC addr to include, ifacenum, and to be unique */
@@ -46300,10 +46913,10 @@ index a79e9d3..78cd4fa 100644
46300 46913
46301 /* we will have to manufacture ethernet headers, prepare template */ 46914 /* we will have to manufacture ethernet headers, prepare template */
46302diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c 46915diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c
46303index 0247973..088193a 100644 46916index d091e52..568bb179 100644
46304--- a/drivers/net/vxlan.c 46917--- a/drivers/net/vxlan.c
46305+++ b/drivers/net/vxlan.c 46918+++ b/drivers/net/vxlan.c
46306@@ -2615,7 +2615,7 @@ nla_put_failure: 46919@@ -2847,7 +2847,7 @@ nla_put_failure:
46307 return -EMSGSIZE; 46920 return -EMSGSIZE;
46308 } 46921 }
46309 46922
@@ -46312,6 +46925,15 @@ index 0247973..088193a 100644
46312 .kind = "vxlan", 46925 .kind = "vxlan",
46313 .maxtype = IFLA_VXLAN_MAX, 46926 .maxtype = IFLA_VXLAN_MAX,
46314 .policy = vxlan_policy, 46927 .policy = vxlan_policy,
46928@@ -2894,7 +2894,7 @@ static int vxlan_lowerdev_event(struct notifier_block *unused,
46929 return NOTIFY_DONE;
46930 }
46931
46932-static struct notifier_block vxlan_notifier_block __read_mostly = {
46933+static struct notifier_block vxlan_notifier_block = {
46934 .notifier_call = vxlan_lowerdev_event,
46935 };
46936
46315diff --git a/drivers/net/wan/lmc/lmc_media.c b/drivers/net/wan/lmc/lmc_media.c 46937diff --git a/drivers/net/wan/lmc/lmc_media.c b/drivers/net/wan/lmc/lmc_media.c
46316index 5920c99..ff2e4a5 100644 46938index 5920c99..ff2e4a5 100644
46317--- a/drivers/net/wan/lmc/lmc_media.c 46939--- a/drivers/net/wan/lmc/lmc_media.c
@@ -46507,7 +47129,7 @@ index edf4b57..68b51c0 100644
46507 47129
46508 /* Only super-user can write RIDs */ 47130 /* Only super-user can write RIDs */
46509diff --git a/drivers/net/wireless/at76c50x-usb.c b/drivers/net/wireless/at76c50x-usb.c 47131diff --git a/drivers/net/wireless/at76c50x-usb.c b/drivers/net/wireless/at76c50x-usb.c
46510index 34c8a33..3261fdc 100644 47132index 99b3bfa..9559372 100644
46511--- a/drivers/net/wireless/at76c50x-usb.c 47133--- a/drivers/net/wireless/at76c50x-usb.c
46512+++ b/drivers/net/wireless/at76c50x-usb.c 47134+++ b/drivers/net/wireless/at76c50x-usb.c
46513@@ -353,7 +353,7 @@ static int at76_dfu_get_state(struct usb_device *udev, u8 *state) 47135@@ -353,7 +353,7 @@ static int at76_dfu_get_state(struct usb_device *udev, u8 *state)
@@ -46520,10 +47142,10 @@ index 34c8a33..3261fdc 100644
46520 return msecs_to_jiffies((s->poll_timeout[2] << 16) 47142 return msecs_to_jiffies((s->poll_timeout[2] << 16)
46521 | (s->poll_timeout[1] << 8) 47143 | (s->poll_timeout[1] << 8)
46522diff --git a/drivers/net/wireless/ath/ath10k/htc.c b/drivers/net/wireless/ath/ath10k/htc.c 47144diff --git a/drivers/net/wireless/ath/ath10k/htc.c b/drivers/net/wireless/ath/ath10k/htc.c
46523index edae50b..b24278c 100644 47145index edc57ab..ff49e0a 100644
46524--- a/drivers/net/wireless/ath/ath10k/htc.c 47146--- a/drivers/net/wireless/ath/ath10k/htc.c
46525+++ b/drivers/net/wireless/ath/ath10k/htc.c 47147+++ b/drivers/net/wireless/ath/ath10k/htc.c
46526@@ -842,7 +842,10 @@ void ath10k_htc_stop(struct ath10k_htc *htc) 47148@@ -831,7 +831,10 @@ void ath10k_htc_stop(struct ath10k_htc *htc)
46527 /* registered target arrival callback from the HIF layer */ 47149 /* registered target arrival callback from the HIF layer */
46528 int ath10k_htc_init(struct ath10k *ar) 47150 int ath10k_htc_init(struct ath10k *ar)
46529 { 47151 {
@@ -46535,7 +47157,7 @@ index edae50b..b24278c 100644
46535 struct ath10k_htc_ep *ep = NULL; 47157 struct ath10k_htc_ep *ep = NULL;
46536 struct ath10k_htc *htc = &ar->htc; 47158 struct ath10k_htc *htc = &ar->htc;
46537 47159
46538@@ -852,8 +855,6 @@ int ath10k_htc_init(struct ath10k *ar) 47160@@ -841,8 +844,6 @@ int ath10k_htc_init(struct ath10k *ar)
46539 ath10k_htc_reset_endpoint_states(htc); 47161 ath10k_htc_reset_endpoint_states(htc);
46540 47162
46541 /* setup HIF layer callbacks */ 47163 /* setup HIF layer callbacks */
@@ -46565,10 +47187,10 @@ index 4716d33..a688310 100644
46565 /* service connection information */ 47187 /* service connection information */
46566 struct ath10k_htc_svc_conn_req { 47188 struct ath10k_htc_svc_conn_req {
46567diff --git a/drivers/net/wireless/ath/ath9k/ar9002_mac.c b/drivers/net/wireless/ath/ath9k/ar9002_mac.c 47189diff --git a/drivers/net/wireless/ath/ath9k/ar9002_mac.c b/drivers/net/wireless/ath/ath9k/ar9002_mac.c
46568index a366d6b..b6f28f8 100644 47190index 741b38d..b7ae41b 100644
46569--- a/drivers/net/wireless/ath/ath9k/ar9002_mac.c 47191--- a/drivers/net/wireless/ath/ath9k/ar9002_mac.c
46570+++ b/drivers/net/wireless/ath/ath9k/ar9002_mac.c 47192+++ b/drivers/net/wireless/ath/ath9k/ar9002_mac.c
46571@@ -218,8 +218,8 @@ ar9002_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i) 47193@@ -220,8 +220,8 @@ ar9002_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i)
46572 ads->ds_txstatus6 = ads->ds_txstatus7 = 0; 47194 ads->ds_txstatus6 = ads->ds_txstatus7 = 0;
46573 ads->ds_txstatus8 = ads->ds_txstatus9 = 0; 47195 ads->ds_txstatus8 = ads->ds_txstatus9 = 0;
46574 47196
@@ -46579,7 +47201,7 @@ index a366d6b..b6f28f8 100644
46579 47201
46580 ctl1 = i->buf_len[0] | (i->is_last ? 0 : AR_TxMore); 47202 ctl1 = i->buf_len[0] | (i->is_last ? 0 : AR_TxMore);
46581 ctl6 = SM(i->keytype, AR_EncrType); 47203 ctl6 = SM(i->keytype, AR_EncrType);
46582@@ -233,26 +233,26 @@ ar9002_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i) 47204@@ -235,26 +235,26 @@ ar9002_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i)
46583 47205
46584 if ((i->is_first || i->is_last) && 47206 if ((i->is_first || i->is_last) &&
46585 i->aggr != AGGR_BUF_MIDDLE && i->aggr != AGGR_BUF_LAST) { 47207 i->aggr != AGGR_BUF_MIDDLE && i->aggr != AGGR_BUF_LAST) {
@@ -46613,7 +47235,7 @@ index a366d6b..b6f28f8 100644
46613 return; 47235 return;
46614 } 47236 }
46615 47237
46616@@ -277,7 +277,7 @@ ar9002_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i) 47238@@ -279,7 +279,7 @@ ar9002_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i)
46617 break; 47239 break;
46618 } 47240 }
46619 47241
@@ -46622,7 +47244,7 @@ index a366d6b..b6f28f8 100644
46622 | (i->flags & ATH9K_TXDESC_VMF ? AR_VirtMoreFrag : 0) 47244 | (i->flags & ATH9K_TXDESC_VMF ? AR_VirtMoreFrag : 0)
46623 | SM(i->txpower, AR_XmitPower) 47245 | SM(i->txpower, AR_XmitPower)
46624 | (i->flags & ATH9K_TXDESC_VEOL ? AR_VEOL : 0) 47246 | (i->flags & ATH9K_TXDESC_VEOL ? AR_VEOL : 0)
46625@@ -287,19 +287,19 @@ ar9002_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i) 47247@@ -289,19 +289,19 @@ ar9002_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i)
46626 | (i->flags & ATH9K_TXDESC_RTSENA ? AR_RTSEnable : 47248 | (i->flags & ATH9K_TXDESC_RTSENA ? AR_RTSEnable :
46627 (i->flags & ATH9K_TXDESC_CTSENA ? AR_CTSEnable : 0)); 47249 (i->flags & ATH9K_TXDESC_CTSENA ? AR_CTSEnable : 0));
46628 47250
@@ -46648,7 +47270,7 @@ index a366d6b..b6f28f8 100644
46648 | set11nRateFlags(i->rates, 2) 47270 | set11nRateFlags(i->rates, 2)
46649 | set11nRateFlags(i->rates, 3) 47271 | set11nRateFlags(i->rates, 3)
46650diff --git a/drivers/net/wireless/ath/ath9k/ar9003_mac.c b/drivers/net/wireless/ath/ath9k/ar9003_mac.c 47272diff --git a/drivers/net/wireless/ath/ath9k/ar9003_mac.c b/drivers/net/wireless/ath/ath9k/ar9003_mac.c
46651index f6c5c1b..6058354 100644 47273index 729ffbf..49f50e3 100644
46652--- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c 47274--- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c
46653+++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c 47275+++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c
46654@@ -39,47 +39,47 @@ ar9003_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i) 47276@@ -39,47 +39,47 @@ ar9003_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i)
@@ -46770,10 +47392,10 @@ index f6c5c1b..6058354 100644
46770 47392
46771 static u16 ar9003_calc_ptr_chksum(struct ar9003_txc *ads) 47393 static u16 ar9003_calc_ptr_chksum(struct ar9003_txc *ads)
46772diff --git a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h 47394diff --git a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h
46773index a2c9a5d..b52273e 100644 47395index 0acd4b5..0591c91 100644
46774--- a/drivers/net/wireless/ath/ath9k/hw.h 47396--- a/drivers/net/wireless/ath/ath9k/hw.h
46775+++ b/drivers/net/wireless/ath/ath9k/hw.h 47397+++ b/drivers/net/wireless/ath/ath9k/hw.h
46776@@ -635,7 +635,7 @@ struct ath_hw_private_ops { 47398@@ -629,7 +629,7 @@ struct ath_hw_private_ops {
46777 47399
46778 /* ANI */ 47400 /* ANI */
46779 void (*ani_cache_ini_regs)(struct ath_hw *ah); 47401 void (*ani_cache_ini_regs)(struct ath_hw *ah);
@@ -46782,7 +47404,7 @@ index a2c9a5d..b52273e 100644
46782 47404
46783 /** 47405 /**
46784 * struct ath_spec_scan - parameters for Atheros spectral scan 47406 * struct ath_spec_scan - parameters for Atheros spectral scan
46785@@ -711,7 +711,7 @@ struct ath_hw_ops { 47407@@ -706,7 +706,7 @@ struct ath_hw_ops {
46786 #ifdef CONFIG_ATH9K_BTCOEX_SUPPORT 47408 #ifdef CONFIG_ATH9K_BTCOEX_SUPPORT
46787 void (*set_bt_ant_diversity)(struct ath_hw *hw, bool enable); 47409 void (*set_bt_ant_diversity)(struct ath_hw *hw, bool enable);
46788 #endif 47410 #endif
@@ -46805,10 +47427,10 @@ index 92190da..f3a4c4c 100644
46805 u32 freqref, vco_freq, val1, val2, val3, timeout, timeoutref, count; 47427 u32 freqref, vco_freq, val1, val2, val3, timeout, timeoutref, count;
46806 u16 old_comm15, scale; 47428 u16 old_comm15, scale;
46807diff --git a/drivers/net/wireless/iwlegacy/3945-mac.c b/drivers/net/wireless/iwlegacy/3945-mac.c 47429diff --git a/drivers/net/wireless/iwlegacy/3945-mac.c b/drivers/net/wireless/iwlegacy/3945-mac.c
46808index dea3b50..543db99 100644 47430index 0487461..fd9e84a 100644
46809--- a/drivers/net/wireless/iwlegacy/3945-mac.c 47431--- a/drivers/net/wireless/iwlegacy/3945-mac.c
46810+++ b/drivers/net/wireless/iwlegacy/3945-mac.c 47432+++ b/drivers/net/wireless/iwlegacy/3945-mac.c
46811@@ -3639,7 +3639,9 @@ il3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) 47433@@ -3638,7 +3638,9 @@ il3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
46812 */ 47434 */
46813 if (il3945_mod_params.disable_hw_scan) { 47435 if (il3945_mod_params.disable_hw_scan) {
46814 D_INFO("Disabling hw_scan\n"); 47436 D_INFO("Disabling hw_scan\n");
@@ -46820,7 +47442,7 @@ index dea3b50..543db99 100644
46820 47442
46821 D_INFO("*** LOAD DRIVER ***\n"); 47443 D_INFO("*** LOAD DRIVER ***\n");
46822diff --git a/drivers/net/wireless/iwlwifi/dvm/debugfs.c b/drivers/net/wireless/iwlwifi/dvm/debugfs.c 47444diff --git a/drivers/net/wireless/iwlwifi/dvm/debugfs.c b/drivers/net/wireless/iwlwifi/dvm/debugfs.c
46823index d94f8ab..5b568c8 100644 47445index d2fe259..0c4c682 100644
46824--- a/drivers/net/wireless/iwlwifi/dvm/debugfs.c 47446--- a/drivers/net/wireless/iwlwifi/dvm/debugfs.c
46825+++ b/drivers/net/wireless/iwlwifi/dvm/debugfs.c 47447+++ b/drivers/net/wireless/iwlwifi/dvm/debugfs.c
46826@@ -188,7 +188,7 @@ static ssize_t iwl_dbgfs_sram_write(struct file *file, 47448@@ -188,7 +188,7 @@ static ssize_t iwl_dbgfs_sram_write(struct file *file,
@@ -46956,10 +47578,10 @@ index d94f8ab..5b568c8 100644
46956 memset(buf, 0, sizeof(buf)); 47578 memset(buf, 0, sizeof(buf));
46957 buf_size = min(count, sizeof(buf) - 1); 47579 buf_size = min(count, sizeof(buf) - 1);
46958diff --git a/drivers/net/wireless/iwlwifi/dvm/main.c b/drivers/net/wireless/iwlwifi/dvm/main.c 47580diff --git a/drivers/net/wireless/iwlwifi/dvm/main.c b/drivers/net/wireless/iwlwifi/dvm/main.c
46959index 7aad766..06addb4 100644 47581index ea7e70c..bc0c45f 100644
46960--- a/drivers/net/wireless/iwlwifi/dvm/main.c 47582--- a/drivers/net/wireless/iwlwifi/dvm/main.c
46961+++ b/drivers/net/wireless/iwlwifi/dvm/main.c 47583+++ b/drivers/net/wireless/iwlwifi/dvm/main.c
46962@@ -1123,7 +1123,7 @@ static void iwl_option_config(struct iwl_priv *priv) 47584@@ -1127,7 +1127,7 @@ static void iwl_option_config(struct iwl_priv *priv)
46963 static int iwl_eeprom_init_hw_params(struct iwl_priv *priv) 47585 static int iwl_eeprom_init_hw_params(struct iwl_priv *priv)
46964 { 47586 {
46965 struct iwl_nvm_data *data = priv->nvm_data; 47587 struct iwl_nvm_data *data = priv->nvm_data;
@@ -46968,7 +47590,7 @@ index 7aad766..06addb4 100644
46968 47590
46969 if (data->sku_cap_11n_enable && 47591 if (data->sku_cap_11n_enable &&
46970 !priv->cfg->ht_params) { 47592 !priv->cfg->ht_params) {
46971@@ -1137,7 +1137,6 @@ static int iwl_eeprom_init_hw_params(struct iwl_priv *priv) 47593@@ -1141,7 +1141,6 @@ static int iwl_eeprom_init_hw_params(struct iwl_priv *priv)
46972 return -EINVAL; 47594 return -EINVAL;
46973 } 47595 }
46974 47596
@@ -46977,10 +47599,10 @@ index 7aad766..06addb4 100644
46977 data->sku_cap_band_24GHz_enable ? "" : "NOT", "enabled", 47599 data->sku_cap_band_24GHz_enable ? "" : "NOT", "enabled",
46978 data->sku_cap_band_52GHz_enable ? "" : "NOT", "enabled", 47600 data->sku_cap_band_52GHz_enable ? "" : "NOT", "enabled",
46979diff --git a/drivers/net/wireless/iwlwifi/pcie/trans.c b/drivers/net/wireless/iwlwifi/pcie/trans.c 47601diff --git a/drivers/net/wireless/iwlwifi/pcie/trans.c b/drivers/net/wireless/iwlwifi/pcie/trans.c
46980index f53ef83..5e34bcb 100644 47602index f950780..be9df93 100644
46981--- a/drivers/net/wireless/iwlwifi/pcie/trans.c 47603--- a/drivers/net/wireless/iwlwifi/pcie/trans.c
46982+++ b/drivers/net/wireless/iwlwifi/pcie/trans.c 47604+++ b/drivers/net/wireless/iwlwifi/pcie/trans.c
46983@@ -1390,7 +1390,7 @@ static ssize_t iwl_dbgfs_interrupt_write(struct file *file, 47605@@ -1365,7 +1365,7 @@ static ssize_t iwl_dbgfs_interrupt_write(struct file *file,
46984 struct isr_statistics *isr_stats = &trans_pcie->isr_stats; 47606 struct isr_statistics *isr_stats = &trans_pcie->isr_stats;
46985 47607
46986 char buf[8]; 47608 char buf[8];
@@ -46989,7 +47611,7 @@ index f53ef83..5e34bcb 100644
46989 u32 reset_flag; 47611 u32 reset_flag;
46990 47612
46991 memset(buf, 0, sizeof(buf)); 47613 memset(buf, 0, sizeof(buf));
46992@@ -1411,7 +1411,7 @@ static ssize_t iwl_dbgfs_csr_write(struct file *file, 47614@@ -1386,7 +1386,7 @@ static ssize_t iwl_dbgfs_csr_write(struct file *file,
46993 { 47615 {
46994 struct iwl_trans *trans = file->private_data; 47616 struct iwl_trans *trans = file->private_data;
46995 char buf[8]; 47617 char buf[8];
@@ -46999,53 +47621,49 @@ index f53ef83..5e34bcb 100644
46999 47621
47000 memset(buf, 0, sizeof(buf)); 47622 memset(buf, 0, sizeof(buf));
47001diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c 47623diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
47002index a1b32ee..94b3c3d 100644 47624index 69d4c31..bd0b316 100644
47003--- a/drivers/net/wireless/mac80211_hwsim.c 47625--- a/drivers/net/wireless/mac80211_hwsim.c
47004+++ b/drivers/net/wireless/mac80211_hwsim.c 47626+++ b/drivers/net/wireless/mac80211_hwsim.c
47005@@ -2224,25 +2224,19 @@ static int __init init_mac80211_hwsim(void) 47627@@ -2541,20 +2541,20 @@ static int __init init_mac80211_hwsim(void)
47006 47628 if (channels < 1)
47007 if (channels > 1) { 47629 return -EINVAL;
47008 hwsim_if_comb.num_different_channels = channels; 47630
47009- mac80211_hwsim_ops.hw_scan = mac80211_hwsim_hw_scan; 47631- mac80211_hwsim_mchan_ops = mac80211_hwsim_ops;
47010- mac80211_hwsim_ops.cancel_hw_scan = 47632- mac80211_hwsim_mchan_ops.hw_scan = mac80211_hwsim_hw_scan;
47011- mac80211_hwsim_cancel_hw_scan; 47633- mac80211_hwsim_mchan_ops.cancel_hw_scan = mac80211_hwsim_cancel_hw_scan;
47012- mac80211_hwsim_ops.sw_scan_start = NULL; 47634- mac80211_hwsim_mchan_ops.sw_scan_start = NULL;
47013- mac80211_hwsim_ops.sw_scan_complete = NULL; 47635- mac80211_hwsim_mchan_ops.sw_scan_complete = NULL;
47014- mac80211_hwsim_ops.remain_on_channel = 47636- mac80211_hwsim_mchan_ops.remain_on_channel = mac80211_hwsim_roc;
47015- mac80211_hwsim_roc; 47637- mac80211_hwsim_mchan_ops.cancel_remain_on_channel = mac80211_hwsim_croc;
47016- mac80211_hwsim_ops.cancel_remain_on_channel = 47638- mac80211_hwsim_mchan_ops.add_chanctx = mac80211_hwsim_add_chanctx;
47017- mac80211_hwsim_croc; 47639- mac80211_hwsim_mchan_ops.remove_chanctx = mac80211_hwsim_remove_chanctx;
47018- mac80211_hwsim_ops.add_chanctx = 47640- mac80211_hwsim_mchan_ops.change_chanctx = mac80211_hwsim_change_chanctx;
47019- mac80211_hwsim_add_chanctx; 47641- mac80211_hwsim_mchan_ops.assign_vif_chanctx =
47020- mac80211_hwsim_ops.remove_chanctx = 47642- mac80211_hwsim_assign_vif_chanctx;
47021- mac80211_hwsim_remove_chanctx; 47643- mac80211_hwsim_mchan_ops.unassign_vif_chanctx =
47022- mac80211_hwsim_ops.change_chanctx = 47644- mac80211_hwsim_unassign_vif_chanctx;
47023- mac80211_hwsim_change_chanctx; 47645+ pax_open_kernel();
47024- mac80211_hwsim_ops.assign_vif_chanctx = 47646+ memcpy((void *)&mac80211_hwsim_mchan_ops, &mac80211_hwsim_ops, sizeof mac80211_hwsim_mchan_ops);
47025- mac80211_hwsim_assign_vif_chanctx; 47647+ *(void **)&mac80211_hwsim_mchan_ops.hw_scan = mac80211_hwsim_hw_scan;
47026- mac80211_hwsim_ops.unassign_vif_chanctx = 47648+ *(void **)&mac80211_hwsim_mchan_ops.cancel_hw_scan = mac80211_hwsim_cancel_hw_scan;
47027- mac80211_hwsim_unassign_vif_chanctx; 47649+ *(void **)&mac80211_hwsim_mchan_ops.sw_scan_start = NULL;
47028+ pax_open_kernel(); 47650+ *(void **)&mac80211_hwsim_mchan_ops.sw_scan_complete = NULL;
47029+ *(void **)&mac80211_hwsim_ops.hw_scan = mac80211_hwsim_hw_scan; 47651+ *(void **)&mac80211_hwsim_mchan_ops.remain_on_channel = mac80211_hwsim_roc;
47030+ *(void **)&mac80211_hwsim_ops.cancel_hw_scan = mac80211_hwsim_cancel_hw_scan; 47652+ *(void **)&mac80211_hwsim_mchan_ops.cancel_remain_on_channel = mac80211_hwsim_croc;
47031+ *(void **)&mac80211_hwsim_ops.sw_scan_start = NULL; 47653+ *(void **)&mac80211_hwsim_mchan_ops.add_chanctx = mac80211_hwsim_add_chanctx;
47032+ *(void **)&mac80211_hwsim_ops.sw_scan_complete = NULL; 47654+ *(void **)&mac80211_hwsim_mchan_ops.remove_chanctx = mac80211_hwsim_remove_chanctx;
47033+ *(void **)&mac80211_hwsim_ops.remain_on_channel = mac80211_hwsim_roc; 47655+ *(void **)&mac80211_hwsim_mchan_ops.change_chanctx = mac80211_hwsim_change_chanctx;
47034+ *(void **)&mac80211_hwsim_ops.cancel_remain_on_channel = mac80211_hwsim_croc; 47656+ *(void **)&mac80211_hwsim_mchan_ops.assign_vif_chanctx = mac80211_hwsim_assign_vif_chanctx;
47035+ *(void **)&mac80211_hwsim_ops.add_chanctx = mac80211_hwsim_add_chanctx; 47657+ *(void **)&mac80211_hwsim_mchan_ops.unassign_vif_chanctx = mac80211_hwsim_unassign_vif_chanctx;
47036+ *(void **)&mac80211_hwsim_ops.remove_chanctx = mac80211_hwsim_remove_chanctx; 47658+ pax_close_kernel();
47037+ *(void **)&mac80211_hwsim_ops.change_chanctx = mac80211_hwsim_change_chanctx;
47038+ *(void **)&mac80211_hwsim_ops.assign_vif_chanctx = mac80211_hwsim_assign_vif_chanctx;
47039+ *(void **)&mac80211_hwsim_ops.unassign_vif_chanctx = mac80211_hwsim_unassign_vif_chanctx;
47040+ pax_close_kernel();
47041 }
47042 47659
47043 spin_lock_init(&hwsim_radio_lock); 47660 spin_lock_init(&hwsim_radio_lock);
47661 INIT_LIST_HEAD(&hwsim_radios);
47044diff --git a/drivers/net/wireless/rndis_wlan.c b/drivers/net/wireless/rndis_wlan.c 47662diff --git a/drivers/net/wireless/rndis_wlan.c b/drivers/net/wireless/rndis_wlan.c
47045index 8169a85..7fa3b47 100644 47663index 5028557..91cf394 100644
47046--- a/drivers/net/wireless/rndis_wlan.c 47664--- a/drivers/net/wireless/rndis_wlan.c
47047+++ b/drivers/net/wireless/rndis_wlan.c 47665+++ b/drivers/net/wireless/rndis_wlan.c
47048@@ -1238,7 +1238,7 @@ static int set_rts_threshold(struct usbnet *usbdev, u32 rts_threshold) 47666@@ -1236,7 +1236,7 @@ static int set_rts_threshold(struct usbnet *usbdev, u32 rts_threshold)
47049 47667
47050 netdev_dbg(usbdev->net, "%s(): %i\n", __func__, rts_threshold); 47668 netdev_dbg(usbdev->net, "%s(): %i\n", __func__, rts_threshold);
47051 47669
@@ -47055,10 +47673,10 @@ index 8169a85..7fa3b47 100644
47055 47673
47056 tmp = cpu_to_le32(rts_threshold); 47674 tmp = cpu_to_le32(rts_threshold);
47057diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h 47675diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h
47058index e4ba2ce..63d7417 100644 47676index e3b885d..7a7de2f 100644
47059--- a/drivers/net/wireless/rt2x00/rt2x00.h 47677--- a/drivers/net/wireless/rt2x00/rt2x00.h
47060+++ b/drivers/net/wireless/rt2x00/rt2x00.h 47678+++ b/drivers/net/wireless/rt2x00/rt2x00.h
47061@@ -377,7 +377,7 @@ struct rt2x00_intf { 47679@@ -375,7 +375,7 @@ struct rt2x00_intf {
47062 * for hardware which doesn't support hardware 47680 * for hardware which doesn't support hardware
47063 * sequence counting. 47681 * sequence counting.
47064 */ 47682 */
@@ -47068,10 +47686,10 @@ index e4ba2ce..63d7417 100644
47068 47686
47069 static inline struct rt2x00_intf* vif_to_intf(struct ieee80211_vif *vif) 47687 static inline struct rt2x00_intf* vif_to_intf(struct ieee80211_vif *vif)
47070diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.c b/drivers/net/wireless/rt2x00/rt2x00queue.c 47688diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.c b/drivers/net/wireless/rt2x00/rt2x00queue.c
47071index a5d38e8..d3c24ea 100644 47689index 5642ccc..01f03eb 100644
47072--- a/drivers/net/wireless/rt2x00/rt2x00queue.c 47690--- a/drivers/net/wireless/rt2x00/rt2x00queue.c
47073+++ b/drivers/net/wireless/rt2x00/rt2x00queue.c 47691+++ b/drivers/net/wireless/rt2x00/rt2x00queue.c
47074@@ -252,9 +252,9 @@ static void rt2x00queue_create_tx_descriptor_seq(struct rt2x00_dev *rt2x00dev, 47692@@ -250,9 +250,9 @@ static void rt2x00queue_create_tx_descriptor_seq(struct rt2x00_dev *rt2x00dev,
47075 * sequence counter given by mac80211. 47693 * sequence counter given by mac80211.
47076 */ 47694 */
47077 if (test_bit(ENTRY_TXD_FIRST_FRAGMENT, &txdesc->flags)) 47695 if (test_bit(ENTRY_TXD_FIRST_FRAGMENT, &txdesc->flags))
@@ -47153,10 +47771,10 @@ index ec37b16..7e34d66 100644
47153 47771
47154 /* Enable 11a Band only if we have 5G antennas */ 47772 /* Enable 11a Band only if we have 5G antennas */
47155diff --git a/drivers/net/wireless/zd1211rw/zd_usb.c b/drivers/net/wireless/zd1211rw/zd_usb.c 47773diff --git a/drivers/net/wireless/zd1211rw/zd_usb.c b/drivers/net/wireless/zd1211rw/zd_usb.c
47156index 84d94f5..bd6c61c 100644 47774index a912dc0..a8225ba 100644
47157--- a/drivers/net/wireless/zd1211rw/zd_usb.c 47775--- a/drivers/net/wireless/zd1211rw/zd_usb.c
47158+++ b/drivers/net/wireless/zd1211rw/zd_usb.c 47776+++ b/drivers/net/wireless/zd1211rw/zd_usb.c
47159@@ -386,7 +386,7 @@ static inline void handle_regs_int(struct urb *urb) 47777@@ -385,7 +385,7 @@ static inline void handle_regs_int(struct urb *urb)
47160 { 47778 {
47161 struct zd_usb *usb = urb->context; 47779 struct zd_usb *usb = urb->context;
47162 struct zd_usb_interrupt *intr = &usb->intr; 47780 struct zd_usb_interrupt *intr = &usb->intr;
@@ -47166,10 +47784,10 @@ index 84d94f5..bd6c61c 100644
47166 47784
47167 ZD_ASSERT(in_interrupt()); 47785 ZD_ASSERT(in_interrupt());
47168diff --git a/drivers/nfc/nfcwilink.c b/drivers/nfc/nfcwilink.c 47786diff --git a/drivers/nfc/nfcwilink.c b/drivers/nfc/nfcwilink.c
47169index 7130864..00e64de 100644 47787index 683671a..4519fc2 100644
47170--- a/drivers/nfc/nfcwilink.c 47788--- a/drivers/nfc/nfcwilink.c
47171+++ b/drivers/nfc/nfcwilink.c 47789+++ b/drivers/nfc/nfcwilink.c
47172@@ -498,7 +498,7 @@ static struct nci_ops nfcwilink_ops = { 47790@@ -497,7 +497,7 @@ static struct nci_ops nfcwilink_ops = {
47173 47791
47174 static int nfcwilink_probe(struct platform_device *pdev) 47792 static int nfcwilink_probe(struct platform_device *pdev)
47175 { 47793 {
@@ -47358,10 +47976,10 @@ index 92ed045..62d39bd7 100644
47358 #endif /* IEEE1284.3 support. */ 47976 #endif /* IEEE1284.3 support. */
47359 47977
47360diff --git a/drivers/pci/hotplug/acpiphp_ibm.c b/drivers/pci/hotplug/acpiphp_ibm.c 47978diff --git a/drivers/pci/hotplug/acpiphp_ibm.c b/drivers/pci/hotplug/acpiphp_ibm.c
47361index ecfac7e..41be7028 100644 47979index 8dcccff..35d701d 100644
47362--- a/drivers/pci/hotplug/acpiphp_ibm.c 47980--- a/drivers/pci/hotplug/acpiphp_ibm.c
47363+++ b/drivers/pci/hotplug/acpiphp_ibm.c 47981+++ b/drivers/pci/hotplug/acpiphp_ibm.c
47364@@ -453,7 +453,9 @@ static int __init ibm_acpiphp_init(void) 47982@@ -452,7 +452,9 @@ static int __init ibm_acpiphp_init(void)
47365 goto init_cleanup; 47983 goto init_cleanup;
47366 } 47984 }
47367 47985
@@ -47484,7 +48102,7 @@ index cfa92a9..29539c5 100644
47484 mutex_lock(&pci_hp_mutex); 48102 mutex_lock(&pci_hp_mutex);
47485 /* 48103 /*
47486diff --git a/drivers/pci/hotplug/pciehp_core.c b/drivers/pci/hotplug/pciehp_core.c 48104diff --git a/drivers/pci/hotplug/pciehp_core.c b/drivers/pci/hotplug/pciehp_core.c
47487index bbd48bb..6907ef4 100644 48105index 53b58de..4479896 100644
47488--- a/drivers/pci/hotplug/pciehp_core.c 48106--- a/drivers/pci/hotplug/pciehp_core.c
47489+++ b/drivers/pci/hotplug/pciehp_core.c 48107+++ b/drivers/pci/hotplug/pciehp_core.c
47490@@ -92,7 +92,7 @@ static int init_slot(struct controller *ctrl) 48108@@ -92,7 +92,7 @@ static int init_slot(struct controller *ctrl)
@@ -47496,11 +48114,35 @@ index bbd48bb..6907ef4 100644
47496 char name[SLOT_NAME_SIZE]; 48114 char name[SLOT_NAME_SIZE];
47497 int retval = -ENOMEM; 48115 int retval = -ENOMEM;
47498 48116
48117diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
48118index 955ab79..d1df9c7 100644
48119--- a/drivers/pci/msi.c
48120+++ b/drivers/pci/msi.c
48121@@ -524,8 +524,8 @@ static int populate_msi_sysfs(struct pci_dev *pdev)
48122 {
48123 struct attribute **msi_attrs;
48124 struct attribute *msi_attr;
48125- struct device_attribute *msi_dev_attr;
48126- struct attribute_group *msi_irq_group;
48127+ device_attribute_no_const *msi_dev_attr;
48128+ attribute_group_no_const *msi_irq_group;
48129 const struct attribute_group **msi_irq_groups;
48130 struct msi_desc *entry;
48131 int ret = -ENOMEM;
48132@@ -589,7 +589,7 @@ error_attrs:
48133 count = 0;
48134 msi_attr = msi_attrs[count];
48135 while (msi_attr) {
48136- msi_dev_attr = container_of(msi_attr, struct device_attribute, attr);
48137+ msi_dev_attr = container_of(msi_attr, device_attribute_no_const, attr);
48138 kfree(msi_attr->name);
48139 kfree(msi_dev_attr);
48140 ++count;
47499diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c 48141diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c
47500index c91e6c1..5c723ef 100644 48142index 276ef9c..1d33a36 100644
47501--- a/drivers/pci/pci-sysfs.c 48143--- a/drivers/pci/pci-sysfs.c
47502+++ b/drivers/pci/pci-sysfs.c 48144+++ b/drivers/pci/pci-sysfs.c
47503@@ -1117,7 +1117,7 @@ static int pci_create_attr(struct pci_dev *pdev, int num, int write_combine) 48145@@ -1112,7 +1112,7 @@ static int pci_create_attr(struct pci_dev *pdev, int num, int write_combine)
47504 { 48146 {
47505 /* allocate attribute structure, piggyback attribute name */ 48147 /* allocate attribute structure, piggyback attribute name */
47506 int name_len = write_combine ? 13 : 10; 48148 int name_len = write_combine ? 13 : 10;
@@ -47509,7 +48151,7 @@ index c91e6c1..5c723ef 100644
47509 int retval; 48151 int retval;
47510 48152
47511 res_attr = kzalloc(sizeof(*res_attr) + name_len, GFP_ATOMIC); 48153 res_attr = kzalloc(sizeof(*res_attr) + name_len, GFP_ATOMIC);
47512@@ -1302,7 +1302,7 @@ static struct device_attribute reset_attr = __ATTR(reset, 0200, NULL, reset_stor 48154@@ -1297,7 +1297,7 @@ static struct device_attribute reset_attr = __ATTR(reset, 0200, NULL, reset_stor
47513 static int pci_create_capabilities_sysfs(struct pci_dev *dev) 48155 static int pci_create_capabilities_sysfs(struct pci_dev *dev)
47514 { 48156 {
47515 int retval; 48157 int retval;
@@ -47518,7 +48160,7 @@ index c91e6c1..5c723ef 100644
47518 48160
47519 /* If the device has VPD, try to expose it in sysfs. */ 48161 /* If the device has VPD, try to expose it in sysfs. */
47520 if (dev->vpd) { 48162 if (dev->vpd) {
47521@@ -1349,7 +1349,7 @@ int __must_check pci_create_sysfs_dev_files (struct pci_dev *pdev) 48163@@ -1344,7 +1344,7 @@ int __must_check pci_create_sysfs_dev_files (struct pci_dev *pdev)
47522 { 48164 {
47523 int retval; 48165 int retval;
47524 int rom_size = 0; 48166 int rom_size = 0;
@@ -47528,10 +48170,10 @@ index c91e6c1..5c723ef 100644
47528 if (!sysfs_initialized) 48170 if (!sysfs_initialized)
47529 return -EACCES; 48171 return -EACCES;
47530diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h 48172diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h
47531index 9c91ecc..bda4796 100644 48173index 4df38df..b6bb7fe 100644
47532--- a/drivers/pci/pci.h 48174--- a/drivers/pci/pci.h
47533+++ b/drivers/pci/pci.h 48175+++ b/drivers/pci/pci.h
47534@@ -95,7 +95,7 @@ struct pci_vpd_ops { 48176@@ -93,7 +93,7 @@ struct pci_vpd_ops {
47535 struct pci_vpd { 48177 struct pci_vpd {
47536 unsigned int len; 48178 unsigned int len;
47537 const struct pci_vpd_ops *ops; 48179 const struct pci_vpd_ops *ops;
@@ -47541,7 +48183,7 @@ index 9c91ecc..bda4796 100644
47541 48183
47542 int pci_vpd_pci22_init(struct pci_dev *dev); 48184 int pci_vpd_pci22_init(struct pci_dev *dev);
47543diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c 48185diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c
47544index f1272dc..e92a1ac 100644 48186index e1e7026..d28dd33 100644
47545--- a/drivers/pci/pcie/aspm.c 48187--- a/drivers/pci/pcie/aspm.c
47546+++ b/drivers/pci/pcie/aspm.c 48188+++ b/drivers/pci/pcie/aspm.c
47547@@ -27,9 +27,9 @@ 48189@@ -27,9 +27,9 @@
@@ -47558,7 +48200,7 @@ index f1272dc..e92a1ac 100644
47558 #define ASPM_STATE_ALL (ASPM_STATE_L0S | ASPM_STATE_L1) 48200 #define ASPM_STATE_ALL (ASPM_STATE_L0S | ASPM_STATE_L1)
47559 48201
47560diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c 48202diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
47561index 38e403d..a2ce55a 100644 48203index 6e34498..9911975 100644
47562--- a/drivers/pci/probe.c 48204--- a/drivers/pci/probe.c
47563+++ b/drivers/pci/probe.c 48205+++ b/drivers/pci/probe.c
47564@@ -175,7 +175,7 @@ int __pci_read_base(struct pci_dev *dev, enum pci_bar_type type, 48206@@ -175,7 +175,7 @@ int __pci_read_base(struct pci_dev *dev, enum pci_bar_type type,
@@ -47592,23 +48234,23 @@ index 46d1378..30e452b 100644
47592 &proc_bus_pci_dev_operations); 48234 &proc_bus_pci_dev_operations);
47593 proc_initialized = 1; 48235 proc_initialized = 1;
47594diff --git a/drivers/platform/chrome/chromeos_laptop.c b/drivers/platform/chrome/chromeos_laptop.c 48236diff --git a/drivers/platform/chrome/chromeos_laptop.c b/drivers/platform/chrome/chromeos_laptop.c
47595index 3e5b4497..dcdfb70 100644 48237index 7f3aad0..7d604bb 100644
47596--- a/drivers/platform/chrome/chromeos_laptop.c 48238--- a/drivers/platform/chrome/chromeos_laptop.c
47597+++ b/drivers/platform/chrome/chromeos_laptop.c 48239+++ b/drivers/platform/chrome/chromeos_laptop.c
47598@@ -301,7 +301,7 @@ static int __init setup_tsl2563_als(const struct dmi_system_id *id) 48240@@ -406,7 +406,7 @@ static struct chromeos_laptop cr48 = {
47599 return 0; 48241 .callback = chromeos_laptop_dmi_matched, \
47600 } 48242 .driver_data = (void *)&board_
47601 48243
47602-static struct dmi_system_id __initdata chromeos_laptop_dmi_table[] = { 48244-static struct dmi_system_id chromeos_laptop_dmi_table[] __initdata = {
47603+static struct dmi_system_id __initconst chromeos_laptop_dmi_table[] = { 48245+static struct dmi_system_id chromeos_laptop_dmi_table[] __initconst = {
47604 { 48246 {
47605 .ident = "Samsung Series 5 550 - Touchpad", 48247 .ident = "Samsung Series 5 550",
47606 .matches = { 48248 .matches = {
47607diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c 48249diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c
47608index 19c313b..ed28b38 100644 48250index c5e082f..d6307a0 100644
47609--- a/drivers/platform/x86/asus-wmi.c 48251--- a/drivers/platform/x86/asus-wmi.c
47610+++ b/drivers/platform/x86/asus-wmi.c 48252+++ b/drivers/platform/x86/asus-wmi.c
47611@@ -1618,6 +1618,10 @@ static int show_dsts(struct seq_file *m, void *data) 48253@@ -1595,6 +1595,10 @@ static int show_dsts(struct seq_file *m, void *data)
47612 int err; 48254 int err;
47613 u32 retval = -1; 48255 u32 retval = -1;
47614 48256
@@ -47619,7 +48261,7 @@ index 19c313b..ed28b38 100644
47619 err = asus_wmi_get_devstate(asus, asus->debug.dev_id, &retval); 48261 err = asus_wmi_get_devstate(asus, asus->debug.dev_id, &retval);
47620 48262
47621 if (err < 0) 48263 if (err < 0)
47622@@ -1634,6 +1638,10 @@ static int show_devs(struct seq_file *m, void *data) 48264@@ -1611,6 +1615,10 @@ static int show_devs(struct seq_file *m, void *data)
47623 int err; 48265 int err;
47624 u32 retval = -1; 48266 u32 retval = -1;
47625 48267
@@ -47630,7 +48272,7 @@ index 19c313b..ed28b38 100644
47630 err = asus_wmi_set_devstate(asus->debug.dev_id, asus->debug.ctrl_param, 48272 err = asus_wmi_set_devstate(asus->debug.dev_id, asus->debug.ctrl_param,
47631 &retval); 48273 &retval);
47632 48274
47633@@ -1658,6 +1666,10 @@ static int show_call(struct seq_file *m, void *data) 48275@@ -1635,6 +1643,10 @@ static int show_call(struct seq_file *m, void *data)
47634 union acpi_object *obj; 48276 union acpi_object *obj;
47635 acpi_status status; 48277 acpi_status status;
47636 48278
@@ -47680,10 +48322,10 @@ index 70222f2..8c8ce66 100644
47680 acpi_status status; 48322 acpi_status status;
47681 48323
47682diff --git a/drivers/platform/x86/sony-laptop.c b/drivers/platform/x86/sony-laptop.c 48324diff --git a/drivers/platform/x86/sony-laptop.c b/drivers/platform/x86/sony-laptop.c
47683index fb233ae..23a325c 100644 48325index 8f8551a..3ace3ca 100644
47684--- a/drivers/platform/x86/sony-laptop.c 48326--- a/drivers/platform/x86/sony-laptop.c
47685+++ b/drivers/platform/x86/sony-laptop.c 48327+++ b/drivers/platform/x86/sony-laptop.c
47686@@ -2453,7 +2453,7 @@ static void sony_nc_gfx_switch_cleanup(struct platform_device *pd) 48328@@ -2451,7 +2451,7 @@ static void sony_nc_gfx_switch_cleanup(struct platform_device *pd)
47687 } 48329 }
47688 48330
47689 /* High speed charging function */ 48331 /* High speed charging function */
@@ -47693,10 +48335,10 @@ index fb233ae..23a325c 100644
47693 static ssize_t sony_nc_highspeed_charging_store(struct device *dev, 48335 static ssize_t sony_nc_highspeed_charging_store(struct device *dev,
47694 struct device_attribute *attr, 48336 struct device_attribute *attr,
47695diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c 48337diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
47696index 58b0274..6704626 100644 48338index e2a91c8..986cc9f 100644
47697--- a/drivers/platform/x86/thinkpad_acpi.c 48339--- a/drivers/platform/x86/thinkpad_acpi.c
47698+++ b/drivers/platform/x86/thinkpad_acpi.c 48340+++ b/drivers/platform/x86/thinkpad_acpi.c
47699@@ -2100,7 +2100,7 @@ static int hotkey_mask_get(void) 48341@@ -2094,7 +2094,7 @@ static int hotkey_mask_get(void)
47700 return 0; 48342 return 0;
47701 } 48343 }
47702 48344
@@ -47705,7 +48347,7 @@ index 58b0274..6704626 100644
47705 { 48347 {
47706 /* log only what the user can fix... */ 48348 /* log only what the user can fix... */
47707 const u32 wantedmask = hotkey_driver_mask & 48349 const u32 wantedmask = hotkey_driver_mask &
47708@@ -2327,11 +2327,6 @@ static void hotkey_read_nvram(struct tp_nvram_state *n, const u32 m) 48350@@ -2321,11 +2321,6 @@ static void hotkey_read_nvram(struct tp_nvram_state *n, const u32 m)
47709 } 48351 }
47710 } 48352 }
47711 48353
@@ -47717,7 +48359,7 @@ index 58b0274..6704626 100644
47717 #define TPACPI_COMPARE_KEY(__scancode, __member) \ 48359 #define TPACPI_COMPARE_KEY(__scancode, __member) \
47718 do { \ 48360 do { \
47719 if ((event_mask & (1 << __scancode)) && \ 48361 if ((event_mask & (1 << __scancode)) && \
47720@@ -2345,36 +2340,42 @@ static void hotkey_compare_and_issue_event(struct tp_nvram_state *oldn, 48362@@ -2339,36 +2334,42 @@ static void hotkey_compare_and_issue_event(struct tp_nvram_state *oldn,
47721 tpacpi_hotkey_send_key(__scancode); \ 48363 tpacpi_hotkey_send_key(__scancode); \
47722 } while (0) 48364 } while (0)
47723 48365
@@ -47784,7 +48426,7 @@ index 58b0274..6704626 100644
47784 TPACPI_COMPARE_KEY(TP_ACPI_HOTKEYSCAN_THINKPAD, thinkpad_toggle); 48426 TPACPI_COMPARE_KEY(TP_ACPI_HOTKEYSCAN_THINKPAD, thinkpad_toggle);
47785 TPACPI_COMPARE_KEY(TP_ACPI_HOTKEYSCAN_FNSPACE, zoom_toggle); 48427 TPACPI_COMPARE_KEY(TP_ACPI_HOTKEYSCAN_FNSPACE, zoom_toggle);
47786 TPACPI_COMPARE_KEY(TP_ACPI_HOTKEYSCAN_FNF7, display_toggle); 48428 TPACPI_COMPARE_KEY(TP_ACPI_HOTKEYSCAN_FNF7, display_toggle);
47787@@ -2408,7 +2409,7 @@ static void hotkey_compare_and_issue_event(struct tp_nvram_state *oldn, 48429@@ -2402,7 +2403,7 @@ static void hotkey_compare_and_issue_event(struct tp_nvram_state *oldn,
47788 oldn->volume_level != newn->volume_level) { 48430 oldn->volume_level != newn->volume_level) {
47789 /* recently muted, or repeated mute keypress, or 48431 /* recently muted, or repeated mute keypress, or
47790 * multiple presses ending in mute */ 48432 * multiple presses ending in mute */
@@ -47793,7 +48435,7 @@ index 58b0274..6704626 100644
47793 TPACPI_MAY_SEND_KEY(TP_ACPI_HOTKEYSCAN_MUTE); 48435 TPACPI_MAY_SEND_KEY(TP_ACPI_HOTKEYSCAN_MUTE);
47794 } 48436 }
47795 } else { 48437 } else {
47796@@ -2418,7 +2419,7 @@ static void hotkey_compare_and_issue_event(struct tp_nvram_state *oldn, 48438@@ -2412,7 +2413,7 @@ static void hotkey_compare_and_issue_event(struct tp_nvram_state *oldn,
47797 TPACPI_MAY_SEND_KEY(TP_ACPI_HOTKEYSCAN_VOLUMEUP); 48439 TPACPI_MAY_SEND_KEY(TP_ACPI_HOTKEYSCAN_VOLUMEUP);
47798 } 48440 }
47799 if (oldn->volume_level != newn->volume_level) { 48441 if (oldn->volume_level != newn->volume_level) {
@@ -47802,7 +48444,7 @@ index 58b0274..6704626 100644
47802 } else if (oldn->volume_toggle != newn->volume_toggle) { 48444 } else if (oldn->volume_toggle != newn->volume_toggle) {
47803 /* repeated vol up/down keypress at end of scale ? */ 48445 /* repeated vol up/down keypress at end of scale ? */
47804 if (newn->volume_level == 0) 48446 if (newn->volume_level == 0)
47805@@ -2431,7 +2432,8 @@ static void hotkey_compare_and_issue_event(struct tp_nvram_state *oldn, 48447@@ -2425,7 +2426,8 @@ static void hotkey_compare_and_issue_event(struct tp_nvram_state *oldn,
47806 /* handle brightness */ 48448 /* handle brightness */
47807 if (oldn->brightness_level != newn->brightness_level) { 48449 if (oldn->brightness_level != newn->brightness_level) {
47808 issue_brightnesschange(oldn->brightness_level, 48450 issue_brightnesschange(oldn->brightness_level,
@@ -47812,7 +48454,7 @@ index 58b0274..6704626 100644
47812 } else if (oldn->brightness_toggle != newn->brightness_toggle) { 48454 } else if (oldn->brightness_toggle != newn->brightness_toggle) {
47813 /* repeated key presses that didn't change state */ 48455 /* repeated key presses that didn't change state */
47814 if (newn->brightness_level == 0) 48456 if (newn->brightness_level == 0)
47815@@ -2440,10 +2442,10 @@ static void hotkey_compare_and_issue_event(struct tp_nvram_state *oldn, 48457@@ -2434,10 +2436,10 @@ static void hotkey_compare_and_issue_event(struct tp_nvram_state *oldn,
47816 && !tp_features.bright_unkfw) 48458 && !tp_features.bright_unkfw)
47817 TPACPI_MAY_SEND_KEY(TP_ACPI_HOTKEYSCAN_FNHOME); 48459 TPACPI_MAY_SEND_KEY(TP_ACPI_HOTKEYSCAN_FNHOME);
47818 } 48460 }
@@ -47885,7 +48527,7 @@ index 769d265..a3a05ca 100644
47885+ pax_close_kernel(); 48527+ pax_close_kernel();
47886 } 48528 }
47887diff --git a/drivers/pnp/resource.c b/drivers/pnp/resource.c 48529diff --git a/drivers/pnp/resource.c b/drivers/pnp/resource.c
47888index d95e101..67f0c3f 100644 48530index bacddd1..65ea100 100644
47889--- a/drivers/pnp/resource.c 48531--- a/drivers/pnp/resource.c
47890+++ b/drivers/pnp/resource.c 48532+++ b/drivers/pnp/resource.c
47891@@ -360,7 +360,7 @@ int pnp_check_irq(struct pnp_dev *dev, struct resource *res) 48533@@ -360,7 +360,7 @@ int pnp_check_irq(struct pnp_dev *dev, struct resource *res)
@@ -47951,12 +48593,12 @@ index cc439fd..8fa30df 100644
47951 48593
47952 #endif /* CONFIG_SYSFS */ 48594 #endif /* CONFIG_SYSFS */
47953diff --git a/drivers/power/power_supply_core.c b/drivers/power/power_supply_core.c 48595diff --git a/drivers/power/power_supply_core.c b/drivers/power/power_supply_core.c
47954index 557af94..84dc1fe 100644 48596index 2660664..75fcb04 100644
47955--- a/drivers/power/power_supply_core.c 48597--- a/drivers/power/power_supply_core.c
47956+++ b/drivers/power/power_supply_core.c 48598+++ b/drivers/power/power_supply_core.c
47957@@ -24,7 +24,10 @@ 48599@@ -28,7 +28,10 @@ EXPORT_SYMBOL_GPL(power_supply_class);
47958 struct class *power_supply_class; 48600 ATOMIC_NOTIFIER_HEAD(power_supply_notifier);
47959 EXPORT_SYMBOL_GPL(power_supply_class); 48601 EXPORT_SYMBOL_GPL(power_supply_notifier);
47960 48602
47961-static struct device_type power_supply_dev_type; 48603-static struct device_type power_supply_dev_type;
47962+extern const struct attribute_group *power_supply_attr_groups[]; 48604+extern const struct attribute_group *power_supply_attr_groups[];
@@ -47966,7 +48608,7 @@ index 557af94..84dc1fe 100644
47966 48608
47967 static bool __power_supply_is_supplied_by(struct power_supply *supplier, 48609 static bool __power_supply_is_supplied_by(struct power_supply *supplier,
47968 struct power_supply *supply) 48610 struct power_supply *supply)
47969@@ -584,7 +587,7 @@ static int __init power_supply_class_init(void) 48611@@ -628,7 +631,7 @@ static int __init power_supply_class_init(void)
47970 return PTR_ERR(power_supply_class); 48612 return PTR_ERR(power_supply_class);
47971 48613
47972 power_supply_class->dev_uevent = power_supply_uevent; 48614 power_supply_class->dev_uevent = power_supply_uevent;
@@ -48189,10 +48831,10 @@ index 84419af..268ede8 100644
48189 &dev_attr_energy_uj.attr; 48831 &dev_attr_energy_uj.attr;
48190 } 48832 }
48191diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c 48833diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
48192index 75dffb79..df850cd 100644 48834index afca1bc..86840b8 100644
48193--- a/drivers/regulator/core.c 48835--- a/drivers/regulator/core.c
48194+++ b/drivers/regulator/core.c 48836+++ b/drivers/regulator/core.c
48195@@ -3370,7 +3370,7 @@ regulator_register(const struct regulator_desc *regulator_desc, 48837@@ -3366,7 +3366,7 @@ regulator_register(const struct regulator_desc *regulator_desc,
48196 { 48838 {
48197 const struct regulation_constraints *constraints = NULL; 48839 const struct regulation_constraints *constraints = NULL;
48198 const struct regulator_init_data *init_data; 48840 const struct regulator_init_data *init_data;
@@ -48201,7 +48843,7 @@ index 75dffb79..df850cd 100644
48201 struct regulator_dev *rdev; 48843 struct regulator_dev *rdev;
48202 struct device *dev; 48844 struct device *dev;
48203 int ret, i; 48845 int ret, i;
48204@@ -3440,7 +3440,7 @@ regulator_register(const struct regulator_desc *regulator_desc, 48846@@ -3436,7 +3436,7 @@ regulator_register(const struct regulator_desc *regulator_desc,
48205 rdev->dev.of_node = config->of_node; 48847 rdev->dev.of_node = config->of_node;
48206 rdev->dev.parent = dev; 48848 rdev->dev.parent = dev;
48207 dev_set_name(&rdev->dev, "regulator.%d", 48849 dev_set_name(&rdev->dev, "regulator.%d",
@@ -48247,7 +48889,7 @@ index 892aa1e..ebd1b9c 100644
48247 48889
48248 if (pdata) { 48890 if (pdata) {
48249diff --git a/drivers/regulator/mc13892-regulator.c b/drivers/regulator/mc13892-regulator.c 48891diff --git a/drivers/regulator/mc13892-regulator.c b/drivers/regulator/mc13892-regulator.c
48250index 96c9f80..90974ca 100644 48892index f374fa5..26f0683 100644
48251--- a/drivers/regulator/mc13892-regulator.c 48893--- a/drivers/regulator/mc13892-regulator.c
48252+++ b/drivers/regulator/mc13892-regulator.c 48894+++ b/drivers/regulator/mc13892-regulator.c
48253@@ -582,10 +582,12 @@ static int mc13892_regulator_probe(struct platform_device *pdev) 48895@@ -582,10 +582,12 @@ static int mc13892_regulator_probe(struct platform_device *pdev)
@@ -48266,10 +48908,10 @@ index 96c9f80..90974ca 100644
48266 mc13xxx_data = mc13xxx_parse_regulators_dt(pdev, mc13892_regulators, 48908 mc13xxx_data = mc13xxx_parse_regulators_dt(pdev, mc13892_regulators,
48267 ARRAY_SIZE(mc13892_regulators)); 48909 ARRAY_SIZE(mc13892_regulators));
48268diff --git a/drivers/rtc/rtc-cmos.c b/drivers/rtc/rtc-cmos.c 48910diff --git a/drivers/rtc/rtc-cmos.c b/drivers/rtc/rtc-cmos.c
48269index a2325bc..04c549f 100644 48911index cae212f..58a3980 100644
48270--- a/drivers/rtc/rtc-cmos.c 48912--- a/drivers/rtc/rtc-cmos.c
48271+++ b/drivers/rtc/rtc-cmos.c 48913+++ b/drivers/rtc/rtc-cmos.c
48272@@ -779,7 +779,9 @@ cmos_do_probe(struct device *dev, struct resource *ports, int rtc_irq) 48914@@ -777,7 +777,9 @@ cmos_do_probe(struct device *dev, struct resource *ports, int rtc_irq)
48273 hpet_rtc_timer_init(); 48915 hpet_rtc_timer_init();
48274 48916
48275 /* export at least the first block of NVRAM */ 48917 /* export at least the first block of NVRAM */
@@ -48414,7 +49056,7 @@ index a3ab5cc..8143622 100644
48414 49056
48415 /* 49057 /*
48416diff --git a/drivers/scsi/bfa/bfa_fcs_lport.c b/drivers/scsi/bfa/bfa_fcs_lport.c 49058diff --git a/drivers/scsi/bfa/bfa_fcs_lport.c b/drivers/scsi/bfa/bfa_fcs_lport.c
48417index f5e4e61..a0acaf6 100644 49059index ff75ef8..2dfe00a 100644
48418--- a/drivers/scsi/bfa/bfa_fcs_lport.c 49060--- a/drivers/scsi/bfa/bfa_fcs_lport.c
48419+++ b/drivers/scsi/bfa/bfa_fcs_lport.c 49061+++ b/drivers/scsi/bfa/bfa_fcs_lport.c
48420@@ -89,15 +89,26 @@ static struct { 49062@@ -89,15 +89,26 @@ static struct {
@@ -48454,7 +49096,7 @@ index f5e4e61..a0acaf6 100644
48454 /* 49096 /*
48455 * fcs_port_sm FCS logical port state machine 49097 * fcs_port_sm FCS logical port state machine
48456diff --git a/drivers/scsi/bfa/bfa_ioc.h b/drivers/scsi/bfa/bfa_ioc.h 49098diff --git a/drivers/scsi/bfa/bfa_ioc.h b/drivers/scsi/bfa/bfa_ioc.h
48457index 90814fe..4384138 100644 49099index 2e28392..9d865b6 100644
48458--- a/drivers/scsi/bfa/bfa_ioc.h 49100--- a/drivers/scsi/bfa/bfa_ioc.h
48459+++ b/drivers/scsi/bfa/bfa_ioc.h 49101+++ b/drivers/scsi/bfa/bfa_ioc.h
48460@@ -258,7 +258,7 @@ struct bfa_ioc_cbfn_s { 49102@@ -258,7 +258,7 @@ struct bfa_ioc_cbfn_s {
@@ -48543,7 +49185,7 @@ index 045c4e1..13de803 100644
48543 error = bus_register(&fcoe_bus_type); 49185 error = bus_register(&fcoe_bus_type);
48544 if (error) 49186 if (error)
48545diff --git a/drivers/scsi/hosts.c b/drivers/scsi/hosts.c 49187diff --git a/drivers/scsi/hosts.c b/drivers/scsi/hosts.c
48546index f2c5005..db36c02 100644 49188index f28ea07..34b16d3 100644
48547--- a/drivers/scsi/hosts.c 49189--- a/drivers/scsi/hosts.c
48548+++ b/drivers/scsi/hosts.c 49190+++ b/drivers/scsi/hosts.c
48549@@ -42,7 +42,7 @@ 49191@@ -42,7 +42,7 @@
@@ -48555,7 +49197,7 @@ index f2c5005..db36c02 100644
48555 49197
48556 49198
48557 static void scsi_host_cls_release(struct device *dev) 49199 static void scsi_host_cls_release(struct device *dev)
48558@@ -367,7 +367,7 @@ struct Scsi_Host *scsi_host_alloc(struct scsi_host_template *sht, int privsize) 49200@@ -369,7 +369,7 @@ struct Scsi_Host *scsi_host_alloc(struct scsi_host_template *sht, int privsize)
48559 * subtract one because we increment first then return, but we need to 49201 * subtract one because we increment first then return, but we need to
48560 * know what the next host number was before increment 49202 * know what the next host number was before increment
48561 */ 49203 */
@@ -48565,10 +49207,10 @@ index f2c5005..db36c02 100644
48565 49207
48566 /* These three are default values which can be overridden */ 49208 /* These three are default values which can be overridden */
48567diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c 49209diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c
48568index 20a5e6e..8b23cea 100644 49210index 868318a..e07ef3b 100644
48569--- a/drivers/scsi/hpsa.c 49211--- a/drivers/scsi/hpsa.c
48570+++ b/drivers/scsi/hpsa.c 49212+++ b/drivers/scsi/hpsa.c
48571@@ -578,7 +578,7 @@ static inline u32 next_command(struct ctlr_info *h, u8 q) 49213@@ -571,7 +571,7 @@ static inline u32 next_command(struct ctlr_info *h, u8 q)
48572 unsigned long flags; 49214 unsigned long flags;
48573 49215
48574 if (unlikely(!(h->transMethod & CFGTBL_Trans_Performant))) 49216 if (unlikely(!(h->transMethod & CFGTBL_Trans_Performant)))
@@ -48577,16 +49219,16 @@ index 20a5e6e..8b23cea 100644
48577 49219
48578 if ((rq->head[rq->current_entry] & 1) == rq->wraparound) { 49220 if ((rq->head[rq->current_entry] & 1) == rq->wraparound) {
48579 a = rq->head[rq->current_entry]; 49221 a = rq->head[rq->current_entry];
48580@@ -3444,7 +3444,7 @@ static void start_io(struct ctlr_info *h) 49222@@ -3474,7 +3474,7 @@ static void start_io(struct ctlr_info *h)
48581 while (!list_empty(&h->reqQ)) { 49223 while (!list_empty(&h->reqQ)) {
48582 c = list_entry(h->reqQ.next, struct CommandList, list); 49224 c = list_entry(h->reqQ.next, struct CommandList, list);
48583 /* can't do anything if fifo is full */ 49225 /* can't do anything if fifo is full */
48584- if ((h->access.fifo_full(h))) { 49226- if ((h->access.fifo_full(h))) {
48585+ if ((h->access->fifo_full(h))) { 49227+ if ((h->access->fifo_full(h))) {
49228 h->fifo_recently_full = 1;
48586 dev_warn(&h->pdev->dev, "fifo full\n"); 49229 dev_warn(&h->pdev->dev, "fifo full\n");
48587 break; 49230 break;
48588 } 49231@@ -3498,7 +3498,7 @@ static void start_io(struct ctlr_info *h)
48589@@ -3466,7 +3466,7 @@ static void start_io(struct ctlr_info *h)
48590 49232
48591 /* Tell the controller execute command */ 49233 /* Tell the controller execute command */
48592 spin_unlock_irqrestore(&h->lock, flags); 49234 spin_unlock_irqrestore(&h->lock, flags);
@@ -48595,7 +49237,7 @@ index 20a5e6e..8b23cea 100644
48595 spin_lock_irqsave(&h->lock, flags); 49237 spin_lock_irqsave(&h->lock, flags);
48596 } 49238 }
48597 spin_unlock_irqrestore(&h->lock, flags); 49239 spin_unlock_irqrestore(&h->lock, flags);
48598@@ -3474,17 +3474,17 @@ static void start_io(struct ctlr_info *h) 49240@@ -3506,17 +3506,17 @@ static void start_io(struct ctlr_info *h)
48599 49241
48600 static inline unsigned long get_next_completion(struct ctlr_info *h, u8 q) 49242 static inline unsigned long get_next_completion(struct ctlr_info *h, u8 q)
48601 { 49243 {
@@ -48616,7 +49258,7 @@ index 20a5e6e..8b23cea 100644
48616 (h->interrupts_enabled == 0); 49258 (h->interrupts_enabled == 0);
48617 } 49259 }
48618 49260
48619@@ -4386,7 +4386,7 @@ static int hpsa_pci_init(struct ctlr_info *h) 49261@@ -4442,7 +4442,7 @@ static int hpsa_pci_init(struct ctlr_info *h)
48620 if (prod_index < 0) 49262 if (prod_index < 0)
48621 return -ENODEV; 49263 return -ENODEV;
48622 h->product_name = products[prod_index].product_name; 49264 h->product_name = products[prod_index].product_name;
@@ -48625,16 +49267,16 @@ index 20a5e6e..8b23cea 100644
48625 49267
48626 pci_disable_link_state(h->pdev, PCIE_LINK_STATE_L0S | 49268 pci_disable_link_state(h->pdev, PCIE_LINK_STATE_L0S |
48627 PCIE_LINK_STATE_L1 | PCIE_LINK_STATE_CLKPM); 49269 PCIE_LINK_STATE_L1 | PCIE_LINK_STATE_CLKPM);
48628@@ -4668,7 +4668,7 @@ static void controller_lockup_detected(struct ctlr_info *h) 49270@@ -4712,7 +4712,7 @@ static void controller_lockup_detected(struct ctlr_info *h)
49271 {
49272 unsigned long flags;
48629 49273
48630 assert_spin_locked(&lockup_detector_lock);
48631 remove_ctlr_from_lockup_detector_list(h);
48632- h->access.set_intr_mask(h, HPSA_INTR_OFF); 49274- h->access.set_intr_mask(h, HPSA_INTR_OFF);
48633+ h->access->set_intr_mask(h, HPSA_INTR_OFF); 49275+ h->access->set_intr_mask(h, HPSA_INTR_OFF);
48634 spin_lock_irqsave(&h->lock, flags); 49276 spin_lock_irqsave(&h->lock, flags);
48635 h->lockup_detected = readl(h->vaddr + SA5_SCRATCHPAD_OFFSET); 49277 h->lockup_detected = readl(h->vaddr + SA5_SCRATCHPAD_OFFSET);
48636 spin_unlock_irqrestore(&h->lock, flags); 49278 spin_unlock_irqrestore(&h->lock, flags);
48637@@ -4845,7 +4845,7 @@ reinit_after_soft_reset: 49279@@ -4843,7 +4843,7 @@ reinit_after_soft_reset:
48638 } 49280 }
48639 49281
48640 /* make sure the board interrupts are off */ 49282 /* make sure the board interrupts are off */
@@ -48643,7 +49285,7 @@ index 20a5e6e..8b23cea 100644
48643 49285
48644 if (hpsa_request_irq(h, do_hpsa_intr_msi, do_hpsa_intr_intx)) 49286 if (hpsa_request_irq(h, do_hpsa_intr_msi, do_hpsa_intr_intx))
48645 goto clean2; 49287 goto clean2;
48646@@ -4879,7 +4879,7 @@ reinit_after_soft_reset: 49288@@ -4877,7 +4877,7 @@ reinit_after_soft_reset:
48647 * fake ones to scoop up any residual completions. 49289 * fake ones to scoop up any residual completions.
48648 */ 49290 */
48649 spin_lock_irqsave(&h->lock, flags); 49291 spin_lock_irqsave(&h->lock, flags);
@@ -48652,7 +49294,7 @@ index 20a5e6e..8b23cea 100644
48652 spin_unlock_irqrestore(&h->lock, flags); 49294 spin_unlock_irqrestore(&h->lock, flags);
48653 free_irqs(h); 49295 free_irqs(h);
48654 rc = hpsa_request_irq(h, hpsa_msix_discard_completions, 49296 rc = hpsa_request_irq(h, hpsa_msix_discard_completions,
48655@@ -4898,9 +4898,9 @@ reinit_after_soft_reset: 49297@@ -4896,9 +4896,9 @@ reinit_after_soft_reset:
48656 dev_info(&h->pdev->dev, "Board READY.\n"); 49298 dev_info(&h->pdev->dev, "Board READY.\n");
48657 dev_info(&h->pdev->dev, 49299 dev_info(&h->pdev->dev,
48658 "Waiting for stale completions to drain.\n"); 49300 "Waiting for stale completions to drain.\n");
@@ -48664,7 +49306,7 @@ index 20a5e6e..8b23cea 100644
48664 49306
48665 rc = controller_reset_failed(h->cfgtable); 49307 rc = controller_reset_failed(h->cfgtable);
48666 if (rc) 49308 if (rc)
48667@@ -4921,7 +4921,7 @@ reinit_after_soft_reset: 49309@@ -4919,7 +4919,7 @@ reinit_after_soft_reset:
48668 } 49310 }
48669 49311
48670 /* Turn the interrupts on so we can service requests */ 49312 /* Turn the interrupts on so we can service requests */
@@ -48673,7 +49315,7 @@ index 20a5e6e..8b23cea 100644
48673 49315
48674 hpsa_hba_inquiry(h); 49316 hpsa_hba_inquiry(h);
48675 hpsa_register_scsi(h); /* hook ourselves into SCSI subsystem */ 49317 hpsa_register_scsi(h); /* hook ourselves into SCSI subsystem */
48676@@ -4976,7 +4976,7 @@ static void hpsa_shutdown(struct pci_dev *pdev) 49318@@ -4988,7 +4988,7 @@ static void hpsa_shutdown(struct pci_dev *pdev)
48677 * To write all data in the battery backed cache to disks 49319 * To write all data in the battery backed cache to disks
48678 */ 49320 */
48679 hpsa_flush_cache(h); 49321 hpsa_flush_cache(h);
@@ -48682,7 +49324,7 @@ index 20a5e6e..8b23cea 100644
48682 hpsa_free_irqs_and_disable_msix(h); 49324 hpsa_free_irqs_and_disable_msix(h);
48683 } 49325 }
48684 49326
48685@@ -5143,7 +5143,7 @@ static void hpsa_enter_performant_mode(struct ctlr_info *h, u32 use_short_tags) 49327@@ -5162,7 +5162,7 @@ static void hpsa_enter_performant_mode(struct ctlr_info *h, u32 use_short_tags)
48686 return; 49328 return;
48687 } 49329 }
48688 /* Change the access methods to the performant access methods */ 49330 /* Change the access methods to the performant access methods */
@@ -48692,7 +49334,7 @@ index 20a5e6e..8b23cea 100644
48692 } 49334 }
48693 49335
48694diff --git a/drivers/scsi/hpsa.h b/drivers/scsi/hpsa.h 49336diff --git a/drivers/scsi/hpsa.h b/drivers/scsi/hpsa.h
48695index bc85e72..d463049 100644 49337index 01c3283..4655219 100644
48696--- a/drivers/scsi/hpsa.h 49338--- a/drivers/scsi/hpsa.h
48697+++ b/drivers/scsi/hpsa.h 49339+++ b/drivers/scsi/hpsa.h
48698@@ -79,7 +79,7 @@ struct ctlr_info { 49340@@ -79,7 +79,7 @@ struct ctlr_info {
@@ -48704,7 +49346,7 @@ index bc85e72..d463049 100644
48704 49346
48705 /* queue and queue Info */ 49347 /* queue and queue Info */
48706 struct list_head reqQ; 49348 struct list_head reqQ;
48707@@ -381,19 +381,19 @@ static bool SA5_performant_intr_pending(struct ctlr_info *h) 49349@@ -388,19 +388,19 @@ static bool SA5_performant_intr_pending(struct ctlr_info *h)
48708 } 49350 }
48709 49351
48710 static struct access_method SA5_access = { 49352 static struct access_method SA5_access = {
@@ -48926,7 +49568,7 @@ index 4e1b75c..0bbdfa9 100644
48926 struct dentry *idiag_root; 49568 struct dentry *idiag_root;
48927 struct dentry *idiag_pci_cfg; 49569 struct dentry *idiag_pci_cfg;
48928diff --git a/drivers/scsi/lpfc/lpfc_debugfs.c b/drivers/scsi/lpfc/lpfc_debugfs.c 49570diff --git a/drivers/scsi/lpfc/lpfc_debugfs.c b/drivers/scsi/lpfc/lpfc_debugfs.c
48929index 60084e6..0e2e700 100644 49571index b800cc9..16b6a91 100644
48930--- a/drivers/scsi/lpfc/lpfc_debugfs.c 49572--- a/drivers/scsi/lpfc/lpfc_debugfs.c
48931+++ b/drivers/scsi/lpfc/lpfc_debugfs.c 49573+++ b/drivers/scsi/lpfc/lpfc_debugfs.c
48932@@ -106,7 +106,7 @@ MODULE_PARM_DESC(lpfc_debugfs_mask_disc_trc, 49574@@ -106,7 +106,7 @@ MODULE_PARM_DESC(lpfc_debugfs_mask_disc_trc,
@@ -49081,7 +49723,7 @@ index b2ede05..aaf482ca 100644
49081 49723
49082 /** 49724 /**
49083diff --git a/drivers/scsi/mpt2sas/mpt2sas_scsih.c b/drivers/scsi/mpt2sas/mpt2sas_scsih.c 49725diff --git a/drivers/scsi/mpt2sas/mpt2sas_scsih.c b/drivers/scsi/mpt2sas/mpt2sas_scsih.c
49084index 7f0af4f..193ac3e 100644 49726index 6fd7d40..b444223 100644
49085--- a/drivers/scsi/mpt2sas/mpt2sas_scsih.c 49727--- a/drivers/scsi/mpt2sas/mpt2sas_scsih.c
49086+++ b/drivers/scsi/mpt2sas/mpt2sas_scsih.c 49728+++ b/drivers/scsi/mpt2sas/mpt2sas_scsih.c
49087@@ -1557,7 +1557,7 @@ _scsih_get_resync(struct device *dev) 49729@@ -1557,7 +1557,7 @@ _scsih_get_resync(struct device *dev)
@@ -49228,10 +49870,10 @@ index e1d150f..6c6df44 100644
49228 /* To indicate add/delete/modify during CCN */ 49870 /* To indicate add/delete/modify during CCN */
49229 u8 change_detected; 49871 u8 change_detected;
49230diff --git a/drivers/scsi/qla2xxx/qla_attr.c b/drivers/scsi/qla2xxx/qla_attr.c 49872diff --git a/drivers/scsi/qla2xxx/qla_attr.c b/drivers/scsi/qla2xxx/qla_attr.c
49231index 5f174b8..98d32b0 100644 49873index 4a0d7c9..3d658d7 100644
49232--- a/drivers/scsi/qla2xxx/qla_attr.c 49874--- a/drivers/scsi/qla2xxx/qla_attr.c
49233+++ b/drivers/scsi/qla2xxx/qla_attr.c 49875+++ b/drivers/scsi/qla2xxx/qla_attr.c
49234@@ -2040,7 +2040,7 @@ qla24xx_vport_disable(struct fc_vport *fc_vport, bool disable) 49876@@ -2038,7 +2038,7 @@ qla24xx_vport_disable(struct fc_vport *fc_vport, bool disable)
49235 return 0; 49877 return 0;
49236 } 49878 }
49237 49879
@@ -49240,7 +49882,7 @@ index 5f174b8..98d32b0 100644
49240 49882
49241 .show_host_node_name = 1, 49883 .show_host_node_name = 1,
49242 .show_host_port_name = 1, 49884 .show_host_port_name = 1,
49243@@ -2088,7 +2088,7 @@ struct fc_function_template qla2xxx_transport_functions = { 49885@@ -2086,7 +2086,7 @@ struct fc_function_template qla2xxx_transport_functions = {
49244 .bsg_timeout = qla24xx_bsg_timeout, 49886 .bsg_timeout = qla24xx_bsg_timeout,
49245 }; 49887 };
49246 49888
@@ -49250,10 +49892,10 @@ index 5f174b8..98d32b0 100644
49250 .show_host_node_name = 1, 49892 .show_host_node_name = 1,
49251 .show_host_port_name = 1, 49893 .show_host_port_name = 1,
49252diff --git a/drivers/scsi/qla2xxx/qla_gbl.h b/drivers/scsi/qla2xxx/qla_gbl.h 49894diff --git a/drivers/scsi/qla2xxx/qla_gbl.h b/drivers/scsi/qla2xxx/qla_gbl.h
49253index 4446bf5..9a3574d 100644 49895index 1f42662..bf9836c 100644
49254--- a/drivers/scsi/qla2xxx/qla_gbl.h 49896--- a/drivers/scsi/qla2xxx/qla_gbl.h
49255+++ b/drivers/scsi/qla2xxx/qla_gbl.h 49897+++ b/drivers/scsi/qla2xxx/qla_gbl.h
49256@@ -538,8 +538,8 @@ extern void qla2x00_get_sym_node_name(scsi_qla_host_t *, uint8_t *); 49898@@ -546,8 +546,8 @@ extern void qla2x00_get_sym_node_name(scsi_qla_host_t *, uint8_t *);
49257 struct device_attribute; 49899 struct device_attribute;
49258 extern struct device_attribute *qla2x00_host_attrs[]; 49900 extern struct device_attribute *qla2x00_host_attrs[];
49259 struct fc_function_template; 49901 struct fc_function_template;
@@ -49262,13 +49904,13 @@ index 4446bf5..9a3574d 100644
49262+extern fc_function_template_no_const qla2xxx_transport_functions; 49904+extern fc_function_template_no_const qla2xxx_transport_functions;
49263+extern fc_function_template_no_const qla2xxx_transport_vport_functions; 49905+extern fc_function_template_no_const qla2xxx_transport_vport_functions;
49264 extern void qla2x00_alloc_sysfs_attr(scsi_qla_host_t *); 49906 extern void qla2x00_alloc_sysfs_attr(scsi_qla_host_t *);
49265 extern void qla2x00_free_sysfs_attr(scsi_qla_host_t *); 49907 extern void qla2x00_free_sysfs_attr(scsi_qla_host_t *, bool);
49266 extern void qla2x00_init_host_attr(scsi_qla_host_t *); 49908 extern void qla2x00_init_host_attr(scsi_qla_host_t *);
49267diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c 49909diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
49268index 52be35e..b933907 100644 49910index 83cb612..9b7b08c 100644
49269--- a/drivers/scsi/qla2xxx/qla_os.c 49911--- a/drivers/scsi/qla2xxx/qla_os.c
49270+++ b/drivers/scsi/qla2xxx/qla_os.c 49912+++ b/drivers/scsi/qla2xxx/qla_os.c
49271@@ -1568,8 +1568,10 @@ qla2x00_config_dma_addressing(struct qla_hw_data *ha) 49913@@ -1491,8 +1491,10 @@ qla2x00_config_dma_addressing(struct qla_hw_data *ha)
49272 !pci_set_consistent_dma_mask(ha->pdev, DMA_BIT_MASK(64))) { 49914 !pci_set_consistent_dma_mask(ha->pdev, DMA_BIT_MASK(64))) {
49273 /* Ok, a 64bit DMA mask is applicable. */ 49915 /* Ok, a 64bit DMA mask is applicable. */
49274 ha->flags.enable_64bit_addressing = 1; 49916 ha->flags.enable_64bit_addressing = 1;
@@ -49282,10 +49924,10 @@ index 52be35e..b933907 100644
49282 } 49924 }
49283 } 49925 }
49284diff --git a/drivers/scsi/qla4xxx/ql4_def.h b/drivers/scsi/qla4xxx/ql4_def.h 49926diff --git a/drivers/scsi/qla4xxx/ql4_def.h b/drivers/scsi/qla4xxx/ql4_def.h
49285index 084d1fd..9f939eb 100644 49927index aa67bb9..06d0e2a 100644
49286--- a/drivers/scsi/qla4xxx/ql4_def.h 49928--- a/drivers/scsi/qla4xxx/ql4_def.h
49287+++ b/drivers/scsi/qla4xxx/ql4_def.h 49929+++ b/drivers/scsi/qla4xxx/ql4_def.h
49288@@ -296,7 +296,7 @@ struct ddb_entry { 49930@@ -303,7 +303,7 @@ struct ddb_entry {
49289 * (4000 only) */ 49931 * (4000 only) */
49290 atomic_t relogin_timer; /* Max Time to wait for 49932 atomic_t relogin_timer; /* Max Time to wait for
49291 * relogin to complete */ 49933 * relogin to complete */
@@ -49295,10 +49937,10 @@ index 084d1fd..9f939eb 100644
49295 uint32_t default_time2wait; /* Default Min time between 49937 uint32_t default_time2wait; /* Default Min time between
49296 * relogins (+aens) */ 49938 * relogins (+aens) */
49297diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c 49939diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c
49298index cf174a4..128a420 100644 49940index c21adc3..1b4155f 100644
49299--- a/drivers/scsi/qla4xxx/ql4_os.c 49941--- a/drivers/scsi/qla4xxx/ql4_os.c
49300+++ b/drivers/scsi/qla4xxx/ql4_os.c 49942+++ b/drivers/scsi/qla4xxx/ql4_os.c
49301@@ -3311,12 +3311,12 @@ static void qla4xxx_check_relogin_flash_ddb(struct iscsi_cls_session *cls_sess) 49943@@ -4463,12 +4463,12 @@ static void qla4xxx_check_relogin_flash_ddb(struct iscsi_cls_session *cls_sess)
49302 */ 49944 */
49303 if (!iscsi_is_session_online(cls_sess)) { 49945 if (!iscsi_is_session_online(cls_sess)) {
49304 /* Reset retry relogin timer */ 49946 /* Reset retry relogin timer */
@@ -49313,7 +49955,7 @@ index cf174a4..128a420 100644
49313 ddb_entry->default_time2wait + 4)); 49955 ddb_entry->default_time2wait + 4));
49314 set_bit(DPC_RELOGIN_DEVICE, &ha->dpc_flags); 49956 set_bit(DPC_RELOGIN_DEVICE, &ha->dpc_flags);
49315 atomic_set(&ddb_entry->retry_relogin_timer, 49957 atomic_set(&ddb_entry->retry_relogin_timer,
49316@@ -5458,7 +5458,7 @@ static void qla4xxx_setup_flash_ddb_entry(struct scsi_qla_host *ha, 49958@@ -6552,7 +6552,7 @@ static void qla4xxx_setup_flash_ddb_entry(struct scsi_qla_host *ha,
49317 49959
49318 atomic_set(&ddb_entry->retry_relogin_timer, INVALID_ENTRY); 49960 atomic_set(&ddb_entry->retry_relogin_timer, INVALID_ENTRY);
49319 atomic_set(&ddb_entry->relogin_timer, 0); 49961 atomic_set(&ddb_entry->relogin_timer, 0);
@@ -49323,10 +49965,10 @@ index cf174a4..128a420 100644
49323 ddb_entry->default_relogin_timeout = 49965 ddb_entry->default_relogin_timeout =
49324 (def_timeout > LOGIN_TOV) && (def_timeout < LOGIN_TOV * 10) ? 49966 (def_timeout > LOGIN_TOV) && (def_timeout < LOGIN_TOV * 10) ?
49325diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c 49967diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
49326index fe0bcb1..c9255be 100644 49968index d8afec8..3ec7152 100644
49327--- a/drivers/scsi/scsi.c 49969--- a/drivers/scsi/scsi.c
49328+++ b/drivers/scsi/scsi.c 49970+++ b/drivers/scsi/scsi.c
49329@@ -655,7 +655,7 @@ int scsi_dispatch_cmd(struct scsi_cmnd *cmd) 49971@@ -658,7 +658,7 @@ int scsi_dispatch_cmd(struct scsi_cmnd *cmd)
49330 struct Scsi_Host *host = cmd->device->host; 49972 struct Scsi_Host *host = cmd->device->host;
49331 int rtn = 0; 49973 int rtn = 0;
49332 49974
@@ -49336,7 +49978,7 @@ index fe0bcb1..c9255be 100644
49336 /* check if the device is still usable */ 49978 /* check if the device is still usable */
49337 if (unlikely(cmd->device->sdev_state == SDEV_DEL)) { 49979 if (unlikely(cmd->device->sdev_state == SDEV_DEL)) {
49338diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c 49980diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
49339index 7bd7f0d..93159d8 100644 49981index 62ec84b..93159d8 100644
49340--- a/drivers/scsi/scsi_lib.c 49982--- a/drivers/scsi/scsi_lib.c
49341+++ b/drivers/scsi/scsi_lib.c 49983+++ b/drivers/scsi/scsi_lib.c
49342@@ -1474,7 +1474,7 @@ static void scsi_kill_request(struct request *req, struct request_queue *q) 49984@@ -1474,7 +1474,7 @@ static void scsi_kill_request(struct request *req, struct request_queue *q)
@@ -49360,20 +50002,11 @@ index 7bd7f0d..93159d8 100644
49360 50002
49361 disposition = scsi_decide_disposition(cmd); 50003 disposition = scsi_decide_disposition(cmd);
49362 if (disposition != SUCCESS && 50004 if (disposition != SUCCESS &&
49363@@ -1684,7 +1684,7 @@ u64 scsi_calculate_bounce_limit(struct Scsi_Host *shost)
49364
49365 host_dev = scsi_get_device(shost);
49366 if (host_dev && host_dev->dma_mask)
49367- bounce_limit = dma_max_pfn(host_dev) << PAGE_SHIFT;
49368+ bounce_limit = (u64)dma_max_pfn(host_dev) << PAGE_SHIFT;
49369
49370 return bounce_limit;
49371 }
49372diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c 50005diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c
49373index 8ff62c2..693b6f7 100644 50006index 665acbf..d18fab4 100644
49374--- a/drivers/scsi/scsi_sysfs.c 50007--- a/drivers/scsi/scsi_sysfs.c
49375+++ b/drivers/scsi/scsi_sysfs.c 50008+++ b/drivers/scsi/scsi_sysfs.c
49376@@ -725,7 +725,7 @@ show_iostat_##field(struct device *dev, struct device_attribute *attr, \ 50009@@ -734,7 +734,7 @@ show_iostat_##field(struct device *dev, struct device_attribute *attr, \
49377 char *buf) \ 50010 char *buf) \
49378 { \ 50011 { \
49379 struct scsi_device *sdev = to_scsi_device(dev); \ 50012 struct scsi_device *sdev = to_scsi_device(dev); \
@@ -49436,7 +50069,7 @@ index 4628fd5..a94a1c2 100644
49436 /* 50069 /*
49437 * Check for overflow; dev_loss_tmo is u32 50070 * Check for overflow; dev_loss_tmo is u32
49438diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c 50071diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c
49439index 63a6ca4..5d5cadd 100644 50072index fd8ffe6..fd0bebf 100644
49440--- a/drivers/scsi/scsi_transport_iscsi.c 50073--- a/drivers/scsi/scsi_transport_iscsi.c
49441+++ b/drivers/scsi/scsi_transport_iscsi.c 50074+++ b/drivers/scsi/scsi_transport_iscsi.c
49442@@ -79,7 +79,7 @@ struct iscsi_internal { 50075@@ -79,7 +79,7 @@ struct iscsi_internal {
@@ -49448,7 +50081,7 @@ index 63a6ca4..5d5cadd 100644
49448 static struct workqueue_struct *iscsi_eh_timer_workq; 50081 static struct workqueue_struct *iscsi_eh_timer_workq;
49449 50082
49450 static DEFINE_IDA(iscsi_sess_ida); 50083 static DEFINE_IDA(iscsi_sess_ida);
49451@@ -1737,7 +1737,7 @@ int iscsi_add_session(struct iscsi_cls_session *session, unsigned int target_id) 50084@@ -2071,7 +2071,7 @@ int iscsi_add_session(struct iscsi_cls_session *session, unsigned int target_id)
49452 int err; 50085 int err;
49453 50086
49454 ihost = shost->shost_data; 50087 ihost = shost->shost_data;
@@ -49457,7 +50090,7 @@ index 63a6ca4..5d5cadd 100644
49457 50090
49458 if (target_id == ISCSI_MAX_TARGET) { 50091 if (target_id == ISCSI_MAX_TARGET) {
49459 id = ida_simple_get(&iscsi_sess_ida, 0, 0, GFP_KERNEL); 50092 id = ida_simple_get(&iscsi_sess_ida, 0, 0, GFP_KERNEL);
49460@@ -4103,7 +4103,7 @@ static __init int iscsi_transport_init(void) 50093@@ -4511,7 +4511,7 @@ static __init int iscsi_transport_init(void)
49461 printk(KERN_INFO "Loading iSCSI transport class v%s.\n", 50094 printk(KERN_INFO "Loading iSCSI transport class v%s.\n",
49462 ISCSI_TRANSPORT_VERSION); 50095 ISCSI_TRANSPORT_VERSION);
49463 50096
@@ -49467,7 +50100,7 @@ index 63a6ca4..5d5cadd 100644
49467 err = class_register(&iscsi_transport_class); 50100 err = class_register(&iscsi_transport_class);
49468 if (err) 50101 if (err)
49469diff --git a/drivers/scsi/scsi_transport_srp.c b/drivers/scsi/scsi_transport_srp.c 50102diff --git a/drivers/scsi/scsi_transport_srp.c b/drivers/scsi/scsi_transport_srp.c
49470index 2700a5a..752ec38 100644 50103index d47ffc8..30f46a9 100644
49471--- a/drivers/scsi/scsi_transport_srp.c 50104--- a/drivers/scsi/scsi_transport_srp.c
49472+++ b/drivers/scsi/scsi_transport_srp.c 50105+++ b/drivers/scsi/scsi_transport_srp.c
49473@@ -36,7 +36,7 @@ 50106@@ -36,7 +36,7 @@
@@ -49479,7 +50112,7 @@ index 2700a5a..752ec38 100644
49479 }; 50112 };
49480 #define to_srp_host_attrs(host) ((struct srp_host_attrs *)(host)->shost_data) 50113 #define to_srp_host_attrs(host) ((struct srp_host_attrs *)(host)->shost_data)
49481 50114
49482@@ -94,7 +94,7 @@ static int srp_host_setup(struct transport_container *tc, struct device *dev, 50115@@ -101,7 +101,7 @@ static int srp_host_setup(struct transport_container *tc, struct device *dev,
49483 struct Scsi_Host *shost = dev_to_shost(dev); 50116 struct Scsi_Host *shost = dev_to_shost(dev);
49484 struct srp_host_attrs *srp_host = to_srp_host_attrs(shost); 50117 struct srp_host_attrs *srp_host = to_srp_host_attrs(shost);
49485 50118
@@ -49488,7 +50121,7 @@ index 2700a5a..752ec38 100644
49488 return 0; 50121 return 0;
49489 } 50122 }
49490 50123
49491@@ -730,7 +730,7 @@ struct srp_rport *srp_rport_add(struct Scsi_Host *shost, 50124@@ -734,7 +734,7 @@ struct srp_rport *srp_rport_add(struct Scsi_Host *shost,
49492 rport_fast_io_fail_timedout); 50125 rport_fast_io_fail_timedout);
49493 INIT_DELAYED_WORK(&rport->dev_loss_work, rport_dev_loss_timedout); 50126 INIT_DELAYED_WORK(&rport->dev_loss_work, rport_dev_loss_timedout);
49494 50127
@@ -49498,10 +50131,10 @@ index 2700a5a..752ec38 100644
49498 50131
49499 transport_setup_device(&rport->dev); 50132 transport_setup_device(&rport->dev);
49500diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c 50133diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
49501index 69725f7..03aaee1 100644 50134index 36d1a23..3f33303 100644
49502--- a/drivers/scsi/sd.c 50135--- a/drivers/scsi/sd.c
49503+++ b/drivers/scsi/sd.c 50136+++ b/drivers/scsi/sd.c
49504@@ -2964,7 +2964,7 @@ static int sd_probe(struct device *dev) 50137@@ -2962,7 +2962,7 @@ static int sd_probe(struct device *dev)
49505 sdkp->disk = gd; 50138 sdkp->disk = gd;
49506 sdkp->index = index; 50139 sdkp->index = index;
49507 atomic_set(&sdkp->openers, 0); 50140 atomic_set(&sdkp->openers, 0);
@@ -49524,10 +50157,10 @@ index df5e961..df6b97f 100644
49524 return blk_trace_startstop(sdp->device->request_queue, 1); 50157 return blk_trace_startstop(sdp->device->request_queue, 1);
49525 case BLKTRACESTOP: 50158 case BLKTRACESTOP:
49526diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c 50159diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
49527index 349ebba..ff2a249 100644 50160index d0b28bb..a263613 100644
49528--- a/drivers/spi/spi.c 50161--- a/drivers/spi/spi.c
49529+++ b/drivers/spi/spi.c 50162+++ b/drivers/spi/spi.c
49530@@ -1945,7 +1945,7 @@ int spi_bus_unlock(struct spi_master *master) 50163@@ -1971,7 +1971,7 @@ int spi_bus_unlock(struct spi_master *master)
49531 EXPORT_SYMBOL_GPL(spi_bus_unlock); 50164 EXPORT_SYMBOL_GPL(spi_bus_unlock);
49532 50165
49533 /* portable code must never pass more than 32 bytes */ 50166 /* portable code must never pass more than 32 bytes */
@@ -49568,10 +50201,10 @@ index 2c61783..4d49e4e 100644
49568 MKDEV(0, tdev->index), NULL, "%s", tdev->name); 50201 MKDEV(0, tdev->index), NULL, "%s", tdev->name);
49569 if (IS_ERR(tdev->dev)) 50202 if (IS_ERR(tdev->dev))
49570diff --git a/drivers/staging/gdm724x/gdm_tty.c b/drivers/staging/gdm724x/gdm_tty.c 50203diff --git a/drivers/staging/gdm724x/gdm_tty.c b/drivers/staging/gdm724x/gdm_tty.c
49571index c0f7cd7..5424212 100644 50204index fe47cd3..19a1bd1 100644
49572--- a/drivers/staging/gdm724x/gdm_tty.c 50205--- a/drivers/staging/gdm724x/gdm_tty.c
49573+++ b/drivers/staging/gdm724x/gdm_tty.c 50206+++ b/drivers/staging/gdm724x/gdm_tty.c
49574@@ -45,7 +45,7 @@ 50207@@ -44,7 +44,7 @@
49575 #define gdm_tty_send_control(n, r, v, d, l) (\ 50208 #define gdm_tty_send_control(n, r, v, d, l) (\
49576 n->tty_dev->send_control(n->tty_dev->priv_dev, r, v, d, l)) 50209 n->tty_dev->send_control(n->tty_dev->priv_dev, r, v, d, l))
49577 50210
@@ -49581,10 +50214,10 @@ index c0f7cd7..5424212 100644
49581 static struct tty_driver *gdm_driver[TTY_MAX_COUNT]; 50214 static struct tty_driver *gdm_driver[TTY_MAX_COUNT];
49582 static struct gdm *gdm_table[TTY_MAX_COUNT][GDM_TTY_MINOR]; 50215 static struct gdm *gdm_table[TTY_MAX_COUNT][GDM_TTY_MINOR];
49583diff --git a/drivers/staging/imx-drm/imx-drm-core.c b/drivers/staging/imx-drm/imx-drm-core.c 50216diff --git a/drivers/staging/imx-drm/imx-drm-core.c b/drivers/staging/imx-drm/imx-drm-core.c
49584index 96e4eee..6d7c37e 100644 50217index 236ed66..dd9cd74 100644
49585--- a/drivers/staging/imx-drm/imx-drm-core.c 50218--- a/drivers/staging/imx-drm/imx-drm-core.c
49586+++ b/drivers/staging/imx-drm/imx-drm-core.c 50219+++ b/drivers/staging/imx-drm/imx-drm-core.c
49587@@ -510,7 +510,7 @@ int imx_drm_add_crtc(struct drm_crtc *crtc, 50220@@ -488,7 +488,7 @@ int imx_drm_add_crtc(struct drm_crtc *crtc,
49588 goto err_busy; 50221 goto err_busy;
49589 } 50222 }
49590 50223
@@ -49593,7 +50226,7 @@ index 96e4eee..6d7c37e 100644
49593 ret = -EBUSY; 50226 ret = -EBUSY;
49594 goto err_busy; 50227 goto err_busy;
49595 } 50228 }
49596@@ -590,7 +590,7 @@ int imx_drm_add_encoder(struct drm_encoder *encoder, 50229@@ -576,7 +576,7 @@ int imx_drm_add_encoder(struct drm_encoder *encoder,
49597 50230
49598 mutex_lock(&imxdrm->mutex); 50231 mutex_lock(&imxdrm->mutex);
49599 50232
@@ -49602,7 +50235,7 @@ index 96e4eee..6d7c37e 100644
49602 ret = -EBUSY; 50235 ret = -EBUSY;
49603 goto err_busy; 50236 goto err_busy;
49604 } 50237 }
49605@@ -729,7 +729,7 @@ int imx_drm_add_connector(struct drm_connector *connector, 50238@@ -715,7 +715,7 @@ int imx_drm_add_connector(struct drm_connector *connector,
49606 50239
49607 mutex_lock(&imxdrm->mutex); 50240 mutex_lock(&imxdrm->mutex);
49608 50241
@@ -49612,10 +50245,10 @@ index 96e4eee..6d7c37e 100644
49612 goto err_busy; 50245 goto err_busy;
49613 } 50246 }
49614diff --git a/drivers/staging/lustre/lnet/selftest/brw_test.c b/drivers/staging/lustre/lnet/selftest/brw_test.c 50247diff --git a/drivers/staging/lustre/lnet/selftest/brw_test.c b/drivers/staging/lustre/lnet/selftest/brw_test.c
49615index b7613c8..c302392 100644 50248index 3f8020c..649fded 100644
49616--- a/drivers/staging/lustre/lnet/selftest/brw_test.c 50249--- a/drivers/staging/lustre/lnet/selftest/brw_test.c
49617+++ b/drivers/staging/lustre/lnet/selftest/brw_test.c 50250+++ b/drivers/staging/lustre/lnet/selftest/brw_test.c
49618@@ -487,13 +487,11 @@ brw_server_handle(struct srpc_server_rpc *rpc) 50251@@ -488,13 +488,11 @@ brw_server_handle(struct srpc_server_rpc *rpc)
49619 return 0; 50252 return 0;
49620 } 50253 }
49621 50254
@@ -49635,7 +50268,7 @@ index b7613c8..c302392 100644
49635 50268
49636 srpc_service_t brw_test_service; 50269 srpc_service_t brw_test_service;
49637diff --git a/drivers/staging/lustre/lnet/selftest/framework.c b/drivers/staging/lustre/lnet/selftest/framework.c 50270diff --git a/drivers/staging/lustre/lnet/selftest/framework.c b/drivers/staging/lustre/lnet/selftest/framework.c
49638index 483c785..e1a2a7b 100644 50271index 050723a..fa6fdf1 100644
49639--- a/drivers/staging/lustre/lnet/selftest/framework.c 50272--- a/drivers/staging/lustre/lnet/selftest/framework.c
49640+++ b/drivers/staging/lustre/lnet/selftest/framework.c 50273+++ b/drivers/staging/lustre/lnet/selftest/framework.c
49641@@ -1635,12 +1635,10 @@ static srpc_service_t sfw_services[] = 50274@@ -1635,12 +1635,10 @@ static srpc_service_t sfw_services[] =
@@ -49665,10 +50298,10 @@ index 483c785..e1a2a7b 100644
49665 rc = sfw_register_test(&ping_test_service, &ping_test_client); 50298 rc = sfw_register_test(&ping_test_service, &ping_test_client);
49666 LASSERT (rc == 0); 50299 LASSERT (rc == 0);
49667diff --git a/drivers/staging/lustre/lnet/selftest/ping_test.c b/drivers/staging/lustre/lnet/selftest/ping_test.c 50300diff --git a/drivers/staging/lustre/lnet/selftest/ping_test.c b/drivers/staging/lustre/lnet/selftest/ping_test.c
49668index f0f9194..b589047 100644 50301index 750cac4..e4d751f 100644
49669--- a/drivers/staging/lustre/lnet/selftest/ping_test.c 50302--- a/drivers/staging/lustre/lnet/selftest/ping_test.c
49670+++ b/drivers/staging/lustre/lnet/selftest/ping_test.c 50303+++ b/drivers/staging/lustre/lnet/selftest/ping_test.c
49671@@ -210,14 +210,12 @@ ping_server_handle(struct srpc_server_rpc *rpc) 50304@@ -211,14 +211,12 @@ ping_server_handle(struct srpc_server_rpc *rpc)
49672 return 0; 50305 return 0;
49673 } 50306 }
49674 50307
@@ -49690,7 +50323,7 @@ index f0f9194..b589047 100644
49690 srpc_service_t ping_test_service; 50323 srpc_service_t ping_test_service;
49691 void ping_init_test_service(void) 50324 void ping_init_test_service(void)
49692diff --git a/drivers/staging/lustre/lustre/include/lustre_dlm.h b/drivers/staging/lustre/lustre/include/lustre_dlm.h 50325diff --git a/drivers/staging/lustre/lustre/include/lustre_dlm.h b/drivers/staging/lustre/lustre/include/lustre_dlm.h
49693index bc2b82f..67fd598 100644 50326index ec4bb5e..740c6dd 100644
49694--- a/drivers/staging/lustre/lustre/include/lustre_dlm.h 50327--- a/drivers/staging/lustre/lustre/include/lustre_dlm.h
49695+++ b/drivers/staging/lustre/lustre/include/lustre_dlm.h 50328+++ b/drivers/staging/lustre/lustre/include/lustre_dlm.h
49696@@ -1141,7 +1141,7 @@ struct ldlm_callback_suite { 50329@@ -1141,7 +1141,7 @@ struct ldlm_callback_suite {
@@ -49703,10 +50336,10 @@ index bc2b82f..67fd598 100644
49703 /* ldlm_lockd.c */ 50336 /* ldlm_lockd.c */
49704 int ldlm_del_waiting_lock(struct ldlm_lock *lock); 50337 int ldlm_del_waiting_lock(struct ldlm_lock *lock);
49705diff --git a/drivers/staging/lustre/lustre/include/obd.h b/drivers/staging/lustre/lustre/include/obd.h 50338diff --git a/drivers/staging/lustre/lustre/include/obd.h b/drivers/staging/lustre/lustre/include/obd.h
49706index d0aea15..7af68e1 100644 50339index c3470ce..2bef527 100644
49707--- a/drivers/staging/lustre/lustre/include/obd.h 50340--- a/drivers/staging/lustre/lustre/include/obd.h
49708+++ b/drivers/staging/lustre/lustre/include/obd.h 50341+++ b/drivers/staging/lustre/lustre/include/obd.h
49709@@ -1417,7 +1417,7 @@ struct md_ops { 50342@@ -1426,7 +1426,7 @@ struct md_ops {
49710 * lprocfs_alloc_md_stats() in obdclass/lprocfs_status.c. Also, add a 50343 * lprocfs_alloc_md_stats() in obdclass/lprocfs_status.c. Also, add a
49711 * wrapper function in include/linux/obd_class.h. 50344 * wrapper function in include/linux/obd_class.h.
49712 */ 50345 */
@@ -49716,23 +50349,23 @@ index d0aea15..7af68e1 100644
49716 struct lsm_operations { 50349 struct lsm_operations {
49717 void (*lsm_free)(struct lov_stripe_md *); 50350 void (*lsm_free)(struct lov_stripe_md *);
49718diff --git a/drivers/staging/lustre/lustre/ldlm/ldlm_flock.c b/drivers/staging/lustre/lustre/ldlm/ldlm_flock.c 50351diff --git a/drivers/staging/lustre/lustre/ldlm/ldlm_flock.c b/drivers/staging/lustre/lustre/ldlm/ldlm_flock.c
49719index 39fcdac..222780f 100644 50352index c9aae13..60ea292 100644
49720--- a/drivers/staging/lustre/lustre/ldlm/ldlm_flock.c 50353--- a/drivers/staging/lustre/lustre/ldlm/ldlm_flock.c
49721+++ b/drivers/staging/lustre/lustre/ldlm/ldlm_flock.c 50354+++ b/drivers/staging/lustre/lustre/ldlm/ldlm_flock.c
49722@@ -249,7 +249,7 @@ ldlm_process_flock_lock(struct ldlm_lock *req, __u64 *flags, int first_enq, 50355@@ -239,7 +239,7 @@ ldlm_process_flock_lock(struct ldlm_lock *req, __u64 *flags, int first_enq,
49723 int added = (mode == LCK_NL); 50356 int added = (mode == LCK_NL);
49724 int overlaps = 0; 50357 int overlaps = 0;
49725 int splitted = 0; 50358 int splitted = 0;
49726- const struct ldlm_callback_suite null_cbs = { NULL }; 50359- const struct ldlm_callback_suite null_cbs = { NULL };
49727+ const struct ldlm_callback_suite null_cbs = { }; 50360+ const struct ldlm_callback_suite null_cbs = { };
49728 int rc;
49729 50361
49730 CDEBUG(D_DLMTRACE, "flags %#llx owner "LPU64" pid %u mode %u start " 50362 CDEBUG(D_DLMTRACE, "flags %#llx owner "LPU64" pid %u mode %u start "
50363 LPU64" end "LPU64"\n", *flags,
49731diff --git a/drivers/staging/lustre/lustre/libcfs/linux/linux-proc.c b/drivers/staging/lustre/lustre/libcfs/linux/linux-proc.c 50364diff --git a/drivers/staging/lustre/lustre/libcfs/linux/linux-proc.c b/drivers/staging/lustre/lustre/libcfs/linux/linux-proc.c
49732index fc6c977..df1f956 100644 50365index e947b91..f408990 100644
49733--- a/drivers/staging/lustre/lustre/libcfs/linux/linux-proc.c 50366--- a/drivers/staging/lustre/lustre/libcfs/linux/linux-proc.c
49734+++ b/drivers/staging/lustre/lustre/libcfs/linux/linux-proc.c 50367+++ b/drivers/staging/lustre/lustre/libcfs/linux/linux-proc.c
49735@@ -219,7 +219,7 @@ DECLARE_PROC_HANDLER(proc_debug_mb) 50368@@ -217,7 +217,7 @@ DECLARE_PROC_HANDLER(proc_debug_mb)
49736 int LL_PROC_PROTO(proc_console_max_delay_cs) 50369 int LL_PROC_PROTO(proc_console_max_delay_cs)
49737 { 50370 {
49738 int rc, max_delay_cs; 50371 int rc, max_delay_cs;
@@ -49741,7 +50374,7 @@ index fc6c977..df1f956 100644
49741 cfs_duration_t d; 50374 cfs_duration_t d;
49742 50375
49743 dummy.data = &max_delay_cs; 50376 dummy.data = &max_delay_cs;
49744@@ -250,7 +250,7 @@ int LL_PROC_PROTO(proc_console_max_delay_cs) 50377@@ -248,7 +248,7 @@ int LL_PROC_PROTO(proc_console_max_delay_cs)
49745 int LL_PROC_PROTO(proc_console_min_delay_cs) 50378 int LL_PROC_PROTO(proc_console_min_delay_cs)
49746 { 50379 {
49747 int rc, min_delay_cs; 50380 int rc, min_delay_cs;
@@ -49750,7 +50383,7 @@ index fc6c977..df1f956 100644
49750 cfs_duration_t d; 50383 cfs_duration_t d;
49751 50384
49752 dummy.data = &min_delay_cs; 50385 dummy.data = &min_delay_cs;
49753@@ -281,7 +281,7 @@ int LL_PROC_PROTO(proc_console_min_delay_cs) 50386@@ -279,7 +279,7 @@ int LL_PROC_PROTO(proc_console_min_delay_cs)
49754 int LL_PROC_PROTO(proc_console_backoff) 50387 int LL_PROC_PROTO(proc_console_backoff)
49755 { 50388 {
49756 int rc, backoff; 50389 int rc, backoff;
@@ -49760,10 +50393,10 @@ index fc6c977..df1f956 100644
49760 dummy.data = &backoff; 50393 dummy.data = &backoff;
49761 dummy.proc_handler = &proc_dointvec; 50394 dummy.proc_handler = &proc_dointvec;
49762diff --git a/drivers/staging/lustre/lustre/libcfs/module.c b/drivers/staging/lustre/lustre/libcfs/module.c 50395diff --git a/drivers/staging/lustre/lustre/libcfs/module.c b/drivers/staging/lustre/lustre/libcfs/module.c
49763index f3108c7..cd4f9da 100644 50396index 24ae26d..9d09cab 100644
49764--- a/drivers/staging/lustre/lustre/libcfs/module.c 50397--- a/drivers/staging/lustre/lustre/libcfs/module.c
49765+++ b/drivers/staging/lustre/lustre/libcfs/module.c 50398+++ b/drivers/staging/lustre/lustre/libcfs/module.c
49766@@ -348,11 +348,11 @@ out: 50399@@ -313,11 +313,11 @@ out:
49767 50400
49768 50401
49769 struct cfs_psdev_ops libcfs_psdev_ops = { 50402 struct cfs_psdev_ops libcfs_psdev_ops = {
@@ -49781,7 +50414,7 @@ index f3108c7..cd4f9da 100644
49781 50414
49782 extern int insert_proc(void); 50415 extern int insert_proc(void);
49783diff --git a/drivers/staging/lustre/lustre/llite/dir.c b/drivers/staging/lustre/lustre/llite/dir.c 50416diff --git a/drivers/staging/lustre/lustre/llite/dir.c b/drivers/staging/lustre/lustre/llite/dir.c
49784index a4e0472..05d854c 100644 50417index 52b7731..d604da0 100644
49785--- a/drivers/staging/lustre/lustre/llite/dir.c 50418--- a/drivers/staging/lustre/lustre/llite/dir.c
49786+++ b/drivers/staging/lustre/lustre/llite/dir.c 50419+++ b/drivers/staging/lustre/lustre/llite/dir.c
49787@@ -660,7 +660,7 @@ int ll_dir_setdirstripe(struct inode *dir, struct lmv_user_md *lump, 50420@@ -660,7 +660,7 @@ int ll_dir_setdirstripe(struct inode *dir, struct lmv_user_md *lump,
@@ -49794,7 +50427,7 @@ index a4e0472..05d854c 100644
49794 strlen(filename), mode, LUSTRE_OPC_MKDIR, 50427 strlen(filename), mode, LUSTRE_OPC_MKDIR,
49795 lump); 50428 lump);
49796diff --git a/drivers/staging/media/solo6x10/solo6x10-core.c b/drivers/staging/media/solo6x10/solo6x10-core.c 50429diff --git a/drivers/staging/media/solo6x10/solo6x10-core.c b/drivers/staging/media/solo6x10/solo6x10-core.c
49797index 3675020..e80d92c 100644 50430index 480b7c4..6846324 100644
49798--- a/drivers/staging/media/solo6x10/solo6x10-core.c 50431--- a/drivers/staging/media/solo6x10/solo6x10-core.c
49799+++ b/drivers/staging/media/solo6x10/solo6x10-core.c 50432+++ b/drivers/staging/media/solo6x10/solo6x10-core.c
49800@@ -434,7 +434,7 @@ static void solo_device_release(struct device *dev) 50433@@ -434,7 +434,7 @@ static void solo_device_release(struct device *dev)
@@ -49833,7 +50466,7 @@ index 7f2f247..d999137 100644
49833 p2m_id = -p2m_id; 50466 p2m_id = -p2m_id;
49834 } 50467 }
49835diff --git a/drivers/staging/media/solo6x10/solo6x10.h b/drivers/staging/media/solo6x10/solo6x10.h 50468diff --git a/drivers/staging/media/solo6x10/solo6x10.h b/drivers/staging/media/solo6x10/solo6x10.h
49836index f1bbb8c..a73eaba 100644 50469index 8964f8b..36eb087 100644
49837--- a/drivers/staging/media/solo6x10/solo6x10.h 50470--- a/drivers/staging/media/solo6x10/solo6x10.h
49838+++ b/drivers/staging/media/solo6x10/solo6x10.h 50471+++ b/drivers/staging/media/solo6x10/solo6x10.h
49839@@ -237,7 +237,7 @@ struct solo_dev { 50472@@ -237,7 +237,7 @@ struct solo_dev {
@@ -49846,10 +50479,10 @@ index f1bbb8c..a73eaba 100644
49846 unsigned int p2m_timeouts; 50479 unsigned int p2m_timeouts;
49847 50480
49848diff --git a/drivers/staging/octeon/ethernet-rx.c b/drivers/staging/octeon/ethernet-rx.c 50481diff --git a/drivers/staging/octeon/ethernet-rx.c b/drivers/staging/octeon/ethernet-rx.c
49849index 0315f60..ce93f406 100644 50482index a0f4868..139f1fb 100644
49850--- a/drivers/staging/octeon/ethernet-rx.c 50483--- a/drivers/staging/octeon/ethernet-rx.c
49851+++ b/drivers/staging/octeon/ethernet-rx.c 50484+++ b/drivers/staging/octeon/ethernet-rx.c
49852@@ -418,11 +418,11 @@ static int cvm_oct_napi_poll(struct napi_struct *napi, int budget) 50485@@ -417,11 +417,11 @@ static int cvm_oct_napi_poll(struct napi_struct *napi, int budget)
49853 /* Increment RX stats for virtual ports */ 50486 /* Increment RX stats for virtual ports */
49854 if (work->ipprt >= CVMX_PIP_NUM_INPUT_PORTS) { 50487 if (work->ipprt >= CVMX_PIP_NUM_INPUT_PORTS) {
49855 #ifdef CONFIG_64BIT 50488 #ifdef CONFIG_64BIT
@@ -49865,7 +50498,7 @@ index 0315f60..ce93f406 100644
49865 #endif 50498 #endif
49866 } 50499 }
49867 netif_receive_skb(skb); 50500 netif_receive_skb(skb);
49868@@ -433,9 +433,9 @@ static int cvm_oct_napi_poll(struct napi_struct *napi, int budget) 50501@@ -432,9 +432,9 @@ static int cvm_oct_napi_poll(struct napi_struct *napi, int budget)
49869 dev->name); 50502 dev->name);
49870 */ 50503 */
49871 #ifdef CONFIG_64BIT 50504 #ifdef CONFIG_64BIT
@@ -49878,10 +50511,10 @@ index 0315f60..ce93f406 100644
49878 dev_kfree_skb_irq(skb); 50511 dev_kfree_skb_irq(skb);
49879 } 50512 }
49880diff --git a/drivers/staging/octeon/ethernet.c b/drivers/staging/octeon/ethernet.c 50513diff --git a/drivers/staging/octeon/ethernet.c b/drivers/staging/octeon/ethernet.c
49881index bd6ca71..8f0961e 100644 50514index 089dc4b..c9a687e 100644
49882--- a/drivers/staging/octeon/ethernet.c 50515--- a/drivers/staging/octeon/ethernet.c
49883+++ b/drivers/staging/octeon/ethernet.c 50516+++ b/drivers/staging/octeon/ethernet.c
49884@@ -254,11 +254,11 @@ static struct net_device_stats *cvm_oct_common_get_stats(struct net_device *dev) 50517@@ -253,11 +253,11 @@ static struct net_device_stats *cvm_oct_common_get_stats(struct net_device *dev)
49885 * since the RX tasklet also increments it. 50518 * since the RX tasklet also increments it.
49886 */ 50519 */
49887 #ifdef CONFIG_64BIT 50520 #ifdef CONFIG_64BIT
@@ -49898,7 +50531,7 @@ index bd6ca71..8f0961e 100644
49898 } 50531 }
49899 50532
49900diff --git a/drivers/staging/rtl8188eu/include/hal_intf.h b/drivers/staging/rtl8188eu/include/hal_intf.h 50533diff --git a/drivers/staging/rtl8188eu/include/hal_intf.h b/drivers/staging/rtl8188eu/include/hal_intf.h
49901index 439c3c9..2d74293 100644 50534index c274b34..f84de76 100644
49902--- a/drivers/staging/rtl8188eu/include/hal_intf.h 50535--- a/drivers/staging/rtl8188eu/include/hal_intf.h
49903+++ b/drivers/staging/rtl8188eu/include/hal_intf.h 50536+++ b/drivers/staging/rtl8188eu/include/hal_intf.h
49904@@ -271,7 +271,7 @@ struct hal_ops { 50537@@ -271,7 +271,7 @@ struct hal_ops {
@@ -49911,11 +50544,11 @@ index 439c3c9..2d74293 100644
49911 enum rt_eeprom_type { 50544 enum rt_eeprom_type {
49912 EEPROM_93C46, 50545 EEPROM_93C46,
49913diff --git a/drivers/staging/rtl8188eu/include/rtw_io.h b/drivers/staging/rtl8188eu/include/rtw_io.h 50546diff --git a/drivers/staging/rtl8188eu/include/rtw_io.h b/drivers/staging/rtl8188eu/include/rtw_io.h
49914index eb6f0e5..e6a0958 100644 50547index 3d1dfcc..ff5620a 100644
49915--- a/drivers/staging/rtl8188eu/include/rtw_io.h 50548--- a/drivers/staging/rtl8188eu/include/rtw_io.h
49916+++ b/drivers/staging/rtl8188eu/include/rtw_io.h 50549+++ b/drivers/staging/rtl8188eu/include/rtw_io.h
49917@@ -126,7 +126,7 @@ struct _io_ops { 50550@@ -126,7 +126,7 @@ struct _io_ops {
49918 u32 (*_write_scsi)(struct intf_hdl *pintfhdl,u32 cnt, u8 *pmem); 50551 u32 (*_write_scsi)(struct intf_hdl *pintfhdl, u32 cnt, u8 *pmem);
49919 void (*_read_port_cancel)(struct intf_hdl *pintfhdl); 50552 void (*_read_port_cancel)(struct intf_hdl *pintfhdl);
49920 void (*_write_port_cancel)(struct intf_hdl *pintfhdl); 50553 void (*_write_port_cancel)(struct intf_hdl *pintfhdl);
49921-}; 50554-};
@@ -49963,10 +50596,10 @@ index a863a98..d272795 100644
49963 /* 50596 /*
49964 * NOTE: 50597 * NOTE:
49965diff --git a/drivers/staging/usbip/vhci_hcd.c b/drivers/staging/usbip/vhci_hcd.c 50598diff --git a/drivers/staging/usbip/vhci_hcd.c b/drivers/staging/usbip/vhci_hcd.c
49966index e810ad5..931336f 100644 50599index 72391ef..7c6717a 100644
49967--- a/drivers/staging/usbip/vhci_hcd.c 50600--- a/drivers/staging/usbip/vhci_hcd.c
49968+++ b/drivers/staging/usbip/vhci_hcd.c 50601+++ b/drivers/staging/usbip/vhci_hcd.c
49969@@ -441,7 +441,7 @@ static void vhci_tx_urb(struct urb *urb) 50602@@ -440,7 +440,7 @@ static void vhci_tx_urb(struct urb *urb)
49970 50603
49971 spin_lock(&vdev->priv_lock); 50604 spin_lock(&vdev->priv_lock);
49972 50605
@@ -49975,7 +50608,7 @@ index e810ad5..931336f 100644
49975 if (priv->seqnum == 0xffff) 50608 if (priv->seqnum == 0xffff)
49976 dev_info(&urb->dev->dev, "seqnum max\n"); 50609 dev_info(&urb->dev->dev, "seqnum max\n");
49977 50610
49978@@ -687,7 +687,7 @@ static int vhci_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status) 50611@@ -686,7 +686,7 @@ static int vhci_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status)
49979 return -ENOMEM; 50612 return -ENOMEM;
49980 } 50613 }
49981 50614
@@ -49984,7 +50617,7 @@ index e810ad5..931336f 100644
49984 if (unlink->seqnum == 0xffff) 50617 if (unlink->seqnum == 0xffff)
49985 pr_info("seqnum max\n"); 50618 pr_info("seqnum max\n");
49986 50619
49987@@ -891,7 +891,7 @@ static int vhci_start(struct usb_hcd *hcd) 50620@@ -890,7 +890,7 @@ static int vhci_start(struct usb_hcd *hcd)
49988 vdev->rhport = rhport; 50621 vdev->rhport = rhport;
49989 } 50622 }
49990 50623
@@ -50007,7 +50640,7 @@ index d07fcb5..358e1e1 100644
50007 return; 50640 return;
50008 } 50641 }
50009diff --git a/drivers/staging/vt6655/hostap.c b/drivers/staging/vt6655/hostap.c 50642diff --git a/drivers/staging/vt6655/hostap.c b/drivers/staging/vt6655/hostap.c
50010index ab8b2ba..99184aa 100644 50643index 6eecd53..29317c6 100644
50011--- a/drivers/staging/vt6655/hostap.c 50644--- a/drivers/staging/vt6655/hostap.c
50012+++ b/drivers/staging/vt6655/hostap.c 50645+++ b/drivers/staging/vt6655/hostap.c
50013@@ -69,14 +69,13 @@ static int msglevel = MSG_LEVEL_INFO; 50646@@ -69,14 +69,13 @@ static int msglevel = MSG_LEVEL_INFO;
@@ -50089,10 +50722,10 @@ index 24884ca..26c8220 100644
50089 login->tgt_agt = sbp_target_agent_register(login); 50722 login->tgt_agt = sbp_target_agent_register(login);
50090 if (IS_ERR(login->tgt_agt)) { 50723 if (IS_ERR(login->tgt_agt)) {
50091diff --git a/drivers/target/target_core_device.c b/drivers/target/target_core_device.c 50724diff --git a/drivers/target/target_core_device.c b/drivers/target/target_core_device.c
50092index d06de84..fd38c9b 100644 50725index 65001e1..2ebfbb9 100644
50093--- a/drivers/target/target_core_device.c 50726--- a/drivers/target/target_core_device.c
50094+++ b/drivers/target/target_core_device.c 50727+++ b/drivers/target/target_core_device.c
50095@@ -1435,7 +1435,7 @@ struct se_device *target_alloc_device(struct se_hba *hba, const char *name) 50728@@ -1520,7 +1520,7 @@ struct se_device *target_alloc_device(struct se_hba *hba, const char *name)
50096 spin_lock_init(&dev->se_tmr_lock); 50729 spin_lock_init(&dev->se_tmr_lock);
50097 spin_lock_init(&dev->qf_cmd_lock); 50730 spin_lock_init(&dev->qf_cmd_lock);
50098 sema_init(&dev->caw_sem, 1); 50731 sema_init(&dev->caw_sem, 1);
@@ -50102,10 +50735,10 @@ index d06de84..fd38c9b 100644
50102 spin_lock_init(&dev->t10_wwn.t10_vpd_lock); 50735 spin_lock_init(&dev->t10_wwn.t10_vpd_lock);
50103 INIT_LIST_HEAD(&dev->t10_pr.registration_list); 50736 INIT_LIST_HEAD(&dev->t10_pr.registration_list);
50104diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c 50737diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c
50105index dee2be1..f5fd8ca 100644 50738index 2956250..b10f722 100644
50106--- a/drivers/target/target_core_transport.c 50739--- a/drivers/target/target_core_transport.c
50107+++ b/drivers/target/target_core_transport.c 50740+++ b/drivers/target/target_core_transport.c
50108@@ -1113,7 +1113,7 @@ transport_check_alloc_task_attr(struct se_cmd *cmd) 50741@@ -1136,7 +1136,7 @@ transport_check_alloc_task_attr(struct se_cmd *cmd)
50109 * Used to determine when ORDERED commands should go from 50742 * Used to determine when ORDERED commands should go from
50110 * Dormant to Active status. 50743 * Dormant to Active status.
50111 */ 50744 */
@@ -50114,8 +50747,46 @@ index dee2be1..f5fd8ca 100644
50114 smp_mb__after_atomic_inc(); 50747 smp_mb__after_atomic_inc();
50115 pr_debug("Allocated se_ordered_id: %u for Task Attr: 0x%02x on %s\n", 50748 pr_debug("Allocated se_ordered_id: %u for Task Attr: 0x%02x on %s\n",
50116 cmd->se_ordered_id, cmd->sam_task_attr, 50749 cmd->se_ordered_id, cmd->sam_task_attr,
50750diff --git a/drivers/thermal/of-thermal.c b/drivers/thermal/of-thermal.c
50751index 04b1be7..5eff86d 100644
50752--- a/drivers/thermal/of-thermal.c
50753+++ b/drivers/thermal/of-thermal.c
50754@@ -30,6 +30,7 @@
50755 #include <linux/err.h>
50756 #include <linux/export.h>
50757 #include <linux/string.h>
50758+#include <linux/mm.h>
50759
50760 #include "thermal_core.h"
50761
50762@@ -341,8 +342,10 @@ thermal_zone_of_add_sensor(struct device_node *zone,
50763 tz->get_trend = get_trend;
50764 tz->sensor_data = data;
50765
50766- tzd->ops->get_temp = of_thermal_get_temp;
50767- tzd->ops->get_trend = of_thermal_get_trend;
50768+ pax_open_kernel();
50769+ *(void **)&tzd->ops->get_temp = of_thermal_get_temp;
50770+ *(void **)&tzd->ops->get_trend = of_thermal_get_trend;
50771+ pax_close_kernel();
50772 mutex_unlock(&tzd->lock);
50773
50774 return tzd;
50775@@ -461,8 +464,10 @@ void thermal_zone_of_sensor_unregister(struct device *dev,
50776 return;
50777
50778 mutex_lock(&tzd->lock);
50779- tzd->ops->get_temp = NULL;
50780- tzd->ops->get_trend = NULL;
50781+ pax_open_kernel();
50782+ *(void **)&tzd->ops->get_temp = NULL;
50783+ *(void **)&tzd->ops->get_trend = NULL;
50784+ pax_close_kernel();
50785
50786 tz->get_temp = NULL;
50787 tz->get_trend = NULL;
50117diff --git a/drivers/tty/cyclades.c b/drivers/tty/cyclades.c 50788diff --git a/drivers/tty/cyclades.c b/drivers/tty/cyclades.c
50118index 33f83fe..d80f8e1 100644 50789index a57bb5a..1f727d33 100644
50119--- a/drivers/tty/cyclades.c 50790--- a/drivers/tty/cyclades.c
50120+++ b/drivers/tty/cyclades.c 50791+++ b/drivers/tty/cyclades.c
50121@@ -1570,10 +1570,10 @@ static int cy_open(struct tty_struct *tty, struct file *filp) 50792@@ -1570,10 +1570,10 @@ static int cy_open(struct tty_struct *tty, struct file *filp)
@@ -50131,7 +50802,7 @@ index 33f83fe..d80f8e1 100644
50131 #endif 50802 #endif
50132 50803
50133 /* 50804 /*
50134@@ -3972,7 +3972,7 @@ static int cyclades_proc_show(struct seq_file *m, void *v) 50805@@ -3974,7 +3974,7 @@ static int cyclades_proc_show(struct seq_file *m, void *v)
50135 for (j = 0; j < cy_card[i].nports; j++) { 50806 for (j = 0; j < cy_card[i].nports; j++) {
50136 info = &cy_card[i].ports[j]; 50807 info = &cy_card[i].ports[j];
50137 50808
@@ -50141,10 +50812,10 @@ index 33f83fe..d80f8e1 100644
50141 struct tty_struct *tty; 50812 struct tty_struct *tty;
50142 struct tty_ldisc *ld; 50813 struct tty_ldisc *ld;
50143diff --git a/drivers/tty/hvc/hvc_console.c b/drivers/tty/hvc/hvc_console.c 50814diff --git a/drivers/tty/hvc/hvc_console.c b/drivers/tty/hvc/hvc_console.c
50144index 9eba119..5070303 100644 50815index 0ff7fda..dbc7d52 100644
50145--- a/drivers/tty/hvc/hvc_console.c 50816--- a/drivers/tty/hvc/hvc_console.c
50146+++ b/drivers/tty/hvc/hvc_console.c 50817+++ b/drivers/tty/hvc/hvc_console.c
50147@@ -338,7 +338,7 @@ static int hvc_open(struct tty_struct *tty, struct file * filp) 50818@@ -342,7 +342,7 @@ static int hvc_open(struct tty_struct *tty, struct file * filp)
50148 50819
50149 spin_lock_irqsave(&hp->port.lock, flags); 50820 spin_lock_irqsave(&hp->port.lock, flags);
50150 /* Check and then increment for fast path open. */ 50821 /* Check and then increment for fast path open. */
@@ -50153,7 +50824,7 @@ index 9eba119..5070303 100644
50153 spin_unlock_irqrestore(&hp->port.lock, flags); 50824 spin_unlock_irqrestore(&hp->port.lock, flags);
50154 hvc_kick(); 50825 hvc_kick();
50155 return 0; 50826 return 0;
50156@@ -393,7 +393,7 @@ static void hvc_close(struct tty_struct *tty, struct file * filp) 50827@@ -397,7 +397,7 @@ static void hvc_close(struct tty_struct *tty, struct file * filp)
50157 50828
50158 spin_lock_irqsave(&hp->port.lock, flags); 50829 spin_lock_irqsave(&hp->port.lock, flags);
50159 50830
@@ -50162,7 +50833,7 @@ index 9eba119..5070303 100644
50162 spin_unlock_irqrestore(&hp->port.lock, flags); 50833 spin_unlock_irqrestore(&hp->port.lock, flags);
50163 /* We are done with the tty pointer now. */ 50834 /* We are done with the tty pointer now. */
50164 tty_port_tty_set(&hp->port, NULL); 50835 tty_port_tty_set(&hp->port, NULL);
50165@@ -415,9 +415,9 @@ static void hvc_close(struct tty_struct *tty, struct file * filp) 50836@@ -419,9 +419,9 @@ static void hvc_close(struct tty_struct *tty, struct file * filp)
50166 */ 50837 */
50167 tty_wait_until_sent_from_close(tty, HVC_CLOSE_WAIT); 50838 tty_wait_until_sent_from_close(tty, HVC_CLOSE_WAIT);
50168 } else { 50839 } else {
@@ -50174,7 +50845,7 @@ index 9eba119..5070303 100644
50174 spin_unlock_irqrestore(&hp->port.lock, flags); 50845 spin_unlock_irqrestore(&hp->port.lock, flags);
50175 } 50846 }
50176 } 50847 }
50177@@ -447,12 +447,12 @@ static void hvc_hangup(struct tty_struct *tty) 50848@@ -451,12 +451,12 @@ static void hvc_hangup(struct tty_struct *tty)
50178 * open->hangup case this can be called after the final close so prevent 50849 * open->hangup case this can be called after the final close so prevent
50179 * that from happening for now. 50850 * that from happening for now.
50180 */ 50851 */
@@ -50189,7 +50860,7 @@ index 9eba119..5070303 100644
50189 spin_unlock_irqrestore(&hp->port.lock, flags); 50860 spin_unlock_irqrestore(&hp->port.lock, flags);
50190 tty_port_tty_set(&hp->port, NULL); 50861 tty_port_tty_set(&hp->port, NULL);
50191 50862
50192@@ -500,7 +500,7 @@ static int hvc_write(struct tty_struct *tty, const unsigned char *buf, int count 50863@@ -504,7 +504,7 @@ static int hvc_write(struct tty_struct *tty, const unsigned char *buf, int count
50193 return -EPIPE; 50864 return -EPIPE;
50194 50865
50195 /* FIXME what's this (unprotected) check for? */ 50866 /* FIXME what's this (unprotected) check for? */
@@ -50393,10 +51064,10 @@ index 4190199..06d5bfa 100644
50393 spin_unlock_irqrestore(&hp->lock, flags); 51064 spin_unlock_irqrestore(&hp->lock, flags);
50394 } 51065 }
50395diff --git a/drivers/tty/hvc/hvsi_lib.c b/drivers/tty/hvc/hvsi_lib.c 51066diff --git a/drivers/tty/hvc/hvsi_lib.c b/drivers/tty/hvc/hvsi_lib.c
50396index 347050e..14f8fbf 100644 51067index 7ae6c29..05c6dba 100644
50397--- a/drivers/tty/hvc/hvsi_lib.c 51068--- a/drivers/tty/hvc/hvsi_lib.c
50398+++ b/drivers/tty/hvc/hvsi_lib.c 51069+++ b/drivers/tty/hvc/hvsi_lib.c
50399@@ -9,7 +9,7 @@ 51070@@ -8,7 +8,7 @@
50400 51071
50401 static int hvsi_send_packet(struct hvsi_priv *pv, struct hvsi_header *packet) 51072 static int hvsi_send_packet(struct hvsi_priv *pv, struct hvsi_header *packet)
50402 { 51073 {
@@ -50405,7 +51076,7 @@ index 347050e..14f8fbf 100644
50405 51076
50406 /* Assumes that always succeeds, works in practice */ 51077 /* Assumes that always succeeds, works in practice */
50407 return pv->put_chars(pv->termno, (char *)packet, packet->len); 51078 return pv->put_chars(pv->termno, (char *)packet, packet->len);
50408@@ -21,7 +21,7 @@ static void hvsi_start_handshake(struct hvsi_priv *pv) 51079@@ -20,7 +20,7 @@ static void hvsi_start_handshake(struct hvsi_priv *pv)
50409 51080
50410 /* Reset state */ 51081 /* Reset state */
50411 pv->established = 0; 51082 pv->established = 0;
@@ -50415,10 +51086,10 @@ index 347050e..14f8fbf 100644
50415 pr_devel("HVSI@%x: Handshaking started\n", pv->termno); 51086 pr_devel("HVSI@%x: Handshaking started\n", pv->termno);
50416 51087
50417diff --git a/drivers/tty/ipwireless/tty.c b/drivers/tty/ipwireless/tty.c 51088diff --git a/drivers/tty/ipwireless/tty.c b/drivers/tty/ipwireless/tty.c
50418index 8fd72ff..34a0bed 100644 51089index 17ee3bf..8d2520d 100644
50419--- a/drivers/tty/ipwireless/tty.c 51090--- a/drivers/tty/ipwireless/tty.c
50420+++ b/drivers/tty/ipwireless/tty.c 51091+++ b/drivers/tty/ipwireless/tty.c
50421@@ -29,6 +29,7 @@ 51092@@ -28,6 +28,7 @@
50422 #include <linux/tty_driver.h> 51093 #include <linux/tty_driver.h>
50423 #include <linux/tty_flip.h> 51094 #include <linux/tty_flip.h>
50424 #include <linux/uaccess.h> 51095 #include <linux/uaccess.h>
@@ -50426,7 +51097,7 @@ index 8fd72ff..34a0bed 100644
50426 51097
50427 #include "tty.h" 51098 #include "tty.h"
50428 #include "network.h" 51099 #include "network.h"
50429@@ -99,10 +100,10 @@ static int ipw_open(struct tty_struct *linux_tty, struct file *filp) 51100@@ -98,10 +99,10 @@ static int ipw_open(struct tty_struct *linux_tty, struct file *filp)
50430 mutex_unlock(&tty->ipw_tty_mutex); 51101 mutex_unlock(&tty->ipw_tty_mutex);
50431 return -ENODEV; 51102 return -ENODEV;
50432 } 51103 }
@@ -50439,7 +51110,7 @@ index 8fd72ff..34a0bed 100644
50439 51110
50440 tty->port.tty = linux_tty; 51111 tty->port.tty = linux_tty;
50441 linux_tty->driver_data = tty; 51112 linux_tty->driver_data = tty;
50442@@ -118,9 +119,7 @@ static int ipw_open(struct tty_struct *linux_tty, struct file *filp) 51113@@ -117,9 +118,7 @@ static int ipw_open(struct tty_struct *linux_tty, struct file *filp)
50443 51114
50444 static void do_ipw_close(struct ipw_tty *tty) 51115 static void do_ipw_close(struct ipw_tty *tty)
50445 { 51116 {
@@ -50450,7 +51121,7 @@ index 8fd72ff..34a0bed 100644
50450 struct tty_struct *linux_tty = tty->port.tty; 51121 struct tty_struct *linux_tty = tty->port.tty;
50451 51122
50452 if (linux_tty != NULL) { 51123 if (linux_tty != NULL) {
50453@@ -141,7 +140,7 @@ static void ipw_hangup(struct tty_struct *linux_tty) 51124@@ -140,7 +139,7 @@ static void ipw_hangup(struct tty_struct *linux_tty)
50454 return; 51125 return;
50455 51126
50456 mutex_lock(&tty->ipw_tty_mutex); 51127 mutex_lock(&tty->ipw_tty_mutex);
@@ -50459,7 +51130,7 @@ index 8fd72ff..34a0bed 100644
50459 mutex_unlock(&tty->ipw_tty_mutex); 51130 mutex_unlock(&tty->ipw_tty_mutex);
50460 return; 51131 return;
50461 } 51132 }
50462@@ -164,7 +163,7 @@ void ipwireless_tty_received(struct ipw_tty *tty, unsigned char *data, 51133@@ -163,7 +162,7 @@ void ipwireless_tty_received(struct ipw_tty *tty, unsigned char *data,
50463 51134
50464 mutex_lock(&tty->ipw_tty_mutex); 51135 mutex_lock(&tty->ipw_tty_mutex);
50465 51136
@@ -50468,7 +51139,7 @@ index 8fd72ff..34a0bed 100644
50468 mutex_unlock(&tty->ipw_tty_mutex); 51139 mutex_unlock(&tty->ipw_tty_mutex);
50469 return; 51140 return;
50470 } 51141 }
50471@@ -206,7 +205,7 @@ static int ipw_write(struct tty_struct *linux_tty, 51142@@ -202,7 +201,7 @@ static int ipw_write(struct tty_struct *linux_tty,
50472 return -ENODEV; 51143 return -ENODEV;
50473 51144
50474 mutex_lock(&tty->ipw_tty_mutex); 51145 mutex_lock(&tty->ipw_tty_mutex);
@@ -50477,7 +51148,7 @@ index 8fd72ff..34a0bed 100644
50477 mutex_unlock(&tty->ipw_tty_mutex); 51148 mutex_unlock(&tty->ipw_tty_mutex);
50478 return -EINVAL; 51149 return -EINVAL;
50479 } 51150 }
50480@@ -246,7 +245,7 @@ static int ipw_write_room(struct tty_struct *linux_tty) 51151@@ -242,7 +241,7 @@ static int ipw_write_room(struct tty_struct *linux_tty)
50481 if (!tty) 51152 if (!tty)
50482 return -ENODEV; 51153 return -ENODEV;
50483 51154
@@ -50486,7 +51157,7 @@ index 8fd72ff..34a0bed 100644
50486 return -EINVAL; 51157 return -EINVAL;
50487 51158
50488 room = IPWIRELESS_TX_QUEUE_SIZE - tty->tx_bytes_queued; 51159 room = IPWIRELESS_TX_QUEUE_SIZE - tty->tx_bytes_queued;
50489@@ -288,7 +287,7 @@ static int ipw_chars_in_buffer(struct tty_struct *linux_tty) 51160@@ -284,7 +283,7 @@ static int ipw_chars_in_buffer(struct tty_struct *linux_tty)
50490 if (!tty) 51161 if (!tty)
50491 return 0; 51162 return 0;
50492 51163
@@ -50495,7 +51166,7 @@ index 8fd72ff..34a0bed 100644
50495 return 0; 51166 return 0;
50496 51167
50497 return tty->tx_bytes_queued; 51168 return tty->tx_bytes_queued;
50498@@ -369,7 +368,7 @@ static int ipw_tiocmget(struct tty_struct *linux_tty) 51169@@ -365,7 +364,7 @@ static int ipw_tiocmget(struct tty_struct *linux_tty)
50499 if (!tty) 51170 if (!tty)
50500 return -ENODEV; 51171 return -ENODEV;
50501 51172
@@ -50504,7 +51175,7 @@ index 8fd72ff..34a0bed 100644
50504 return -EINVAL; 51175 return -EINVAL;
50505 51176
50506 return get_control_lines(tty); 51177 return get_control_lines(tty);
50507@@ -385,7 +384,7 @@ ipw_tiocmset(struct tty_struct *linux_tty, 51178@@ -381,7 +380,7 @@ ipw_tiocmset(struct tty_struct *linux_tty,
50508 if (!tty) 51179 if (!tty)
50509 return -ENODEV; 51180 return -ENODEV;
50510 51181
@@ -50513,7 +51184,7 @@ index 8fd72ff..34a0bed 100644
50513 return -EINVAL; 51184 return -EINVAL;
50514 51185
50515 return set_control_lines(tty, set, clear); 51186 return set_control_lines(tty, set, clear);
50516@@ -399,7 +398,7 @@ static int ipw_ioctl(struct tty_struct *linux_tty, 51187@@ -395,7 +394,7 @@ static int ipw_ioctl(struct tty_struct *linux_tty,
50517 if (!tty) 51188 if (!tty)
50518 return -ENODEV; 51189 return -ENODEV;
50519 51190
@@ -50522,7 +51193,7 @@ index 8fd72ff..34a0bed 100644
50522 return -EINVAL; 51193 return -EINVAL;
50523 51194
50524 /* FIXME: Exactly how is the tty object locked here .. */ 51195 /* FIXME: Exactly how is the tty object locked here .. */
50525@@ -555,7 +554,7 @@ void ipwireless_tty_free(struct ipw_tty *tty) 51196@@ -551,7 +550,7 @@ void ipwireless_tty_free(struct ipw_tty *tty)
50526 * are gone */ 51197 * are gone */
50527 mutex_lock(&ttyj->ipw_tty_mutex); 51198 mutex_lock(&ttyj->ipw_tty_mutex);
50528 } 51199 }
@@ -50545,10 +51216,10 @@ index 1deaca4..c8582d4 100644
50545 tty_port_tty_set(&ch->port, tty); 51216 tty_port_tty_set(&ch->port, tty);
50546 mutex_lock(&ch->port.mutex); 51217 mutex_lock(&ch->port.mutex);
50547diff --git a/drivers/tty/n_gsm.c b/drivers/tty/n_gsm.c 51218diff --git a/drivers/tty/n_gsm.c b/drivers/tty/n_gsm.c
50548index 5056090..c80ca04 100644 51219index 2ebe47b..3205833 100644
50549--- a/drivers/tty/n_gsm.c 51220--- a/drivers/tty/n_gsm.c
50550+++ b/drivers/tty/n_gsm.c 51221+++ b/drivers/tty/n_gsm.c
50551@@ -1643,7 +1643,7 @@ static struct gsm_dlci *gsm_dlci_alloc(struct gsm_mux *gsm, int addr) 51222@@ -1644,7 +1644,7 @@ static struct gsm_dlci *gsm_dlci_alloc(struct gsm_mux *gsm, int addr)
50552 spin_lock_init(&dlci->lock); 51223 spin_lock_init(&dlci->lock);
50553 mutex_init(&dlci->mutex); 51224 mutex_init(&dlci->mutex);
50554 dlci->fifo = &dlci->_fifo; 51225 dlci->fifo = &dlci->_fifo;
@@ -50557,20 +51228,20 @@ index 5056090..c80ca04 100644
50557 kfree(dlci); 51228 kfree(dlci);
50558 return NULL; 51229 return NULL;
50559 } 51230 }
50560@@ -2946,7 +2946,7 @@ static int gsmtty_open(struct tty_struct *tty, struct file *filp) 51231@@ -2954,7 +2954,7 @@ static int gsmtty_open(struct tty_struct *tty, struct file *filp)
50561 struct gsm_dlci *dlci = tty->driver_data; 51232 struct gsm_dlci *dlci = tty->driver_data;
50562 struct tty_port *port = &dlci->port; 51233 struct tty_port *port = &dlci->port;
50563 51234
50564- port->count++; 51235- port->count++;
50565+ atomic_inc(&port->count); 51236+ atomic_inc(&port->count);
50566 dlci_get(dlci); 51237 tty_port_tty_set(port, tty);
50567 dlci_get(dlci->gsm->dlci[0]); 51238
50568 mux_get(dlci->gsm); 51239 dlci->modem_rx = 0;
50569diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c 51240diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c
50570index 4c10837..a40ec45 100644 51241index e36d1f5..9938e3e 100644
50571--- a/drivers/tty/n_tty.c 51242--- a/drivers/tty/n_tty.c
50572+++ b/drivers/tty/n_tty.c 51243+++ b/drivers/tty/n_tty.c
50573@@ -114,7 +114,7 @@ struct n_tty_data { 51244@@ -115,7 +115,7 @@ struct n_tty_data {
50574 int minimum_to_wake; 51245 int minimum_to_wake;
50575 51246
50576 /* consumer-published */ 51247 /* consumer-published */
@@ -50579,7 +51250,7 @@ index 4c10837..a40ec45 100644
50579 size_t line_start; 51250 size_t line_start;
50580 51251
50581 /* protected by output lock */ 51252 /* protected by output lock */
50582@@ -2504,6 +2504,7 @@ void n_tty_inherit_ops(struct tty_ldisc_ops *ops) 51253@@ -2519,6 +2519,7 @@ void n_tty_inherit_ops(struct tty_ldisc_ops *ops)
50583 { 51254 {
50584 *ops = tty_ldisc_N_TTY; 51255 *ops = tty_ldisc_N_TTY;
50585 ops->owner = NULL; 51256 ops->owner = NULL;
@@ -50605,7 +51276,7 @@ index 25c9bc7..24077b7 100644
50605 cdev_init(&ptmx_cdev, &ptmx_fops); 51276 cdev_init(&ptmx_cdev, &ptmx_fops);
50606 if (cdev_add(&ptmx_cdev, MKDEV(TTYAUX_MAJOR, 2), 1) || 51277 if (cdev_add(&ptmx_cdev, MKDEV(TTYAUX_MAJOR, 2), 1) ||
50607diff --git a/drivers/tty/rocket.c b/drivers/tty/rocket.c 51278diff --git a/drivers/tty/rocket.c b/drivers/tty/rocket.c
50608index 354564e..fe50d9a 100644 51279index 383c4c7..d408e21 100644
50609--- a/drivers/tty/rocket.c 51280--- a/drivers/tty/rocket.c
50610+++ b/drivers/tty/rocket.c 51281+++ b/drivers/tty/rocket.c
50611@@ -914,7 +914,7 @@ static int rp_open(struct tty_struct *tty, struct file *filp) 51282@@ -914,7 +914,7 @@ static int rp_open(struct tty_struct *tty, struct file *filp)
@@ -50795,7 +51466,7 @@ index b5d779c..3622cfe 100644
50795 if (unlikely(pdev->id < 0 || pdev->id >= UART_NR)) 51466 if (unlikely(pdev->id < 0 || pdev->id >= UART_NR))
50796 return -ENXIO; 51467 return -ENXIO;
50797diff --git a/drivers/tty/serial/samsung.c b/drivers/tty/serial/samsung.c 51468diff --git a/drivers/tty/serial/samsung.c b/drivers/tty/serial/samsung.c
50798index c1af04d..0815c8a 100644 51469index 9cd706d..6ff2de7 100644
50799--- a/drivers/tty/serial/samsung.c 51470--- a/drivers/tty/serial/samsung.c
50800+++ b/drivers/tty/serial/samsung.c 51471+++ b/drivers/tty/serial/samsung.c
50801@@ -463,11 +463,16 @@ static void s3c24xx_serial_shutdown(struct uart_port *port) 51472@@ -463,11 +463,16 @@ static void s3c24xx_serial_shutdown(struct uart_port *port)
@@ -50827,7 +51498,7 @@ index c1af04d..0815c8a 100644
50827 51498
50828 if (cfg->uart_flags & UPF_CONS_FLOW) { 51499 if (cfg->uart_flags & UPF_CONS_FLOW) {
50829diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c 51500diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
50830index 0f02351..07c59c5 100644 51501index ece2049..fba2524 100644
50831--- a/drivers/tty/serial/serial_core.c 51502--- a/drivers/tty/serial/serial_core.c
50832+++ b/drivers/tty/serial/serial_core.c 51503+++ b/drivers/tty/serial/serial_core.c
50833@@ -1448,7 +1448,7 @@ static void uart_hangup(struct tty_struct *tty) 51504@@ -1448,7 +1448,7 @@ static void uart_hangup(struct tty_struct *tty)
@@ -50867,7 +51538,7 @@ index 0f02351..07c59c5 100644
50867 goto end; 51538 goto end;
50868 } 51539 }
50869diff --git a/drivers/tty/synclink.c b/drivers/tty/synclink.c 51540diff --git a/drivers/tty/synclink.c b/drivers/tty/synclink.c
50870index e1ce141..6d4ed80 100644 51541index 5ae14b4..2c1288f 100644
50871--- a/drivers/tty/synclink.c 51542--- a/drivers/tty/synclink.c
50872+++ b/drivers/tty/synclink.c 51543+++ b/drivers/tty/synclink.c
50873@@ -3090,7 +3090,7 @@ static void mgsl_close(struct tty_struct *tty, struct file * filp) 51544@@ -3090,7 +3090,7 @@ static void mgsl_close(struct tty_struct *tty, struct file * filp)
@@ -50999,7 +51670,7 @@ index e1ce141..6d4ed80 100644
50999 51670
51000 if (cmd != SIOCWANDEV) 51671 if (cmd != SIOCWANDEV)
51001diff --git a/drivers/tty/synclink_gt.c b/drivers/tty/synclink_gt.c 51672diff --git a/drivers/tty/synclink_gt.c b/drivers/tty/synclink_gt.c
51002index 1abf946..1ee34fc 100644 51673index c359a91..959fc26 100644
51003--- a/drivers/tty/synclink_gt.c 51674--- a/drivers/tty/synclink_gt.c
51004+++ b/drivers/tty/synclink_gt.c 51675+++ b/drivers/tty/synclink_gt.c
51005@@ -670,7 +670,7 @@ static int open(struct tty_struct *tty, struct file *filp) 51676@@ -670,7 +670,7 @@ static int open(struct tty_struct *tty, struct file *filp)
@@ -51117,7 +51788,7 @@ index 1abf946..1ee34fc 100644
51117 51788
51118 if (!retval) 51789 if (!retval)
51119diff --git a/drivers/tty/synclinkmp.c b/drivers/tty/synclinkmp.c 51790diff --git a/drivers/tty/synclinkmp.c b/drivers/tty/synclinkmp.c
51120index dc6e969..5dc8786 100644 51791index 144202e..4ccb07d 100644
51121--- a/drivers/tty/synclinkmp.c 51792--- a/drivers/tty/synclinkmp.c
51122+++ b/drivers/tty/synclinkmp.c 51793+++ b/drivers/tty/synclinkmp.c
51123@@ -750,7 +750,7 @@ static int open(struct tty_struct *tty, struct file *filp) 51794@@ -750,7 +750,7 @@ static int open(struct tty_struct *tty, struct file *filp)
@@ -51269,10 +51940,10 @@ index ce396ec..04a37be 100644
51269 51940
51270 if (get_user(c, buf)) 51941 if (get_user(c, buf))
51271diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c 51942diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c
51272index c74a00a..02cf211a 100644 51943index d3448a9..28e8db0 100644
51273--- a/drivers/tty/tty_io.c 51944--- a/drivers/tty/tty_io.c
51274+++ b/drivers/tty/tty_io.c 51945+++ b/drivers/tty/tty_io.c
51275@@ -3474,7 +3474,7 @@ EXPORT_SYMBOL_GPL(get_current_tty); 51946@@ -3475,7 +3475,7 @@ EXPORT_SYMBOL_GPL(get_current_tty);
51276 51947
51277 void tty_default_fops(struct file_operations *fops) 51948 void tty_default_fops(struct file_operations *fops)
51278 { 51949 {
@@ -51282,10 +51953,10 @@ index c74a00a..02cf211a 100644
51282 51953
51283 /* 51954 /*
51284diff --git a/drivers/tty/tty_ldisc.c b/drivers/tty/tty_ldisc.c 51955diff --git a/drivers/tty/tty_ldisc.c b/drivers/tty/tty_ldisc.c
51285index 6458e11..6cfc218 100644 51956index 2d822aa..a566234 100644
51286--- a/drivers/tty/tty_ldisc.c 51957--- a/drivers/tty/tty_ldisc.c
51287+++ b/drivers/tty/tty_ldisc.c 51958+++ b/drivers/tty/tty_ldisc.c
51288@@ -72,7 +72,7 @@ int tty_register_ldisc(int disc, struct tty_ldisc_ops *new_ldisc) 51959@@ -71,7 +71,7 @@ int tty_register_ldisc(int disc, struct tty_ldisc_ops *new_ldisc)
51289 raw_spin_lock_irqsave(&tty_ldiscs_lock, flags); 51960 raw_spin_lock_irqsave(&tty_ldiscs_lock, flags);
51290 tty_ldiscs[disc] = new_ldisc; 51961 tty_ldiscs[disc] = new_ldisc;
51291 new_ldisc->num = disc; 51962 new_ldisc->num = disc;
@@ -51294,7 +51965,7 @@ index 6458e11..6cfc218 100644
51294 raw_spin_unlock_irqrestore(&tty_ldiscs_lock, flags); 51965 raw_spin_unlock_irqrestore(&tty_ldiscs_lock, flags);
51295 51966
51296 return ret; 51967 return ret;
51297@@ -100,7 +100,7 @@ int tty_unregister_ldisc(int disc) 51968@@ -99,7 +99,7 @@ int tty_unregister_ldisc(int disc)
51298 return -EINVAL; 51969 return -EINVAL;
51299 51970
51300 raw_spin_lock_irqsave(&tty_ldiscs_lock, flags); 51971 raw_spin_lock_irqsave(&tty_ldiscs_lock, flags);
@@ -51303,7 +51974,7 @@ index 6458e11..6cfc218 100644
51303 ret = -EBUSY; 51974 ret = -EBUSY;
51304 else 51975 else
51305 tty_ldiscs[disc] = NULL; 51976 tty_ldiscs[disc] = NULL;
51306@@ -121,7 +121,7 @@ static struct tty_ldisc_ops *get_ldops(int disc) 51977@@ -120,7 +120,7 @@ static struct tty_ldisc_ops *get_ldops(int disc)
51307 if (ldops) { 51978 if (ldops) {
51308 ret = ERR_PTR(-EAGAIN); 51979 ret = ERR_PTR(-EAGAIN);
51309 if (try_module_get(ldops->owner)) { 51980 if (try_module_get(ldops->owner)) {
@@ -51312,7 +51983,7 @@ index 6458e11..6cfc218 100644
51312 ret = ldops; 51983 ret = ldops;
51313 } 51984 }
51314 } 51985 }
51315@@ -134,7 +134,7 @@ static void put_ldops(struct tty_ldisc_ops *ldops) 51986@@ -133,7 +133,7 @@ static void put_ldops(struct tty_ldisc_ops *ldops)
51316 unsigned long flags; 51987 unsigned long flags;
51317 51988
51318 raw_spin_lock_irqsave(&tty_ldiscs_lock, flags); 51989 raw_spin_lock_irqsave(&tty_ldiscs_lock, flags);
@@ -51322,10 +51993,10 @@ index 6458e11..6cfc218 100644
51322 raw_spin_unlock_irqrestore(&tty_ldiscs_lock, flags); 51993 raw_spin_unlock_irqrestore(&tty_ldiscs_lock, flags);
51323 } 51994 }
51324diff --git a/drivers/tty/tty_port.c b/drivers/tty/tty_port.c 51995diff --git a/drivers/tty/tty_port.c b/drivers/tty/tty_port.c
51325index c94d234..8210f2d 100644 51996index 3f746c8..2f2fcaa 100644
51326--- a/drivers/tty/tty_port.c 51997--- a/drivers/tty/tty_port.c
51327+++ b/drivers/tty/tty_port.c 51998+++ b/drivers/tty/tty_port.c
51328@@ -236,7 +236,7 @@ void tty_port_hangup(struct tty_port *port) 51999@@ -235,7 +235,7 @@ void tty_port_hangup(struct tty_port *port)
51329 unsigned long flags; 52000 unsigned long flags;
51330 52001
51331 spin_lock_irqsave(&port->lock, flags); 52002 spin_lock_irqsave(&port->lock, flags);
@@ -51334,7 +52005,7 @@ index c94d234..8210f2d 100644
51334 port->flags &= ~ASYNC_NORMAL_ACTIVE; 52005 port->flags &= ~ASYNC_NORMAL_ACTIVE;
51335 tty = port->tty; 52006 tty = port->tty;
51336 if (tty) 52007 if (tty)
51337@@ -394,7 +394,7 @@ int tty_port_block_til_ready(struct tty_port *port, 52008@@ -393,7 +393,7 @@ int tty_port_block_til_ready(struct tty_port *port,
51338 /* The port lock protects the port counts */ 52009 /* The port lock protects the port counts */
51339 spin_lock_irqsave(&port->lock, flags); 52010 spin_lock_irqsave(&port->lock, flags);
51340 if (!tty_hung_up_p(filp)) 52011 if (!tty_hung_up_p(filp))
@@ -51343,7 +52014,7 @@ index c94d234..8210f2d 100644
51343 port->blocked_open++; 52014 port->blocked_open++;
51344 spin_unlock_irqrestore(&port->lock, flags); 52015 spin_unlock_irqrestore(&port->lock, flags);
51345 52016
51346@@ -436,7 +436,7 @@ int tty_port_block_til_ready(struct tty_port *port, 52017@@ -435,7 +435,7 @@ int tty_port_block_til_ready(struct tty_port *port,
51347 we must not mess that up further */ 52018 we must not mess that up further */
51348 spin_lock_irqsave(&port->lock, flags); 52019 spin_lock_irqsave(&port->lock, flags);
51349 if (!tty_hung_up_p(filp)) 52020 if (!tty_hung_up_p(filp))
@@ -51352,7 +52023,7 @@ index c94d234..8210f2d 100644
51352 port->blocked_open--; 52023 port->blocked_open--;
51353 if (retval == 0) 52024 if (retval == 0)
51354 port->flags |= ASYNC_NORMAL_ACTIVE; 52025 port->flags |= ASYNC_NORMAL_ACTIVE;
51355@@ -470,19 +470,19 @@ int tty_port_close_start(struct tty_port *port, 52026@@ -469,19 +469,19 @@ int tty_port_close_start(struct tty_port *port,
51356 return 0; 52027 return 0;
51357 } 52028 }
51358 52029
@@ -51379,7 +52050,7 @@ index c94d234..8210f2d 100644
51379 spin_unlock_irqrestore(&port->lock, flags); 52050 spin_unlock_irqrestore(&port->lock, flags);
51380 return 0; 52051 return 0;
51381 } 52052 }
51382@@ -564,7 +564,7 @@ int tty_port_open(struct tty_port *port, struct tty_struct *tty, 52053@@ -563,7 +563,7 @@ int tty_port_open(struct tty_port *port, struct tty_struct *tty,
51383 { 52054 {
51384 spin_lock_irq(&port->lock); 52055 spin_lock_irq(&port->lock);
51385 if (!tty_hung_up_p(filp)) 52056 if (!tty_hung_up_p(filp))
@@ -51540,10 +52211,10 @@ index a673e5b..36e5d32 100644
51540 ret = uio_get_minor(idev); 52211 ret = uio_get_minor(idev);
51541 if (ret) 52212 if (ret)
51542diff --git a/drivers/usb/atm/cxacru.c b/drivers/usb/atm/cxacru.c 52213diff --git a/drivers/usb/atm/cxacru.c b/drivers/usb/atm/cxacru.c
51543index 8a7eb77..c00402f 100644 52214index 813d4d3..a71934f 100644
51544--- a/drivers/usb/atm/cxacru.c 52215--- a/drivers/usb/atm/cxacru.c
51545+++ b/drivers/usb/atm/cxacru.c 52216+++ b/drivers/usb/atm/cxacru.c
51546@@ -473,7 +473,7 @@ static ssize_t cxacru_sysfs_store_adsl_config(struct device *dev, 52217@@ -472,7 +472,7 @@ static ssize_t cxacru_sysfs_store_adsl_config(struct device *dev,
51547 ret = sscanf(buf + pos, "%x=%x%n", &index, &value, &tmp); 52218 ret = sscanf(buf + pos, "%x=%x%n", &index, &value, &tmp);
51548 if (ret < 2) 52219 if (ret < 2)
51549 return -EINVAL; 52220 return -EINVAL;
@@ -51553,7 +52224,7 @@ index 8a7eb77..c00402f 100644
51553 pos += tmp; 52224 pos += tmp;
51554 52225
51555diff --git a/drivers/usb/atm/usbatm.c b/drivers/usb/atm/usbatm.c 52226diff --git a/drivers/usb/atm/usbatm.c b/drivers/usb/atm/usbatm.c
51556index 25a7bfc..57f3cf5 100644 52227index dada014..1d0d517 100644
51557--- a/drivers/usb/atm/usbatm.c 52228--- a/drivers/usb/atm/usbatm.c
51558+++ b/drivers/usb/atm/usbatm.c 52229+++ b/drivers/usb/atm/usbatm.c
51559@@ -331,7 +331,7 @@ static void usbatm_extract_one_cell(struct usbatm_data *instance, unsigned char 52230@@ -331,7 +331,7 @@ static void usbatm_extract_one_cell(struct usbatm_data *instance, unsigned char
@@ -51618,7 +52289,7 @@ index 25a7bfc..57f3cf5 100644
51618 52289
51619 skb = skb_dequeue(&instance->sndqueue); 52290 skb = skb_dequeue(&instance->sndqueue);
51620 } 52291 }
51621@@ -756,11 +756,11 @@ static int usbatm_atm_proc_read(struct atm_dev *atm_dev, loff_t * pos, char *pag 52292@@ -756,11 +756,11 @@ static int usbatm_atm_proc_read(struct atm_dev *atm_dev, loff_t *pos, char *page
51622 if (!left--) 52293 if (!left--)
51623 return sprintf(page, 52294 return sprintf(page,
51624 "AAL5: tx %d ( %d err ), rx %d ( %d err, %d drop )\n", 52295 "AAL5: tx %d ( %d err ), rx %d ( %d err, %d drop )\n",
@@ -51667,7 +52338,7 @@ index 2a3bbdf..91d72cf 100644
51667 file->f_version = event_count; 52338 file->f_version = event_count;
51668 return POLLIN | POLLRDNORM; 52339 return POLLIN | POLLRDNORM;
51669diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c 52340diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c
51670index 967152a..16fa2e5 100644 52341index 90e18f6..5eeda46 100644
51671--- a/drivers/usb/core/devio.c 52342--- a/drivers/usb/core/devio.c
51672+++ b/drivers/usb/core/devio.c 52343+++ b/drivers/usb/core/devio.c
51673@@ -187,7 +187,7 @@ static ssize_t usbdev_read(struct file *file, char __user *buf, size_t nbytes, 52344@@ -187,7 +187,7 @@ static ssize_t usbdev_read(struct file *file, char __user *buf, size_t nbytes,
@@ -51707,10 +52378,10 @@ index 967152a..16fa2e5 100644
51707 dev->rawdescriptors[i] + (*ppos - pos), 52378 dev->rawdescriptors[i] + (*ppos - pos),
51708 min(len, alloclen))) { 52379 min(len, alloclen))) {
51709diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c 52380diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
51710index d39106c..bfe13a4 100644 52381index 2518c32..1c201bb 100644
51711--- a/drivers/usb/core/hcd.c 52382--- a/drivers/usb/core/hcd.c
51712+++ b/drivers/usb/core/hcd.c 52383+++ b/drivers/usb/core/hcd.c
51713@@ -1549,7 +1549,7 @@ int usb_hcd_submit_urb (struct urb *urb, gfp_t mem_flags) 52384@@ -1550,7 +1550,7 @@ int usb_hcd_submit_urb (struct urb *urb, gfp_t mem_flags)
51714 */ 52385 */
51715 usb_get_urb(urb); 52386 usb_get_urb(urb);
51716 atomic_inc(&urb->use_count); 52387 atomic_inc(&urb->use_count);
@@ -51719,7 +52390,7 @@ index d39106c..bfe13a4 100644
51719 usbmon_urb_submit(&hcd->self, urb); 52390 usbmon_urb_submit(&hcd->self, urb);
51720 52391
51721 /* NOTE requirements on root-hub callers (usbfs and the hub 52392 /* NOTE requirements on root-hub callers (usbfs and the hub
51722@@ -1576,7 +1576,7 @@ int usb_hcd_submit_urb (struct urb *urb, gfp_t mem_flags) 52393@@ -1577,7 +1577,7 @@ int usb_hcd_submit_urb (struct urb *urb, gfp_t mem_flags)
51723 urb->hcpriv = NULL; 52394 urb->hcpriv = NULL;
51724 INIT_LIST_HEAD(&urb->urb_list); 52395 INIT_LIST_HEAD(&urb->urb_list);
51725 atomic_dec(&urb->use_count); 52396 atomic_dec(&urb->use_count);
@@ -51729,7 +52400,7 @@ index d39106c..bfe13a4 100644
51729 wake_up(&usb_kill_urb_queue); 52400 wake_up(&usb_kill_urb_queue);
51730 usb_put_urb(urb); 52401 usb_put_urb(urb);
51731diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c 52402diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
51732index ebcd3bf..be93a64 100644 52403index d498d03..e26f959 100644
51733--- a/drivers/usb/core/hub.c 52404--- a/drivers/usb/core/hub.c
51734+++ b/drivers/usb/core/hub.c 52405+++ b/drivers/usb/core/hub.c
51735@@ -27,6 +27,7 @@ 52406@@ -27,6 +27,7 @@
@@ -51740,7 +52411,7 @@ index ebcd3bf..be93a64 100644
51740 52411
51741 #include <asm/uaccess.h> 52412 #include <asm/uaccess.h>
51742 #include <asm/byteorder.h> 52413 #include <asm/byteorder.h>
51743@@ -4437,6 +4438,10 @@ static void hub_port_connect_change(struct usb_hub *hub, int port1, 52414@@ -4472,6 +4473,10 @@ static void hub_port_connect_change(struct usb_hub *hub, int port1,
51744 goto done; 52415 goto done;
51745 return; 52416 return;
51746 } 52417 }
@@ -51752,10 +52423,10 @@ index ebcd3bf..be93a64 100644
51752 unit_load = 150; 52423 unit_load = 150;
51753 else 52424 else
51754diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c 52425diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c
51755index bb31597..6c5ef8b 100644 52426index f829a1a..e6c334a 100644
51756--- a/drivers/usb/core/message.c 52427--- a/drivers/usb/core/message.c
51757+++ b/drivers/usb/core/message.c 52428+++ b/drivers/usb/core/message.c
51758@@ -129,7 +129,7 @@ static int usb_internal_control_msg(struct usb_device *usb_dev, 52429@@ -128,7 +128,7 @@ static int usb_internal_control_msg(struct usb_device *usb_dev,
51759 * Return: If successful, the number of bytes transferred. Otherwise, a negative 52430 * Return: If successful, the number of bytes transferred. Otherwise, a negative
51760 * error number. 52431 * error number.
51761 */ 52432 */
@@ -51764,7 +52435,7 @@ index bb31597..6c5ef8b 100644
51764 __u8 requesttype, __u16 value, __u16 index, void *data, 52435 __u8 requesttype, __u16 value, __u16 index, void *data,
51765 __u16 size, int timeout) 52436 __u16 size, int timeout)
51766 { 52437 {
51767@@ -181,7 +181,7 @@ EXPORT_SYMBOL_GPL(usb_control_msg); 52438@@ -180,7 +180,7 @@ EXPORT_SYMBOL_GPL(usb_control_msg);
51768 * If successful, 0. Otherwise a negative error number. The number of actual 52439 * If successful, 0. Otherwise a negative error number. The number of actual
51769 * bytes transferred will be stored in the @actual_length paramater. 52440 * bytes transferred will be stored in the @actual_length paramater.
51770 */ 52441 */
@@ -51773,8 +52444,8 @@ index bb31597..6c5ef8b 100644
51773 void *data, int len, int *actual_length, int timeout) 52444 void *data, int len, int *actual_length, int timeout)
51774 { 52445 {
51775 return usb_bulk_msg(usb_dev, pipe, data, len, actual_length, timeout); 52446 return usb_bulk_msg(usb_dev, pipe, data, len, actual_length, timeout);
51776@@ -221,7 +221,7 @@ EXPORT_SYMBOL_GPL(usb_interrupt_msg); 52447@@ -220,7 +220,7 @@ EXPORT_SYMBOL_GPL(usb_interrupt_msg);
51777 * bytes transferred will be stored in the @actual_length paramater. 52448 * bytes transferred will be stored in the @actual_length parameter.
51778 * 52449 *
51779 */ 52450 */
51780-int usb_bulk_msg(struct usb_device *usb_dev, unsigned int pipe, 52451-int usb_bulk_msg(struct usb_device *usb_dev, unsigned int pipe,
@@ -51783,7 +52454,7 @@ index bb31597..6c5ef8b 100644
51783 { 52454 {
51784 struct urb *urb; 52455 struct urb *urb;
51785diff --git a/drivers/usb/core/sysfs.c b/drivers/usb/core/sysfs.c 52456diff --git a/drivers/usb/core/sysfs.c b/drivers/usb/core/sysfs.c
51786index 52a97ad..e73330f 100644 52457index 1236c60..d47a51c 100644
51787--- a/drivers/usb/core/sysfs.c 52458--- a/drivers/usb/core/sysfs.c
51788+++ b/drivers/usb/core/sysfs.c 52459+++ b/drivers/usb/core/sysfs.c
51789@@ -244,7 +244,7 @@ static ssize_t urbnum_show(struct device *dev, struct device_attribute *attr, 52460@@ -244,7 +244,7 @@ static ssize_t urbnum_show(struct device *dev, struct device_attribute *attr,
@@ -51809,7 +52480,7 @@ index 4d11449..f4ccabf 100644
51809 INIT_LIST_HEAD(&dev->ep0.urb_list); 52480 INIT_LIST_HEAD(&dev->ep0.urb_list);
51810 dev->ep0.desc.bLength = USB_DT_ENDPOINT_SIZE; 52481 dev->ep0.desc.bLength = USB_DT_ENDPOINT_SIZE;
51811diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c 52482diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
51812index 02e44fc..3c4fe64 100644 52483index 2da0a5a..4870e09 100644
51813--- a/drivers/usb/dwc3/gadget.c 52484--- a/drivers/usb/dwc3/gadget.c
51814+++ b/drivers/usb/dwc3/gadget.c 52485+++ b/drivers/usb/dwc3/gadget.c
51815@@ -532,8 +532,6 @@ static int __dwc3_gadget_ep_enable(struct dwc3_ep *dep, 52486@@ -532,8 +532,6 @@ static int __dwc3_gadget_ep_enable(struct dwc3_ep *dep,
@@ -51862,8 +52533,20 @@ index 8cfc319..4868255 100644
51862 52533
51863 return 0; 52534 return 0;
51864 } 52535 }
52536diff --git a/drivers/usb/gadget/f_uac1.c b/drivers/usb/gadget/f_uac1.c
52537index 2b4c82d..06a8ee6 100644
52538--- a/drivers/usb/gadget/f_uac1.c
52539+++ b/drivers/usb/gadget/f_uac1.c
52540@@ -13,6 +13,7 @@
52541 #include <linux/kernel.h>
52542 #include <linux/device.h>
52543 #include <linux/atomic.h>
52544+#include <linux/module.h>
52545
52546 #include "u_uac1.h"
52547
51865diff --git a/drivers/usb/gadget/u_serial.c b/drivers/usb/gadget/u_serial.c 52548diff --git a/drivers/usb/gadget/u_serial.c b/drivers/usb/gadget/u_serial.c
51866index b369292..9f3ba40 100644 52549index ad0aca8..8ff84865 100644
51867--- a/drivers/usb/gadget/u_serial.c 52550--- a/drivers/usb/gadget/u_serial.c
51868+++ b/drivers/usb/gadget/u_serial.c 52551+++ b/drivers/usb/gadget/u_serial.c
51869@@ -733,9 +733,9 @@ static int gs_open(struct tty_struct *tty, struct file *file) 52552@@ -733,9 +733,9 @@ static int gs_open(struct tty_struct *tty, struct file *file)
@@ -51947,8 +52630,20 @@ index b369292..9f3ba40 100644
51947 gs_buf_free(&port->port_write_buf); 52630 gs_buf_free(&port->port_write_buf);
51948 gs_free_requests(gser->out, &port->read_pool, NULL); 52631 gs_free_requests(gser->out, &port->read_pool, NULL);
51949 gs_free_requests(gser->out, &port->read_queue, NULL); 52632 gs_free_requests(gser->out, &port->read_queue, NULL);
52633diff --git a/drivers/usb/gadget/u_uac1.c b/drivers/usb/gadget/u_uac1.c
52634index 7a55fea..cc0ed4f 100644
52635--- a/drivers/usb/gadget/u_uac1.c
52636+++ b/drivers/usb/gadget/u_uac1.c
52637@@ -16,6 +16,7 @@
52638 #include <linux/ctype.h>
52639 #include <linux/random.h>
52640 #include <linux/syscalls.h>
52641+#include <linux/module.h>
52642
52643 #include "u_uac1.h"
52644
51950diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c 52645diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c
51951index 1bb85be..29e28d9 100644 52646index 7ae0c4d..35521b7 100644
51952--- a/drivers/usb/host/ehci-hub.c 52647--- a/drivers/usb/host/ehci-hub.c
51953+++ b/drivers/usb/host/ehci-hub.c 52648+++ b/drivers/usb/host/ehci-hub.c
51954@@ -780,7 +780,7 @@ static struct urb *request_single_step_set_feature_urb( 52649@@ -780,7 +780,7 @@ static struct urb *request_single_step_set_feature_urb(
@@ -51992,10 +52687,10 @@ index ba6a5d6..f88f7f3 100644
51992 props.type = BACKLIGHT_RAW; 52687 props.type = BACKLIGHT_RAW;
51993 props.max_brightness = 0xff; 52688 props.max_brightness = 0xff;
51994diff --git a/drivers/usb/serial/console.c b/drivers/usb/serial/console.c 52689diff --git a/drivers/usb/serial/console.c b/drivers/usb/serial/console.c
51995index c69bb50..215ef37 100644 52690index 8d7fc48..01c4986 100644
51996--- a/drivers/usb/serial/console.c 52691--- a/drivers/usb/serial/console.c
51997+++ b/drivers/usb/serial/console.c 52692+++ b/drivers/usb/serial/console.c
51998@@ -124,7 +124,7 @@ static int usb_console_setup(struct console *co, char *options) 52693@@ -123,7 +123,7 @@ static int usb_console_setup(struct console *co, char *options)
51999 52694
52000 info->port = port; 52695 info->port = port;
52001 52696
@@ -52004,7 +52699,7 @@ index c69bb50..215ef37 100644
52004 if (!test_bit(ASYNCB_INITIALIZED, &port->port.flags)) { 52699 if (!test_bit(ASYNCB_INITIALIZED, &port->port.flags)) {
52005 if (serial->type->set_termios) { 52700 if (serial->type->set_termios) {
52006 /* 52701 /*
52007@@ -170,7 +170,7 @@ static int usb_console_setup(struct console *co, char *options) 52702@@ -167,7 +167,7 @@ static int usb_console_setup(struct console *co, char *options)
52008 } 52703 }
52009 /* Now that any required fake tty operations are completed restore 52704 /* Now that any required fake tty operations are completed restore
52010 * the tty port count */ 52705 * the tty port count */
@@ -52013,7 +52708,7 @@ index c69bb50..215ef37 100644
52013 /* The console is special in terms of closing the device so 52708 /* The console is special in terms of closing the device so
52014 * indicate this port is now acting as a system console. */ 52709 * indicate this port is now acting as a system console. */
52015 port->port.console = 1; 52710 port->port.console = 1;
52016@@ -183,7 +183,7 @@ static int usb_console_setup(struct console *co, char *options) 52711@@ -180,7 +180,7 @@ static int usb_console_setup(struct console *co, char *options)
52017 free_tty: 52712 free_tty:
52018 kfree(tty); 52713 kfree(tty);
52019 reset_open_count: 52714 reset_open_count:
@@ -52022,7 +52717,7 @@ index c69bb50..215ef37 100644
52022 usb_autopm_put_interface(serial->interface); 52717 usb_autopm_put_interface(serial->interface);
52023 error_get_interface: 52718 error_get_interface:
52024 usb_serial_put(serial); 52719 usb_serial_put(serial);
52025@@ -194,7 +194,7 @@ static int usb_console_setup(struct console *co, char *options) 52720@@ -191,7 +191,7 @@ static int usb_console_setup(struct console *co, char *options)
52026 static void usb_console_write(struct console *co, 52721 static void usb_console_write(struct console *co,
52027 const char *buf, unsigned count) 52722 const char *buf, unsigned count)
52028 { 52723 {
@@ -52045,7 +52740,7 @@ index 75f70f0..d467e1a 100644
52045 52740
52046 /* Dynamic bitflag definitions (us->dflags): used in set_bit() etc. */ 52741 /* Dynamic bitflag definitions (us->dflags): used in set_bit() etc. */
52047diff --git a/drivers/usb/wusbcore/wa-hc.h b/drivers/usb/wusbcore/wa-hc.h 52742diff --git a/drivers/usb/wusbcore/wa-hc.h b/drivers/usb/wusbcore/wa-hc.h
52048index e614f02..3fd60e2 100644 52743index a2ef84b..aa7c2b8 100644
52049--- a/drivers/usb/wusbcore/wa-hc.h 52744--- a/drivers/usb/wusbcore/wa-hc.h
52050+++ b/drivers/usb/wusbcore/wa-hc.h 52745+++ b/drivers/usb/wusbcore/wa-hc.h
52051@@ -225,7 +225,7 @@ struct wahc { 52746@@ -225,7 +225,7 @@ struct wahc {
@@ -52067,7 +52762,7 @@ index e614f02..3fd60e2 100644
52067 52762
52068 /** 52763 /**
52069diff --git a/drivers/usb/wusbcore/wa-xfer.c b/drivers/usb/wusbcore/wa-xfer.c 52764diff --git a/drivers/usb/wusbcore/wa-xfer.c b/drivers/usb/wusbcore/wa-xfer.c
52070index ed5abe8..7036400 100644 52765index 3cd96e9..bd7c58d 100644
52071--- a/drivers/usb/wusbcore/wa-xfer.c 52766--- a/drivers/usb/wusbcore/wa-xfer.c
52072+++ b/drivers/usb/wusbcore/wa-xfer.c 52767+++ b/drivers/usb/wusbcore/wa-xfer.c
52073@@ -312,7 +312,7 @@ static void wa_xfer_completion(struct wa_xfer *xfer) 52768@@ -312,7 +312,7 @@ static void wa_xfer_completion(struct wa_xfer *xfer)
@@ -52080,10 +52775,10 @@ index ed5abe8..7036400 100644
52080 52775
52081 /* Return the xfer's ID. */ 52776 /* Return the xfer's ID. */
52082diff --git a/drivers/vfio/vfio.c b/drivers/vfio/vfio.c 52777diff --git a/drivers/vfio/vfio.c b/drivers/vfio/vfio.c
52083index 1eab4ac..e21efc9 100644 52778index 21271d8..45b55a0 100644
52084--- a/drivers/vfio/vfio.c 52779--- a/drivers/vfio/vfio.c
52085+++ b/drivers/vfio/vfio.c 52780+++ b/drivers/vfio/vfio.c
52086@@ -488,7 +488,7 @@ static int vfio_group_nb_add_dev(struct vfio_group *group, struct device *dev) 52781@@ -487,7 +487,7 @@ static int vfio_group_nb_add_dev(struct vfio_group *group, struct device *dev)
52087 return 0; 52782 return 0;
52088 52783
52089 /* TODO Prevent device auto probing */ 52784 /* TODO Prevent device auto probing */
@@ -52176,7 +52871,7 @@ index 1b0b233..6f34c2c 100644
52176 err = -ENOSPC; 52871 err = -ENOSPC;
52177 } 52872 }
52178diff --git a/drivers/video/aty/aty128fb.c b/drivers/video/aty/aty128fb.c 52873diff --git a/drivers/video/aty/aty128fb.c b/drivers/video/aty/aty128fb.c
52179index 12ca031..84a8a74 100644 52874index 52108be..c7c110d 100644
52180--- a/drivers/video/aty/aty128fb.c 52875--- a/drivers/video/aty/aty128fb.c
52181+++ b/drivers/video/aty/aty128fb.c 52876+++ b/drivers/video/aty/aty128fb.c
52182@@ -149,7 +149,7 @@ enum { 52877@@ -149,7 +149,7 @@ enum {
@@ -52210,18 +52905,18 @@ index 28fafbf..ae91651 100644
52210 } 52905 }
52211 52906
52212diff --git a/drivers/video/aty/mach64_cursor.c b/drivers/video/aty/mach64_cursor.c 52907diff --git a/drivers/video/aty/mach64_cursor.c b/drivers/video/aty/mach64_cursor.c
52213index 95ec042..e6affdd 100644 52908index 0fe02e2..ab01b26 100644
52214--- a/drivers/video/aty/mach64_cursor.c 52909--- a/drivers/video/aty/mach64_cursor.c
52215+++ b/drivers/video/aty/mach64_cursor.c 52910+++ b/drivers/video/aty/mach64_cursor.c
52216@@ -7,6 +7,7 @@ 52911@@ -8,6 +8,7 @@
52217 #include <linux/string.h> 52912 #include "../fb_draw.h"
52218 52913
52219 #include <asm/io.h> 52914 #include <asm/io.h>
52220+#include <asm/pgtable.h> 52915+#include <asm/pgtable.h>
52221 52916
52222 #ifdef __sparc__ 52917 #ifdef __sparc__
52223 #include <asm/fbio.h> 52918 #include <asm/fbio.h>
52224@@ -208,7 +209,9 @@ int aty_init_cursor(struct fb_info *info) 52919@@ -218,7 +219,9 @@ int aty_init_cursor(struct fb_info *info)
52225 info->sprite.buf_align = 16; /* and 64 lines tall. */ 52920 info->sprite.buf_align = 16; /* and 64 lines tall. */
52226 info->sprite.flags = FB_PIXMAP_IO; 52921 info->sprite.flags = FB_PIXMAP_IO;
52227 52922
@@ -52233,15 +52928,15 @@ index 95ec042..e6affdd 100644
52233 return 0; 52928 return 0;
52234 } 52929 }
52235diff --git a/drivers/video/backlight/kb3886_bl.c b/drivers/video/backlight/kb3886_bl.c 52930diff --git a/drivers/video/backlight/kb3886_bl.c b/drivers/video/backlight/kb3886_bl.c
52236index 7592cc2..92feb56 100644 52931index 84a110a..96312c3 100644
52237--- a/drivers/video/backlight/kb3886_bl.c 52932--- a/drivers/video/backlight/kb3886_bl.c
52238+++ b/drivers/video/backlight/kb3886_bl.c 52933+++ b/drivers/video/backlight/kb3886_bl.c
52239@@ -78,7 +78,7 @@ static struct kb3886bl_machinfo *bl_machinfo; 52934@@ -78,7 +78,7 @@ static struct kb3886bl_machinfo *bl_machinfo;
52240 static unsigned long kb3886bl_flags; 52935 static unsigned long kb3886bl_flags;
52241 #define KB3886BL_SUSPENDED 0x01 52936 #define KB3886BL_SUSPENDED 0x01
52242 52937
52243-static struct dmi_system_id __initdata kb3886bl_device_table[] = { 52938-static struct dmi_system_id kb3886bl_device_table[] __initdata = {
52244+static const struct dmi_system_id __initconst kb3886bl_device_table[] = { 52939+static const struct dmi_system_id kb3886bl_device_table[] __initconst = {
52245 { 52940 {
52246 .ident = "Sahara Touch-iT", 52941 .ident = "Sahara Touch-iT",
52247 .matches = { 52942 .matches = {
@@ -52270,7 +52965,7 @@ index 900aa4e..6d49418 100644
52270 } 52965 }
52271 EXPORT_SYMBOL_GPL(fb_deferred_io_cleanup); 52966 EXPORT_SYMBOL_GPL(fb_deferred_io_cleanup);
52272diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c 52967diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
52273index 010d191..7b8235a 100644 52968index 7309ac7..be3c49c 100644
52274--- a/drivers/video/fbmem.c 52969--- a/drivers/video/fbmem.c
52275+++ b/drivers/video/fbmem.c 52970+++ b/drivers/video/fbmem.c
52276@@ -433,7 +433,7 @@ static void fb_do_show_logo(struct fb_info *info, struct fb_image *image, 52971@@ -433,7 +433,7 @@ static void fb_do_show_logo(struct fb_info *info, struct fb_image *image,
@@ -55144,7 +55839,7 @@ index fe92eed..106e085 100644
55144 outreg(draw, GDC_REG_DRAW_BASE, 0); 55839 outreg(draw, GDC_REG_DRAW_BASE, 0);
55145 outreg(draw, GDC_REG_MODE_MISC, 0x8000); 55840 outreg(draw, GDC_REG_MODE_MISC, 0x8000);
55146diff --git a/drivers/video/nvidia/nvidia.c b/drivers/video/nvidia/nvidia.c 55841diff --git a/drivers/video/nvidia/nvidia.c b/drivers/video/nvidia/nvidia.c
55147index ff22871..b129bed 100644 55842index def0412..fed6529 100644
55148--- a/drivers/video/nvidia/nvidia.c 55843--- a/drivers/video/nvidia/nvidia.c
55149+++ b/drivers/video/nvidia/nvidia.c 55844+++ b/drivers/video/nvidia/nvidia.c
55150@@ -669,19 +669,23 @@ static int nvidiafb_set_par(struct fb_info *info) 55845@@ -669,19 +669,23 @@ static int nvidiafb_set_par(struct fb_info *info)
@@ -55232,6 +55927,23 @@ index 83433cb..71e9b98 100644
55232 info->flags = FBINFO_DEFAULT | FBINFO_HWACCEL_YPAN | 55927 info->flags = FBINFO_DEFAULT | FBINFO_HWACCEL_YPAN |
55233 FBINFO_HWACCEL_FILLRECT | FBINFO_HWACCEL_COPYAREA; 55928 FBINFO_HWACCEL_FILLRECT | FBINFO_HWACCEL_COPYAREA;
55234 break; 55929 break;
55930diff --git a/drivers/video/sh_mobile_lcdcfb.c b/drivers/video/sh_mobile_lcdcfb.c
55931index 2bcc84a..29dd1ea 100644
55932--- a/drivers/video/sh_mobile_lcdcfb.c
55933+++ b/drivers/video/sh_mobile_lcdcfb.c
55934@@ -439,9 +439,9 @@ static unsigned long lcdc_sys_read_data(void *handle)
55935 }
55936
55937 static struct sh_mobile_lcdc_sys_bus_ops sh_mobile_lcdc_sys_bus_ops = {
55938- lcdc_sys_write_index,
55939- lcdc_sys_write_data,
55940- lcdc_sys_read_data,
55941+ .write_index = lcdc_sys_write_index,
55942+ .write_data = lcdc_sys_write_data,
55943+ .read_data = lcdc_sys_read_data,
55944 };
55945
55946 static int sh_mobile_lcdc_sginit(struct fb_info *info,
55235diff --git a/drivers/video/smscufx.c b/drivers/video/smscufx.c 55947diff --git a/drivers/video/smscufx.c b/drivers/video/smscufx.c
55236index d513ed6..90b0de9 100644 55948index d513ed6..90b0de9 100644
55237--- a/drivers/video/smscufx.c 55949--- a/drivers/video/smscufx.c
@@ -55248,7 +55960,7 @@ index d513ed6..90b0de9 100644
55248 55960
55249 pr_debug("released /dev/fb%d user=%d count=%d", 55961 pr_debug("released /dev/fb%d user=%d count=%d",
55250diff --git a/drivers/video/udlfb.c b/drivers/video/udlfb.c 55962diff --git a/drivers/video/udlfb.c b/drivers/video/udlfb.c
55251index 025f14e..20eb4db 100644 55963index 77b890e..458e666 100644
55252--- a/drivers/video/udlfb.c 55964--- a/drivers/video/udlfb.c
55253+++ b/drivers/video/udlfb.c 55965+++ b/drivers/video/udlfb.c
55254@@ -623,11 +623,11 @@ static int dlfb_handle_damage(struct dlfb_data *dev, int x, int y, 55966@@ -623,11 +623,11 @@ static int dlfb_handle_damage(struct dlfb_data *dev, int x, int y,
@@ -55611,7 +56323,7 @@ index fef20db..d28b1ab 100644
55611 return -ENOMEM; 56323 return -ENOMEM;
55612 return 0; 56324 return 0;
55613diff --git a/fs/9p/vfs_addr.c b/fs/9p/vfs_addr.c 56325diff --git a/fs/9p/vfs_addr.c b/fs/9p/vfs_addr.c
55614index 9ff073f..05cef23 100644 56326index c71e886..61d3d44b 100644
55615--- a/fs/9p/vfs_addr.c 56327--- a/fs/9p/vfs_addr.c
55616+++ b/fs/9p/vfs_addr.c 56328+++ b/fs/9p/vfs_addr.c
55617@@ -187,7 +187,7 @@ static int v9fs_vfs_writepage_locked(struct page *page) 56329@@ -187,7 +187,7 @@ static int v9fs_vfs_writepage_locked(struct page *page)
@@ -55624,10 +56336,10 @@ index 9ff073f..05cef23 100644
55624 if (retval > 0) 56336 if (retval > 0)
55625 retval = 0; 56337 retval = 0;
55626diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c 56338diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c
55627index 4e65aa9..043dc9a 100644 56339index bb7991c..481e21a 100644
55628--- a/fs/9p/vfs_inode.c 56340--- a/fs/9p/vfs_inode.c
55629+++ b/fs/9p/vfs_inode.c 56341+++ b/fs/9p/vfs_inode.c
55630@@ -1306,7 +1306,7 @@ static void *v9fs_vfs_follow_link(struct dentry *dentry, struct nameidata *nd) 56342@@ -1312,7 +1312,7 @@ static void *v9fs_vfs_follow_link(struct dentry *dentry, struct nameidata *nd)
55631 void 56343 void
55632 v9fs_vfs_put_link(struct dentry *dentry, struct nameidata *nd, void *p) 56344 v9fs_vfs_put_link(struct dentry *dentry, struct nameidata *nd, void *p)
55633 { 56345 {
@@ -55649,6 +56361,19 @@ index 370b24c..ff0be7b 100644
55649 ---help--- 56361 ---help---
55650 A.out (Assembler.OUTput) is a set of formats for libraries and 56362 A.out (Assembler.OUTput) is a set of formats for libraries and
55651 executables used in the earliest versions of UNIX. Linux used 56363 executables used in the earliest versions of UNIX. Linux used
56364diff --git a/fs/affs/super.c b/fs/affs/super.c
56365index d098731..9a5b19d 100644
56366--- a/fs/affs/super.c
56367+++ b/fs/affs/super.c
56368@@ -336,8 +336,6 @@ static int affs_fill_super(struct super_block *sb, void *data, int silent)
56369 &blocksize,&sbi->s_prefix,
56370 sbi->s_volume, &mount_flags)) {
56371 printk(KERN_ERR "AFFS: Error parsing options\n");
56372- kfree(sbi->s_prefix);
56373- kfree(sbi);
56374 return -EINVAL;
56375 }
56376 /* N.B. after this point s_prefix must be released */
55652diff --git a/fs/afs/inode.c b/fs/afs/inode.c 56377diff --git a/fs/afs/inode.c b/fs/afs/inode.c
55653index ce25d75..dc09eeb 100644 56378index ce25d75..dc09eeb 100644
55654--- a/fs/afs/inode.c 56379--- a/fs/afs/inode.c
@@ -55672,10 +56397,10 @@ index ce25d75..dc09eeb 100644
55672 &data); 56397 &data);
55673 if (!inode) { 56398 if (!inode) {
55674diff --git a/fs/aio.c b/fs/aio.c 56399diff --git a/fs/aio.c b/fs/aio.c
55675index 062a5f6..e5618e0 100644 56400index 12a3de0e..25949c1 100644
55676--- a/fs/aio.c 56401--- a/fs/aio.c
55677+++ b/fs/aio.c 56402+++ b/fs/aio.c
55678@@ -374,7 +374,7 @@ static int aio_setup_ring(struct kioctx *ctx) 56403@@ -375,7 +375,7 @@ static int aio_setup_ring(struct kioctx *ctx)
55679 size += sizeof(struct io_event) * nr_events; 56404 size += sizeof(struct io_event) * nr_events;
55680 56405
55681 nr_pages = PFN_UP(size); 56406 nr_pages = PFN_UP(size);
@@ -55684,6 +56409,19 @@ index 062a5f6..e5618e0 100644
55684 return -EINVAL; 56409 return -EINVAL;
55685 56410
55686 file = aio_private_file(ctx, nr_pages); 56411 file = aio_private_file(ctx, nr_pages);
56412@@ -1299,10 +1299,8 @@ rw_common:
56413 &iovec, compat)
56414 : aio_setup_single_vector(req, rw, buf, &nr_segs,
56415 iovec);
56416- if (ret)
56417- return ret;
56418-
56419- ret = rw_verify_area(rw, file, &req->ki_pos, req->ki_nbytes);
56420+ if (!ret)
56421+ ret = rw_verify_area(rw, file, &req->ki_pos, req->ki_nbytes);
56422 if (ret < 0) {
56423 if (iovec != &inline_vec)
56424 kfree(iovec);
55687diff --git a/fs/attr.c b/fs/attr.c 56425diff --git a/fs/attr.c b/fs/attr.c
55688index 5d4e59d..fd02418 100644 56426index 5d4e59d..fd02418 100644
55689--- a/fs/attr.c 56427--- a/fs/attr.c
@@ -55697,7 +56435,7 @@ index 5d4e59d..fd02418 100644
55697 goto out_sig; 56435 goto out_sig;
55698 if (offset > inode->i_sb->s_maxbytes) 56436 if (offset > inode->i_sb->s_maxbytes)
55699diff --git a/fs/autofs4/waitq.c b/fs/autofs4/waitq.c 56437diff --git a/fs/autofs4/waitq.c b/fs/autofs4/waitq.c
55700index 689e40d..515cac5 100644 56438index 116fd38..c04182da 100644
55701--- a/fs/autofs4/waitq.c 56439--- a/fs/autofs4/waitq.c
55702+++ b/fs/autofs4/waitq.c 56440+++ b/fs/autofs4/waitq.c
55703@@ -59,7 +59,7 @@ static int autofs4_write(struct autofs_sb_info *sbi, 56441@@ -59,7 +59,7 @@ static int autofs4_write(struct autofs_sb_info *sbi,
@@ -55720,7 +56458,7 @@ index 689e40d..515cac5 100644
55720 int autofs4_wait(struct autofs_sb_info *sbi, struct dentry *dentry, 56458 int autofs4_wait(struct autofs_sb_info *sbi, struct dentry *dentry,
55721 enum autofs_notify notify) 56459 enum autofs_notify notify)
55722 { 56460 {
55723@@ -373,7 +377,12 @@ int autofs4_wait(struct autofs_sb_info *sbi, struct dentry *dentry, 56461@@ -385,7 +389,12 @@ int autofs4_wait(struct autofs_sb_info *sbi, struct dentry *dentry,
55724 56462
55725 /* If this is a direct mount request create a dummy name */ 56463 /* If this is a direct mount request create a dummy name */
55726 if (IS_ROOT(dentry) && autofs_type_trigger(sbi->type)) 56464 if (IS_ROOT(dentry) && autofs_type_trigger(sbi->type))
@@ -55845,7 +56583,7 @@ index ca0ba15..0fa3257 100644
55845 fd_offset + ex.a_text); 56583 fd_offset + ex.a_text);
55846 if (error != N_DATADDR(ex)) { 56584 if (error != N_DATADDR(ex)) {
55847diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c 56585diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
55848index 571a423..eed5754 100644 56586index 67be295..83e2f86 100644
55849--- a/fs/binfmt_elf.c 56587--- a/fs/binfmt_elf.c
55850+++ b/fs/binfmt_elf.c 56588+++ b/fs/binfmt_elf.c
55851@@ -34,6 +34,7 @@ 56589@@ -34,6 +34,7 @@
@@ -56360,7 +57098,7 @@ index 571a423..eed5754 100644
56360 /* 57098 /*
56361 * These are the functions used to load ELF style executables and shared 57099 * These are the functions used to load ELF style executables and shared
56362 * libraries. There is no binary dependent code anywhere else. 57100 * libraries. There is no binary dependent code anywhere else.
56363@@ -554,6 +915,11 @@ static unsigned long randomize_stack_top(unsigned long stack_top) 57101@@ -551,6 +912,11 @@ static unsigned long randomize_stack_top(unsigned long stack_top)
56364 { 57102 {
56365 unsigned int random_variable = 0; 57103 unsigned int random_variable = 0;
56366 57104
@@ -56372,7 +57110,7 @@ index 571a423..eed5754 100644
56372 if ((current->flags & PF_RANDOMIZE) && 57110 if ((current->flags & PF_RANDOMIZE) &&
56373 !(current->personality & ADDR_NO_RANDOMIZE)) { 57111 !(current->personality & ADDR_NO_RANDOMIZE)) {
56374 random_variable = get_random_int() & STACK_RND_MASK; 57112 random_variable = get_random_int() & STACK_RND_MASK;
56375@@ -572,7 +938,7 @@ static int load_elf_binary(struct linux_binprm *bprm) 57113@@ -569,7 +935,7 @@ static int load_elf_binary(struct linux_binprm *bprm)
56376 unsigned long load_addr = 0, load_bias = 0; 57114 unsigned long load_addr = 0, load_bias = 0;
56377 int load_addr_set = 0; 57115 int load_addr_set = 0;
56378 char * elf_interpreter = NULL; 57116 char * elf_interpreter = NULL;
@@ -56381,7 +57119,7 @@ index 571a423..eed5754 100644
56381 struct elf_phdr *elf_ppnt, *elf_phdata; 57119 struct elf_phdr *elf_ppnt, *elf_phdata;
56382 unsigned long elf_bss, elf_brk; 57120 unsigned long elf_bss, elf_brk;
56383 int retval, i; 57121 int retval, i;
56384@@ -582,12 +948,12 @@ static int load_elf_binary(struct linux_binprm *bprm) 57122@@ -579,12 +945,12 @@ static int load_elf_binary(struct linux_binprm *bprm)
56385 unsigned long start_code, end_code, start_data, end_data; 57123 unsigned long start_code, end_code, start_data, end_data;
56386 unsigned long reloc_func_desc __maybe_unused = 0; 57124 unsigned long reloc_func_desc __maybe_unused = 0;
56387 int executable_stack = EXSTACK_DEFAULT; 57125 int executable_stack = EXSTACK_DEFAULT;
@@ -56395,7 +57133,7 @@ index 571a423..eed5754 100644
56395 57133
56396 loc = kmalloc(sizeof(*loc), GFP_KERNEL); 57134 loc = kmalloc(sizeof(*loc), GFP_KERNEL);
56397 if (!loc) { 57135 if (!loc) {
56398@@ -723,11 +1089,82 @@ static int load_elf_binary(struct linux_binprm *bprm) 57136@@ -720,11 +1086,82 @@ static int load_elf_binary(struct linux_binprm *bprm)
56399 goto out_free_dentry; 57137 goto out_free_dentry;
56400 57138
56401 /* OK, This is the point of no return */ 57139 /* OK, This is the point of no return */
@@ -56479,7 +57217,7 @@ index 571a423..eed5754 100644
56479 if (elf_read_implies_exec(loc->elf_ex, executable_stack)) 57217 if (elf_read_implies_exec(loc->elf_ex, executable_stack))
56480 current->personality |= READ_IMPLIES_EXEC; 57218 current->personality |= READ_IMPLIES_EXEC;
56481 57219
56482@@ -817,6 +1254,20 @@ static int load_elf_binary(struct linux_binprm *bprm) 57220@@ -814,6 +1251,20 @@ static int load_elf_binary(struct linux_binprm *bprm)
56483 #else 57221 #else
56484 load_bias = ELF_PAGESTART(ELF_ET_DYN_BASE - vaddr); 57222 load_bias = ELF_PAGESTART(ELF_ET_DYN_BASE - vaddr);
56485 #endif 57223 #endif
@@ -56500,7 +57238,7 @@ index 571a423..eed5754 100644
56500 } 57238 }
56501 57239
56502 error = elf_map(bprm->file, load_bias + vaddr, elf_ppnt, 57240 error = elf_map(bprm->file, load_bias + vaddr, elf_ppnt,
56503@@ -849,9 +1300,9 @@ static int load_elf_binary(struct linux_binprm *bprm) 57241@@ -846,9 +1297,9 @@ static int load_elf_binary(struct linux_binprm *bprm)
56504 * allowed task size. Note that p_filesz must always be 57242 * allowed task size. Note that p_filesz must always be
56505 * <= p_memsz so it is only necessary to check p_memsz. 57243 * <= p_memsz so it is only necessary to check p_memsz.
56506 */ 57244 */
@@ -56513,7 +57251,7 @@ index 571a423..eed5754 100644
56513 /* set_brk can never work. Avoid overflows. */ 57251 /* set_brk can never work. Avoid overflows. */
56514 send_sig(SIGKILL, current, 0); 57252 send_sig(SIGKILL, current, 0);
56515 retval = -EINVAL; 57253 retval = -EINVAL;
56516@@ -890,17 +1341,45 @@ static int load_elf_binary(struct linux_binprm *bprm) 57254@@ -887,17 +1338,45 @@ static int load_elf_binary(struct linux_binprm *bprm)
56517 goto out_free_dentry; 57255 goto out_free_dentry;
56518 } 57256 }
56519 if (likely(elf_bss != elf_brk) && unlikely(padzero(elf_bss))) { 57257 if (likely(elf_bss != elf_brk) && unlikely(padzero(elf_bss))) {
@@ -56565,7 +57303,7 @@ index 571a423..eed5754 100644
56565 load_bias); 57303 load_bias);
56566 if (!IS_ERR((void *)elf_entry)) { 57304 if (!IS_ERR((void *)elf_entry)) {
56567 /* 57305 /*
56568@@ -1122,7 +1601,7 @@ static bool always_dump_vma(struct vm_area_struct *vma) 57306@@ -1119,7 +1598,7 @@ static bool always_dump_vma(struct vm_area_struct *vma)
56569 * Decide what to dump of a segment, part, all or none. 57307 * Decide what to dump of a segment, part, all or none.
56570 */ 57308 */
56571 static unsigned long vma_dump_size(struct vm_area_struct *vma, 57309 static unsigned long vma_dump_size(struct vm_area_struct *vma,
@@ -56574,7 +57312,7 @@ index 571a423..eed5754 100644
56574 { 57312 {
56575 #define FILTER(type) (mm_flags & (1UL << MMF_DUMP_##type)) 57313 #define FILTER(type) (mm_flags & (1UL << MMF_DUMP_##type))
56576 57314
56577@@ -1160,7 +1639,7 @@ static unsigned long vma_dump_size(struct vm_area_struct *vma, 57315@@ -1157,7 +1636,7 @@ static unsigned long vma_dump_size(struct vm_area_struct *vma,
56578 if (vma->vm_file == NULL) 57316 if (vma->vm_file == NULL)
56579 return 0; 57317 return 0;
56580 57318
@@ -56583,7 +57321,7 @@ index 571a423..eed5754 100644
56583 goto whole; 57321 goto whole;
56584 57322
56585 /* 57323 /*
56586@@ -1367,9 +1846,9 @@ static void fill_auxv_note(struct memelfnote *note, struct mm_struct *mm) 57324@@ -1364,9 +1843,9 @@ static void fill_auxv_note(struct memelfnote *note, struct mm_struct *mm)
56587 { 57325 {
56588 elf_addr_t *auxv = (elf_addr_t *) mm->saved_auxv; 57326 elf_addr_t *auxv = (elf_addr_t *) mm->saved_auxv;
56589 int i = 0; 57327 int i = 0;
@@ -56595,7 +57333,7 @@ index 571a423..eed5754 100644
56595 fill_note(note, "CORE", NT_AUXV, i * sizeof(elf_addr_t), auxv); 57333 fill_note(note, "CORE", NT_AUXV, i * sizeof(elf_addr_t), auxv);
56596 } 57334 }
56597 57335
56598@@ -1378,7 +1857,7 @@ static void fill_siginfo_note(struct memelfnote *note, user_siginfo_t *csigdata, 57336@@ -1375,7 +1854,7 @@ static void fill_siginfo_note(struct memelfnote *note, user_siginfo_t *csigdata,
56599 { 57337 {
56600 mm_segment_t old_fs = get_fs(); 57338 mm_segment_t old_fs = get_fs();
56601 set_fs(KERNEL_DS); 57339 set_fs(KERNEL_DS);
@@ -56604,7 +57342,7 @@ index 571a423..eed5754 100644
56604 set_fs(old_fs); 57342 set_fs(old_fs);
56605 fill_note(note, "CORE", NT_SIGINFO, sizeof(*csigdata), csigdata); 57343 fill_note(note, "CORE", NT_SIGINFO, sizeof(*csigdata), csigdata);
56606 } 57344 }
56607@@ -2002,14 +2481,14 @@ static void fill_extnum_info(struct elfhdr *elf, struct elf_shdr *shdr4extnum, 57345@@ -1999,14 +2478,14 @@ static void fill_extnum_info(struct elfhdr *elf, struct elf_shdr *shdr4extnum,
56608 } 57346 }
56609 57347
56610 static size_t elf_core_vma_data_size(struct vm_area_struct *gate_vma, 57348 static size_t elf_core_vma_data_size(struct vm_area_struct *gate_vma,
@@ -56621,7 +57359,7 @@ index 571a423..eed5754 100644
56621 return size; 57359 return size;
56622 } 57360 }
56623 57361
56624@@ -2100,7 +2579,7 @@ static int elf_core_dump(struct coredump_params *cprm) 57362@@ -2097,7 +2576,7 @@ static int elf_core_dump(struct coredump_params *cprm)
56625 57363
56626 dataoff = offset = roundup(offset, ELF_EXEC_PAGESIZE); 57364 dataoff = offset = roundup(offset, ELF_EXEC_PAGESIZE);
56627 57365
@@ -56630,7 +57368,7 @@ index 571a423..eed5754 100644
56630 offset += elf_core_extra_data_size(); 57368 offset += elf_core_extra_data_size();
56631 e_shoff = offset; 57369 e_shoff = offset;
56632 57370
56633@@ -2128,7 +2607,7 @@ static int elf_core_dump(struct coredump_params *cprm) 57371@@ -2125,7 +2604,7 @@ static int elf_core_dump(struct coredump_params *cprm)
56634 phdr.p_offset = offset; 57372 phdr.p_offset = offset;
56635 phdr.p_vaddr = vma->vm_start; 57373 phdr.p_vaddr = vma->vm_start;
56636 phdr.p_paddr = 0; 57374 phdr.p_paddr = 0;
@@ -56639,7 +57377,7 @@ index 571a423..eed5754 100644
56639 phdr.p_memsz = vma->vm_end - vma->vm_start; 57377 phdr.p_memsz = vma->vm_end - vma->vm_start;
56640 offset += phdr.p_filesz; 57378 offset += phdr.p_filesz;
56641 phdr.p_flags = vma->vm_flags & VM_READ ? PF_R : 0; 57379 phdr.p_flags = vma->vm_flags & VM_READ ? PF_R : 0;
56642@@ -2161,7 +2640,7 @@ static int elf_core_dump(struct coredump_params *cprm) 57380@@ -2158,7 +2637,7 @@ static int elf_core_dump(struct coredump_params *cprm)
56643 unsigned long addr; 57381 unsigned long addr;
56644 unsigned long end; 57382 unsigned long end;
56645 57383
@@ -56648,7 +57386,7 @@ index 571a423..eed5754 100644
56648 57386
56649 for (addr = vma->vm_start; addr < end; addr += PAGE_SIZE) { 57387 for (addr = vma->vm_start; addr < end; addr += PAGE_SIZE) {
56650 struct page *page; 57388 struct page *page;
56651@@ -2202,6 +2681,167 @@ out: 57389@@ -2199,6 +2678,167 @@ out:
56652 57390
56653 #endif /* CONFIG_ELF_CORE */ 57391 #endif /* CONFIG_ELF_CORE */
56654 57392
@@ -56816,47 +57554,11 @@ index 571a423..eed5754 100644
56816 static int __init init_elf_binfmt(void) 57554 static int __init init_elf_binfmt(void)
56817 { 57555 {
56818 register_binfmt(&elf_format); 57556 register_binfmt(&elf_format);
56819diff --git a/fs/binfmt_flat.c b/fs/binfmt_flat.c
56820index d50bbe5..af3b649 100644
56821--- a/fs/binfmt_flat.c
56822+++ b/fs/binfmt_flat.c
56823@@ -566,7 +566,9 @@ static int load_flat_file(struct linux_binprm * bprm,
56824 realdatastart = (unsigned long) -ENOMEM;
56825 printk("Unable to allocate RAM for process data, errno %d\n",
56826 (int)-realdatastart);
56827+ down_write(&current->mm->mmap_sem);
56828 vm_munmap(textpos, text_len);
56829+ up_write(&current->mm->mmap_sem);
56830 ret = realdatastart;
56831 goto err;
56832 }
56833@@ -590,8 +592,10 @@ static int load_flat_file(struct linux_binprm * bprm,
56834 }
56835 if (IS_ERR_VALUE(result)) {
56836 printk("Unable to read data+bss, errno %d\n", (int)-result);
56837+ down_write(&current->mm->mmap_sem);
56838 vm_munmap(textpos, text_len);
56839 vm_munmap(realdatastart, len);
56840+ up_write(&current->mm->mmap_sem);
56841 ret = result;
56842 goto err;
56843 }
56844@@ -653,8 +657,10 @@ static int load_flat_file(struct linux_binprm * bprm,
56845 }
56846 if (IS_ERR_VALUE(result)) {
56847 printk("Unable to read code+data+bss, errno %d\n",(int)-result);
56848+ down_write(&current->mm->mmap_sem);
56849 vm_munmap(textpos, text_len + data_len + extra +
56850 MAX_SHARED_LIBS * sizeof(unsigned long));
56851+ up_write(&current->mm->mmap_sem);
56852 ret = result;
56853 goto err;
56854 }
56855diff --git a/fs/bio.c b/fs/bio.c 57557diff --git a/fs/bio.c b/fs/bio.c
56856index 33d79a4..c3c9893 100644 57558index 8754e7b..0669094 100644
56857--- a/fs/bio.c 57559--- a/fs/bio.c
56858+++ b/fs/bio.c 57560+++ b/fs/bio.c
56859@@ -1106,7 +1106,7 @@ struct bio *bio_copy_user_iov(struct request_queue *q, 57561@@ -1145,7 +1145,7 @@ struct bio *bio_copy_user_iov(struct request_queue *q,
56860 /* 57562 /*
56861 * Overflow, abort 57563 * Overflow, abort
56862 */ 57564 */
@@ -56865,7 +57567,7 @@ index 33d79a4..c3c9893 100644
56865 return ERR_PTR(-EINVAL); 57567 return ERR_PTR(-EINVAL);
56866 57568
56867 nr_pages += end - start; 57569 nr_pages += end - start;
56868@@ -1240,7 +1240,7 @@ static struct bio *__bio_map_user_iov(struct request_queue *q, 57570@@ -1279,7 +1279,7 @@ static struct bio *__bio_map_user_iov(struct request_queue *q,
56869 /* 57571 /*
56870 * Overflow, abort 57572 * Overflow, abort
56871 */ 57573 */
@@ -56874,7 +57576,7 @@ index 33d79a4..c3c9893 100644
56874 return ERR_PTR(-EINVAL); 57576 return ERR_PTR(-EINVAL);
56875 57577
56876 nr_pages += end - start; 57578 nr_pages += end - start;
56877@@ -1502,7 +1502,7 @@ static void bio_copy_kern_endio(struct bio *bio, int err) 57579@@ -1541,7 +1541,7 @@ static void bio_copy_kern_endio(struct bio *bio, int err)
56878 const int read = bio_data_dir(bio) == READ; 57580 const int read = bio_data_dir(bio) == READ;
56879 struct bio_map_data *bmd = bio->bi_private; 57581 struct bio_map_data *bmd = bio->bi_private;
56880 int i; 57582 int i;
@@ -56897,10 +57599,10 @@ index 1e86823..8e34695 100644
56897 else if (whole->bd_holder != NULL) 57599 else if (whole->bd_holder != NULL)
56898 return false; /* is a partition of a held device */ 57600 return false; /* is a partition of a held device */
56899diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c 57601diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c
56900index 3de01b4..6547c39 100644 57602index cbd3a7d6f..c6a2881 100644
56901--- a/fs/btrfs/ctree.c 57603--- a/fs/btrfs/ctree.c
56902+++ b/fs/btrfs/ctree.c 57604+++ b/fs/btrfs/ctree.c
56903@@ -1217,9 +1217,12 @@ static noinline int __btrfs_cow_block(struct btrfs_trans_handle *trans, 57605@@ -1216,9 +1216,12 @@ static noinline int __btrfs_cow_block(struct btrfs_trans_handle *trans,
56904 free_extent_buffer(buf); 57606 free_extent_buffer(buf);
56905 add_root_to_dirty_list(root); 57607 add_root_to_dirty_list(root);
56906 } else { 57608 } else {
@@ -56917,7 +57619,7 @@ index 3de01b4..6547c39 100644
56917 57619
56918 WARN_ON(trans->transid != btrfs_header_generation(parent)); 57620 WARN_ON(trans->transid != btrfs_header_generation(parent));
56919diff --git a/fs/btrfs/delayed-inode.c b/fs/btrfs/delayed-inode.c 57621diff --git a/fs/btrfs/delayed-inode.c b/fs/btrfs/delayed-inode.c
56920index 8d292fb..bc205c2 100644 57622index 451b00c..a2cccee 100644
56921--- a/fs/btrfs/delayed-inode.c 57623--- a/fs/btrfs/delayed-inode.c
56922+++ b/fs/btrfs/delayed-inode.c 57624+++ b/fs/btrfs/delayed-inode.c
56923@@ -459,7 +459,7 @@ static int __btrfs_add_delayed_deletion_item(struct btrfs_delayed_node *node, 57625@@ -459,7 +459,7 @@ static int __btrfs_add_delayed_deletion_item(struct btrfs_delayed_node *node,
@@ -56929,26 +57631,26 @@ index 8d292fb..bc205c2 100644
56929 if ((atomic_dec_return(&delayed_root->items) < 57631 if ((atomic_dec_return(&delayed_root->items) <
56930 BTRFS_DELAYED_BACKGROUND || seq % BTRFS_DELAYED_BATCH == 0) && 57632 BTRFS_DELAYED_BACKGROUND || seq % BTRFS_DELAYED_BATCH == 0) &&
56931 waitqueue_active(&delayed_root->wait)) 57633 waitqueue_active(&delayed_root->wait))
56932@@ -1379,7 +1379,7 @@ void btrfs_assert_delayed_root_empty(struct btrfs_root *root) 57634@@ -1409,7 +1409,7 @@ void btrfs_assert_delayed_root_empty(struct btrfs_root *root)
56933 static int refs_newer(struct btrfs_delayed_root *delayed_root, 57635
56934 int seq, int count) 57636 static int could_end_wait(struct btrfs_delayed_root *delayed_root, int seq)
56935 { 57637 {
56936- int val = atomic_read(&delayed_root->items_seq); 57638- int val = atomic_read(&delayed_root->items_seq);
56937+ int val = atomic_read_unchecked(&delayed_root->items_seq); 57639+ int val = atomic_read_unchecked(&delayed_root->items_seq);
56938 57640
56939 if (val < seq || val >= seq + count) 57641 if (val < seq || val >= seq + BTRFS_DELAYED_BATCH)
56940 return 1; 57642 return 1;
56941@@ -1396,7 +1396,7 @@ void btrfs_balance_delayed_items(struct btrfs_root *root) 57643@@ -1433,7 +1433,7 @@ void btrfs_balance_delayed_items(struct btrfs_root *root)
56942 if (atomic_read(&delayed_root->items) < BTRFS_DELAYED_BACKGROUND) 57644 int seq;
56943 return; 57645 int ret;
56944 57646
56945- seq = atomic_read(&delayed_root->items_seq); 57647- seq = atomic_read(&delayed_root->items_seq);
56946+ seq = atomic_read_unchecked(&delayed_root->items_seq); 57648+ seq = atomic_read_unchecked(&delayed_root->items_seq);
56947 57649
56948 if (atomic_read(&delayed_root->items) >= BTRFS_DELAYED_WRITEBACK) { 57650 ret = btrfs_wq_run_delayed_node(delayed_root, root, 0);
56949 int ret; 57651 if (ret)
56950diff --git a/fs/btrfs/delayed-inode.h b/fs/btrfs/delayed-inode.h 57652diff --git a/fs/btrfs/delayed-inode.h b/fs/btrfs/delayed-inode.h
56951index a4b38f9..f86a509 100644 57653index f70119f..ab5894d 100644
56952--- a/fs/btrfs/delayed-inode.h 57654--- a/fs/btrfs/delayed-inode.h
56953+++ b/fs/btrfs/delayed-inode.h 57655+++ b/fs/btrfs/delayed-inode.h
56954@@ -43,7 +43,7 @@ struct btrfs_delayed_root { 57656@@ -43,7 +43,7 @@ struct btrfs_delayed_root {
@@ -56960,7 +57662,7 @@ index a4b38f9..f86a509 100644
56960 int nodes; /* for delayed nodes */ 57662 int nodes; /* for delayed nodes */
56961 wait_queue_head_t wait; 57663 wait_queue_head_t wait;
56962 }; 57664 };
56963@@ -87,7 +87,7 @@ static inline void btrfs_init_delayed_root( 57665@@ -90,7 +90,7 @@ static inline void btrfs_init_delayed_root(
56964 struct btrfs_delayed_root *delayed_root) 57666 struct btrfs_delayed_root *delayed_root)
56965 { 57667 {
56966 atomic_set(&delayed_root->items, 0); 57668 atomic_set(&delayed_root->items, 0);
@@ -56970,10 +57672,10 @@ index a4b38f9..f86a509 100644
56970 spin_lock_init(&delayed_root->lock); 57672 spin_lock_init(&delayed_root->lock);
56971 init_waitqueue_head(&delayed_root->wait); 57673 init_waitqueue_head(&delayed_root->wait);
56972diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c 57674diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
56973index 9f831bb..14afde5 100644 57675index a6d8efa..2f062cf 100644
56974--- a/fs/btrfs/ioctl.c 57676--- a/fs/btrfs/ioctl.c
56975+++ b/fs/btrfs/ioctl.c 57677+++ b/fs/btrfs/ioctl.c
56976@@ -3457,9 +3457,12 @@ static long btrfs_ioctl_space_info(struct btrfs_root *root, void __user *arg) 57678@@ -3491,9 +3491,12 @@ static long btrfs_ioctl_space_info(struct btrfs_root *root, void __user *arg)
56977 for (i = 0; i < num_types; i++) { 57679 for (i = 0; i < num_types; i++) {
56978 struct btrfs_space_info *tmp; 57680 struct btrfs_space_info *tmp;
56979 57681
@@ -56986,7 +57688,7 @@ index 9f831bb..14afde5 100644
56986 info = NULL; 57688 info = NULL;
56987 rcu_read_lock(); 57689 rcu_read_lock();
56988 list_for_each_entry_rcu(tmp, &root->fs_info->space_info, 57690 list_for_each_entry_rcu(tmp, &root->fs_info->space_info,
56989@@ -3481,10 +3484,7 @@ static long btrfs_ioctl_space_info(struct btrfs_root *root, void __user *arg) 57691@@ -3515,10 +3518,7 @@ static long btrfs_ioctl_space_info(struct btrfs_root *root, void __user *arg)
56990 memcpy(dest, &space, sizeof(space)); 57692 memcpy(dest, &space, sizeof(space));
56991 dest++; 57693 dest++;
56992 space_args.total_spaces++; 57694 space_args.total_spaces++;
@@ -56998,10 +57700,10 @@ index 9f831bb..14afde5 100644
56998 up_read(&info->groups_sem); 57700 up_read(&info->groups_sem);
56999 } 57701 }
57000diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c 57702diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
57001index d71a11d..384e2c4 100644 57703index d04db81..96e54f1 100644
57002--- a/fs/btrfs/super.c 57704--- a/fs/btrfs/super.c
57003+++ b/fs/btrfs/super.c 57705+++ b/fs/btrfs/super.c
57004@@ -265,7 +265,7 @@ void __btrfs_abort_transaction(struct btrfs_trans_handle *trans, 57706@@ -268,7 +268,7 @@ void __btrfs_abort_transaction(struct btrfs_trans_handle *trans,
57005 function, line, errstr); 57707 function, line, errstr);
57006 return; 57708 return;
57007 } 57709 }
@@ -57010,8 +57712,21 @@ index d71a11d..384e2c4 100644
57010 /* Wake up anybody who may be waiting on this transaction */ 57712 /* Wake up anybody who may be waiting on this transaction */
57011 wake_up(&root->fs_info->transaction_wait); 57713 wake_up(&root->fs_info->transaction_wait);
57012 wake_up(&root->fs_info->transaction_blocked_wait); 57714 wake_up(&root->fs_info->transaction_blocked_wait);
57715diff --git a/fs/btrfs/sysfs.c b/fs/btrfs/sysfs.c
57716index 865f4cf..f321e86 100644
57717--- a/fs/btrfs/sysfs.c
57718+++ b/fs/btrfs/sysfs.c
57719@@ -436,7 +436,7 @@ static int addrm_unknown_feature_attrs(struct btrfs_fs_info *fs_info, bool add)
57720 for (set = 0; set < FEAT_MAX; set++) {
57721 int i;
57722 struct attribute *attrs[2];
57723- struct attribute_group agroup = {
57724+ attribute_group_no_const agroup = {
57725 .name = "features",
57726 .attrs = attrs,
57727 };
57013diff --git a/fs/buffer.c b/fs/buffer.c 57728diff --git a/fs/buffer.c b/fs/buffer.c
57014index aeeea65..7651d590 100644 57729index 27265a8..289f488 100644
57015--- a/fs/buffer.c 57730--- a/fs/buffer.c
57016+++ b/fs/buffer.c 57731+++ b/fs/buffer.c
57017@@ -3428,7 +3428,7 @@ void __init buffer_init(void) 57732@@ -3428,7 +3428,7 @@ void __init buffer_init(void)
@@ -57178,10 +57893,10 @@ index ebaff36..7e3ea26 100644
57178 kunmap(page); 57893 kunmap(page);
57179 file_end_write(file); 57894 file_end_write(file);
57180diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c 57895diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c
57181index 2a0bcae..34ec24e 100644 57896index 45eda6d..9126f7f 100644
57182--- a/fs/ceph/dir.c 57897--- a/fs/ceph/dir.c
57183+++ b/fs/ceph/dir.c 57898+++ b/fs/ceph/dir.c
57184@@ -240,7 +240,7 @@ static int ceph_readdir(struct file *file, struct dir_context *ctx) 57899@@ -248,7 +248,7 @@ static int ceph_readdir(struct file *file, struct dir_context *ctx)
57185 struct ceph_fs_client *fsc = ceph_inode_to_client(inode); 57900 struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
57186 struct ceph_mds_client *mdsc = fsc->mdsc; 57901 struct ceph_mds_client *mdsc = fsc->mdsc;
57187 unsigned frag = fpos_frag(ctx->pos); 57902 unsigned frag = fpos_frag(ctx->pos);
@@ -57191,10 +57906,10 @@ index 2a0bcae..34ec24e 100644
57191 u32 ftype; 57906 u32 ftype;
57192 struct ceph_mds_reply_info_parsed *rinfo; 57907 struct ceph_mds_reply_info_parsed *rinfo;
57193diff --git a/fs/ceph/super.c b/fs/ceph/super.c 57908diff --git a/fs/ceph/super.c b/fs/ceph/super.c
57194index 6a0951e..03fac6d 100644 57909index 10a4ccb..92dbc5e 100644
57195--- a/fs/ceph/super.c 57910--- a/fs/ceph/super.c
57196+++ b/fs/ceph/super.c 57911+++ b/fs/ceph/super.c
57197@@ -870,7 +870,7 @@ static int ceph_compare_super(struct super_block *sb, void *data) 57912@@ -895,7 +895,7 @@ static int ceph_compare_super(struct super_block *sb, void *data)
57198 /* 57913 /*
57199 * construct our own bdi so we can control readahead, etc. 57914 * construct our own bdi so we can control readahead, etc.
57200 */ 57915 */
@@ -57203,7 +57918,7 @@ index 6a0951e..03fac6d 100644
57203 57918
57204 static int ceph_register_bdi(struct super_block *sb, 57919 static int ceph_register_bdi(struct super_block *sb,
57205 struct ceph_fs_client *fsc) 57920 struct ceph_fs_client *fsc)
57206@@ -887,7 +887,7 @@ static int ceph_register_bdi(struct super_block *sb, 57921@@ -912,7 +912,7 @@ static int ceph_register_bdi(struct super_block *sb,
57207 default_backing_dev_info.ra_pages; 57922 default_backing_dev_info.ra_pages;
57208 57923
57209 err = bdi_register(&fsc->backing_dev_info, NULL, "ceph-%ld", 57924 err = bdi_register(&fsc->backing_dev_info, NULL, "ceph-%ld",
@@ -57257,10 +57972,10 @@ index f3ac415..3d2420c 100644
57257 server->ops->print_stats(m, tcon); 57972 server->ops->print_stats(m, tcon);
57258 } 57973 }
57259diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c 57974diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c
57260index 849f613..eae6dec 100644 57975index 7c6b73c..a8f0db2 100644
57261--- a/fs/cifs/cifsfs.c 57976--- a/fs/cifs/cifsfs.c
57262+++ b/fs/cifs/cifsfs.c 57977+++ b/fs/cifs/cifsfs.c
57263@@ -1056,7 +1056,7 @@ cifs_init_request_bufs(void) 57978@@ -1068,7 +1068,7 @@ cifs_init_request_bufs(void)
57264 */ 57979 */
57265 cifs_req_cachep = kmem_cache_create("cifs_request", 57980 cifs_req_cachep = kmem_cache_create("cifs_request",
57266 CIFSMaxBufSize + max_hdr_size, 0, 57981 CIFSMaxBufSize + max_hdr_size, 0,
@@ -57269,7 +57984,7 @@ index 849f613..eae6dec 100644
57269 if (cifs_req_cachep == NULL) 57984 if (cifs_req_cachep == NULL)
57270 return -ENOMEM; 57985 return -ENOMEM;
57271 57986
57272@@ -1083,7 +1083,7 @@ cifs_init_request_bufs(void) 57987@@ -1095,7 +1095,7 @@ cifs_init_request_bufs(void)
57273 efficient to alloc 1 per page off the slab compared to 17K (5page) 57988 efficient to alloc 1 per page off the slab compared to 17K (5page)
57274 alloc of large cifs buffers even when page debugging is on */ 57989 alloc of large cifs buffers even when page debugging is on */
57275 cifs_sm_req_cachep = kmem_cache_create("cifs_small_rq", 57990 cifs_sm_req_cachep = kmem_cache_create("cifs_small_rq",
@@ -57278,7 +57993,7 @@ index 849f613..eae6dec 100644
57278 NULL); 57993 NULL);
57279 if (cifs_sm_req_cachep == NULL) { 57994 if (cifs_sm_req_cachep == NULL) {
57280 mempool_destroy(cifs_req_poolp); 57995 mempool_destroy(cifs_req_poolp);
57281@@ -1168,8 +1168,8 @@ init_cifs(void) 57996@@ -1180,8 +1180,8 @@ init_cifs(void)
57282 atomic_set(&bufAllocCount, 0); 57997 atomic_set(&bufAllocCount, 0);
57283 atomic_set(&smBufAllocCount, 0); 57998 atomic_set(&smBufAllocCount, 0);
57284 #ifdef CONFIG_CIFS_STATS2 57999 #ifdef CONFIG_CIFS_STATS2
@@ -57290,10 +58005,10 @@ index 849f613..eae6dec 100644
57290 58005
57291 atomic_set(&midCount, 0); 58006 atomic_set(&midCount, 0);
57292diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h 58007diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h
57293index 579c6d5..95b6d03353 100644 58008index 30f6e92..e915ba5 100644
57294--- a/fs/cifs/cifsglob.h 58009--- a/fs/cifs/cifsglob.h
57295+++ b/fs/cifs/cifsglob.h 58010+++ b/fs/cifs/cifsglob.h
57296@@ -797,35 +797,35 @@ struct cifs_tcon { 58011@@ -806,35 +806,35 @@ struct cifs_tcon {
57297 __u16 Flags; /* optional support bits */ 58012 __u16 Flags; /* optional support bits */
57298 enum statusEnum tidStatus; 58013 enum statusEnum tidStatus;
57299 #ifdef CONFIG_CIFS_STATS 58014 #ifdef CONFIG_CIFS_STATS
@@ -57353,7 +58068,7 @@ index 579c6d5..95b6d03353 100644
57353 } smb2_stats; 58068 } smb2_stats;
57354 #endif /* CONFIG_CIFS_SMB2 */ 58069 #endif /* CONFIG_CIFS_SMB2 */
57355 } stats; 58070 } stats;
57356@@ -1155,7 +1155,7 @@ convert_delimiter(char *path, char delim) 58071@@ -1170,7 +1170,7 @@ convert_delimiter(char *path, char delim)
57357 } 58072 }
57358 58073
57359 #ifdef CONFIG_CIFS_STATS 58074 #ifdef CONFIG_CIFS_STATS
@@ -57362,7 +58077,7 @@ index 579c6d5..95b6d03353 100644
57362 58077
57363 static inline void cifs_stats_bytes_written(struct cifs_tcon *tcon, 58078 static inline void cifs_stats_bytes_written(struct cifs_tcon *tcon,
57364 unsigned int bytes) 58079 unsigned int bytes)
57365@@ -1521,8 +1521,8 @@ GLOBAL_EXTERN atomic_t tconInfoReconnectCount; 58080@@ -1536,8 +1536,8 @@ GLOBAL_EXTERN atomic_t tconInfoReconnectCount;
57366 /* Various Debug counters */ 58081 /* Various Debug counters */
57367 GLOBAL_EXTERN atomic_t bufAllocCount; /* current number allocated */ 58082 GLOBAL_EXTERN atomic_t bufAllocCount; /* current number allocated */
57368 #ifdef CONFIG_CIFS_STATS2 58083 #ifdef CONFIG_CIFS_STATS2
@@ -57374,7 +58089,7 @@ index 579c6d5..95b6d03353 100644
57374 GLOBAL_EXTERN atomic_t smBufAllocCount; 58089 GLOBAL_EXTERN atomic_t smBufAllocCount;
57375 GLOBAL_EXTERN atomic_t midCount; 58090 GLOBAL_EXTERN atomic_t midCount;
57376diff --git a/fs/cifs/file.c b/fs/cifs/file.c 58091diff --git a/fs/cifs/file.c b/fs/cifs/file.c
57377index a1c9ead..63e4c62 100644 58092index 87c4dd0..a90f115 100644
57378--- a/fs/cifs/file.c 58093--- a/fs/cifs/file.c
57379+++ b/fs/cifs/file.c 58094+++ b/fs/cifs/file.c
57380@@ -1900,10 +1900,14 @@ static int cifs_writepages(struct address_space *mapping, 58095@@ -1900,10 +1900,14 @@ static int cifs_writepages(struct address_space *mapping,
@@ -57396,7 +58111,7 @@ index a1c9ead..63e4c62 100644
57396 } 58111 }
57397 retry: 58112 retry:
57398diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c 58113diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c
57399index 2f9f379..43f8025 100644 58114index 3b0c62e..f7d090c 100644
57400--- a/fs/cifs/misc.c 58115--- a/fs/cifs/misc.c
57401+++ b/fs/cifs/misc.c 58116+++ b/fs/cifs/misc.c
57402@@ -170,7 +170,7 @@ cifs_buf_get(void) 58117@@ -170,7 +170,7 @@ cifs_buf_get(void)
@@ -57418,10 +58133,10 @@ index 2f9f379..43f8025 100644
57418 58133
57419 } 58134 }
57420diff --git a/fs/cifs/smb1ops.c b/fs/cifs/smb1ops.c 58135diff --git a/fs/cifs/smb1ops.c b/fs/cifs/smb1ops.c
57421index ffc9ef9..b3c992b 100644 58136index d1fdfa8..94558f8 100644
57422--- a/fs/cifs/smb1ops.c 58137--- a/fs/cifs/smb1ops.c
57423+++ b/fs/cifs/smb1ops.c 58138+++ b/fs/cifs/smb1ops.c
57424@@ -609,27 +609,27 @@ static void 58139@@ -626,27 +626,27 @@ static void
57425 cifs_clear_stats(struct cifs_tcon *tcon) 58140 cifs_clear_stats(struct cifs_tcon *tcon)
57426 { 58141 {
57427 #ifdef CONFIG_CIFS_STATS 58142 #ifdef CONFIG_CIFS_STATS
@@ -57470,7 +58185,7 @@ index ffc9ef9..b3c992b 100644
57470 #endif 58185 #endif
57471 } 58186 }
57472 58187
57473@@ -638,36 +638,36 @@ cifs_print_stats(struct seq_file *m, struct cifs_tcon *tcon) 58188@@ -655,36 +655,36 @@ cifs_print_stats(struct seq_file *m, struct cifs_tcon *tcon)
57474 { 58189 {
57475 #ifdef CONFIG_CIFS_STATS 58190 #ifdef CONFIG_CIFS_STATS
57476 seq_printf(m, " Oplocks breaks: %d", 58191 seq_printf(m, " Oplocks breaks: %d",
@@ -57527,7 +58242,7 @@ index ffc9ef9..b3c992b 100644
57527 } 58242 }
57528 58243
57529diff --git a/fs/cifs/smb2ops.c b/fs/cifs/smb2ops.c 58244diff --git a/fs/cifs/smb2ops.c b/fs/cifs/smb2ops.c
57530index 192f51a..539307e 100644 58245index 35ddc3e..563e809 100644
57531--- a/fs/cifs/smb2ops.c 58246--- a/fs/cifs/smb2ops.c
57532+++ b/fs/cifs/smb2ops.c 58247+++ b/fs/cifs/smb2ops.c
57533@@ -364,8 +364,8 @@ smb2_clear_stats(struct cifs_tcon *tcon) 58248@@ -364,8 +364,8 @@ smb2_clear_stats(struct cifs_tcon *tcon)
@@ -57648,10 +58363,10 @@ index 192f51a..539307e 100644
57648 } 58363 }
57649 58364
57650diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c 58365diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c
57651index 787e171..31dcd0a 100644 58366index 8603447..f9caeee 100644
57652--- a/fs/cifs/smb2pdu.c 58367--- a/fs/cifs/smb2pdu.c
57653+++ b/fs/cifs/smb2pdu.c 58368+++ b/fs/cifs/smb2pdu.c
57654@@ -2093,8 +2093,7 @@ SMB2_query_directory(const unsigned int xid, struct cifs_tcon *tcon, 58369@@ -2094,8 +2094,7 @@ SMB2_query_directory(const unsigned int xid, struct cifs_tcon *tcon,
57655 default: 58370 default:
57656 cifs_dbg(VFS, "info level %u isn't supported\n", 58371 cifs_dbg(VFS, "info level %u isn't supported\n",
57657 srch_inf->info_level); 58372 srch_inf->info_level);
@@ -57840,7 +58555,7 @@ index a81147e..20bf2b5 100644
57840 58555
57841 /* 58556 /*
57842diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c 58557diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c
57843index dc52e13..ec61057 100644 58558index 3881610..ab3df0b 100644
57844--- a/fs/compat_ioctl.c 58559--- a/fs/compat_ioctl.c
57845+++ b/fs/compat_ioctl.c 58560+++ b/fs/compat_ioctl.c
57846@@ -621,7 +621,7 @@ static int serial_struct_ioctl(unsigned fd, unsigned cmd, 58561@@ -621,7 +621,7 @@ static int serial_struct_ioctl(unsigned fd, unsigned cmd,
@@ -57852,7 +58567,7 @@ index dc52e13..ec61057 100644
57852 if (__get_user(ss.iomem_reg_shift, &ss32->iomem_reg_shift) || 58567 if (__get_user(ss.iomem_reg_shift, &ss32->iomem_reg_shift) ||
57853 __get_user(ss.port_high, &ss32->port_high)) 58568 __get_user(ss.port_high, &ss32->port_high))
57854 return -EFAULT; 58569 return -EFAULT;
57855@@ -702,8 +702,8 @@ static int do_i2c_rdwr_ioctl(unsigned int fd, unsigned int cmd, 58570@@ -703,8 +703,8 @@ static int do_i2c_rdwr_ioctl(unsigned int fd, unsigned int cmd,
57856 for (i = 0; i < nmsgs; i++) { 58571 for (i = 0; i < nmsgs; i++) {
57857 if (copy_in_user(&tmsgs[i].addr, &umsgs[i].addr, 3*sizeof(u16))) 58572 if (copy_in_user(&tmsgs[i].addr, &umsgs[i].addr, 3*sizeof(u16)))
57858 return -EFAULT; 58573 return -EFAULT;
@@ -57863,7 +58578,7 @@ index dc52e13..ec61057 100644
57863 return -EFAULT; 58578 return -EFAULT;
57864 } 58579 }
57865 return sys_ioctl(fd, cmd, (unsigned long)tdata); 58580 return sys_ioctl(fd, cmd, (unsigned long)tdata);
57866@@ -796,7 +796,7 @@ static int compat_ioctl_preallocate(struct file *file, 58581@@ -797,7 +797,7 @@ static int compat_ioctl_preallocate(struct file *file,
57867 copy_in_user(&p->l_len, &p32->l_len, sizeof(s64)) || 58582 copy_in_user(&p->l_len, &p32->l_len, sizeof(s64)) ||
57868 copy_in_user(&p->l_sysid, &p32->l_sysid, sizeof(s32)) || 58583 copy_in_user(&p->l_sysid, &p32->l_sysid, sizeof(s32)) ||
57869 copy_in_user(&p->l_pid, &p32->l_pid, sizeof(u32)) || 58584 copy_in_user(&p->l_pid, &p32->l_pid, sizeof(u32)) ||
@@ -57872,7 +58587,7 @@ index dc52e13..ec61057 100644
57872 return -EFAULT; 58587 return -EFAULT;
57873 58588
57874 return ioctl_preallocate(file, p); 58589 return ioctl_preallocate(file, p);
57875@@ -1616,8 +1616,8 @@ asmlinkage long compat_sys_ioctl(unsigned int fd, unsigned int cmd, 58590@@ -1617,8 +1617,8 @@ asmlinkage long compat_sys_ioctl(unsigned int fd, unsigned int cmd,
57876 static int __init init_sys32_ioctl_cmp(const void *p, const void *q) 58591 static int __init init_sys32_ioctl_cmp(const void *p, const void *q)
57877 { 58592 {
57878 unsigned int a, b; 58593 unsigned int a, b;
@@ -57912,10 +58627,27 @@ index e081acb..911df21 100644
57912 /* 58627 /*
57913 * We'll have a dentry and an inode for 58628 * We'll have a dentry and an inode for
57914diff --git a/fs/coredump.c b/fs/coredump.c 58629diff --git a/fs/coredump.c b/fs/coredump.c
57915index bc3fbcd..6031650 100644 58630index e3ad709..836c55f 100644
57916--- a/fs/coredump.c 58631--- a/fs/coredump.c
57917+++ b/fs/coredump.c 58632+++ b/fs/coredump.c
57918@@ -438,8 +438,8 @@ static void wait_for_dump_helpers(struct file *file) 58633@@ -73,10 +73,15 @@ static int expand_corename(struct core_name *cn, int size)
58634 static int cn_vprintf(struct core_name *cn, const char *fmt, va_list arg)
58635 {
58636 int free, need;
58637+ va_list arg_copy;
58638
58639 again:
58640 free = cn->size - cn->used;
58641- need = vsnprintf(cn->corename + cn->used, free, fmt, arg);
58642+
58643+ va_copy(arg_copy, arg);
58644+ need = vsnprintf(cn->corename + cn->used, free, fmt, arg_copy);
58645+ va_end(arg_copy);
58646+
58647 if (need < free) {
58648 cn->used += need;
58649 return 0;
58650@@ -437,8 +442,8 @@ static void wait_for_dump_helpers(struct file *file)
57919 struct pipe_inode_info *pipe = file->private_data; 58651 struct pipe_inode_info *pipe = file->private_data;
57920 58652
57921 pipe_lock(pipe); 58653 pipe_lock(pipe);
@@ -57926,7 +58658,7 @@ index bc3fbcd..6031650 100644
57926 wake_up_interruptible_sync(&pipe->wait); 58658 wake_up_interruptible_sync(&pipe->wait);
57927 kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN); 58659 kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN);
57928 pipe_unlock(pipe); 58660 pipe_unlock(pipe);
57929@@ -448,11 +448,11 @@ static void wait_for_dump_helpers(struct file *file) 58661@@ -447,11 +452,11 @@ static void wait_for_dump_helpers(struct file *file)
57930 * We actually want wait_event_freezable() but then we need 58662 * We actually want wait_event_freezable() but then we need
57931 * to clear TIF_SIGPENDING and improve dump_interrupted(). 58663 * to clear TIF_SIGPENDING and improve dump_interrupted().
57932 */ 58664 */
@@ -57941,7 +58673,7 @@ index bc3fbcd..6031650 100644
57941 pipe_unlock(pipe); 58673 pipe_unlock(pipe);
57942 } 58674 }
57943 58675
57944@@ -499,7 +499,9 @@ void do_coredump(const siginfo_t *siginfo) 58676@@ -498,7 +503,9 @@ void do_coredump(const siginfo_t *siginfo)
57945 struct files_struct *displaced; 58677 struct files_struct *displaced;
57946 bool need_nonrelative = false; 58678 bool need_nonrelative = false;
57947 bool core_dumped = false; 58679 bool core_dumped = false;
@@ -57952,7 +58684,7 @@ index bc3fbcd..6031650 100644
57952 struct coredump_params cprm = { 58684 struct coredump_params cprm = {
57953 .siginfo = siginfo, 58685 .siginfo = siginfo,
57954 .regs = signal_pt_regs(), 58686 .regs = signal_pt_regs(),
57955@@ -512,12 +514,17 @@ void do_coredump(const siginfo_t *siginfo) 58687@@ -511,12 +518,17 @@ void do_coredump(const siginfo_t *siginfo)
57956 .mm_flags = mm->flags, 58688 .mm_flags = mm->flags,
57957 }; 58689 };
57958 58690
@@ -57972,7 +58704,7 @@ index bc3fbcd..6031650 100644
57972 goto fail; 58704 goto fail;
57973 58705
57974 cred = prepare_creds(); 58706 cred = prepare_creds();
57975@@ -536,7 +543,7 @@ void do_coredump(const siginfo_t *siginfo) 58707@@ -535,7 +547,7 @@ void do_coredump(const siginfo_t *siginfo)
57976 need_nonrelative = true; 58708 need_nonrelative = true;
57977 } 58709 }
57978 58710
@@ -57981,7 +58713,7 @@ index bc3fbcd..6031650 100644
57981 if (retval < 0) 58713 if (retval < 0)
57982 goto fail_creds; 58714 goto fail_creds;
57983 58715
57984@@ -579,7 +586,7 @@ void do_coredump(const siginfo_t *siginfo) 58716@@ -578,7 +590,7 @@ void do_coredump(const siginfo_t *siginfo)
57985 } 58717 }
57986 cprm.limit = RLIM_INFINITY; 58718 cprm.limit = RLIM_INFINITY;
57987 58719
@@ -57990,7 +58722,7 @@ index bc3fbcd..6031650 100644
57990 if (core_pipe_limit && (core_pipe_limit < dump_count)) { 58722 if (core_pipe_limit && (core_pipe_limit < dump_count)) {
57991 printk(KERN_WARNING "Pid %d(%s) over core_pipe_limit\n", 58723 printk(KERN_WARNING "Pid %d(%s) over core_pipe_limit\n",
57992 task_tgid_vnr(current), current->comm); 58724 task_tgid_vnr(current), current->comm);
57993@@ -611,6 +618,8 @@ void do_coredump(const siginfo_t *siginfo) 58725@@ -610,6 +622,8 @@ void do_coredump(const siginfo_t *siginfo)
57994 } else { 58726 } else {
57995 struct inode *inode; 58727 struct inode *inode;
57996 58728
@@ -57999,7 +58731,7 @@ index bc3fbcd..6031650 100644
57999 if (cprm.limit < binfmt->min_coredump) 58731 if (cprm.limit < binfmt->min_coredump)
58000 goto fail_unlock; 58732 goto fail_unlock;
58001 58733
58002@@ -669,7 +678,7 @@ close_fail: 58734@@ -668,7 +682,7 @@ close_fail:
58003 filp_close(cprm.file, NULL); 58735 filp_close(cprm.file, NULL);
58004 fail_dropcount: 58736 fail_dropcount:
58005 if (ispipe) 58737 if (ispipe)
@@ -58008,7 +58740,7 @@ index bc3fbcd..6031650 100644
58008 fail_unlock: 58740 fail_unlock:
58009 kfree(cn.corename); 58741 kfree(cn.corename);
58010 coredump_finish(mm, core_dumped); 58742 coredump_finish(mm, core_dumped);
58011@@ -690,6 +699,8 @@ int dump_emit(struct coredump_params *cprm, const void *addr, int nr) 58743@@ -689,6 +703,8 @@ int dump_emit(struct coredump_params *cprm, const void *addr, int nr)
58012 struct file *file = cprm->file; 58744 struct file *file = cprm->file;
58013 loff_t pos = file->f_pos; 58745 loff_t pos = file->f_pos;
58014 ssize_t n; 58746 ssize_t n;
@@ -58018,7 +58750,7 @@ index bc3fbcd..6031650 100644
58018 return 0; 58750 return 0;
58019 while (nr) { 58751 while (nr) {
58020diff --git a/fs/dcache.c b/fs/dcache.c 58752diff --git a/fs/dcache.c b/fs/dcache.c
58021index fdbe230..ba17c1f 100644 58753index ca02c13..7e2b581 100644
58022--- a/fs/dcache.c 58754--- a/fs/dcache.c
58023+++ b/fs/dcache.c 58755+++ b/fs/dcache.c
58024@@ -1495,7 +1495,7 @@ struct dentry *__d_alloc(struct super_block *sb, const struct qstr *name) 58756@@ -1495,7 +1495,7 @@ struct dentry *__d_alloc(struct super_block *sb, const struct qstr *name)
@@ -58030,7 +58762,7 @@ index fdbe230..ba17c1f 100644
58030 if (!dname) { 58762 if (!dname) {
58031 kmem_cache_free(dentry_cache, dentry); 58763 kmem_cache_free(dentry_cache, dentry);
58032 return NULL; 58764 return NULL;
58033@@ -3428,7 +3428,8 @@ void __init vfs_caches_init(unsigned long mempages) 58765@@ -3431,7 +3431,8 @@ void __init vfs_caches_init(unsigned long mempages)
58034 mempages -= reserve; 58766 mempages -= reserve;
58035 58767
58036 names_cachep = kmem_cache_create("names_cache", PATH_MAX, 0, 58768 names_cachep = kmem_cache_create("names_cache", PATH_MAX, 0,
@@ -58057,10 +58789,10 @@ index 9c0444c..628490c 100644
58057 } 58789 }
58058 EXPORT_SYMBOL_GPL(debugfs_create_dir); 58790 EXPORT_SYMBOL_GPL(debugfs_create_dir);
58059diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c 58791diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c
58060index c36c448..fc96710 100644 58792index b167ca4..a224e19 100644
58061--- a/fs/ecryptfs/inode.c 58793--- a/fs/ecryptfs/inode.c
58062+++ b/fs/ecryptfs/inode.c 58794+++ b/fs/ecryptfs/inode.c
58063@@ -675,7 +675,7 @@ static int ecryptfs_readlink_lower(struct dentry *dentry, char **buf, 58795@@ -673,7 +673,7 @@ static char *ecryptfs_readlink_lower(struct dentry *dentry, size_t *bufsiz)
58064 old_fs = get_fs(); 58796 old_fs = get_fs();
58065 set_fs(get_ds()); 58797 set_fs(get_ds());
58066 rc = lower_dentry->d_inode->i_op->readlink(lower_dentry, 58798 rc = lower_dentry->d_inode->i_op->readlink(lower_dentry,
@@ -58083,7 +58815,7 @@ index e4141f2..d8263e8 100644
58083 i += packet_length_size; 58815 i += packet_length_size;
58084 if (copy_to_user(&buf[i], msg_ctx->msg, msg_ctx->msg_size)) 58816 if (copy_to_user(&buf[i], msg_ctx->msg, msg_ctx->msg_size))
58085diff --git a/fs/exec.c b/fs/exec.c 58817diff --git a/fs/exec.c b/fs/exec.c
58086index 7ea097f..0158d8a 100644 58818index 3d78fcc..75b208f 100644
58087--- a/fs/exec.c 58819--- a/fs/exec.c
58088+++ b/fs/exec.c 58820+++ b/fs/exec.c
58089@@ -55,8 +55,20 @@ 58821@@ -55,8 +55,20 @@
@@ -58107,7 +58839,7 @@ index 7ea097f..0158d8a 100644
58107 #include <asm/mmu_context.h> 58839 #include <asm/mmu_context.h>
58108 #include <asm/tlb.h> 58840 #include <asm/tlb.h>
58109 58841
58110@@ -66,19 +78,34 @@ 58842@@ -65,19 +77,34 @@
58111 58843
58112 #include <trace/events/sched.h> 58844 #include <trace/events/sched.h>
58113 58845
@@ -58144,7 +58876,7 @@ index 7ea097f..0158d8a 100644
58144 write_unlock(&binfmt_lock); 58876 write_unlock(&binfmt_lock);
58145 } 58877 }
58146 58878
58147@@ -87,7 +114,7 @@ EXPORT_SYMBOL(__register_binfmt); 58879@@ -86,7 +113,7 @@ EXPORT_SYMBOL(__register_binfmt);
58148 void unregister_binfmt(struct linux_binfmt * fmt) 58880 void unregister_binfmt(struct linux_binfmt * fmt)
58149 { 58881 {
58150 write_lock(&binfmt_lock); 58882 write_lock(&binfmt_lock);
@@ -58153,7 +58885,7 @@ index 7ea097f..0158d8a 100644
58153 write_unlock(&binfmt_lock); 58885 write_unlock(&binfmt_lock);
58154 } 58886 }
58155 58887
58156@@ -181,18 +208,10 @@ static struct page *get_arg_page(struct linux_binprm *bprm, unsigned long pos, 58888@@ -180,18 +207,10 @@ static struct page *get_arg_page(struct linux_binprm *bprm, unsigned long pos,
58157 int write) 58889 int write)
58158 { 58890 {
58159 struct page *page; 58891 struct page *page;
@@ -58175,7 +58907,7 @@ index 7ea097f..0158d8a 100644
58175 return NULL; 58907 return NULL;
58176 58908
58177 if (write) { 58909 if (write) {
58178@@ -208,6 +227,17 @@ static struct page *get_arg_page(struct linux_binprm *bprm, unsigned long pos, 58910@@ -207,6 +226,17 @@ static struct page *get_arg_page(struct linux_binprm *bprm, unsigned long pos,
58179 if (size <= ARG_MAX) 58911 if (size <= ARG_MAX)
58180 return page; 58912 return page;
58181 58913
@@ -58193,7 +58925,7 @@ index 7ea097f..0158d8a 100644
58193 /* 58925 /*
58194 * Limit to 1/4-th the stack size for the argv+env strings. 58926 * Limit to 1/4-th the stack size for the argv+env strings.
58195 * This ensures that: 58927 * This ensures that:
58196@@ -267,6 +297,11 @@ static int __bprm_mm_init(struct linux_binprm *bprm) 58928@@ -266,6 +296,11 @@ static int __bprm_mm_init(struct linux_binprm *bprm)
58197 vma->vm_end = STACK_TOP_MAX; 58929 vma->vm_end = STACK_TOP_MAX;
58198 vma->vm_start = vma->vm_end - PAGE_SIZE; 58930 vma->vm_start = vma->vm_end - PAGE_SIZE;
58199 vma->vm_flags = VM_SOFTDIRTY | VM_STACK_FLAGS | VM_STACK_INCOMPLETE_SETUP; 58931 vma->vm_flags = VM_SOFTDIRTY | VM_STACK_FLAGS | VM_STACK_INCOMPLETE_SETUP;
@@ -58205,7 +58937,7 @@ index 7ea097f..0158d8a 100644
58205 vma->vm_page_prot = vm_get_page_prot(vma->vm_flags); 58937 vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
58206 INIT_LIST_HEAD(&vma->anon_vma_chain); 58938 INIT_LIST_HEAD(&vma->anon_vma_chain);
58207 58939
58208@@ -277,6 +312,12 @@ static int __bprm_mm_init(struct linux_binprm *bprm) 58940@@ -276,6 +311,12 @@ static int __bprm_mm_init(struct linux_binprm *bprm)
58209 mm->stack_vm = mm->total_vm = 1; 58941 mm->stack_vm = mm->total_vm = 1;
58210 up_write(&mm->mmap_sem); 58942 up_write(&mm->mmap_sem);
58211 bprm->p = vma->vm_end - sizeof(void *); 58943 bprm->p = vma->vm_end - sizeof(void *);
@@ -58218,7 +58950,7 @@ index 7ea097f..0158d8a 100644
58218 return 0; 58950 return 0;
58219 err: 58951 err:
58220 up_write(&mm->mmap_sem); 58952 up_write(&mm->mmap_sem);
58221@@ -397,7 +438,7 @@ struct user_arg_ptr { 58953@@ -396,7 +437,7 @@ struct user_arg_ptr {
58222 } ptr; 58954 } ptr;
58223 }; 58955 };
58224 58956
@@ -58227,7 +58959,7 @@ index 7ea097f..0158d8a 100644
58227 { 58959 {
58228 const char __user *native; 58960 const char __user *native;
58229 58961
58230@@ -406,14 +447,14 @@ static const char __user *get_user_arg_ptr(struct user_arg_ptr argv, int nr) 58962@@ -405,14 +446,14 @@ static const char __user *get_user_arg_ptr(struct user_arg_ptr argv, int nr)
58231 compat_uptr_t compat; 58963 compat_uptr_t compat;
58232 58964
58233 if (get_user(compat, argv.ptr.compat + nr)) 58965 if (get_user(compat, argv.ptr.compat + nr))
@@ -58244,7 +58976,7 @@ index 7ea097f..0158d8a 100644
58244 58976
58245 return native; 58977 return native;
58246 } 58978 }
58247@@ -432,7 +473,7 @@ static int count(struct user_arg_ptr argv, int max) 58979@@ -431,7 +472,7 @@ static int count(struct user_arg_ptr argv, int max)
58248 if (!p) 58980 if (!p)
58249 break; 58981 break;
58250 58982
@@ -58253,7 +58985,7 @@ index 7ea097f..0158d8a 100644
58253 return -EFAULT; 58985 return -EFAULT;
58254 58986
58255 if (i >= max) 58987 if (i >= max)
58256@@ -467,7 +508,7 @@ static int copy_strings(int argc, struct user_arg_ptr argv, 58988@@ -466,7 +507,7 @@ static int copy_strings(int argc, struct user_arg_ptr argv,
58257 58989
58258 ret = -EFAULT; 58990 ret = -EFAULT;
58259 str = get_user_arg_ptr(argv, argc); 58991 str = get_user_arg_ptr(argv, argc);
@@ -58262,7 +58994,7 @@ index 7ea097f..0158d8a 100644
58262 goto out; 58994 goto out;
58263 58995
58264 len = strnlen_user(str, MAX_ARG_STRLEN); 58996 len = strnlen_user(str, MAX_ARG_STRLEN);
58265@@ -549,7 +590,7 @@ int copy_strings_kernel(int argc, const char *const *__argv, 58997@@ -548,7 +589,7 @@ int copy_strings_kernel(int argc, const char *const *__argv,
58266 int r; 58998 int r;
58267 mm_segment_t oldfs = get_fs(); 58999 mm_segment_t oldfs = get_fs();
58268 struct user_arg_ptr argv = { 59000 struct user_arg_ptr argv = {
@@ -58271,7 +59003,7 @@ index 7ea097f..0158d8a 100644
58271 }; 59003 };
58272 59004
58273 set_fs(KERNEL_DS); 59005 set_fs(KERNEL_DS);
58274@@ -584,7 +625,8 @@ static int shift_arg_pages(struct vm_area_struct *vma, unsigned long shift) 59006@@ -583,7 +624,8 @@ static int shift_arg_pages(struct vm_area_struct *vma, unsigned long shift)
58275 unsigned long new_end = old_end - shift; 59007 unsigned long new_end = old_end - shift;
58276 struct mmu_gather tlb; 59008 struct mmu_gather tlb;
58277 59009
@@ -58281,7 +59013,7 @@ index 7ea097f..0158d8a 100644
58281 59013
58282 /* 59014 /*
58283 * ensure there are no vmas between where we want to go 59015 * ensure there are no vmas between where we want to go
58284@@ -593,6 +635,10 @@ static int shift_arg_pages(struct vm_area_struct *vma, unsigned long shift) 59016@@ -592,6 +634,10 @@ static int shift_arg_pages(struct vm_area_struct *vma, unsigned long shift)
58285 if (vma != find_vma(mm, new_start)) 59017 if (vma != find_vma(mm, new_start))
58286 return -EFAULT; 59018 return -EFAULT;
58287 59019
@@ -58292,7 +59024,7 @@ index 7ea097f..0158d8a 100644
58292 /* 59024 /*
58293 * cover the whole range: [new_start, old_end) 59025 * cover the whole range: [new_start, old_end)
58294 */ 59026 */
58295@@ -673,10 +719,6 @@ int setup_arg_pages(struct linux_binprm *bprm, 59027@@ -672,10 +718,6 @@ int setup_arg_pages(struct linux_binprm *bprm,
58296 stack_top = arch_align_stack(stack_top); 59028 stack_top = arch_align_stack(stack_top);
58297 stack_top = PAGE_ALIGN(stack_top); 59029 stack_top = PAGE_ALIGN(stack_top);
58298 59030
@@ -58303,7 +59035,7 @@ index 7ea097f..0158d8a 100644
58303 stack_shift = vma->vm_end - stack_top; 59035 stack_shift = vma->vm_end - stack_top;
58304 59036
58305 bprm->p -= stack_shift; 59037 bprm->p -= stack_shift;
58306@@ -688,8 +730,28 @@ int setup_arg_pages(struct linux_binprm *bprm, 59038@@ -687,8 +729,28 @@ int setup_arg_pages(struct linux_binprm *bprm,
58307 bprm->exec -= stack_shift; 59039 bprm->exec -= stack_shift;
58308 59040
58309 down_write(&mm->mmap_sem); 59041 down_write(&mm->mmap_sem);
@@ -58332,7 +59064,7 @@ index 7ea097f..0158d8a 100644
58332 /* 59064 /*
58333 * Adjust stack execute permissions; explicitly enable for 59065 * Adjust stack execute permissions; explicitly enable for
58334 * EXSTACK_ENABLE_X, disable for EXSTACK_DISABLE_X and leave alone 59066 * EXSTACK_ENABLE_X, disable for EXSTACK_DISABLE_X and leave alone
58335@@ -708,13 +770,6 @@ int setup_arg_pages(struct linux_binprm *bprm, 59067@@ -707,13 +769,6 @@ int setup_arg_pages(struct linux_binprm *bprm,
58336 goto out_unlock; 59068 goto out_unlock;
58337 BUG_ON(prev != vma); 59069 BUG_ON(prev != vma);
58338 59070
@@ -58346,7 +59078,7 @@ index 7ea097f..0158d8a 100644
58346 /* mprotect_fixup is overkill to remove the temporary stack flags */ 59078 /* mprotect_fixup is overkill to remove the temporary stack flags */
58347 vma->vm_flags &= ~VM_STACK_INCOMPLETE_SETUP; 59079 vma->vm_flags &= ~VM_STACK_INCOMPLETE_SETUP;
58348 59080
58349@@ -738,6 +793,27 @@ int setup_arg_pages(struct linux_binprm *bprm, 59081@@ -737,6 +792,27 @@ int setup_arg_pages(struct linux_binprm *bprm,
58350 #endif 59082 #endif
58351 current->mm->start_stack = bprm->p; 59083 current->mm->start_stack = bprm->p;
58352 ret = expand_stack(vma, stack_base); 59084 ret = expand_stack(vma, stack_base);
@@ -58374,16 +59106,16 @@ index 7ea097f..0158d8a 100644
58374 if (ret) 59106 if (ret)
58375 ret = -EFAULT; 59107 ret = -EFAULT;
58376 59108
58377@@ -774,6 +850,8 @@ struct file *open_exec(const char *name) 59109@@ -772,6 +848,8 @@ static struct file *do_open_exec(struct filename *name)
58378 59110
58379 fsnotify_open(file); 59111 fsnotify_open(file);
58380 59112
58381+ trace_open_exec(name); 59113+ trace_open_exec(name->name);
58382+ 59114+
58383 err = deny_write_access(file); 59115 err = deny_write_access(file);
58384 if (err) 59116 if (err)
58385 goto exit; 59117 goto exit;
58386@@ -797,7 +875,7 @@ int kernel_read(struct file *file, loff_t offset, 59118@@ -801,7 +879,7 @@ int kernel_read(struct file *file, loff_t offset,
58387 old_fs = get_fs(); 59119 old_fs = get_fs();
58388 set_fs(get_ds()); 59120 set_fs(get_ds());
58389 /* The cast to a user pointer is valid due to the set_fs() */ 59121 /* The cast to a user pointer is valid due to the set_fs() */
@@ -58392,16 +59124,24 @@ index 7ea097f..0158d8a 100644
58392 set_fs(old_fs); 59124 set_fs(old_fs);
58393 return result; 59125 return result;
58394 } 59126 }
58395@@ -1253,7 +1331,7 @@ static int check_unsafe_exec(struct linux_binprm *bprm) 59127@@ -846,6 +924,7 @@ static int exec_mmap(struct mm_struct *mm)
59128 tsk->mm = mm;
59129 tsk->active_mm = mm;
59130 activate_mm(active_mm, mm);
59131+ populate_stack();
59132 task_unlock(tsk);
59133 if (old_mm) {
59134 up_read(&old_mm->mmap_sem);
59135@@ -1258,7 +1337,7 @@ static void check_unsafe_exec(struct linux_binprm *bprm)
58396 } 59136 }
58397 rcu_read_unlock(); 59137 rcu_read_unlock();
58398 59138
58399- if (p->fs->users > n_fs) { 59139- if (p->fs->users > n_fs)
58400+ if (atomic_read(&p->fs->users) > n_fs) { 59140+ if (atomic_read(&p->fs->users) > n_fs)
58401 bprm->unsafe |= LSM_UNSAFE_SHARE; 59141 bprm->unsafe |= LSM_UNSAFE_SHARE;
58402 } else { 59142 else
58403 res = -EAGAIN; 59143 p->fs->in_exec = 1;
58404@@ -1443,6 +1521,31 @@ static int exec_binprm(struct linux_binprm *bprm) 59144@@ -1434,6 +1513,31 @@ static int exec_binprm(struct linux_binprm *bprm)
58405 return ret; 59145 return ret;
58406 } 59146 }
58407 59147
@@ -58433,7 +59173,7 @@ index 7ea097f..0158d8a 100644
58433 /* 59173 /*
58434 * sys_execve() executes a new program. 59174 * sys_execve() executes a new program.
58435 */ 59175 */
58436@@ -1450,12 +1553,19 @@ static int do_execve_common(const char *filename, 59176@@ -1441,6 +1545,11 @@ static int do_execve_common(struct filename *filename,
58437 struct user_arg_ptr argv, 59177 struct user_arg_ptr argv,
58438 struct user_arg_ptr envp) 59178 struct user_arg_ptr envp)
58439 { 59179 {
@@ -58445,38 +59185,38 @@ index 7ea097f..0158d8a 100644
58445 struct linux_binprm *bprm; 59185 struct linux_binprm *bprm;
58446 struct file *file; 59186 struct file *file;
58447 struct files_struct *displaced; 59187 struct files_struct *displaced;
58448 bool clear_in_exec; 59188@@ -1449,6 +1558,8 @@ static int do_execve_common(struct filename *filename,
58449 int retval; 59189 if (IS_ERR(filename))
59190 return PTR_ERR(filename);
58450 59191
58451+ gr_learn_resource(current, RLIMIT_NPROC, atomic_read(&current_user()->processes), 1); 59192+ gr_learn_resource(current, RLIMIT_NPROC, atomic_read(&current_user()->processes), 1);
58452+ 59193+
58453 /* 59194 /*
58454 * We move the actual failure in case of RLIMIT_NPROC excess from 59195 * We move the actual failure in case of RLIMIT_NPROC excess from
58455 * set*uid() to execve() because too many poorly written programs 59196 * set*uid() to execve() because too many poorly written programs
58456@@ -1496,12 +1606,22 @@ static int do_execve_common(const char *filename, 59197@@ -1486,11 +1597,21 @@ static int do_execve_common(struct filename *filename,
58457 if (IS_ERR(file)) 59198 if (IS_ERR(file))
58458 goto out_unmark; 59199 goto out_unmark;
58459 59200
58460+ if (gr_ptrace_readexec(file, bprm->unsafe)) { 59201+ if (gr_ptrace_readexec(file, bprm->unsafe)) {
58461+ retval = -EPERM; 59202+ retval = -EPERM;
58462+ goto out_file; 59203+ goto out_unmark;
58463+ } 59204+ }
58464+ 59205+
58465 sched_exec(); 59206 sched_exec();
58466 59207
58467 bprm->file = file; 59208 bprm->file = file;
58468 bprm->filename = filename; 59209 bprm->filename = bprm->interp = filename->name;
58469 bprm->interp = filename;
58470 59210
58471+ if (!gr_acl_handle_execve(file->f_path.dentry, file->f_path.mnt)) { 59211+ if (!gr_acl_handle_execve(file->f_path.dentry, file->f_path.mnt)) {
58472+ retval = -EACCES; 59212+ retval = -EACCES;
58473+ goto out_file; 59213+ goto out_unmark;
58474+ } 59214+ }
58475+ 59215+
58476 retval = bprm_mm_init(bprm); 59216 retval = bprm_mm_init(bprm);
58477 if (retval) 59217 if (retval)
58478 goto out_file; 59218 goto out_unmark;
58479@@ -1518,24 +1638,70 @@ static int do_execve_common(const char *filename, 59219@@ -1507,24 +1628,70 @@ static int do_execve_common(struct filename *filename,
58480 if (retval < 0) 59220 if (retval < 0)
58481 goto out; 59221 goto out;
58482 59222
@@ -58551,7 +59291,7 @@ index 7ea097f..0158d8a 100644
58551 current->fs->in_exec = 0; 59291 current->fs->in_exec = 0;
58552 current->in_execve = 0; 59292 current->in_execve = 0;
58553 acct_update_integrals(current); 59293 acct_update_integrals(current);
58554@@ -1545,6 +1711,14 @@ static int do_execve_common(const char *filename, 59294@@ -1535,6 +1702,14 @@ static int do_execve_common(struct filename *filename,
58555 put_files_struct(displaced); 59295 put_files_struct(displaced);
58556 return retval; 59296 return retval;
58557 59297
@@ -58566,8 +59306,8 @@ index 7ea097f..0158d8a 100644
58566 out: 59306 out:
58567 if (bprm->mm) { 59307 if (bprm->mm) {
58568 acct_arg_size(bprm, 0); 59308 acct_arg_size(bprm, 0);
58569@@ -1699,3 +1873,295 @@ asmlinkage long compat_sys_execve(const char __user * filename, 59309@@ -1626,3 +1801,311 @@ asmlinkage long compat_sys_execve(const char __user * filename,
58570 return error; 59310 return compat_do_execve(getname(filename), argv, envp);
58571 } 59311 }
58572 #endif 59312 #endif
58573+ 59313+
@@ -58783,6 +59523,7 @@ index 7ea097f..0158d8a 100644
58783+#endif 59523+#endif
58784+ 59524+
58785+#ifdef CONFIG_PAX_USERCOPY 59525+#ifdef CONFIG_PAX_USERCOPY
59526+
58786+static inline bool check_kernel_text_object(unsigned long low, unsigned long high) 59527+static inline bool check_kernel_text_object(unsigned long low, unsigned long high)
58787+{ 59528+{
58788+#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC) 59529+#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC)
@@ -58800,25 +59541,38 @@ index 7ea097f..0158d8a 100644
58800+#ifdef CONFIG_X86_64 59541+#ifdef CONFIG_X86_64
58801+ /* check against linear mapping as well */ 59542+ /* check against linear mapping as well */
58802+ if (high > (unsigned long)__va(__pa(textlow)) && 59543+ if (high > (unsigned long)__va(__pa(textlow)) &&
58803+ low <= (unsigned long)__va(__pa(texthigh))) 59544+ low < (unsigned long)__va(__pa(texthigh)))
58804+ return true; 59545+ return true;
58805+#endif 59546+#endif
58806+ 59547+
58807+#endif 59548+#endif
58808+ 59549+
58809+ if (high <= textlow || low > texthigh) 59550+ if (high <= textlow || low >= texthigh)
58810+ return false; 59551+ return false;
58811+ else 59552+ else
58812+ return true; 59553+ return true;
58813+} 59554+}
58814+#endif 59555+#endif
58815+ 59556+
58816+void __check_object_size(const void *ptr, unsigned long n, bool to_user) 59557+void __check_object_size(const void *ptr, unsigned long n, bool to_user, bool const_size)
58817+{ 59558+{
58818+
58819+#ifdef CONFIG_PAX_USERCOPY 59559+#ifdef CONFIG_PAX_USERCOPY
58820+ const char *type; 59560+ const char *type;
59561+#endif
59562+
59563+#ifndef CONFIG_STACK_GROWSUP
59564+ const void * stackstart = task_stack_page(current);
59565+ if (unlikely(current_stack_pointer < stackstart + 512 ||
59566+ current_stack_pointer >= stackstart + THREAD_SIZE))
59567+ BUG();
59568+#endif
59569+
59570+#ifndef CONFIG_PAX_USERCOPY_DEBUG
59571+ if (const_size)
59572+ return;
59573+#endif
58821+ 59574+
59575+#ifdef CONFIG_PAX_USERCOPY
58822+ if (!n) 59576+ if (!n)
58823+ return; 59577+ return;
58824+ 59578+
@@ -58849,6 +59603,8 @@ index 7ea097f..0158d8a 100644
58849+ if (sp < current_thread_info()->lowest_stack && 59603+ if (sp < current_thread_info()->lowest_stack &&
58850+ sp > (unsigned long)task_stack_page(current)) 59604+ sp > (unsigned long)task_stack_page(current))
58851+ current_thread_info()->lowest_stack = sp; 59605+ current_thread_info()->lowest_stack = sp;
59606+ if (unlikely((sp & ~(THREAD_SIZE - 1)) < (THREAD_SIZE/16)))
59607+ BUG();
58852+} 59608+}
58853+EXPORT_SYMBOL(pax_track_stack); 59609+EXPORT_SYMBOL(pax_track_stack);
58854+#endif 59610+#endif
@@ -58880,7 +59636,7 @@ index 9f9992b..8b59411 100644
58880 } 59636 }
58881 return 1; 59637 return 1;
58882diff --git a/fs/ext2/xattr.c b/fs/ext2/xattr.c 59638diff --git a/fs/ext2/xattr.c b/fs/ext2/xattr.c
58883index 2d7557d..14e38f94 100644 59639index 9142614..97484fa 100644
58884--- a/fs/ext2/xattr.c 59640--- a/fs/ext2/xattr.c
58885+++ b/fs/ext2/xattr.c 59641+++ b/fs/ext2/xattr.c
58886@@ -247,7 +247,7 @@ ext2_xattr_list(struct dentry *dentry, char *buffer, size_t buffer_size) 59642@@ -247,7 +247,7 @@ ext2_xattr_list(struct dentry *dentry, char *buffer, size_t buffer_size)
@@ -58922,7 +59678,7 @@ index 22548f5..41521d8 100644
58922 } 59678 }
58923 return 1; 59679 return 1;
58924diff --git a/fs/ext3/xattr.c b/fs/ext3/xattr.c 59680diff --git a/fs/ext3/xattr.c b/fs/ext3/xattr.c
58925index b1fc963..881228c 100644 59681index c6874be..f8a6ae8 100644
58926--- a/fs/ext3/xattr.c 59682--- a/fs/ext3/xattr.c
58927+++ b/fs/ext3/xattr.c 59683+++ b/fs/ext3/xattr.c
58928@@ -330,7 +330,7 @@ static int 59684@@ -330,7 +330,7 @@ static int
@@ -58962,7 +59718,7 @@ index 6ea7b14..8fa16d9 100644
58962 if (free_clusters >= (nclusters + dirty_clusters + 59718 if (free_clusters >= (nclusters + dirty_clusters +
58963 resv_clusters)) 59719 resv_clusters))
58964diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h 59720diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
58965index d3a534f..242c50a 100644 59721index 3a603a8..9b868ba 100644
58966--- a/fs/ext4/ext4.h 59722--- a/fs/ext4/ext4.h
58967+++ b/fs/ext4/ext4.h 59723+++ b/fs/ext4/ext4.h
58968@@ -1269,19 +1269,19 @@ struct ext4_sb_info { 59724@@ -1269,19 +1269,19 @@ struct ext4_sb_info {
@@ -59148,7 +59904,7 @@ index 710fed2..a82e4e8 100644
59148 static int parse_strtoull(const char *buf, 59904 static int parse_strtoull(const char *buf,
59149 unsigned long long max, unsigned long long *value) 59905 unsigned long long max, unsigned long long *value)
59150diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c 59906diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c
59151index 1423c48..9c0c6dc 100644 59907index 55e611c..cfad16d 100644
59152--- a/fs/ext4/xattr.c 59908--- a/fs/ext4/xattr.c
59153+++ b/fs/ext4/xattr.c 59909+++ b/fs/ext4/xattr.c
59154@@ -381,7 +381,7 @@ static int 59910@@ -381,7 +381,7 @@ static int
@@ -59203,7 +59959,7 @@ index 999ff5c..41f4109 100644
59203 sizeof(struct file_handle) + handle_bytes)) 59959 sizeof(struct file_handle) + handle_bytes))
59204 retval = -EFAULT; 59960 retval = -EFAULT;
59205diff --git a/fs/file.c b/fs/file.c 59961diff --git a/fs/file.c b/fs/file.c
59206index 9de2026..8e334ca 100644 59962index eb56a13..ccee850 100644
59207--- a/fs/file.c 59963--- a/fs/file.c
59208+++ b/fs/file.c 59964+++ b/fs/file.c
59209@@ -16,6 +16,7 @@ 59965@@ -16,6 +16,7 @@
@@ -59232,7 +59988,7 @@ index 9de2026..8e334ca 100644
59232 { 59988 {
59233 struct fdtable *fdt; 59989 struct fdtable *fdt;
59234 59990
59235@@ -828,6 +829,7 @@ int replace_fd(unsigned fd, struct file *file, unsigned flags) 59991@@ -807,6 +808,7 @@ int replace_fd(unsigned fd, struct file *file, unsigned flags)
59236 if (!file) 59992 if (!file)
59237 return __close_fd(files, fd); 59993 return __close_fd(files, fd);
59238 59994
@@ -59240,7 +59996,7 @@ index 9de2026..8e334ca 100644
59240 if (fd >= rlimit(RLIMIT_NOFILE)) 59996 if (fd >= rlimit(RLIMIT_NOFILE))
59241 return -EBADF; 59997 return -EBADF;
59242 59998
59243@@ -854,6 +856,7 @@ SYSCALL_DEFINE3(dup3, unsigned int, oldfd, unsigned int, newfd, int, flags) 59999@@ -833,6 +835,7 @@ SYSCALL_DEFINE3(dup3, unsigned int, oldfd, unsigned int, newfd, int, flags)
59244 if (unlikely(oldfd == newfd)) 60000 if (unlikely(oldfd == newfd))
59245 return -EINVAL; 60001 return -EINVAL;
59246 60002
@@ -59248,7 +60004,7 @@ index 9de2026..8e334ca 100644
59248 if (newfd >= rlimit(RLIMIT_NOFILE)) 60004 if (newfd >= rlimit(RLIMIT_NOFILE))
59249 return -EBADF; 60005 return -EBADF;
59250 60006
59251@@ -909,6 +912,7 @@ SYSCALL_DEFINE1(dup, unsigned int, fildes) 60007@@ -888,6 +891,7 @@ SYSCALL_DEFINE1(dup, unsigned int, fildes)
59252 int f_dupfd(unsigned int from, struct file *file, unsigned flags) 60008 int f_dupfd(unsigned int from, struct file *file, unsigned flags)
59253 { 60009 {
59254 int err; 60010 int err;
@@ -59723,10 +60479,10 @@ index 4226f66..0fb3f45 100644
59723 #endif 60479 #endif
59724 60480
59725diff --git a/fs/fscache/object.c b/fs/fscache/object.c 60481diff --git a/fs/fscache/object.c b/fs/fscache/object.c
59726index 53d35c5..5d68ed4 100644 60482index d3b4539..ed0c659 100644
59727--- a/fs/fscache/object.c 60483--- a/fs/fscache/object.c
59728+++ b/fs/fscache/object.c 60484+++ b/fs/fscache/object.c
59729@@ -451,7 +451,7 @@ static const struct fscache_state *fscache_look_up_object(struct fscache_object 60485@@ -454,7 +454,7 @@ static const struct fscache_state *fscache_look_up_object(struct fscache_object
59730 _debug("LOOKUP \"%s\" in \"%s\"", 60486 _debug("LOOKUP \"%s\" in \"%s\"",
59731 cookie->def->name, object->cache->tag->name); 60487 cookie->def->name, object->cache->tag->name);
59732 60488
@@ -59735,7 +60491,7 @@ index 53d35c5..5d68ed4 100644
59735 fscache_stat(&fscache_n_cop_lookup_object); 60491 fscache_stat(&fscache_n_cop_lookup_object);
59736 ret = object->cache->ops->lookup_object(object); 60492 ret = object->cache->ops->lookup_object(object);
59737 fscache_stat_d(&fscache_n_cop_lookup_object); 60493 fscache_stat_d(&fscache_n_cop_lookup_object);
59738@@ -461,7 +461,7 @@ static const struct fscache_state *fscache_look_up_object(struct fscache_object 60494@@ -464,7 +464,7 @@ static const struct fscache_state *fscache_look_up_object(struct fscache_object
59739 if (ret == -ETIMEDOUT) { 60495 if (ret == -ETIMEDOUT) {
59740 /* probably stuck behind another object, so move this one to 60496 /* probably stuck behind another object, so move this one to
59741 * the back of the queue */ 60497 * the back of the queue */
@@ -59744,7 +60500,7 @@ index 53d35c5..5d68ed4 100644
59744 _leave(" [timeout]"); 60500 _leave(" [timeout]");
59745 return NO_TRANSIT; 60501 return NO_TRANSIT;
59746 } 60502 }
59747@@ -489,7 +489,7 @@ void fscache_object_lookup_negative(struct fscache_object *object) 60503@@ -492,7 +492,7 @@ void fscache_object_lookup_negative(struct fscache_object *object)
59748 _enter("{OBJ%x,%s}", object->debug_id, object->state->name); 60504 _enter("{OBJ%x,%s}", object->debug_id, object->state->name);
59749 60505
59750 if (!test_and_set_bit(FSCACHE_OBJECT_IS_LOOKED_UP, &object->flags)) { 60506 if (!test_and_set_bit(FSCACHE_OBJECT_IS_LOOKED_UP, &object->flags)) {
@@ -59753,7 +60509,7 @@ index 53d35c5..5d68ed4 100644
59753 60509
59754 /* Allow write requests to begin stacking up and read requests to begin 60510 /* Allow write requests to begin stacking up and read requests to begin
59755 * returning ENODATA. 60511 * returning ENODATA.
59756@@ -524,7 +524,7 @@ void fscache_obtained_object(struct fscache_object *object) 60512@@ -527,7 +527,7 @@ void fscache_obtained_object(struct fscache_object *object)
59757 /* if we were still looking up, then we must have a positive lookup 60513 /* if we were still looking up, then we must have a positive lookup
59758 * result, in which case there may be data available */ 60514 * result, in which case there may be data available */
59759 if (!test_and_set_bit(FSCACHE_OBJECT_IS_LOOKED_UP, &object->flags)) { 60515 if (!test_and_set_bit(FSCACHE_OBJECT_IS_LOOKED_UP, &object->flags)) {
@@ -59762,7 +60518,7 @@ index 53d35c5..5d68ed4 100644
59762 60518
59763 /* We do (presumably) have data */ 60519 /* We do (presumably) have data */
59764 clear_bit_unlock(FSCACHE_COOKIE_NO_DATA_YET, &cookie->flags); 60520 clear_bit_unlock(FSCACHE_COOKIE_NO_DATA_YET, &cookie->flags);
59765@@ -536,7 +536,7 @@ void fscache_obtained_object(struct fscache_object *object) 60521@@ -539,7 +539,7 @@ void fscache_obtained_object(struct fscache_object *object)
59766 clear_bit_unlock(FSCACHE_COOKIE_LOOKING_UP, &cookie->flags); 60522 clear_bit_unlock(FSCACHE_COOKIE_LOOKING_UP, &cookie->flags);
59767 wake_up_bit(&cookie->flags, FSCACHE_COOKIE_LOOKING_UP); 60523 wake_up_bit(&cookie->flags, FSCACHE_COOKIE_LOOKING_UP);
59768 } else { 60524 } else {
@@ -59771,7 +60527,7 @@ index 53d35c5..5d68ed4 100644
59771 } 60527 }
59772 60528
59773 set_bit(FSCACHE_OBJECT_IS_AVAILABLE, &object->flags); 60529 set_bit(FSCACHE_OBJECT_IS_AVAILABLE, &object->flags);
59774@@ -572,7 +572,7 @@ static const struct fscache_state *fscache_object_available(struct fscache_objec 60530@@ -575,7 +575,7 @@ static const struct fscache_state *fscache_object_available(struct fscache_objec
59775 fscache_stat_d(&fscache_n_cop_lookup_complete); 60531 fscache_stat_d(&fscache_n_cop_lookup_complete);
59776 60532
59777 fscache_hist(fscache_obj_instantiate_histogram, object->lookup_jif); 60533 fscache_hist(fscache_obj_instantiate_histogram, object->lookup_jif);
@@ -59780,7 +60536,7 @@ index 53d35c5..5d68ed4 100644
59780 60536
59781 _leave(""); 60537 _leave("");
59782 return transit_to(JUMPSTART_DEPS); 60538 return transit_to(JUMPSTART_DEPS);
59783@@ -719,7 +719,7 @@ static const struct fscache_state *fscache_drop_object(struct fscache_object *ob 60539@@ -722,7 +722,7 @@ static const struct fscache_state *fscache_drop_object(struct fscache_object *ob
59784 60540
59785 /* this just shifts the object release to the work processor */ 60541 /* this just shifts the object release to the work processor */
59786 fscache_put_object(object); 60542 fscache_put_object(object);
@@ -59789,7 +60545,7 @@ index 53d35c5..5d68ed4 100644
59789 60545
59790 _leave(""); 60546 _leave("");
59791 return transit_to(OBJECT_DEAD); 60547 return transit_to(OBJECT_DEAD);
59792@@ -884,7 +884,7 @@ enum fscache_checkaux fscache_check_aux(struct fscache_object *object, 60548@@ -887,7 +887,7 @@ enum fscache_checkaux fscache_check_aux(struct fscache_object *object,
59793 enum fscache_checkaux result; 60549 enum fscache_checkaux result;
59794 60550
59795 if (!object->cookie->def->check_aux) { 60551 if (!object->cookie->def->check_aux) {
@@ -59798,7 +60554,7 @@ index 53d35c5..5d68ed4 100644
59798 return FSCACHE_CHECKAUX_OKAY; 60554 return FSCACHE_CHECKAUX_OKAY;
59799 } 60555 }
59800 60556
59801@@ -893,17 +893,17 @@ enum fscache_checkaux fscache_check_aux(struct fscache_object *object, 60557@@ -896,17 +896,17 @@ enum fscache_checkaux fscache_check_aux(struct fscache_object *object,
59802 switch (result) { 60558 switch (result) {
59803 /* entry okay as is */ 60559 /* entry okay as is */
59804 case FSCACHE_CHECKAUX_OKAY: 60560 case FSCACHE_CHECKAUX_OKAY:
@@ -59819,7 +60575,7 @@ index 53d35c5..5d68ed4 100644
59819 break; 60575 break;
59820 60576
59821 default: 60577 default:
59822@@ -989,7 +989,7 @@ static const struct fscache_state *fscache_invalidate_object(struct fscache_obje 60578@@ -992,7 +992,7 @@ static const struct fscache_state *fscache_invalidate_object(struct fscache_obje
59823 { 60579 {
59824 const struct fscache_state *s; 60580 const struct fscache_state *s;
59825 60581
@@ -59828,7 +60584,7 @@ index 53d35c5..5d68ed4 100644
59828 fscache_stat(&fscache_n_cop_invalidate_object); 60584 fscache_stat(&fscache_n_cop_invalidate_object);
59829 s = _fscache_invalidate_object(object, event); 60585 s = _fscache_invalidate_object(object, event);
59830 fscache_stat_d(&fscache_n_cop_invalidate_object); 60586 fscache_stat_d(&fscache_n_cop_invalidate_object);
59831@@ -1004,7 +1004,7 @@ static const struct fscache_state *fscache_update_object(struct fscache_object * 60587@@ -1007,7 +1007,7 @@ static const struct fscache_state *fscache_update_object(struct fscache_object *
59832 { 60588 {
59833 _enter("{OBJ%x},%d", object->debug_id, event); 60589 _enter("{OBJ%x},%d", object->debug_id, event);
59834 60590
@@ -60768,7 +61524,7 @@ index b96a49b..9bfdc47 100644
60768 cuse_class = class_create(THIS_MODULE, "cuse"); 61524 cuse_class = class_create(THIS_MODULE, "cuse");
60769 if (IS_ERR(cuse_class)) 61525 if (IS_ERR(cuse_class))
60770diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c 61526diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c
60771index fa8cb4b..4acb935 100644 61527index 0a648bb..8d463f1 100644
60772--- a/fs/fuse/dev.c 61528--- a/fs/fuse/dev.c
60773+++ b/fs/fuse/dev.c 61529+++ b/fs/fuse/dev.c
60774@@ -1323,7 +1323,7 @@ static ssize_t fuse_dev_splice_read(struct file *in, loff_t *ppos, 61530@@ -1323,7 +1323,7 @@ static ssize_t fuse_dev_splice_read(struct file *in, loff_t *ppos,
@@ -60790,10 +61546,10 @@ index fa8cb4b..4acb935 100644
60790 } 61546 }
60791 61547
60792diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c 61548diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c
60793index c3eb2c4..98007d4 100644 61549index 1d1292c..bba17ea 100644
60794--- a/fs/fuse/dir.c 61550--- a/fs/fuse/dir.c
60795+++ b/fs/fuse/dir.c 61551+++ b/fs/fuse/dir.c
60796@@ -1408,7 +1408,7 @@ static char *read_link(struct dentry *dentry) 61552@@ -1418,7 +1418,7 @@ static char *read_link(struct dentry *dentry)
60797 return link; 61553 return link;
60798 } 61554 }
60799 61555
@@ -60803,10 +61559,10 @@ index c3eb2c4..98007d4 100644
60803 if (!IS_ERR(link)) 61559 if (!IS_ERR(link))
60804 free_page((unsigned long) link); 61560 free_page((unsigned long) link);
60805diff --git a/fs/hostfs/hostfs_kern.c b/fs/hostfs/hostfs_kern.c 61561diff --git a/fs/hostfs/hostfs_kern.c b/fs/hostfs/hostfs_kern.c
60806index db23ce1..9e6cd9d 100644 61562index fe649d3..c679164 100644
60807--- a/fs/hostfs/hostfs_kern.c 61563--- a/fs/hostfs/hostfs_kern.c
60808+++ b/fs/hostfs/hostfs_kern.c 61564+++ b/fs/hostfs/hostfs_kern.c
60809@@ -895,7 +895,7 @@ static void *hostfs_follow_link(struct dentry *dentry, struct nameidata *nd) 61565@@ -898,7 +898,7 @@ static void *hostfs_follow_link(struct dentry *dentry, struct nameidata *nd)
60810 61566
60811 static void hostfs_put_link(struct dentry *dentry, struct nameidata *nd, void *cookie) 61567 static void hostfs_put_link(struct dentry *dentry, struct nameidata *nd, void *cookie)
60812 { 61568 {
@@ -60909,10 +61665,10 @@ index a6597d6..41b30ec 100644
60909 61665
60910 /* 61666 /*
60911diff --git a/fs/jfs/super.c b/fs/jfs/super.c 61667diff --git a/fs/jfs/super.c b/fs/jfs/super.c
60912index 6669aa2..36b033d 100644 61668index e2b7483..855bca3 100644
60913--- a/fs/jfs/super.c 61669--- a/fs/jfs/super.c
60914+++ b/fs/jfs/super.c 61670+++ b/fs/jfs/super.c
60915@@ -882,7 +882,7 @@ static int __init init_jfs_fs(void) 61671@@ -884,7 +884,7 @@ static int __init init_jfs_fs(void)
60916 61672
60917 jfs_inode_cachep = 61673 jfs_inode_cachep =
60918 kmem_cache_create("jfs_ip", sizeof(struct jfs_inode_info), 0, 61674 kmem_cache_create("jfs_ip", sizeof(struct jfs_inode_info), 0,
@@ -60921,6 +61677,97 @@ index 6669aa2..36b033d 100644
60921 init_once); 61677 init_once);
60922 if (jfs_inode_cachep == NULL) 61678 if (jfs_inode_cachep == NULL)
60923 return -ENOMEM; 61679 return -ENOMEM;
61680diff --git a/fs/kernfs/dir.c b/fs/kernfs/dir.c
61681index 39c0143..d54fad4 100644
61682--- a/fs/kernfs/dir.c
61683+++ b/fs/kernfs/dir.c
61684@@ -28,7 +28,7 @@ DEFINE_MUTEX(kernfs_mutex);
61685 *
61686 * Returns 31 bit hash of ns + name (so it fits in an off_t )
61687 */
61688-static unsigned int kernfs_name_hash(const char *name, const void *ns)
61689+static unsigned int kernfs_name_hash(const unsigned char *name, const void *ns)
61690 {
61691 unsigned long hash = init_name_hash();
61692 unsigned int len = strlen(name);
61693diff --git a/fs/kernfs/file.c b/fs/kernfs/file.c
61694index dbf397b..d624b48 100644
61695--- a/fs/kernfs/file.c
61696+++ b/fs/kernfs/file.c
61697@@ -33,7 +33,7 @@ static DEFINE_MUTEX(kernfs_open_file_mutex);
61698
61699 struct kernfs_open_node {
61700 atomic_t refcnt;
61701- atomic_t event;
61702+ atomic_unchecked_t event;
61703 wait_queue_head_t poll;
61704 struct list_head files; /* goes through kernfs_open_file.list */
61705 };
61706@@ -149,7 +149,7 @@ static int kernfs_seq_show(struct seq_file *sf, void *v)
61707 {
61708 struct kernfs_open_file *of = sf->private;
61709
61710- of->event = atomic_read(&of->kn->attr.open->event);
61711+ of->event = atomic_read_unchecked(&of->kn->attr.open->event);
61712
61713 return of->kn->attr.ops->seq_show(sf, v);
61714 }
61715@@ -353,12 +353,12 @@ static int kernfs_vma_page_mkwrite(struct vm_area_struct *vma,
61716 return ret;
61717 }
61718
61719-static int kernfs_vma_access(struct vm_area_struct *vma, unsigned long addr,
61720- void *buf, int len, int write)
61721+static ssize_t kernfs_vma_access(struct vm_area_struct *vma, unsigned long addr,
61722+ void *buf, size_t len, int write)
61723 {
61724 struct file *file = vma->vm_file;
61725 struct kernfs_open_file *of = kernfs_of(file);
61726- int ret;
61727+ ssize_t ret;
61728
61729 if (!of->vm_ops)
61730 return -EINVAL;
61731@@ -557,7 +557,7 @@ static int kernfs_get_open_node(struct kernfs_node *kn,
61732 return -ENOMEM;
61733
61734 atomic_set(&new_on->refcnt, 0);
61735- atomic_set(&new_on->event, 1);
61736+ atomic_set_unchecked(&new_on->event, 1);
61737 init_waitqueue_head(&new_on->poll);
61738 INIT_LIST_HEAD(&new_on->files);
61739 goto retry;
61740@@ -754,7 +754,7 @@ static unsigned int kernfs_fop_poll(struct file *filp, poll_table *wait)
61741
61742 kernfs_put_active(kn);
61743
61744- if (of->event != atomic_read(&on->event))
61745+ if (of->event != atomic_read_unchecked(&on->event))
61746 goto trigger;
61747
61748 return DEFAULT_POLLMASK;
61749@@ -779,7 +779,7 @@ void kernfs_notify(struct kernfs_node *kn)
61750 if (!WARN_ON(kernfs_type(kn) != KERNFS_FILE)) {
61751 on = kn->attr.open;
61752 if (on) {
61753- atomic_inc(&on->event);
61754+ atomic_inc_unchecked(&on->event);
61755 wake_up_interruptible(&on->poll);
61756 }
61757 }
61758diff --git a/fs/kernfs/symlink.c b/fs/kernfs/symlink.c
61759index 4d45705..b35e0bd 100644
61760--- a/fs/kernfs/symlink.c
61761+++ b/fs/kernfs/symlink.c
61762@@ -132,7 +132,7 @@ static void *kernfs_iop_follow_link(struct dentry *dentry, struct nameidata *nd)
61763 static void kernfs_iop_put_link(struct dentry *dentry, struct nameidata *nd,
61764 void *cookie)
61765 {
61766- char *page = nd_get_link(nd);
61767+ const char *page = nd_get_link(nd);
61768 if (!IS_ERR(page))
61769 free_page((unsigned long)page);
61770 }
60924diff --git a/fs/libfs.c b/fs/libfs.c 61771diff --git a/fs/libfs.c b/fs/libfs.c
60925index a184424..944ddce 100644 61772index a184424..944ddce 100644
60926--- a/fs/libfs.c 61773--- a/fs/libfs.c
@@ -60977,10 +61824,10 @@ index acd3947..1f896e2 100644
60977 memcpy(c->data, &cookie, 4); 61824 memcpy(c->data, &cookie, 4);
60978 c->len=4; 61825 c->len=4;
60979diff --git a/fs/locks.c b/fs/locks.c 61826diff --git a/fs/locks.c b/fs/locks.c
60980index 92a0f0a..45a48f0 100644 61827index 4dd39b9..12d6aaf 100644
60981--- a/fs/locks.c 61828--- a/fs/locks.c
60982+++ b/fs/locks.c 61829+++ b/fs/locks.c
60983@@ -2219,16 +2219,16 @@ void locks_remove_flock(struct file *filp) 61830@@ -2218,16 +2218,16 @@ void locks_remove_flock(struct file *filp)
60984 return; 61831 return;
60985 61832
60986 if (filp->f_op->flock) { 61833 if (filp->f_op->flock) {
@@ -61002,7 +61849,7 @@ index 92a0f0a..45a48f0 100644
61002 61849
61003 spin_lock(&inode->i_lock); 61850 spin_lock(&inode->i_lock);
61004diff --git a/fs/mount.h b/fs/mount.h 61851diff --git a/fs/mount.h b/fs/mount.h
61005index a17458c..e69fb5b 100644 61852index b29e42f..5ea7fdf 100644
61006--- a/fs/mount.h 61853--- a/fs/mount.h
61007+++ b/fs/mount.h 61854+++ b/fs/mount.h
61008@@ -11,7 +11,7 @@ struct mnt_namespace { 61855@@ -11,7 +11,7 @@ struct mnt_namespace {
@@ -61024,10 +61871,10 @@ index a17458c..e69fb5b 100644
61024 #define MNT_NS_INTERNAL ERR_PTR(-EINVAL) /* distinct from any mnt_namespace */ 61871 #define MNT_NS_INTERNAL ERR_PTR(-EINVAL) /* distinct from any mnt_namespace */
61025 61872
61026diff --git a/fs/namei.c b/fs/namei.c 61873diff --git a/fs/namei.c b/fs/namei.c
61027index cfe6608..f9deefc 100644 61874index 4b491b4..a0166f9 100644
61028--- a/fs/namei.c 61875--- a/fs/namei.c
61029+++ b/fs/namei.c 61876+++ b/fs/namei.c
61030@@ -319,16 +319,32 @@ int generic_permission(struct inode *inode, int mask) 61877@@ -330,16 +330,32 @@ int generic_permission(struct inode *inode, int mask)
61031 if (ret != -EACCES) 61878 if (ret != -EACCES)
61032 return ret; 61879 return ret;
61033 61880
@@ -61063,7 +61910,7 @@ index cfe6608..f9deefc 100644
61063 * Read/write DACs are always overridable. 61910 * Read/write DACs are always overridable.
61064 * Executable DACs are overridable when there is 61911 * Executable DACs are overridable when there is
61065 * at least one exec bit set. 61912 * at least one exec bit set.
61066@@ -337,14 +353,6 @@ int generic_permission(struct inode *inode, int mask) 61913@@ -348,14 +364,6 @@ int generic_permission(struct inode *inode, int mask)
61067 if (inode_capable(inode, CAP_DAC_OVERRIDE)) 61914 if (inode_capable(inode, CAP_DAC_OVERRIDE))
61068 return 0; 61915 return 0;
61069 61916
@@ -61078,7 +61925,7 @@ index cfe6608..f9deefc 100644
61078 return -EACCES; 61925 return -EACCES;
61079 } 61926 }
61080 61927
61081@@ -810,7 +818,7 @@ follow_link(struct path *link, struct nameidata *nd, void **p) 61928@@ -821,7 +829,7 @@ follow_link(struct path *link, struct nameidata *nd, void **p)
61082 { 61929 {
61083 struct dentry *dentry = link->dentry; 61930 struct dentry *dentry = link->dentry;
61084 int error; 61931 int error;
@@ -61087,7 +61934,7 @@ index cfe6608..f9deefc 100644
61087 61934
61088 BUG_ON(nd->flags & LOOKUP_RCU); 61935 BUG_ON(nd->flags & LOOKUP_RCU);
61089 61936
61090@@ -831,6 +839,12 @@ follow_link(struct path *link, struct nameidata *nd, void **p) 61937@@ -842,6 +850,12 @@ follow_link(struct path *link, struct nameidata *nd, void **p)
61091 if (error) 61938 if (error)
61092 goto out_put_nd_path; 61939 goto out_put_nd_path;
61093 61940
@@ -61100,7 +61947,7 @@ index cfe6608..f9deefc 100644
61100 nd->last_type = LAST_BIND; 61947 nd->last_type = LAST_BIND;
61101 *p = dentry->d_inode->i_op->follow_link(dentry, nd); 61948 *p = dentry->d_inode->i_op->follow_link(dentry, nd);
61102 error = PTR_ERR(*p); 61949 error = PTR_ERR(*p);
61103@@ -1582,6 +1596,8 @@ static inline int nested_symlink(struct path *path, struct nameidata *nd) 61950@@ -1590,6 +1604,8 @@ static inline int nested_symlink(struct path *path, struct nameidata *nd)
61104 if (res) 61951 if (res)
61105 break; 61952 break;
61106 res = walk_component(nd, path, LOOKUP_FOLLOW); 61953 res = walk_component(nd, path, LOOKUP_FOLLOW);
@@ -61109,7 +61956,7 @@ index cfe6608..f9deefc 100644
61109 put_link(nd, &link, cookie); 61956 put_link(nd, &link, cookie);
61110 } while (res > 0); 61957 } while (res > 0);
61111 61958
61112@@ -1655,7 +1671,7 @@ EXPORT_SYMBOL(full_name_hash); 61959@@ -1663,7 +1679,7 @@ EXPORT_SYMBOL(full_name_hash);
61113 static inline unsigned long hash_name(const char *name, unsigned int *hashp) 61960 static inline unsigned long hash_name(const char *name, unsigned int *hashp)
61114 { 61961 {
61115 unsigned long a, b, adata, bdata, mask, hash, len; 61962 unsigned long a, b, adata, bdata, mask, hash, len;
@@ -61118,7 +61965,7 @@ index cfe6608..f9deefc 100644
61118 61965
61119 hash = a = 0; 61966 hash = a = 0;
61120 len = -sizeof(unsigned long); 61967 len = -sizeof(unsigned long);
61121@@ -1939,6 +1955,8 @@ static int path_lookupat(int dfd, const char *name, 61968@@ -1947,6 +1963,8 @@ static int path_lookupat(int dfd, const char *name,
61122 if (err) 61969 if (err)
61123 break; 61970 break;
61124 err = lookup_last(nd, &path); 61971 err = lookup_last(nd, &path);
@@ -61127,7 +61974,7 @@ index cfe6608..f9deefc 100644
61127 put_link(nd, &link, cookie); 61974 put_link(nd, &link, cookie);
61128 } 61975 }
61129 } 61976 }
61130@@ -1946,6 +1964,13 @@ static int path_lookupat(int dfd, const char *name, 61977@@ -1954,6 +1972,13 @@ static int path_lookupat(int dfd, const char *name,
61131 if (!err) 61978 if (!err)
61132 err = complete_walk(nd); 61979 err = complete_walk(nd);
61133 61980
@@ -61141,7 +61988,7 @@ index cfe6608..f9deefc 100644
61141 if (!err && nd->flags & LOOKUP_DIRECTORY) { 61988 if (!err && nd->flags & LOOKUP_DIRECTORY) {
61142 if (!d_is_directory(nd->path.dentry)) { 61989 if (!d_is_directory(nd->path.dentry)) {
61143 path_put(&nd->path); 61990 path_put(&nd->path);
61144@@ -1973,8 +1998,15 @@ static int filename_lookup(int dfd, struct filename *name, 61991@@ -1981,8 +2006,15 @@ static int filename_lookup(int dfd, struct filename *name,
61145 retval = path_lookupat(dfd, name->name, 61992 retval = path_lookupat(dfd, name->name,
61146 flags | LOOKUP_REVAL, nd); 61993 flags | LOOKUP_REVAL, nd);
61147 61994
@@ -61158,7 +62005,7 @@ index cfe6608..f9deefc 100644
61158 return retval; 62005 return retval;
61159 } 62006 }
61160 62007
61161@@ -2548,6 +2580,13 @@ static int may_open(struct path *path, int acc_mode, int flag) 62008@@ -2556,6 +2588,13 @@ static int may_open(struct path *path, int acc_mode, int flag)
61162 if (flag & O_NOATIME && !inode_owner_or_capable(inode)) 62009 if (flag & O_NOATIME && !inode_owner_or_capable(inode))
61163 return -EPERM; 62010 return -EPERM;
61164 62011
@@ -61172,7 +62019,7 @@ index cfe6608..f9deefc 100644
61172 return 0; 62019 return 0;
61173 } 62020 }
61174 62021
61175@@ -2779,7 +2818,7 @@ looked_up: 62022@@ -2787,7 +2826,7 @@ looked_up:
61176 * cleared otherwise prior to returning. 62023 * cleared otherwise prior to returning.
61177 */ 62024 */
61178 static int lookup_open(struct nameidata *nd, struct path *path, 62025 static int lookup_open(struct nameidata *nd, struct path *path,
@@ -61181,7 +62028,7 @@ index cfe6608..f9deefc 100644
61181 const struct open_flags *op, 62028 const struct open_flags *op,
61182 bool got_write, int *opened) 62029 bool got_write, int *opened)
61183 { 62030 {
61184@@ -2814,6 +2853,17 @@ static int lookup_open(struct nameidata *nd, struct path *path, 62031@@ -2822,6 +2861,17 @@ static int lookup_open(struct nameidata *nd, struct path *path,
61185 /* Negative dentry, just create the file */ 62032 /* Negative dentry, just create the file */
61186 if (!dentry->d_inode && (op->open_flag & O_CREAT)) { 62033 if (!dentry->d_inode && (op->open_flag & O_CREAT)) {
61187 umode_t mode = op->mode; 62034 umode_t mode = op->mode;
@@ -61199,7 +62046,7 @@ index cfe6608..f9deefc 100644
61199 if (!IS_POSIXACL(dir->d_inode)) 62046 if (!IS_POSIXACL(dir->d_inode))
61200 mode &= ~current_umask(); 62047 mode &= ~current_umask();
61201 /* 62048 /*
61202@@ -2835,6 +2885,8 @@ static int lookup_open(struct nameidata *nd, struct path *path, 62049@@ -2843,6 +2893,8 @@ static int lookup_open(struct nameidata *nd, struct path *path,
61203 nd->flags & LOOKUP_EXCL); 62050 nd->flags & LOOKUP_EXCL);
61204 if (error) 62051 if (error)
61205 goto out_dput; 62052 goto out_dput;
@@ -61208,7 +62055,7 @@ index cfe6608..f9deefc 100644
61208 } 62055 }
61209 out_no_open: 62056 out_no_open:
61210 path->dentry = dentry; 62057 path->dentry = dentry;
61211@@ -2849,7 +2901,7 @@ out_dput: 62058@@ -2857,7 +2909,7 @@ out_dput:
61212 /* 62059 /*
61213 * Handle the last step of open() 62060 * Handle the last step of open()
61214 */ 62061 */
@@ -61217,7 +62064,7 @@ index cfe6608..f9deefc 100644
61217 struct file *file, const struct open_flags *op, 62064 struct file *file, const struct open_flags *op,
61218 int *opened, struct filename *name) 62065 int *opened, struct filename *name)
61219 { 62066 {
61220@@ -2899,6 +2951,15 @@ static int do_last(struct nameidata *nd, struct path *path, 62067@@ -2907,6 +2959,15 @@ static int do_last(struct nameidata *nd, struct path *path,
61221 if (error) 62068 if (error)
61222 return error; 62069 return error;
61223 62070
@@ -61233,7 +62080,7 @@ index cfe6608..f9deefc 100644
61233 audit_inode(name, dir, LOOKUP_PARENT); 62080 audit_inode(name, dir, LOOKUP_PARENT);
61234 error = -EISDIR; 62081 error = -EISDIR;
61235 /* trailing slashes? */ 62082 /* trailing slashes? */
61236@@ -2918,7 +2979,7 @@ retry_lookup: 62083@@ -2926,7 +2987,7 @@ retry_lookup:
61237 */ 62084 */
61238 } 62085 }
61239 mutex_lock(&dir->d_inode->i_mutex); 62086 mutex_lock(&dir->d_inode->i_mutex);
@@ -61242,7 +62089,7 @@ index cfe6608..f9deefc 100644
61242 mutex_unlock(&dir->d_inode->i_mutex); 62089 mutex_unlock(&dir->d_inode->i_mutex);
61243 62090
61244 if (error <= 0) { 62091 if (error <= 0) {
61245@@ -2942,11 +3003,28 @@ retry_lookup: 62092@@ -2950,11 +3011,28 @@ retry_lookup:
61246 goto finish_open_created; 62093 goto finish_open_created;
61247 } 62094 }
61248 62095
@@ -61272,7 +62119,7 @@ index cfe6608..f9deefc 100644
61272 62119
61273 /* 62120 /*
61274 * If atomic_open() acquired write access it is dropped now due to 62121 * If atomic_open() acquired write access it is dropped now due to
61275@@ -2987,6 +3065,11 @@ finish_lookup: 62122@@ -2995,6 +3073,11 @@ finish_lookup:
61276 } 62123 }
61277 } 62124 }
61278 BUG_ON(inode != path->dentry->d_inode); 62125 BUG_ON(inode != path->dentry->d_inode);
@@ -61284,7 +62131,7 @@ index cfe6608..f9deefc 100644
61284 return 1; 62131 return 1;
61285 } 62132 }
61286 62133
61287@@ -2996,7 +3079,6 @@ finish_lookup: 62134@@ -3004,7 +3087,6 @@ finish_lookup:
61288 save_parent.dentry = nd->path.dentry; 62135 save_parent.dentry = nd->path.dentry;
61289 save_parent.mnt = mntget(path->mnt); 62136 save_parent.mnt = mntget(path->mnt);
61290 nd->path.dentry = path->dentry; 62137 nd->path.dentry = path->dentry;
@@ -61292,7 +62139,7 @@ index cfe6608..f9deefc 100644
61292 } 62139 }
61293 nd->inode = inode; 62140 nd->inode = inode;
61294 /* Why this, you ask? _Now_ we might have grown LOOKUP_JUMPED... */ 62141 /* Why this, you ask? _Now_ we might have grown LOOKUP_JUMPED... */
61295@@ -3006,7 +3088,18 @@ finish_open: 62142@@ -3014,7 +3096,18 @@ finish_open:
61296 path_put(&save_parent); 62143 path_put(&save_parent);
61297 return error; 62144 return error;
61298 } 62145 }
@@ -61311,7 +62158,7 @@ index cfe6608..f9deefc 100644
61311 error = -EISDIR; 62158 error = -EISDIR;
61312 if ((open_flag & O_CREAT) && 62159 if ((open_flag & O_CREAT) &&
61313 (d_is_directory(nd->path.dentry) || d_is_autodir(nd->path.dentry))) 62160 (d_is_directory(nd->path.dentry) || d_is_autodir(nd->path.dentry)))
61314@@ -3170,7 +3263,7 @@ static struct file *path_openat(int dfd, struct filename *pathname, 62161@@ -3178,7 +3271,7 @@ static struct file *path_openat(int dfd, struct filename *pathname,
61315 if (unlikely(error)) 62162 if (unlikely(error))
61316 goto out; 62163 goto out;
61317 62164
@@ -61320,7 +62167,7 @@ index cfe6608..f9deefc 100644
61320 while (unlikely(error > 0)) { /* trailing symlink */ 62167 while (unlikely(error > 0)) { /* trailing symlink */
61321 struct path link = path; 62168 struct path link = path;
61322 void *cookie; 62169 void *cookie;
61323@@ -3188,7 +3281,7 @@ static struct file *path_openat(int dfd, struct filename *pathname, 62170@@ -3196,7 +3289,7 @@ static struct file *path_openat(int dfd, struct filename *pathname,
61324 error = follow_link(&link, nd, &cookie); 62171 error = follow_link(&link, nd, &cookie);
61325 if (unlikely(error)) 62172 if (unlikely(error))
61326 break; 62173 break;
@@ -61329,7 +62176,7 @@ index cfe6608..f9deefc 100644
61329 put_link(nd, &link, cookie); 62176 put_link(nd, &link, cookie);
61330 } 62177 }
61331 out: 62178 out:
61332@@ -3288,9 +3381,11 @@ struct dentry *kern_path_create(int dfd, const char *pathname, 62179@@ -3296,9 +3389,11 @@ struct dentry *kern_path_create(int dfd, const char *pathname,
61333 goto unlock; 62180 goto unlock;
61334 62181
61335 error = -EEXIST; 62182 error = -EEXIST;
@@ -61343,7 +62190,7 @@ index cfe6608..f9deefc 100644
61343 /* 62190 /*
61344 * Special case - lookup gave negative, but... we had foo/bar/ 62191 * Special case - lookup gave negative, but... we had foo/bar/
61345 * From the vfs_mknod() POV we just have a negative dentry - 62192 * From the vfs_mknod() POV we just have a negative dentry -
61346@@ -3342,6 +3437,20 @@ struct dentry *user_path_create(int dfd, const char __user *pathname, 62193@@ -3350,6 +3445,20 @@ struct dentry *user_path_create(int dfd, const char __user *pathname,
61347 } 62194 }
61348 EXPORT_SYMBOL(user_path_create); 62195 EXPORT_SYMBOL(user_path_create);
61349 62196
@@ -61364,7 +62211,7 @@ index cfe6608..f9deefc 100644
61364 int vfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, dev_t dev) 62211 int vfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, dev_t dev)
61365 { 62212 {
61366 int error = may_create(dir, dentry); 62213 int error = may_create(dir, dentry);
61367@@ -3404,6 +3513,17 @@ retry: 62214@@ -3412,6 +3521,17 @@ retry:
61368 62215
61369 if (!IS_POSIXACL(path.dentry->d_inode)) 62216 if (!IS_POSIXACL(path.dentry->d_inode))
61370 mode &= ~current_umask(); 62217 mode &= ~current_umask();
@@ -61382,7 +62229,7 @@ index cfe6608..f9deefc 100644
61382 error = security_path_mknod(&path, dentry, mode, dev); 62229 error = security_path_mknod(&path, dentry, mode, dev);
61383 if (error) 62230 if (error)
61384 goto out; 62231 goto out;
61385@@ -3420,6 +3540,8 @@ retry: 62232@@ -3428,6 +3548,8 @@ retry:
61386 break; 62233 break;
61387 } 62234 }
61388 out: 62235 out:
@@ -61391,7 +62238,7 @@ index cfe6608..f9deefc 100644
61391 done_path_create(&path, dentry); 62238 done_path_create(&path, dentry);
61392 if (retry_estale(error, lookup_flags)) { 62239 if (retry_estale(error, lookup_flags)) {
61393 lookup_flags |= LOOKUP_REVAL; 62240 lookup_flags |= LOOKUP_REVAL;
61394@@ -3472,9 +3594,16 @@ retry: 62241@@ -3480,9 +3602,16 @@ retry:
61395 62242
61396 if (!IS_POSIXACL(path.dentry->d_inode)) 62243 if (!IS_POSIXACL(path.dentry->d_inode))
61397 mode &= ~current_umask(); 62244 mode &= ~current_umask();
@@ -61408,7 +62255,7 @@ index cfe6608..f9deefc 100644
61408 done_path_create(&path, dentry); 62255 done_path_create(&path, dentry);
61409 if (retry_estale(error, lookup_flags)) { 62256 if (retry_estale(error, lookup_flags)) {
61410 lookup_flags |= LOOKUP_REVAL; 62257 lookup_flags |= LOOKUP_REVAL;
61411@@ -3555,6 +3684,8 @@ static long do_rmdir(int dfd, const char __user *pathname) 62258@@ -3563,6 +3692,8 @@ static long do_rmdir(int dfd, const char __user *pathname)
61412 struct filename *name; 62259 struct filename *name;
61413 struct dentry *dentry; 62260 struct dentry *dentry;
61414 struct nameidata nd; 62261 struct nameidata nd;
@@ -61417,7 +62264,7 @@ index cfe6608..f9deefc 100644
61417 unsigned int lookup_flags = 0; 62264 unsigned int lookup_flags = 0;
61418 retry: 62265 retry:
61419 name = user_path_parent(dfd, pathname, &nd, lookup_flags); 62266 name = user_path_parent(dfd, pathname, &nd, lookup_flags);
61420@@ -3587,10 +3718,21 @@ retry: 62267@@ -3595,10 +3726,21 @@ retry:
61421 error = -ENOENT; 62268 error = -ENOENT;
61422 goto exit3; 62269 goto exit3;
61423 } 62270 }
@@ -61439,7 +62286,7 @@ index cfe6608..f9deefc 100644
61439 exit3: 62286 exit3:
61440 dput(dentry); 62287 dput(dentry);
61441 exit2: 62288 exit2:
61442@@ -3680,6 +3822,8 @@ static long do_unlinkat(int dfd, const char __user *pathname) 62289@@ -3688,6 +3830,8 @@ static long do_unlinkat(int dfd, const char __user *pathname)
61443 struct nameidata nd; 62290 struct nameidata nd;
61444 struct inode *inode = NULL; 62291 struct inode *inode = NULL;
61445 struct inode *delegated_inode = NULL; 62292 struct inode *delegated_inode = NULL;
@@ -61448,7 +62295,7 @@ index cfe6608..f9deefc 100644
61448 unsigned int lookup_flags = 0; 62295 unsigned int lookup_flags = 0;
61449 retry: 62296 retry:
61450 name = user_path_parent(dfd, pathname, &nd, lookup_flags); 62297 name = user_path_parent(dfd, pathname, &nd, lookup_flags);
61451@@ -3706,10 +3850,22 @@ retry_deleg: 62298@@ -3714,10 +3858,22 @@ retry_deleg:
61452 if (d_is_negative(dentry)) 62299 if (d_is_negative(dentry))
61453 goto slashes; 62300 goto slashes;
61454 ihold(inode); 62301 ihold(inode);
@@ -61471,7 +62318,7 @@ index cfe6608..f9deefc 100644
61471 exit2: 62318 exit2:
61472 dput(dentry); 62319 dput(dentry);
61473 } 62320 }
61474@@ -3797,9 +3953,17 @@ retry: 62321@@ -3805,9 +3961,17 @@ retry:
61475 if (IS_ERR(dentry)) 62322 if (IS_ERR(dentry))
61476 goto out_putname; 62323 goto out_putname;
61477 62324
@@ -61489,7 +62336,7 @@ index cfe6608..f9deefc 100644
61489 done_path_create(&path, dentry); 62336 done_path_create(&path, dentry);
61490 if (retry_estale(error, lookup_flags)) { 62337 if (retry_estale(error, lookup_flags)) {
61491 lookup_flags |= LOOKUP_REVAL; 62338 lookup_flags |= LOOKUP_REVAL;
61492@@ -3902,6 +4066,7 @@ SYSCALL_DEFINE5(linkat, int, olddfd, const char __user *, oldname, 62339@@ -3910,6 +4074,7 @@ SYSCALL_DEFINE5(linkat, int, olddfd, const char __user *, oldname,
61493 struct dentry *new_dentry; 62340 struct dentry *new_dentry;
61494 struct path old_path, new_path; 62341 struct path old_path, new_path;
61495 struct inode *delegated_inode = NULL; 62342 struct inode *delegated_inode = NULL;
@@ -61497,7 +62344,7 @@ index cfe6608..f9deefc 100644
61497 int how = 0; 62344 int how = 0;
61498 int error; 62345 int error;
61499 62346
61500@@ -3925,7 +4090,7 @@ retry: 62347@@ -3933,7 +4098,7 @@ retry:
61501 if (error) 62348 if (error)
61502 return error; 62349 return error;
61503 62350
@@ -61506,7 +62353,7 @@ index cfe6608..f9deefc 100644
61506 (how & LOOKUP_REVAL)); 62353 (how & LOOKUP_REVAL));
61507 error = PTR_ERR(new_dentry); 62354 error = PTR_ERR(new_dentry);
61508 if (IS_ERR(new_dentry)) 62355 if (IS_ERR(new_dentry))
61509@@ -3937,11 +4102,28 @@ retry: 62356@@ -3945,11 +4110,28 @@ retry:
61510 error = may_linkat(&old_path); 62357 error = may_linkat(&old_path);
61511 if (unlikely(error)) 62358 if (unlikely(error))
61512 goto out_dput; 62359 goto out_dput;
@@ -61535,7 +62382,7 @@ index cfe6608..f9deefc 100644
61535 done_path_create(&new_path, new_dentry); 62382 done_path_create(&new_path, new_dentry);
61536 if (delegated_inode) { 62383 if (delegated_inode) {
61537 error = break_deleg_wait(&delegated_inode); 62384 error = break_deleg_wait(&delegated_inode);
61538@@ -4228,6 +4410,12 @@ retry_deleg: 62385@@ -4236,6 +4418,12 @@ retry_deleg:
61539 if (new_dentry == trap) 62386 if (new_dentry == trap)
61540 goto exit5; 62387 goto exit5;
61541 62388
@@ -61548,7 +62395,7 @@ index cfe6608..f9deefc 100644
61548 error = security_path_rename(&oldnd.path, old_dentry, 62395 error = security_path_rename(&oldnd.path, old_dentry,
61549 &newnd.path, new_dentry); 62396 &newnd.path, new_dentry);
61550 if (error) 62397 if (error)
61551@@ -4235,6 +4423,9 @@ retry_deleg: 62398@@ -4243,6 +4431,9 @@ retry_deleg:
61552 error = vfs_rename(old_dir->d_inode, old_dentry, 62399 error = vfs_rename(old_dir->d_inode, old_dentry,
61553 new_dir->d_inode, new_dentry, 62400 new_dir->d_inode, new_dentry,
61554 &delegated_inode); 62401 &delegated_inode);
@@ -61558,7 +62405,7 @@ index cfe6608..f9deefc 100644
61558 exit5: 62405 exit5:
61559 dput(new_dentry); 62406 dput(new_dentry);
61560 exit4: 62407 exit4:
61561@@ -4271,6 +4462,8 @@ SYSCALL_DEFINE2(rename, const char __user *, oldname, const char __user *, newna 62408@@ -4279,6 +4470,8 @@ SYSCALL_DEFINE2(rename, const char __user *, oldname, const char __user *, newna
61562 62409
61563 int vfs_readlink(struct dentry *dentry, char __user *buffer, int buflen, const char *link) 62410 int vfs_readlink(struct dentry *dentry, char __user *buffer, int buflen, const char *link)
61564 { 62411 {
@@ -61567,7 +62414,7 @@ index cfe6608..f9deefc 100644
61567 int len; 62414 int len;
61568 62415
61569 len = PTR_ERR(link); 62416 len = PTR_ERR(link);
61570@@ -4280,7 +4473,14 @@ int vfs_readlink(struct dentry *dentry, char __user *buffer, int buflen, const c 62417@@ -4288,7 +4481,14 @@ int vfs_readlink(struct dentry *dentry, char __user *buffer, int buflen, const c
61571 len = strlen(link); 62418 len = strlen(link);
61572 if (len > (unsigned) buflen) 62419 if (len > (unsigned) buflen)
61573 len = buflen; 62420 len = buflen;
@@ -61584,10 +62431,10 @@ index cfe6608..f9deefc 100644
61584 out: 62431 out:
61585 return len; 62432 return len;
61586diff --git a/fs/namespace.c b/fs/namespace.c 62433diff --git a/fs/namespace.c b/fs/namespace.c
61587index be32ebc..c595734 100644 62434index 65233a5..82ac953 100644
61588--- a/fs/namespace.c 62435--- a/fs/namespace.c
61589+++ b/fs/namespace.c 62436+++ b/fs/namespace.c
61590@@ -1293,6 +1293,9 @@ static int do_umount(struct mount *mnt, int flags) 62437@@ -1339,6 +1339,9 @@ static int do_umount(struct mount *mnt, int flags)
61591 if (!(sb->s_flags & MS_RDONLY)) 62438 if (!(sb->s_flags & MS_RDONLY))
61592 retval = do_remount_sb(sb, MS_RDONLY, NULL, 0); 62439 retval = do_remount_sb(sb, MS_RDONLY, NULL, 0);
61593 up_write(&sb->s_umount); 62440 up_write(&sb->s_umount);
@@ -61597,7 +62444,7 @@ index be32ebc..c595734 100644
61597 return retval; 62444 return retval;
61598 } 62445 }
61599 62446
61600@@ -1315,6 +1318,9 @@ static int do_umount(struct mount *mnt, int flags) 62447@@ -1361,6 +1364,9 @@ static int do_umount(struct mount *mnt, int flags)
61601 } 62448 }
61602 unlock_mount_hash(); 62449 unlock_mount_hash();
61603 namespace_unlock(); 62450 namespace_unlock();
@@ -61607,7 +62454,7 @@ index be32ebc..c595734 100644
61607 return retval; 62454 return retval;
61608 } 62455 }
61609 62456
61610@@ -1334,7 +1340,7 @@ static inline bool may_mount(void) 62457@@ -1380,7 +1386,7 @@ static inline bool may_mount(void)
61611 * unixes. Our API is identical to OSF/1 to avoid making a mess of AMD 62458 * unixes. Our API is identical to OSF/1 to avoid making a mess of AMD
61612 */ 62459 */
61613 62460
@@ -61616,7 +62463,7 @@ index be32ebc..c595734 100644
61616 { 62463 {
61617 struct path path; 62464 struct path path;
61618 struct mount *mnt; 62465 struct mount *mnt;
61619@@ -1376,7 +1382,7 @@ out: 62466@@ -1422,7 +1428,7 @@ out:
61620 /* 62467 /*
61621 * The 2.0 compatible umount. No flags. 62468 * The 2.0 compatible umount. No flags.
61622 */ 62469 */
@@ -61625,7 +62472,7 @@ index be32ebc..c595734 100644
61625 { 62472 {
61626 return sys_umount(name, 0); 62473 return sys_umount(name, 0);
61627 } 62474 }
61628@@ -2379,6 +2385,16 @@ long do_mount(const char *dev_name, const char *dir_name, 62475@@ -2431,6 +2437,16 @@ long do_mount(const char *dev_name, const char *dir_name,
61629 MS_NOATIME | MS_NODIRATIME | MS_RELATIME| MS_KERNMOUNT | 62476 MS_NOATIME | MS_NODIRATIME | MS_RELATIME| MS_KERNMOUNT |
61630 MS_STRICTATIME); 62477 MS_STRICTATIME);
61631 62478
@@ -61642,7 +62489,7 @@ index be32ebc..c595734 100644
61642 if (flags & MS_REMOUNT) 62489 if (flags & MS_REMOUNT)
61643 retval = do_remount(&path, flags & ~MS_REMOUNT, mnt_flags, 62490 retval = do_remount(&path, flags & ~MS_REMOUNT, mnt_flags,
61644 data_page); 62491 data_page);
61645@@ -2393,6 +2409,9 @@ long do_mount(const char *dev_name, const char *dir_name, 62492@@ -2445,6 +2461,9 @@ long do_mount(const char *dev_name, const char *dir_name,
61646 dev_name, data_page); 62493 dev_name, data_page);
61647 dput_out: 62494 dput_out:
61648 path_put(&path); 62495 path_put(&path);
@@ -61652,7 +62499,7 @@ index be32ebc..c595734 100644
61652 return retval; 62499 return retval;
61653 } 62500 }
61654 62501
61655@@ -2410,7 +2429,7 @@ static void free_mnt_ns(struct mnt_namespace *ns) 62502@@ -2462,7 +2481,7 @@ static void free_mnt_ns(struct mnt_namespace *ns)
61656 * number incrementing at 10Ghz will take 12,427 years to wrap which 62503 * number incrementing at 10Ghz will take 12,427 years to wrap which
61657 * is effectively never, so we can ignore the possibility. 62504 * is effectively never, so we can ignore the possibility.
61658 */ 62505 */
@@ -61661,7 +62508,7 @@ index be32ebc..c595734 100644
61661 62508
61662 static struct mnt_namespace *alloc_mnt_ns(struct user_namespace *user_ns) 62509 static struct mnt_namespace *alloc_mnt_ns(struct user_namespace *user_ns)
61663 { 62510 {
61664@@ -2425,7 +2444,7 @@ static struct mnt_namespace *alloc_mnt_ns(struct user_namespace *user_ns) 62511@@ -2477,7 +2496,7 @@ static struct mnt_namespace *alloc_mnt_ns(struct user_namespace *user_ns)
61665 kfree(new_ns); 62512 kfree(new_ns);
61666 return ERR_PTR(ret); 62513 return ERR_PTR(ret);
61667 } 62514 }
@@ -61670,7 +62517,7 @@ index be32ebc..c595734 100644
61670 atomic_set(&new_ns->count, 1); 62517 atomic_set(&new_ns->count, 1);
61671 new_ns->root = NULL; 62518 new_ns->root = NULL;
61672 INIT_LIST_HEAD(&new_ns->list); 62519 INIT_LIST_HEAD(&new_ns->list);
61673@@ -2435,7 +2454,7 @@ static struct mnt_namespace *alloc_mnt_ns(struct user_namespace *user_ns) 62520@@ -2487,7 +2506,7 @@ static struct mnt_namespace *alloc_mnt_ns(struct user_namespace *user_ns)
61674 return new_ns; 62521 return new_ns;
61675 } 62522 }
61676 62523
@@ -61679,7 +62526,7 @@ index be32ebc..c595734 100644
61679 struct user_namespace *user_ns, struct fs_struct *new_fs) 62526 struct user_namespace *user_ns, struct fs_struct *new_fs)
61680 { 62527 {
61681 struct mnt_namespace *new_ns; 62528 struct mnt_namespace *new_ns;
61682@@ -2556,8 +2575,8 @@ struct dentry *mount_subtree(struct vfsmount *mnt, const char *name) 62529@@ -2608,8 +2627,8 @@ struct dentry *mount_subtree(struct vfsmount *mnt, const char *name)
61683 } 62530 }
61684 EXPORT_SYMBOL(mount_subtree); 62531 EXPORT_SYMBOL(mount_subtree);
61685 62532
@@ -61690,7 +62537,7 @@ index be32ebc..c595734 100644
61690 { 62537 {
61691 int ret; 62538 int ret;
61692 char *kernel_type; 62539 char *kernel_type;
61693@@ -2670,6 +2689,11 @@ SYSCALL_DEFINE2(pivot_root, const char __user *, new_root, 62540@@ -2722,6 +2741,11 @@ SYSCALL_DEFINE2(pivot_root, const char __user *, new_root,
61694 if (error) 62541 if (error)
61695 goto out2; 62542 goto out2;
61696 62543
@@ -61702,7 +62549,7 @@ index be32ebc..c595734 100644
61702 get_fs_root(current->fs, &root); 62549 get_fs_root(current->fs, &root);
61703 old_mp = lock_mount(&old); 62550 old_mp = lock_mount(&old);
61704 error = PTR_ERR(old_mp); 62551 error = PTR_ERR(old_mp);
61705@@ -2930,7 +2954,7 @@ static int mntns_install(struct nsproxy *nsproxy, void *ns) 62552@@ -2990,7 +3014,7 @@ static int mntns_install(struct nsproxy *nsproxy, void *ns)
61706 !ns_capable(current_user_ns(), CAP_SYS_ADMIN)) 62553 !ns_capable(current_user_ns(), CAP_SYS_ADMIN))
61707 return -EPERM; 62554 return -EPERM;
61708 62555
@@ -61725,10 +62572,10 @@ index f4ccfe6..a5cf064 100644
61725 static struct callback_op callback_ops[]; 62572 static struct callback_op callback_ops[];
61726 62573
61727diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c 62574diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c
61728index 5d94c02..630214f 100644 62575index 360114a..ac6e265 100644
61729--- a/fs/nfs/inode.c 62576--- a/fs/nfs/inode.c
61730+++ b/fs/nfs/inode.c 62577+++ b/fs/nfs/inode.c
61731@@ -1153,16 +1153,16 @@ static int nfs_size_need_update(const struct inode *inode, const struct nfs_fatt 62578@@ -1189,16 +1189,16 @@ static int nfs_size_need_update(const struct inode *inode, const struct nfs_fatt
61732 return nfs_size_to_loff_t(fattr->size) > i_size_read(inode); 62579 return nfs_size_to_loff_t(fattr->size) > i_size_read(inode);
61733 } 62580 }
61734 62581
@@ -61749,10 +62596,10 @@ index 5d94c02..630214f 100644
61749 62596
61750 void nfs_fattr_init(struct nfs_fattr *fattr) 62597 void nfs_fattr_init(struct nfs_fattr *fattr)
61751diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c 62598diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
61752index 419572f..5414a23 100644 62599index 9a914e8..e89c0ea 100644
61753--- a/fs/nfsd/nfs4proc.c 62600--- a/fs/nfsd/nfs4proc.c
61754+++ b/fs/nfsd/nfs4proc.c 62601+++ b/fs/nfsd/nfs4proc.c
61755@@ -1168,7 +1168,7 @@ struct nfsd4_operation { 62602@@ -1178,7 +1178,7 @@ struct nfsd4_operation {
61756 nfsd4op_rsize op_rsize_bop; 62603 nfsd4op_rsize op_rsize_bop;
61757 stateid_getter op_get_currentstateid; 62604 stateid_getter op_get_currentstateid;
61758 stateid_setter op_set_currentstateid; 62605 stateid_setter op_set_currentstateid;
@@ -61762,10 +62609,10 @@ index 419572f..5414a23 100644
61762 static struct nfsd4_operation nfsd4_ops[]; 62609 static struct nfsd4_operation nfsd4_ops[];
61763 62610
61764diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c 62611diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
61765index ee7237f..e3ae60a 100644 62612index 16e8fa7..b0803f6 100644
61766--- a/fs/nfsd/nfs4xdr.c 62613--- a/fs/nfsd/nfs4xdr.c
61767+++ b/fs/nfsd/nfs4xdr.c 62614+++ b/fs/nfsd/nfs4xdr.c
61768@@ -1523,7 +1523,7 @@ nfsd4_decode_notsupp(struct nfsd4_compoundargs *argp, void *p) 62615@@ -1531,7 +1531,7 @@ nfsd4_decode_notsupp(struct nfsd4_compoundargs *argp, void *p)
61769 62616
61770 typedef __be32(*nfsd4_dec)(struct nfsd4_compoundargs *argp, void *); 62617 typedef __be32(*nfsd4_dec)(struct nfsd4_compoundargs *argp, void *);
61771 62618
@@ -61775,10 +62622,10 @@ index ee7237f..e3ae60a 100644
61775 [OP_CLOSE] = (nfsd4_dec)nfsd4_decode_close, 62622 [OP_CLOSE] = (nfsd4_dec)nfsd4_decode_close,
61776 [OP_COMMIT] = (nfsd4_dec)nfsd4_decode_commit, 62623 [OP_COMMIT] = (nfsd4_dec)nfsd4_decode_commit,
61777diff --git a/fs/nfsd/nfscache.c b/fs/nfsd/nfscache.c 62624diff --git a/fs/nfsd/nfscache.c b/fs/nfsd/nfscache.c
61778index b6af150..f6ec5e3 100644 62625index f8f060f..c4ba09a 100644
61779--- a/fs/nfsd/nfscache.c 62626--- a/fs/nfsd/nfscache.c
61780+++ b/fs/nfsd/nfscache.c 62627+++ b/fs/nfsd/nfscache.c
61781@@ -547,14 +547,17 @@ nfsd_cache_update(struct svc_rqst *rqstp, int cachetype, __be32 *statp) 62628@@ -519,14 +519,17 @@ nfsd_cache_update(struct svc_rqst *rqstp, int cachetype, __be32 *statp)
61782 { 62629 {
61783 struct svc_cacherep *rp = rqstp->rq_cacherep; 62630 struct svc_cacherep *rp = rqstp->rq_cacherep;
61784 struct kvec *resv = &rqstp->rq_res.head[0], *cachv; 62631 struct kvec *resv = &rqstp->rq_res.head[0], *cachv;
@@ -61800,10 +62647,10 @@ index b6af150..f6ec5e3 100644
61800 /* Don't cache excessive amounts of data and XDR failures */ 62647 /* Don't cache excessive amounts of data and XDR failures */
61801 if (!statp || len > (256 >> 2)) { 62648 if (!statp || len > (256 >> 2)) {
61802diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c 62649diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c
61803index 7eea63c..a35f4fb 100644 62650index eea5ad1..5a84ac7 100644
61804--- a/fs/nfsd/vfs.c 62651--- a/fs/nfsd/vfs.c
61805+++ b/fs/nfsd/vfs.c 62652+++ b/fs/nfsd/vfs.c
61806@@ -993,7 +993,7 @@ nfsd_vfs_read(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file, 62653@@ -843,7 +843,7 @@ nfsd_vfs_read(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file,
61807 } else { 62654 } else {
61808 oldfs = get_fs(); 62655 oldfs = get_fs();
61809 set_fs(KERNEL_DS); 62656 set_fs(KERNEL_DS);
@@ -61812,7 +62659,7 @@ index 7eea63c..a35f4fb 100644
61812 set_fs(oldfs); 62659 set_fs(oldfs);
61813 } 62660 }
61814 62661
61815@@ -1084,7 +1084,7 @@ nfsd_vfs_write(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file, 62662@@ -934,7 +934,7 @@ nfsd_vfs_write(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file,
61816 62663
61817 /* Write the data. */ 62664 /* Write the data. */
61818 oldfs = get_fs(); set_fs(KERNEL_DS); 62665 oldfs = get_fs(); set_fs(KERNEL_DS);
@@ -61821,7 +62668,7 @@ index 7eea63c..a35f4fb 100644
61821 set_fs(oldfs); 62668 set_fs(oldfs);
61822 if (host_err < 0) 62669 if (host_err < 0)
61823 goto out_nfserr; 62670 goto out_nfserr;
61824@@ -1629,7 +1629,7 @@ nfsd_readlink(struct svc_rqst *rqstp, struct svc_fh *fhp, char *buf, int *lenp) 62671@@ -1479,7 +1479,7 @@ nfsd_readlink(struct svc_rqst *rqstp, struct svc_fh *fhp, char *buf, int *lenp)
61825 */ 62672 */
61826 62673
61827 oldfs = get_fs(); set_fs(KERNEL_DS); 62674 oldfs = get_fs(); set_fs(KERNEL_DS);
@@ -61831,12 +62678,12 @@ index 7eea63c..a35f4fb 100644
61831 62678
61832 if (host_err < 0) 62679 if (host_err < 0)
61833diff --git a/fs/nls/nls_base.c b/fs/nls/nls_base.c 62680diff --git a/fs/nls/nls_base.c b/fs/nls/nls_base.c
61834index fea6bd5..8ee9d81 100644 62681index 52ccd34..43a53b1 100644
61835--- a/fs/nls/nls_base.c 62682--- a/fs/nls/nls_base.c
61836+++ b/fs/nls/nls_base.c 62683+++ b/fs/nls/nls_base.c
61837@@ -234,20 +234,22 @@ EXPORT_SYMBOL(utf16s_to_utf8s); 62684@@ -234,21 +234,25 @@ EXPORT_SYMBOL(utf16s_to_utf8s);
61838 62685
61839 int register_nls(struct nls_table * nls) 62686 int __register_nls(struct nls_table *nls, struct module *owner)
61840 { 62687 {
61841- struct nls_table ** tmp = &tables; 62688- struct nls_table ** tmp = &tables;
61842+ struct nls_table *tmp = tables; 62689+ struct nls_table *tmp = tables;
@@ -61844,6 +62691,10 @@ index fea6bd5..8ee9d81 100644
61844 if (nls->next) 62691 if (nls->next)
61845 return -EBUSY; 62692 return -EBUSY;
61846 62693
62694- nls->owner = owner;
62695+ pax_open_kernel();
62696+ *(void **)&nls->owner = owner;
62697+ pax_close_kernel();
61847 spin_lock(&nls_lock); 62698 spin_lock(&nls_lock);
61848- while (*tmp) { 62699- while (*tmp) {
61849- if (nls == *tmp) { 62700- if (nls == *tmp) {
@@ -61862,7 +62713,7 @@ index fea6bd5..8ee9d81 100644
61862 tables = nls; 62713 tables = nls;
61863 spin_unlock(&nls_lock); 62714 spin_unlock(&nls_lock);
61864 return 0; 62715 return 0;
61865@@ -255,12 +257,14 @@ int register_nls(struct nls_table * nls) 62716@@ -257,12 +261,14 @@ EXPORT_SYMBOL(__register_nls);
61866 62717
61867 int unregister_nls(struct nls_table * nls) 62718 int unregister_nls(struct nls_table * nls)
61868 { 62719 {
@@ -61880,10 +62731,10 @@ index fea6bd5..8ee9d81 100644
61880 return 0; 62731 return 0;
61881 } 62732 }
61882diff --git a/fs/nls/nls_euc-jp.c b/fs/nls/nls_euc-jp.c 62733diff --git a/fs/nls/nls_euc-jp.c b/fs/nls/nls_euc-jp.c
61883index 7424929..35f6be5 100644 62734index 162b3f1..6076a7c 100644
61884--- a/fs/nls/nls_euc-jp.c 62735--- a/fs/nls/nls_euc-jp.c
61885+++ b/fs/nls/nls_euc-jp.c 62736+++ b/fs/nls/nls_euc-jp.c
61886@@ -561,8 +561,10 @@ static int __init init_nls_euc_jp(void) 62737@@ -560,8 +560,10 @@ static int __init init_nls_euc_jp(void)
61887 p_nls = load_nls("cp932"); 62738 p_nls = load_nls("cp932");
61888 62739
61889 if (p_nls) { 62740 if (p_nls) {
@@ -61897,10 +62748,10 @@ index 7424929..35f6be5 100644
61897 } 62748 }
61898 62749
61899diff --git a/fs/nls/nls_koi8-ru.c b/fs/nls/nls_koi8-ru.c 62750diff --git a/fs/nls/nls_koi8-ru.c b/fs/nls/nls_koi8-ru.c
61900index e7bc1d7..06bd4bb 100644 62751index a80a741..7b96e1b 100644
61901--- a/fs/nls/nls_koi8-ru.c 62752--- a/fs/nls/nls_koi8-ru.c
61902+++ b/fs/nls/nls_koi8-ru.c 62753+++ b/fs/nls/nls_koi8-ru.c
61903@@ -63,8 +63,10 @@ static int __init init_nls_koi8_ru(void) 62754@@ -62,8 +62,10 @@ static int __init init_nls_koi8_ru(void)
61904 p_nls = load_nls("koi8-u"); 62755 p_nls = load_nls("koi8-u");
61905 62756
61906 if (p_nls) { 62757 if (p_nls) {
@@ -61914,10 +62765,10 @@ index e7bc1d7..06bd4bb 100644
61914 } 62765 }
61915 62766
61916diff --git a/fs/notify/fanotify/fanotify_user.c b/fs/notify/fanotify/fanotify_user.c 62767diff --git a/fs/notify/fanotify/fanotify_user.c b/fs/notify/fanotify/fanotify_user.c
61917index 6663511..7668ca4 100644 62768index 287a22c..4e56e4e 100644
61918--- a/fs/notify/fanotify/fanotify_user.c 62769--- a/fs/notify/fanotify/fanotify_user.c
61919+++ b/fs/notify/fanotify/fanotify_user.c 62770+++ b/fs/notify/fanotify/fanotify_user.c
61920@@ -253,8 +253,8 @@ static ssize_t copy_event_to_user(struct fsnotify_group *group, 62771@@ -251,8 +251,8 @@ static ssize_t copy_event_to_user(struct fsnotify_group *group,
61921 62772
61922 fd = fanotify_event_metadata.fd; 62773 fd = fanotify_event_metadata.fd;
61923 ret = -EFAULT; 62774 ret = -EFAULT;
@@ -61928,20 +62779,29 @@ index 6663511..7668ca4 100644
61928 goto out_close_fd; 62779 goto out_close_fd;
61929 62780
61930 ret = prepare_for_access_response(group, event, fd); 62781 ret = prepare_for_access_response(group, event, fd);
62782@@ -742,6 +742,8 @@ SYSCALL_DEFINE2(fanotify_init, unsigned int, flags, unsigned int, event_f_flags)
62783 oevent->path.mnt = NULL;
62784 oevent->path.dentry = NULL;
62785
62786+ if (force_o_largefile())
62787+ event_f_flags |= O_LARGEFILE;
62788 group->fanotify_data.f_flags = event_f_flags;
62789 #ifdef CONFIG_FANOTIFY_ACCESS_PERMISSIONS
62790 oevent->response = 0;
61931diff --git a/fs/notify/notification.c b/fs/notify/notification.c 62791diff --git a/fs/notify/notification.c b/fs/notify/notification.c
61932index 7b51b05..5ea5ef6 100644 62792index 1e58402..bb2d6f4 100644
61933--- a/fs/notify/notification.c 62793--- a/fs/notify/notification.c
61934+++ b/fs/notify/notification.c 62794+++ b/fs/notify/notification.c
61935@@ -57,7 +57,7 @@ static struct kmem_cache *fsnotify_event_holder_cachep; 62795@@ -48,7 +48,7 @@
61936 * get set to 0 so it will never get 'freed' 62796 #include <linux/fsnotify_backend.h>
61937 */ 62797 #include "fsnotify.h"
61938 static struct fsnotify_event *q_overflow_event; 62798
61939-static atomic_t fsnotify_sync_cookie = ATOMIC_INIT(0); 62799-static atomic_t fsnotify_sync_cookie = ATOMIC_INIT(0);
61940+static atomic_unchecked_t fsnotify_sync_cookie = ATOMIC_INIT(0); 62800+static atomic_unchecked_t fsnotify_sync_cookie = ATOMIC_INIT(0);
61941 62801
61942 /** 62802 /**
61943 * fsnotify_get_cookie - return a unique cookie for use in synchronizing events. 62803 * fsnotify_get_cookie - return a unique cookie for use in synchronizing events.
61944@@ -65,7 +65,7 @@ static atomic_t fsnotify_sync_cookie = ATOMIC_INIT(0); 62804@@ -56,7 +56,7 @@ static atomic_t fsnotify_sync_cookie = ATOMIC_INIT(0);
61945 */ 62805 */
61946 u32 fsnotify_get_cookie(void) 62806 u32 fsnotify_get_cookie(void)
61947 { 62807 {
@@ -61964,7 +62824,7 @@ index 9e38daf..5727cae 100644
61964 "inode 0x%lx or driver bug.", vdir->i_ino); 62824 "inode 0x%lx or driver bug.", vdir->i_ino);
61965 goto err_out; 62825 goto err_out;
61966diff --git a/fs/ntfs/file.c b/fs/ntfs/file.c 62826diff --git a/fs/ntfs/file.c b/fs/ntfs/file.c
61967index ea4ba9d..1e13d34 100644 62827index db9bd8a..8338fb6 100644
61968--- a/fs/ntfs/file.c 62828--- a/fs/ntfs/file.c
61969+++ b/fs/ntfs/file.c 62829+++ b/fs/ntfs/file.c
61970@@ -1282,7 +1282,7 @@ static inline size_t ntfs_copy_from_user(struct page **pages, 62830@@ -1282,7 +1282,7 @@ static inline size_t ntfs_copy_from_user(struct page **pages,
@@ -62008,10 +62868,10 @@ index 82650d5..db37dcf 100644
62008 if (bh_primary) 62868 if (bh_primary)
62009 brelse(bh_primary); 62869 brelse(bh_primary);
62010diff --git a/fs/ocfs2/localalloc.c b/fs/ocfs2/localalloc.c 62870diff --git a/fs/ocfs2/localalloc.c b/fs/ocfs2/localalloc.c
62011index cd5496b..26a1055 100644 62871index 0440134..d52c93a 100644
62012--- a/fs/ocfs2/localalloc.c 62872--- a/fs/ocfs2/localalloc.c
62013+++ b/fs/ocfs2/localalloc.c 62873+++ b/fs/ocfs2/localalloc.c
62014@@ -1278,7 +1278,7 @@ static int ocfs2_local_alloc_slide_window(struct ocfs2_super *osb, 62874@@ -1320,7 +1320,7 @@ static int ocfs2_local_alloc_slide_window(struct ocfs2_super *osb,
62015 goto bail; 62875 goto bail;
62016 } 62876 }
62017 62877
@@ -62021,7 +62881,7 @@ index cd5496b..26a1055 100644
62021 bail: 62881 bail:
62022 if (handle) 62882 if (handle)
62023diff --git a/fs/ocfs2/ocfs2.h b/fs/ocfs2/ocfs2.h 62883diff --git a/fs/ocfs2/ocfs2.h b/fs/ocfs2/ocfs2.h
62024index 3a90347..c40bef8 100644 62884index 553f53c..aaf5133 100644
62025--- a/fs/ocfs2/ocfs2.h 62885--- a/fs/ocfs2/ocfs2.h
62026+++ b/fs/ocfs2/ocfs2.h 62886+++ b/fs/ocfs2/ocfs2.h
62027@@ -235,11 +235,11 @@ enum ocfs2_vol_state 62887@@ -235,11 +235,11 @@ enum ocfs2_vol_state
@@ -62042,10 +62902,10 @@ index 3a90347..c40bef8 100644
62042 62902
62043 enum ocfs2_local_alloc_state 62903 enum ocfs2_local_alloc_state
62044diff --git a/fs/ocfs2/suballoc.c b/fs/ocfs2/suballoc.c 62904diff --git a/fs/ocfs2/suballoc.c b/fs/ocfs2/suballoc.c
62045index 2c91452..77a3cd2 100644 62905index 47ae266..6e8b793 100644
62046--- a/fs/ocfs2/suballoc.c 62906--- a/fs/ocfs2/suballoc.c
62047+++ b/fs/ocfs2/suballoc.c 62907+++ b/fs/ocfs2/suballoc.c
62048@@ -872,7 +872,7 @@ static int ocfs2_reserve_suballoc_bits(struct ocfs2_super *osb, 62908@@ -866,7 +866,7 @@ static int ocfs2_reserve_suballoc_bits(struct ocfs2_super *osb,
62049 mlog_errno(status); 62909 mlog_errno(status);
62050 goto bail; 62910 goto bail;
62051 } 62911 }
@@ -62054,7 +62914,7 @@ index 2c91452..77a3cd2 100644
62054 62914
62055 /* You should never ask for this much metadata */ 62915 /* You should never ask for this much metadata */
62056 BUG_ON(bits_wanted > 62916 BUG_ON(bits_wanted >
62057@@ -2000,7 +2000,7 @@ int ocfs2_claim_metadata(handle_t *handle, 62917@@ -1992,7 +1992,7 @@ int ocfs2_claim_metadata(handle_t *handle,
62058 mlog_errno(status); 62918 mlog_errno(status);
62059 goto bail; 62919 goto bail;
62060 } 62920 }
@@ -62063,7 +62923,7 @@ index 2c91452..77a3cd2 100644
62063 62923
62064 *suballoc_loc = res.sr_bg_blkno; 62924 *suballoc_loc = res.sr_bg_blkno;
62065 *suballoc_bit_start = res.sr_bit_offset; 62925 *suballoc_bit_start = res.sr_bit_offset;
62066@@ -2164,7 +2164,7 @@ int ocfs2_claim_new_inode_at_loc(handle_t *handle, 62926@@ -2156,7 +2156,7 @@ int ocfs2_claim_new_inode_at_loc(handle_t *handle,
62067 trace_ocfs2_claim_new_inode_at_loc((unsigned long long)di_blkno, 62927 trace_ocfs2_claim_new_inode_at_loc((unsigned long long)di_blkno,
62068 res->sr_bits); 62928 res->sr_bits);
62069 62929
@@ -62072,7 +62932,7 @@ index 2c91452..77a3cd2 100644
62072 62932
62073 BUG_ON(res->sr_bits != 1); 62933 BUG_ON(res->sr_bits != 1);
62074 62934
62075@@ -2206,7 +2206,7 @@ int ocfs2_claim_new_inode(handle_t *handle, 62935@@ -2198,7 +2198,7 @@ int ocfs2_claim_new_inode(handle_t *handle,
62076 mlog_errno(status); 62936 mlog_errno(status);
62077 goto bail; 62937 goto bail;
62078 } 62938 }
@@ -62081,7 +62941,7 @@ index 2c91452..77a3cd2 100644
62081 62941
62082 BUG_ON(res.sr_bits != 1); 62942 BUG_ON(res.sr_bits != 1);
62083 62943
62084@@ -2310,7 +2310,7 @@ int __ocfs2_claim_clusters(handle_t *handle, 62944@@ -2302,7 +2302,7 @@ int __ocfs2_claim_clusters(handle_t *handle,
62085 cluster_start, 62945 cluster_start,
62086 num_clusters); 62946 num_clusters);
62087 if (!status) 62947 if (!status)
@@ -62090,7 +62950,7 @@ index 2c91452..77a3cd2 100644
62090 } else { 62950 } else {
62091 if (min_clusters > (osb->bitmap_cpg - 1)) { 62951 if (min_clusters > (osb->bitmap_cpg - 1)) {
62092 /* The only paths asking for contiguousness 62952 /* The only paths asking for contiguousness
62093@@ -2336,7 +2336,7 @@ int __ocfs2_claim_clusters(handle_t *handle, 62953@@ -2328,7 +2328,7 @@ int __ocfs2_claim_clusters(handle_t *handle,
62094 ocfs2_desc_bitmap_to_cluster_off(ac->ac_inode, 62954 ocfs2_desc_bitmap_to_cluster_off(ac->ac_inode,
62095 res.sr_bg_blkno, 62955 res.sr_bg_blkno,
62096 res.sr_bit_offset); 62956 res.sr_bit_offset);
@@ -62100,7 +62960,7 @@ index 2c91452..77a3cd2 100644
62100 } 62960 }
62101 } 62961 }
62102diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c 62962diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c
62103index c414929..5c9ee542 100644 62963index 49d84f8..4807e0b 100644
62104--- a/fs/ocfs2/super.c 62964--- a/fs/ocfs2/super.c
62105+++ b/fs/ocfs2/super.c 62965+++ b/fs/ocfs2/super.c
62106@@ -300,11 +300,11 @@ static int ocfs2_osb_dump(struct ocfs2_super *osb, char *buf, int len) 62966@@ -300,11 +300,11 @@ static int ocfs2_osb_dump(struct ocfs2_super *osb, char *buf, int len)
@@ -62120,7 +62980,7 @@ index c414929..5c9ee542 100644
62120 62980
62121 out += snprintf(buf + out, len - out, 62981 out += snprintf(buf + out, len - out,
62122 "%10s => State: %u Descriptor: %llu Size: %u bits " 62982 "%10s => State: %u Descriptor: %llu Size: %u bits "
62123@@ -2121,11 +2121,11 @@ static int ocfs2_initialize_super(struct super_block *sb, 62983@@ -2123,11 +2123,11 @@ static int ocfs2_initialize_super(struct super_block *sb,
62124 spin_lock_init(&osb->osb_xattr_lock); 62984 spin_lock_init(&osb->osb_xattr_lock);
62125 ocfs2_init_steal_slots(osb); 62985 ocfs2_init_steal_slots(osb);
62126 62986
@@ -62138,7 +62998,7 @@ index c414929..5c9ee542 100644
62138 /* Copy the blockcheck stats from the superblock probe */ 62998 /* Copy the blockcheck stats from the superblock probe */
62139 osb->osb_ecc_stats = *stats; 62999 osb->osb_ecc_stats = *stats;
62140diff --git a/fs/open.c b/fs/open.c 63000diff --git a/fs/open.c b/fs/open.c
62141index 4b3e1ed..1c84599 100644 63001index 2ed7325..4e77ac3 100644
62142--- a/fs/open.c 63002--- a/fs/open.c
62143+++ b/fs/open.c 63003+++ b/fs/open.c
62144@@ -32,6 +32,8 @@ 63004@@ -32,6 +32,8 @@
@@ -62242,7 +63102,7 @@ index 4b3e1ed..1c84599 100644
62242 newattrs.ia_valid = ATTR_CTIME; 63102 newattrs.ia_valid = ATTR_CTIME;
62243 if (user != (uid_t) -1) { 63103 if (user != (uid_t) -1) {
62244 if (!uid_valid(uid)) 63104 if (!uid_valid(uid))
62245@@ -990,6 +1027,7 @@ long do_sys_open(int dfd, const char __user *filename, int flags, umode_t mode) 63105@@ -982,6 +1019,7 @@ long do_sys_open(int dfd, const char __user *filename, int flags, umode_t mode)
62246 } else { 63106 } else {
62247 fsnotify_open(f); 63107 fsnotify_open(f);
62248 fd_install(fd, f); 63108 fd_install(fd, f);
@@ -62251,7 +63111,7 @@ index 4b3e1ed..1c84599 100644
62251 } 63111 }
62252 putname(tmp); 63112 putname(tmp);
62253diff --git a/fs/pipe.c b/fs/pipe.c 63113diff --git a/fs/pipe.c b/fs/pipe.c
62254index 0e0752e..7cfdd50 100644 63114index 78fd0d0..f71fc09 100644
62255--- a/fs/pipe.c 63115--- a/fs/pipe.c
62256+++ b/fs/pipe.c 63116+++ b/fs/pipe.c
62257@@ -56,7 +56,7 @@ unsigned int pipe_min_size = PAGE_SIZE; 63117@@ -56,7 +56,7 @@ unsigned int pipe_min_size = PAGE_SIZE;
@@ -62314,7 +63174,7 @@ index 0e0752e..7cfdd50 100644
62314 } 63174 }
62315 out: 63175 out:
62316 __pipe_unlock(pipe); 63176 __pipe_unlock(pipe);
62317@@ -709,7 +709,7 @@ pipe_poll(struct file *filp, poll_table *wait) 63177@@ -710,7 +710,7 @@ pipe_poll(struct file *filp, poll_table *wait)
62318 mask = 0; 63178 mask = 0;
62319 if (filp->f_mode & FMODE_READ) { 63179 if (filp->f_mode & FMODE_READ) {
62320 mask = (nrbufs > 0) ? POLLIN | POLLRDNORM : 0; 63180 mask = (nrbufs > 0) ? POLLIN | POLLRDNORM : 0;
@@ -62323,7 +63183,7 @@ index 0e0752e..7cfdd50 100644
62323 mask |= POLLHUP; 63183 mask |= POLLHUP;
62324 } 63184 }
62325 63185
62326@@ -719,7 +719,7 @@ pipe_poll(struct file *filp, poll_table *wait) 63186@@ -720,7 +720,7 @@ pipe_poll(struct file *filp, poll_table *wait)
62327 * Most Unices do not set POLLERR for FIFOs but on Linux they 63187 * Most Unices do not set POLLERR for FIFOs but on Linux they
62328 * behave exactly like pipes for poll(). 63188 * behave exactly like pipes for poll().
62329 */ 63189 */
@@ -62332,7 +63192,7 @@ index 0e0752e..7cfdd50 100644
62332 mask |= POLLERR; 63192 mask |= POLLERR;
62333 } 63193 }
62334 63194
62335@@ -731,7 +731,7 @@ static void put_pipe_info(struct inode *inode, struct pipe_inode_info *pipe) 63195@@ -732,7 +732,7 @@ static void put_pipe_info(struct inode *inode, struct pipe_inode_info *pipe)
62336 int kill = 0; 63196 int kill = 0;
62337 63197
62338 spin_lock(&inode->i_lock); 63198 spin_lock(&inode->i_lock);
@@ -62341,7 +63201,7 @@ index 0e0752e..7cfdd50 100644
62341 inode->i_pipe = NULL; 63201 inode->i_pipe = NULL;
62342 kill = 1; 63202 kill = 1;
62343 } 63203 }
62344@@ -748,11 +748,11 @@ pipe_release(struct inode *inode, struct file *file) 63204@@ -749,11 +749,11 @@ pipe_release(struct inode *inode, struct file *file)
62345 63205
62346 __pipe_lock(pipe); 63206 __pipe_lock(pipe);
62347 if (file->f_mode & FMODE_READ) 63207 if (file->f_mode & FMODE_READ)
@@ -62356,7 +63216,7 @@ index 0e0752e..7cfdd50 100644
62356 wake_up_interruptible_sync_poll(&pipe->wait, POLLIN | POLLOUT | POLLRDNORM | POLLWRNORM | POLLERR | POLLHUP); 63216 wake_up_interruptible_sync_poll(&pipe->wait, POLLIN | POLLOUT | POLLRDNORM | POLLWRNORM | POLLERR | POLLHUP);
62357 kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN); 63217 kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN);
62358 kill_fasync(&pipe->fasync_writers, SIGIO, POLL_OUT); 63218 kill_fasync(&pipe->fasync_writers, SIGIO, POLL_OUT);
62359@@ -817,7 +817,7 @@ void free_pipe_info(struct pipe_inode_info *pipe) 63219@@ -818,7 +818,7 @@ void free_pipe_info(struct pipe_inode_info *pipe)
62360 kfree(pipe); 63220 kfree(pipe);
62361 } 63221 }
62362 63222
@@ -62365,7 +63225,7 @@ index 0e0752e..7cfdd50 100644
62365 63225
62366 /* 63226 /*
62367 * pipefs_dname() is called from d_path(). 63227 * pipefs_dname() is called from d_path().
62368@@ -847,8 +847,9 @@ static struct inode * get_pipe_inode(void) 63228@@ -848,8 +848,9 @@ static struct inode * get_pipe_inode(void)
62369 goto fail_iput; 63229 goto fail_iput;
62370 63230
62371 inode->i_pipe = pipe; 63231 inode->i_pipe = pipe;
@@ -62377,7 +63237,7 @@ index 0e0752e..7cfdd50 100644
62377 inode->i_fop = &pipefifo_fops; 63237 inode->i_fop = &pipefifo_fops;
62378 63238
62379 /* 63239 /*
62380@@ -1027,17 +1028,17 @@ static int fifo_open(struct inode *inode, struct file *filp) 63240@@ -1028,17 +1029,17 @@ static int fifo_open(struct inode *inode, struct file *filp)
62381 spin_lock(&inode->i_lock); 63241 spin_lock(&inode->i_lock);
62382 if (inode->i_pipe) { 63242 if (inode->i_pipe) {
62383 pipe = inode->i_pipe; 63243 pipe = inode->i_pipe;
@@ -62398,7 +63258,7 @@ index 0e0752e..7cfdd50 100644
62398 spin_unlock(&inode->i_lock); 63258 spin_unlock(&inode->i_lock);
62399 free_pipe_info(pipe); 63259 free_pipe_info(pipe);
62400 pipe = inode->i_pipe; 63260 pipe = inode->i_pipe;
62401@@ -1062,10 +1063,10 @@ static int fifo_open(struct inode *inode, struct file *filp) 63261@@ -1063,10 +1064,10 @@ static int fifo_open(struct inode *inode, struct file *filp)
62402 * opened, even when there is no process writing the FIFO. 63262 * opened, even when there is no process writing the FIFO.
62403 */ 63263 */
62404 pipe->r_counter++; 63264 pipe->r_counter++;
@@ -62411,7 +63271,7 @@ index 0e0752e..7cfdd50 100644
62411 if ((filp->f_flags & O_NONBLOCK)) { 63271 if ((filp->f_flags & O_NONBLOCK)) {
62412 /* suppress POLLHUP until we have 63272 /* suppress POLLHUP until we have
62413 * seen a writer */ 63273 * seen a writer */
62414@@ -1084,14 +1085,14 @@ static int fifo_open(struct inode *inode, struct file *filp) 63274@@ -1085,14 +1086,14 @@ static int fifo_open(struct inode *inode, struct file *filp)
62415 * errno=ENXIO when there is no process reading the FIFO. 63275 * errno=ENXIO when there is no process reading the FIFO.
62416 */ 63276 */
62417 ret = -ENXIO; 63277 ret = -ENXIO;
@@ -62429,7 +63289,7 @@ index 0e0752e..7cfdd50 100644
62429 if (wait_for_partner(pipe, &pipe->r_counter)) 63289 if (wait_for_partner(pipe, &pipe->r_counter))
62430 goto err_wr; 63290 goto err_wr;
62431 } 63291 }
62432@@ -1105,11 +1106,11 @@ static int fifo_open(struct inode *inode, struct file *filp) 63292@@ -1106,11 +1107,11 @@ static int fifo_open(struct inode *inode, struct file *filp)
62433 * the process can at least talk to itself. 63293 * the process can at least talk to itself.
62434 */ 63294 */
62435 63295
@@ -62444,7 +63304,7 @@ index 0e0752e..7cfdd50 100644
62444 wake_up_partner(pipe); 63304 wake_up_partner(pipe);
62445 break; 63305 break;
62446 63306
62447@@ -1123,13 +1124,13 @@ static int fifo_open(struct inode *inode, struct file *filp) 63307@@ -1124,13 +1125,13 @@ static int fifo_open(struct inode *inode, struct file *filp)
62448 return 0; 63308 return 0;
62449 63309
62450 err_rd: 63310 err_rd:
@@ -62461,18 +63321,18 @@ index 0e0752e..7cfdd50 100644
62461 ret = -ERESTARTSYS; 63321 ret = -ERESTARTSYS;
62462 goto err; 63322 goto err;
62463diff --git a/fs/posix_acl.c b/fs/posix_acl.c 63323diff --git a/fs/posix_acl.c b/fs/posix_acl.c
62464index 8bd2135..eab9adb 100644 63324index 9e363e4..d936d15 100644
62465--- a/fs/posix_acl.c 63325--- a/fs/posix_acl.c
62466+++ b/fs/posix_acl.c 63326+++ b/fs/posix_acl.c
62467@@ -19,6 +19,7 @@ 63327@@ -20,6 +20,7 @@
62468 #include <linux/sched.h> 63328 #include <linux/xattr.h>
62469 #include <linux/posix_acl.h>
62470 #include <linux/export.h> 63329 #include <linux/export.h>
63330 #include <linux/user_namespace.h>
62471+#include <linux/grsecurity.h> 63331+#include <linux/grsecurity.h>
62472 63332
62473 #include <linux/errno.h> 63333 struct posix_acl **acl_by_type(struct inode *inode, int type)
62474 63334 {
62475@@ -183,7 +184,7 @@ posix_acl_equiv_mode(const struct posix_acl *acl, umode_t *mode_p) 63335@@ -271,7 +272,7 @@ posix_acl_equiv_mode(const struct posix_acl *acl, umode_t *mode_p)
62476 } 63336 }
62477 } 63337 }
62478 if (mode_p) 63338 if (mode_p)
@@ -62480,8 +63340,8 @@ index 8bd2135..eab9adb 100644
62480+ *mode_p = ((*mode_p & ~S_IRWXUGO) | mode) & ~gr_acl_umask(); 63340+ *mode_p = ((*mode_p & ~S_IRWXUGO) | mode) & ~gr_acl_umask();
62481 return not_equiv; 63341 return not_equiv;
62482 } 63342 }
62483 63343 EXPORT_SYMBOL(posix_acl_equiv_mode);
62484@@ -331,7 +332,7 @@ static int posix_acl_create_masq(struct posix_acl *acl, umode_t *mode_p) 63344@@ -421,7 +422,7 @@ static int posix_acl_create_masq(struct posix_acl *acl, umode_t *mode_p)
62485 mode &= (group_obj->e_perm << 3) | ~S_IRWXG; 63345 mode &= (group_obj->e_perm << 3) | ~S_IRWXG;
62486 } 63346 }
62487 63347
@@ -62490,7 +63350,7 @@ index 8bd2135..eab9adb 100644
62490 return not_equiv; 63350 return not_equiv;
62491 } 63351 }
62492 63352
62493@@ -389,6 +390,8 @@ posix_acl_create(struct posix_acl **acl, gfp_t gfp, umode_t *mode_p) 63353@@ -479,6 +480,8 @@ __posix_acl_create(struct posix_acl **acl, gfp_t gfp, umode_t *mode_p)
62494 struct posix_acl *clone = posix_acl_clone(*acl, gfp); 63354 struct posix_acl *clone = posix_acl_clone(*acl, gfp);
62495 int err = -ENOMEM; 63355 int err = -ENOMEM;
62496 if (clone) { 63356 if (clone) {
@@ -62499,6 +63359,48 @@ index 8bd2135..eab9adb 100644
62499 err = posix_acl_create_masq(clone, mode_p); 63359 err = posix_acl_create_masq(clone, mode_p);
62500 if (err < 0) { 63360 if (err < 0) {
62501 posix_acl_release(clone); 63361 posix_acl_release(clone);
63362@@ -653,11 +656,12 @@ struct posix_acl *
63363 posix_acl_from_xattr(struct user_namespace *user_ns,
63364 const void *value, size_t size)
63365 {
63366- posix_acl_xattr_header *header = (posix_acl_xattr_header *)value;
63367- posix_acl_xattr_entry *entry = (posix_acl_xattr_entry *)(header+1), *end;
63368+ const posix_acl_xattr_header *header = (const posix_acl_xattr_header *)value;
63369+ const posix_acl_xattr_entry *entry = (const posix_acl_xattr_entry *)(header+1), *end;
63370 int count;
63371 struct posix_acl *acl;
63372 struct posix_acl_entry *acl_e;
63373+ umode_t umask = gr_acl_umask();
63374
63375 if (!value)
63376 return NULL;
63377@@ -683,12 +687,18 @@ posix_acl_from_xattr(struct user_namespace *user_ns,
63378
63379 switch(acl_e->e_tag) {
63380 case ACL_USER_OBJ:
63381+ acl_e->e_perm &= ~((umask & S_IRWXU) >> 6);
63382+ break;
63383 case ACL_GROUP_OBJ:
63384 case ACL_MASK:
63385+ acl_e->e_perm &= ~((umask & S_IRWXG) >> 3);
63386+ break;
63387 case ACL_OTHER:
63388+ acl_e->e_perm &= ~(umask & S_IRWXO);
63389 break;
63390
63391 case ACL_USER:
63392+ acl_e->e_perm &= ~((umask & S_IRWXU) >> 6);
63393 acl_e->e_uid =
63394 make_kuid(user_ns,
63395 le32_to_cpu(entry->e_id));
63396@@ -696,6 +706,7 @@ posix_acl_from_xattr(struct user_namespace *user_ns,
63397 goto fail;
63398 break;
63399 case ACL_GROUP:
63400+ acl_e->e_perm &= ~((umask & S_IRWXG) >> 3);
63401 acl_e->e_gid =
63402 make_kgid(user_ns,
63403 le32_to_cpu(entry->e_id));
62502diff --git a/fs/proc/Kconfig b/fs/proc/Kconfig 63404diff --git a/fs/proc/Kconfig b/fs/proc/Kconfig
62503index 2183fcf..3c32a98 100644 63405index 2183fcf..3c32a98 100644
62504--- a/fs/proc/Kconfig 63406--- a/fs/proc/Kconfig
@@ -62535,7 +63437,7 @@ index 2183fcf..3c32a98 100644
62535 help 63437 help
62536 Various /proc files exist to monitor process memory utilization: 63438 Various /proc files exist to monitor process memory utilization:
62537diff --git a/fs/proc/array.c b/fs/proc/array.c 63439diff --git a/fs/proc/array.c b/fs/proc/array.c
62538index 1bd2077..2f7cfd5 100644 63440index 656e401..b5b86b9 100644
62539--- a/fs/proc/array.c 63441--- a/fs/proc/array.c
62540+++ b/fs/proc/array.c 63442+++ b/fs/proc/array.c
62541@@ -60,6 +60,7 @@ 63443@@ -60,6 +60,7 @@
@@ -62546,7 +63448,7 @@ index 1bd2077..2f7cfd5 100644
62546 #include <linux/proc_fs.h> 63448 #include <linux/proc_fs.h>
62547 #include <linux/ioport.h> 63449 #include <linux/ioport.h>
62548 #include <linux/uaccess.h> 63450 #include <linux/uaccess.h>
62549@@ -365,6 +366,21 @@ static void task_cpus_allowed(struct seq_file *m, struct task_struct *task) 63451@@ -356,6 +357,21 @@ static void task_cpus_allowed(struct seq_file *m, struct task_struct *task)
62550 seq_putc(m, '\n'); 63452 seq_putc(m, '\n');
62551 } 63453 }
62552 63454
@@ -62568,7 +63470,7 @@ index 1bd2077..2f7cfd5 100644
62568 int proc_pid_status(struct seq_file *m, struct pid_namespace *ns, 63470 int proc_pid_status(struct seq_file *m, struct pid_namespace *ns,
62569 struct pid *pid, struct task_struct *task) 63471 struct pid *pid, struct task_struct *task)
62570 { 63472 {
62571@@ -383,9 +399,24 @@ int proc_pid_status(struct seq_file *m, struct pid_namespace *ns, 63473@@ -374,9 +390,24 @@ int proc_pid_status(struct seq_file *m, struct pid_namespace *ns,
62572 task_cpus_allowed(m, task); 63474 task_cpus_allowed(m, task);
62573 cpuset_task_status_allowed(m, task); 63475 cpuset_task_status_allowed(m, task);
62574 task_context_switch_counts(m, task); 63476 task_context_switch_counts(m, task);
@@ -62593,7 +63495,7 @@ index 1bd2077..2f7cfd5 100644
62593 static int do_task_stat(struct seq_file *m, struct pid_namespace *ns, 63495 static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
62594 struct pid *pid, struct task_struct *task, int whole) 63496 struct pid *pid, struct task_struct *task, int whole)
62595 { 63497 {
62596@@ -407,6 +438,13 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns, 63498@@ -398,6 +429,13 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
62597 char tcomm[sizeof(task->comm)]; 63499 char tcomm[sizeof(task->comm)];
62598 unsigned long flags; 63500 unsigned long flags;
62599 63501
@@ -62607,7 +63509,7 @@ index 1bd2077..2f7cfd5 100644
62607 state = *get_task_state(task); 63509 state = *get_task_state(task);
62608 vsize = eip = esp = 0; 63510 vsize = eip = esp = 0;
62609 permitted = ptrace_may_access(task, PTRACE_MODE_READ | PTRACE_MODE_NOAUDIT); 63511 permitted = ptrace_may_access(task, PTRACE_MODE_READ | PTRACE_MODE_NOAUDIT);
62610@@ -478,6 +516,19 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns, 63512@@ -468,6 +506,19 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
62611 gtime = task_gtime(task); 63513 gtime = task_gtime(task);
62612 } 63514 }
62613 63515
@@ -62627,7 +63529,7 @@ index 1bd2077..2f7cfd5 100644
62627 /* scale priority and nice values from timeslices to -20..20 */ 63529 /* scale priority and nice values from timeslices to -20..20 */
62628 /* to make it look like a "normal" Unix priority/nice value */ 63530 /* to make it look like a "normal" Unix priority/nice value */
62629 priority = task_prio(task); 63531 priority = task_prio(task);
62630@@ -514,9 +565,15 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns, 63532@@ -504,9 +555,15 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
62631 seq_put_decimal_ull(m, ' ', vsize); 63533 seq_put_decimal_ull(m, ' ', vsize);
62632 seq_put_decimal_ull(m, ' ', mm ? get_mm_rss(mm) : 0); 63534 seq_put_decimal_ull(m, ' ', mm ? get_mm_rss(mm) : 0);
62633 seq_put_decimal_ull(m, ' ', rsslim); 63535 seq_put_decimal_ull(m, ' ', rsslim);
@@ -62643,7 +63545,7 @@ index 1bd2077..2f7cfd5 100644
62643 seq_put_decimal_ull(m, ' ', esp); 63545 seq_put_decimal_ull(m, ' ', esp);
62644 seq_put_decimal_ull(m, ' ', eip); 63546 seq_put_decimal_ull(m, ' ', eip);
62645 /* The signal information here is obsolete. 63547 /* The signal information here is obsolete.
62646@@ -538,7 +595,11 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns, 63548@@ -528,7 +585,11 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
62647 seq_put_decimal_ull(m, ' ', cputime_to_clock_t(gtime)); 63549 seq_put_decimal_ull(m, ' ', cputime_to_clock_t(gtime));
62648 seq_put_decimal_ll(m, ' ', cputime_to_clock_t(cgtime)); 63550 seq_put_decimal_ll(m, ' ', cputime_to_clock_t(cgtime));
62649 63551
@@ -62656,7 +63558,7 @@ index 1bd2077..2f7cfd5 100644
62656 seq_put_decimal_ull(m, ' ', mm->start_data); 63558 seq_put_decimal_ull(m, ' ', mm->start_data);
62657 seq_put_decimal_ull(m, ' ', mm->end_data); 63559 seq_put_decimal_ull(m, ' ', mm->end_data);
62658 seq_put_decimal_ull(m, ' ', mm->start_brk); 63560 seq_put_decimal_ull(m, ' ', mm->start_brk);
62659@@ -576,8 +637,15 @@ int proc_pid_statm(struct seq_file *m, struct pid_namespace *ns, 63561@@ -566,8 +627,15 @@ int proc_pid_statm(struct seq_file *m, struct pid_namespace *ns,
62660 struct pid *pid, struct task_struct *task) 63562 struct pid *pid, struct task_struct *task)
62661 { 63563 {
62662 unsigned long size = 0, resident = 0, shared = 0, text = 0, data = 0; 63564 unsigned long size = 0, resident = 0, shared = 0, text = 0, data = 0;
@@ -62673,7 +63575,7 @@ index 1bd2077..2f7cfd5 100644
62673 if (mm) { 63575 if (mm) {
62674 size = task_statm(mm, &shared, &text, &data, &resident); 63576 size = task_statm(mm, &shared, &text, &data, &resident);
62675 mmput(mm); 63577 mmput(mm);
62676@@ -600,6 +668,13 @@ int proc_pid_statm(struct seq_file *m, struct pid_namespace *ns, 63578@@ -590,6 +658,13 @@ int proc_pid_statm(struct seq_file *m, struct pid_namespace *ns,
62677 return 0; 63579 return 0;
62678 } 63580 }
62679 63581
@@ -62688,7 +63590,7 @@ index 1bd2077..2f7cfd5 100644
62688 static struct pid * 63590 static struct pid *
62689 get_children_pid(struct inode *inode, struct pid *pid_prev, loff_t pos) 63591 get_children_pid(struct inode *inode, struct pid *pid_prev, loff_t pos)
62690diff --git a/fs/proc/base.c b/fs/proc/base.c 63592diff --git a/fs/proc/base.c b/fs/proc/base.c
62691index b59a34b..68a79e8 100644 63593index b976062..584d0bc 100644
62692--- a/fs/proc/base.c 63594--- a/fs/proc/base.c
62693+++ b/fs/proc/base.c 63595+++ b/fs/proc/base.c
62694@@ -113,6 +113,14 @@ struct pid_entry { 63596@@ -113,6 +113,14 @@ struct pid_entry {
@@ -62997,7 +63899,7 @@ index b59a34b..68a79e8 100644
62997 rcu_read_unlock(); 63899 rcu_read_unlock();
62998 } else { 63900 } else {
62999 inode->i_uid = GLOBAL_ROOT_UID; 63901 inode->i_uid = GLOBAL_ROOT_UID;
63000@@ -2173,6 +2291,9 @@ static struct dentry *proc_pident_lookup(struct inode *dir, 63902@@ -2178,6 +2296,9 @@ static struct dentry *proc_pident_lookup(struct inode *dir,
63001 if (!task) 63903 if (!task)
63002 goto out_no_task; 63904 goto out_no_task;
63003 63905
@@ -63007,7 +63909,7 @@ index b59a34b..68a79e8 100644
63007 /* 63909 /*
63008 * Yes, it does not scale. And it should not. Don't add 63910 * Yes, it does not scale. And it should not. Don't add
63009 * new entries into /proc/<tgid>/ without very good reasons. 63911 * new entries into /proc/<tgid>/ without very good reasons.
63010@@ -2203,6 +2324,9 @@ static int proc_pident_readdir(struct file *file, struct dir_context *ctx, 63912@@ -2208,6 +2329,9 @@ static int proc_pident_readdir(struct file *file, struct dir_context *ctx,
63011 if (!task) 63913 if (!task)
63012 return -ENOENT; 63914 return -ENOENT;
63013 63915
@@ -63017,7 +63919,7 @@ index b59a34b..68a79e8 100644
63017 if (!dir_emit_dots(file, ctx)) 63919 if (!dir_emit_dots(file, ctx))
63018 goto out; 63920 goto out;
63019 63921
63020@@ -2592,7 +2716,7 @@ static const struct pid_entry tgid_base_stuff[] = { 63922@@ -2597,7 +2721,7 @@ static const struct pid_entry tgid_base_stuff[] = {
63021 REG("autogroup", S_IRUGO|S_IWUSR, proc_pid_sched_autogroup_operations), 63923 REG("autogroup", S_IRUGO|S_IWUSR, proc_pid_sched_autogroup_operations),
63022 #endif 63924 #endif
63023 REG("comm", S_IRUGO|S_IWUSR, proc_pid_set_comm_operations), 63925 REG("comm", S_IRUGO|S_IWUSR, proc_pid_set_comm_operations),
@@ -63026,7 +63928,7 @@ index b59a34b..68a79e8 100644
63026 INF("syscall", S_IRUGO, proc_pid_syscall), 63928 INF("syscall", S_IRUGO, proc_pid_syscall),
63027 #endif 63929 #endif
63028 INF("cmdline", S_IRUGO, proc_pid_cmdline), 63930 INF("cmdline", S_IRUGO, proc_pid_cmdline),
63029@@ -2617,10 +2741,10 @@ static const struct pid_entry tgid_base_stuff[] = { 63931@@ -2622,10 +2746,10 @@ static const struct pid_entry tgid_base_stuff[] = {
63030 #ifdef CONFIG_SECURITY 63932 #ifdef CONFIG_SECURITY
63031 DIR("attr", S_IRUGO|S_IXUGO, proc_attr_dir_inode_operations, proc_attr_dir_operations), 63933 DIR("attr", S_IRUGO|S_IXUGO, proc_attr_dir_inode_operations, proc_attr_dir_operations),
63032 #endif 63934 #endif
@@ -63039,7 +63941,7 @@ index b59a34b..68a79e8 100644
63039 ONE("stack", S_IRUGO, proc_pid_stack), 63941 ONE("stack", S_IRUGO, proc_pid_stack),
63040 #endif 63942 #endif
63041 #ifdef CONFIG_SCHEDSTATS 63943 #ifdef CONFIG_SCHEDSTATS
63042@@ -2654,6 +2778,9 @@ static const struct pid_entry tgid_base_stuff[] = { 63944@@ -2659,6 +2783,9 @@ static const struct pid_entry tgid_base_stuff[] = {
63043 #ifdef CONFIG_HARDWALL 63945 #ifdef CONFIG_HARDWALL
63044 INF("hardwall", S_IRUGO, proc_pid_hardwall), 63946 INF("hardwall", S_IRUGO, proc_pid_hardwall),
63045 #endif 63947 #endif
@@ -63049,7 +63951,7 @@ index b59a34b..68a79e8 100644
63049 #ifdef CONFIG_USER_NS 63951 #ifdef CONFIG_USER_NS
63050 REG("uid_map", S_IRUGO|S_IWUSR, proc_uid_map_operations), 63952 REG("uid_map", S_IRUGO|S_IWUSR, proc_uid_map_operations),
63051 REG("gid_map", S_IRUGO|S_IWUSR, proc_gid_map_operations), 63953 REG("gid_map", S_IRUGO|S_IWUSR, proc_gid_map_operations),
63052@@ -2784,7 +2911,14 @@ static int proc_pid_instantiate(struct inode *dir, 63954@@ -2789,7 +2916,14 @@ static int proc_pid_instantiate(struct inode *dir,
63053 if (!inode) 63955 if (!inode)
63054 goto out; 63956 goto out;
63055 63957
@@ -63064,7 +63966,7 @@ index b59a34b..68a79e8 100644
63064 inode->i_op = &proc_tgid_base_inode_operations; 63966 inode->i_op = &proc_tgid_base_inode_operations;
63065 inode->i_fop = &proc_tgid_base_operations; 63967 inode->i_fop = &proc_tgid_base_operations;
63066 inode->i_flags|=S_IMMUTABLE; 63968 inode->i_flags|=S_IMMUTABLE;
63067@@ -2822,7 +2956,11 @@ struct dentry *proc_pid_lookup(struct inode *dir, struct dentry * dentry, unsign 63969@@ -2827,7 +2961,11 @@ struct dentry *proc_pid_lookup(struct inode *dir, struct dentry * dentry, unsign
63068 if (!task) 63970 if (!task)
63069 goto out; 63971 goto out;
63070 63972
@@ -63076,7 +63978,7 @@ index b59a34b..68a79e8 100644
63076 put_task_struct(task); 63978 put_task_struct(task);
63077 out: 63979 out:
63078 return ERR_PTR(result); 63980 return ERR_PTR(result);
63079@@ -2928,7 +3066,7 @@ static const struct pid_entry tid_base_stuff[] = { 63981@@ -2933,7 +3071,7 @@ static const struct pid_entry tid_base_stuff[] = {
63080 REG("sched", S_IRUGO|S_IWUSR, proc_pid_sched_operations), 63982 REG("sched", S_IRUGO|S_IWUSR, proc_pid_sched_operations),
63081 #endif 63983 #endif
63082 REG("comm", S_IRUGO|S_IWUSR, proc_pid_set_comm_operations), 63984 REG("comm", S_IRUGO|S_IWUSR, proc_pid_set_comm_operations),
@@ -63085,7 +63987,7 @@ index b59a34b..68a79e8 100644
63085 INF("syscall", S_IRUGO, proc_pid_syscall), 63987 INF("syscall", S_IRUGO, proc_pid_syscall),
63086 #endif 63988 #endif
63087 INF("cmdline", S_IRUGO, proc_pid_cmdline), 63989 INF("cmdline", S_IRUGO, proc_pid_cmdline),
63088@@ -2955,10 +3093,10 @@ static const struct pid_entry tid_base_stuff[] = { 63990@@ -2960,10 +3098,10 @@ static const struct pid_entry tid_base_stuff[] = {
63089 #ifdef CONFIG_SECURITY 63991 #ifdef CONFIG_SECURITY
63090 DIR("attr", S_IRUGO|S_IXUGO, proc_attr_dir_inode_operations, proc_attr_dir_operations), 63992 DIR("attr", S_IRUGO|S_IXUGO, proc_attr_dir_inode_operations, proc_attr_dir_operations),
63091 #endif 63993 #endif
@@ -63099,7 +64001,7 @@ index b59a34b..68a79e8 100644
63099 #endif 64001 #endif
63100 #ifdef CONFIG_SCHEDSTATS 64002 #ifdef CONFIG_SCHEDSTATS
63101diff --git a/fs/proc/cmdline.c b/fs/proc/cmdline.c 64003diff --git a/fs/proc/cmdline.c b/fs/proc/cmdline.c
63102index 82676e3..5f8518a 100644 64004index cbd82df..c0407d2 100644
63103--- a/fs/proc/cmdline.c 64005--- a/fs/proc/cmdline.c
63104+++ b/fs/proc/cmdline.c 64006+++ b/fs/proc/cmdline.c
63105@@ -23,7 +23,11 @@ static const struct file_operations cmdline_proc_fops = { 64007@@ -23,7 +23,11 @@ static const struct file_operations cmdline_proc_fops = {
@@ -63113,9 +64015,9 @@ index 82676e3..5f8518a 100644
63113+#endif 64015+#endif
63114 return 0; 64016 return 0;
63115 } 64017 }
63116 module_init(proc_cmdline_init); 64018 fs_initcall(proc_cmdline_init);
63117diff --git a/fs/proc/devices.c b/fs/proc/devices.c 64019diff --git a/fs/proc/devices.c b/fs/proc/devices.c
63118index b143471..bb105e5 100644 64020index 50493ed..248166b 100644
63119--- a/fs/proc/devices.c 64021--- a/fs/proc/devices.c
63120+++ b/fs/proc/devices.c 64022+++ b/fs/proc/devices.c
63121@@ -64,7 +64,11 @@ static const struct file_operations proc_devinfo_operations = { 64023@@ -64,7 +64,11 @@ static const struct file_operations proc_devinfo_operations = {
@@ -63129,7 +64031,7 @@ index b143471..bb105e5 100644
63129+#endif 64031+#endif
63130 return 0; 64032 return 0;
63131 } 64033 }
63132 module_init(proc_devices_init); 64034 fs_initcall(proc_devices_init);
63133diff --git a/fs/proc/fd.c b/fs/proc/fd.c 64035diff --git a/fs/proc/fd.c b/fs/proc/fd.c
63134index 985ea88..d118a0a 100644 64036index 985ea88..d118a0a 100644
63135--- a/fs/proc/fd.c 64037--- a/fs/proc/fd.c
@@ -63168,6 +64070,135 @@ index 985ea88..d118a0a 100644
63168 return rv; 64070 return rv;
63169 } 64071 }
63170 64072
64073diff --git a/fs/proc/generic.c b/fs/proc/generic.c
64074index b7f268e..3bea6b7 100644
64075--- a/fs/proc/generic.c
64076+++ b/fs/proc/generic.c
64077@@ -23,6 +23,7 @@
64078 #include <linux/bitops.h>
64079 #include <linux/spinlock.h>
64080 #include <linux/completion.h>
64081+#include <linux/grsecurity.h>
64082 #include <asm/uaccess.h>
64083
64084 #include "internal.h"
64085@@ -207,6 +208,15 @@ struct dentry *proc_lookup(struct inode *dir, struct dentry *dentry,
64086 return proc_lookup_de(PDE(dir), dir, dentry);
64087 }
64088
64089+struct dentry *proc_lookup_restrict(struct inode *dir, struct dentry *dentry,
64090+ unsigned int flags)
64091+{
64092+ if (gr_proc_is_restricted())
64093+ return ERR_PTR(-EACCES);
64094+
64095+ return proc_lookup_de(PDE(dir), dir, dentry);
64096+}
64097+
64098 /*
64099 * This returns non-zero if at EOF, so that the /proc
64100 * root directory can use this and check if it should
64101@@ -264,6 +274,16 @@ int proc_readdir(struct file *file, struct dir_context *ctx)
64102 return proc_readdir_de(PDE(inode), file, ctx);
64103 }
64104
64105+int proc_readdir_restrict(struct file *file, struct dir_context *ctx)
64106+{
64107+ struct inode *inode = file_inode(file);
64108+
64109+ if (gr_proc_is_restricted())
64110+ return -EACCES;
64111+
64112+ return proc_readdir_de(PDE(inode), file, ctx);
64113+}
64114+
64115 /*
64116 * These are the generic /proc directory operations. They
64117 * use the in-memory "struct proc_dir_entry" tree to parse
64118@@ -275,6 +295,12 @@ static const struct file_operations proc_dir_operations = {
64119 .iterate = proc_readdir,
64120 };
64121
64122+static const struct file_operations proc_dir_restricted_operations = {
64123+ .llseek = generic_file_llseek,
64124+ .read = generic_read_dir,
64125+ .iterate = proc_readdir_restrict,
64126+};
64127+
64128 /*
64129 * proc directories can do almost nothing..
64130 */
64131@@ -284,6 +310,12 @@ static const struct inode_operations proc_dir_inode_operations = {
64132 .setattr = proc_notify_change,
64133 };
64134
64135+static const struct inode_operations proc_dir_restricted_inode_operations = {
64136+ .lookup = proc_lookup_restrict,
64137+ .getattr = proc_getattr,
64138+ .setattr = proc_notify_change,
64139+};
64140+
64141 static int proc_register(struct proc_dir_entry * dir, struct proc_dir_entry * dp)
64142 {
64143 struct proc_dir_entry *tmp;
64144@@ -294,8 +326,13 @@ static int proc_register(struct proc_dir_entry * dir, struct proc_dir_entry * dp
64145 return ret;
64146
64147 if (S_ISDIR(dp->mode)) {
64148- dp->proc_fops = &proc_dir_operations;
64149- dp->proc_iops = &proc_dir_inode_operations;
64150+ if (dp->restricted) {
64151+ dp->proc_fops = &proc_dir_restricted_operations;
64152+ dp->proc_iops = &proc_dir_restricted_inode_operations;
64153+ } else {
64154+ dp->proc_fops = &proc_dir_operations;
64155+ dp->proc_iops = &proc_dir_inode_operations;
64156+ }
64157 dir->nlink++;
64158 } else if (S_ISLNK(dp->mode)) {
64159 dp->proc_iops = &proc_link_inode_operations;
64160@@ -407,6 +444,27 @@ struct proc_dir_entry *proc_mkdir_data(const char *name, umode_t mode,
64161 }
64162 EXPORT_SYMBOL_GPL(proc_mkdir_data);
64163
64164+struct proc_dir_entry *proc_mkdir_data_restrict(const char *name, umode_t mode,
64165+ struct proc_dir_entry *parent, void *data)
64166+{
64167+ struct proc_dir_entry *ent;
64168+
64169+ if (mode == 0)
64170+ mode = S_IRUGO | S_IXUGO;
64171+
64172+ ent = __proc_create(&parent, name, S_IFDIR | mode, 2);
64173+ if (ent) {
64174+ ent->data = data;
64175+ ent->restricted = 1;
64176+ if (proc_register(parent, ent) < 0) {
64177+ kfree(ent);
64178+ ent = NULL;
64179+ }
64180+ }
64181+ return ent;
64182+}
64183+EXPORT_SYMBOL_GPL(proc_mkdir_data_restrict);
64184+
64185 struct proc_dir_entry *proc_mkdir_mode(const char *name, umode_t mode,
64186 struct proc_dir_entry *parent)
64187 {
64188@@ -421,6 +479,13 @@ struct proc_dir_entry *proc_mkdir(const char *name,
64189 }
64190 EXPORT_SYMBOL(proc_mkdir);
64191
64192+struct proc_dir_entry *proc_mkdir_restrict(const char *name,
64193+ struct proc_dir_entry *parent)
64194+{
64195+ return proc_mkdir_data_restrict(name, 0, parent, NULL);
64196+}
64197+EXPORT_SYMBOL(proc_mkdir_restrict);
64198+
64199 struct proc_dir_entry *proc_create_data(const char *name, umode_t mode,
64200 struct proc_dir_entry *parent,
64201 const struct file_operations *proc_fops,
63171diff --git a/fs/proc/inode.c b/fs/proc/inode.c 64202diff --git a/fs/proc/inode.c b/fs/proc/inode.c
63172index 124fc43..8afbb02 100644 64203index 124fc43..8afbb02 100644
63173--- a/fs/proc/inode.c 64204--- a/fs/proc/inode.c
@@ -63217,11 +64248,14 @@ index 124fc43..8afbb02 100644
63217 if (de->size) 64248 if (de->size)
63218 inode->i_size = de->size; 64249 inode->i_size = de->size;
63219diff --git a/fs/proc/internal.h b/fs/proc/internal.h 64250diff --git a/fs/proc/internal.h b/fs/proc/internal.h
63220index 651d09a..3d7f0bf 100644 64251index 651d09a..6a4b495 100644
63221--- a/fs/proc/internal.h 64252--- a/fs/proc/internal.h
63222+++ b/fs/proc/internal.h 64253+++ b/fs/proc/internal.h
63223@@ -48,7 +48,7 @@ struct proc_dir_entry { 64254@@ -46,9 +46,10 @@ struct proc_dir_entry {
64255 struct completion *pde_unload_completion;
64256 struct list_head pde_openers; /* who did ->open, but not ->release */
63224 spinlock_t pde_unload_lock; /* proc_fops checks and pde_users bumps */ 64257 spinlock_t pde_unload_lock; /* proc_fops checks and pde_users bumps */
64258+ u8 restricted; /* a directory in /proc/net that should be restricted via GRKERNSEC_PROC */
63225 u8 namelen; 64259 u8 namelen;
63226 char name[]; 64260 char name[];
63227-}; 64261-};
@@ -63229,7 +64263,7 @@ index 651d09a..3d7f0bf 100644
63229 64263
63230 union proc_op { 64264 union proc_op {
63231 int (*proc_get_link)(struct dentry *, struct path *); 64265 int (*proc_get_link)(struct dentry *, struct path *);
63232@@ -67,7 +67,7 @@ struct proc_inode { 64266@@ -67,7 +68,7 @@ struct proc_inode {
63233 struct ctl_table *sysctl_entry; 64267 struct ctl_table *sysctl_entry;
63234 struct proc_ns ns; 64268 struct proc_ns ns;
63235 struct inode vfs_inode; 64269 struct inode vfs_inode;
@@ -63238,7 +64272,7 @@ index 651d09a..3d7f0bf 100644
63238 64272
63239 /* 64273 /*
63240 * General functions 64274 * General functions
63241@@ -155,6 +155,9 @@ extern int proc_pid_status(struct seq_file *, struct pid_namespace *, 64275@@ -155,6 +156,9 @@ extern int proc_pid_status(struct seq_file *, struct pid_namespace *,
63242 struct pid *, struct task_struct *); 64276 struct pid *, struct task_struct *);
63243 extern int proc_pid_statm(struct seq_file *, struct pid_namespace *, 64277 extern int proc_pid_statm(struct seq_file *, struct pid_namespace *,
63244 struct pid *, struct task_struct *); 64278 struct pid *, struct task_struct *);
@@ -63248,8 +64282,20 @@ index 651d09a..3d7f0bf 100644
63248 64282
63249 /* 64283 /*
63250 * base.c 64284 * base.c
64285@@ -181,9 +185,11 @@ extern bool proc_fill_cache(struct file *, struct dir_context *, const char *, i
64286 extern spinlock_t proc_subdir_lock;
64287
64288 extern struct dentry *proc_lookup(struct inode *, struct dentry *, unsigned int);
64289+extern struct dentry *proc_lookup_restrict(struct inode *, struct dentry *, unsigned int);
64290 extern struct dentry *proc_lookup_de(struct proc_dir_entry *, struct inode *,
64291 struct dentry *);
64292 extern int proc_readdir(struct file *, struct dir_context *);
64293+extern int proc_readdir_restrict(struct file *, struct dir_context *);
64294 extern int proc_readdir_de(struct proc_dir_entry *, struct file *, struct dir_context *);
64295
64296 static inline struct proc_dir_entry *pde_get(struct proc_dir_entry *pde)
63251diff --git a/fs/proc/interrupts.c b/fs/proc/interrupts.c 64297diff --git a/fs/proc/interrupts.c b/fs/proc/interrupts.c
63252index 05029c0..7ea1987 100644 64298index a352d57..cb94a5c 100644
63253--- a/fs/proc/interrupts.c 64299--- a/fs/proc/interrupts.c
63254+++ b/fs/proc/interrupts.c 64300+++ b/fs/proc/interrupts.c
63255@@ -47,7 +47,11 @@ static const struct file_operations proc_interrupts_operations = { 64301@@ -47,7 +47,11 @@ static const struct file_operations proc_interrupts_operations = {
@@ -63263,9 +64309,9 @@ index 05029c0..7ea1987 100644
63263+#endif 64309+#endif
63264 return 0; 64310 return 0;
63265 } 64311 }
63266 module_init(proc_interrupts_init); 64312 fs_initcall(proc_interrupts_init);
63267diff --git a/fs/proc/kcore.c b/fs/proc/kcore.c 64313diff --git a/fs/proc/kcore.c b/fs/proc/kcore.c
63268index 5ed0e52..a1c1f2e 100644 64314index 39e6ef3..2f9cb5e 100644
63269--- a/fs/proc/kcore.c 64315--- a/fs/proc/kcore.c
63270+++ b/fs/proc/kcore.c 64316+++ b/fs/proc/kcore.c
63271@@ -483,9 +483,10 @@ read_kcore(struct file *file, char __user *buffer, size_t buflen, loff_t *fpos) 64317@@ -483,9 +483,10 @@ read_kcore(struct file *file, char __user *buffer, size_t buflen, loff_t *fpos)
@@ -63327,10 +64373,10 @@ index 5ed0e52..a1c1f2e 100644
63327 return -EPERM; 64373 return -EPERM;
63328 if (kcore_need_update) 64374 if (kcore_need_update)
63329diff --git a/fs/proc/meminfo.c b/fs/proc/meminfo.c 64375diff --git a/fs/proc/meminfo.c b/fs/proc/meminfo.c
63330index a77d2b2..a9153f0 100644 64376index 136e548..1f88922 100644
63331--- a/fs/proc/meminfo.c 64377--- a/fs/proc/meminfo.c
63332+++ b/fs/proc/meminfo.c 64378+++ b/fs/proc/meminfo.c
63333@@ -150,7 +150,7 @@ static int meminfo_proc_show(struct seq_file *m, void *v) 64379@@ -187,7 +187,7 @@ static int meminfo_proc_show(struct seq_file *m, void *v)
63334 vmi.used >> 10, 64380 vmi.used >> 10,
63335 vmi.largest_chunk >> 10 64381 vmi.largest_chunk >> 10
63336 #ifdef CONFIG_MEMORY_FAILURE 64382 #ifdef CONFIG_MEMORY_FAILURE
@@ -63340,7 +64386,7 @@ index a77d2b2..a9153f0 100644
63340 #ifdef CONFIG_TRANSPARENT_HUGEPAGE 64386 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
63341 ,K(global_page_state(NR_ANON_TRANSPARENT_HUGEPAGES) * 64387 ,K(global_page_state(NR_ANON_TRANSPARENT_HUGEPAGES) *
63342diff --git a/fs/proc/nommu.c b/fs/proc/nommu.c 64388diff --git a/fs/proc/nommu.c b/fs/proc/nommu.c
63343index 5f9bc8a..5c35f08 100644 64389index d4a3574..b421ce9 100644
63344--- a/fs/proc/nommu.c 64390--- a/fs/proc/nommu.c
63345+++ b/fs/proc/nommu.c 64391+++ b/fs/proc/nommu.c
63346@@ -64,7 +64,7 @@ static int nommu_region_show(struct seq_file *m, struct vm_region *region) 64392@@ -64,7 +64,7 @@ static int nommu_region_show(struct seq_file *m, struct vm_region *region)
@@ -63353,7 +64399,7 @@ index 5f9bc8a..5c35f08 100644
63353 64399
63354 seq_putc(m, '\n'); 64400 seq_putc(m, '\n');
63355diff --git a/fs/proc/proc_net.c b/fs/proc/proc_net.c 64401diff --git a/fs/proc/proc_net.c b/fs/proc/proc_net.c
63356index 4677bb7..408e936 100644 64402index 4677bb7..94067cd 100644
63357--- a/fs/proc/proc_net.c 64403--- a/fs/proc/proc_net.c
63358+++ b/fs/proc/proc_net.c 64404+++ b/fs/proc/proc_net.c
63359@@ -23,6 +23,7 @@ 64405@@ -23,6 +23,7 @@
@@ -63364,24 +64410,36 @@ index 4677bb7..408e936 100644
63364 64410
63365 #include "internal.h" 64411 #include "internal.h"
63366 64412
63367@@ -109,6 +110,17 @@ static struct net *get_proc_task_net(struct inode *dir) 64413@@ -36,6 +37,8 @@ static struct net *get_proc_net(const struct inode *inode)
63368 struct task_struct *task; 64414 return maybe_get_net(PDE_NET(PDE(inode)));
63369 struct nsproxy *ns; 64415 }
63370 struct net *net = NULL; 64416
63371+#if defined(CONFIG_GRKERNSEC_PROC_USER) || defined(CONFIG_GRKERNSEC_PROC_USERGROUP) 64417+extern const struct seq_operations dev_seq_ops;
63372+ const struct cred *cred = current_cred();
63373+#endif
63374+ 64418+
63375+#ifdef CONFIG_GRKERNSEC_PROC_USER 64419 int seq_open_net(struct inode *ino, struct file *f,
63376+ if (!uid_eq(cred->fsuid, GLOBAL_ROOT_UID)) 64420 const struct seq_operations *ops, int size)
63377+ return net; 64421 {
63378+#elif defined(CONFIG_GRKERNSEC_PROC_USERGROUP) 64422@@ -44,6 +47,10 @@ int seq_open_net(struct inode *ino, struct file *f,
63379+ if (!uid_eq(cred->fsuid, GLOBAL_ROOT_UID) && !in_group_p(grsec_proc_gid))
63380+ return net;
63381+#endif
63382 64423
63383 rcu_read_lock(); 64424 BUG_ON(size < sizeof(*p));
63384 task = pid_task(proc_pid(dir), PIDTYPE_PID); 64425
64426+ /* only permit access to /proc/net/dev */
64427+ if (ops != &dev_seq_ops && gr_proc_is_restricted())
64428+ return -EACCES;
64429+
64430 net = get_proc_net(ino);
64431 if (net == NULL)
64432 return -ENXIO;
64433@@ -66,6 +73,9 @@ int single_open_net(struct inode *inode, struct file *file,
64434 int err;
64435 struct net *net;
64436
64437+ if (gr_proc_is_restricted())
64438+ return -EACCES;
64439+
64440 err = -ENXIO;
64441 net = get_proc_net(inode);
64442 if (net == NULL)
63385diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c 64443diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c
63386index 7129046..6914844 100644 64444index 7129046..6914844 100644
63387--- a/fs/proc/proc_sysctl.c 64445--- a/fs/proc/proc_sysctl.c
@@ -63601,7 +64659,7 @@ index 87dbcbe..55e1b4d 100644
63601 } 64659 }
63602 64660
63603diff --git a/fs/proc/stat.c b/fs/proc/stat.c 64661diff --git a/fs/proc/stat.c b/fs/proc/stat.c
63604index 1cf86c0..0ee1ca5 100644 64662index 6f599c6..bd00271 100644
63605--- a/fs/proc/stat.c 64663--- a/fs/proc/stat.c
63606+++ b/fs/proc/stat.c 64664+++ b/fs/proc/stat.c
63607@@ -11,6 +11,7 @@ 64665@@ -11,6 +11,7 @@
@@ -63631,34 +64689,63 @@ index 1cf86c0..0ee1ca5 100644
63631 64689
63632 user = nice = system = idle = iowait = 64690 user = nice = system = idle = iowait =
63633 irq = softirq = steal = 0; 64691 irq = softirq = steal = 0;
63634@@ -94,6 +107,7 @@ static int show_stat(struct seq_file *p, void *v) 64692@@ -99,23 +112,25 @@ static int show_stat(struct seq_file *p, void *v)
63635 getboottime(&boottime);
63636 jif = boottime.tv_sec;
63637
63638+ if (unrestricted) {
63639 for_each_possible_cpu(i) {
63640 user += kcpustat_cpu(i).cpustat[CPUTIME_USER];
63641 nice += kcpustat_cpu(i).cpustat[CPUTIME_NICE]; 64693 nice += kcpustat_cpu(i).cpustat[CPUTIME_NICE];
63642@@ -116,6 +130,7 @@ static int show_stat(struct seq_file *p, void *v) 64694 system += kcpustat_cpu(i).cpustat[CPUTIME_SYSTEM];
64695 idle += get_idle_time(i);
64696- iowait += get_iowait_time(i);
64697- irq += kcpustat_cpu(i).cpustat[CPUTIME_IRQ];
64698- softirq += kcpustat_cpu(i).cpustat[CPUTIME_SOFTIRQ];
64699- steal += kcpustat_cpu(i).cpustat[CPUTIME_STEAL];
64700- guest += kcpustat_cpu(i).cpustat[CPUTIME_GUEST];
64701- guest_nice += kcpustat_cpu(i).cpustat[CPUTIME_GUEST_NICE];
64702- sum += kstat_cpu_irqs_sum(i);
64703- sum += arch_irq_stat_cpu(i);
64704+ if (unrestricted) {
64705+ iowait += get_iowait_time(i);
64706+ irq += kcpustat_cpu(i).cpustat[CPUTIME_IRQ];
64707+ softirq += kcpustat_cpu(i).cpustat[CPUTIME_SOFTIRQ];
64708+ steal += kcpustat_cpu(i).cpustat[CPUTIME_STEAL];
64709+ guest += kcpustat_cpu(i).cpustat[CPUTIME_GUEST];
64710+ guest_nice += kcpustat_cpu(i).cpustat[CPUTIME_GUEST_NICE];
64711+ sum += kstat_cpu_irqs_sum(i);
64712+ sum += arch_irq_stat_cpu(i);
64713+ for (j = 0; j < NR_SOFTIRQS; j++) {
64714+ unsigned int softirq_stat = kstat_softirqs_cpu(j, i);
64715
64716- for (j = 0; j < NR_SOFTIRQS; j++) {
64717- unsigned int softirq_stat = kstat_softirqs_cpu(j, i);
64718-
64719- per_softirq_sums[j] += softirq_stat;
64720- sum_softirq += softirq_stat;
64721+ per_softirq_sums[j] += softirq_stat;
64722+ sum_softirq += softirq_stat;
64723+ }
63643 } 64724 }
63644 } 64725 }
63645 sum += arch_irq_stat(); 64726- sum += arch_irq_stat();
63646+ } 64727+ if (unrestricted)
64728+ sum += arch_irq_stat();
63647 64729
63648 seq_puts(p, "cpu "); 64730 seq_puts(p, "cpu ");
63649 seq_put_decimal_ull(p, ' ', cputime64_to_clock_t(user)); 64731 seq_put_decimal_ull(p, ' ', cputime64_to_clock_t(user));
63650@@ -131,6 +146,7 @@ static int show_stat(struct seq_file *p, void *v) 64732@@ -136,12 +151,14 @@ static int show_stat(struct seq_file *p, void *v)
63651 seq_putc(p, '\n');
63652
63653 for_each_online_cpu(i) {
63654+ if (unrestricted) {
63655 /* Copy values here to work around gcc-2.95.3, gcc-2.96 */
63656 user = kcpustat_cpu(i).cpustat[CPUTIME_USER];
63657 nice = kcpustat_cpu(i).cpustat[CPUTIME_NICE]; 64733 nice = kcpustat_cpu(i).cpustat[CPUTIME_NICE];
63658@@ -142,6 +158,7 @@ static int show_stat(struct seq_file *p, void *v) 64734 system = kcpustat_cpu(i).cpustat[CPUTIME_SYSTEM];
63659 steal = kcpustat_cpu(i).cpustat[CPUTIME_STEAL]; 64735 idle = get_idle_time(i);
63660 guest = kcpustat_cpu(i).cpustat[CPUTIME_GUEST]; 64736- iowait = get_iowait_time(i);
63661 guest_nice = kcpustat_cpu(i).cpustat[CPUTIME_GUEST_NICE]; 64737- irq = kcpustat_cpu(i).cpustat[CPUTIME_IRQ];
64738- softirq = kcpustat_cpu(i).cpustat[CPUTIME_SOFTIRQ];
64739- steal = kcpustat_cpu(i).cpustat[CPUTIME_STEAL];
64740- guest = kcpustat_cpu(i).cpustat[CPUTIME_GUEST];
64741- guest_nice = kcpustat_cpu(i).cpustat[CPUTIME_GUEST_NICE];
64742+ if (unrestricted) {
64743+ iowait = get_iowait_time(i);
64744+ irq = kcpustat_cpu(i).cpustat[CPUTIME_IRQ];
64745+ softirq = kcpustat_cpu(i).cpustat[CPUTIME_SOFTIRQ];
64746+ steal = kcpustat_cpu(i).cpustat[CPUTIME_STEAL];
64747+ guest = kcpustat_cpu(i).cpustat[CPUTIME_GUEST];
64748+ guest_nice = kcpustat_cpu(i).cpustat[CPUTIME_GUEST_NICE];
63662+ } 64749+ }
63663 seq_printf(p, "cpu%d", i); 64750 seq_printf(p, "cpu%d", i);
63664 seq_put_decimal_ull(p, ' ', cputime64_to_clock_t(user)); 64751 seq_put_decimal_ull(p, ' ', cputime64_to_clock_t(user));
@@ -63910,7 +64997,7 @@ index 678455d..ebd3245 100644
63910 pid_t tid = vm_is_stack(priv->task, vma, is_pid); 64997 pid_t tid = vm_is_stack(priv->task, vma, is_pid);
63911 64998
63912diff --git a/fs/proc/vmcore.c b/fs/proc/vmcore.c 64999diff --git a/fs/proc/vmcore.c b/fs/proc/vmcore.c
63913index 9100d69..51cd925 100644 65000index 88d4585..c10bfeb 100644
63914--- a/fs/proc/vmcore.c 65001--- a/fs/proc/vmcore.c
63915+++ b/fs/proc/vmcore.c 65002+++ b/fs/proc/vmcore.c
63916@@ -105,9 +105,13 @@ static ssize_t read_from_oldmem(char *buf, size_t count, 65003@@ -105,9 +105,13 @@ static ssize_t read_from_oldmem(char *buf, size_t count,
@@ -64002,10 +65089,10 @@ index 72d2917..c917c12 100644
64002 if (!msg_head) { 65089 if (!msg_head) {
64003 printk(KERN_ERR 65090 printk(KERN_ERR
64004diff --git a/fs/read_write.c b/fs/read_write.c 65091diff --git a/fs/read_write.c b/fs/read_write.c
64005index cfa18df..c110979 100644 65092index 28cc9c8..208e4fb 100644
64006--- a/fs/read_write.c 65093--- a/fs/read_write.c
64007+++ b/fs/read_write.c 65094+++ b/fs/read_write.c
64008@@ -438,7 +438,7 @@ ssize_t __kernel_write(struct file *file, const char *buf, size_t count, loff_t 65095@@ -450,7 +450,7 @@ ssize_t __kernel_write(struct file *file, const char *buf, size_t count, loff_t
64009 65096
64010 old_fs = get_fs(); 65097 old_fs = get_fs();
64011 set_fs(get_ds()); 65098 set_fs(get_ds());
@@ -64108,10 +65195,10 @@ index 5b53d99..a6c3049 100644
64108 if (error >= 0) 65195 if (error >= 0)
64109 error = buf.error; 65196 error = buf.error;
64110diff --git a/fs/reiserfs/do_balan.c b/fs/reiserfs/do_balan.c 65197diff --git a/fs/reiserfs/do_balan.c b/fs/reiserfs/do_balan.c
64111index 2b7882b..1c5ef48 100644 65198index 9a3c68c..767933e 100644
64112--- a/fs/reiserfs/do_balan.c 65199--- a/fs/reiserfs/do_balan.c
64113+++ b/fs/reiserfs/do_balan.c 65200+++ b/fs/reiserfs/do_balan.c
64114@@ -2051,7 +2051,7 @@ void do_balance(struct tree_balance *tb, /* tree_balance structure */ 65201@@ -1546,7 +1546,7 @@ void do_balance(struct tree_balance *tb, /* tree_balance structure */
64115 return; 65202 return;
64116 } 65203 }
64117 65204
@@ -64155,7 +65242,7 @@ index ee382ef..f4eb6eb5 100644
64155 65242
64156 ////////////////////////////////////////////////////////////////////////////// 65243 //////////////////////////////////////////////////////////////////////////////
64157diff --git a/fs/reiserfs/procfs.c b/fs/reiserfs/procfs.c 65244diff --git a/fs/reiserfs/procfs.c b/fs/reiserfs/procfs.c
64158index a958444..42b2323 100644 65245index 02b0b7d..c85018b 100644
64159--- a/fs/reiserfs/procfs.c 65246--- a/fs/reiserfs/procfs.c
64160+++ b/fs/reiserfs/procfs.c 65247+++ b/fs/reiserfs/procfs.c
64161@@ -114,7 +114,7 @@ static int show_super(struct seq_file *m, void *unused) 65248@@ -114,7 +114,7 @@ static int show_super(struct seq_file *m, void *unused)
@@ -64168,7 +65255,7 @@ index a958444..42b2323 100644
64168 SF(s_do_balance), SF(s_unneeded_left_neighbor), 65255 SF(s_do_balance), SF(s_unneeded_left_neighbor),
64169 SF(s_good_search_by_key_reada), SF(s_bmaps), 65256 SF(s_good_search_by_key_reada), SF(s_bmaps),
64170diff --git a/fs/reiserfs/reiserfs.h b/fs/reiserfs/reiserfs.h 65257diff --git a/fs/reiserfs/reiserfs.h b/fs/reiserfs/reiserfs.h
64171index f8adaee..0eeeeca 100644 65258index 8d06adf..7e1c9f8 100644
64172--- a/fs/reiserfs/reiserfs.h 65259--- a/fs/reiserfs/reiserfs.h
64173+++ b/fs/reiserfs/reiserfs.h 65260+++ b/fs/reiserfs/reiserfs.h
64174@@ -453,7 +453,7 @@ struct reiserfs_sb_info { 65261@@ -453,7 +453,7 @@ struct reiserfs_sb_info {
@@ -64180,7 +65267,7 @@ index f8adaee..0eeeeca 100644
64180 // tree gets re-balanced 65267 // tree gets re-balanced
64181 unsigned long s_properties; /* File system properties. Currently holds 65268 unsigned long s_properties; /* File system properties. Currently holds
64182 on-disk FS format */ 65269 on-disk FS format */
64183@@ -1982,7 +1982,7 @@ static inline loff_t max_reiserfs_offset(struct inode *inode) 65270@@ -1972,7 +1972,7 @@ static inline loff_t max_reiserfs_offset(struct inode *inode)
64184 #define REISERFS_USER_MEM 1 /* reiserfs user memory mode */ 65271 #define REISERFS_USER_MEM 1 /* reiserfs user memory mode */
64185 65272
64186 #define fs_generation(s) (REISERFS_SB(s)->s_generation_counter) 65273 #define fs_generation(s) (REISERFS_SB(s)->s_generation_counter)
@@ -64210,18 +65297,19 @@ index 467bb1c..cf9d65a 100644
64210 return -EINVAL; 65297 return -EINVAL;
64211 65298
64212diff --git a/fs/seq_file.c b/fs/seq_file.c 65299diff --git a/fs/seq_file.c b/fs/seq_file.c
64213index 1d641bb..e600623 100644 65300index 1d641bb..c2f4743 100644
64214--- a/fs/seq_file.c 65301--- a/fs/seq_file.c
64215+++ b/fs/seq_file.c 65302+++ b/fs/seq_file.c
64216@@ -10,6 +10,7 @@ 65303@@ -10,6 +10,8 @@
64217 #include <linux/seq_file.h> 65304 #include <linux/seq_file.h>
64218 #include <linux/slab.h> 65305 #include <linux/slab.h>
64219 #include <linux/cred.h> 65306 #include <linux/cred.h>
64220+#include <linux/sched.h> 65307+#include <linux/sched.h>
65308+#include <linux/grsecurity.h>
64221 65309
64222 #include <asm/uaccess.h> 65310 #include <asm/uaccess.h>
64223 #include <asm/page.h> 65311 #include <asm/page.h>
64224@@ -60,6 +61,9 @@ int seq_open(struct file *file, const struct seq_operations *op) 65312@@ -60,6 +62,9 @@ int seq_open(struct file *file, const struct seq_operations *op)
64225 #ifdef CONFIG_USER_NS 65313 #ifdef CONFIG_USER_NS
64226 p->user_ns = file->f_cred->user_ns; 65314 p->user_ns = file->f_cred->user_ns;
64227 #endif 65315 #endif
@@ -64231,7 +65319,24 @@ index 1d641bb..e600623 100644
64231 65319
64232 /* 65320 /*
64233 * Wrappers around seq_open(e.g. swaps_open) need to be 65321 * Wrappers around seq_open(e.g. swaps_open) need to be
64234@@ -96,7 +100,7 @@ static int traverse(struct seq_file *m, loff_t offset) 65322@@ -82,6 +87,16 @@ int seq_open(struct file *file, const struct seq_operations *op)
65323 }
65324 EXPORT_SYMBOL(seq_open);
65325
65326+
65327+int seq_open_restrict(struct file *file, const struct seq_operations *op)
65328+{
65329+ if (gr_proc_is_restricted())
65330+ return -EACCES;
65331+
65332+ return seq_open(file, op);
65333+}
65334+EXPORT_SYMBOL(seq_open_restrict);
65335+
65336 static int traverse(struct seq_file *m, loff_t offset)
65337 {
65338 loff_t pos = 0, index;
65339@@ -96,7 +111,7 @@ static int traverse(struct seq_file *m, loff_t offset)
64235 return 0; 65340 return 0;
64236 } 65341 }
64237 if (!m->buf) { 65342 if (!m->buf) {
@@ -64240,7 +65345,7 @@ index 1d641bb..e600623 100644
64240 if (!m->buf) 65345 if (!m->buf)
64241 return -ENOMEM; 65346 return -ENOMEM;
64242 } 65347 }
64243@@ -137,7 +141,7 @@ Eoverflow: 65348@@ -137,7 +152,7 @@ Eoverflow:
64244 m->op->stop(m, p); 65349 m->op->stop(m, p);
64245 kfree(m->buf); 65350 kfree(m->buf);
64246 m->count = 0; 65351 m->count = 0;
@@ -64249,7 +65354,7 @@ index 1d641bb..e600623 100644
64249 return !m->buf ? -ENOMEM : -EAGAIN; 65354 return !m->buf ? -ENOMEM : -EAGAIN;
64250 } 65355 }
64251 65356
64252@@ -153,7 +157,7 @@ Eoverflow: 65357@@ -153,7 +168,7 @@ Eoverflow:
64253 ssize_t seq_read(struct file *file, char __user *buf, size_t size, loff_t *ppos) 65358 ssize_t seq_read(struct file *file, char __user *buf, size_t size, loff_t *ppos)
64254 { 65359 {
64255 struct seq_file *m = file->private_data; 65360 struct seq_file *m = file->private_data;
@@ -64258,7 +65363,7 @@ index 1d641bb..e600623 100644
64258 loff_t pos; 65363 loff_t pos;
64259 size_t n; 65364 size_t n;
64260 void *p; 65365 void *p;
64261@@ -192,7 +196,7 @@ ssize_t seq_read(struct file *file, char __user *buf, size_t size, loff_t *ppos) 65366@@ -192,7 +207,7 @@ ssize_t seq_read(struct file *file, char __user *buf, size_t size, loff_t *ppos)
64262 65367
64263 /* grab buffer if we didn't have one */ 65368 /* grab buffer if we didn't have one */
64264 if (!m->buf) { 65369 if (!m->buf) {
@@ -64267,7 +65372,7 @@ index 1d641bb..e600623 100644
64267 if (!m->buf) 65372 if (!m->buf)
64268 goto Enomem; 65373 goto Enomem;
64269 } 65374 }
64270@@ -234,7 +238,7 @@ ssize_t seq_read(struct file *file, char __user *buf, size_t size, loff_t *ppos) 65375@@ -234,7 +249,7 @@ ssize_t seq_read(struct file *file, char __user *buf, size_t size, loff_t *ppos)
64271 m->op->stop(m, p); 65376 m->op->stop(m, p);
64272 kfree(m->buf); 65377 kfree(m->buf);
64273 m->count = 0; 65378 m->count = 0;
@@ -64276,7 +65381,7 @@ index 1d641bb..e600623 100644
64276 if (!m->buf) 65381 if (!m->buf)
64277 goto Enomem; 65382 goto Enomem;
64278 m->version = 0; 65383 m->version = 0;
64279@@ -584,7 +588,7 @@ static void single_stop(struct seq_file *p, void *v) 65384@@ -584,7 +599,7 @@ static void single_stop(struct seq_file *p, void *v)
64280 int single_open(struct file *file, int (*show)(struct seq_file *, void *), 65385 int single_open(struct file *file, int (*show)(struct seq_file *, void *),
64281 void *data) 65386 void *data)
64282 { 65387 {
@@ -64285,6 +65390,24 @@ index 1d641bb..e600623 100644
64285 int res = -ENOMEM; 65390 int res = -ENOMEM;
64286 65391
64287 if (op) { 65392 if (op) {
65393@@ -620,6 +635,17 @@ int single_open_size(struct file *file, int (*show)(struct seq_file *, void *),
65394 }
65395 EXPORT_SYMBOL(single_open_size);
65396
65397+int single_open_restrict(struct file *file, int (*show)(struct seq_file *, void *),
65398+ void *data)
65399+{
65400+ if (gr_proc_is_restricted())
65401+ return -EACCES;
65402+
65403+ return single_open(file, show, data);
65404+}
65405+EXPORT_SYMBOL(single_open_restrict);
65406+
65407+
65408 int single_release(struct inode *inode, struct file *file)
65409 {
65410 const struct seq_operations *op = ((struct seq_file *)file->private_data)->op;
64288diff --git a/fs/splice.c b/fs/splice.c 65411diff --git a/fs/splice.c b/fs/splice.c
64289index 12028fa..a6f2619 100644 65412index 12028fa..a6f2619 100644
64290--- a/fs/splice.c 65413--- a/fs/splice.c
@@ -64493,115 +65616,71 @@ index ae0c3ce..9ee641c 100644
64493 generic_fillattr(inode, stat); 65616 generic_fillattr(inode, stat);
64494 return 0; 65617 return 0;
64495diff --git a/fs/sysfs/dir.c b/fs/sysfs/dir.c 65618diff --git a/fs/sysfs/dir.c b/fs/sysfs/dir.c
64496index 5e73d66..4f165fd 100644 65619index ee0d761..b346c58 100644
64497--- a/fs/sysfs/dir.c 65620--- a/fs/sysfs/dir.c
64498+++ b/fs/sysfs/dir.c 65621+++ b/fs/sysfs/dir.c
64499@@ -40,7 +40,7 @@ static DEFINE_IDA(sysfs_ino_ida); 65622@@ -62,9 +62,16 @@ void sysfs_warn_dup(struct kernfs_node *parent, const char *name)
64500 * 65623 int sysfs_create_dir_ns(struct kobject *kobj, const void *ns)
64501 * Returns 31 bit hash of ns + name (so it fits in an off_t )
64502 */
64503-static unsigned int sysfs_name_hash(const char *name, const void *ns)
64504+static unsigned int sysfs_name_hash(const unsigned char *name, const void *ns)
64505 { 65624 {
64506 unsigned long hash = init_name_hash(); 65625 struct kernfs_node *parent, *kn;
64507 unsigned int len = strlen(name); 65626+ const char *name;
64508@@ -676,6 +676,18 @@ static int create_dir(struct kobject *kobj, struct sysfs_dirent *parent_sd, 65627+ umode_t mode = S_IRWXU | S_IRUGO | S_IXUGO;
64509 struct sysfs_dirent *sd;
64510 int rc;
64511
64512+#ifdef CONFIG_GRKERNSEC_SYSFS_RESTRICT 65628+#ifdef CONFIG_GRKERNSEC_SYSFS_RESTRICT
64513+ const char *parent_name = parent_sd->s_name; 65629+ const char *parent_name;
65630+#endif
65631
65632 BUG_ON(!kobj);
65633
65634+ name = kobject_name(kobj);
64514+ 65635+
64515+ mode = S_IFDIR | S_IRWXU; 65636 if (kobj->parent)
65637 parent = kobj->parent->sd;
65638 else
65639@@ -73,11 +80,22 @@ int sysfs_create_dir_ns(struct kobject *kobj, const void *ns)
65640 if (!parent)
65641 return -ENOENT;
65642
65643- kn = kernfs_create_dir_ns(parent, kobject_name(kobj),
65644- S_IRWXU | S_IRUGO | S_IXUGO, kobj, ns);
65645+#ifdef CONFIG_GRKERNSEC_SYSFS_RESTRICT
65646+ parent_name = parent->name;
65647+ mode = S_IRWXU;
64516+ 65648+
64517+ if ((!strcmp(parent_name, "") && (!strcmp(name, "devices") || !strcmp(name, "fs"))) || 65649+ if ((!strcmp(parent_name, "") && (!strcmp(name, "devices") || !strcmp(name, "fs"))) ||
64518+ (!strcmp(parent_name, "devices") && !strcmp(name, "system")) || 65650+ (!strcmp(parent_name, "devices") && !strcmp(name, "system")) ||
64519+ (!strcmp(parent_name, "fs") && (!strcmp(name, "selinux") || !strcmp(name, "fuse") || !strcmp(name, "ecryptfs"))) || 65651+ (!strcmp(parent_name, "fs") && (!strcmp(name, "selinux") || !strcmp(name, "fuse") || !strcmp(name, "ecryptfs"))) ||
64520+ (!strcmp(parent_name, "system") && !strcmp(name, "cpu"))) 65652+ (!strcmp(parent_name, "system") && !strcmp(name, "cpu")))
64521+ mode = S_IFDIR | S_IRWXU | S_IRUGO | S_IXUGO; 65653+ mode = S_IRWXU | S_IRUGO | S_IXUGO;
64522+#endif 65654+#endif
64523+ 65655+
64524 /* allocate */ 65656+ kn = kernfs_create_dir_ns(parent, name,
64525 sd = sysfs_new_dirent(name, mode, SYSFS_DIR); 65657+ mode, kobj, ns);
64526 if (!sd) 65658 if (IS_ERR(kn)) {
65659 if (PTR_ERR(kn) == -EEXIST)
65660- sysfs_warn_dup(parent, kobject_name(kobj));
65661+ sysfs_warn_dup(parent, name);
65662 return PTR_ERR(kn);
65663 }
65664
64527diff --git a/fs/sysfs/file.c b/fs/sysfs/file.c 65665diff --git a/fs/sysfs/file.c b/fs/sysfs/file.c
64528index 35e7d08..4d6e676 100644 65666index 810cf6e..5fd2bf1 100644
64529--- a/fs/sysfs/file.c 65667--- a/fs/sysfs/file.c
64530+++ b/fs/sysfs/file.c 65668+++ b/fs/sysfs/file.c
64531@@ -42,7 +42,7 @@ static DEFINE_MUTEX(sysfs_open_file_mutex); 65669@@ -47,12 +47,13 @@ static int sysfs_kf_seq_show(struct seq_file *sf, void *v)
64532 65670 ssize_t count;
64533 struct sysfs_open_dirent { 65671 char *buf;
64534 atomic_t refcnt; 65672
64535- atomic_t event; 65673- /* acquire buffer and ensure that it's >= PAGE_SIZE */
64536+ atomic_unchecked_t event; 65674+ /* acquire buffer and ensure that it's >= PAGE_SIZE and clear */
64537 wait_queue_head_t poll; 65675 count = seq_get_buf(sf, &buf);
64538 struct list_head files; /* goes through sysfs_open_file.list */ 65676 if (count < PAGE_SIZE) {
64539 }; 65677 seq_commit(sf, -1);
64540@@ -112,7 +112,7 @@ static int sysfs_seq_show(struct seq_file *sf, void *v) 65678 return 0;
64541 return -ENODEV;
64542 } 65679 }
64543 65680+ memset(buf, 0, PAGE_SIZE);
64544- of->event = atomic_read(&of->sd->s_attr.open->event);
64545+ of->event = atomic_read_unchecked(&of->sd->s_attr.open->event);
64546 65681
64547 /* 65682 /*
64548 * Lookup @ops and invoke show(). Control may reach here via seq 65683 * Invoke show(). Control may reach here via seq file lseek even
64549@@ -365,12 +365,12 @@ static int sysfs_bin_page_mkwrite(struct vm_area_struct *vma,
64550 return ret;
64551 }
64552
64553-static int sysfs_bin_access(struct vm_area_struct *vma, unsigned long addr,
64554- void *buf, int len, int write)
64555+static ssize_t sysfs_bin_access(struct vm_area_struct *vma, unsigned long addr,
64556+ void *buf, size_t len, int write)
64557 {
64558 struct file *file = vma->vm_file;
64559 struct sysfs_open_file *of = sysfs_of(file);
64560- int ret;
64561+ ssize_t ret;
64562
64563 if (!of->vm_ops)
64564 return -EINVAL;
64565@@ -564,7 +564,7 @@ static int sysfs_get_open_dirent(struct sysfs_dirent *sd,
64566 return -ENOMEM;
64567
64568 atomic_set(&new_od->refcnt, 0);
64569- atomic_set(&new_od->event, 1);
64570+ atomic_set_unchecked(&new_od->event, 1);
64571 init_waitqueue_head(&new_od->poll);
64572 INIT_LIST_HEAD(&new_od->files);
64573 goto retry;
64574@@ -768,7 +768,7 @@ static unsigned int sysfs_poll(struct file *filp, poll_table *wait)
64575
64576 sysfs_put_active(attr_sd);
64577
64578- if (of->event != atomic_read(&od->event))
64579+ if (of->event != atomic_read_unchecked(&od->event))
64580 goto trigger;
64581
64582 return DEFAULT_POLLMASK;
64583@@ -787,7 +787,7 @@ void sysfs_notify_dirent(struct sysfs_dirent *sd)
64584 if (!WARN_ON(sysfs_type(sd) != SYSFS_KOBJ_ATTR)) {
64585 od = sd->s_attr.open;
64586 if (od) {
64587- atomic_inc(&od->event);
64588+ atomic_inc_unchecked(&od->event);
64589 wake_up_interruptible(&od->poll);
64590 }
64591 }
64592diff --git a/fs/sysfs/symlink.c b/fs/sysfs/symlink.c
64593index 3ae3f1b..081a26c 100644
64594--- a/fs/sysfs/symlink.c
64595+++ b/fs/sysfs/symlink.c
64596@@ -314,7 +314,7 @@ static void *sysfs_follow_link(struct dentry *dentry, struct nameidata *nd)
64597 static void sysfs_put_link(struct dentry *dentry, struct nameidata *nd,
64598 void *cookie)
64599 {
64600- char *page = nd_get_link(nd);
64601+ const char *page = nd_get_link(nd);
64602 if (!IS_ERR(page))
64603 free_page((unsigned long)page);
64604 }
64605diff --git a/fs/sysv/sysv.h b/fs/sysv/sysv.h 65684diff --git a/fs/sysv/sysv.h b/fs/sysv/sysv.h
64606index 69d4889..a810bd4 100644 65685index 69d4889..a810bd4 100644
64607--- a/fs/sysv/sysv.h 65686--- a/fs/sysv/sysv.h
@@ -64840,62 +65919,8 @@ index 3377dff..f394815 100644
64840 mnt_drop_write_file(f.file); 65919 mnt_drop_write_file(f.file);
64841 } 65920 }
64842 fdput(f); 65921 fdput(f);
64843diff --git a/fs/xattr_acl.c b/fs/xattr_acl.c
64844index 9fbea87..417b3c2 100644
64845--- a/fs/xattr_acl.c
64846+++ b/fs/xattr_acl.c
64847@@ -10,6 +10,7 @@
64848 #include <linux/posix_acl_xattr.h>
64849 #include <linux/gfp.h>
64850 #include <linux/user_namespace.h>
64851+#include <linux/grsecurity.h>
64852
64853 /*
64854 * Fix up the uids and gids in posix acl extended attributes in place.
64855@@ -76,11 +77,12 @@ struct posix_acl *
64856 posix_acl_from_xattr(struct user_namespace *user_ns,
64857 const void *value, size_t size)
64858 {
64859- posix_acl_xattr_header *header = (posix_acl_xattr_header *)value;
64860- posix_acl_xattr_entry *entry = (posix_acl_xattr_entry *)(header+1), *end;
64861+ const posix_acl_xattr_header *header = (const posix_acl_xattr_header *)value;
64862+ const posix_acl_xattr_entry *entry = (const posix_acl_xattr_entry *)(header+1), *end;
64863 int count;
64864 struct posix_acl *acl;
64865 struct posix_acl_entry *acl_e;
64866+ umode_t umask = gr_acl_umask();
64867
64868 if (!value)
64869 return NULL;
64870@@ -106,12 +108,18 @@ posix_acl_from_xattr(struct user_namespace *user_ns,
64871
64872 switch(acl_e->e_tag) {
64873 case ACL_USER_OBJ:
64874+ acl_e->e_perm &= ~((umask & S_IRWXU) >> 6);
64875+ break;
64876 case ACL_GROUP_OBJ:
64877 case ACL_MASK:
64878+ acl_e->e_perm &= ~((umask & S_IRWXG) >> 3);
64879+ break;
64880 case ACL_OTHER:
64881+ acl_e->e_perm &= ~(umask & S_IRWXO);
64882 break;
64883
64884 case ACL_USER:
64885+ acl_e->e_perm &= ~((umask & S_IRWXU) >> 6);
64886 acl_e->e_uid =
64887 make_kuid(user_ns,
64888 le32_to_cpu(entry->e_id));
64889@@ -119,6 +127,7 @@ posix_acl_from_xattr(struct user_namespace *user_ns,
64890 goto fail;
64891 break;
64892 case ACL_GROUP:
64893+ acl_e->e_perm &= ~((umask & S_IRWXG) >> 3);
64894 acl_e->e_gid =
64895 make_kgid(user_ns,
64896 le32_to_cpu(entry->e_id));
64897diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c 65922diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c
64898index 3b2c14b..de031fe 100644 65923index 152543c..d80c361 100644
64899--- a/fs/xfs/xfs_bmap.c 65924--- a/fs/xfs/xfs_bmap.c
64900+++ b/fs/xfs/xfs_bmap.c 65925+++ b/fs/xfs/xfs_bmap.c
64901@@ -584,7 +584,7 @@ xfs_bmap_validate_ret( 65926@@ -584,7 +584,7 @@ xfs_bmap_validate_ret(
@@ -64908,7 +65933,7 @@ index 3b2c14b..de031fe 100644
64908 65933
64909 /* 65934 /*
64910diff --git a/fs/xfs/xfs_dir2_readdir.c b/fs/xfs/xfs_dir2_readdir.c 65935diff --git a/fs/xfs/xfs_dir2_readdir.c b/fs/xfs/xfs_dir2_readdir.c
64911index c4e50c6..8ba93e3 100644 65936index aead369..0dfecfd 100644
64912--- a/fs/xfs/xfs_dir2_readdir.c 65937--- a/fs/xfs/xfs_dir2_readdir.c
64913+++ b/fs/xfs/xfs_dir2_readdir.c 65938+++ b/fs/xfs/xfs_dir2_readdir.c
64914@@ -160,7 +160,12 @@ xfs_dir2_sf_getdents( 65939@@ -160,7 +160,12 @@ xfs_dir2_sf_getdents(
@@ -64926,10 +65951,10 @@ index c4e50c6..8ba93e3 100644
64926 return 0; 65951 return 0;
64927 sfep = dp->d_ops->sf_nextentry(sfp, sfep); 65952 sfep = dp->d_ops->sf_nextentry(sfp, sfep);
64928diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c 65953diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c
64929index 33ad9a7..82c18ba 100644 65954index bcfe612..aa399c0 100644
64930--- a/fs/xfs/xfs_ioctl.c 65955--- a/fs/xfs/xfs_ioctl.c
64931+++ b/fs/xfs/xfs_ioctl.c 65956+++ b/fs/xfs/xfs_ioctl.c
64932@@ -126,7 +126,7 @@ xfs_find_handle( 65957@@ -122,7 +122,7 @@ xfs_find_handle(
64933 } 65958 }
64934 65959
64935 error = -EFAULT; 65960 error = -EFAULT;
@@ -64938,25 +65963,12 @@ index 33ad9a7..82c18ba 100644
64938 copy_to_user(hreq->ohandlen, &hsize, sizeof(__s32))) 65963 copy_to_user(hreq->ohandlen, &hsize, sizeof(__s32)))
64939 goto out_put; 65964 goto out_put;
64940 65965
64941diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c
64942index 104455b..764c512 100644
64943--- a/fs/xfs/xfs_iops.c
64944+++ b/fs/xfs/xfs_iops.c
64945@@ -397,7 +397,7 @@ xfs_vn_put_link(
64946 struct nameidata *nd,
64947 void *p)
64948 {
64949- char *s = nd_get_link(nd);
64950+ const char *s = nd_get_link(nd);
64951
64952 if (!IS_ERR(s))
64953 kfree(s);
64954diff --git a/grsecurity/Kconfig b/grsecurity/Kconfig 65966diff --git a/grsecurity/Kconfig b/grsecurity/Kconfig
64955new file mode 100644 65967new file mode 100644
64956index 0000000..031e895 65968index 0000000..a14eb52
64957--- /dev/null 65969--- /dev/null
64958+++ b/grsecurity/Kconfig 65970+++ b/grsecurity/Kconfig
64959@@ -0,0 +1,1157 @@ 65971@@ -0,0 +1,1174 @@
64960+# 65972+#
64961+# grecurity configuration 65973+# grecurity configuration
64962+# 65974+#
@@ -64970,18 +65982,16 @@ index 0000000..031e895
64970+ help 65982+ help
64971+ If you say Y here, /dev/kmem and /dev/mem won't be allowed to 65983+ If you say Y here, /dev/kmem and /dev/mem won't be allowed to
64972+ be written to or read from to modify or leak the contents of the running 65984+ be written to or read from to modify or leak the contents of the running
64973+ kernel. /dev/port will also not be allowed to be opened, and support 65985+ kernel. /dev/port will also not be allowed to be opened, writing to
64974+ for /dev/cpu/*/msr and kexec will be removed. If you have module 65986+ /dev/cpu/*/msr will be prevented, and support for kexec will be removed.
64975+ support disabled, enabling this will close up six ways that are 65987+ If you have module support disabled, enabling this will close up several
64976+ currently used to insert malicious code into the running kernel. 65988+ ways that are currently used to insert malicious code into the running
65989+ kernel.
64977+ 65990+
64978+ Even with this feature enabled, we still highly recommend that 65991+ Even with this feature enabled, we still highly recommend that
64979+ you use the RBAC system, as it is still possible for an attacker to 65992+ you use the RBAC system, as it is still possible for an attacker to
64980+ modify the running kernel through other more obscure methods. 65993+ modify the running kernel through other more obscure methods.
64981+ 65994+
64982+ Enabling this feature will prevent the "cpupower" and "powertop" tools
64983+ from working.
64984+
64985+ It is highly recommended that you say Y here if you meet all the 65995+ It is highly recommended that you say Y here if you meet all the
64986+ conditions above. 65996+ conditions above.
64987+ 65997+
@@ -65014,7 +66024,8 @@ index 0000000..031e895
65014+ the most notable of which are XFree86 and hwclock. hwclock can be 66024+ the most notable of which are XFree86 and hwclock. hwclock can be
65015+ remedied by having RTC support in the kernel, so real-time 66025+ remedied by having RTC support in the kernel, so real-time
65016+ clock support is enabled if this option is enabled, to ensure 66026+ clock support is enabled if this option is enabled, to ensure
65017+ that hwclock operates correctly. 66027+ that hwclock operates correctly. If hwclock still does not work,
66028+ either update udev or symlink /dev/rtc to /dev/rtc0.
65018+ 66029+
65019+ If you're using XFree86 or a version of Xorg from 2012 or earlier, 66030+ If you're using XFree86 or a version of Xorg from 2012 or earlier,
65020+ you may not be able to boot into a graphical environment with this 66031+ you may not be able to boot into a graphical environment with this
@@ -65096,6 +66107,19 @@ index 0000000..031e895
65096+ If you use PaX it is essential that you say Y here as it closes up 66107+ If you use PaX it is essential that you say Y here as it closes up
65097+ several holes that make full ASLR useless locally. 66108+ several holes that make full ASLR useless locally.
65098+ 66109+
66110+
66111+config GRKERNSEC_KSTACKOVERFLOW
66112+ bool "Prevent kernel stack overflows"
66113+ default y if GRKERNSEC_CONFIG_AUTO
66114+ depends on !IA64 && 64BIT
66115+ help
66116+ If you say Y here, the kernel's process stacks will be allocated
66117+ with vmalloc instead of the kernel's default allocator. This
66118+ introduces guard pages that in combination with the alloca checking
66119+ of the STACKLEAK feature prevents all forms of kernel process stack
66120+ overflow abuse. Note that this is different from kernel stack
66121+ buffer overflows.
66122+
65099+config GRKERNSEC_BRUTE 66123+config GRKERNSEC_BRUTE
65100+ bool "Deter exploit bruteforcing" 66124+ bool "Deter exploit bruteforcing"
65101+ default y if GRKERNSEC_CONFIG_AUTO 66125+ default y if GRKERNSEC_CONFIG_AUTO
@@ -65439,6 +66463,11 @@ index 0000000..031e895
65439+ encounter no software incompatibilities with the following options, it 66463+ encounter no software incompatibilities with the following options, it
65440+ is recommended that you enable each one. 66464+ is recommended that you enable each one.
65441+ 66465+
66466+ Note that the chroot restrictions are not intended to apply to "chroots"
66467+ to directories that are simple bind mounts of the global root filesystem.
66468+ For several other reasons, a user shouldn't expect any significant
66469+ security by performing such a chroot.
66470+
65442+config GRKERNSEC_CHROOT_MOUNT 66471+config GRKERNSEC_CHROOT_MOUNT
65443+ bool "Deny mounts" 66472+ bool "Deny mounts"
65444+ default y if GRKERNSEC_CONFIG_AUTO 66473+ default y if GRKERNSEC_CONFIG_AUTO
@@ -66116,7 +67145,7 @@ index 0000000..031e895
66116+endmenu 67145+endmenu
66117diff --git a/grsecurity/Makefile b/grsecurity/Makefile 67146diff --git a/grsecurity/Makefile b/grsecurity/Makefile
66118new file mode 100644 67147new file mode 100644
66119index 0000000..5307c8a 67148index 0000000..30ababb
66120--- /dev/null 67149--- /dev/null
66121+++ b/grsecurity/Makefile 67150+++ b/grsecurity/Makefile
66122@@ -0,0 +1,54 @@ 67151@@ -0,0 +1,54 @@
@@ -66143,7 +67172,7 @@ index 0000000..5307c8a
66143+obj-y = grsec_chdir.o grsec_chroot.o grsec_exec.o grsec_fifo.o grsec_fork.o \ 67172+obj-y = grsec_chdir.o grsec_chroot.o grsec_exec.o grsec_fifo.o grsec_fork.o \
66144+ grsec_mount.o grsec_sig.o grsec_sysctl.o \ 67173+ grsec_mount.o grsec_sig.o grsec_sysctl.o \
66145+ grsec_time.o grsec_tpe.o grsec_link.o grsec_pax.o grsec_ptrace.o \ 67174+ grsec_time.o grsec_tpe.o grsec_link.o grsec_pax.o grsec_ptrace.o \
66146+ grsec_usb.o grsec_ipc.o 67175+ grsec_usb.o grsec_ipc.o grsec_proc.o
66147+ 67176+
66148+obj-$(CONFIG_GRKERNSEC) += grsec_init.o grsum.o gracl.o gracl_segv.o \ 67177+obj-$(CONFIG_GRKERNSEC) += grsec_init.o grsum.o gracl.o gracl_segv.o \
66149+ gracl_cap.o gracl_alloc.o gracl_shm.o grsec_mem.o gracl_fs.o \ 67178+ gracl_cap.o gracl_alloc.o gracl_shm.o grsec_mem.o gracl_fs.o \
@@ -74648,6 +75677,32 @@ index 0000000..6ee9d50
74648+#endif 75677+#endif
74649+ return; 75678+ return;
74650+} 75679+}
75680diff --git a/grsecurity/grsec_proc.c b/grsecurity/grsec_proc.c
75681new file mode 100644
75682index 0000000..2005a3a
75683--- /dev/null
75684+++ b/grsecurity/grsec_proc.c
75685@@ -0,0 +1,20 @@
75686+#include <linux/kernel.h>
75687+#include <linux/sched.h>
75688+#include <linux/grsecurity.h>
75689+#include <linux/grinternal.h>
75690+
75691+int gr_proc_is_restricted(void)
75692+{
75693+#if defined(CONFIG_GRKERNSEC_PROC_USER) || defined(CONFIG_GRKERNSEC_PROC_USERGROUP)
75694+ const struct cred *cred = current_cred();
75695+#endif
75696+
75697+#ifdef CONFIG_GRKERNSEC_PROC_USER
75698+ if (!uid_eq(cred->fsuid, GLOBAL_ROOT_UID))
75699+ return -EACCES;
75700+#elif defined(CONFIG_GRKERNSEC_PROC_USERGROUP)
75701+ if (!uid_eq(cred->fsuid, GLOBAL_ROOT_UID) && !in_group_p(grsec_proc_gid))
75702+ return -EACCES;
75703+#endif
75704+ return 0;
75705+}
74651diff --git a/grsecurity/grsec_ptrace.c b/grsecurity/grsec_ptrace.c 75706diff --git a/grsecurity/grsec_ptrace.c b/grsecurity/grsec_ptrace.c
74652new file mode 100644 75707new file mode 100644
74653index 0000000..f7f29aa 75708index 0000000..f7f29aa
@@ -76475,10 +77530,10 @@ index 810431d..0ec4804f 100644
76475 * (puds are folded into pgds so this doesn't get actually called, 77530 * (puds are folded into pgds so this doesn't get actually called,
76476 * but the define is needed for a generic inline function.) 77531 * but the define is needed for a generic inline function.)
76477diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h 77532diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h
76478index 8e4f41d..c5e9afd 100644 77533index 38a7437..47f62a4 100644
76479--- a/include/asm-generic/pgtable.h 77534--- a/include/asm-generic/pgtable.h
76480+++ b/include/asm-generic/pgtable.h 77535+++ b/include/asm-generic/pgtable.h
76481@@ -748,6 +748,22 @@ static inline pmd_t pmd_mknuma(pmd_t pmd) 77536@@ -802,6 +802,22 @@ static inline void pmdp_set_numa(struct mm_struct *mm, unsigned long addr,
76482 } 77537 }
76483 #endif /* CONFIG_NUMA_BALANCING */ 77538 #endif /* CONFIG_NUMA_BALANCING */
76484 77539
@@ -76502,7 +77557,7 @@ index 8e4f41d..c5e9afd 100644
76502 77557
76503 #endif /* !__ASSEMBLY__ */ 77558 #endif /* !__ASSEMBLY__ */
76504diff --git a/include/asm-generic/uaccess.h b/include/asm-generic/uaccess.h 77559diff --git a/include/asm-generic/uaccess.h b/include/asm-generic/uaccess.h
76505index dc1269c..48a4f51 100644 77560index 72d8803..cb9749c 100644
76506--- a/include/asm-generic/uaccess.h 77561--- a/include/asm-generic/uaccess.h
76507+++ b/include/asm-generic/uaccess.h 77562+++ b/include/asm-generic/uaccess.h
76508@@ -343,4 +343,20 @@ clear_user(void __user *to, unsigned long n) 77563@@ -343,4 +343,20 @@ clear_user(void __user *to, unsigned long n)
@@ -76575,10 +77630,10 @@ index e73c19e..5b89e00 100644
76575 struct crypto_instance { 77630 struct crypto_instance {
76576 struct crypto_alg alg; 77631 struct crypto_alg alg;
76577diff --git a/include/drm/drmP.h b/include/drm/drmP.h 77632diff --git a/include/drm/drmP.h b/include/drm/drmP.h
76578index 1d4a920..da65658 100644 77633index 04a7f31..668d424 100644
76579--- a/include/drm/drmP.h 77634--- a/include/drm/drmP.h
76580+++ b/include/drm/drmP.h 77635+++ b/include/drm/drmP.h
76581@@ -66,6 +66,7 @@ 77636@@ -67,6 +67,7 @@
76582 #include <linux/workqueue.h> 77637 #include <linux/workqueue.h>
76583 #include <linux/poll.h> 77638 #include <linux/poll.h>
76584 #include <asm/pgalloc.h> 77639 #include <asm/pgalloc.h>
@@ -76586,7 +77641,7 @@ index 1d4a920..da65658 100644
76586 #include <drm/drm.h> 77641 #include <drm/drm.h>
76587 #include <drm/drm_sarea.h> 77642 #include <drm/drm_sarea.h>
76588 #include <drm/drm_vma_manager.h> 77643 #include <drm/drm_vma_manager.h>
76589@@ -278,10 +279,12 @@ do { \ 77644@@ -297,10 +298,12 @@ do { \
76590 * \param cmd command. 77645 * \param cmd command.
76591 * \param arg argument. 77646 * \param arg argument.
76592 */ 77647 */
@@ -76601,7 +77656,7 @@ index 1d4a920..da65658 100644
76601 unsigned long arg); 77656 unsigned long arg);
76602 77657
76603 #define DRM_IOCTL_NR(n) _IOC_NR(n) 77658 #define DRM_IOCTL_NR(n) _IOC_NR(n)
76604@@ -297,10 +300,10 @@ typedef int drm_ioctl_compat_t(struct file *filp, unsigned int cmd, 77659@@ -316,10 +319,10 @@ typedef int drm_ioctl_compat_t(struct file *filp, unsigned int cmd,
76605 struct drm_ioctl_desc { 77660 struct drm_ioctl_desc {
76606 unsigned int cmd; 77661 unsigned int cmd;
76607 int flags; 77662 int flags;
@@ -76614,7 +77669,7 @@ index 1d4a920..da65658 100644
76614 77669
76615 /** 77670 /**
76616 * Creates a driver or general drm_ioctl_desc array entry for the given 77671 * Creates a driver or general drm_ioctl_desc array entry for the given
76617@@ -1013,7 +1016,8 @@ struct drm_info_list { 77672@@ -1022,7 +1025,8 @@ struct drm_info_list {
76618 int (*show)(struct seq_file*, void*); /** show callback */ 77673 int (*show)(struct seq_file*, void*); /** show callback */
76619 u32 driver_features; /**< Required driver features for this entry */ 77674 u32 driver_features; /**< Required driver features for this entry */
76620 void *data; 77675 void *data;
@@ -76624,17 +77679,17 @@ index 1d4a920..da65658 100644
76624 77679
76625 /** 77680 /**
76626 * debugfs node structure. This structure represents a debugfs file. 77681 * debugfs node structure. This structure represents a debugfs file.
76627@@ -1097,7 +1101,7 @@ struct drm_device { 77682@@ -1106,7 +1110,7 @@ struct drm_device {
76628 77683
76629 /** \name Usage Counters */ 77684 /** \name Usage Counters */
76630 /*@{ */ 77685 /*@{ */
76631- int open_count; /**< Outstanding files open */ 77686- int open_count; /**< Outstanding files open */
76632+ local_t open_count; /**< Outstanding files open */ 77687+ local_t open_count; /**< Outstanding files open */
76633 atomic_t ioctl_count; /**< Outstanding IOCTLs pending */
76634 atomic_t vma_count; /**< Outstanding vma areas open */
76635 int buf_use; /**< Buffers in use -- cannot alloc */ 77688 int buf_use; /**< Buffers in use -- cannot alloc */
77689 atomic_t buf_alloc; /**< Buffer allocation in progress */
77690 /*@} */
76636diff --git a/include/drm/drm_crtc_helper.h b/include/drm/drm_crtc_helper.h 77691diff --git a/include/drm/drm_crtc_helper.h b/include/drm/drm_crtc_helper.h
76637index ef6ad3a..be34b16 100644 77692index b1388b5..e1d1163 100644
76638--- a/include/drm/drm_crtc_helper.h 77693--- a/include/drm/drm_crtc_helper.h
76639+++ b/include/drm/drm_crtc_helper.h 77694+++ b/include/drm/drm_crtc_helper.h
76640@@ -109,7 +109,7 @@ struct drm_encoder_helper_funcs { 77695@@ -109,7 +109,7 @@ struct drm_encoder_helper_funcs {
@@ -76673,10 +77728,10 @@ index 72dcbe8..8db58d7 100644
76673 /** 77728 /**
76674 * struct ttm_mem_global - Global memory accounting structure. 77729 * struct ttm_mem_global - Global memory accounting structure.
76675diff --git a/include/drm/ttm/ttm_page_alloc.h b/include/drm/ttm/ttm_page_alloc.h 77730diff --git a/include/drm/ttm/ttm_page_alloc.h b/include/drm/ttm/ttm_page_alloc.h
76676index d1f61bf..2239439 100644 77731index 49a8284..9643967 100644
76677--- a/include/drm/ttm/ttm_page_alloc.h 77732--- a/include/drm/ttm/ttm_page_alloc.h
76678+++ b/include/drm/ttm/ttm_page_alloc.h 77733+++ b/include/drm/ttm/ttm_page_alloc.h
76679@@ -78,6 +78,7 @@ void ttm_dma_page_alloc_fini(void); 77734@@ -80,6 +80,7 @@ void ttm_dma_page_alloc_fini(void);
76680 */ 77735 */
76681 extern int ttm_dma_page_alloc_debugfs(struct seq_file *m, void *data); 77736 extern int ttm_dma_page_alloc_debugfs(struct seq_file *m, void *data);
76682 77737
@@ -76720,10 +77775,10 @@ index c1da539..1dcec55 100644
76720 struct atmphy_ops { 77775 struct atmphy_ops {
76721 int (*start)(struct atm_dev *dev); 77776 int (*start)(struct atm_dev *dev);
76722diff --git a/include/linux/audit.h b/include/linux/audit.h 77777diff --git a/include/linux/audit.h b/include/linux/audit.h
76723index bf1ef22..2a55e1b 100644 77778index ec1464d..833274b 100644
76724--- a/include/linux/audit.h 77779--- a/include/linux/audit.h
76725+++ b/include/linux/audit.h 77780+++ b/include/linux/audit.h
76726@@ -195,7 +195,7 @@ static inline void audit_ptrace(struct task_struct *t) 77781@@ -196,7 +196,7 @@ static inline void audit_ptrace(struct task_struct *t)
76727 extern unsigned int audit_serial(void); 77782 extern unsigned int audit_serial(void);
76728 extern int auditsc_get_stamp(struct audit_context *ctx, 77783 extern int auditsc_get_stamp(struct audit_context *ctx,
76729 struct timespec *t, unsigned int *serial); 77784 struct timespec *t, unsigned int *serial);
@@ -76733,9 +77788,18 @@ index bf1ef22..2a55e1b 100644
76733 static inline kuid_t audit_get_loginuid(struct task_struct *tsk) 77788 static inline kuid_t audit_get_loginuid(struct task_struct *tsk)
76734 { 77789 {
76735diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h 77790diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h
76736index fd8bf32..2cccd5a 100644 77791index b4a745d..e3c0942 100644
76737--- a/include/linux/binfmts.h 77792--- a/include/linux/binfmts.h
76738+++ b/include/linux/binfmts.h 77793+++ b/include/linux/binfmts.h
77794@@ -45,7 +45,7 @@ struct linux_binprm {
77795 unsigned interp_data;
77796 unsigned long loader, exec;
77797 char tcomm[TASK_COMM_LEN];
77798-};
77799+} __randomize_layout;
77800
77801 #define BINPRM_FLAGS_ENFORCE_NONDUMP_BIT 0
77802 #define BINPRM_FLAGS_ENFORCE_NONDUMP (1 << BINPRM_FLAGS_ENFORCE_NONDUMP_BIT)
76739@@ -74,8 +74,10 @@ struct linux_binfmt { 77803@@ -74,8 +74,10 @@ struct linux_binfmt {
76740 int (*load_binary)(struct linux_binprm *); 77804 int (*load_binary)(struct linux_binprm *);
76741 int (*load_shlib)(struct file *); 77805 int (*load_shlib)(struct file *);
@@ -76744,12 +77808,12 @@ index fd8bf32..2cccd5a 100644
76744+ void (*handle_mmap)(struct file *); 77808+ void (*handle_mmap)(struct file *);
76745 unsigned long min_coredump; /* minimal dump size */ 77809 unsigned long min_coredump; /* minimal dump size */
76746-}; 77810-};
76747+} __do_const; 77811+} __do_const __randomize_layout;
76748 77812
76749 extern void __register_binfmt(struct linux_binfmt *fmt, int insert); 77813 extern void __register_binfmt(struct linux_binfmt *fmt, int insert);
76750 77814
76751diff --git a/include/linux/bitops.h b/include/linux/bitops.h 77815diff --git a/include/linux/bitops.h b/include/linux/bitops.h
76752index abc9ca7..e54ee27 100644 77816index be5fd38..d71192a 100644
76753--- a/include/linux/bitops.h 77817--- a/include/linux/bitops.h
76754+++ b/include/linux/bitops.h 77818+++ b/include/linux/bitops.h
76755@@ -102,7 +102,7 @@ static inline __u64 ror64(__u64 word, unsigned int shift) 77819@@ -102,7 +102,7 @@ static inline __u64 ror64(__u64 word, unsigned int shift)
@@ -76780,10 +77844,10 @@ index abc9ca7..e54ee27 100644
76780 if (sizeof(l) == 4) 77844 if (sizeof(l) == 4)
76781 return fls(l); 77845 return fls(l);
76782diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h 77846diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
76783index 1b135d4..59fc876 100644 77847index 4afa4f8..1ed7824 100644
76784--- a/include/linux/blkdev.h 77848--- a/include/linux/blkdev.h
76785+++ b/include/linux/blkdev.h 77849+++ b/include/linux/blkdev.h
76786@@ -1578,7 +1578,7 @@ struct block_device_operations { 77850@@ -1572,7 +1572,7 @@ struct block_device_operations {
76787 /* this callback is with swap_lock and sometimes page table lock held */ 77851 /* this callback is with swap_lock and sometimes page table lock held */
76788 void (*swap_slot_free_notify) (struct block_device *, unsigned long); 77852 void (*swap_slot_free_notify) (struct block_device *, unsigned long);
76789 struct module *owner; 77853 struct module *owner;
@@ -76806,7 +77870,7 @@ index afc1343..9735539 100644
76806 77870
76807 extern int blk_trace_ioctl(struct block_device *, unsigned, char __user *); 77871 extern int blk_trace_ioctl(struct block_device *, unsigned, char __user *);
76808diff --git a/include/linux/cache.h b/include/linux/cache.h 77872diff --git a/include/linux/cache.h b/include/linux/cache.h
76809index 4c57065..40346da 100644 77873index 17e7e82..1d7da26 100644
76810--- a/include/linux/cache.h 77874--- a/include/linux/cache.h
76811+++ b/include/linux/cache.h 77875+++ b/include/linux/cache.h
76812@@ -16,6 +16,14 @@ 77876@@ -16,6 +16,14 @@
@@ -76868,11 +77932,11 @@ index 4ce9056..86caac6 100644
76868 extern struct cleancache_ops * 77932 extern struct cleancache_ops *
76869 cleancache_register_ops(struct cleancache_ops *ops); 77933 cleancache_register_ops(struct cleancache_ops *ops);
76870diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h 77934diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h
76871index 7e59253..d6e4cae 100644 77935index 939533d..cf0a57c 100644
76872--- a/include/linux/clk-provider.h 77936--- a/include/linux/clk-provider.h
76873+++ b/include/linux/clk-provider.h 77937+++ b/include/linux/clk-provider.h
76874@@ -141,6 +141,7 @@ struct clk_ops { 77938@@ -166,6 +166,7 @@ struct clk_ops {
76875 unsigned long); 77939 unsigned long parent_accuracy);
76876 void (*init)(struct clk_hw *hw); 77940 void (*init)(struct clk_hw *hw);
76877 }; 77941 };
76878+typedef struct clk_ops __no_const clk_ops_no_const; 77942+typedef struct clk_ops __no_const clk_ops_no_const;
@@ -76880,7 +77944,7 @@ index 7e59253..d6e4cae 100644
76880 /** 77944 /**
76881 * struct clk_init_data - holds init data that's common to all clocks and is 77945 * struct clk_init_data - holds init data that's common to all clocks and is
76882diff --git a/include/linux/compat.h b/include/linux/compat.h 77946diff --git a/include/linux/compat.h b/include/linux/compat.h
76883index 19f6003..90b64f4 100644 77947index 3f448c6..df3ce1d 100644
76884--- a/include/linux/compat.h 77948--- a/include/linux/compat.h
76885+++ b/include/linux/compat.h 77949+++ b/include/linux/compat.h
76886@@ -313,7 +313,7 @@ compat_sys_get_robust_list(int pid, compat_uptr_t __user *head_ptr, 77950@@ -313,7 +313,7 @@ compat_sys_get_robust_list(int pid, compat_uptr_t __user *head_ptr,
@@ -76941,7 +78005,7 @@ index 2507fd2..55203f8 100644
76941 * Mark a position in code as unreachable. This can be used to 78005 * Mark a position in code as unreachable. This can be used to
76942 * suppress control flow warnings after asm blocks that transfer 78006 * suppress control flow warnings after asm blocks that transfer
76943diff --git a/include/linux/compiler.h b/include/linux/compiler.h 78007diff --git a/include/linux/compiler.h b/include/linux/compiler.h
76944index 92669cd..cc564c0 100644 78008index 2472740..4857634 100644
76945--- a/include/linux/compiler.h 78009--- a/include/linux/compiler.h
76946+++ b/include/linux/compiler.h 78010+++ b/include/linux/compiler.h
76947@@ -5,11 +5,14 @@ 78011@@ -5,11 +5,14 @@
@@ -77009,7 +78073,7 @@ index 92669cd..cc564c0 100644
77009 #endif 78073 #endif
77010 78074
77011 /* Indirect macros required for expanded argument pasting, eg. __LINE__. */ 78075 /* Indirect macros required for expanded argument pasting, eg. __LINE__. */
77012@@ -275,6 +297,34 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect); 78076@@ -279,6 +301,34 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect);
77013 # define __attribute_const__ /* unimplemented */ 78077 # define __attribute_const__ /* unimplemented */
77014 #endif 78078 #endif
77015 78079
@@ -77044,7 +78108,7 @@ index 92669cd..cc564c0 100644
77044 /* 78108 /*
77045 * Tell gcc if a function is cold. The compiler will assume any path 78109 * Tell gcc if a function is cold. The compiler will assume any path
77046 * directly leading to the call is unlikely. 78110 * directly leading to the call is unlikely.
77047@@ -284,6 +334,22 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect); 78111@@ -288,6 +338,22 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect);
77048 #define __cold 78112 #define __cold
77049 #endif 78113 #endif
77050 78114
@@ -77067,7 +78131,7 @@ index 92669cd..cc564c0 100644
77067 /* Simple shorthand for a section definition */ 78131 /* Simple shorthand for a section definition */
77068 #ifndef __section 78132 #ifndef __section
77069 # define __section(S) __attribute__ ((__section__(#S))) 78133 # define __section(S) __attribute__ ((__section__(#S)))
77070@@ -349,7 +415,8 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect); 78134@@ -362,7 +428,8 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect);
77071 * use is to mediate communication between process-level code and irq/NMI 78135 * use is to mediate communication between process-level code and irq/NMI
77072 * handlers, all running on the same CPU. 78136 * handlers, all running on the same CPU.
77073 */ 78137 */
@@ -77118,10 +78182,10 @@ index 34025df..d94bbbc 100644
77118 /* 78182 /*
77119 * Users often need to create attribute structures for their configurable 78183 * Users often need to create attribute structures for their configurable
77120diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h 78184diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h
77121index dc196bb..c55a50f 100644 78185index 4d89e0e..5281847 100644
77122--- a/include/linux/cpufreq.h 78186--- a/include/linux/cpufreq.h
77123+++ b/include/linux/cpufreq.h 78187+++ b/include/linux/cpufreq.h
77124@@ -189,6 +189,7 @@ struct global_attr { 78188@@ -191,6 +191,7 @@ struct global_attr {
77125 ssize_t (*store)(struct kobject *a, struct attribute *b, 78189 ssize_t (*store)(struct kobject *a, struct attribute *b,
77126 const char *c, size_t count); 78190 const char *c, size_t count);
77127 }; 78191 };
@@ -77129,10 +78193,10 @@ index dc196bb..c55a50f 100644
77129 78193
77130 #define define_one_global_ro(_name) \ 78194 #define define_one_global_ro(_name) \
77131 static struct global_attr _name = \ 78195 static struct global_attr _name = \
77132@@ -225,7 +226,7 @@ struct cpufreq_driver { 78196@@ -232,7 +233,7 @@ struct cpufreq_driver {
77133 int (*suspend) (struct cpufreq_policy *policy); 78197 bool boost_supported;
77134 int (*resume) (struct cpufreq_policy *policy); 78198 bool boost_enabled;
77135 struct freq_attr **attr; 78199 int (*set_boost) (int state);
77136-}; 78200-};
77137+} __do_const; 78201+} __do_const;
77138 78202
@@ -77214,7 +78278,7 @@ index d08e4d2..95fad61 100644
77214 78278
77215 /** 78279 /**
77216diff --git a/include/linux/cred.h b/include/linux/cred.h 78280diff --git a/include/linux/cred.h b/include/linux/cred.h
77217index 04421e8..117e17a 100644 78281index 04421e8..a85afd4 100644
77218--- a/include/linux/cred.h 78282--- a/include/linux/cred.h
77219+++ b/include/linux/cred.h 78283+++ b/include/linux/cred.h
77220@@ -35,7 +35,7 @@ struct group_info { 78284@@ -35,7 +35,7 @@ struct group_info {
@@ -77245,6 +78309,14 @@ index 04421e8..117e17a 100644
77245 #endif 78309 #endif
77246 78310
77247 /** 78311 /**
78312@@ -322,6 +325,7 @@ static inline void put_cred(const struct cred *_cred)
78313
78314 #define task_uid(task) (task_cred_xxx((task), uid))
78315 #define task_euid(task) (task_cred_xxx((task), euid))
78316+#define task_securebits(task) (task_cred_xxx((task), securebits))
78317
78318 #define current_cred_xxx(xxx) \
78319 ({ \
77248diff --git a/include/linux/crypto.h b/include/linux/crypto.h 78320diff --git a/include/linux/crypto.h b/include/linux/crypto.h
77249index b92eadf..b4ecdc1 100644 78321index b92eadf..b4ecdc1 100644
77250--- a/include/linux/crypto.h 78322--- a/include/linux/crypto.h
@@ -77376,10 +78448,10 @@ index fd4aee2..1f28db9 100644
77376 #define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1)) 78448 #define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1))
77377 78449
77378diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h 78450diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h
77379index 41cf0c3..f3b771c 100644 78451index c5c92d5..6a5c2b2 100644
77380--- a/include/linux/dmaengine.h 78452--- a/include/linux/dmaengine.h
77381+++ b/include/linux/dmaengine.h 78453+++ b/include/linux/dmaengine.h
77382@@ -1114,9 +1114,9 @@ struct dma_pinned_list { 78454@@ -1150,9 +1150,9 @@ struct dma_pinned_list {
77383 struct dma_pinned_list *dma_pin_iovec_pages(struct iovec *iov, size_t len); 78455 struct dma_pinned_list *dma_pin_iovec_pages(struct iovec *iov, size_t len);
77384 void dma_unpin_iovec_pages(struct dma_pinned_list* pinned_list); 78456 void dma_unpin_iovec_pages(struct dma_pinned_list* pinned_list);
77385 78457
@@ -77392,10 +78464,10 @@ index 41cf0c3..f3b771c 100644
77392 unsigned int offset, size_t len); 78464 unsigned int offset, size_t len);
77393 78465
77394diff --git a/include/linux/efi.h b/include/linux/efi.h 78466diff --git a/include/linux/efi.h b/include/linux/efi.h
77395index 11ce678..7b8c69c 100644 78467index 0a819e7..8ed47f1 100644
77396--- a/include/linux/efi.h 78468--- a/include/linux/efi.h
77397+++ b/include/linux/efi.h 78469+++ b/include/linux/efi.h
77398@@ -764,6 +764,7 @@ struct efivar_operations { 78470@@ -768,6 +768,7 @@ struct efivar_operations {
77399 efi_set_variable_t *set_variable; 78471 efi_set_variable_t *set_variable;
77400 efi_query_variable_store_t *query_variable_store; 78472 efi_query_variable_store_t *query_variable_store;
77401 }; 78473 };
@@ -77456,7 +78528,7 @@ index 21c59af..6057a03 100644
77456 78528
77457 /** 78529 /**
77458diff --git a/include/linux/fb.h b/include/linux/fb.h 78530diff --git a/include/linux/fb.h b/include/linux/fb.h
77459index 70c4836..ff3daec 100644 78531index fe6ac95..898d41d 100644
77460--- a/include/linux/fb.h 78532--- a/include/linux/fb.h
77461+++ b/include/linux/fb.h 78533+++ b/include/linux/fb.h
77462@@ -304,7 +304,7 @@ struct fb_ops { 78534@@ -304,7 +304,7 @@ struct fb_ops {
@@ -77469,10 +78541,10 @@ index 70c4836..ff3daec 100644
77469 #ifdef CONFIG_FB_TILEBLITTING 78541 #ifdef CONFIG_FB_TILEBLITTING
77470 #define FB_TILE_CURSOR_NONE 0 78542 #define FB_TILE_CURSOR_NONE 0
77471diff --git a/include/linux/fdtable.h b/include/linux/fdtable.h 78543diff --git a/include/linux/fdtable.h b/include/linux/fdtable.h
77472index 085197b..0fa6f0b 100644 78544index 70e8e21..1939916 100644
77473--- a/include/linux/fdtable.h 78545--- a/include/linux/fdtable.h
77474+++ b/include/linux/fdtable.h 78546+++ b/include/linux/fdtable.h
77475@@ -95,7 +95,7 @@ struct files_struct *get_files_struct(struct task_struct *); 78547@@ -102,7 +102,7 @@ struct files_struct *get_files_struct(struct task_struct *);
77476 void put_files_struct(struct files_struct *fs); 78548 void put_files_struct(struct files_struct *fs);
77477 void reset_files_struct(struct files_struct *); 78549 void reset_files_struct(struct files_struct *);
77478 int unshare_files(struct files_struct **); 78550 int unshare_files(struct files_struct **);
@@ -77495,10 +78567,10 @@ index 8293262..2b3b8bd 100644
77495 extern bool frontswap_enabled; 78567 extern bool frontswap_enabled;
77496 extern struct frontswap_ops * 78568 extern struct frontswap_ops *
77497diff --git a/include/linux/fs.h b/include/linux/fs.h 78569diff --git a/include/linux/fs.h b/include/linux/fs.h
77498index 121f11f..0f2a863 100644 78570index 23b2a35..8764ab7 100644
77499--- a/include/linux/fs.h 78571--- a/include/linux/fs.h
77500+++ b/include/linux/fs.h 78572+++ b/include/linux/fs.h
77501@@ -423,7 +423,7 @@ struct address_space { 78573@@ -426,7 +426,7 @@ struct address_space {
77502 spinlock_t private_lock; /* for use by the address_space */ 78574 spinlock_t private_lock; /* for use by the address_space */
77503 struct list_head private_list; /* ditto */ 78575 struct list_head private_list; /* ditto */
77504 void *private_data; /* ditto */ 78576 void *private_data; /* ditto */
@@ -77507,7 +78579,7 @@ index 121f11f..0f2a863 100644
77507 /* 78579 /*
77508 * On most architectures that alignment is already the case; but 78580 * On most architectures that alignment is already the case; but
77509 * must be enforced here for CRIS, to let the least significant bit 78581 * must be enforced here for CRIS, to let the least significant bit
77510@@ -466,7 +466,7 @@ struct block_device { 78582@@ -469,7 +469,7 @@ struct block_device {
77511 int bd_fsfreeze_count; 78583 int bd_fsfreeze_count;
77512 /* Mutex for freeze */ 78584 /* Mutex for freeze */
77513 struct mutex bd_fsfreeze_mutex; 78585 struct mutex bd_fsfreeze_mutex;
@@ -77516,7 +78588,7 @@ index 121f11f..0f2a863 100644
77516 78588
77517 /* 78589 /*
77518 * Radix-tree tags, for tagging dirty and writeback pages within the pagecache 78590 * Radix-tree tags, for tagging dirty and writeback pages within the pagecache
77519@@ -610,7 +610,7 @@ struct inode { 78591@@ -613,7 +613,7 @@ struct inode {
77520 atomic_t i_readcount; /* struct files open RO */ 78592 atomic_t i_readcount; /* struct files open RO */
77521 #endif 78593 #endif
77522 void *i_private; /* fs or device private pointer */ 78594 void *i_private; /* fs or device private pointer */
@@ -77525,16 +78597,16 @@ index 121f11f..0f2a863 100644
77525 78597
77526 static inline int inode_unhashed(struct inode *inode) 78598 static inline int inode_unhashed(struct inode *inode)
77527 { 78599 {
77528@@ -808,7 +808,7 @@ struct file { 78600@@ -812,7 +812,7 @@ struct file {
77529 #ifdef CONFIG_DEBUG_WRITECOUNT 78601 #ifdef CONFIG_DEBUG_WRITECOUNT
77530 unsigned long f_mnt_write_state; 78602 unsigned long f_mnt_write_state;
77531 #endif 78603 #endif
77532-}; 78604-} __attribute__((aligned(4))); /* lest something weird decides that 2 is OK */
77533+} __randomize_layout; 78605+} __attribute__((aligned(4))) __randomize_layout; /* lest something weird decides that 2 is OK */
77534 78606
77535 struct file_handle { 78607 struct file_handle {
77536 __u32 handle_bytes; 78608 __u32 handle_bytes;
77537@@ -978,7 +978,7 @@ struct file_lock { 78609@@ -982,7 +982,7 @@ struct file_lock {
77538 int state; /* state of grant or error if -ve */ 78610 int state; /* state of grant or error if -ve */
77539 } afs; 78611 } afs;
77540 } fl_u; 78612 } fl_u;
@@ -77543,7 +78615,7 @@ index 121f11f..0f2a863 100644
77543 78615
77544 /* The following constant reflects the upper bound of the file/locking space */ 78616 /* The following constant reflects the upper bound of the file/locking space */
77545 #ifndef OFFSET_MAX 78617 #ifndef OFFSET_MAX
77546@@ -1325,7 +1325,7 @@ struct super_block { 78618@@ -1329,7 +1329,7 @@ struct super_block {
77547 struct list_lru s_dentry_lru ____cacheline_aligned_in_smp; 78619 struct list_lru s_dentry_lru ____cacheline_aligned_in_smp;
77548 struct list_lru s_inode_lru ____cacheline_aligned_in_smp; 78620 struct list_lru s_inode_lru ____cacheline_aligned_in_smp;
77549 struct rcu_head rcu; 78621 struct rcu_head rcu;
@@ -77552,7 +78624,7 @@ index 121f11f..0f2a863 100644
77552 78624
77553 extern struct timespec current_fs_time(struct super_block *sb); 78625 extern struct timespec current_fs_time(struct super_block *sb);
77554 78626
77555@@ -1547,7 +1547,8 @@ struct file_operations { 78627@@ -1551,7 +1551,8 @@ struct file_operations {
77556 long (*fallocate)(struct file *file, int mode, loff_t offset, 78628 long (*fallocate)(struct file *file, int mode, loff_t offset,
77557 loff_t len); 78629 loff_t len);
77558 int (*show_fdinfo)(struct seq_file *m, struct file *f); 78630 int (*show_fdinfo)(struct seq_file *m, struct file *f);
@@ -77562,7 +78634,7 @@ index 121f11f..0f2a863 100644
77562 78634
77563 struct inode_operations { 78635 struct inode_operations {
77564 struct dentry * (*lookup) (struct inode *,struct dentry *, unsigned int); 78636 struct dentry * (*lookup) (struct inode *,struct dentry *, unsigned int);
77565@@ -2808,4 +2809,14 @@ static inline bool dir_relax(struct inode *inode) 78637@@ -2820,4 +2821,14 @@ static inline bool dir_relax(struct inode *inode)
77566 return !IS_DEADDIR(inode); 78638 return !IS_DEADDIR(inode);
77567 } 78639 }
77568 78640
@@ -77701,10 +78773,10 @@ index c0894dd..2fbf10c 100644
77701 }; 78773 };
77702 78774
77703diff --git a/include/linux/gfp.h b/include/linux/gfp.h 78775diff --git a/include/linux/gfp.h b/include/linux/gfp.h
77704index 9b4dd49..61fd41d 100644 78776index 39b81dc..819dc51 100644
77705--- a/include/linux/gfp.h 78777--- a/include/linux/gfp.h
77706+++ b/include/linux/gfp.h 78778+++ b/include/linux/gfp.h
77707@@ -35,6 +35,13 @@ struct vm_area_struct; 78779@@ -36,6 +36,13 @@ struct vm_area_struct;
77708 #define ___GFP_NO_KSWAPD 0x400000u 78780 #define ___GFP_NO_KSWAPD 0x400000u
77709 #define ___GFP_OTHER_NODE 0x800000u 78781 #define ___GFP_OTHER_NODE 0x800000u
77710 #define ___GFP_WRITE 0x1000000u 78782 #define ___GFP_WRITE 0x1000000u
@@ -77718,7 +78790,7 @@ index 9b4dd49..61fd41d 100644
77718 /* If the above are modified, __GFP_BITS_SHIFT may need updating */ 78790 /* If the above are modified, __GFP_BITS_SHIFT may need updating */
77719 78791
77720 /* 78792 /*
77721@@ -92,6 +99,7 @@ struct vm_area_struct; 78793@@ -93,6 +100,7 @@ struct vm_area_struct;
77722 #define __GFP_OTHER_NODE ((__force gfp_t)___GFP_OTHER_NODE) /* On behalf of other node */ 78794 #define __GFP_OTHER_NODE ((__force gfp_t)___GFP_OTHER_NODE) /* On behalf of other node */
77723 #define __GFP_KMEMCG ((__force gfp_t)___GFP_KMEMCG) /* Allocation comes from a memcg-accounted resource */ 78795 #define __GFP_KMEMCG ((__force gfp_t)___GFP_KMEMCG) /* Allocation comes from a memcg-accounted resource */
77724 #define __GFP_WRITE ((__force gfp_t)___GFP_WRITE) /* Allocator intends to dirty page */ 78796 #define __GFP_WRITE ((__force gfp_t)___GFP_WRITE) /* Allocator intends to dirty page */
@@ -77726,7 +78798,7 @@ index 9b4dd49..61fd41d 100644
77726 78798
77727 /* 78799 /*
77728 * This may seem redundant, but it's a way of annotating false positives vs. 78800 * This may seem redundant, but it's a way of annotating false positives vs.
77729@@ -99,7 +107,7 @@ struct vm_area_struct; 78801@@ -100,7 +108,7 @@ struct vm_area_struct;
77730 */ 78802 */
77731 #define __GFP_NOTRACK_FALSE_POSITIVE (__GFP_NOTRACK) 78803 #define __GFP_NOTRACK_FALSE_POSITIVE (__GFP_NOTRACK)
77732 78804
@@ -77735,7 +78807,7 @@ index 9b4dd49..61fd41d 100644
77735 #define __GFP_BITS_MASK ((__force gfp_t)((1 << __GFP_BITS_SHIFT) - 1)) 78807 #define __GFP_BITS_MASK ((__force gfp_t)((1 << __GFP_BITS_SHIFT) - 1))
77736 78808
77737 /* This equals 0, but use constants in case they ever change */ 78809 /* This equals 0, but use constants in case they ever change */
77738@@ -153,6 +161,8 @@ struct vm_area_struct; 78810@@ -158,6 +166,8 @@ struct vm_area_struct;
77739 /* 4GB DMA on some platforms */ 78811 /* 4GB DMA on some platforms */
77740 #define GFP_DMA32 __GFP_DMA32 78812 #define GFP_DMA32 __GFP_DMA32
77741 78813
@@ -78772,10 +79844,10 @@ index 0000000..ba93581
78772+#define GR_MSRWRITE_MSG "denied write to CPU MSR by " 79844+#define GR_MSRWRITE_MSG "denied write to CPU MSR by "
78773diff --git a/include/linux/grsecurity.h b/include/linux/grsecurity.h 79845diff --git a/include/linux/grsecurity.h b/include/linux/grsecurity.h
78774new file mode 100644 79846new file mode 100644
78775index 0000000..8108301 79847index 0000000..f2d8c6c
78776--- /dev/null 79848--- /dev/null
78777+++ b/include/linux/grsecurity.h 79849+++ b/include/linux/grsecurity.h
78778@@ -0,0 +1,246 @@ 79850@@ -0,0 +1,248 @@
78779+#ifndef GR_SECURITY_H 79851+#ifndef GR_SECURITY_H
78780+#define GR_SECURITY_H 79852+#define GR_SECURITY_H
78781+#include <linux/fs.h> 79853+#include <linux/fs.h>
@@ -78805,6 +79877,8 @@ index 0000000..8108301
78805+ 79877+
78806+char gr_roletype_to_char(void); 79878+char gr_roletype_to_char(void);
78807+ 79879+
79880+int gr_proc_is_restricted(void);
79881+
78808+int gr_acl_enable_at_secure(void); 79882+int gr_acl_enable_at_secure(void);
78809+ 79883+
78810+int gr_check_user_change(kuid_t real, kuid_t effective, kuid_t fs); 79884+int gr_check_user_change(kuid_t real, kuid_t effective, kuid_t fs);
@@ -79047,6 +80121,19 @@ index 0000000..e7ffaaf
79047+ const int protocol); 80121+ const int protocol);
79048+ 80122+
79049+#endif 80123+#endif
80124diff --git a/include/linux/hash.h b/include/linux/hash.h
80125index bd1754c..8240892 100644
80126--- a/include/linux/hash.h
80127+++ b/include/linux/hash.h
80128@@ -83,7 +83,7 @@ static inline u32 hash32_ptr(const void *ptr)
80129 struct fast_hash_ops {
80130 u32 (*hash)(const void *data, u32 len, u32 seed);
80131 u32 (*hash2)(const u32 *data, u32 len, u32 seed);
80132-};
80133+} __no_const;
80134
80135 /**
80136 * arch_fast_hash - Caclulates a hash over a given buffer that can have
79050diff --git a/include/linux/highmem.h b/include/linux/highmem.h 80137diff --git a/include/linux/highmem.h b/include/linux/highmem.h
79051index 7fb31da..08b5114 100644 80138index 7fb31da..08b5114 100644
79052--- a/include/linux/highmem.h 80139--- a/include/linux/highmem.h
@@ -79095,10 +80182,10 @@ index 1c7b89a..7dda400 100644
79095 container_of(_dev_attr, struct sensor_device_attribute_2, dev_attr) 80182 container_of(_dev_attr, struct sensor_device_attribute_2, dev_attr)
79096 80183
79097diff --git a/include/linux/i2c.h b/include/linux/i2c.h 80184diff --git a/include/linux/i2c.h b/include/linux/i2c.h
79098index d9c8dbd3..def6e5a 100644 80185index deddeb8..bcaf62d 100644
79099--- a/include/linux/i2c.h 80186--- a/include/linux/i2c.h
79100+++ b/include/linux/i2c.h 80187+++ b/include/linux/i2c.h
79101@@ -364,6 +364,7 @@ struct i2c_algorithm { 80188@@ -378,6 +378,7 @@ struct i2c_algorithm {
79102 /* To determine what the adapter supports */ 80189 /* To determine what the adapter supports */
79103 u32 (*functionality) (struct i2c_adapter *); 80190 u32 (*functionality) (struct i2c_adapter *);
79104 }; 80191 };
@@ -79133,7 +80220,7 @@ index aff7ad8..3942bbd 100644
79133 extern int register_pppox_proto(int proto_num, const struct pppox_proto *pp); 80220 extern int register_pppox_proto(int proto_num, const struct pppox_proto *pp);
79134 extern void unregister_pppox_proto(int proto_num); 80221 extern void unregister_pppox_proto(int proto_num);
79135diff --git a/include/linux/init.h b/include/linux/init.h 80222diff --git a/include/linux/init.h b/include/linux/init.h
79136index 8e68a64..3f977a0 100644 80223index e168880..d9b489d 100644
79137--- a/include/linux/init.h 80224--- a/include/linux/init.h
79138+++ b/include/linux/init.h 80225+++ b/include/linux/init.h
79139@@ -37,9 +37,17 @@ 80226@@ -37,9 +37,17 @@
@@ -79165,10 +80252,10 @@ index 8e68a64..3f977a0 100644
79165 #define __meminitconst __constsection(.meminit.rodata) 80252 #define __meminitconst __constsection(.meminit.rodata)
79166 #define __memexit __section(.memexit.text) __exitused __cold notrace 80253 #define __memexit __section(.memexit.text) __exitused __cold notrace
79167diff --git a/include/linux/init_task.h b/include/linux/init_task.h 80254diff --git a/include/linux/init_task.h b/include/linux/init_task.h
79168index b0ed422..d79ea23 100644 80255index 6df7f9f..d0bf699 100644
79169--- a/include/linux/init_task.h 80256--- a/include/linux/init_task.h
79170+++ b/include/linux/init_task.h 80257+++ b/include/linux/init_task.h
79171@@ -154,6 +154,12 @@ extern struct task_group root_task_group; 80258@@ -156,6 +156,12 @@ extern struct task_group root_task_group;
79172 80259
79173 #define INIT_TASK_COMM "swapper" 80260 #define INIT_TASK_COMM "swapper"
79174 80261
@@ -79178,10 +80265,10 @@ index b0ed422..d79ea23 100644
79178+#define INIT_TASK_THREAD_INFO 80265+#define INIT_TASK_THREAD_INFO
79179+#endif 80266+#endif
79180+ 80267+
79181 /* 80268 #ifdef CONFIG_RT_MUTEXES
79182 * INIT_TASK is used to set up the first task table, touch at 80269 # define INIT_RT_MUTEXES(tsk) \
79183 * your own risk!. Base=0, limit=0x1fffff (=2MB) 80270 .pi_waiters = RB_ROOT, \
79184@@ -193,6 +199,7 @@ extern struct task_group root_task_group; 80271@@ -203,6 +209,7 @@ extern struct task_group root_task_group;
79185 RCU_POINTER_INITIALIZER(cred, &init_cred), \ 80272 RCU_POINTER_INITIALIZER(cred, &init_cred), \
79186 .comm = INIT_TASK_COMM, \ 80273 .comm = INIT_TASK_COMM, \
79187 .thread = INIT_THREAD, \ 80274 .thread = INIT_THREAD, \
@@ -79190,19 +80277,10 @@ index b0ed422..d79ea23 100644
79190 .files = &init_files, \ 80277 .files = &init_files, \
79191 .signal = &init_signals, \ 80278 .signal = &init_signals, \
79192diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h 80279diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
79193index db43b58..5d5084b 100644 80280index a2678d3..e411b1b 100644
79194--- a/include/linux/interrupt.h 80281--- a/include/linux/interrupt.h
79195+++ b/include/linux/interrupt.h 80282+++ b/include/linux/interrupt.h
79196@@ -360,7 +360,7 @@ enum 80283@@ -373,8 +373,8 @@ extern const char * const softirq_to_name[NR_SOFTIRQS];
79197 /* map softirq index to softirq name. update 'softirq_to_name' in
79198 * kernel/softirq.c when adding a new softirq.
79199 */
79200-extern char *softirq_to_name[NR_SOFTIRQS];
79201+extern const char * const softirq_to_name[NR_SOFTIRQS];
79202
79203 /* softirq mask and active fields moved to irq_cpustat_t in
79204 * asm/hardirq.h to get better cache usage. KAO
79205@@ -368,8 +368,8 @@ extern char *softirq_to_name[NR_SOFTIRQS];
79206 80284
79207 struct softirq_action 80285 struct softirq_action
79208 { 80286 {
@@ -79213,7 +80291,7 @@ index db43b58..5d5084b 100644
79213 80291
79214 asmlinkage void do_softirq(void); 80292 asmlinkage void do_softirq(void);
79215 asmlinkage void __do_softirq(void); 80293 asmlinkage void __do_softirq(void);
79216@@ -383,7 +383,7 @@ static inline void do_softirq_own_stack(void) 80294@@ -388,7 +388,7 @@ static inline void do_softirq_own_stack(void)
79217 } 80295 }
79218 #endif 80296 #endif
79219 80297
@@ -79223,10 +80301,10 @@ index db43b58..5d5084b 100644
79223 extern void __raise_softirq_irqoff(unsigned int nr); 80301 extern void __raise_softirq_irqoff(unsigned int nr);
79224 80302
79225diff --git a/include/linux/iommu.h b/include/linux/iommu.h 80303diff --git a/include/linux/iommu.h b/include/linux/iommu.h
79226index a444c79..8c41ea9 100644 80304index b96a5b2..2732d1c 100644
79227--- a/include/linux/iommu.h 80305--- a/include/linux/iommu.h
79228+++ b/include/linux/iommu.h 80306+++ b/include/linux/iommu.h
79229@@ -130,7 +130,7 @@ struct iommu_ops { 80307@@ -131,7 +131,7 @@ struct iommu_ops {
79230 u32 (*domain_get_windows)(struct iommu_domain *domain); 80308 u32 (*domain_get_windows)(struct iommu_domain *domain);
79231 80309
79232 unsigned long pgsize_bitmap; 80310 unsigned long pgsize_bitmap;
@@ -79249,10 +80327,10 @@ index 89b7c24..382af74 100644
79249 return res->end - res->start + 1; 80327 return res->end - res->start + 1;
79250 } 80328 }
79251diff --git a/include/linux/ipc_namespace.h b/include/linux/ipc_namespace.h 80329diff --git a/include/linux/ipc_namespace.h b/include/linux/ipc_namespace.h
79252index d6ad91f..f10f279 100644 80330index 35e7eca..6afb7ad 100644
79253--- a/include/linux/ipc_namespace.h 80331--- a/include/linux/ipc_namespace.h
79254+++ b/include/linux/ipc_namespace.h 80332+++ b/include/linux/ipc_namespace.h
79255@@ -70,7 +70,7 @@ struct ipc_namespace { 80333@@ -69,7 +69,7 @@ struct ipc_namespace {
79256 struct user_namespace *user_ns; 80334 struct user_namespace *user_ns;
79257 80335
79258 unsigned int proc_inum; 80336 unsigned int proc_inum;
@@ -79276,10 +80354,10 @@ index 7dc1003..407327b 100644
79276 /* 80354 /*
79277 * irq_chip specific flags 80355 * irq_chip specific flags
79278diff --git a/include/linux/irqchip/arm-gic.h b/include/linux/irqchip/arm-gic.h 80356diff --git a/include/linux/irqchip/arm-gic.h b/include/linux/irqchip/arm-gic.h
79279index cac496b..ffa0567 100644 80357index 0ceb389..eed3fb8 100644
79280--- a/include/linux/irqchip/arm-gic.h 80358--- a/include/linux/irqchip/arm-gic.h
79281+++ b/include/linux/irqchip/arm-gic.h 80359+++ b/include/linux/irqchip/arm-gic.h
79282@@ -61,9 +61,11 @@ 80360@@ -73,9 +73,11 @@
79283 80361
79284 #ifndef __ASSEMBLY__ 80362 #ifndef __ASSEMBLY__
79285 80363
@@ -79293,26 +80371,33 @@ index cac496b..ffa0567 100644
79293 void gic_init_bases(unsigned int, int, void __iomem *, void __iomem *, 80371 void gic_init_bases(unsigned int, int, void __iomem *, void __iomem *,
79294 u32 offset, struct device_node *); 80372 u32 offset, struct device_node *);
79295diff --git a/include/linux/jiffies.h b/include/linux/jiffies.h 80373diff --git a/include/linux/jiffies.h b/include/linux/jiffies.h
79296index d235e88..8ccbe74 100644 80374index 1f44466..b481806 100644
79297--- a/include/linux/jiffies.h 80375--- a/include/linux/jiffies.h
79298+++ b/include/linux/jiffies.h 80376+++ b/include/linux/jiffies.h
79299@@ -292,14 +292,14 @@ extern unsigned long preset_lpj; 80377@@ -292,20 +292,20 @@ extern unsigned long preset_lpj;
79300 /* 80378 /*
79301 * Convert various time units to each other: 80379 * Convert various time units to each other:
79302 */ 80380 */
79303-extern unsigned int jiffies_to_msecs(const unsigned long j); 80381-extern unsigned int jiffies_to_msecs(const unsigned long j);
79304-extern unsigned int jiffies_to_usecs(const unsigned long j); 80382-extern unsigned int jiffies_to_usecs(const unsigned long j);
79305-extern unsigned long msecs_to_jiffies(const unsigned int m);
79306-extern unsigned long usecs_to_jiffies(const unsigned int u);
79307-extern unsigned long timespec_to_jiffies(const struct timespec *value);
79308+extern unsigned int jiffies_to_msecs(const unsigned long j) __intentional_overflow(-1); 80383+extern unsigned int jiffies_to_msecs(const unsigned long j) __intentional_overflow(-1);
79309+extern unsigned int jiffies_to_usecs(const unsigned long j) __intentional_overflow(-1); 80384+extern unsigned int jiffies_to_usecs(const unsigned long j) __intentional_overflow(-1);
80385
80386-static inline u64 jiffies_to_nsecs(const unsigned long j)
80387+static inline u64 __intentional_overflow(-1) jiffies_to_nsecs(const unsigned long j)
80388 {
80389 return (u64)jiffies_to_usecs(j) * NSEC_PER_USEC;
80390 }
80391
80392-extern unsigned long msecs_to_jiffies(const unsigned int m);
80393-extern unsigned long usecs_to_jiffies(const unsigned int u);
79310+extern unsigned long msecs_to_jiffies(const unsigned int m) __intentional_overflow(-1); 80394+extern unsigned long msecs_to_jiffies(const unsigned int m) __intentional_overflow(-1);
79311+extern unsigned long usecs_to_jiffies(const unsigned int u) __intentional_overflow(-1); 80395+extern unsigned long usecs_to_jiffies(const unsigned int u) __intentional_overflow(-1);
79312+extern unsigned long timespec_to_jiffies(const struct timespec *value) __intentional_overflow(-1); 80396 extern unsigned long timespec_to_jiffies(const struct timespec *value);
79313 extern void jiffies_to_timespec(const unsigned long jiffies, 80397 extern void jiffies_to_timespec(const unsigned long jiffies,
79314 struct timespec *value); 80398- struct timespec *value);
79315-extern unsigned long timeval_to_jiffies(const struct timeval *value); 80399-extern unsigned long timeval_to_jiffies(const struct timeval *value);
80400+ struct timespec *value) __intentional_overflow(-1);
79316+extern unsigned long timeval_to_jiffies(const struct timeval *value) __intentional_overflow(-1); 80401+extern unsigned long timeval_to_jiffies(const struct timeval *value) __intentional_overflow(-1);
79317 extern void jiffies_to_timeval(const unsigned long jiffies, 80402 extern void jiffies_to_timeval(const unsigned long jiffies,
79318 struct timeval *value); 80403 struct timeval *value);
@@ -79367,7 +80452,7 @@ index a74c3a8..28d3f21 100644
79367 extern struct key_type key_type_keyring; 80452 extern struct key_type key_type_keyring;
79368 80453
79369diff --git a/include/linux/kgdb.h b/include/linux/kgdb.h 80454diff --git a/include/linux/kgdb.h b/include/linux/kgdb.h
79370index dfb4f2f..7927e62 100644 80455index 6b06d37..c134867 100644
79371--- a/include/linux/kgdb.h 80456--- a/include/linux/kgdb.h
79372+++ b/include/linux/kgdb.h 80457+++ b/include/linux/kgdb.h
79373@@ -52,7 +52,7 @@ extern int kgdb_connected; 80458@@ -52,7 +52,7 @@ extern int kgdb_connected;
@@ -79421,7 +80506,7 @@ index 0555cc6..40116ce 100644
79421 char **envp; 80506 char **envp;
79422 int wait; 80507 int wait;
79423diff --git a/include/linux/kobject.h b/include/linux/kobject.h 80508diff --git a/include/linux/kobject.h b/include/linux/kobject.h
79424index e7ba650..0af3acb 100644 80509index 926afb6..58dd6e5 100644
79425--- a/include/linux/kobject.h 80510--- a/include/linux/kobject.h
79426+++ b/include/linux/kobject.h 80511+++ b/include/linux/kobject.h
79427@@ -116,7 +116,7 @@ struct kobj_type { 80512@@ -116,7 +116,7 @@ struct kobj_type {
@@ -79477,10 +80562,10 @@ index 484604d..0f6c5b6 100644
79477 if (atomic_sub_and_test((int) count, &kref->refcount)) { 80562 if (atomic_sub_and_test((int) count, &kref->refcount)) {
79478 release(kref); 80563 release(kref);
79479diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h 80564diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
79480index 9523d2a..16c0424 100644 80565index b8e9a43..632678d 100644
79481--- a/include/linux/kvm_host.h 80566--- a/include/linux/kvm_host.h
79482+++ b/include/linux/kvm_host.h 80567+++ b/include/linux/kvm_host.h
79483@@ -457,7 +457,7 @@ static inline void kvm_irqfd_exit(void) 80568@@ -455,7 +455,7 @@ static inline void kvm_irqfd_exit(void)
79484 { 80569 {
79485 } 80570 }
79486 #endif 80571 #endif
@@ -79489,7 +80574,7 @@ index 9523d2a..16c0424 100644
79489 struct module *module); 80574 struct module *module);
79490 void kvm_exit(void); 80575 void kvm_exit(void);
79491 80576
79492@@ -632,7 +632,7 @@ int kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu, 80577@@ -621,7 +621,7 @@ int kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu,
79493 struct kvm_guest_debug *dbg); 80578 struct kvm_guest_debug *dbg);
79494 int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run); 80579 int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run);
79495 80580
@@ -79499,10 +80584,10 @@ index 9523d2a..16c0424 100644
79499 80584
79500 int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu); 80585 int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu);
79501diff --git a/include/linux/libata.h b/include/linux/libata.h 80586diff --git a/include/linux/libata.h b/include/linux/libata.h
79502index bec6dbe..2873d64 100644 80587index 3fee55e..42565b7 100644
79503--- a/include/linux/libata.h 80588--- a/include/linux/libata.h
79504+++ b/include/linux/libata.h 80589+++ b/include/linux/libata.h
79505@@ -975,7 +975,7 @@ struct ata_port_operations { 80590@@ -976,7 +976,7 @@ struct ata_port_operations {
79506 * fields must be pointers. 80591 * fields must be pointers.
79507 */ 80592 */
79508 const struct ata_port_operations *inherits; 80593 const struct ata_port_operations *inherits;
@@ -79512,10 +80597,10 @@ index bec6dbe..2873d64 100644
79512 struct ata_port_info { 80597 struct ata_port_info {
79513 unsigned long flags; 80598 unsigned long flags;
79514diff --git a/include/linux/linkage.h b/include/linux/linkage.h 80599diff --git a/include/linux/linkage.h b/include/linux/linkage.h
79515index d3e8ad2..a949f68 100644 80600index a6a42dd..6c5ebce 100644
79516--- a/include/linux/linkage.h 80601--- a/include/linux/linkage.h
79517+++ b/include/linux/linkage.h 80602+++ b/include/linux/linkage.h
79518@@ -31,6 +31,7 @@ 80603@@ -36,6 +36,7 @@
79519 #endif 80604 #endif
79520 80605
79521 #define __page_aligned_data __section(.data..page_aligned) __aligned(PAGE_SIZE) 80606 #define __page_aligned_data __section(.data..page_aligned) __aligned(PAGE_SIZE)
@@ -79606,7 +80691,7 @@ index c45c089..298841c 100644
79606 u32 remainder; 80691 u32 remainder;
79607 return div_u64_rem(dividend, divisor, &remainder); 80692 return div_u64_rem(dividend, divisor, &remainder);
79608diff --git a/include/linux/mempolicy.h b/include/linux/mempolicy.h 80693diff --git a/include/linux/mempolicy.h b/include/linux/mempolicy.h
79609index 9fe426b..8148be6 100644 80694index 5f1ea75..5125ac5 100644
79610--- a/include/linux/mempolicy.h 80695--- a/include/linux/mempolicy.h
79611+++ b/include/linux/mempolicy.h 80696+++ b/include/linux/mempolicy.h
79612@@ -91,6 +91,10 @@ static inline struct mempolicy *mpol_dup(struct mempolicy *pol) 80697@@ -91,6 +91,10 @@ static inline struct mempolicy *mpol_dup(struct mempolicy *pol)
@@ -79620,7 +80705,7 @@ index 9fe426b..8148be6 100644
79620 80705
79621 static inline void mpol_get(struct mempolicy *pol) 80706 static inline void mpol_get(struct mempolicy *pol)
79622 { 80707 {
79623@@ -241,6 +245,9 @@ mpol_shared_policy_lookup(struct shared_policy *sp, unsigned long idx) 80708@@ -223,6 +227,9 @@ static inline void mpol_free_shared_policy(struct shared_policy *p)
79624 } 80709 }
79625 80710
79626 #define vma_policy(vma) NULL 80711 #define vma_policy(vma) NULL
@@ -79631,10 +80716,10 @@ index 9fe426b..8148be6 100644
79631 static inline int 80716 static inline int
79632 vma_dup_policy(struct vm_area_struct *src, struct vm_area_struct *dst) 80717 vma_dup_policy(struct vm_area_struct *src, struct vm_area_struct *dst)
79633diff --git a/include/linux/mm.h b/include/linux/mm.h 80718diff --git a/include/linux/mm.h b/include/linux/mm.h
79634index 0ab5439..2859c61 100644 80719index c1b7414..5ea2ad8 100644
79635--- a/include/linux/mm.h 80720--- a/include/linux/mm.h
79636+++ b/include/linux/mm.h 80721+++ b/include/linux/mm.h
79637@@ -117,6 +117,11 @@ extern unsigned int kobjsize(const void *objp); 80722@@ -127,6 +127,11 @@ extern unsigned int kobjsize(const void *objp);
79638 #define VM_HUGETLB 0x00400000 /* Huge TLB Page VM */ 80723 #define VM_HUGETLB 0x00400000 /* Huge TLB Page VM */
79639 #define VM_NONLINEAR 0x00800000 /* Is non-linear (remap_file_pages) */ 80724 #define VM_NONLINEAR 0x00800000 /* Is non-linear (remap_file_pages) */
79640 #define VM_ARCH_1 0x01000000 /* Architecture-specific flag */ 80725 #define VM_ARCH_1 0x01000000 /* Architecture-specific flag */
@@ -79646,7 +80731,7 @@ index 0ab5439..2859c61 100644
79646 #define VM_DONTDUMP 0x04000000 /* Do not include in the core dump */ 80731 #define VM_DONTDUMP 0x04000000 /* Do not include in the core dump */
79647 80732
79648 #ifdef CONFIG_MEM_SOFT_DIRTY 80733 #ifdef CONFIG_MEM_SOFT_DIRTY
79649@@ -219,8 +224,8 @@ struct vm_operations_struct { 80734@@ -229,8 +234,8 @@ struct vm_operations_struct {
79650 /* called by access_process_vm when get_user_pages() fails, typically 80735 /* called by access_process_vm when get_user_pages() fails, typically
79651 * for use by special VMAs that can switch between memory and hardware 80736 * for use by special VMAs that can switch between memory and hardware
79652 */ 80737 */
@@ -79657,7 +80742,7 @@ index 0ab5439..2859c61 100644
79657 #ifdef CONFIG_NUMA 80742 #ifdef CONFIG_NUMA
79658 /* 80743 /*
79659 * set_policy() op must add a reference to any non-NULL @new mempolicy 80744 * set_policy() op must add a reference to any non-NULL @new mempolicy
79660@@ -250,6 +255,7 @@ struct vm_operations_struct { 80745@@ -260,6 +265,7 @@ struct vm_operations_struct {
79661 int (*remap_pages)(struct vm_area_struct *vma, unsigned long addr, 80746 int (*remap_pages)(struct vm_area_struct *vma, unsigned long addr,
79662 unsigned long size, pgoff_t pgoff); 80747 unsigned long size, pgoff_t pgoff);
79663 }; 80748 };
@@ -79665,7 +80750,7 @@ index 0ab5439..2859c61 100644
79665 80750
79666 struct mmu_gather; 80751 struct mmu_gather;
79667 struct inode; 80752 struct inode;
79668@@ -1064,8 +1070,8 @@ int follow_pfn(struct vm_area_struct *vma, unsigned long address, 80753@@ -1112,8 +1118,8 @@ int follow_pfn(struct vm_area_struct *vma, unsigned long address,
79669 unsigned long *pfn); 80754 unsigned long *pfn);
79670 int follow_phys(struct vm_area_struct *vma, unsigned long address, 80755 int follow_phys(struct vm_area_struct *vma, unsigned long address,
79671 unsigned int flags, unsigned long *prot, resource_size_t *phys); 80756 unsigned int flags, unsigned long *prot, resource_size_t *phys);
@@ -79676,7 +80761,7 @@ index 0ab5439..2859c61 100644
79676 80761
79677 static inline void unmap_shared_mapping_range(struct address_space *mapping, 80762 static inline void unmap_shared_mapping_range(struct address_space *mapping,
79678 loff_t const holebegin, loff_t const holelen) 80763 loff_t const holebegin, loff_t const holelen)
79679@@ -1104,9 +1110,9 @@ static inline int fixup_user_fault(struct task_struct *tsk, 80764@@ -1152,9 +1158,9 @@ static inline int fixup_user_fault(struct task_struct *tsk,
79680 } 80765 }
79681 #endif 80766 #endif
79682 80767
@@ -79689,7 +80774,7 @@ index 0ab5439..2859c61 100644
79689 80774
79690 long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm, 80775 long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
79691 unsigned long start, unsigned long nr_pages, 80776 unsigned long start, unsigned long nr_pages,
79692@@ -1138,34 +1144,6 @@ int set_page_dirty(struct page *page); 80777@@ -1186,34 +1192,6 @@ int set_page_dirty(struct page *page);
79693 int set_page_dirty_lock(struct page *page); 80778 int set_page_dirty_lock(struct page *page);
79694 int clear_page_dirty_for_io(struct page *page); 80779 int clear_page_dirty_for_io(struct page *page);
79695 80780
@@ -79724,7 +80809,7 @@ index 0ab5439..2859c61 100644
79724 extern pid_t 80809 extern pid_t
79725 vm_is_stack(struct task_struct *task, struct vm_area_struct *vma, int in_group); 80810 vm_is_stack(struct task_struct *task, struct vm_area_struct *vma, int in_group);
79726 80811
79727@@ -1265,6 +1243,15 @@ static inline void sync_mm_rss(struct mm_struct *mm) 80812@@ -1313,6 +1291,15 @@ static inline void sync_mm_rss(struct mm_struct *mm)
79728 } 80813 }
79729 #endif 80814 #endif
79730 80815
@@ -79740,7 +80825,7 @@ index 0ab5439..2859c61 100644
79740 int vma_wants_writenotify(struct vm_area_struct *vma); 80825 int vma_wants_writenotify(struct vm_area_struct *vma);
79741 80826
79742 extern pte_t *__get_locked_pte(struct mm_struct *mm, unsigned long addr, 80827 extern pte_t *__get_locked_pte(struct mm_struct *mm, unsigned long addr,
79743@@ -1283,8 +1270,15 @@ static inline int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, 80828@@ -1331,8 +1318,15 @@ static inline int __pud_alloc(struct mm_struct *mm, pgd_t *pgd,
79744 { 80829 {
79745 return 0; 80830 return 0;
79746 } 80831 }
@@ -79756,7 +80841,7 @@ index 0ab5439..2859c61 100644
79756 #endif 80841 #endif
79757 80842
79758 #ifdef __PAGETABLE_PMD_FOLDED 80843 #ifdef __PAGETABLE_PMD_FOLDED
79759@@ -1293,8 +1287,15 @@ static inline int __pmd_alloc(struct mm_struct *mm, pud_t *pud, 80844@@ -1341,8 +1335,15 @@ static inline int __pmd_alloc(struct mm_struct *mm, pud_t *pud,
79760 { 80845 {
79761 return 0; 80846 return 0;
79762 } 80847 }
@@ -79772,7 +80857,7 @@ index 0ab5439..2859c61 100644
79772 #endif 80857 #endif
79773 80858
79774 int __pte_alloc(struct mm_struct *mm, struct vm_area_struct *vma, 80859 int __pte_alloc(struct mm_struct *mm, struct vm_area_struct *vma,
79775@@ -1312,11 +1313,23 @@ static inline pud_t *pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long a 80860@@ -1360,11 +1361,23 @@ static inline pud_t *pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long a
79776 NULL: pud_offset(pgd, address); 80861 NULL: pud_offset(pgd, address);
79777 } 80862 }
79778 80863
@@ -79796,7 +80881,7 @@ index 0ab5439..2859c61 100644
79796 #endif /* CONFIG_MMU && !__ARCH_HAS_4LEVEL_HACK */ 80881 #endif /* CONFIG_MMU && !__ARCH_HAS_4LEVEL_HACK */
79797 80882
79798 #if USE_SPLIT_PTE_PTLOCKS 80883 #if USE_SPLIT_PTE_PTLOCKS
79799@@ -1694,7 +1707,7 @@ extern int install_special_mapping(struct mm_struct *mm, 80884@@ -1754,7 +1767,7 @@ extern int install_special_mapping(struct mm_struct *mm,
79800 unsigned long addr, unsigned long len, 80885 unsigned long addr, unsigned long len,
79801 unsigned long flags, struct page **pages); 80886 unsigned long flags, struct page **pages);
79802 80887
@@ -79805,7 +80890,7 @@ index 0ab5439..2859c61 100644
79805 80890
79806 extern unsigned long mmap_region(struct file *file, unsigned long addr, 80891 extern unsigned long mmap_region(struct file *file, unsigned long addr,
79807 unsigned long len, vm_flags_t vm_flags, unsigned long pgoff); 80892 unsigned long len, vm_flags_t vm_flags, unsigned long pgoff);
79808@@ -1702,6 +1715,7 @@ extern unsigned long do_mmap_pgoff(struct file *file, unsigned long addr, 80893@@ -1762,6 +1775,7 @@ extern unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
79809 unsigned long len, unsigned long prot, unsigned long flags, 80894 unsigned long len, unsigned long prot, unsigned long flags,
79810 unsigned long pgoff, unsigned long *populate); 80895 unsigned long pgoff, unsigned long *populate);
79811 extern int do_munmap(struct mm_struct *, unsigned long, size_t); 80896 extern int do_munmap(struct mm_struct *, unsigned long, size_t);
@@ -79813,7 +80898,7 @@ index 0ab5439..2859c61 100644
79813 80898
79814 #ifdef CONFIG_MMU 80899 #ifdef CONFIG_MMU
79815 extern int __mm_populate(unsigned long addr, unsigned long len, 80900 extern int __mm_populate(unsigned long addr, unsigned long len,
79816@@ -1730,10 +1744,11 @@ struct vm_unmapped_area_info { 80901@@ -1790,10 +1804,11 @@ struct vm_unmapped_area_info {
79817 unsigned long high_limit; 80902 unsigned long high_limit;
79818 unsigned long align_mask; 80903 unsigned long align_mask;
79819 unsigned long align_offset; 80904 unsigned long align_offset;
@@ -79827,7 +80912,7 @@ index 0ab5439..2859c61 100644
79827 80912
79828 /* 80913 /*
79829 * Search for an unmapped address range. 80914 * Search for an unmapped address range.
79830@@ -1745,7 +1760,7 @@ extern unsigned long unmapped_area_topdown(struct vm_unmapped_area_info *info); 80915@@ -1805,7 +1820,7 @@ extern unsigned long unmapped_area_topdown(struct vm_unmapped_area_info *info);
79831 * - satisfies (begin_addr & align_mask) == (align_offset & align_mask) 80916 * - satisfies (begin_addr & align_mask) == (align_offset & align_mask)
79832 */ 80917 */
79833 static inline unsigned long 80918 static inline unsigned long
@@ -79836,7 +80921,7 @@ index 0ab5439..2859c61 100644
79836 { 80921 {
79837 if (!(info->flags & VM_UNMAPPED_AREA_TOPDOWN)) 80922 if (!(info->flags & VM_UNMAPPED_AREA_TOPDOWN))
79838 return unmapped_area(info); 80923 return unmapped_area(info);
79839@@ -1808,6 +1823,10 @@ extern struct vm_area_struct * find_vma(struct mm_struct * mm, unsigned long add 80924@@ -1868,6 +1883,10 @@ extern struct vm_area_struct * find_vma(struct mm_struct * mm, unsigned long add
79840 extern struct vm_area_struct * find_vma_prev(struct mm_struct * mm, unsigned long addr, 80925 extern struct vm_area_struct * find_vma_prev(struct mm_struct * mm, unsigned long addr,
79841 struct vm_area_struct **pprev); 80926 struct vm_area_struct **pprev);
79842 80927
@@ -79847,7 +80932,7 @@ index 0ab5439..2859c61 100644
79847 /* Look up the first VMA which intersects the interval start_addr..end_addr-1, 80932 /* Look up the first VMA which intersects the interval start_addr..end_addr-1,
79848 NULL if none. Assume start_addr < end_addr. */ 80933 NULL if none. Assume start_addr < end_addr. */
79849 static inline struct vm_area_struct * find_vma_intersection(struct mm_struct * mm, unsigned long start_addr, unsigned long end_addr) 80934 static inline struct vm_area_struct * find_vma_intersection(struct mm_struct * mm, unsigned long start_addr, unsigned long end_addr)
79850@@ -1836,15 +1855,6 @@ static inline struct vm_area_struct *find_exact_vma(struct mm_struct *mm, 80935@@ -1896,15 +1915,6 @@ static inline struct vm_area_struct *find_exact_vma(struct mm_struct *mm,
79851 return vma; 80936 return vma;
79852 } 80937 }
79853 80938
@@ -79860,10 +80945,10 @@ index 0ab5439..2859c61 100644
79860-} 80945-}
79861-#endif 80946-#endif
79862- 80947-
79863 #ifdef CONFIG_ARCH_USES_NUMA_PROT_NONE 80948 #ifdef CONFIG_NUMA_BALANCING
79864 unsigned long change_prot_numa(struct vm_area_struct *vma, 80949 unsigned long change_prot_numa(struct vm_area_struct *vma,
79865 unsigned long start, unsigned long end); 80950 unsigned long start, unsigned long end);
79866@@ -1896,6 +1906,11 @@ void vm_stat_account(struct mm_struct *, unsigned long, struct file *, long); 80951@@ -1956,6 +1966,11 @@ void vm_stat_account(struct mm_struct *, unsigned long, struct file *, long);
79867 static inline void vm_stat_account(struct mm_struct *mm, 80952 static inline void vm_stat_account(struct mm_struct *mm,
79868 unsigned long flags, struct file *file, long pages) 80953 unsigned long flags, struct file *file, long pages)
79869 { 80954 {
@@ -79875,7 +80960,7 @@ index 0ab5439..2859c61 100644
79875 mm->total_vm += pages; 80960 mm->total_vm += pages;
79876 } 80961 }
79877 #endif /* CONFIG_PROC_FS */ 80962 #endif /* CONFIG_PROC_FS */
79878@@ -1977,7 +1992,7 @@ extern int unpoison_memory(unsigned long pfn); 80963@@ -2037,7 +2052,7 @@ extern int unpoison_memory(unsigned long pfn);
79879 extern int sysctl_memory_failure_early_kill; 80964 extern int sysctl_memory_failure_early_kill;
79880 extern int sysctl_memory_failure_recovery; 80965 extern int sysctl_memory_failure_recovery;
79881 extern void shake_page(struct page *p, int access); 80966 extern void shake_page(struct page *p, int access);
@@ -79883,8 +80968,8 @@ index 0ab5439..2859c61 100644
79883+extern atomic_long_unchecked_t num_poisoned_pages; 80968+extern atomic_long_unchecked_t num_poisoned_pages;
79884 extern int soft_offline_page(struct page *page, int flags); 80969 extern int soft_offline_page(struct page *page, int flags);
79885 80970
79886 extern void dump_page(struct page *page); 80971 #if defined(CONFIG_TRANSPARENT_HUGEPAGE) || defined(CONFIG_HUGETLBFS)
79887@@ -2014,5 +2029,11 @@ void __init setup_nr_node_ids(void); 80972@@ -2072,5 +2087,11 @@ void __init setup_nr_node_ids(void);
79888 static inline void setup_nr_node_ids(void) {} 80973 static inline void setup_nr_node_ids(void) {}
79889 #endif 80974 #endif
79890 80975
@@ -79961,7 +81046,7 @@ index c5d5278..f0b68c8 100644
79961 } 81046 }
79962 81047
79963diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h 81048diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
79964index bd791e4..8617c34f 100644 81049index 9b61b9b..52147d6b 100644
79965--- a/include/linux/mmzone.h 81050--- a/include/linux/mmzone.h
79966+++ b/include/linux/mmzone.h 81051+++ b/include/linux/mmzone.h
79967@@ -396,7 +396,7 @@ struct zone { 81052@@ -396,7 +396,7 @@ struct zone {
@@ -80005,7 +81090,7 @@ index 45e9214..a7227d6 100644
80005 * struct dmi_device_id appears during expansion of 81090 * struct dmi_device_id appears during expansion of
80006 * "MODULE_DEVICE_TABLE(dmi, x)". Compiler doesn't look inside it 81091 * "MODULE_DEVICE_TABLE(dmi, x)". Compiler doesn't look inside it
80007diff --git a/include/linux/module.h b/include/linux/module.h 81092diff --git a/include/linux/module.h b/include/linux/module.h
80008index 15cd6b1..f6e2e6a 100644 81093index eaf60ff..641979a 100644
80009--- a/include/linux/module.h 81094--- a/include/linux/module.h
80010+++ b/include/linux/module.h 81095+++ b/include/linux/module.h
80011@@ -17,9 +17,11 @@ 81096@@ -17,9 +17,11 @@
@@ -80020,7 +81105,7 @@ index 15cd6b1..f6e2e6a 100644
80020 81105
80021 /* In stripped ARM and x86-64 modules, ~ is surprisingly rare. */ 81106 /* In stripped ARM and x86-64 modules, ~ is surprisingly rare. */
80022 #define MODULE_SIG_STRING "~Module signature appended~\n" 81107 #define MODULE_SIG_STRING "~Module signature appended~\n"
80023@@ -43,7 +45,7 @@ struct module_kobject { 81108@@ -42,7 +44,7 @@ struct module_kobject {
80024 struct kobject *drivers_dir; 81109 struct kobject *drivers_dir;
80025 struct module_param_attrs *mp; 81110 struct module_param_attrs *mp;
80026 struct completion *kobj_completion; 81111 struct completion *kobj_completion;
@@ -80029,7 +81114,7 @@ index 15cd6b1..f6e2e6a 100644
80029 81114
80030 struct module_attribute { 81115 struct module_attribute {
80031 struct attribute attr; 81116 struct attribute attr;
80032@@ -55,12 +57,13 @@ struct module_attribute { 81117@@ -54,12 +56,13 @@ struct module_attribute {
80033 int (*test)(struct module *); 81118 int (*test)(struct module *);
80034 void (*free)(struct module *); 81119 void (*free)(struct module *);
80035 }; 81120 };
@@ -80044,7 +81129,7 @@ index 15cd6b1..f6e2e6a 100644
80044 81129
80045 extern ssize_t __modver_version_show(struct module_attribute *, 81130 extern ssize_t __modver_version_show(struct module_attribute *,
80046 struct module_kobject *, char *); 81131 struct module_kobject *, char *);
80047@@ -238,7 +241,7 @@ struct module 81132@@ -238,7 +241,7 @@ struct module {
80048 81133
80049 /* Sysfs stuff. */ 81134 /* Sysfs stuff. */
80050 struct module_kobject mkobj; 81135 struct module_kobject mkobj;
@@ -80053,7 +81138,7 @@ index 15cd6b1..f6e2e6a 100644
80053 const char *version; 81138 const char *version;
80054 const char *srcversion; 81139 const char *srcversion;
80055 struct kobject *holders_dir; 81140 struct kobject *holders_dir;
80056@@ -287,19 +290,16 @@ struct module 81141@@ -287,19 +290,16 @@ struct module {
80057 int (*init)(void); 81142 int (*init)(void);
80058 81143
80059 /* If this is non-NULL, vfree after init() returns */ 81144 /* If this is non-NULL, vfree after init() returns */
@@ -80077,7 +81162,7 @@ index 15cd6b1..f6e2e6a 100644
80077 81162
80078 /* Arch-specific module values */ 81163 /* Arch-specific module values */
80079 struct mod_arch_specific arch; 81164 struct mod_arch_specific arch;
80080@@ -355,6 +355,10 @@ struct module 81165@@ -355,6 +355,10 @@ struct module {
80081 #ifdef CONFIG_EVENT_TRACING 81166 #ifdef CONFIG_EVENT_TRACING
80082 struct ftrace_event_call **trace_events; 81167 struct ftrace_event_call **trace_events;
80083 unsigned int num_trace_events; 81168 unsigned int num_trace_events;
@@ -80088,7 +81173,7 @@ index 15cd6b1..f6e2e6a 100644
80088 #endif 81173 #endif
80089 #ifdef CONFIG_FTRACE_MCOUNT_RECORD 81174 #ifdef CONFIG_FTRACE_MCOUNT_RECORD
80090 unsigned int num_ftrace_callsites; 81175 unsigned int num_ftrace_callsites;
80091@@ -378,7 +382,7 @@ struct module 81176@@ -378,7 +382,7 @@ struct module {
80092 ctor_fn_t *ctors; 81177 ctor_fn_t *ctors;
80093 unsigned int num_ctors; 81178 unsigned int num_ctors;
80094 #endif 81179 #endif
@@ -80217,10 +81302,10 @@ index c3eb102..073c4a6 100644
80217 .ops = &param_ops_##type, \ 81302 .ops = &param_ops_##type, \
80218 .elemsize = sizeof(array[0]), .elem = array }; \ 81303 .elemsize = sizeof(array[0]), .elem = array }; \
80219diff --git a/include/linux/mount.h b/include/linux/mount.h 81304diff --git a/include/linux/mount.h b/include/linux/mount.h
80220index 371d346..fba2819 100644 81305index 839bac2..a96b37c 100644
80221--- a/include/linux/mount.h 81306--- a/include/linux/mount.h
80222+++ b/include/linux/mount.h 81307+++ b/include/linux/mount.h
80223@@ -56,7 +56,7 @@ struct vfsmount { 81308@@ -59,7 +59,7 @@ struct vfsmount {
80224 struct dentry *mnt_root; /* root of the mounted tree */ 81309 struct dentry *mnt_root; /* root of the mounted tree */
80225 struct super_block *mnt_sb; /* pointer to superblock */ 81310 struct super_block *mnt_sb; /* pointer to superblock */
80226 int mnt_flags; 81311 int mnt_flags;
@@ -80258,7 +81343,7 @@ index 492de72..1bddcd4 100644
80258 return nd->saved_names[nd->depth]; 81343 return nd->saved_names[nd->depth];
80259 } 81344 }
80260diff --git a/include/linux/net.h b/include/linux/net.h 81345diff --git a/include/linux/net.h b/include/linux/net.h
80261index 69be3e6..0fb422d 100644 81346index 17d8339..81656c0 100644
80262--- a/include/linux/net.h 81347--- a/include/linux/net.h
80263+++ b/include/linux/net.h 81348+++ b/include/linux/net.h
80264@@ -192,7 +192,7 @@ struct net_proto_family { 81349@@ -192,7 +192,7 @@ struct net_proto_family {
@@ -80271,18 +81356,18 @@ index 69be3e6..0fb422d 100644
80271 struct iovec; 81356 struct iovec;
80272 struct kvec; 81357 struct kvec;
80273diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h 81358diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
80274index 2177a6b..67fc561 100644 81359index 911718f..f673407 100644
80275--- a/include/linux/netdevice.h 81360--- a/include/linux/netdevice.h
80276+++ b/include/linux/netdevice.h 81361+++ b/include/linux/netdevice.h
80277@@ -1129,6 +1129,7 @@ struct net_device_ops { 81362@@ -1147,6 +1147,7 @@ struct net_device_ops {
80278 struct net_device *dev,
80279 void *priv); 81363 void *priv);
81364 int (*ndo_get_lock_subclass)(struct net_device *dev);
80280 }; 81365 };
80281+typedef struct net_device_ops __no_const net_device_ops_no_const; 81366+typedef struct net_device_ops __no_const net_device_ops_no_const;
80282 81367
80283 /* 81368 /*
80284 * The DEVICE structure. 81369 * The DEVICE structure.
80285@@ -1211,7 +1212,7 @@ struct net_device { 81370@@ -1229,7 +1230,7 @@ struct net_device {
80286 int iflink; 81371 int iflink;
80287 81372
80288 struct net_device_stats stats; 81373 struct net_device_stats stats;
@@ -80333,7 +81418,7 @@ index 0000000..33f4af8
80333+ 81418+
80334+#endif 81419+#endif
80335diff --git a/include/linux/nls.h b/include/linux/nls.h 81420diff --git a/include/linux/nls.h b/include/linux/nls.h
80336index 5dc635f..35f5e11 100644 81421index 520681b..1d67ed2 100644
80337--- a/include/linux/nls.h 81422--- a/include/linux/nls.h
80338+++ b/include/linux/nls.h 81423+++ b/include/linux/nls.h
80339@@ -31,7 +31,7 @@ struct nls_table { 81424@@ -31,7 +31,7 @@ struct nls_table {
@@ -80388,8 +81473,29 @@ index 4386946..f50c615 100644
80388 struct padata_cpumask cpumask; 81473 struct padata_cpumask cpumask;
80389 spinlock_t lock ____cacheline_aligned; 81474 spinlock_t lock ____cacheline_aligned;
80390 unsigned int processed; 81475 unsigned int processed;
81476diff --git a/include/linux/path.h b/include/linux/path.h
81477index d137218..be0c176 100644
81478--- a/include/linux/path.h
81479+++ b/include/linux/path.h
81480@@ -1,13 +1,15 @@
81481 #ifndef _LINUX_PATH_H
81482 #define _LINUX_PATH_H
81483
81484+#include <linux/compiler.h>
81485+
81486 struct dentry;
81487 struct vfsmount;
81488
81489 struct path {
81490 struct vfsmount *mnt;
81491 struct dentry *dentry;
81492-};
81493+} __randomize_layout;
81494
81495 extern void path_get(const struct path *);
81496 extern void path_put(const struct path *);
80391diff --git a/include/linux/pci_hotplug.h b/include/linux/pci_hotplug.h 81497diff --git a/include/linux/pci_hotplug.h b/include/linux/pci_hotplug.h
80392index a2e2f1d..8a391d2 100644 81498index 5f2e559..7d59314 100644
80393--- a/include/linux/pci_hotplug.h 81499--- a/include/linux/pci_hotplug.h
80394+++ b/include/linux/pci_hotplug.h 81500+++ b/include/linux/pci_hotplug.h
80395@@ -71,7 +71,8 @@ struct hotplug_slot_ops { 81501@@ -71,7 +71,8 @@ struct hotplug_slot_ops {
@@ -80403,10 +81509,10 @@ index a2e2f1d..8a391d2 100644
80403 /** 81509 /**
80404 * struct hotplug_slot_info - used to notify the hotplug pci core of the state of the slot 81510 * struct hotplug_slot_info - used to notify the hotplug pci core of the state of the slot
80405diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h 81511diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
80406index 2e069d1..27054b8 100644 81512index e56b07f..aef789b 100644
80407--- a/include/linux/perf_event.h 81513--- a/include/linux/perf_event.h
80408+++ b/include/linux/perf_event.h 81514+++ b/include/linux/perf_event.h
80409@@ -327,8 +327,8 @@ struct perf_event { 81515@@ -328,8 +328,8 @@ struct perf_event {
80410 81516
80411 enum perf_event_active_state state; 81517 enum perf_event_active_state state;
80412 unsigned int attach_state; 81518 unsigned int attach_state;
@@ -80417,7 +81523,7 @@ index 2e069d1..27054b8 100644
80417 81523
80418 /* 81524 /*
80419 * These are the total time in nanoseconds that the event 81525 * These are the total time in nanoseconds that the event
80420@@ -379,8 +379,8 @@ struct perf_event { 81526@@ -380,8 +380,8 @@ struct perf_event {
80421 * These accumulate total time (in nanoseconds) that children 81527 * These accumulate total time (in nanoseconds) that children
80422 * events have been enabled and running, respectively. 81528 * events have been enabled and running, respectively.
80423 */ 81529 */
@@ -80428,7 +81534,7 @@ index 2e069d1..27054b8 100644
80428 81534
80429 /* 81535 /*
80430 * Protect attach/detach and child_list: 81536 * Protect attach/detach and child_list:
80431@@ -707,7 +707,7 @@ static inline void perf_callchain_store(struct perf_callchain_entry *entry, u64 81537@@ -708,7 +708,7 @@ static inline void perf_callchain_store(struct perf_callchain_entry *entry, u64
80432 entry->ip[entry->nr++] = ip; 81538 entry->ip[entry->nr++] = ip;
80433 } 81539 }
80434 81540
@@ -80437,7 +81543,7 @@ index 2e069d1..27054b8 100644
80437 extern int sysctl_perf_event_mlock; 81543 extern int sysctl_perf_event_mlock;
80438 extern int sysctl_perf_event_sample_rate; 81544 extern int sysctl_perf_event_sample_rate;
80439 extern int sysctl_perf_cpu_time_max_percent; 81545 extern int sysctl_perf_cpu_time_max_percent;
80440@@ -722,19 +722,24 @@ extern int perf_cpu_time_max_percent_handler(struct ctl_table *table, int write, 81546@@ -723,19 +723,24 @@ extern int perf_cpu_time_max_percent_handler(struct ctl_table *table, int write,
80441 loff_t *ppos); 81547 loff_t *ppos);
80442 81548
80443 81549
@@ -80465,7 +81571,7 @@ index 2e069d1..27054b8 100644
80465 } 81571 }
80466 81572
80467 extern void perf_event_init(void); 81573 extern void perf_event_init(void);
80468@@ -850,7 +855,7 @@ struct perf_pmu_events_attr { 81574@@ -851,7 +856,7 @@ struct perf_pmu_events_attr {
80469 struct device_attribute attr; 81575 struct device_attribute attr;
80470 u64 id; 81576 u64 id;
80471 const char *event_str; 81577 const char *event_str;
@@ -80507,10 +81613,10 @@ index ab57526..94598804 100644
80507 unsigned int w_counter; 81613 unsigned int w_counter;
80508 struct page *tmp_page; 81614 struct page *tmp_page;
80509diff --git a/include/linux/pm.h b/include/linux/pm.h 81615diff --git a/include/linux/pm.h b/include/linux/pm.h
80510index a224c7f..92d8a97 100644 81616index 8c6583a..febb84c 100644
80511--- a/include/linux/pm.h 81617--- a/include/linux/pm.h
80512+++ b/include/linux/pm.h 81618+++ b/include/linux/pm.h
80513@@ -576,6 +576,7 @@ extern int dev_pm_put_subsys_data(struct device *dev); 81619@@ -597,6 +597,7 @@ extern int dev_pm_put_subsys_data(struct device *dev);
80514 struct dev_pm_domain { 81620 struct dev_pm_domain {
80515 struct dev_pm_ops ops; 81621 struct dev_pm_ops ops;
80516 }; 81622 };
@@ -80537,10 +81643,10 @@ index 7c1d252..0e7061d 100644
80537 81643
80538 struct generic_pm_domain { 81644 struct generic_pm_domain {
80539diff --git a/include/linux/pm_runtime.h b/include/linux/pm_runtime.h 81645diff --git a/include/linux/pm_runtime.h b/include/linux/pm_runtime.h
80540index 6fa7cea..7bf6415 100644 81646index 16c9a62..f9f0838 100644
80541--- a/include/linux/pm_runtime.h 81647--- a/include/linux/pm_runtime.h
80542+++ b/include/linux/pm_runtime.h 81648+++ b/include/linux/pm_runtime.h
80543@@ -103,7 +103,7 @@ static inline bool pm_runtime_callbacks_present(struct device *dev) 81649@@ -109,7 +109,7 @@ static inline bool pm_runtime_callbacks_present(struct device *dev)
80544 81650
80545 static inline void pm_runtime_mark_last_busy(struct device *dev) 81651 static inline void pm_runtime_mark_last_busy(struct device *dev)
80546 { 81652 {
@@ -80604,10 +81710,10 @@ index 4ea1d37..80f4b33 100644
80604 /* 81710 /*
80605 * The return value from decompress routine is the length of the 81711 * The return value from decompress routine is the length of the
80606diff --git a/include/linux/preempt.h b/include/linux/preempt.h 81712diff --git a/include/linux/preempt.h b/include/linux/preempt.h
80607index a3d9dc8..8af9922 100644 81713index 1841b58..fbeebf8 100644
80608--- a/include/linux/preempt.h 81714--- a/include/linux/preempt.h
80609+++ b/include/linux/preempt.h 81715+++ b/include/linux/preempt.h
80610@@ -27,11 +27,16 @@ extern void preempt_count_sub(int val); 81716@@ -29,11 +29,16 @@ extern void preempt_count_sub(int val);
80611 #define preempt_count_dec_and_test() __preempt_count_dec_and_test() 81717 #define preempt_count_dec_and_test() __preempt_count_dec_and_test()
80612 #endif 81718 #endif
80613 81719
@@ -80624,7 +81730,7 @@ index a3d9dc8..8af9922 100644
80624 81730
80625 #ifdef CONFIG_PREEMPT_COUNT 81731 #ifdef CONFIG_PREEMPT_COUNT
80626 81732
80627@@ -41,6 +46,12 @@ do { \ 81733@@ -43,6 +48,12 @@ do { \
80628 barrier(); \ 81734 barrier(); \
80629 } while (0) 81735 } while (0)
80630 81736
@@ -80637,7 +81743,7 @@ index a3d9dc8..8af9922 100644
80637 #define sched_preempt_enable_no_resched() \ 81743 #define sched_preempt_enable_no_resched() \
80638 do { \ 81744 do { \
80639 barrier(); \ 81745 barrier(); \
80640@@ -49,6 +60,12 @@ do { \ 81746@@ -51,6 +62,12 @@ do { \
80641 81747
80642 #define preempt_enable_no_resched() sched_preempt_enable_no_resched() 81748 #define preempt_enable_no_resched() sched_preempt_enable_no_resched()
80643 81749
@@ -80650,7 +81756,7 @@ index a3d9dc8..8af9922 100644
80650 #ifdef CONFIG_PREEMPT 81756 #ifdef CONFIG_PREEMPT
80651 #define preempt_enable() \ 81757 #define preempt_enable() \
80652 do { \ 81758 do { \
80653@@ -105,8 +122,10 @@ do { \ 81759@@ -115,8 +132,10 @@ do { \
80654 * region. 81760 * region.
80655 */ 81761 */
80656 #define preempt_disable() barrier() 81762 #define preempt_disable() barrier()
@@ -80661,11 +81767,25 @@ index a3d9dc8..8af9922 100644
80661 #define preempt_enable() barrier() 81767 #define preempt_enable() barrier()
80662 #define preempt_check_resched() do { } while (0) 81768 #define preempt_check_resched() do { } while (0)
80663 81769
81770@@ -130,11 +149,13 @@ do { \
81771 /*
81772 * Modules have no business playing preemption tricks.
81773 */
81774+#ifndef CONFIG_PAX_KERNEXEC
81775 #undef sched_preempt_enable_no_resched
81776 #undef preempt_enable_no_resched
81777 #undef preempt_enable_no_resched_notrace
81778 #undef preempt_check_resched
81779 #endif
81780+#endif
81781
81782 #define preempt_set_need_resched() \
81783 do { \
80664diff --git a/include/linux/printk.h b/include/linux/printk.h 81784diff --git a/include/linux/printk.h b/include/linux/printk.h
80665index 6949258..7c4730e 100644 81785index fa47e27..c08e034 100644
80666--- a/include/linux/printk.h 81786--- a/include/linux/printk.h
80667+++ b/include/linux/printk.h 81787+++ b/include/linux/printk.h
80668@@ -106,6 +106,8 @@ static inline __printf(1, 2) __cold 81788@@ -114,6 +114,8 @@ static inline __printf(1, 2) __cold
80669 void early_printk(const char *s, ...) { } 81789 void early_printk(const char *s, ...) { }
80670 #endif 81790 #endif
80671 81791
@@ -80674,7 +81794,7 @@ index 6949258..7c4730e 100644
80674 #ifdef CONFIG_PRINTK 81794 #ifdef CONFIG_PRINTK
80675 asmlinkage __printf(5, 0) 81795 asmlinkage __printf(5, 0)
80676 int vprintk_emit(int facility, int level, 81796 int vprintk_emit(int facility, int level,
80677@@ -140,7 +142,6 @@ extern bool printk_timed_ratelimit(unsigned long *caller_jiffies, 81797@@ -148,7 +150,6 @@ extern bool printk_timed_ratelimit(unsigned long *caller_jiffies,
80678 81798
80679 extern int printk_delay_msec; 81799 extern int printk_delay_msec;
80680 extern int dmesg_restrict; 81800 extern int dmesg_restrict;
@@ -80683,10 +81803,22 @@ index 6949258..7c4730e 100644
80683 extern void wake_up_klogd(void); 81803 extern void wake_up_klogd(void);
80684 81804
80685diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h 81805diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h
80686index 608e60a..c26f864 100644 81806index 608e60a..bbcb1a0 100644
80687--- a/include/linux/proc_fs.h 81807--- a/include/linux/proc_fs.h
80688+++ b/include/linux/proc_fs.h 81808+++ b/include/linux/proc_fs.h
80689@@ -34,6 +34,19 @@ static inline struct proc_dir_entry *proc_create( 81809@@ -17,8 +17,11 @@ extern void proc_flush_task(struct task_struct *);
81810 extern struct proc_dir_entry *proc_symlink(const char *,
81811 struct proc_dir_entry *, const char *);
81812 extern struct proc_dir_entry *proc_mkdir(const char *, struct proc_dir_entry *);
81813+extern struct proc_dir_entry *proc_mkdir_restrict(const char *, struct proc_dir_entry *);
81814 extern struct proc_dir_entry *proc_mkdir_data(const char *, umode_t,
81815 struct proc_dir_entry *, void *);
81816+extern struct proc_dir_entry *proc_mkdir_data_restrict(const char *, umode_t,
81817+ struct proc_dir_entry *, void *);
81818 extern struct proc_dir_entry *proc_mkdir_mode(const char *, umode_t,
81819 struct proc_dir_entry *);
81820
81821@@ -34,6 +37,19 @@ static inline struct proc_dir_entry *proc_create(
80690 return proc_create_data(name, mode, parent, proc_fops, NULL); 81822 return proc_create_data(name, mode, parent, proc_fops, NULL);
80691 } 81823 }
80692 81824
@@ -80706,6 +81838,15 @@ index 608e60a..c26f864 100644
80706 extern void proc_set_size(struct proc_dir_entry *, loff_t); 81838 extern void proc_set_size(struct proc_dir_entry *, loff_t);
80707 extern void proc_set_user(struct proc_dir_entry *, kuid_t, kgid_t); 81839 extern void proc_set_user(struct proc_dir_entry *, kuid_t, kgid_t);
80708 extern void *PDE_DATA(const struct inode *); 81840 extern void *PDE_DATA(const struct inode *);
81841@@ -73,7 +89,7 @@ static inline int remove_proc_subtree(const char *name, struct proc_dir_entry *p
81842 static inline struct proc_dir_entry *proc_net_mkdir(
81843 struct net *net, const char *name, struct proc_dir_entry *parent)
81844 {
81845- return proc_mkdir_data(name, 0, parent, net);
81846+ return proc_mkdir_data_restrict(name, 0, parent, net);
81847 }
81848
81849 #endif /* _LINUX_PROC_FS_H */
80709diff --git a/include/linux/proc_ns.h b/include/linux/proc_ns.h 81850diff --git a/include/linux/proc_ns.h b/include/linux/proc_ns.h
80710index 34a1e10..70f6bde 100644 81851index 34a1e10..70f6bde 100644
80711--- a/include/linux/proc_ns.h 81852--- a/include/linux/proc_ns.h
@@ -80733,11 +81874,11 @@ index cc7494a..1e27036 100644
80733 extern bool qid_valid(struct kqid qid); 81874 extern bool qid_valid(struct kqid qid);
80734 81875
80735diff --git a/include/linux/random.h b/include/linux/random.h 81876diff --git a/include/linux/random.h b/include/linux/random.h
80736index 4002b3d..d5ad855 100644 81877index 1cfce0e..b0b9235 100644
80737--- a/include/linux/random.h 81878--- a/include/linux/random.h
80738+++ b/include/linux/random.h 81879+++ b/include/linux/random.h
80739@@ -10,9 +10,19 @@ 81880@@ -9,9 +9,19 @@
80740 81881 #include <uapi/linux/random.h>
80741 81882
80742 extern void add_device_randomness(const void *, unsigned int); 81883 extern void add_device_randomness(const void *, unsigned int);
80743+ 81884+
@@ -80758,7 +81899,7 @@ index 4002b3d..d5ad855 100644
80758 81899
80759 extern void get_random_bytes(void *buf, int nbytes); 81900 extern void get_random_bytes(void *buf, int nbytes);
80760 extern void get_random_bytes_arch(void *buf, int nbytes); 81901 extern void get_random_bytes_arch(void *buf, int nbytes);
80761@@ -23,10 +33,10 @@ extern int random_int_secret_init(void); 81902@@ -22,10 +32,10 @@ extern int random_int_secret_init(void);
80762 extern const struct file_operations random_fops, urandom_fops; 81903 extern const struct file_operations random_fops, urandom_fops;
80763 #endif 81904 #endif
80764 81905
@@ -80771,7 +81912,7 @@ index 4002b3d..d5ad855 100644
80771 void prandom_bytes(void *buf, int nbytes); 81912 void prandom_bytes(void *buf, int nbytes);
80772 void prandom_seed(u32 seed); 81913 void prandom_seed(u32 seed);
80773 void prandom_reseed_late(void); 81914 void prandom_reseed_late(void);
80774@@ -38,6 +48,11 @@ struct rnd_state { 81915@@ -37,6 +47,11 @@ struct rnd_state {
80775 u32 prandom_u32_state(struct rnd_state *state); 81916 u32 prandom_u32_state(struct rnd_state *state);
80776 void prandom_bytes_state(struct rnd_state *state, void *buf, int nbytes); 81917 void prandom_bytes_state(struct rnd_state *state, void *buf, int nbytes);
80777 81918
@@ -80780,9 +81921,9 @@ index 4002b3d..d5ad855 100644
80780+ return prandom_u32() + (sizeof(long) > 4 ? (unsigned long)prandom_u32() << 32 : 0); 81921+ return prandom_u32() + (sizeof(long) > 4 ? (unsigned long)prandom_u32() << 32 : 0);
80781+} 81922+}
80782+ 81923+
80783 /* 81924 /**
80784 * Handle minimum values for seeds 81925 * prandom_u32_max - returns a pseudo-random number in interval [0, ep_ro)
80785 */ 81926 * @ep_ro: right open interval endpoint
80786diff --git a/include/linux/rbtree_augmented.h b/include/linux/rbtree_augmented.h 81927diff --git a/include/linux/rbtree_augmented.h b/include/linux/rbtree_augmented.h
80787index fea49b5..2ac22bb 100644 81928index fea49b5..2ac22bb 100644
80788--- a/include/linux/rbtree_augmented.h 81929--- a/include/linux/rbtree_augmented.h
@@ -80799,7 +81940,7 @@ index fea49b5..2ac22bb 100644
80799 81940
80800 81941
80801diff --git a/include/linux/rculist.h b/include/linux/rculist.h 81942diff --git a/include/linux/rculist.h b/include/linux/rculist.h
80802index 45a0a9e..e83788e 100644 81943index dbaf990..52e07b8 100644
80803--- a/include/linux/rculist.h 81944--- a/include/linux/rculist.h
80804+++ b/include/linux/rculist.h 81945+++ b/include/linux/rculist.h
80805@@ -29,8 +29,8 @@ 81946@@ -29,8 +29,8 @@
@@ -80813,12 +81954,12 @@ index 45a0a9e..e83788e 100644
80813 } 81954 }
80814 81955
80815 /* 81956 /*
80816@@ -59,6 +59,9 @@ extern void __list_add_rcu(struct list_head *new, 81957@@ -59,6 +59,9 @@ void __list_add_rcu(struct list_head *new,
80817 struct list_head *prev, struct list_head *next); 81958 struct list_head *prev, struct list_head *next);
80818 #endif 81959 #endif
80819 81960
80820+extern void __pax_list_add_rcu(struct list_head *new, 81961+void __pax_list_add_rcu(struct list_head *new,
80821+ struct list_head *prev, struct list_head *next); 81962+ struct list_head *prev, struct list_head *next);
80822+ 81963+
80823 /** 81964 /**
80824 * list_add_rcu - add a new entry to rcu-protected list 81965 * list_add_rcu - add a new entry to rcu-protected list
@@ -80857,6 +81998,19 @@ index 45a0a9e..e83788e 100644
80857 /** 81998 /**
80858 * hlist_del_init_rcu - deletes entry from hash list with re-initialization 81999 * hlist_del_init_rcu - deletes entry from hash list with re-initialization
80859 * @n: the element to delete from the hash list. 82000 * @n: the element to delete from the hash list.
82001diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h
82002index 72bf3a0..853347f 100644
82003--- a/include/linux/rcupdate.h
82004+++ b/include/linux/rcupdate.h
82005@@ -588,7 +588,7 @@ static inline void rcu_preempt_sleep_check(void)
82006 #define rcu_assign_pointer(p, v) \
82007 do { \
82008 smp_wmb(); \
82009- ACCESS_ONCE(p) = RCU_INITIALIZER(v); \
82010+ ACCESS_ONCE_RW(p) = RCU_INITIALIZER(v); \
82011 } while (0)
82012
82013
80860diff --git a/include/linux/reboot.h b/include/linux/reboot.h 82014diff --git a/include/linux/reboot.h b/include/linux/reboot.h
80861index 9e7db9e..7d4fd72 100644 82015index 9e7db9e..7d4fd72 100644
80862--- a/include/linux/reboot.h 82016--- a/include/linux/reboot.h
@@ -80937,7 +82091,7 @@ index b71d573..2f940bd 100644
80937 #define RIO_RESOURCE_MEM 0x00000100 82091 #define RIO_RESOURCE_MEM 0x00000100
80938 #define RIO_RESOURCE_DOORBELL 0x00000200 82092 #define RIO_RESOURCE_DOORBELL 0x00000200
80939diff --git a/include/linux/rmap.h b/include/linux/rmap.h 82093diff --git a/include/linux/rmap.h b/include/linux/rmap.h
80940index 6dacb93..6174423 100644 82094index b66c211..13d2915 100644
80941--- a/include/linux/rmap.h 82095--- a/include/linux/rmap.h
80942+++ b/include/linux/rmap.h 82096+++ b/include/linux/rmap.h
80943@@ -145,8 +145,8 @@ static inline void anon_vma_unlock_read(struct anon_vma *anon_vma) 82097@@ -145,8 +145,8 @@ static inline void anon_vma_unlock_read(struct anon_vma *anon_vma)
@@ -80952,18 +82106,18 @@ index 6dacb93..6174423 100644
80952 static inline void anon_vma_merge(struct vm_area_struct *vma, 82106 static inline void anon_vma_merge(struct vm_area_struct *vma,
80953 struct vm_area_struct *next) 82107 struct vm_area_struct *next)
80954diff --git a/include/linux/sched.h b/include/linux/sched.h 82108diff --git a/include/linux/sched.h b/include/linux/sched.h
80955index 53f97eb..1d90705 100644 82109index ccd0c6f..39c28a4 100644
80956--- a/include/linux/sched.h 82110--- a/include/linux/sched.h
80957+++ b/include/linux/sched.h 82111+++ b/include/linux/sched.h
80958@@ -63,6 +63,7 @@ struct bio_list; 82112@@ -129,6 +129,7 @@ struct fs_struct;
80959 struct fs_struct;
80960 struct perf_event_context; 82113 struct perf_event_context;
80961 struct blk_plug; 82114 struct blk_plug;
82115 struct filename;
80962+struct linux_binprm; 82116+struct linux_binprm;
80963 82117
80964 /* 82118 /*
80965 * List of flags we want to share for kernel threads, 82119 * List of flags we want to share for kernel threads,
80966@@ -304,7 +305,7 @@ extern char __sched_text_start[], __sched_text_end[]; 82120@@ -369,7 +370,7 @@ extern char __sched_text_start[], __sched_text_end[];
80967 extern int in_sched_functions(unsigned long addr); 82121 extern int in_sched_functions(unsigned long addr);
80968 82122
80969 #define MAX_SCHEDULE_TIMEOUT LONG_MAX 82123 #define MAX_SCHEDULE_TIMEOUT LONG_MAX
@@ -80972,7 +82126,7 @@ index 53f97eb..1d90705 100644
80972 extern signed long schedule_timeout_interruptible(signed long timeout); 82126 extern signed long schedule_timeout_interruptible(signed long timeout);
80973 extern signed long schedule_timeout_killable(signed long timeout); 82127 extern signed long schedule_timeout_killable(signed long timeout);
80974 extern signed long schedule_timeout_uninterruptible(signed long timeout); 82128 extern signed long schedule_timeout_uninterruptible(signed long timeout);
80975@@ -315,6 +316,19 @@ struct nsproxy; 82129@@ -380,6 +381,19 @@ struct nsproxy;
80976 struct user_namespace; 82130 struct user_namespace;
80977 82131
80978 #ifdef CONFIG_MMU 82132 #ifdef CONFIG_MMU
@@ -80992,7 +82146,7 @@ index 53f97eb..1d90705 100644
80992 extern void arch_pick_mmap_layout(struct mm_struct *mm); 82146 extern void arch_pick_mmap_layout(struct mm_struct *mm);
80993 extern unsigned long 82147 extern unsigned long
80994 arch_get_unmapped_area(struct file *, unsigned long, unsigned long, 82148 arch_get_unmapped_area(struct file *, unsigned long, unsigned long,
80995@@ -600,6 +614,17 @@ struct signal_struct { 82149@@ -677,6 +691,17 @@ struct signal_struct {
80996 #ifdef CONFIG_TASKSTATS 82150 #ifdef CONFIG_TASKSTATS
80997 struct taskstats *stats; 82151 struct taskstats *stats;
80998 #endif 82152 #endif
@@ -81010,7 +82164,7 @@ index 53f97eb..1d90705 100644
81010 #ifdef CONFIG_AUDIT 82164 #ifdef CONFIG_AUDIT
81011 unsigned audit_tty; 82165 unsigned audit_tty;
81012 unsigned audit_tty_log_passwd; 82166 unsigned audit_tty_log_passwd;
81013@@ -626,7 +651,7 @@ struct signal_struct { 82167@@ -703,7 +728,7 @@ struct signal_struct {
81014 struct mutex cred_guard_mutex; /* guard against foreign influences on 82168 struct mutex cred_guard_mutex; /* guard against foreign influences on
81015 * credential calculations 82169 * credential calculations
81016 * (notably. ptrace) */ 82170 * (notably. ptrace) */
@@ -81019,7 +82173,7 @@ index 53f97eb..1d90705 100644
81019 82173
81020 /* 82174 /*
81021 * Bits in flags field of signal_struct. 82175 * Bits in flags field of signal_struct.
81022@@ -680,6 +705,14 @@ struct user_struct { 82176@@ -757,6 +782,14 @@ struct user_struct {
81023 struct key *session_keyring; /* UID's default session keyring */ 82177 struct key *session_keyring; /* UID's default session keyring */
81024 #endif 82178 #endif
81025 82179
@@ -81034,7 +82188,7 @@ index 53f97eb..1d90705 100644
81034 /* Hash table maintenance information */ 82188 /* Hash table maintenance information */
81035 struct hlist_node uidhash_node; 82189 struct hlist_node uidhash_node;
81036 kuid_t uid; 82190 kuid_t uid;
81037@@ -687,7 +720,7 @@ struct user_struct { 82191@@ -764,7 +797,7 @@ struct user_struct {
81038 #ifdef CONFIG_PERF_EVENTS 82192 #ifdef CONFIG_PERF_EVENTS
81039 atomic_long_t locked_vm; 82193 atomic_long_t locked_vm;
81040 #endif 82194 #endif
@@ -81043,8 +82197,8 @@ index 53f97eb..1d90705 100644
81043 82197
81044 extern int uids_sysfs_init(void); 82198 extern int uids_sysfs_init(void);
81045 82199
81046@@ -1162,8 +1195,8 @@ struct task_struct { 82200@@ -1286,8 +1319,8 @@ struct task_struct {
81047 struct list_head thread_group; 82201 struct list_head thread_node;
81048 82202
81049 struct completion *vfork_done; /* for vfork() */ 82203 struct completion *vfork_done; /* for vfork() */
81050- int __user *set_child_tid; /* CLONE_CHILD_SETTID */ 82204- int __user *set_child_tid; /* CLONE_CHILD_SETTID */
@@ -81054,7 +82208,7 @@ index 53f97eb..1d90705 100644
81054 82208
81055 cputime_t utime, stime, utimescaled, stimescaled; 82209 cputime_t utime, stime, utimescaled, stimescaled;
81056 cputime_t gtime; 82210 cputime_t gtime;
81057@@ -1188,11 +1221,6 @@ struct task_struct { 82211@@ -1312,11 +1345,6 @@ struct task_struct {
81058 struct task_cputime cputime_expires; 82212 struct task_cputime cputime_expires;
81059 struct list_head cpu_timers[3]; 82213 struct list_head cpu_timers[3];
81060 82214
@@ -81066,7 +82220,7 @@ index 53f97eb..1d90705 100644
81066 char comm[TASK_COMM_LEN]; /* executable name excluding path 82220 char comm[TASK_COMM_LEN]; /* executable name excluding path
81067 - access with [gs]et_task_comm (which lock 82221 - access with [gs]et_task_comm (which lock
81068 it with task_lock()) 82222 it with task_lock())
81069@@ -1209,6 +1237,10 @@ struct task_struct { 82223@@ -1333,6 +1361,10 @@ struct task_struct {
81070 #endif 82224 #endif
81071 /* CPU-specific state of this task */ 82225 /* CPU-specific state of this task */
81072 struct thread_struct thread; 82226 struct thread_struct thread;
@@ -81077,7 +82231,7 @@ index 53f97eb..1d90705 100644
81077 /* filesystem information */ 82231 /* filesystem information */
81078 struct fs_struct *fs; 82232 struct fs_struct *fs;
81079 /* open file information */ 82233 /* open file information */
81080@@ -1282,6 +1314,10 @@ struct task_struct { 82234@@ -1409,6 +1441,10 @@ struct task_struct {
81081 gfp_t lockdep_reclaim_gfp; 82235 gfp_t lockdep_reclaim_gfp;
81082 #endif 82236 #endif
81083 82237
@@ -81088,7 +82242,7 @@ index 53f97eb..1d90705 100644
81088 /* journalling filesystem info */ 82242 /* journalling filesystem info */
81089 void *journal_info; 82243 void *journal_info;
81090 82244
81091@@ -1320,6 +1356,10 @@ struct task_struct { 82245@@ -1447,6 +1483,10 @@ struct task_struct {
81092 /* cg_list protected by css_set_lock and tsk->alloc_lock */ 82246 /* cg_list protected by css_set_lock and tsk->alloc_lock */
81093 struct list_head cg_list; 82247 struct list_head cg_list;
81094 #endif 82248 #endif
@@ -81099,7 +82253,7 @@ index 53f97eb..1d90705 100644
81099 #ifdef CONFIG_FUTEX 82253 #ifdef CONFIG_FUTEX
81100 struct robust_list_head __user *robust_list; 82254 struct robust_list_head __user *robust_list;
81101 #ifdef CONFIG_COMPAT 82255 #ifdef CONFIG_COMPAT
81102@@ -1454,7 +1494,78 @@ struct task_struct { 82256@@ -1581,7 +1621,78 @@ struct task_struct {
81103 unsigned int sequential_io; 82257 unsigned int sequential_io;
81104 unsigned int sequential_io_avg; 82258 unsigned int sequential_io_avg;
81105 #endif 82259 #endif
@@ -81179,7 +82333,7 @@ index 53f97eb..1d90705 100644
81179 82333
81180 /* Future-safe accessor for struct task_struct's cpus_allowed. */ 82334 /* Future-safe accessor for struct task_struct's cpus_allowed. */
81181 #define tsk_cpus_allowed(tsk) (&(tsk)->cpus_allowed) 82335 #define tsk_cpus_allowed(tsk) (&(tsk)->cpus_allowed)
81182@@ -1531,7 +1642,7 @@ struct pid_namespace; 82336@@ -1658,7 +1769,7 @@ struct pid_namespace;
81183 pid_t __task_pid_nr_ns(struct task_struct *task, enum pid_type type, 82337 pid_t __task_pid_nr_ns(struct task_struct *task, enum pid_type type,
81184 struct pid_namespace *ns); 82338 struct pid_namespace *ns);
81185 82339
@@ -81188,7 +82342,33 @@ index 53f97eb..1d90705 100644
81188 { 82342 {
81189 return tsk->pid; 82343 return tsk->pid;
81190 } 82344 }
81191@@ -1981,7 +2092,9 @@ void yield(void); 82345@@ -2006,6 +2117,25 @@ extern u64 sched_clock_cpu(int cpu);
82346
82347 extern void sched_clock_init(void);
82348
82349+#ifdef CONFIG_GRKERNSEC_KSTACKOVERFLOW
82350+static inline void populate_stack(void)
82351+{
82352+ struct task_struct *curtask = current;
82353+ int c;
82354+ int *ptr = curtask->stack;
82355+ int *end = curtask->stack + THREAD_SIZE;
82356+
82357+ while (ptr < end) {
82358+ c = *(volatile int *)ptr;
82359+ ptr += PAGE_SIZE/sizeof(int);
82360+ }
82361+}
82362+#else
82363+static inline void populate_stack(void)
82364+{
82365+}
82366+#endif
82367+
82368 #ifndef CONFIG_HAVE_UNSTABLE_SCHED_CLOCK
82369 static inline void sched_clock_tick(void)
82370 {
82371@@ -2130,7 +2260,9 @@ void yield(void);
81192 extern struct exec_domain default_exec_domain; 82372 extern struct exec_domain default_exec_domain;
81193 82373
81194 union thread_union { 82374 union thread_union {
@@ -81198,7 +82378,7 @@ index 53f97eb..1d90705 100644
81198 unsigned long stack[THREAD_SIZE/sizeof(long)]; 82378 unsigned long stack[THREAD_SIZE/sizeof(long)];
81199 }; 82379 };
81200 82380
81201@@ -2014,6 +2127,7 @@ extern struct pid_namespace init_pid_ns; 82381@@ -2163,6 +2295,7 @@ extern struct pid_namespace init_pid_ns;
81202 */ 82382 */
81203 82383
81204 extern struct task_struct *find_task_by_vpid(pid_t nr); 82384 extern struct task_struct *find_task_by_vpid(pid_t nr);
@@ -81206,7 +82386,7 @@ index 53f97eb..1d90705 100644
81206 extern struct task_struct *find_task_by_pid_ns(pid_t nr, 82386 extern struct task_struct *find_task_by_pid_ns(pid_t nr,
81207 struct pid_namespace *ns); 82387 struct pid_namespace *ns);
81208 82388
81209@@ -2178,7 +2292,7 @@ extern void __cleanup_sighand(struct sighand_struct *); 82389@@ -2325,7 +2458,7 @@ extern void __cleanup_sighand(struct sighand_struct *);
81210 extern void exit_itimers(struct signal_struct *); 82390 extern void exit_itimers(struct signal_struct *);
81211 extern void flush_itimer_signals(void); 82391 extern void flush_itimer_signals(void);
81212 82392
@@ -81215,7 +82395,7 @@ index 53f97eb..1d90705 100644
81215 82395
81216 extern int allow_signal(int); 82396 extern int allow_signal(int);
81217 extern int disallow_signal(int); 82397 extern int disallow_signal(int);
81218@@ -2369,9 +2483,9 @@ static inline unsigned long *end_of_stack(struct task_struct *p) 82398@@ -2526,9 +2659,9 @@ static inline unsigned long *end_of_stack(struct task_struct *p)
81219 82399
81220 #endif 82400 #endif
81221 82401
@@ -81228,7 +82408,7 @@ index 53f97eb..1d90705 100644
81228 return (obj >= stack) && (obj < (stack + THREAD_SIZE)); 82408 return (obj >= stack) && (obj < (stack + THREAD_SIZE));
81229 } 82409 }
81230diff --git a/include/linux/sched/sysctl.h b/include/linux/sched/sysctl.h 82410diff --git a/include/linux/sched/sysctl.h b/include/linux/sched/sysctl.h
81231index e3347c5..f682891 100644 82411index 8045a55..c959cd5 100644
81232--- a/include/linux/sched/sysctl.h 82412--- a/include/linux/sched/sysctl.h
81233+++ b/include/linux/sched/sysctl.h 82413+++ b/include/linux/sched/sysctl.h
81234@@ -30,6 +30,7 @@ enum { sysctl_hung_task_timeout_secs = 0 }; 82414@@ -30,6 +30,7 @@ enum { sysctl_hung_task_timeout_secs = 0 };
@@ -81240,7 +82420,7 @@ index e3347c5..f682891 100644
81240 extern unsigned int sysctl_sched_latency; 82420 extern unsigned int sysctl_sched_latency;
81241 extern unsigned int sysctl_sched_min_granularity; 82421 extern unsigned int sysctl_sched_min_granularity;
81242diff --git a/include/linux/security.h b/include/linux/security.h 82422diff --git a/include/linux/security.h b/include/linux/security.h
81243index 5623a7f..b352409 100644 82423index 2fc42d1..4d802f2 100644
81244--- a/include/linux/security.h 82424--- a/include/linux/security.h
81245+++ b/include/linux/security.h 82425+++ b/include/linux/security.h
81246@@ -27,6 +27,7 @@ 82426@@ -27,6 +27,7 @@
@@ -81260,6 +82440,15 @@ index 5623a7f..b352409 100644
81260 #ifdef CONFIG_MMU 82440 #ifdef CONFIG_MMU
81261 extern unsigned long mmap_min_addr; 82441 extern unsigned long mmap_min_addr;
81262 extern unsigned long dac_mmap_min_addr; 82442 extern unsigned long dac_mmap_min_addr;
82443@@ -1719,7 +1718,7 @@ struct security_operations {
82444 struct audit_context *actx);
82445 void (*audit_rule_free) (void *lsmrule);
82446 #endif /* CONFIG_AUDIT */
82447-};
82448+} __randomize_layout;
82449
82450 /* prototypes */
82451 extern int security_init(void);
81263diff --git a/include/linux/semaphore.h b/include/linux/semaphore.h 82452diff --git a/include/linux/semaphore.h b/include/linux/semaphore.h
81264index dc368b8..e895209 100644 82453index dc368b8..e895209 100644
81265--- a/include/linux/semaphore.h 82454--- a/include/linux/semaphore.h
@@ -81274,7 +82463,7 @@ index dc368b8..e895209 100644
81274 extern int __must_check down_trylock(struct semaphore *sem); 82463 extern int __must_check down_trylock(struct semaphore *sem);
81275 extern int __must_check down_timeout(struct semaphore *sem, long jiffies); 82464 extern int __must_check down_timeout(struct semaphore *sem, long jiffies);
81276diff --git a/include/linux/seq_file.h b/include/linux/seq_file.h 82465diff --git a/include/linux/seq_file.h b/include/linux/seq_file.h
81277index 52e0097..09625ef 100644 82466index 52e0097..383f21d 100644
81278--- a/include/linux/seq_file.h 82467--- a/include/linux/seq_file.h
81279+++ b/include/linux/seq_file.h 82468+++ b/include/linux/seq_file.h
81280@@ -27,6 +27,9 @@ struct seq_file { 82469@@ -27,6 +27,9 @@ struct seq_file {
@@ -81295,8 +82484,24 @@ index 52e0097..09625ef 100644
81295 82484
81296 #define SEQ_SKIP 1 82485 #define SEQ_SKIP 1
81297 82486
82487@@ -96,6 +100,7 @@ void seq_pad(struct seq_file *m, char c);
82488
82489 char *mangle_path(char *s, const char *p, const char *esc);
82490 int seq_open(struct file *, const struct seq_operations *);
82491+int seq_open_restrict(struct file *, const struct seq_operations *);
82492 ssize_t seq_read(struct file *, char __user *, size_t, loff_t *);
82493 loff_t seq_lseek(struct file *, loff_t, int);
82494 int seq_release(struct inode *, struct file *);
82495@@ -138,6 +143,7 @@ static inline int seq_nodemask_list(struct seq_file *m, nodemask_t *mask)
82496 }
82497
82498 int single_open(struct file *, int (*)(struct seq_file *, void *), void *);
82499+int single_open_restrict(struct file *, int (*)(struct seq_file *, void *), void *);
82500 int single_open_size(struct file *, int (*)(struct seq_file *, void *), void *, size_t);
82501 int single_release(struct inode *, struct file *);
82502 void *__seq_open_private(struct file *, const struct seq_operations *, int);
81298diff --git a/include/linux/shm.h b/include/linux/shm.h 82503diff --git a/include/linux/shm.h b/include/linux/shm.h
81299index 429c199..4d42e38 100644 82504index 1e2cd2e..0288750 100644
81300--- a/include/linux/shm.h 82505--- a/include/linux/shm.h
81301+++ b/include/linux/shm.h 82506+++ b/include/linux/shm.h
81302@@ -21,6 +21,10 @@ struct shmid_kernel /* private to the kernel */ 82507@@ -21,6 +21,10 @@ struct shmid_kernel /* private to the kernel */
@@ -81311,10 +82516,10 @@ index 429c199..4d42e38 100644
81311 82516
81312 /* shm_mode upper byte flags */ 82517 /* shm_mode upper byte flags */
81313diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h 82518diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
81314index 37cb679..dbaebc0 100644 82519index 15ede6a..80161c3 100644
81315--- a/include/linux/skbuff.h 82520--- a/include/linux/skbuff.h
81316+++ b/include/linux/skbuff.h 82521+++ b/include/linux/skbuff.h
81317@@ -643,7 +643,7 @@ bool skb_try_coalesce(struct sk_buff *to, struct sk_buff *from, 82522@@ -662,7 +662,7 @@ bool skb_try_coalesce(struct sk_buff *to, struct sk_buff *from,
81318 struct sk_buff *__alloc_skb(unsigned int size, gfp_t priority, int flags, 82523 struct sk_buff *__alloc_skb(unsigned int size, gfp_t priority, int flags,
81319 int node); 82524 int node);
81320 struct sk_buff *build_skb(void *data, unsigned int frag_size); 82525 struct sk_buff *build_skb(void *data, unsigned int frag_size);
@@ -81323,34 +82528,7 @@ index 37cb679..dbaebc0 100644
81323 gfp_t priority) 82528 gfp_t priority)
81324 { 82529 {
81325 return __alloc_skb(size, priority, 0, NUMA_NO_NODE); 82530 return __alloc_skb(size, priority, 0, NUMA_NO_NODE);
81326@@ -750,7 +750,7 @@ static inline struct skb_shared_hwtstamps *skb_hwtstamps(struct sk_buff *skb) 82531@@ -1768,7 +1768,7 @@ static inline u32 skb_inner_network_header_len(const struct sk_buff *skb)
81327 */
81328 static inline int skb_queue_empty(const struct sk_buff_head *list)
81329 {
81330- return list->next == (struct sk_buff *)list;
81331+ return list->next == (const struct sk_buff *)list;
81332 }
81333
81334 /**
81335@@ -763,7 +763,7 @@ static inline int skb_queue_empty(const struct sk_buff_head *list)
81336 static inline bool skb_queue_is_last(const struct sk_buff_head *list,
81337 const struct sk_buff *skb)
81338 {
81339- return skb->next == (struct sk_buff *)list;
81340+ return skb->next == (const struct sk_buff *)list;
81341 }
81342
81343 /**
81344@@ -776,7 +776,7 @@ static inline bool skb_queue_is_last(const struct sk_buff_head *list,
81345 static inline bool skb_queue_is_first(const struct sk_buff_head *list,
81346 const struct sk_buff *skb)
81347 {
81348- return skb->prev == (struct sk_buff *)list;
81349+ return skb->prev == (const struct sk_buff *)list;
81350 }
81351
81352 /**
81353@@ -1686,7 +1686,7 @@ static inline u32 skb_inner_network_header_len(const struct sk_buff *skb)
81354 return skb->inner_transport_header - skb->inner_network_header; 82532 return skb->inner_transport_header - skb->inner_network_header;
81355 } 82533 }
81356 82534
@@ -81359,7 +82537,7 @@ index 37cb679..dbaebc0 100644
81359 { 82537 {
81360 return skb_network_header(skb) - skb->data; 82538 return skb_network_header(skb) - skb->data;
81361 } 82539 }
81362@@ -1746,7 +1746,7 @@ static inline int pskb_network_may_pull(struct sk_buff *skb, unsigned int len) 82540@@ -1828,7 +1828,7 @@ static inline int pskb_network_may_pull(struct sk_buff *skb, unsigned int len)
81363 * NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8) 82541 * NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
81364 */ 82542 */
81365 #ifndef NET_SKB_PAD 82543 #ifndef NET_SKB_PAD
@@ -81368,7 +82546,7 @@ index 37cb679..dbaebc0 100644
81368 #endif 82546 #endif
81369 82547
81370 int ___pskb_trim(struct sk_buff *skb, unsigned int len); 82548 int ___pskb_trim(struct sk_buff *skb, unsigned int len);
81371@@ -2345,7 +2345,7 @@ struct sk_buff *skb_recv_datagram(struct sock *sk, unsigned flags, int noblock, 82549@@ -2427,7 +2427,7 @@ struct sk_buff *skb_recv_datagram(struct sock *sk, unsigned flags, int noblock,
81372 int *err); 82550 int *err);
81373 unsigned int datagram_poll(struct file *file, struct socket *sock, 82551 unsigned int datagram_poll(struct file *file, struct socket *sock,
81374 struct poll_table_struct *wait); 82552 struct poll_table_struct *wait);
@@ -81377,7 +82555,7 @@ index 37cb679..dbaebc0 100644
81377 struct iovec *to, int size); 82555 struct iovec *to, int size);
81378 int skb_copy_and_csum_datagram_iovec(struct sk_buff *skb, int hlen, 82556 int skb_copy_and_csum_datagram_iovec(struct sk_buff *skb, int hlen,
81379 struct iovec *iov); 82557 struct iovec *iov);
81380@@ -2618,6 +2618,9 @@ static inline void nf_reset(struct sk_buff *skb) 82558@@ -2721,6 +2721,9 @@ static inline void nf_reset(struct sk_buff *skb)
81381 nf_bridge_put(skb->nf_bridge); 82559 nf_bridge_put(skb->nf_bridge);
81382 skb->nf_bridge = NULL; 82560 skb->nf_bridge = NULL;
81383 #endif 82561 #endif
@@ -81388,7 +82566,7 @@ index 37cb679..dbaebc0 100644
81388 82566
81389 static inline void nf_reset_trace(struct sk_buff *skb) 82567 static inline void nf_reset_trace(struct sk_buff *skb)
81390diff --git a/include/linux/slab.h b/include/linux/slab.h 82568diff --git a/include/linux/slab.h b/include/linux/slab.h
81391index 1e2f4fe..df49ca6 100644 82569index b5b2df6..69f5734 100644
81392--- a/include/linux/slab.h 82570--- a/include/linux/slab.h
81393+++ b/include/linux/slab.h 82571+++ b/include/linux/slab.h
81394@@ -14,15 +14,29 @@ 82572@@ -14,15 +14,29 @@
@@ -81492,10 +82670,10 @@ index 1e2f4fe..df49ca6 100644
81492 #else 82670 #else
81493 static __always_inline void *__kmalloc_node(size_t size, gfp_t flags, int node) 82671 static __always_inline void *__kmalloc_node(size_t size, gfp_t flags, int node)
81494diff --git a/include/linux/slab_def.h b/include/linux/slab_def.h 82672diff --git a/include/linux/slab_def.h b/include/linux/slab_def.h
81495index 09bfffb..4fc80fb 100644 82673index 8235dfb..47ce586 100644
81496--- a/include/linux/slab_def.h 82674--- a/include/linux/slab_def.h
81497+++ b/include/linux/slab_def.h 82675+++ b/include/linux/slab_def.h
81498@@ -36,7 +36,7 @@ struct kmem_cache { 82676@@ -38,7 +38,7 @@ struct kmem_cache {
81499 /* 4) cache creation/removal */ 82677 /* 4) cache creation/removal */
81500 const char *name; 82678 const char *name;
81501 struct list_head list; 82679 struct list_head list;
@@ -81504,7 +82682,7 @@ index 09bfffb..4fc80fb 100644
81504 int object_size; 82682 int object_size;
81505 int align; 82683 int align;
81506 82684
81507@@ -52,10 +52,14 @@ struct kmem_cache { 82685@@ -54,10 +54,14 @@ struct kmem_cache {
81508 unsigned long node_allocs; 82686 unsigned long node_allocs;
81509 unsigned long node_frees; 82687 unsigned long node_frees;
81510 unsigned long node_overflow; 82688 unsigned long node_overflow;
@@ -81537,10 +82715,10 @@ index f56bfa9..8378a26 100644
81537 int inuse; /* Offset to metadata */ 82715 int inuse; /* Offset to metadata */
81538 int align; /* Alignment */ 82716 int align; /* Alignment */
81539diff --git a/include/linux/smp.h b/include/linux/smp.h 82717diff --git a/include/linux/smp.h b/include/linux/smp.h
81540index 5da22ee..71d8a28 100644 82718index 6ae004e..2743532 100644
81541--- a/include/linux/smp.h 82719--- a/include/linux/smp.h
81542+++ b/include/linux/smp.h 82720+++ b/include/linux/smp.h
81543@@ -176,7 +176,9 @@ static inline void kick_all_cpus_sync(void) { } 82721@@ -180,7 +180,9 @@ static inline void kick_all_cpus_sync(void) { }
81544 #endif 82722 #endif
81545 82723
81546 #define get_cpu() ({ preempt_disable(); smp_processor_id(); }) 82724 #define get_cpu() ({ preempt_disable(); smp_processor_id(); })
@@ -81551,7 +82729,7 @@ index 5da22ee..71d8a28 100644
81551 /* 82729 /*
81552 * Callback to arch code if there's nosmp or maxcpus=0 on the 82730 * Callback to arch code if there's nosmp or maxcpus=0 on the
81553diff --git a/include/linux/sock_diag.h b/include/linux/sock_diag.h 82731diff --git a/include/linux/sock_diag.h b/include/linux/sock_diag.h
81554index 54f91d3..be2c379 100644 82732index 302ab80..3233276 100644
81555--- a/include/linux/sock_diag.h 82733--- a/include/linux/sock_diag.h
81556+++ b/include/linux/sock_diag.h 82734+++ b/include/linux/sock_diag.h
81557@@ -11,7 +11,7 @@ struct sock; 82735@@ -11,7 +11,7 @@ struct sock;
@@ -81624,10 +82802,10 @@ index 8af2804..c7414ef 100644
81624 #ifdef __KERNEL__ 82802 #ifdef __KERNEL__
81625 82803
81626diff --git a/include/linux/sunrpc/svc.h b/include/linux/sunrpc/svc.h 82804diff --git a/include/linux/sunrpc/svc.h b/include/linux/sunrpc/svc.h
81627index 6eecfc2..7ada79d 100644 82805index 04e7632..2e2a8a3 100644
81628--- a/include/linux/sunrpc/svc.h 82806--- a/include/linux/sunrpc/svc.h
81629+++ b/include/linux/sunrpc/svc.h 82807+++ b/include/linux/sunrpc/svc.h
81630@@ -410,7 +410,7 @@ struct svc_procedure { 82808@@ -412,7 +412,7 @@ struct svc_procedure {
81631 unsigned int pc_count; /* call count */ 82809 unsigned int pc_count; /* call count */
81632 unsigned int pc_cachetype; /* cache info (NFS) */ 82810 unsigned int pc_cachetype; /* cache info (NFS) */
81633 unsigned int pc_xdrressize; /* maximum size of XDR reply */ 82811 unsigned int pc_xdrressize; /* maximum size of XDR reply */
@@ -81693,10 +82871,10 @@ index a5ffd32..0935dea 100644
81693 extern dma_addr_t swiotlb_map_page(struct device *dev, struct page *page, 82871 extern dma_addr_t swiotlb_map_page(struct device *dev, struct page *page,
81694 unsigned long offset, size_t size, 82872 unsigned long offset, size_t size,
81695diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h 82873diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
81696index 94273bb..c2e05fc 100644 82874index a747a77..9e14df7 100644
81697--- a/include/linux/syscalls.h 82875--- a/include/linux/syscalls.h
81698+++ b/include/linux/syscalls.h 82876+++ b/include/linux/syscalls.h
81699@@ -97,8 +97,14 @@ struct sigaltstack; 82877@@ -98,8 +98,14 @@ struct sigaltstack;
81700 #define __MAP(n,...) __MAP##n(__VA_ARGS__) 82878 #define __MAP(n,...) __MAP##n(__VA_ARGS__)
81701 82879
81702 #define __SC_DECL(t, a) t a 82880 #define __SC_DECL(t, a) t a
@@ -81712,7 +82890,7 @@ index 94273bb..c2e05fc 100644
81712 #define __SC_CAST(t, a) (t) a 82890 #define __SC_CAST(t, a) (t) a
81713 #define __SC_ARGS(t, a) a 82891 #define __SC_ARGS(t, a) a
81714 #define __SC_TEST(t, a) (void)BUILD_BUG_ON_ZERO(!__TYPE_IS_LL(t) && sizeof(t) > sizeof(long)) 82892 #define __SC_TEST(t, a) (void)BUILD_BUG_ON_ZERO(!__TYPE_IS_LL(t) && sizeof(t) > sizeof(long))
81715@@ -363,11 +369,11 @@ asmlinkage long sys_sync(void); 82893@@ -371,11 +377,11 @@ asmlinkage long sys_sync(void);
81716 asmlinkage long sys_fsync(unsigned int fd); 82894 asmlinkage long sys_fsync(unsigned int fd);
81717 asmlinkage long sys_fdatasync(unsigned int fd); 82895 asmlinkage long sys_fdatasync(unsigned int fd);
81718 asmlinkage long sys_bdflush(int func, long data); 82896 asmlinkage long sys_bdflush(int func, long data);
@@ -81728,7 +82906,7 @@ index 94273bb..c2e05fc 100644
81728 asmlinkage long sys_truncate(const char __user *path, long length); 82906 asmlinkage long sys_truncate(const char __user *path, long length);
81729 asmlinkage long sys_ftruncate(unsigned int fd, unsigned long length); 82907 asmlinkage long sys_ftruncate(unsigned int fd, unsigned long length);
81730 asmlinkage long sys_stat(const char __user *filename, 82908 asmlinkage long sys_stat(const char __user *filename,
81731@@ -579,7 +585,7 @@ asmlinkage long sys_getsockname(int, struct sockaddr __user *, int __user *); 82909@@ -587,7 +593,7 @@ asmlinkage long sys_getsockname(int, struct sockaddr __user *, int __user *);
81732 asmlinkage long sys_getpeername(int, struct sockaddr __user *, int __user *); 82910 asmlinkage long sys_getpeername(int, struct sockaddr __user *, int __user *);
81733 asmlinkage long sys_send(int, void __user *, size_t, unsigned); 82911 asmlinkage long sys_send(int, void __user *, size_t, unsigned);
81734 asmlinkage long sys_sendto(int, void __user *, size_t, unsigned, 82912 asmlinkage long sys_sendto(int, void __user *, size_t, unsigned,
@@ -81782,10 +82960,10 @@ index 14a8ff2..fa95f3a 100644
81782 struct ctl_node { 82960 struct ctl_node {
81783 struct rb_node node; 82961 struct rb_node node;
81784diff --git a/include/linux/sysfs.h b/include/linux/sysfs.h 82962diff --git a/include/linux/sysfs.h b/include/linux/sysfs.h
81785index 6695040..3d4192d 100644 82963index 30b2ebe..37412ef 100644
81786--- a/include/linux/sysfs.h 82964--- a/include/linux/sysfs.h
81787+++ b/include/linux/sysfs.h 82965+++ b/include/linux/sysfs.h
81788@@ -33,7 +33,8 @@ struct attribute { 82966@@ -34,7 +34,8 @@ struct attribute {
81789 struct lock_class_key *key; 82967 struct lock_class_key *key;
81790 struct lock_class_key skey; 82968 struct lock_class_key skey;
81791 #endif 82969 #endif
@@ -81795,7 +82973,7 @@ index 6695040..3d4192d 100644
81795 82973
81796 /** 82974 /**
81797 * sysfs_attr_init - initialize a dynamically allocated sysfs attribute 82975 * sysfs_attr_init - initialize a dynamically allocated sysfs attribute
81798@@ -62,7 +63,8 @@ struct attribute_group { 82976@@ -63,7 +64,8 @@ struct attribute_group {
81799 struct attribute *, int); 82977 struct attribute *, int);
81800 struct attribute **attrs; 82978 struct attribute **attrs;
81801 struct bin_attribute **bin_attrs; 82979 struct bin_attribute **bin_attrs;
@@ -81805,7 +82983,7 @@ index 6695040..3d4192d 100644
81805 82983
81806 /** 82984 /**
81807 * Use these macros to make defining attributes easier. See include/linux/device.h 82985 * Use these macros to make defining attributes easier. See include/linux/device.h
81808@@ -126,7 +128,8 @@ struct bin_attribute { 82986@@ -127,7 +129,8 @@ struct bin_attribute {
81809 char *, loff_t, size_t); 82987 char *, loff_t, size_t);
81810 int (*mmap)(struct file *, struct kobject *, struct bin_attribute *attr, 82988 int (*mmap)(struct file *, struct kobject *, struct bin_attribute *attr,
81811 struct vm_area_struct *vma); 82989 struct vm_area_struct *vma);
@@ -81837,30 +83015,28 @@ index 387fa7d..3fcde6b 100644
81837 #ifdef CONFIG_MAGIC_SYSRQ 83015 #ifdef CONFIG_MAGIC_SYSRQ
81838 83016
81839diff --git a/include/linux/thread_info.h b/include/linux/thread_info.h 83017diff --git a/include/linux/thread_info.h b/include/linux/thread_info.h
81840index fddbe20..0312de8 100644 83018index a629e4b..3fea3d9 100644
81841--- a/include/linux/thread_info.h 83019--- a/include/linux/thread_info.h
81842+++ b/include/linux/thread_info.h 83020+++ b/include/linux/thread_info.h
81843@@ -161,6 +161,15 @@ static inline bool test_and_clear_restore_sigmask(void) 83021@@ -159,6 +159,13 @@ static inline bool test_and_clear_restore_sigmask(void)
81844 #error "no set_restore_sigmask() provided and default one won't work" 83022 #error "no set_restore_sigmask() provided and default one won't work"
81845 #endif 83023 #endif
81846 83024
81847+extern void __check_object_size(const void *ptr, unsigned long n, bool to_user); 83025+extern void __check_object_size(const void *ptr, unsigned long n, bool to_user, bool const_size);
83026+
81848+static inline void check_object_size(const void *ptr, unsigned long n, bool to_user) 83027+static inline void check_object_size(const void *ptr, unsigned long n, bool to_user)
81849+{ 83028+{
81850+#ifndef CONFIG_PAX_USERCOPY_DEBUG 83029+ __check_object_size(ptr, n, to_user, __builtin_constant_p(n));
81851+ if (!__builtin_constant_p(n))
81852+#endif
81853+ __check_object_size(ptr, n, to_user);
81854+} 83030+}
81855+ 83031+
81856 #endif /* __KERNEL__ */ 83032 #endif /* __KERNEL__ */
81857 83033
81858 #endif /* _LINUX_THREAD_INFO_H */ 83034 #endif /* _LINUX_THREAD_INFO_H */
81859diff --git a/include/linux/tty.h b/include/linux/tty.h 83035diff --git a/include/linux/tty.h b/include/linux/tty.h
81860index 97d660e..6356755 100644 83036index b90b5c2..e23a512 100644
81861--- a/include/linux/tty.h 83037--- a/include/linux/tty.h
81862+++ b/include/linux/tty.h 83038+++ b/include/linux/tty.h
81863@@ -196,7 +196,7 @@ struct tty_port { 83039@@ -202,7 +202,7 @@ struct tty_port {
81864 const struct tty_port_operations *ops; /* Port operations */ 83040 const struct tty_port_operations *ops; /* Port operations */
81865 spinlock_t lock; /* Lock protecting tty field */ 83041 spinlock_t lock; /* Lock protecting tty field */
81866 int blocked_open; /* Waiting to open */ 83042 int blocked_open; /* Waiting to open */
@@ -81869,7 +83045,7 @@ index 97d660e..6356755 100644
81869 wait_queue_head_t open_wait; /* Open waiters */ 83045 wait_queue_head_t open_wait; /* Open waiters */
81870 wait_queue_head_t close_wait; /* Close waiters */ 83046 wait_queue_head_t close_wait; /* Close waiters */
81871 wait_queue_head_t delta_msr_wait; /* Modem status change */ 83047 wait_queue_head_t delta_msr_wait; /* Modem status change */
81872@@ -278,7 +278,7 @@ struct tty_struct { 83048@@ -284,7 +284,7 @@ struct tty_struct {
81873 /* If the tty has a pending do_SAK, queue it here - akpm */ 83049 /* If the tty has a pending do_SAK, queue it here - akpm */
81874 struct work_struct SAK_work; 83050 struct work_struct SAK_work;
81875 struct tty_port *port; 83051 struct tty_port *port;
@@ -81878,7 +83054,7 @@ index 97d660e..6356755 100644
81878 83054
81879 /* Each of a tty's open files has private_data pointing to tty_file_private */ 83055 /* Each of a tty's open files has private_data pointing to tty_file_private */
81880 struct tty_file_private { 83056 struct tty_file_private {
81881@@ -545,7 +545,7 @@ extern int tty_port_open(struct tty_port *port, 83057@@ -550,7 +550,7 @@ extern int tty_port_open(struct tty_port *port,
81882 struct tty_struct *tty, struct file *filp); 83058 struct tty_struct *tty, struct file *filp);
81883 static inline int tty_port_users(struct tty_port *port) 83059 static inline int tty_port_users(struct tty_port *port)
81884 { 83060 {
@@ -81888,7 +83064,7 @@ index 97d660e..6356755 100644
81888 83064
81889 extern int tty_register_ldisc(int disc, struct tty_ldisc_ops *new_ldisc); 83065 extern int tty_register_ldisc(int disc, struct tty_ldisc_ops *new_ldisc);
81890diff --git a/include/linux/tty_driver.h b/include/linux/tty_driver.h 83066diff --git a/include/linux/tty_driver.h b/include/linux/tty_driver.h
81891index 756a609..f61242d 100644 83067index 756a609..89db85e 100644
81892--- a/include/linux/tty_driver.h 83068--- a/include/linux/tty_driver.h
81893+++ b/include/linux/tty_driver.h 83069+++ b/include/linux/tty_driver.h
81894@@ -285,7 +285,7 @@ struct tty_operations { 83070@@ -285,7 +285,7 @@ struct tty_operations {
@@ -81896,7 +83072,7 @@ index 756a609..f61242d 100644
81896 #endif 83072 #endif
81897 const struct file_operations *proc_fops; 83073 const struct file_operations *proc_fops;
81898-}; 83074-};
81899+} __do_const; 83075+} __do_const __randomize_layout;
81900 83076
81901 struct tty_driver { 83077 struct tty_driver {
81902 int magic; /* magic number for this structure */ 83078 int magic; /* magic number for this structure */
@@ -81910,10 +83086,10 @@ index 756a609..f61242d 100644
81910 extern struct list_head tty_drivers; 83086 extern struct list_head tty_drivers;
81911 83087
81912diff --git a/include/linux/tty_ldisc.h b/include/linux/tty_ldisc.h 83088diff --git a/include/linux/tty_ldisc.h b/include/linux/tty_ldisc.h
81913index f15c898..207b7d1 100644 83089index b8347c2..85d8b0f 100644
81914--- a/include/linux/tty_ldisc.h 83090--- a/include/linux/tty_ldisc.h
81915+++ b/include/linux/tty_ldisc.h 83091+++ b/include/linux/tty_ldisc.h
81916@@ -211,7 +211,7 @@ struct tty_ldisc_ops { 83092@@ -213,7 +213,7 @@ struct tty_ldisc_ops {
81917 83093
81918 struct module *owner; 83094 struct module *owner;
81919 83095
@@ -81954,10 +83130,10 @@ index 4d118ba..c3ee9bf 100644
81954 83130
81955 struct list_head { 83131 struct list_head {
81956diff --git a/include/linux/uaccess.h b/include/linux/uaccess.h 83132diff --git a/include/linux/uaccess.h b/include/linux/uaccess.h
81957index 9d8cf05..0ed74dd 100644 83133index ecd3319..8a36ded 100644
81958--- a/include/linux/uaccess.h 83134--- a/include/linux/uaccess.h
81959+++ b/include/linux/uaccess.h 83135+++ b/include/linux/uaccess.h
81960@@ -72,11 +72,11 @@ static inline unsigned long __copy_from_user_nocache(void *to, 83136@@ -75,11 +75,11 @@ static inline unsigned long __copy_from_user_nocache(void *to,
81961 long ret; \ 83137 long ret; \
81962 mm_segment_t old_fs = get_fs(); \ 83138 mm_segment_t old_fs = get_fs(); \
81963 \ 83139 \
@@ -81973,10 +83149,10 @@ index 9d8cf05..0ed74dd 100644
81973 }) 83149 })
81974 83150
81975diff --git a/include/linux/uidgid.h b/include/linux/uidgid.h 83151diff --git a/include/linux/uidgid.h b/include/linux/uidgid.h
81976index 8e522cbc..aa8572d 100644 83152index 2d1f9b6..d7a9fce 100644
81977--- a/include/linux/uidgid.h 83153--- a/include/linux/uidgid.h
81978+++ b/include/linux/uidgid.h 83154+++ b/include/linux/uidgid.h
81979@@ -197,4 +197,9 @@ static inline bool kgid_has_mapping(struct user_namespace *ns, kgid_t gid) 83155@@ -175,4 +175,9 @@ static inline bool kgid_has_mapping(struct user_namespace *ns, kgid_t gid)
81980 83156
81981 #endif /* CONFIG_USER_NS */ 83157 #endif /* CONFIG_USER_NS */
81982 83158
@@ -82038,7 +83214,7 @@ index 99c1b4d..562e6f3 100644
82038 83214
82039 static inline void put_unaligned_le16(u16 val, void *p) 83215 static inline void put_unaligned_le16(u16 val, void *p)
82040diff --git a/include/linux/usb.h b/include/linux/usb.h 83216diff --git a/include/linux/usb.h b/include/linux/usb.h
82041index 7454865..29f4bfa 100644 83217index 7f6eb85..656e806 100644
82042--- a/include/linux/usb.h 83218--- a/include/linux/usb.h
82043+++ b/include/linux/usb.h 83219+++ b/include/linux/usb.h
82044@@ -563,7 +563,7 @@ struct usb_device { 83220@@ -563,7 +563,7 @@ struct usb_device {
@@ -82050,7 +83226,7 @@ index 7454865..29f4bfa 100644
82050 83226
82051 unsigned long active_duration; 83227 unsigned long active_duration;
82052 83228
82053@@ -1641,7 +1641,7 @@ void usb_buffer_unmap_sg(const struct usb_device *dev, int is_in, 83229@@ -1642,7 +1642,7 @@ void usb_buffer_unmap_sg(const struct usb_device *dev, int is_in,
82054 83230
82055 extern int usb_control_msg(struct usb_device *dev, unsigned int pipe, 83231 extern int usb_control_msg(struct usb_device *dev, unsigned int pipe,
82056 __u8 request, __u8 requesttype, __u16 value, __u16 index, 83232 __u8 request, __u8 requesttype, __u16 value, __u16 index,
@@ -82173,7 +83349,7 @@ index 502073a..a7de024 100644
82173 #endif 83349 #endif
82174 #endif /* _LINUX_VGA_SWITCHEROO_H_ */ 83350 #endif /* _LINUX_VGA_SWITCHEROO_H_ */
82175diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h 83351diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h
82176index 4b8a891..cb8df6e 100644 83352index 4b8a891..05f2361 100644
82177--- a/include/linux/vmalloc.h 83353--- a/include/linux/vmalloc.h
82178+++ b/include/linux/vmalloc.h 83354+++ b/include/linux/vmalloc.h
82179@@ -16,6 +16,11 @@ struct vm_area_struct; /* vma defining user mapping in mm_types.h */ 83355@@ -16,6 +16,11 @@ struct vm_area_struct; /* vma defining user mapping in mm_types.h */
@@ -82188,7 +83364,15 @@ index 4b8a891..cb8df6e 100644
82188 /* bits [20..32] reserved for arch specific ioremap internals */ 83364 /* bits [20..32] reserved for arch specific ioremap internals */
82189 83365
82190 /* 83366 /*
82191@@ -142,7 +147,7 @@ extern void free_vm_area(struct vm_struct *area); 83367@@ -72,6 +77,7 @@ extern void *vzalloc_node(unsigned long size, int node);
83368 extern void *vmalloc_exec(unsigned long size);
83369 extern void *vmalloc_32(unsigned long size);
83370 extern void *vmalloc_32_user(unsigned long size);
83371+extern void *vmalloc_stack(int node);
83372 extern void *__vmalloc(unsigned long size, gfp_t gfp_mask, pgprot_t prot);
83373 extern void *__vmalloc_node_range(unsigned long size, unsigned long align,
83374 unsigned long start, unsigned long end, gfp_t gfp_mask,
83375@@ -142,7 +148,7 @@ extern void free_vm_area(struct vm_struct *area);
82192 83376
82193 /* for /dev/kmem */ 83377 /* for /dev/kmem */
82194 extern long vread(char *buf, char *addr, unsigned long count); 83378 extern long vread(char *buf, char *addr, unsigned long count);
@@ -82198,10 +83382,10 @@ index 4b8a891..cb8df6e 100644
82198 /* 83382 /*
82199 * Internals. Dont't use.. 83383 * Internals. Dont't use..
82200diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h 83384diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h
82201index a67b384..f52a537 100644 83385index 67ce70c..d540954 100644
82202--- a/include/linux/vmstat.h 83386--- a/include/linux/vmstat.h
82203+++ b/include/linux/vmstat.h 83387+++ b/include/linux/vmstat.h
82204@@ -90,18 +90,18 @@ static inline void vm_events_fold_cpu(int cpu) 83388@@ -98,18 +98,18 @@ static inline void vm_events_fold_cpu(int cpu)
82205 /* 83389 /*
82206 * Zone based page accounting with per cpu differentials. 83390 * Zone based page accounting with per cpu differentials.
82207 */ 83391 */
@@ -82225,7 +83409,7 @@ index a67b384..f52a537 100644
82225 #ifdef CONFIG_SMP 83409 #ifdef CONFIG_SMP
82226 if (x < 0) 83410 if (x < 0)
82227 x = 0; 83411 x = 0;
82228@@ -109,10 +109,10 @@ static inline unsigned long global_page_state(enum zone_stat_item item) 83412@@ -117,10 +117,10 @@ static inline unsigned long global_page_state(enum zone_stat_item item)
82229 return x; 83413 return x;
82230 } 83414 }
82231 83415
@@ -82238,7 +83422,7 @@ index a67b384..f52a537 100644
82238 #ifdef CONFIG_SMP 83422 #ifdef CONFIG_SMP
82239 if (x < 0) 83423 if (x < 0)
82240 x = 0; 83424 x = 0;
82241@@ -129,7 +129,7 @@ static inline unsigned long zone_page_state(struct zone *zone, 83425@@ -137,7 +137,7 @@ static inline unsigned long zone_page_state(struct zone *zone,
82242 static inline unsigned long zone_page_state_snapshot(struct zone *zone, 83426 static inline unsigned long zone_page_state_snapshot(struct zone *zone,
82243 enum zone_stat_item item) 83427 enum zone_stat_item item)
82244 { 83428 {
@@ -82247,7 +83431,7 @@ index a67b384..f52a537 100644
82247 83431
82248 #ifdef CONFIG_SMP 83432 #ifdef CONFIG_SMP
82249 int cpu; 83433 int cpu;
82250@@ -218,8 +218,8 @@ static inline void __mod_zone_page_state(struct zone *zone, 83434@@ -226,8 +226,8 @@ static inline void __mod_zone_page_state(struct zone *zone,
82251 83435
82252 static inline void __inc_zone_state(struct zone *zone, enum zone_stat_item item) 83436 static inline void __inc_zone_state(struct zone *zone, enum zone_stat_item item)
82253 { 83437 {
@@ -82258,7 +83442,7 @@ index a67b384..f52a537 100644
82258 } 83442 }
82259 83443
82260 static inline void __inc_zone_page_state(struct page *page, 83444 static inline void __inc_zone_page_state(struct page *page,
82261@@ -230,8 +230,8 @@ static inline void __inc_zone_page_state(struct page *page, 83445@@ -238,8 +238,8 @@ static inline void __inc_zone_page_state(struct page *page,
82262 83446
82263 static inline void __dec_zone_state(struct zone *zone, enum zone_stat_item item) 83447 static inline void __dec_zone_state(struct zone *zone, enum zone_stat_item item)
82264 { 83448 {
@@ -82352,11 +83536,24 @@ index 9a36d92..0aafe2a 100644
82352 83536
82353 void v9fs_register_trans(struct p9_trans_module *m); 83537 void v9fs_register_trans(struct p9_trans_module *m);
82354 void v9fs_unregister_trans(struct p9_trans_module *m); 83538 void v9fs_unregister_trans(struct p9_trans_module *m);
83539diff --git a/include/net/af_unix.h b/include/net/af_unix.h
83540index a175ba4..196eb82 100644
83541--- a/include/net/af_unix.h
83542+++ b/include/net/af_unix.h
83543@@ -36,7 +36,7 @@ struct unix_skb_parms {
83544 u32 secid; /* Security ID */
83545 #endif
83546 u32 consumed;
83547-};
83548+} __randomize_layout;
83549
83550 #define UNIXCB(skb) (*(struct unix_skb_parms *)&((skb)->cb))
83551 #define UNIXSID(skb) (&UNIXCB((skb)).secid)
82355diff --git a/include/net/bluetooth/l2cap.h b/include/net/bluetooth/l2cap.h 83552diff --git a/include/net/bluetooth/l2cap.h b/include/net/bluetooth/l2cap.h
82356index c853b16d..37fccb7 100644 83553index dbc4a89..4a59b5d 100644
82357--- a/include/net/bluetooth/l2cap.h 83554--- a/include/net/bluetooth/l2cap.h
82358+++ b/include/net/bluetooth/l2cap.h 83555+++ b/include/net/bluetooth/l2cap.h
82359@@ -557,7 +557,7 @@ struct l2cap_ops { 83556@@ -600,7 +600,7 @@ struct l2cap_ops {
82360 long (*get_sndtimeo) (struct l2cap_chan *chan); 83557 long (*get_sndtimeo) (struct l2cap_chan *chan);
82361 struct sk_buff *(*alloc_skb) (struct l2cap_chan *chan, 83558 struct sk_buff *(*alloc_skb) (struct l2cap_chan *chan,
82362 unsigned long len, int nb); 83559 unsigned long len, int nb);
@@ -82390,10 +83587,10 @@ index f2ae33d..c457cf0 100644
82390 /* Protects from simultaneous access to first_req list */ 83587 /* Protects from simultaneous access to first_req list */
82391 spinlock_t info_list_lock; 83588 spinlock_t info_list_lock;
82392diff --git a/include/net/flow.h b/include/net/flow.h 83589diff --git a/include/net/flow.h b/include/net/flow.h
82393index 65ce471..b7bbe9b 100644 83590index d23e7fa..e188307 100644
82394--- a/include/net/flow.h 83591--- a/include/net/flow.h
82395+++ b/include/net/flow.h 83592+++ b/include/net/flow.h
82396@@ -222,6 +222,6 @@ struct flow_cache_object *flow_cache_lookup(struct net *net, 83593@@ -221,6 +221,6 @@ struct flow_cache_object *flow_cache_lookup(struct net *net,
82397 83594
82398 void flow_cache_flush(void); 83595 void flow_cache_flush(void);
82399 void flow_cache_flush_deferred(void); 83596 void flow_cache_flush_deferred(void);
@@ -82402,10 +83599,10 @@ index 65ce471..b7bbe9b 100644
82402 83599
82403 #endif 83600 #endif
82404diff --git a/include/net/genetlink.h b/include/net/genetlink.h 83601diff --git a/include/net/genetlink.h b/include/net/genetlink.h
82405index 1b177ed..a24a138 100644 83602index 93695f0..766d71c 100644
82406--- a/include/net/genetlink.h 83603--- a/include/net/genetlink.h
82407+++ b/include/net/genetlink.h 83604+++ b/include/net/genetlink.h
82408@@ -118,7 +118,7 @@ struct genl_ops { 83605@@ -120,7 +120,7 @@ struct genl_ops {
82409 u8 cmd; 83606 u8 cmd;
82410 u8 internal_flags; 83607 u8 internal_flags;
82411 u8 flags; 83608 u8 flags;
@@ -82441,7 +83638,7 @@ index c55aeed..b3393f4 100644
82441 /** inet_connection_sock - INET connection oriented sock 83638 /** inet_connection_sock - INET connection oriented sock
82442 * 83639 *
82443diff --git a/include/net/inetpeer.h b/include/net/inetpeer.h 83640diff --git a/include/net/inetpeer.h b/include/net/inetpeer.h
82444index f4e127a..c3d5e9c 100644 83641index 6efe73c..fa94270 100644
82445--- a/include/net/inetpeer.h 83642--- a/include/net/inetpeer.h
82446+++ b/include/net/inetpeer.h 83643+++ b/include/net/inetpeer.h
82447@@ -47,8 +47,8 @@ struct inet_peer { 83644@@ -47,8 +47,8 @@ struct inet_peer {
@@ -82455,7 +83652,7 @@ index f4e127a..c3d5e9c 100644
82455 }; 83652 };
82456 struct rcu_head rcu; 83653 struct rcu_head rcu;
82457 struct inet_peer *gc_next; 83654 struct inet_peer *gc_next;
82458@@ -178,16 +178,13 @@ static inline void inet_peer_refcheck(const struct inet_peer *p) 83655@@ -177,16 +177,13 @@ static inline void inet_peer_refcheck(const struct inet_peer *p)
82459 /* can be called with or without local BH being disabled */ 83656 /* can be called with or without local BH being disabled */
82460 static inline int inet_getid(struct inet_peer *p, int more) 83657 static inline int inet_getid(struct inet_peer *p, int more)
82461 { 83658 {
@@ -82478,10 +83675,10 @@ index f4e127a..c3d5e9c 100644
82478 83675
82479 #endif /* _NET_INETPEER_H */ 83676 #endif /* _NET_INETPEER_H */
82480diff --git a/include/net/ip.h b/include/net/ip.h 83677diff --git a/include/net/ip.h b/include/net/ip.h
82481index 5a25f36..2e73203 100644 83678index 23be0fd..0cb3e2c 100644
82482--- a/include/net/ip.h 83679--- a/include/net/ip.h
82483+++ b/include/net/ip.h 83680+++ b/include/net/ip.h
82484@@ -219,7 +219,7 @@ static inline void snmp_mib_free(void __percpu *ptr[SNMP_ARRAY_SZ]) 83681@@ -214,7 +214,7 @@ static inline void snmp_mib_free(void __percpu *ptr[SNMP_ARRAY_SZ])
82485 83682
82486 void inet_get_local_port_range(struct net *net, int *low, int *high); 83683 void inet_get_local_port_range(struct net *net, int *low, int *high);
82487 83684
@@ -82540,10 +83737,10 @@ index 5679d92..2e7a690 100644
82540 struct list_head est_list; /* estimator list */ 83737 struct list_head est_list; /* estimator list */
82541 spinlock_t est_lock; 83738 spinlock_t est_lock;
82542diff --git a/include/net/irda/ircomm_tty.h b/include/net/irda/ircomm_tty.h 83739diff --git a/include/net/irda/ircomm_tty.h b/include/net/irda/ircomm_tty.h
82543index 0224402..dafaf94a 100644 83740index 8d4f588..2e37ad2 100644
82544--- a/include/net/irda/ircomm_tty.h 83741--- a/include/net/irda/ircomm_tty.h
82545+++ b/include/net/irda/ircomm_tty.h 83742+++ b/include/net/irda/ircomm_tty.h
82546@@ -35,6 +35,7 @@ 83743@@ -33,6 +33,7 @@
82547 #include <linux/termios.h> 83744 #include <linux/termios.h>
82548 #include <linux/timer.h> 83745 #include <linux/timer.h>
82549 #include <linux/tty.h> /* struct tty_struct */ 83746 #include <linux/tty.h> /* struct tty_struct */
@@ -82632,10 +83829,10 @@ index 567c681..cd73ac0 100644
82632 struct llc_sap_state { 83829 struct llc_sap_state {
82633 u8 curr_state; 83830 u8 curr_state;
82634diff --git a/include/net/mac80211.h b/include/net/mac80211.h 83831diff --git a/include/net/mac80211.h b/include/net/mac80211.h
82635index 7ceed99..d3ffaa2 100644 83832index f4ab2fb..71a85ba 100644
82636--- a/include/net/mac80211.h 83833--- a/include/net/mac80211.h
82637+++ b/include/net/mac80211.h 83834+++ b/include/net/mac80211.h
82638@@ -4407,7 +4407,7 @@ struct rate_control_ops { 83835@@ -4476,7 +4476,7 @@ struct rate_control_ops {
82639 void (*add_sta_debugfs)(void *priv, void *priv_sta, 83836 void (*add_sta_debugfs)(void *priv, void *priv_sta,
82640 struct dentry *dir); 83837 struct dentry *dir);
82641 void (*remove_sta_debugfs)(void *priv, void *priv_sta); 83838 void (*remove_sta_debugfs)(void *priv, void *priv_sta);
@@ -82645,10 +83842,10 @@ index 7ceed99..d3ffaa2 100644
82645 static inline int rate_supported(struct ieee80211_sta *sta, 83842 static inline int rate_supported(struct ieee80211_sta *sta,
82646 enum ieee80211_band band, 83843 enum ieee80211_band band,
82647diff --git a/include/net/neighbour.h b/include/net/neighbour.h 83844diff --git a/include/net/neighbour.h b/include/net/neighbour.h
82648index 536501a..47b7982 100644 83845index 7277caf..fd095bc 100644
82649--- a/include/net/neighbour.h 83846--- a/include/net/neighbour.h
82650+++ b/include/net/neighbour.h 83847+++ b/include/net/neighbour.h
82651@@ -123,7 +123,7 @@ struct neigh_ops { 83848@@ -163,7 +163,7 @@ struct neigh_ops {
82652 void (*error_report)(struct neighbour *, struct sk_buff *); 83849 void (*error_report)(struct neighbour *, struct sk_buff *);
82653 int (*output)(struct neighbour *, struct sk_buff *); 83850 int (*output)(struct neighbour *, struct sk_buff *);
82654 int (*connected_output)(struct neighbour *, struct sk_buff *); 83851 int (*connected_output)(struct neighbour *, struct sk_buff *);
@@ -82657,7 +83854,7 @@ index 536501a..47b7982 100644
82657 83854
82658 struct pneigh_entry { 83855 struct pneigh_entry {
82659 struct pneigh_entry *next; 83856 struct pneigh_entry *next;
82660@@ -163,7 +163,6 @@ struct neigh_table { 83857@@ -203,7 +203,6 @@ struct neigh_table {
82661 void (*proxy_redo)(struct sk_buff *skb); 83858 void (*proxy_redo)(struct sk_buff *skb);
82662 char *id; 83859 char *id;
82663 struct neigh_parms parms; 83860 struct neigh_parms parms;
@@ -82665,17 +83862,17 @@ index 536501a..47b7982 100644
82665 int gc_interval; 83862 int gc_interval;
82666 int gc_thresh1; 83863 int gc_thresh1;
82667 int gc_thresh2; 83864 int gc_thresh2;
82668@@ -178,7 +177,7 @@ struct neigh_table { 83865@@ -218,7 +217,7 @@ struct neigh_table {
82669 struct neigh_statistics __percpu *stats; 83866 struct neigh_statistics __percpu *stats;
82670 struct neigh_hash_table __rcu *nht; 83867 struct neigh_hash_table __rcu *nht;
82671 struct pneigh_entry **phash_buckets; 83868 struct pneigh_entry **phash_buckets;
82672-}; 83869-};
82673+} __randomize_layout; 83870+} __randomize_layout;
82674 83871
82675 #define NEIGH_PRIV_ALIGN sizeof(long long) 83872 static inline int neigh_parms_family(struct neigh_parms *p)
82676 #define NEIGH_ENTRY_SIZE(size) ALIGN((size), NEIGH_PRIV_ALIGN) 83873 {
82677diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h 83874diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h
82678index da68c9a..c4a0720 100644 83875index 991dcd9..ab58d00 100644
82679--- a/include/net/net_namespace.h 83876--- a/include/net/net_namespace.h
82680+++ b/include/net/net_namespace.h 83877+++ b/include/net/net_namespace.h
82681@@ -124,8 +124,8 @@ struct net { 83878@@ -124,8 +124,8 @@ struct net {
@@ -82689,7 +83886,7 @@ index da68c9a..c4a0720 100644
82689 83886
82690 /* 83887 /*
82691 * ifindex generation is per-net namespace, and loopback is 83888 * ifindex generation is per-net namespace, and loopback is
82692@@ -281,7 +281,11 @@ static inline struct net *read_pnet(struct net * const *pnet) 83889@@ -289,7 +289,11 @@ static inline struct net *read_pnet(struct net * const *pnet)
82693 #define __net_init __init 83890 #define __net_init __init
82694 #define __net_exit __exit_refok 83891 #define __net_exit __exit_refok
82695 #define __net_initdata __initdata 83892 #define __net_initdata __initdata
@@ -82701,7 +83898,7 @@ index da68c9a..c4a0720 100644
82701 #endif 83898 #endif
82702 83899
82703 struct pernet_operations { 83900 struct pernet_operations {
82704@@ -291,7 +295,7 @@ struct pernet_operations { 83901@@ -299,7 +303,7 @@ struct pernet_operations {
82705 void (*exit_batch)(struct list_head *net_exit_list); 83902 void (*exit_batch)(struct list_head *net_exit_list);
82706 int *id; 83903 int *id;
82707 size_t size; 83904 size_t size;
@@ -82710,7 +83907,7 @@ index da68c9a..c4a0720 100644
82710 83907
82711 /* 83908 /*
82712 * Use these carefully. If you implement a network device and it 83909 * Use these carefully. If you implement a network device and it
82713@@ -339,23 +343,23 @@ static inline void unregister_net_sysctl_table(struct ctl_table_header *header) 83910@@ -347,23 +351,23 @@ static inline void unregister_net_sysctl_table(struct ctl_table_header *header)
82714 83911
82715 static inline int rt_genid_ipv4(struct net *net) 83912 static inline int rt_genid_ipv4(struct net *net)
82716 { 83913 {
@@ -82738,7 +83935,7 @@ index da68c9a..c4a0720 100644
82738 } 83935 }
82739 #else 83936 #else
82740 static inline int rt_genid_ipv6(struct net *net) 83937 static inline int rt_genid_ipv6(struct net *net)
82741@@ -377,12 +381,12 @@ static inline void rt_genid_bump_all(struct net *net) 83938@@ -385,12 +389,12 @@ static inline void rt_genid_bump_all(struct net *net)
82742 83939
82743 static inline int fnhe_genid(struct net *net) 83940 static inline int fnhe_genid(struct net *net)
82744 { 83941 {
@@ -82780,7 +83977,7 @@ index 2b47eaa..6d5bcc2 100644
82780 83977
82781 /** 83978 /**
82782diff --git a/include/net/netns/conntrack.h b/include/net/netns/conntrack.h 83979diff --git a/include/net/netns/conntrack.h b/include/net/netns/conntrack.h
82783index c9c0c53..53f24c3 100644 83980index fbcc7fa..03c7e51 100644
82784--- a/include/net/netns/conntrack.h 83981--- a/include/net/netns/conntrack.h
82785+++ b/include/net/netns/conntrack.h 83982+++ b/include/net/netns/conntrack.h
82786@@ -12,10 +12,10 @@ struct nf_conntrack_ecache; 83983@@ -12,10 +12,10 @@ struct nf_conntrack_ecache;
@@ -82806,10 +84003,10 @@ index c9c0c53..53f24c3 100644
82806 }; 84003 };
82807 84004
82808diff --git a/include/net/netns/ipv4.h b/include/net/netns/ipv4.h 84005diff --git a/include/net/netns/ipv4.h b/include/net/netns/ipv4.h
82809index ee520cb..9a0fd88 100644 84006index 80f500a..f0c23c2 100644
82810--- a/include/net/netns/ipv4.h 84007--- a/include/net/netns/ipv4.h
82811+++ b/include/net/netns/ipv4.h 84008+++ b/include/net/netns/ipv4.h
82812@@ -72,7 +72,7 @@ struct netns_ipv4 { 84009@@ -74,7 +74,7 @@ struct netns_ipv4 {
82813 84010
82814 kgid_t sysctl_ping_group_range[2]; 84011 kgid_t sysctl_ping_group_range[2];
82815 84012
@@ -82818,7 +84015,7 @@ index ee520cb..9a0fd88 100644
82818 84015
82819 #ifdef CONFIG_IP_MROUTE 84016 #ifdef CONFIG_IP_MROUTE
82820 #ifndef CONFIG_IP_MROUTE_MULTIPLE_TABLES 84017 #ifndef CONFIG_IP_MROUTE_MULTIPLE_TABLES
82821@@ -82,6 +82,6 @@ struct netns_ipv4 { 84018@@ -84,6 +84,6 @@ struct netns_ipv4 {
82822 struct fib_rules_ops *mr_rules_ops; 84019 struct fib_rules_ops *mr_rules_ops;
82823 #endif 84020 #endif
82824 #endif 84021 #endif
@@ -82827,10 +84024,10 @@ index ee520cb..9a0fd88 100644
82827 }; 84024 };
82828 #endif 84025 #endif
82829diff --git a/include/net/netns/ipv6.h b/include/net/netns/ipv6.h 84026diff --git a/include/net/netns/ipv6.h b/include/net/netns/ipv6.h
82830index 0fb2401..477d81c 100644 84027index 21edaf1..4c5faae 100644
82831--- a/include/net/netns/ipv6.h 84028--- a/include/net/netns/ipv6.h
82832+++ b/include/net/netns/ipv6.h 84029+++ b/include/net/netns/ipv6.h
82833@@ -71,8 +71,8 @@ struct netns_ipv6 { 84030@@ -73,8 +73,8 @@ struct netns_ipv6 {
82834 struct fib_rules_ops *mr6_rules_ops; 84031 struct fib_rules_ops *mr6_rules_ops;
82835 #endif 84032 #endif
82836 #endif 84033 #endif
@@ -82842,12 +84039,12 @@ index 0fb2401..477d81c 100644
82842 84039
82843 #if IS_ENABLED(CONFIG_NF_DEFRAG_IPV6) 84040 #if IS_ENABLED(CONFIG_NF_DEFRAG_IPV6)
82844diff --git a/include/net/ping.h b/include/net/ping.h 84041diff --git a/include/net/ping.h b/include/net/ping.h
82845index 90f4841..74446a8 100644 84042index 026479b..d9b2829 100644
82846--- a/include/net/ping.h 84043--- a/include/net/ping.h
82847+++ b/include/net/ping.h 84044+++ b/include/net/ping.h
82848@@ -56,7 +56,7 @@ struct ping_iter_state { 84045@@ -54,7 +54,7 @@ struct ping_iter_state {
84046
82849 extern struct proto ping_prot; 84047 extern struct proto ping_prot;
82850 extern struct ping_table ping_table;
82851 #if IS_ENABLED(CONFIG_IPV6) 84048 #if IS_ENABLED(CONFIG_IPV6)
82852-extern struct pingv6_ops pingv6_ops; 84049-extern struct pingv6_ops pingv6_ops;
82853+extern struct pingv6_ops *pingv6_ops; 84050+extern struct pingv6_ops *pingv6_ops;
@@ -82855,19 +84052,19 @@ index 90f4841..74446a8 100644
82855 84052
82856 struct pingfakehdr { 84053 struct pingfakehdr {
82857diff --git a/include/net/protocol.h b/include/net/protocol.h 84054diff --git a/include/net/protocol.h b/include/net/protocol.h
82858index fbf7676..a5e21c3 100644 84055index a7e986b..dc67bce 100644
82859--- a/include/net/protocol.h 84056--- a/include/net/protocol.h
82860+++ b/include/net/protocol.h 84057+++ b/include/net/protocol.h
82861@@ -44,7 +44,7 @@ struct net_protocol { 84058@@ -49,7 +49,7 @@ struct net_protocol {
82862 void (*err_handler)(struct sk_buff *skb, u32 info); 84059 * socket lookup?
82863 unsigned int no_policy:1, 84060 */
82864 netns_ok:1; 84061 icmp_strict_tag_validation:1;
82865-}; 84062-};
82866+} __do_const; 84063+} __do_const;
82867 84064
82868 #if IS_ENABLED(CONFIG_IPV6) 84065 #if IS_ENABLED(CONFIG_IPV6)
82869 struct inet6_protocol { 84066 struct inet6_protocol {
82870@@ -57,7 +57,7 @@ struct inet6_protocol { 84067@@ -62,7 +62,7 @@ struct inet6_protocol {
82871 u8 type, u8 code, int offset, 84068 u8 type, u8 code, int offset,
82872 __be32 info); 84069 __be32 info);
82873 unsigned int flags; /* INET6_PROTO_xxx */ 84070 unsigned int flags; /* INET6_PROTO_xxx */
@@ -82877,23 +84074,23 @@ index fbf7676..a5e21c3 100644
82877 #define INET6_PROTO_NOPOLICY 0x1 84074 #define INET6_PROTO_NOPOLICY 0x1
82878 #define INET6_PROTO_FINAL 0x2 84075 #define INET6_PROTO_FINAL 0x2
82879diff --git a/include/net/rtnetlink.h b/include/net/rtnetlink.h 84076diff --git a/include/net/rtnetlink.h b/include/net/rtnetlink.h
82880index bb13a18..e734116 100644 84077index 661e45d..54c39df 100644
82881--- a/include/net/rtnetlink.h 84078--- a/include/net/rtnetlink.h
82882+++ b/include/net/rtnetlink.h 84079+++ b/include/net/rtnetlink.h
82883@@ -79,7 +79,7 @@ struct rtnl_link_ops { 84080@@ -93,7 +93,7 @@ struct rtnl_link_ops {
82884 const struct net_device *dev); 84081 int (*fill_slave_info)(struct sk_buff *skb,
82885 unsigned int (*get_num_tx_queues)(void); 84082 const struct net_device *dev,
82886 unsigned int (*get_num_rx_queues)(void); 84083 const struct net_device *slave_dev);
82887-}; 84084-};
82888+} __do_const; 84085+} __do_const;
82889 84086
82890 int __rtnl_link_register(struct rtnl_link_ops *ops); 84087 int __rtnl_link_register(struct rtnl_link_ops *ops);
82891 void __rtnl_link_unregister(struct rtnl_link_ops *ops); 84088 void __rtnl_link_unregister(struct rtnl_link_ops *ops);
82892diff --git a/include/net/sctp/checksum.h b/include/net/sctp/checksum.h 84089diff --git a/include/net/sctp/checksum.h b/include/net/sctp/checksum.h
82893index 6bd44fe..96f364e 100644 84090index 4a5b9a3..ca27d73 100644
82894--- a/include/net/sctp/checksum.h 84091--- a/include/net/sctp/checksum.h
82895+++ b/include/net/sctp/checksum.h 84092+++ b/include/net/sctp/checksum.h
82896@@ -62,8 +62,8 @@ static inline __le32 sctp_compute_cksum(const struct sk_buff *skb, 84093@@ -61,8 +61,8 @@ static inline __le32 sctp_compute_cksum(const struct sk_buff *skb,
82897 unsigned int offset) 84094 unsigned int offset)
82898 { 84095 {
82899 struct sctphdr *sh = sctp_hdr(skb); 84096 struct sctphdr *sh = sctp_hdr(skb);
@@ -82905,10 +84102,10 @@ index 6bd44fe..96f364e 100644
82905 .combine = sctp_csum_combine, 84102 .combine = sctp_csum_combine,
82906 }; 84103 };
82907diff --git a/include/net/sctp/sm.h b/include/net/sctp/sm.h 84104diff --git a/include/net/sctp/sm.h b/include/net/sctp/sm.h
82908index 4ef75af..5aa073a 100644 84105index 7f4eeb3..37e8fe1 100644
82909--- a/include/net/sctp/sm.h 84106--- a/include/net/sctp/sm.h
82910+++ b/include/net/sctp/sm.h 84107+++ b/include/net/sctp/sm.h
82911@@ -81,7 +81,7 @@ typedef void (sctp_timer_event_t) (unsigned long); 84108@@ -80,7 +80,7 @@ typedef void (sctp_timer_event_t) (unsigned long);
82912 typedef struct { 84109 typedef struct {
82913 sctp_state_fn_t *fn; 84110 sctp_state_fn_t *fn;
82914 const char *name; 84111 const char *name;
@@ -82917,7 +84114,7 @@ index 4ef75af..5aa073a 100644
82917 84114
82918 /* A naming convention of "sctp_sf_xxx" applies to all the state functions 84115 /* A naming convention of "sctp_sf_xxx" applies to all the state functions
82919 * currently in use. 84116 * currently in use.
82920@@ -293,7 +293,7 @@ __u32 sctp_generate_tag(const struct sctp_endpoint *); 84117@@ -292,7 +292,7 @@ __u32 sctp_generate_tag(const struct sctp_endpoint *);
82921 __u32 sctp_generate_tsn(const struct sctp_endpoint *); 84118 __u32 sctp_generate_tsn(const struct sctp_endpoint *);
82922 84119
82923 /* Extern declarations for major data structures. */ 84120 /* Extern declarations for major data structures. */
@@ -82927,10 +84124,10 @@ index 4ef75af..5aa073a 100644
82927 84124
82928 /* Get the size of a DATA chunk payload. */ 84125 /* Get the size of a DATA chunk payload. */
82929diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h 84126diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h
82930index 0a248b3..4dcbe5c 100644 84127index 0dfcc92..7967849 100644
82931--- a/include/net/sctp/structs.h 84128--- a/include/net/sctp/structs.h
82932+++ b/include/net/sctp/structs.h 84129+++ b/include/net/sctp/structs.h
82933@@ -508,7 +508,7 @@ struct sctp_pf { 84130@@ -507,7 +507,7 @@ struct sctp_pf {
82934 struct sctp_association *asoc); 84131 struct sctp_association *asoc);
82935 void (*addr_v4map) (struct sctp_sock *, union sctp_addr *); 84132 void (*addr_v4map) (struct sctp_sock *, union sctp_addr *);
82936 struct sctp_af *af; 84133 struct sctp_af *af;
@@ -82940,7 +84137,7 @@ index 0a248b3..4dcbe5c 100644
82940 84137
82941 /* Structure to track chunk fragments that have been acked, but peer 84138 /* Structure to track chunk fragments that have been acked, but peer
82942diff --git a/include/net/sock.h b/include/net/sock.h 84139diff --git a/include/net/sock.h b/include/net/sock.h
82943index 2ef3c3e..e02013e 100644 84140index b9586a1..b2948c0 100644
82944--- a/include/net/sock.h 84141--- a/include/net/sock.h
82945+++ b/include/net/sock.h 84142+++ b/include/net/sock.h
82946@@ -348,7 +348,7 @@ struct sock { 84143@@ -348,7 +348,7 @@ struct sock {
@@ -82952,7 +84149,16 @@ index 2ef3c3e..e02013e 100644
82952 int sk_rcvbuf; 84149 int sk_rcvbuf;
82953 84150
82954 struct sk_filter __rcu *sk_filter; 84151 struct sk_filter __rcu *sk_filter;
82955@@ -1209,7 +1209,7 @@ static inline u64 memcg_memory_allocated_read(struct cg_proto *prot) 84152@@ -1036,7 +1036,7 @@ struct proto {
84153 void (*destroy_cgroup)(struct mem_cgroup *memcg);
84154 struct cg_proto *(*proto_cgroup)(struct mem_cgroup *memcg);
84155 #endif
84156-};
84157+} __randomize_layout;
84158
84159 /*
84160 * Bits in struct cg_proto.flags
84161@@ -1223,7 +1223,7 @@ static inline u64 memcg_memory_allocated_read(struct cg_proto *prot)
82956 return ret >> PAGE_SHIFT; 84162 return ret >> PAGE_SHIFT;
82957 } 84163 }
82958 84164
@@ -82961,7 +84167,16 @@ index 2ef3c3e..e02013e 100644
82961 sk_memory_allocated(const struct sock *sk) 84167 sk_memory_allocated(const struct sock *sk)
82962 { 84168 {
82963 struct proto *prot = sk->sk_prot; 84169 struct proto *prot = sk->sk_prot;
82964@@ -1813,7 +1813,7 @@ static inline void sk_nocaps_add(struct sock *sk, netdev_features_t flags) 84170@@ -1368,7 +1368,7 @@ struct sock_iocb {
84171 struct scm_cookie *scm;
84172 struct msghdr *msg, async_msg;
84173 struct kiocb *kiocb;
84174-};
84175+} __randomize_layout;
84176
84177 static inline struct sock_iocb *kiocb_to_siocb(struct kiocb *iocb)
84178 {
84179@@ -1830,7 +1830,7 @@ static inline void sk_nocaps_add(struct sock *sk, netdev_features_t flags)
82965 } 84180 }
82966 84181
82967 static inline int skb_do_copy_data_nocache(struct sock *sk, struct sk_buff *skb, 84182 static inline int skb_do_copy_data_nocache(struct sock *sk, struct sk_buff *skb,
@@ -82970,7 +84185,7 @@ index 2ef3c3e..e02013e 100644
82970 int copy, int offset) 84185 int copy, int offset)
82971 { 84186 {
82972 if (skb->ip_summed == CHECKSUM_NONE) { 84187 if (skb->ip_summed == CHECKSUM_NONE) {
82973@@ -2075,7 +2075,7 @@ static inline void sk_stream_moderate_sndbuf(struct sock *sk) 84188@@ -2092,7 +2092,7 @@ static inline void sk_stream_moderate_sndbuf(struct sock *sk)
82974 } 84189 }
82975 } 84190 }
82976 84191
@@ -82980,37 +84195,10 @@ index 2ef3c3e..e02013e 100644
82980 /** 84195 /**
82981 * sk_page_frag - return an appropriate page_frag 84196 * sk_page_frag - return an appropriate page_frag
82982diff --git a/include/net/tcp.h b/include/net/tcp.h 84197diff --git a/include/net/tcp.h b/include/net/tcp.h
82983index 9250d62..10a7f03 100644 84198index 743acce..44a58b0 100644
82984--- a/include/net/tcp.h 84199--- a/include/net/tcp.h
82985+++ b/include/net/tcp.h 84200+++ b/include/net/tcp.h
82986@@ -480,20 +480,21 @@ struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb, 84201@@ -541,7 +541,7 @@ void tcp_retransmit_timer(struct sock *sk);
82987 #ifdef CONFIG_SYN_COOKIES
82988 #include <linux/ktime.h>
82989
82990-/* Syncookies use a monotonic timer which increments every 64 seconds.
82991+/* Syncookies use a monotonic timer which increments every 60 seconds.
82992 * This counter is used both as a hash input and partially encoded into
82993 * the cookie value. A cookie is only validated further if the delta
82994 * between the current counter value and the encoded one is less than this,
82995- * i.e. a sent cookie is valid only at most for 128 seconds (or less if
82996+ * i.e. a sent cookie is valid only at most for 2*60 seconds (or less if
82997 * the counter advances immediately after a cookie is generated).
82998 */
82999 #define MAX_SYNCOOKIE_AGE 2
83000
83001 static inline u32 tcp_cookie_time(void)
83002 {
83003- struct timespec now;
83004- getnstimeofday(&now);
83005- return now.tv_sec >> 6; /* 64 seconds granularity */
83006+ u64 val = get_jiffies_64();
83007+
83008+ do_div(val, 60 * HZ);
83009+ return val;
83010 }
83011
83012 u32 __cookie_v4_init_sequence(const struct iphdr *iph, const struct tcphdr *th,
83013@@ -540,7 +541,7 @@ void tcp_retransmit_timer(struct sock *sk);
83014 void tcp_xmit_retransmit_queue(struct sock *); 84202 void tcp_xmit_retransmit_queue(struct sock *);
83015 void tcp_simple_retransmit(struct sock *); 84203 void tcp_simple_retransmit(struct sock *);
83016 int tcp_trim_head(struct sock *, struct sk_buff *, u32); 84204 int tcp_trim_head(struct sock *, struct sk_buff *, u32);
@@ -83019,7 +84207,7 @@ index 9250d62..10a7f03 100644
83019 84207
83020 void tcp_send_probe0(struct sock *); 84208 void tcp_send_probe0(struct sock *);
83021 void tcp_send_partial(struct sock *); 84209 void tcp_send_partial(struct sock *);
83022@@ -711,8 +712,8 @@ struct tcp_skb_cb { 84210@@ -710,8 +710,8 @@ struct tcp_skb_cb {
83023 struct inet6_skb_parm h6; 84211 struct inet6_skb_parm h6;
83024 #endif 84212 #endif
83025 } header; /* For incoming frames */ 84213 } header; /* For incoming frames */
@@ -83030,7 +84218,7 @@ index 9250d62..10a7f03 100644
83030 __u32 when; /* used to compute rtt's */ 84218 __u32 when; /* used to compute rtt's */
83031 __u8 tcp_flags; /* TCP header flags. (tcp[13]) */ 84219 __u8 tcp_flags; /* TCP header flags. (tcp[13]) */
83032 84220
83033@@ -726,7 +727,7 @@ struct tcp_skb_cb { 84221@@ -725,7 +725,7 @@ struct tcp_skb_cb {
83034 84222
83035 __u8 ip_dsfield; /* IPv4 tos or IPv6 dsfield */ 84223 __u8 ip_dsfield; /* IPv4 tos or IPv6 dsfield */
83036 /* 1 byte hole */ 84224 /* 1 byte hole */
@@ -83040,10 +84228,10 @@ index 9250d62..10a7f03 100644
83040 84228
83041 #define TCP_SKB_CB(__skb) ((struct tcp_skb_cb *)&((__skb)->cb[0])) 84229 #define TCP_SKB_CB(__skb) ((struct tcp_skb_cb *)&((__skb)->cb[0]))
83042diff --git a/include/net/xfrm.h b/include/net/xfrm.h 84230diff --git a/include/net/xfrm.h b/include/net/xfrm.h
83043index 6b82fdf..14d74d2 100644 84231index fb5654a..4457522 100644
83044--- a/include/net/xfrm.h 84232--- a/include/net/xfrm.h
83045+++ b/include/net/xfrm.h 84233+++ b/include/net/xfrm.h
83046@@ -287,7 +287,6 @@ struct xfrm_dst; 84234@@ -286,7 +286,6 @@ struct xfrm_dst;
83047 struct xfrm_policy_afinfo { 84235 struct xfrm_policy_afinfo {
83048 unsigned short family; 84236 unsigned short family;
83049 struct dst_ops *dst_ops; 84237 struct dst_ops *dst_ops;
@@ -83051,7 +84239,7 @@ index 6b82fdf..14d74d2 100644
83051 struct dst_entry *(*dst_lookup)(struct net *net, int tos, 84239 struct dst_entry *(*dst_lookup)(struct net *net, int tos,
83052 const xfrm_address_t *saddr, 84240 const xfrm_address_t *saddr,
83053 const xfrm_address_t *daddr); 84241 const xfrm_address_t *daddr);
83054@@ -305,7 +304,7 @@ struct xfrm_policy_afinfo { 84242@@ -304,7 +303,7 @@ struct xfrm_policy_afinfo {
83055 struct net_device *dev, 84243 struct net_device *dev,
83056 const struct flowi *fl); 84244 const struct flowi *fl);
83057 struct dst_entry *(*blackhole_route)(struct net *net, struct dst_entry *orig); 84245 struct dst_entry *(*blackhole_route)(struct net *net, struct dst_entry *orig);
@@ -83060,7 +84248,7 @@ index 6b82fdf..14d74d2 100644
83060 84248
83061 int xfrm_policy_register_afinfo(struct xfrm_policy_afinfo *afinfo); 84249 int xfrm_policy_register_afinfo(struct xfrm_policy_afinfo *afinfo);
83062 int xfrm_policy_unregister_afinfo(struct xfrm_policy_afinfo *afinfo); 84250 int xfrm_policy_unregister_afinfo(struct xfrm_policy_afinfo *afinfo);
83063@@ -344,7 +343,7 @@ struct xfrm_state_afinfo { 84251@@ -343,7 +342,7 @@ struct xfrm_state_afinfo {
83064 int (*transport_finish)(struct sk_buff *skb, 84252 int (*transport_finish)(struct sk_buff *skb,
83065 int async); 84253 int async);
83066 void (*local_error)(struct sk_buff *skb, u32 mtu); 84254 void (*local_error)(struct sk_buff *skb, u32 mtu);
@@ -83069,7 +84257,7 @@ index 6b82fdf..14d74d2 100644
83069 84257
83070 int xfrm_state_register_afinfo(struct xfrm_state_afinfo *afinfo); 84258 int xfrm_state_register_afinfo(struct xfrm_state_afinfo *afinfo);
83071 int xfrm_state_unregister_afinfo(struct xfrm_state_afinfo *afinfo); 84259 int xfrm_state_unregister_afinfo(struct xfrm_state_afinfo *afinfo);
83072@@ -429,7 +428,7 @@ struct xfrm_mode { 84260@@ -428,7 +427,7 @@ struct xfrm_mode {
83073 struct module *owner; 84261 struct module *owner;
83074 unsigned int encap; 84262 unsigned int encap;
83075 int flags; 84263 int flags;
@@ -83078,7 +84266,7 @@ index 6b82fdf..14d74d2 100644
83078 84266
83079 /* Flags for xfrm_mode. */ 84267 /* Flags for xfrm_mode. */
83080 enum { 84268 enum {
83081@@ -526,7 +525,7 @@ struct xfrm_policy { 84269@@ -525,7 +524,7 @@ struct xfrm_policy {
83082 struct timer_list timer; 84270 struct timer_list timer;
83083 84271
83084 struct flow_cache_object flo; 84272 struct flow_cache_object flo;
@@ -83087,7 +84275,7 @@ index 6b82fdf..14d74d2 100644
83087 u32 priority; 84275 u32 priority;
83088 u32 index; 84276 u32 index;
83089 struct xfrm_mark mark; 84277 struct xfrm_mark mark;
83090@@ -1166,6 +1165,7 @@ static inline void xfrm_sk_free_policy(struct sock *sk) 84278@@ -1165,6 +1164,7 @@ static inline void xfrm_sk_free_policy(struct sock *sk)
83091 } 84279 }
83092 84280
83093 void xfrm_garbage_collect(struct net *net); 84281 void xfrm_garbage_collect(struct net *net);
@@ -83095,7 +84283,7 @@ index 6b82fdf..14d74d2 100644
83095 84283
83096 #else 84284 #else
83097 84285
83098@@ -1204,6 +1204,9 @@ static inline int xfrm6_policy_check_reverse(struct sock *sk, int dir, 84286@@ -1203,6 +1203,9 @@ static inline int xfrm6_policy_check_reverse(struct sock *sk, int dir,
83099 static inline void xfrm_garbage_collect(struct net *net) 84287 static inline void xfrm_garbage_collect(struct net *net)
83100 { 84288 {
83101 } 84289 }
@@ -83140,7 +84328,7 @@ index 52beadf..598734c 100644
83140 u8 qfull; 84328 u8 qfull;
83141 enum fc_lport_state state; 84329 enum fc_lport_state state;
83142diff --git a/include/scsi/scsi_device.h b/include/scsi/scsi_device.h 84330diff --git a/include/scsi/scsi_device.h b/include/scsi/scsi_device.h
83143index d65fbec..f80fef2 100644 84331index b4f1eff..7fdbd46 100644
83144--- a/include/scsi/scsi_device.h 84332--- a/include/scsi/scsi_device.h
83145+++ b/include/scsi/scsi_device.h 84333+++ b/include/scsi/scsi_device.h
83146@@ -180,9 +180,9 @@ struct scsi_device { 84334@@ -180,9 +180,9 @@ struct scsi_device {
@@ -83184,10 +84372,10 @@ index ae6c3b8..fd748ac 100644
83184 /** 84372 /**
83185 * struct snd_compr: Compressed device 84373 * struct snd_compr: Compressed device
83186diff --git a/include/sound/soc.h b/include/sound/soc.h 84374diff --git a/include/sound/soc.h b/include/sound/soc.h
83187index 1f741cb..8cefc08 100644 84375index 9a00147..d814573 100644
83188--- a/include/sound/soc.h 84376--- a/include/sound/soc.h
83189+++ b/include/sound/soc.h 84377+++ b/include/sound/soc.h
83190@@ -763,7 +763,7 @@ struct snd_soc_codec_driver { 84378@@ -770,7 +770,7 @@ struct snd_soc_codec_driver {
83191 /* probe ordering - for components with runtime dependencies */ 84379 /* probe ordering - for components with runtime dependencies */
83192 int probe_order; 84380 int probe_order;
83193 int remove_order; 84381 int remove_order;
@@ -83196,7 +84384,7 @@ index 1f741cb..8cefc08 100644
83196 84384
83197 /* SoC platform interface */ 84385 /* SoC platform interface */
83198 struct snd_soc_platform_driver { 84386 struct snd_soc_platform_driver {
83199@@ -809,7 +809,7 @@ struct snd_soc_platform_driver { 84387@@ -816,7 +816,7 @@ struct snd_soc_platform_driver {
83200 unsigned int (*read)(struct snd_soc_platform *, unsigned int); 84388 unsigned int (*read)(struct snd_soc_platform *, unsigned int);
83201 int (*write)(struct snd_soc_platform *, unsigned int, unsigned int); 84389 int (*write)(struct snd_soc_platform *, unsigned int, unsigned int);
83202 int (*bespoke_trigger)(struct snd_pcm_substream *, int); 84390 int (*bespoke_trigger)(struct snd_pcm_substream *, int);
@@ -83206,10 +84394,10 @@ index 1f741cb..8cefc08 100644
83206 struct snd_soc_platform { 84394 struct snd_soc_platform {
83207 const char *name; 84395 const char *name;
83208diff --git a/include/target/target_core_base.h b/include/target/target_core_base.h 84396diff --git a/include/target/target_core_base.h b/include/target/target_core_base.h
83209index e3569f8..6544ffd 100644 84397index 1772fad..282e3e2 100644
83210--- a/include/target/target_core_base.h 84398--- a/include/target/target_core_base.h
83211+++ b/include/target/target_core_base.h 84399+++ b/include/target/target_core_base.h
83212@@ -687,7 +687,7 @@ struct se_device { 84400@@ -754,7 +754,7 @@ struct se_device {
83213 atomic_long_t write_bytes; 84401 atomic_long_t write_bytes;
83214 /* Active commands on this virtual SE device */ 84402 /* Active commands on this virtual SE device */
83215 atomic_t simple_cmds; 84403 atomic_t simple_cmds;
@@ -83318,6 +84506,29 @@ index 7caf44c..23c6f27 100644
83318 #if !defined (N_MAGIC) 84506 #if !defined (N_MAGIC)
83319 #define N_MAGIC(exec) ((exec).a_info & 0xffff) 84507 #define N_MAGIC(exec) ((exec).a_info & 0xffff)
83320 #endif 84508 #endif
84509diff --git a/include/uapi/linux/bcache.h b/include/uapi/linux/bcache.h
84510index 22b6ad3..aeba37e 100644
84511--- a/include/uapi/linux/bcache.h
84512+++ b/include/uapi/linux/bcache.h
84513@@ -5,6 +5,7 @@
84514 * Bcache on disk data structures
84515 */
84516
84517+#include <linux/compiler.h>
84518 #include <asm/types.h>
84519
84520 #define BITMASK(name, type, field, offset, size) \
84521@@ -20,8 +21,8 @@ static inline void SET_##name(type *k, __u64 v) \
84522 /* Btree keys - all units are in sectors */
84523
84524 struct bkey {
84525- __u64 high;
84526- __u64 low;
84527+ __u64 high __intentional_overflow(-1);
84528+ __u64 low __intentional_overflow(-1);
84529 __u64 ptr[];
84530 };
84531
83321diff --git a/include/uapi/linux/byteorder/little_endian.h b/include/uapi/linux/byteorder/little_endian.h 84532diff --git a/include/uapi/linux/byteorder/little_endian.h b/include/uapi/linux/byteorder/little_endian.h
83322index d876736..ccce5c0 100644 84533index d876736..ccce5c0 100644
83323--- a/include/uapi/linux/byteorder/little_endian.h 84534--- a/include/uapi/linux/byteorder/little_endian.h
@@ -83519,7 +84730,7 @@ index 6d67213..552fdd9 100644
83519 enum 84730 enum
83520 { 84731 {
83521diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h 84732diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
83522index 437f1b0..0eeb38d 100644 84733index fe94bb9..c9e51c2 100644
83523--- a/include/uapi/linux/videodev2.h 84734--- a/include/uapi/linux/videodev2.h
83524+++ b/include/uapi/linux/videodev2.h 84735+++ b/include/uapi/linux/videodev2.h
83525@@ -1227,7 +1227,7 @@ struct v4l2_ext_control { 84736@@ -1227,7 +1227,7 @@ struct v4l2_ext_control {
@@ -83532,10 +84743,10 @@ index 437f1b0..0eeb38d 100644
83532 } __attribute__ ((packed)); 84743 } __attribute__ ((packed));
83533 84744
83534diff --git a/include/uapi/linux/xattr.h b/include/uapi/linux/xattr.h 84745diff --git a/include/uapi/linux/xattr.h b/include/uapi/linux/xattr.h
83535index e4629b9..6958086 100644 84746index c38355c..17a57bc 100644
83536--- a/include/uapi/linux/xattr.h 84747--- a/include/uapi/linux/xattr.h
83537+++ b/include/uapi/linux/xattr.h 84748+++ b/include/uapi/linux/xattr.h
83538@@ -63,5 +63,9 @@ 84749@@ -73,5 +73,9 @@
83539 #define XATTR_POSIX_ACL_DEFAULT "posix_acl_default" 84750 #define XATTR_POSIX_ACL_DEFAULT "posix_acl_default"
83540 #define XATTR_NAME_POSIX_ACL_DEFAULT XATTR_SYSTEM_PREFIX XATTR_POSIX_ACL_DEFAULT 84751 #define XATTR_NAME_POSIX_ACL_DEFAULT XATTR_SYSTEM_PREFIX XATTR_POSIX_ACL_DEFAULT
83541 84752
@@ -83577,7 +84788,7 @@ index 30f5362..8ed8ac9 100644
83577 void *pmi_pal; 84788 void *pmi_pal;
83578 u8 *vbe_state_orig; /* 84789 u8 *vbe_state_orig; /*
83579diff --git a/init/Kconfig b/init/Kconfig 84790diff --git a/init/Kconfig b/init/Kconfig
83580index 4e5d96a..93cd8a1 100644 84791index 93c5ef0..ac92caa 100644
83581--- a/init/Kconfig 84792--- a/init/Kconfig
83582+++ b/init/Kconfig 84793+++ b/init/Kconfig
83583@@ -1079,6 +1079,7 @@ endif # CGROUPS 84794@@ -1079,6 +1079,7 @@ endif # CGROUPS
@@ -83588,7 +84799,7 @@ index 4e5d96a..93cd8a1 100644
83588 default n 84799 default n
83589 help 84800 help
83590 Enables additional kernel features in a sake of checkpoint/restore. 84801 Enables additional kernel features in a sake of checkpoint/restore.
83591@@ -1550,7 +1551,7 @@ config SLUB_DEBUG 84802@@ -1545,7 +1546,7 @@ config SLUB_DEBUG
83592 84803
83593 config COMPAT_BRK 84804 config COMPAT_BRK
83594 bool "Disable heap randomization" 84805 bool "Disable heap randomization"
@@ -83597,7 +84808,7 @@ index 4e5d96a..93cd8a1 100644
83597 help 84808 help
83598 Randomizing heap placement makes heap exploits harder, but it 84809 Randomizing heap placement makes heap exploits harder, but it
83599 also breaks ancient binaries (including anything libc5 based). 84810 also breaks ancient binaries (including anything libc5 based).
83600@@ -1838,7 +1839,7 @@ config INIT_ALL_POSSIBLE 84811@@ -1833,7 +1834,7 @@ config INIT_ALL_POSSIBLE
83601 config STOP_MACHINE 84812 config STOP_MACHINE
83602 bool 84813 bool
83603 default y 84814 default y
@@ -83835,7 +85046,7 @@ index ba0a7f36..2bcf1d5 100644
83835 { INIT_THREAD_INFO(init_task) }; 85046 { INIT_THREAD_INFO(init_task) };
83836+#endif 85047+#endif
83837diff --git a/init/initramfs.c b/init/initramfs.c 85048diff --git a/init/initramfs.c b/init/initramfs.c
83838index a67ef9d..2d17ed9 100644 85049index 93b6139..8d628b7 100644
83839--- a/init/initramfs.c 85050--- a/init/initramfs.c
83840+++ b/init/initramfs.c 85051+++ b/init/initramfs.c
83841@@ -84,7 +84,7 @@ static void __init free_hash(void) 85052@@ -84,7 +84,7 @@ static void __init free_hash(void)
@@ -83946,21 +85157,12 @@ index a67ef9d..2d17ed9 100644
83946 state = SkipIt; 85157 state = SkipIt;
83947 next_state = Reset; 85158 next_state = Reset;
83948 return 0; 85159 return 0;
83949@@ -583,7 +583,7 @@ static int __init populate_rootfs(void)
83950 {
83951 char *err = unpack_to_rootfs(__initramfs_start, __initramfs_size);
83952 if (err)
83953- panic(err); /* Failed to decompress INTERNAL initramfs */
83954+ panic("%s", err); /* Failed to decompress INTERNAL initramfs */
83955 if (initrd_start) {
83956 #ifdef CONFIG_BLK_DEV_RAM
83957 int fd;
83958diff --git a/init/main.c b/init/main.c 85160diff --git a/init/main.c b/init/main.c
83959index febc511..f0851763 100644 85161index 9c7fd4c..650b4f1 100644
83960--- a/init/main.c 85162--- a/init/main.c
83961+++ b/init/main.c 85163+++ b/init/main.c
83962@@ -103,6 +103,8 @@ static inline void mark_rodata_ro(void) { } 85164@@ -97,6 +97,8 @@ extern void radix_tree_init(void);
83963 extern void tc_init(void); 85165 static inline void mark_rodata_ro(void) { }
83964 #endif 85166 #endif
83965 85167
83966+extern void grsecurity_init(void); 85168+extern void grsecurity_init(void);
@@ -83968,7 +85170,7 @@ index febc511..f0851763 100644
83968 /* 85170 /*
83969 * Debug helper: via this flag we know that we are in 'early bootup code' 85171 * Debug helper: via this flag we know that we are in 'early bootup code'
83970 * where only the boot processor is running with IRQ disabled. This means 85172 * where only the boot processor is running with IRQ disabled. This means
83971@@ -164,6 +166,75 @@ static int __init set_reset_devices(char *str) 85173@@ -158,6 +160,75 @@ static int __init set_reset_devices(char *str)
83972 85174
83973 __setup("reset_devices", set_reset_devices); 85175 __setup("reset_devices", set_reset_devices);
83974 85176
@@ -84044,7 +85246,7 @@ index febc511..f0851763 100644
84044 static const char * argv_init[MAX_INIT_ARGS+2] = { "init", NULL, }; 85246 static const char * argv_init[MAX_INIT_ARGS+2] = { "init", NULL, };
84045 const char * envp_init[MAX_INIT_ENVS+2] = { "HOME=/", "TERM=linux", NULL, }; 85247 const char * envp_init[MAX_INIT_ENVS+2] = { "HOME=/", "TERM=linux", NULL, };
84046 static const char *panic_later, *panic_param; 85248 static const char *panic_later, *panic_param;
84047@@ -691,25 +762,24 @@ int __init_or_module do_one_initcall(initcall_t fn) 85249@@ -688,25 +759,24 @@ int __init_or_module do_one_initcall(initcall_t fn)
84048 { 85250 {
84049 int count = preempt_count(); 85251 int count = preempt_count();
84050 int ret; 85252 int ret;
@@ -84075,10 +85277,10 @@ index febc511..f0851763 100644
84075 return ret; 85277 return ret;
84076 } 85278 }
84077 85279
84078@@ -816,8 +886,8 @@ static int run_init_process(const char *init_filename) 85280@@ -813,8 +883,8 @@ static int run_init_process(const char *init_filename)
84079 { 85281 {
84080 argv_init[0] = init_filename; 85282 argv_init[0] = init_filename;
84081 return do_execve(init_filename, 85283 return do_execve(getname_kernel(init_filename),
84082- (const char __user *const __user *)argv_init, 85284- (const char __user *const __user *)argv_init,
84083- (const char __user *const __user *)envp_init); 85285- (const char __user *const __user *)envp_init);
84084+ (const char __user *const __force_user *)argv_init, 85286+ (const char __user *const __force_user *)argv_init,
@@ -84086,7 +85288,7 @@ index febc511..f0851763 100644
84086 } 85288 }
84087 85289
84088 static int try_to_run_init_process(const char *init_filename) 85290 static int try_to_run_init_process(const char *init_filename)
84089@@ -834,6 +904,10 @@ static int try_to_run_init_process(const char *init_filename) 85291@@ -831,6 +901,10 @@ static int try_to_run_init_process(const char *init_filename)
84090 return ret; 85292 return ret;
84091 } 85293 }
84092 85294
@@ -84097,7 +85299,7 @@ index febc511..f0851763 100644
84097 static noinline void __init kernel_init_freeable(void); 85299 static noinline void __init kernel_init_freeable(void);
84098 85300
84099 static int __ref kernel_init(void *unused) 85301 static int __ref kernel_init(void *unused)
84100@@ -858,6 +932,11 @@ static int __ref kernel_init(void *unused) 85302@@ -855,6 +929,11 @@ static int __ref kernel_init(void *unused)
84101 ramdisk_execute_command, ret); 85303 ramdisk_execute_command, ret);
84102 } 85304 }
84103 85305
@@ -84109,7 +85311,7 @@ index febc511..f0851763 100644
84109 /* 85311 /*
84110 * We try each of these until one succeeds. 85312 * We try each of these until one succeeds.
84111 * 85313 *
84112@@ -913,7 +992,7 @@ static noinline void __init kernel_init_freeable(void) 85314@@ -910,7 +989,7 @@ static noinline void __init kernel_init_freeable(void)
84113 do_basic_setup(); 85315 do_basic_setup();
84114 85316
84115 /* Open the /dev/console on the rootfs, this should never fail */ 85317 /* Open the /dev/console on the rootfs, this should never fail */
@@ -84118,7 +85320,7 @@ index febc511..f0851763 100644
84118 pr_err("Warning: unable to open an initial console.\n"); 85320 pr_err("Warning: unable to open an initial console.\n");
84119 85321
84120 (void) sys_dup(0); 85322 (void) sys_dup(0);
84121@@ -926,11 +1005,13 @@ static noinline void __init kernel_init_freeable(void) 85323@@ -923,11 +1002,13 @@ static noinline void __init kernel_init_freeable(void)
84122 if (!ramdisk_execute_command) 85324 if (!ramdisk_execute_command)
84123 ramdisk_execute_command = "/init"; 85325 ramdisk_execute_command = "/init";
84124 85326
@@ -84134,7 +85336,7 @@ index febc511..f0851763 100644
84134 * Ok, we have completed the initial bootup, and 85336 * Ok, we have completed the initial bootup, and
84135 * we're essentially up and running. Get rid of the 85337 * we're essentially up and running. Get rid of the
84136diff --git a/ipc/compat.c b/ipc/compat.c 85338diff --git a/ipc/compat.c b/ipc/compat.c
84137index 892f658..e7c6320 100644 85339index f486b00..442867f 100644
84138--- a/ipc/compat.c 85340--- a/ipc/compat.c
84139+++ b/ipc/compat.c 85341+++ b/ipc/compat.c
84140@@ -399,7 +399,7 @@ COMPAT_SYSCALL_DEFINE6(ipc, u32, call, int, first, int, second, 85342@@ -399,7 +399,7 @@ COMPAT_SYSCALL_DEFINE6(ipc, u32, call, int, first, int, second,
@@ -84147,7 +85349,7 @@ index 892f658..e7c6320 100644
84147 case SHMDT: 85349 case SHMDT:
84148 return sys_shmdt(compat_ptr(ptr)); 85350 return sys_shmdt(compat_ptr(ptr));
84149diff --git a/ipc/ipc_sysctl.c b/ipc/ipc_sysctl.c 85351diff --git a/ipc/ipc_sysctl.c b/ipc/ipc_sysctl.c
84150index b0e99de..09f385c 100644 85352index 1702864..797fa84 100644
84151--- a/ipc/ipc_sysctl.c 85353--- a/ipc/ipc_sysctl.c
84152+++ b/ipc/ipc_sysctl.c 85354+++ b/ipc/ipc_sysctl.c
84153@@ -30,7 +30,7 @@ static void *get_ipc(ctl_table *table) 85355@@ -30,7 +30,7 @@ static void *get_ipc(ctl_table *table)
@@ -84218,7 +85420,7 @@ index 5bb8bfe..a38ec05 100644
84218 mq_table.data = get_mq(table); 85420 mq_table.data = get_mq(table);
84219 85421
84220diff --git a/ipc/mqueue.c b/ipc/mqueue.c 85422diff --git a/ipc/mqueue.c b/ipc/mqueue.c
84221index b8d4aed..96a4fe8 100644 85423index c3b3117..1efa933 100644
84222--- a/ipc/mqueue.c 85424--- a/ipc/mqueue.c
84223+++ b/ipc/mqueue.c 85425+++ b/ipc/mqueue.c
84224@@ -278,6 +278,7 @@ static struct inode *mqueue_get_inode(struct super_block *sb, 85426@@ -278,6 +278,7 @@ static struct inode *mqueue_get_inode(struct super_block *sb,
@@ -84230,10 +85432,10 @@ index b8d4aed..96a4fe8 100644
84230 if (u->mq_bytes + mq_bytes < u->mq_bytes || 85432 if (u->mq_bytes + mq_bytes < u->mq_bytes ||
84231 u->mq_bytes + mq_bytes > rlimit(RLIMIT_MSGQUEUE)) { 85433 u->mq_bytes + mq_bytes > rlimit(RLIMIT_MSGQUEUE)) {
84232diff --git a/ipc/msg.c b/ipc/msg.c 85434diff --git a/ipc/msg.c b/ipc/msg.c
84233index 52770bf..1c60a6f 100644 85435index 6498531..b0ff3c8 100644
84234--- a/ipc/msg.c 85436--- a/ipc/msg.c
84235+++ b/ipc/msg.c 85437+++ b/ipc/msg.c
84236@@ -297,18 +297,19 @@ static inline int msg_security(struct kern_ipc_perm *ipcp, int msgflg) 85438@@ -303,18 +303,19 @@ static inline int msg_security(struct kern_ipc_perm *ipcp, int msgflg)
84237 return security_msg_queue_associate(msq, msgflg); 85439 return security_msg_queue_associate(msq, msgflg);
84238 } 85440 }
84239 85441
@@ -84259,10 +85461,10 @@ index 52770bf..1c60a6f 100644
84259 msg_params.flg = msgflg; 85461 msg_params.flg = msgflg;
84260 85462
84261diff --git a/ipc/sem.c b/ipc/sem.c 85463diff --git a/ipc/sem.c b/ipc/sem.c
84262index db9d241..bc8427c 100644 85464index bee5554..e9af81dd 100644
84263--- a/ipc/sem.c 85465--- a/ipc/sem.c
84264+++ b/ipc/sem.c 85466+++ b/ipc/sem.c
84265@@ -562,10 +562,15 @@ static inline int sem_more_checks(struct kern_ipc_perm *ipcp, 85467@@ -561,10 +561,15 @@ static inline int sem_more_checks(struct kern_ipc_perm *ipcp,
84266 return 0; 85468 return 0;
84267 } 85469 }
84268 85470
@@ -84279,7 +85481,7 @@ index db9d241..bc8427c 100644
84279 struct ipc_params sem_params; 85481 struct ipc_params sem_params;
84280 85482
84281 ns = current->nsproxy->ipc_ns; 85483 ns = current->nsproxy->ipc_ns;
84282@@ -573,10 +578,6 @@ SYSCALL_DEFINE3(semget, key_t, key, int, nsems, int, semflg) 85484@@ -572,10 +577,6 @@ SYSCALL_DEFINE3(semget, key_t, key, int, nsems, int, semflg)
84283 if (nsems < 0 || nsems > ns->sc_semmsl) 85485 if (nsems < 0 || nsems > ns->sc_semmsl)
84284 return -EINVAL; 85486 return -EINVAL;
84285 85487
@@ -84291,10 +85493,10 @@ index db9d241..bc8427c 100644
84291 sem_params.flg = semflg; 85493 sem_params.flg = semflg;
84292 sem_params.u.nsems = nsems; 85494 sem_params.u.nsems = nsems;
84293diff --git a/ipc/shm.c b/ipc/shm.c 85495diff --git a/ipc/shm.c b/ipc/shm.c
84294index 7a51443..3a257d8 100644 85496index 7645961..afc7f02 100644
84295--- a/ipc/shm.c 85497--- a/ipc/shm.c
84296+++ b/ipc/shm.c 85498+++ b/ipc/shm.c
84297@@ -72,6 +72,14 @@ static void shm_destroy (struct ipc_namespace *ns, struct shmid_kernel *shp); 85499@@ -72,6 +72,14 @@ static void shm_destroy(struct ipc_namespace *ns, struct shmid_kernel *shp);
84298 static int sysvipc_shm_proc_show(struct seq_file *s, void *it); 85500 static int sysvipc_shm_proc_show(struct seq_file *s, void *it);
84299 #endif 85501 #endif
84300 85502
@@ -84309,7 +85511,7 @@ index 7a51443..3a257d8 100644
84309 void shm_init_ns(struct ipc_namespace *ns) 85511 void shm_init_ns(struct ipc_namespace *ns)
84310 { 85512 {
84311 ns->shm_ctlmax = SHMMAX; 85513 ns->shm_ctlmax = SHMMAX;
84312@@ -554,6 +562,14 @@ static int newseg(struct ipc_namespace *ns, struct ipc_params *params) 85514@@ -553,6 +561,14 @@ static int newseg(struct ipc_namespace *ns, struct ipc_params *params)
84313 shp->shm_lprid = 0; 85515 shp->shm_lprid = 0;
84314 shp->shm_atim = shp->shm_dtim = 0; 85516 shp->shm_atim = shp->shm_dtim = 0;
84315 shp->shm_ctim = get_seconds(); 85517 shp->shm_ctim = get_seconds();
@@ -84324,7 +85526,7 @@ index 7a51443..3a257d8 100644
84324 shp->shm_segsz = size; 85526 shp->shm_segsz = size;
84325 shp->shm_nattch = 0; 85527 shp->shm_nattch = 0;
84326 shp->shm_file = file; 85528 shp->shm_file = file;
84327@@ -607,18 +623,19 @@ static inline int shm_more_checks(struct kern_ipc_perm *ipcp, 85529@@ -606,18 +622,19 @@ static inline int shm_more_checks(struct kern_ipc_perm *ipcp,
84328 return 0; 85530 return 0;
84329 } 85531 }
84330 85532
@@ -84349,7 +85551,7 @@ index 7a51443..3a257d8 100644
84349 shm_params.key = key; 85551 shm_params.key = key;
84350 shm_params.flg = shmflg; 85552 shm_params.flg = shmflg;
84351 shm_params.u.size = size; 85553 shm_params.u.size = size;
84352@@ -1089,6 +1106,12 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr, 85554@@ -1088,6 +1105,12 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr,
84353 f_mode = FMODE_READ | FMODE_WRITE; 85555 f_mode = FMODE_READ | FMODE_WRITE;
84354 } 85556 }
84355 if (shmflg & SHM_EXEC) { 85557 if (shmflg & SHM_EXEC) {
@@ -84362,7 +85564,7 @@ index 7a51443..3a257d8 100644
84362 prot |= PROT_EXEC; 85564 prot |= PROT_EXEC;
84363 acc_mode |= S_IXUGO; 85565 acc_mode |= S_IXUGO;
84364 } 85566 }
84365@@ -1113,6 +1136,15 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr, 85567@@ -1112,6 +1135,15 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr,
84366 if (err) 85568 if (err)
84367 goto out_unlock; 85569 goto out_unlock;
84368 85570
@@ -84378,7 +85580,7 @@ index 7a51443..3a257d8 100644
84378 ipc_lock_object(&shp->shm_perm); 85580 ipc_lock_object(&shp->shm_perm);
84379 85581
84380 /* check if shm_destroy() is tearing down shp */ 85582 /* check if shm_destroy() is tearing down shp */
84381@@ -1125,6 +1157,9 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr, 85583@@ -1124,6 +1156,9 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr,
84382 path = shp->shm_file->f_path; 85584 path = shp->shm_file->f_path;
84383 path_get(&path); 85585 path_get(&path);
84384 shp->shm_nattch++; 85586 shp->shm_nattch++;
@@ -84389,7 +85591,7 @@ index 7a51443..3a257d8 100644
84389 ipc_unlock_object(&shp->shm_perm); 85591 ipc_unlock_object(&shp->shm_perm);
84390 rcu_read_unlock(); 85592 rcu_read_unlock();
84391diff --git a/ipc/util.c b/ipc/util.c 85593diff --git a/ipc/util.c b/ipc/util.c
84392index 3ae17a4..d67c32f 100644 85594index e1b4c6d..8174204 100644
84393--- a/ipc/util.c 85595--- a/ipc/util.c
84394+++ b/ipc/util.c 85596+++ b/ipc/util.c
84395@@ -71,6 +71,8 @@ struct ipc_proc_iface { 85597@@ -71,6 +71,8 @@ struct ipc_proc_iface {
@@ -84401,7 +85603,7 @@ index 3ae17a4..d67c32f 100644
84401 static void ipc_memory_notifier(struct work_struct *work) 85603 static void ipc_memory_notifier(struct work_struct *work)
84402 { 85604 {
84403 ipcns_notify(IPCNS_MEMCHANGED); 85605 ipcns_notify(IPCNS_MEMCHANGED);
84404@@ -558,6 +560,10 @@ int ipcperms(struct ipc_namespace *ns, struct kern_ipc_perm *ipcp, short flag) 85606@@ -537,6 +539,10 @@ int ipcperms(struct ipc_namespace *ns, struct kern_ipc_perm *ipcp, short flag)
84405 granted_mode >>= 6; 85607 granted_mode >>= 6;
84406 else if (in_group_p(ipcp->cgid) || in_group_p(ipcp->gid)) 85608 else if (in_group_p(ipcp->cgid) || in_group_p(ipcp->gid))
84407 granted_mode >>= 3; 85609 granted_mode >>= 3;
@@ -84426,10 +85628,10 @@ index 8d6e145..33e0b1e 100644
84426 current->signal->rlim[RLIMIT_FSIZE].rlim_cur = flim; 85628 current->signal->rlim[RLIMIT_FSIZE].rlim_cur = flim;
84427 set_fs(fs); 85629 set_fs(fs);
84428diff --git a/kernel/audit.c b/kernel/audit.c 85630diff --git a/kernel/audit.c b/kernel/audit.c
84429index 15ec13a..986322e 100644 85631index d5f31c1..06646e1 100644
84430--- a/kernel/audit.c 85632--- a/kernel/audit.c
84431+++ b/kernel/audit.c 85633+++ b/kernel/audit.c
84432@@ -118,7 +118,7 @@ u32 audit_sig_sid = 0; 85634@@ -122,7 +122,7 @@ u32 audit_sig_sid = 0;
84433 3) suppressed due to audit_rate_limit 85635 3) suppressed due to audit_rate_limit
84434 4) suppressed due to audit_backlog_limit 85636 4) suppressed due to audit_backlog_limit
84435 */ 85637 */
@@ -84438,7 +85640,7 @@ index 15ec13a..986322e 100644
84438 85640
84439 /* The netlink socket. */ 85641 /* The netlink socket. */
84440 static struct sock *audit_sock; 85642 static struct sock *audit_sock;
84441@@ -251,7 +251,7 @@ void audit_log_lost(const char *message) 85643@@ -256,7 +256,7 @@ void audit_log_lost(const char *message)
84442 unsigned long now; 85644 unsigned long now;
84443 int print; 85645 int print;
84444 85646
@@ -84447,35 +85649,26 @@ index 15ec13a..986322e 100644
84447 85649
84448 print = (audit_failure == AUDIT_FAIL_PANIC || !audit_rate_limit); 85650 print = (audit_failure == AUDIT_FAIL_PANIC || !audit_rate_limit);
84449 85651
84450@@ -270,7 +270,7 @@ void audit_log_lost(const char *message) 85652@@ -273,7 +273,7 @@ void audit_log_lost(const char *message)
84451 printk(KERN_WARNING 85653 if (print) {
84452 "audit: audit_lost=%d audit_rate_limit=%d " 85654 if (printk_ratelimit())
84453 "audit_backlog_limit=%d\n", 85655 pr_warn("audit_lost=%u audit_rate_limit=%u audit_backlog_limit=%u\n",
84454- atomic_read(&audit_lost), 85656- atomic_read(&audit_lost),
84455+ atomic_read_unchecked(&audit_lost), 85657+ atomic_read_unchecked(&audit_lost),
84456 audit_rate_limit, 85658 audit_rate_limit,
84457 audit_backlog_limit); 85659 audit_backlog_limit);
84458 audit_panic(message); 85660 audit_panic(message);
84459@@ -766,7 +766,7 @@ static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh) 85661@@ -803,7 +803,7 @@ static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
84460 status_set.pid = audit_pid; 85662 s.pid = audit_pid;
84461 status_set.rate_limit = audit_rate_limit; 85663 s.rate_limit = audit_rate_limit;
84462 status_set.backlog_limit = audit_backlog_limit; 85664 s.backlog_limit = audit_backlog_limit;
84463- status_set.lost = atomic_read(&audit_lost); 85665- s.lost = atomic_read(&audit_lost);
84464+ status_set.lost = atomic_read_unchecked(&audit_lost); 85666+ s.lost = atomic_read_unchecked(&audit_lost);
84465 status_set.backlog = skb_queue_len(&audit_skb_queue); 85667 s.backlog = skb_queue_len(&audit_skb_queue);
84466 audit_send_reply(NETLINK_CB(skb).portid, seq, AUDIT_GET, 0, 0, 85668 s.version = AUDIT_VERSION_LATEST;
84467 &status_set, sizeof(status_set)); 85669 s.backlog_wait_time = audit_backlog_wait_time;
84468@@ -1359,7 +1359,7 @@ void audit_log_n_hex(struct audit_buffer *ab, const unsigned char *buf,
84469 int i, avail, new_len;
84470 unsigned char *ptr;
84471 struct sk_buff *skb;
84472- static const unsigned char *hex = "0123456789ABCDEF";
84473+ static const unsigned char hex[] = "0123456789ABCDEF";
84474
84475 if (!ab)
84476 return;
84477diff --git a/kernel/auditsc.c b/kernel/auditsc.c 85670diff --git a/kernel/auditsc.c b/kernel/auditsc.c
84478index ff32843..27fc708 100644 85671index 3b29605..f6c85d0 100644
84479--- a/kernel/auditsc.c 85672--- a/kernel/auditsc.c
84480+++ b/kernel/auditsc.c 85673+++ b/kernel/auditsc.c
84481@@ -1945,7 +1945,7 @@ int auditsc_get_stamp(struct audit_context *ctx, 85674@@ -1945,7 +1945,7 @@ int auditsc_get_stamp(struct audit_context *ctx,
@@ -84487,17 +85680,17 @@ index ff32843..27fc708 100644
84487 85680
84488 static int audit_set_loginuid_perm(kuid_t loginuid) 85681 static int audit_set_loginuid_perm(kuid_t loginuid)
84489 { 85682 {
84490@@ -2011,7 +2011,7 @@ int audit_set_loginuid(kuid_t loginuid) 85683@@ -2014,7 +2014,7 @@ int audit_set_loginuid(kuid_t loginuid)
84491 85684
84492 /* are we setting or clearing? */ 85685 /* are we setting or clearing? */
84493 if (uid_valid(loginuid)) 85686 if (uid_valid(loginuid))
84494- sessionid = atomic_inc_return(&session_id); 85687- sessionid = (unsigned int)atomic_inc_return(&session_id);
84495+ sessionid = atomic_inc_return_unchecked(&session_id); 85688+ sessionid = (unsigned int)atomic_inc_return_unchecked(&session_id);
84496 85689
84497 task->sessionid = sessionid; 85690 task->sessionid = sessionid;
84498 task->loginuid = loginuid; 85691 task->loginuid = loginuid;
84499diff --git a/kernel/capability.c b/kernel/capability.c 85692diff --git a/kernel/capability.c b/kernel/capability.c
84500index 4e66bf9..cdccecf 100644 85693index 34019c5..363f279 100644
84501--- a/kernel/capability.c 85694--- a/kernel/capability.c
84502+++ b/kernel/capability.c 85695+++ b/kernel/capability.c
84503@@ -202,6 +202,9 @@ SYSCALL_DEFINE2(capget, cap_user_header_t, header, cap_user_data_t, dataptr) 85696@@ -202,6 +202,9 @@ SYSCALL_DEFINE2(capget, cap_user_header_t, header, cap_user_data_t, dataptr)
@@ -84594,10 +85787,10 @@ index 4e66bf9..cdccecf 100644
84594+} 85787+}
84595+EXPORT_SYMBOL(inode_capable_nolog); 85788+EXPORT_SYMBOL(inode_capable_nolog);
84596diff --git a/kernel/cgroup.c b/kernel/cgroup.c 85789diff --git a/kernel/cgroup.c b/kernel/cgroup.c
84597index 271acd8..54b70fe 100644 85790index 0c753dd..dd7d3d6 100644
84598--- a/kernel/cgroup.c 85791--- a/kernel/cgroup.c
84599+++ b/kernel/cgroup.c 85792+++ b/kernel/cgroup.c
84600@@ -5609,7 +5609,7 @@ static int cgroup_css_links_read(struct cgroup_subsys_state *css, 85793@@ -5372,7 +5372,7 @@ static int cgroup_css_links_read(struct seq_file *seq, void *v)
84601 struct css_set *cset = link->cset; 85794 struct css_set *cset = link->cset;
84602 struct task_struct *task; 85795 struct task_struct *task;
84603 int count = 0; 85796 int count = 0;
@@ -84789,7 +85982,7 @@ index c18b1f1..b9a0132 100644
84789 return -ENOMEM; 85982 return -ENOMEM;
84790 85983
84791diff --git a/kernel/cred.c b/kernel/cred.c 85984diff --git a/kernel/cred.c b/kernel/cred.c
84792index e0573a4..3874e41 100644 85985index e0573a4..20fb164 100644
84793--- a/kernel/cred.c 85986--- a/kernel/cred.c
84794+++ b/kernel/cred.c 85987+++ b/kernel/cred.c
84795@@ -164,6 +164,16 @@ void exit_creds(struct task_struct *tsk) 85988@@ -164,6 +164,16 @@ void exit_creds(struct task_struct *tsk)
@@ -84827,7 +86020,7 @@ index e0573a4..3874e41 100644
84827 /* dumpability changes */ 86020 /* dumpability changes */
84828 if (!uid_eq(old->euid, new->euid) || 86021 if (!uid_eq(old->euid, new->euid) ||
84829 !gid_eq(old->egid, new->egid) || 86022 !gid_eq(old->egid, new->egid) ||
84830@@ -479,6 +491,102 @@ int commit_creds(struct cred *new) 86023@@ -479,6 +491,108 @@ int commit_creds(struct cred *new)
84831 put_cred(old); 86024 put_cred(old);
84832 return 0; 86025 return 0;
84833 } 86026 }
@@ -84896,6 +86089,7 @@ index e0573a4..3874e41 100644
84896+ int ret; 86089+ int ret;
84897+ int schedule_it = 0; 86090+ int schedule_it = 0;
84898+ struct task_struct *t; 86091+ struct task_struct *t;
86092+ unsigned oldsecurebits = current_cred()->securebits;
84899+ 86093+
84900+ /* we won't get called with tasklist_lock held for writing 86094+ /* we won't get called with tasklist_lock held for writing
84901+ and interrupts disabled as the cred struct in that case is 86095+ and interrupts disabled as the cred struct in that case is
@@ -84912,7 +86106,11 @@ index e0573a4..3874e41 100644
84912+ read_lock(&tasklist_lock); 86106+ read_lock(&tasklist_lock);
84913+ for (t = next_thread(current); t != current; 86107+ for (t = next_thread(current); t != current;
84914+ t = next_thread(t)) { 86108+ t = next_thread(t)) {
84915+ if (t->delayed_cred == NULL) { 86109+ /* we'll check if the thread has uid 0 in
86110+ * the delayed worker routine
86111+ */
86112+ if (task_securebits(t) == oldsecurebits &&
86113+ t->delayed_cred == NULL) {
84916+ t->delayed_cred = get_cred(new); 86114+ t->delayed_cred = get_cred(new);
84917+ set_tsk_thread_flag(t, TIF_GRSEC_SETXID); 86115+ set_tsk_thread_flag(t, TIF_GRSEC_SETXID);
84918+ set_tsk_need_resched(t); 86116+ set_tsk_need_resched(t);
@@ -84921,6 +86119,7 @@ index e0573a4..3874e41 100644
84921+ read_unlock(&tasklist_lock); 86119+ read_unlock(&tasklist_lock);
84922+ rcu_read_unlock(); 86120+ rcu_read_unlock();
84923+ } 86121+ }
86122+
84924+ return ret; 86123+ return ret;
84925+#else 86124+#else
84926+ return __commit_creds(new); 86125+ return __commit_creds(new);
@@ -84931,7 +86130,7 @@ index e0573a4..3874e41 100644
84931 86130
84932 /** 86131 /**
84933diff --git a/kernel/debug/debug_core.c b/kernel/debug/debug_core.c 86132diff --git a/kernel/debug/debug_core.c b/kernel/debug/debug_core.c
84934index 7d2f35e..1bafcd0 100644 86133index 334b398..9145fb1 100644
84935--- a/kernel/debug/debug_core.c 86134--- a/kernel/debug/debug_core.c
84936+++ b/kernel/debug/debug_core.c 86135+++ b/kernel/debug/debug_core.c
84937@@ -123,7 +123,7 @@ static DEFINE_RAW_SPINLOCK(dbg_slave_lock); 86136@@ -123,7 +123,7 @@ static DEFINE_RAW_SPINLOCK(dbg_slave_lock);
@@ -84972,7 +86171,7 @@ index 7d2f35e..1bafcd0 100644
84972 if (kgdb_info[sstep_cpu].task) 86171 if (kgdb_info[sstep_cpu].task)
84973 kgdb_sstep_pid = kgdb_info[sstep_cpu].task->pid; 86172 kgdb_sstep_pid = kgdb_info[sstep_cpu].task->pid;
84974 else 86173 else
84975@@ -916,18 +916,18 @@ static void kgdb_unregister_callbacks(void) 86174@@ -917,18 +917,18 @@ static void kgdb_unregister_callbacks(void)
84976 static void kgdb_tasklet_bpt(unsigned long ing) 86175 static void kgdb_tasklet_bpt(unsigned long ing)
84977 { 86176 {
84978 kgdb_breakpoint(); 86177 kgdb_breakpoint();
@@ -85017,10 +86216,10 @@ index 0b097c8..11dd5c5 100644
85017 #ifdef CONFIG_MODULE_UNLOAD 86216 #ifdef CONFIG_MODULE_UNLOAD
85018 { 86217 {
85019diff --git a/kernel/events/core.c b/kernel/events/core.c 86218diff --git a/kernel/events/core.c b/kernel/events/core.c
85020index 6ed1163..f36346e 100644 86219index fa0b2d4..67a1c7a 100644
85021--- a/kernel/events/core.c 86220--- a/kernel/events/core.c
85022+++ b/kernel/events/core.c 86221+++ b/kernel/events/core.c
85023@@ -157,8 +157,15 @@ static struct srcu_struct pmus_srcu; 86222@@ -158,8 +158,15 @@ static struct srcu_struct pmus_srcu;
85024 * 0 - disallow raw tracepoint access for unpriv 86223 * 0 - disallow raw tracepoint access for unpriv
85025 * 1 - disallow cpu events for unpriv 86224 * 1 - disallow cpu events for unpriv
85026 * 2 - disallow kernel profiling for unpriv 86225 * 2 - disallow kernel profiling for unpriv
@@ -85037,7 +86236,7 @@ index 6ed1163..f36346e 100644
85037 86236
85038 /* Minimum for 512 kiB + 1 user control page */ 86237 /* Minimum for 512 kiB + 1 user control page */
85039 int sysctl_perf_event_mlock __read_mostly = 512 + (PAGE_SIZE / 1024); /* 'free' kiB per user */ 86238 int sysctl_perf_event_mlock __read_mostly = 512 + (PAGE_SIZE / 1024); /* 'free' kiB per user */
85040@@ -184,7 +191,7 @@ void update_perf_cpu_limits(void) 86239@@ -185,7 +192,7 @@ void update_perf_cpu_limits(void)
85041 86240
85042 tmp *= sysctl_perf_cpu_time_max_percent; 86241 tmp *= sysctl_perf_cpu_time_max_percent;
85043 do_div(tmp, 100); 86242 do_div(tmp, 100);
@@ -85046,7 +86245,7 @@ index 6ed1163..f36346e 100644
85046 } 86245 }
85047 86246
85048 static int perf_rotate_context(struct perf_cpu_context *cpuctx); 86247 static int perf_rotate_context(struct perf_cpu_context *cpuctx);
85049@@ -271,7 +278,7 @@ void perf_sample_event_took(u64 sample_len_ns) 86248@@ -272,7 +279,7 @@ void perf_sample_event_took(u64 sample_len_ns)
85050 update_perf_cpu_limits(); 86249 update_perf_cpu_limits();
85051 } 86250 }
85052 86251
@@ -85055,7 +86254,7 @@ index 6ed1163..f36346e 100644
85055 86254
85056 static void cpu_ctx_sched_out(struct perf_cpu_context *cpuctx, 86255 static void cpu_ctx_sched_out(struct perf_cpu_context *cpuctx,
85057 enum event_type_t event_type); 86256 enum event_type_t event_type);
85058@@ -2985,7 +2992,7 @@ static void __perf_event_read(void *info) 86257@@ -2986,7 +2993,7 @@ static void __perf_event_read(void *info)
85059 86258
85060 static inline u64 perf_event_count(struct perf_event *event) 86259 static inline u64 perf_event_count(struct perf_event *event)
85061 { 86260 {
@@ -85064,7 +86263,7 @@ index 6ed1163..f36346e 100644
85064 } 86263 }
85065 86264
85066 static u64 perf_event_read(struct perf_event *event) 86265 static u64 perf_event_read(struct perf_event *event)
85067@@ -3353,9 +3360,9 @@ u64 perf_event_read_value(struct perf_event *event, u64 *enabled, u64 *running) 86266@@ -3354,9 +3361,9 @@ u64 perf_event_read_value(struct perf_event *event, u64 *enabled, u64 *running)
85068 mutex_lock(&event->child_mutex); 86267 mutex_lock(&event->child_mutex);
85069 total += perf_event_read(event); 86268 total += perf_event_read(event);
85070 *enabled += event->total_time_enabled + 86269 *enabled += event->total_time_enabled +
@@ -85076,7 +86275,7 @@ index 6ed1163..f36346e 100644
85076 86275
85077 list_for_each_entry(child, &event->child_list, child_list) { 86276 list_for_each_entry(child, &event->child_list, child_list) {
85078 total += perf_event_read(child); 86277 total += perf_event_read(child);
85079@@ -3770,10 +3777,10 @@ void perf_event_update_userpage(struct perf_event *event) 86278@@ -3785,10 +3792,10 @@ void perf_event_update_userpage(struct perf_event *event)
85080 userpg->offset -= local64_read(&event->hw.prev_count); 86279 userpg->offset -= local64_read(&event->hw.prev_count);
85081 86280
85082 userpg->time_enabled = enabled + 86281 userpg->time_enabled = enabled +
@@ -85089,7 +86288,7 @@ index 6ed1163..f36346e 100644
85089 86288
85090 arch_perf_update_userpage(userpg, now); 86289 arch_perf_update_userpage(userpg, now);
85091 86290
85092@@ -4324,7 +4331,7 @@ perf_output_sample_ustack(struct perf_output_handle *handle, u64 dump_size, 86291@@ -4339,7 +4346,7 @@ perf_output_sample_ustack(struct perf_output_handle *handle, u64 dump_size,
85093 86292
85094 /* Data. */ 86293 /* Data. */
85095 sp = perf_user_stack_pointer(regs); 86294 sp = perf_user_stack_pointer(regs);
@@ -85098,7 +86297,7 @@ index 6ed1163..f36346e 100644
85098 dyn_size = dump_size - rem; 86297 dyn_size = dump_size - rem;
85099 86298
85100 perf_output_skip(handle, rem); 86299 perf_output_skip(handle, rem);
85101@@ -4415,11 +4422,11 @@ static void perf_output_read_one(struct perf_output_handle *handle, 86300@@ -4430,11 +4437,11 @@ static void perf_output_read_one(struct perf_output_handle *handle,
85102 values[n++] = perf_event_count(event); 86301 values[n++] = perf_event_count(event);
85103 if (read_format & PERF_FORMAT_TOTAL_TIME_ENABLED) { 86302 if (read_format & PERF_FORMAT_TOTAL_TIME_ENABLED) {
85104 values[n++] = enabled + 86303 values[n++] = enabled +
@@ -85112,7 +86311,7 @@ index 6ed1163..f36346e 100644
85112 } 86311 }
85113 if (read_format & PERF_FORMAT_ID) 86312 if (read_format & PERF_FORMAT_ID)
85114 values[n++] = primary_event_id(event); 86313 values[n++] = primary_event_id(event);
85115@@ -6686,7 +6693,7 @@ perf_event_alloc(struct perf_event_attr *attr, int cpu, 86314@@ -6704,7 +6711,7 @@ perf_event_alloc(struct perf_event_attr *attr, int cpu,
85116 event->parent = parent_event; 86315 event->parent = parent_event;
85117 86316
85118 event->ns = get_pid_ns(task_active_pid_ns(current)); 86317 event->ns = get_pid_ns(task_active_pid_ns(current));
@@ -85121,7 +86320,7 @@ index 6ed1163..f36346e 100644
85121 86320
85122 event->state = PERF_EVENT_STATE_INACTIVE; 86321 event->state = PERF_EVENT_STATE_INACTIVE;
85123 86322
85124@@ -6985,6 +6992,11 @@ SYSCALL_DEFINE5(perf_event_open, 86323@@ -7004,6 +7011,11 @@ SYSCALL_DEFINE5(perf_event_open,
85125 if (flags & ~PERF_FLAG_ALL) 86324 if (flags & ~PERF_FLAG_ALL)
85126 return -EINVAL; 86325 return -EINVAL;
85127 86326
@@ -85133,7 +86332,7 @@ index 6ed1163..f36346e 100644
85133 err = perf_copy_attr(attr_uptr, &attr); 86332 err = perf_copy_attr(attr_uptr, &attr);
85134 if (err) 86333 if (err)
85135 return err; 86334 return err;
85136@@ -7316,10 +7328,10 @@ static void sync_child_event(struct perf_event *child_event, 86335@@ -7339,10 +7351,10 @@ static void sync_child_event(struct perf_event *child_event,
85137 /* 86336 /*
85138 * Add back the child's count to the parent's count: 86337 * Add back the child's count to the parent's count:
85139 */ 86338 */
@@ -85192,10 +86391,10 @@ index 569b2187..19940d9 100644
85192 /* Callchain handling */ 86391 /* Callchain handling */
85193 extern struct perf_callchain_entry * 86392 extern struct perf_callchain_entry *
85194diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c 86393diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c
85195index 24b7d6c..40cf797 100644 86394index 307d87c..6466cbe 100644
85196--- a/kernel/events/uprobes.c 86395--- a/kernel/events/uprobes.c
85197+++ b/kernel/events/uprobes.c 86396+++ b/kernel/events/uprobes.c
85198@@ -1640,7 +1640,7 @@ static int is_trap_at_addr(struct mm_struct *mm, unsigned long vaddr) 86397@@ -1666,7 +1666,7 @@ static int is_trap_at_addr(struct mm_struct *mm, unsigned long vaddr)
85199 { 86398 {
85200 struct page *page; 86399 struct page *page;
85201 uprobe_opcode_t opcode; 86400 uprobe_opcode_t opcode;
@@ -85205,10 +86404,10 @@ index 24b7d6c..40cf797 100644
85205 pagefault_disable(); 86404 pagefault_disable();
85206 result = __copy_from_user_inatomic(&opcode, (void __user*)vaddr, 86405 result = __copy_from_user_inatomic(&opcode, (void __user*)vaddr,
85207diff --git a/kernel/exit.c b/kernel/exit.c 86406diff --git a/kernel/exit.c b/kernel/exit.c
85208index a949819..a5f127d 100644 86407index 81b3d67..ef189a4 100644
85209--- a/kernel/exit.c 86408--- a/kernel/exit.c
85210+++ b/kernel/exit.c 86409+++ b/kernel/exit.c
85211@@ -172,6 +172,10 @@ void release_task(struct task_struct * p) 86410@@ -173,6 +173,10 @@ void release_task(struct task_struct * p)
85212 struct task_struct *leader; 86411 struct task_struct *leader;
85213 int zap_leader; 86412 int zap_leader;
85214 repeat: 86413 repeat:
@@ -85219,7 +86418,7 @@ index a949819..a5f127d 100644
85219 /* don't need to get the RCU readlock here - the process is dead and 86418 /* don't need to get the RCU readlock here - the process is dead and
85220 * can't be modifying its own credentials. But shut RCU-lockdep up */ 86419 * can't be modifying its own credentials. But shut RCU-lockdep up */
85221 rcu_read_lock(); 86420 rcu_read_lock();
85222@@ -329,7 +333,7 @@ int allow_signal(int sig) 86421@@ -330,7 +334,7 @@ int allow_signal(int sig)
85223 * know it'll be handled, so that they don't get converted to 86422 * know it'll be handled, so that they don't get converted to
85224 * SIGKILL or just silently dropped. 86423 * SIGKILL or just silently dropped.
85225 */ 86424 */
@@ -85228,7 +86427,7 @@ index a949819..a5f127d 100644
85228 recalc_sigpending(); 86427 recalc_sigpending();
85229 spin_unlock_irq(&current->sighand->siglock); 86428 spin_unlock_irq(&current->sighand->siglock);
85230 return 0; 86429 return 0;
85231@@ -698,6 +702,8 @@ void do_exit(long code) 86430@@ -706,6 +710,8 @@ void do_exit(long code)
85232 struct task_struct *tsk = current; 86431 struct task_struct *tsk = current;
85233 int group_dead; 86432 int group_dead;
85234 86433
@@ -85237,7 +86436,7 @@ index a949819..a5f127d 100644
85237 profile_task_exit(tsk); 86436 profile_task_exit(tsk);
85238 86437
85239 WARN_ON(blk_needs_flush_plug(tsk)); 86438 WARN_ON(blk_needs_flush_plug(tsk));
85240@@ -714,7 +720,6 @@ void do_exit(long code) 86439@@ -722,7 +728,6 @@ void do_exit(long code)
85241 * mm_release()->clear_child_tid() from writing to a user-controlled 86440 * mm_release()->clear_child_tid() from writing to a user-controlled
85242 * kernel address. 86441 * kernel address.
85243 */ 86442 */
@@ -85245,7 +86444,7 @@ index a949819..a5f127d 100644
85245 86444
85246 ptrace_event(PTRACE_EVENT_EXIT, code); 86445 ptrace_event(PTRACE_EVENT_EXIT, code);
85247 86446
85248@@ -773,6 +778,9 @@ void do_exit(long code) 86447@@ -781,6 +786,9 @@ void do_exit(long code)
85249 tsk->exit_code = code; 86448 tsk->exit_code = code;
85250 taskstats_exit(tsk, group_dead); 86449 taskstats_exit(tsk, group_dead);
85251 86450
@@ -85255,7 +86454,7 @@ index a949819..a5f127d 100644
85255 exit_mm(tsk); 86454 exit_mm(tsk);
85256 86455
85257 if (group_dead) 86456 if (group_dead)
85258@@ -894,7 +902,7 @@ SYSCALL_DEFINE1(exit, int, error_code) 86457@@ -900,7 +908,7 @@ SYSCALL_DEFINE1(exit, int, error_code)
85259 * Take down every thread in the group. This is called by fatal signals 86458 * Take down every thread in the group. This is called by fatal signals
85260 * as well as by sys_exit_group (below). 86459 * as well as by sys_exit_group (below).
85261 */ 86460 */
@@ -85265,10 +86464,49 @@ index a949819..a5f127d 100644
85265 { 86464 {
85266 struct signal_struct *sig = current->signal; 86465 struct signal_struct *sig = current->signal;
85267diff --git a/kernel/fork.c b/kernel/fork.c 86466diff --git a/kernel/fork.c b/kernel/fork.c
85268index dfa736c..d170f9b 100644 86467index a17621c..d9e4b37 100644
85269--- a/kernel/fork.c 86468--- a/kernel/fork.c
85270+++ b/kernel/fork.c 86469+++ b/kernel/fork.c
85271@@ -319,7 +319,7 @@ static struct task_struct *dup_task_struct(struct task_struct *orig) 86470@@ -137,6 +137,18 @@ void __weak arch_release_thread_info(struct thread_info *ti)
86471 {
86472 }
86473
86474+#ifdef CONFIG_GRKERNSEC_KSTACKOVERFLOW
86475+static struct thread_info *alloc_thread_info_node(struct task_struct *tsk,
86476+ int node)
86477+{
86478+ return vmalloc_stack(node);
86479+}
86480+
86481+static inline void free_thread_info(struct thread_info *ti)
86482+{
86483+ vfree(ti);
86484+}
86485+#else
86486 #ifndef CONFIG_ARCH_THREAD_INFO_ALLOCATOR
86487
86488 /*
86489@@ -179,6 +191,7 @@ void thread_info_cache_init(void)
86490 }
86491 # endif
86492 #endif
86493+#endif
86494
86495 /* SLAB cache for signal_struct structures (tsk->signal) */
86496 static struct kmem_cache *signal_cachep;
86497@@ -200,9 +213,11 @@ static struct kmem_cache *mm_cachep;
86498
86499 static void account_kernel_stack(struct thread_info *ti, int account)
86500 {
86501+#ifndef CONFIG_GRKERNSEC_KSTACKOVERFLOW
86502 struct zone *zone = page_zone(virt_to_page(ti));
86503
86504 mod_zone_page_state(zone, NR_KERNEL_STACK, account);
86505+#endif
86506 }
86507
86508 void free_task(struct task_struct *tsk)
86509@@ -319,7 +334,7 @@ static struct task_struct *dup_task_struct(struct task_struct *orig)
85272 *stackend = STACK_END_MAGIC; /* for overflow detection */ 86510 *stackend = STACK_END_MAGIC; /* for overflow detection */
85273 86511
85274 #ifdef CONFIG_CC_STACKPROTECTOR 86512 #ifdef CONFIG_CC_STACKPROTECTOR
@@ -85277,7 +86515,7 @@ index dfa736c..d170f9b 100644
85277 #endif 86515 #endif
85278 86516
85279 /* 86517 /*
85280@@ -345,12 +345,80 @@ free_tsk: 86518@@ -345,12 +360,80 @@ free_tsk:
85281 } 86519 }
85282 86520
85283 #ifdef CONFIG_MMU 86521 #ifdef CONFIG_MMU
@@ -85360,7 +86598,7 @@ index dfa736c..d170f9b 100644
85360 86598
85361 uprobe_start_dup_mmap(); 86599 uprobe_start_dup_mmap();
85362 down_write(&oldmm->mmap_sem); 86600 down_write(&oldmm->mmap_sem);
85363@@ -379,55 +447,15 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm) 86601@@ -379,55 +462,15 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm)
85364 86602
85365 prev = NULL; 86603 prev = NULL;
85366 for (mpnt = oldmm->mmap; mpnt; mpnt = mpnt->vm_next) { 86604 for (mpnt = oldmm->mmap; mpnt; mpnt = mpnt->vm_next) {
@@ -85420,7 +86658,7 @@ index dfa736c..d170f9b 100644
85420 } 86658 }
85421 86659
85422 /* 86660 /*
85423@@ -459,6 +487,31 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm) 86661@@ -459,6 +502,31 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm)
85424 if (retval) 86662 if (retval)
85425 goto out; 86663 goto out;
85426 } 86664 }
@@ -85452,7 +86690,7 @@ index dfa736c..d170f9b 100644
85452 /* a new mm has just been created */ 86690 /* a new mm has just been created */
85453 arch_dup_mmap(oldmm, mm); 86691 arch_dup_mmap(oldmm, mm);
85454 retval = 0; 86692 retval = 0;
85455@@ -468,14 +521,6 @@ out: 86693@@ -468,14 +536,6 @@ out:
85456 up_write(&oldmm->mmap_sem); 86694 up_write(&oldmm->mmap_sem);
85457 uprobe_end_dup_mmap(); 86695 uprobe_end_dup_mmap();
85458 return retval; 86696 return retval;
@@ -85467,7 +86705,7 @@ index dfa736c..d170f9b 100644
85467 } 86705 }
85468 86706
85469 static inline int mm_alloc_pgd(struct mm_struct *mm) 86707 static inline int mm_alloc_pgd(struct mm_struct *mm)
85470@@ -689,8 +734,8 @@ struct mm_struct *mm_access(struct task_struct *task, unsigned int mode) 86708@@ -689,8 +749,8 @@ struct mm_struct *mm_access(struct task_struct *task, unsigned int mode)
85471 return ERR_PTR(err); 86709 return ERR_PTR(err);
85472 86710
85473 mm = get_task_mm(task); 86711 mm = get_task_mm(task);
@@ -85478,7 +86716,7 @@ index dfa736c..d170f9b 100644
85478 mmput(mm); 86716 mmput(mm);
85479 mm = ERR_PTR(-EACCES); 86717 mm = ERR_PTR(-EACCES);
85480 } 86718 }
85481@@ -909,13 +954,20 @@ static int copy_fs(unsigned long clone_flags, struct task_struct *tsk) 86719@@ -906,13 +966,20 @@ static int copy_fs(unsigned long clone_flags, struct task_struct *tsk)
85482 spin_unlock(&fs->lock); 86720 spin_unlock(&fs->lock);
85483 return -EAGAIN; 86721 return -EAGAIN;
85484 } 86722 }
@@ -85500,7 +86738,7 @@ index dfa736c..d170f9b 100644
85500 return 0; 86738 return 0;
85501 } 86739 }
85502 86740
85503@@ -1126,7 +1178,7 @@ init_task_pid(struct task_struct *task, enum pid_type type, struct pid *pid) 86741@@ -1130,7 +1197,7 @@ init_task_pid(struct task_struct *task, enum pid_type type, struct pid *pid)
85504 * parts of the process environment (as per the clone 86742 * parts of the process environment (as per the clone
85505 * flags). The actual kick-off is left to the caller. 86743 * flags). The actual kick-off is left to the caller.
85506 */ 86744 */
@@ -85509,7 +86747,7 @@ index dfa736c..d170f9b 100644
85509 unsigned long stack_start, 86747 unsigned long stack_start,
85510 unsigned long stack_size, 86748 unsigned long stack_size,
85511 int __user *child_tidptr, 86749 int __user *child_tidptr,
85512@@ -1198,6 +1250,9 @@ static struct task_struct *copy_process(unsigned long clone_flags, 86750@@ -1202,6 +1269,9 @@ static struct task_struct *copy_process(unsigned long clone_flags,
85513 DEBUG_LOCKS_WARN_ON(!p->softirqs_enabled); 86751 DEBUG_LOCKS_WARN_ON(!p->softirqs_enabled);
85514 #endif 86752 #endif
85515 retval = -EAGAIN; 86753 retval = -EAGAIN;
@@ -85519,7 +86757,7 @@ index dfa736c..d170f9b 100644
85519 if (atomic_read(&p->real_cred->user->processes) >= 86757 if (atomic_read(&p->real_cred->user->processes) >=
85520 task_rlimit(p, RLIMIT_NPROC)) { 86758 task_rlimit(p, RLIMIT_NPROC)) {
85521 if (p->real_cred->user != INIT_USER && 86759 if (p->real_cred->user != INIT_USER &&
85522@@ -1446,6 +1501,11 @@ static struct task_struct *copy_process(unsigned long clone_flags, 86760@@ -1449,6 +1519,11 @@ static struct task_struct *copy_process(unsigned long clone_flags,
85523 goto bad_fork_free_pid; 86761 goto bad_fork_free_pid;
85524 } 86762 }
85525 86763
@@ -85531,7 +86769,7 @@ index dfa736c..d170f9b 100644
85531 if (likely(p->pid)) { 86769 if (likely(p->pid)) {
85532 ptrace_init_task(p, (clone_flags & CLONE_PTRACE) || trace); 86770 ptrace_init_task(p, (clone_flags & CLONE_PTRACE) || trace);
85533 86771
85534@@ -1532,6 +1592,8 @@ bad_fork_cleanup_count: 86772@@ -1537,6 +1612,8 @@ bad_fork_cleanup_count:
85535 bad_fork_free: 86773 bad_fork_free:
85536 free_task(p); 86774 free_task(p);
85537 fork_out: 86775 fork_out:
@@ -85540,7 +86778,7 @@ index dfa736c..d170f9b 100644
85540 return ERR_PTR(retval); 86778 return ERR_PTR(retval);
85541 } 86779 }
85542 86780
85543@@ -1593,6 +1655,7 @@ long do_fork(unsigned long clone_flags, 86781@@ -1598,6 +1675,7 @@ long do_fork(unsigned long clone_flags,
85544 86782
85545 p = copy_process(clone_flags, stack_start, stack_size, 86783 p = copy_process(clone_flags, stack_start, stack_size,
85546 child_tidptr, NULL, trace); 86784 child_tidptr, NULL, trace);
@@ -85548,7 +86786,7 @@ index dfa736c..d170f9b 100644
85548 /* 86786 /*
85549 * Do this prior waking up the new thread - the thread pointer 86787 * Do this prior waking up the new thread - the thread pointer
85550 * might get invalid after that point, if the thread exits quickly. 86788 * might get invalid after that point, if the thread exits quickly.
85551@@ -1607,6 +1670,8 @@ long do_fork(unsigned long clone_flags, 86789@@ -1612,6 +1690,8 @@ long do_fork(unsigned long clone_flags,
85552 if (clone_flags & CLONE_PARENT_SETTID) 86790 if (clone_flags & CLONE_PARENT_SETTID)
85553 put_user(nr, parent_tidptr); 86791 put_user(nr, parent_tidptr);
85554 86792
@@ -85557,7 +86795,7 @@ index dfa736c..d170f9b 100644
85557 if (clone_flags & CLONE_VFORK) { 86795 if (clone_flags & CLONE_VFORK) {
85558 p->vfork_done = &vfork; 86796 p->vfork_done = &vfork;
85559 init_completion(&vfork); 86797 init_completion(&vfork);
85560@@ -1723,7 +1788,7 @@ void __init proc_caches_init(void) 86798@@ -1728,7 +1808,7 @@ void __init proc_caches_init(void)
85561 mm_cachep = kmem_cache_create("mm_struct", 86799 mm_cachep = kmem_cache_create("mm_struct",
85562 sizeof(struct mm_struct), ARCH_MIN_MMSTRUCT_ALIGN, 86800 sizeof(struct mm_struct), ARCH_MIN_MMSTRUCT_ALIGN,
85563 SLAB_HWCACHE_ALIGN|SLAB_PANIC|SLAB_NOTRACK, NULL); 86801 SLAB_HWCACHE_ALIGN|SLAB_PANIC|SLAB_NOTRACK, NULL);
@@ -85566,7 +86804,7 @@ index dfa736c..d170f9b 100644
85566 mmap_init(); 86804 mmap_init();
85567 nsproxy_cache_init(); 86805 nsproxy_cache_init();
85568 } 86806 }
85569@@ -1763,7 +1828,7 @@ static int unshare_fs(unsigned long unshare_flags, struct fs_struct **new_fsp) 86807@@ -1768,7 +1848,7 @@ static int unshare_fs(unsigned long unshare_flags, struct fs_struct **new_fsp)
85570 return 0; 86808 return 0;
85571 86809
85572 /* don't need lock here; in the worst case we'll do useless copy */ 86810 /* don't need lock here; in the worst case we'll do useless copy */
@@ -85575,7 +86813,7 @@ index dfa736c..d170f9b 100644
85575 return 0; 86813 return 0;
85576 86814
85577 *new_fsp = copy_fs_struct(fs); 86815 *new_fsp = copy_fs_struct(fs);
85578@@ -1870,7 +1935,8 @@ SYSCALL_DEFINE1(unshare, unsigned long, unshare_flags) 86816@@ -1875,7 +1955,8 @@ SYSCALL_DEFINE1(unshare, unsigned long, unshare_flags)
85579 fs = current->fs; 86817 fs = current->fs;
85580 spin_lock(&fs->lock); 86818 spin_lock(&fs->lock);
85581 current->fs = new_fs; 86819 current->fs = new_fs;
@@ -85586,7 +86824,7 @@ index dfa736c..d170f9b 100644
85586 else 86824 else
85587 new_fs = fs; 86825 new_fs = fs;
85588diff --git a/kernel/futex.c b/kernel/futex.c 86826diff --git a/kernel/futex.c b/kernel/futex.c
85589index f6ff019..ac53307 100644 86827index 6801b37..bb6becca 100644
85590--- a/kernel/futex.c 86828--- a/kernel/futex.c
85591+++ b/kernel/futex.c 86829+++ b/kernel/futex.c
85592@@ -54,6 +54,7 @@ 86830@@ -54,6 +54,7 @@
@@ -85597,7 +86835,7 @@ index f6ff019..ac53307 100644
85597 #include <linux/signal.h> 86835 #include <linux/signal.h>
85598 #include <linux/export.h> 86836 #include <linux/export.h>
85599 #include <linux/magic.h> 86837 #include <linux/magic.h>
85600@@ -243,6 +244,11 @@ get_futex_key(u32 __user *uaddr, int fshared, union futex_key *key, int rw) 86838@@ -380,6 +381,11 @@ get_futex_key(u32 __user *uaddr, int fshared, union futex_key *key, int rw)
85601 struct page *page, *page_head; 86839 struct page *page, *page_head;
85602 int err, ro = 0; 86840 int err, ro = 0;
85603 86841
@@ -85609,7 +86847,7 @@ index f6ff019..ac53307 100644
85609 /* 86847 /*
85610 * The futex address must be "naturally" aligned. 86848 * The futex address must be "naturally" aligned.
85611 */ 86849 */
85612@@ -442,7 +448,7 @@ static int cmpxchg_futex_value_locked(u32 *curval, u32 __user *uaddr, 86850@@ -579,7 +585,7 @@ static int cmpxchg_futex_value_locked(u32 *curval, u32 __user *uaddr,
85613 86851
85614 static int get_futex_value_locked(u32 *dest, u32 __user *from) 86852 static int get_futex_value_locked(u32 *dest, u32 __user *from)
85615 { 86853 {
@@ -85618,15 +86856,15 @@ index f6ff019..ac53307 100644
85618 86856
85619 pagefault_disable(); 86857 pagefault_disable();
85620 ret = __copy_from_user_inatomic(dest, from, sizeof(u32)); 86858 ret = __copy_from_user_inatomic(dest, from, sizeof(u32));
85621@@ -2735,6 +2741,7 @@ static int __init futex_init(void) 86859@@ -2886,6 +2892,7 @@ static void __init futex_detect_cmpxchg(void)
85622 { 86860 {
86861 #ifndef CONFIG_HAVE_FUTEX_CMPXCHG
85623 u32 curval; 86862 u32 curval;
85624 int i;
85625+ mm_segment_t oldfs; 86863+ mm_segment_t oldfs;
85626 86864
85627 /* 86865 /*
85628 * This will fail and we want it. Some arch implementations do 86866 * This will fail and we want it. Some arch implementations do
85629@@ -2746,8 +2753,11 @@ static int __init futex_init(void) 86867@@ -2897,8 +2904,11 @@ static void __init futex_detect_cmpxchg(void)
85630 * implementation, the non-functional ones will return 86868 * implementation, the non-functional ones will return
85631 * -ENOSYS. 86869 * -ENOSYS.
85632 */ 86870 */
@@ -85635,9 +86873,9 @@ index f6ff019..ac53307 100644
85635 if (cmpxchg_futex_value_locked(&curval, NULL, 0, 0) == -EFAULT) 86873 if (cmpxchg_futex_value_locked(&curval, NULL, 0, 0) == -EFAULT)
85636 futex_cmpxchg_enabled = 1; 86874 futex_cmpxchg_enabled = 1;
85637+ set_fs(oldfs); 86875+ set_fs(oldfs);
86876 #endif
86877 }
85638 86878
85639 for (i = 0; i < ARRAY_SIZE(futex_queues); i++) {
85640 plist_head_init(&futex_queues[i].chain);
85641diff --git a/kernel/futex_compat.c b/kernel/futex_compat.c 86879diff --git a/kernel/futex_compat.c b/kernel/futex_compat.c
85642index f9f44fd..29885e4 100644 86880index f9f44fd..29885e4 100644
85643--- a/kernel/futex_compat.c 86881--- a/kernel/futex_compat.c
@@ -85677,10 +86915,10 @@ index f45b75b..bfac6d5 100644
85677 if (gcov_events_enabled) 86915 if (gcov_events_enabled)
85678 gcov_event(GCOV_REMOVE, info); 86916 gcov_event(GCOV_REMOVE, info);
85679diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c 86917diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
85680index 383319b..56ebb13 100644 86918index 0909436..6037d22 100644
85681--- a/kernel/hrtimer.c 86919--- a/kernel/hrtimer.c
85682+++ b/kernel/hrtimer.c 86920+++ b/kernel/hrtimer.c
85683@@ -1438,7 +1438,7 @@ void hrtimer_peek_ahead_timers(void) 86921@@ -1439,7 +1439,7 @@ void hrtimer_peek_ahead_timers(void)
85684 local_irq_restore(flags); 86922 local_irq_restore(flags);
85685 } 86923 }
85686 86924
@@ -85875,10 +87113,10 @@ index e30ac0f..3528cac 100644
85875 87113
85876 /* 87114 /*
85877diff --git a/kernel/kexec.c b/kernel/kexec.c 87115diff --git a/kernel/kexec.c b/kernel/kexec.c
85878index 9c97016..df438f8 100644 87116index 60bafbe..a120f4f 100644
85879--- a/kernel/kexec.c 87117--- a/kernel/kexec.c
85880+++ b/kernel/kexec.c 87118+++ b/kernel/kexec.c
85881@@ -1044,7 +1044,8 @@ asmlinkage long compat_sys_kexec_load(unsigned long entry, 87119@@ -1045,7 +1045,8 @@ asmlinkage long compat_sys_kexec_load(unsigned long entry,
85882 unsigned long flags) 87120 unsigned long flags)
85883 { 87121 {
85884 struct compat_kexec_segment in; 87122 struct compat_kexec_segment in;
@@ -85889,7 +87127,7 @@ index 9c97016..df438f8 100644
85889 87127
85890 /* Don't allow clients that don't understand the native 87128 /* Don't allow clients that don't understand the native
85891diff --git a/kernel/kmod.c b/kernel/kmod.c 87129diff --git a/kernel/kmod.c b/kernel/kmod.c
85892index b086006..b66f630 100644 87130index 6b375af..eaff670 100644
85893--- a/kernel/kmod.c 87131--- a/kernel/kmod.c
85894+++ b/kernel/kmod.c 87132+++ b/kernel/kmod.c
85895@@ -75,7 +75,7 @@ static void free_modprobe_argv(struct subprocess_info *info) 87133@@ -75,7 +75,7 @@ static void free_modprobe_argv(struct subprocess_info *info)
@@ -86041,7 +87279,7 @@ index b086006..b66f630 100644
86041@@ -240,8 +307,8 @@ static int ____call_usermodehelper(void *data) 87279@@ -240,8 +307,8 @@ static int ____call_usermodehelper(void *data)
86042 commit_creds(new); 87280 commit_creds(new);
86043 87281
86044 retval = do_execve(sub_info->path, 87282 retval = do_execve(getname_kernel(sub_info->path),
86045- (const char __user *const __user *)sub_info->argv, 87283- (const char __user *const __user *)sub_info->argv,
86046- (const char __user *const __user *)sub_info->envp); 87284- (const char __user *const __user *)sub_info->envp);
86047+ (const char __user *const __force_user *)sub_info->argv, 87285+ (const char __user *const __force_user *)sub_info->argv,
@@ -86135,7 +87373,7 @@ index ceeadfc..11c18b6 100644
86135 87373
86136 if (!pp) 87374 if (!pp)
86137diff --git a/kernel/ksysfs.c b/kernel/ksysfs.c 87375diff --git a/kernel/ksysfs.c b/kernel/ksysfs.c
86138index 9659d38..bffd520 100644 87376index d945a94..0b7f45f 100644
86139--- a/kernel/ksysfs.c 87377--- a/kernel/ksysfs.c
86140+++ b/kernel/ksysfs.c 87378+++ b/kernel/ksysfs.c
86141@@ -46,6 +46,8 @@ static ssize_t uevent_helper_store(struct kobject *kobj, 87379@@ -46,6 +46,8 @@ static ssize_t uevent_helper_store(struct kobject *kobj,
@@ -86157,10 +87395,10 @@ index 9659d38..bffd520 100644
86157 .name = "notes", 87395 .name = "notes",
86158 .mode = S_IRUGO, 87396 .mode = S_IRUGO,
86159diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c 87397diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
86160index 576ba75..7c256e4 100644 87398index eb8a547..321d8e1 100644
86161--- a/kernel/locking/lockdep.c 87399--- a/kernel/locking/lockdep.c
86162+++ b/kernel/locking/lockdep.c 87400+++ b/kernel/locking/lockdep.c
86163@@ -596,6 +596,10 @@ static int static_obj(void *obj) 87401@@ -597,6 +597,10 @@ static int static_obj(void *obj)
86164 end = (unsigned long) &_end, 87402 end = (unsigned long) &_end,
86165 addr = (unsigned long) obj; 87403 addr = (unsigned long) obj;
86166 87404
@@ -86171,7 +87409,7 @@ index 576ba75..7c256e4 100644
86171 /* 87409 /*
86172 * static variable? 87410 * static variable?
86173 */ 87411 */
86174@@ -736,6 +740,7 @@ register_lock_class(struct lockdep_map *lock, unsigned int subclass, int force) 87412@@ -738,6 +742,7 @@ register_lock_class(struct lockdep_map *lock, unsigned int subclass, int force)
86175 if (!static_obj(lock->key)) { 87413 if (!static_obj(lock->key)) {
86176 debug_locks_off(); 87414 debug_locks_off();
86177 printk("INFO: trying to register non-static key.\n"); 87415 printk("INFO: trying to register non-static key.\n");
@@ -86179,7 +87417,7 @@ index 576ba75..7c256e4 100644
86179 printk("the code is fine but needs lockdep annotation.\n"); 87417 printk("the code is fine but needs lockdep annotation.\n");
86180 printk("turning off the locking correctness validator.\n"); 87418 printk("turning off the locking correctness validator.\n");
86181 dump_stack(); 87419 dump_stack();
86182@@ -3080,7 +3085,7 @@ static int __lock_acquire(struct lockdep_map *lock, unsigned int subclass, 87420@@ -3082,7 +3087,7 @@ static int __lock_acquire(struct lockdep_map *lock, unsigned int subclass,
86183 if (!class) 87421 if (!class)
86184 return 0; 87422 return 0;
86185 } 87423 }
@@ -86238,7 +87476,7 @@ index ef43ac4..2720dfa 100644
86238 seq_printf(m, "%40s %14lu %29s %pS\n", 87476 seq_printf(m, "%40s %14lu %29s %pS\n",
86239 name, stats->contending_point[i], 87477 name, stats->contending_point[i],
86240diff --git a/kernel/locking/mutex-debug.c b/kernel/locking/mutex-debug.c 87478diff --git a/kernel/locking/mutex-debug.c b/kernel/locking/mutex-debug.c
86241index 7e3443f..b2a1e6b 100644 87479index faf6f5b..dc9070a 100644
86242--- a/kernel/locking/mutex-debug.c 87480--- a/kernel/locking/mutex-debug.c
86243+++ b/kernel/locking/mutex-debug.c 87481+++ b/kernel/locking/mutex-debug.c
86244@@ -49,21 +49,21 @@ void debug_mutex_free_waiter(struct mutex_waiter *waiter) 87482@@ -49,21 +49,21 @@ void debug_mutex_free_waiter(struct mutex_waiter *waiter)
@@ -86429,7 +87667,7 @@ index 1d96dd0..994ff19 100644
86429 87667
86430 default: 87668 default:
86431diff --git a/kernel/module.c b/kernel/module.c 87669diff --git a/kernel/module.c b/kernel/module.c
86432index f5a3b1e..97ebb15 100644 87670index d24fcf2..2af3fd9 100644
86433--- a/kernel/module.c 87671--- a/kernel/module.c
86434+++ b/kernel/module.c 87672+++ b/kernel/module.c
86435@@ -61,6 +61,7 @@ 87673@@ -61,6 +61,7 @@
@@ -86477,7 +87715,7 @@ index f5a3b1e..97ebb15 100644
86477 pr_warn("%s: per-cpu alignment %li > %li\n", 87715 pr_warn("%s: per-cpu alignment %li > %li\n",
86478 mod->name, align, PAGE_SIZE); 87716 mod->name, align, PAGE_SIZE);
86479 align = PAGE_SIZE; 87717 align = PAGE_SIZE;
86480@@ -1064,7 +1066,7 @@ struct module_attribute module_uevent = 87718@@ -1062,7 +1064,7 @@ struct module_attribute module_uevent =
86481 static ssize_t show_coresize(struct module_attribute *mattr, 87719 static ssize_t show_coresize(struct module_attribute *mattr,
86482 struct module_kobject *mk, char *buffer) 87720 struct module_kobject *mk, char *buffer)
86483 { 87721 {
@@ -86486,7 +87724,7 @@ index f5a3b1e..97ebb15 100644
86486 } 87724 }
86487 87725
86488 static struct module_attribute modinfo_coresize = 87726 static struct module_attribute modinfo_coresize =
86489@@ -1073,7 +1075,7 @@ static struct module_attribute modinfo_coresize = 87727@@ -1071,7 +1073,7 @@ static struct module_attribute modinfo_coresize =
86490 static ssize_t show_initsize(struct module_attribute *mattr, 87728 static ssize_t show_initsize(struct module_attribute *mattr,
86491 struct module_kobject *mk, char *buffer) 87729 struct module_kobject *mk, char *buffer)
86492 { 87730 {
@@ -86495,7 +87733,7 @@ index f5a3b1e..97ebb15 100644
86495 } 87733 }
86496 87734
86497 static struct module_attribute modinfo_initsize = 87735 static struct module_attribute modinfo_initsize =
86498@@ -1165,12 +1167,29 @@ static int check_version(Elf_Shdr *sechdrs, 87736@@ -1163,12 +1165,29 @@ static int check_version(Elf_Shdr *sechdrs,
86499 goto bad_version; 87737 goto bad_version;
86500 } 87738 }
86501 87739
@@ -86525,7 +87763,7 @@ index f5a3b1e..97ebb15 100644
86525 return 0; 87763 return 0;
86526 } 87764 }
86527 87765
86528@@ -1286,7 +1305,7 @@ resolve_symbol_wait(struct module *mod, 87766@@ -1284,7 +1303,7 @@ resolve_symbol_wait(struct module *mod,
86529 */ 87767 */
86530 #ifdef CONFIG_SYSFS 87768 #ifdef CONFIG_SYSFS
86531 87769
@@ -86534,7 +87772,7 @@ index f5a3b1e..97ebb15 100644
86534 static inline bool sect_empty(const Elf_Shdr *sect) 87772 static inline bool sect_empty(const Elf_Shdr *sect)
86535 { 87773 {
86536 return !(sect->sh_flags & SHF_ALLOC) || sect->sh_size == 0; 87774 return !(sect->sh_flags & SHF_ALLOC) || sect->sh_size == 0;
86537@@ -1426,7 +1445,7 @@ static void add_notes_attrs(struct module *mod, const struct load_info *info) 87775@@ -1424,7 +1443,7 @@ static void add_notes_attrs(struct module *mod, const struct load_info *info)
86538 { 87776 {
86539 unsigned int notes, loaded, i; 87777 unsigned int notes, loaded, i;
86540 struct module_notes_attrs *notes_attrs; 87778 struct module_notes_attrs *notes_attrs;
@@ -86543,7 +87781,7 @@ index f5a3b1e..97ebb15 100644
86543 87781
86544 /* failed to create section attributes, so can't create notes */ 87782 /* failed to create section attributes, so can't create notes */
86545 if (!mod->sect_attrs) 87783 if (!mod->sect_attrs)
86546@@ -1538,7 +1557,7 @@ static void del_usage_links(struct module *mod) 87784@@ -1536,7 +1555,7 @@ static void del_usage_links(struct module *mod)
86547 static int module_add_modinfo_attrs(struct module *mod) 87785 static int module_add_modinfo_attrs(struct module *mod)
86548 { 87786 {
86549 struct module_attribute *attr; 87787 struct module_attribute *attr;
@@ -86552,7 +87790,7 @@ index f5a3b1e..97ebb15 100644
86552 int error = 0; 87790 int error = 0;
86553 int i; 87791 int i;
86554 87792
86555@@ -1759,21 +1778,21 @@ static void set_section_ro_nx(void *base, 87793@@ -1757,21 +1776,21 @@ static void set_section_ro_nx(void *base,
86556 87794
86557 static void unset_module_core_ro_nx(struct module *mod) 87795 static void unset_module_core_ro_nx(struct module *mod)
86558 { 87796 {
@@ -86582,7 +87820,7 @@ index f5a3b1e..97ebb15 100644
86582 set_memory_rw); 87820 set_memory_rw);
86583 } 87821 }
86584 87822
86585@@ -1786,14 +1805,14 @@ void set_all_modules_text_rw(void) 87823@@ -1784,14 +1803,14 @@ void set_all_modules_text_rw(void)
86586 list_for_each_entry_rcu(mod, &modules, list) { 87824 list_for_each_entry_rcu(mod, &modules, list) {
86587 if (mod->state == MODULE_STATE_UNFORMED) 87825 if (mod->state == MODULE_STATE_UNFORMED)
86588 continue; 87826 continue;
@@ -86603,7 +87841,7 @@ index f5a3b1e..97ebb15 100644
86603 set_memory_rw); 87841 set_memory_rw);
86604 } 87842 }
86605 } 87843 }
86606@@ -1809,14 +1828,14 @@ void set_all_modules_text_ro(void) 87844@@ -1807,14 +1826,14 @@ void set_all_modules_text_ro(void)
86607 list_for_each_entry_rcu(mod, &modules, list) { 87845 list_for_each_entry_rcu(mod, &modules, list) {
86608 if (mod->state == MODULE_STATE_UNFORMED) 87846 if (mod->state == MODULE_STATE_UNFORMED)
86609 continue; 87847 continue;
@@ -86624,7 +87862,7 @@ index f5a3b1e..97ebb15 100644
86624 set_memory_ro); 87862 set_memory_ro);
86625 } 87863 }
86626 } 87864 }
86627@@ -1867,16 +1886,19 @@ static void free_module(struct module *mod) 87865@@ -1865,16 +1884,19 @@ static void free_module(struct module *mod)
86628 87866
86629 /* This may be NULL, but that's OK */ 87867 /* This may be NULL, but that's OK */
86630 unset_module_init_ro_nx(mod); 87868 unset_module_init_ro_nx(mod);
@@ -86647,7 +87885,7 @@ index f5a3b1e..97ebb15 100644
86647 87885
86648 #ifdef CONFIG_MPU 87886 #ifdef CONFIG_MPU
86649 update_protections(current->mm); 87887 update_protections(current->mm);
86650@@ -1945,9 +1967,31 @@ static int simplify_symbols(struct module *mod, const struct load_info *info) 87888@@ -1943,9 +1965,31 @@ static int simplify_symbols(struct module *mod, const struct load_info *info)
86651 int ret = 0; 87889 int ret = 0;
86652 const struct kernel_symbol *ksym; 87890 const struct kernel_symbol *ksym;
86653 87891
@@ -86679,7 +87917,7 @@ index f5a3b1e..97ebb15 100644
86679 switch (sym[i].st_shndx) { 87917 switch (sym[i].st_shndx) {
86680 case SHN_COMMON: 87918 case SHN_COMMON:
86681 /* We compiled with -fno-common. These are not 87919 /* We compiled with -fno-common. These are not
86682@@ -1968,7 +2012,9 @@ static int simplify_symbols(struct module *mod, const struct load_info *info) 87920@@ -1966,7 +2010,9 @@ static int simplify_symbols(struct module *mod, const struct load_info *info)
86683 ksym = resolve_symbol_wait(mod, info, name); 87921 ksym = resolve_symbol_wait(mod, info, name);
86684 /* Ok if resolved. */ 87922 /* Ok if resolved. */
86685 if (ksym && !IS_ERR(ksym)) { 87923 if (ksym && !IS_ERR(ksym)) {
@@ -86689,7 +87927,7 @@ index f5a3b1e..97ebb15 100644
86689 break; 87927 break;
86690 } 87928 }
86691 87929
86692@@ -1987,11 +2033,20 @@ static int simplify_symbols(struct module *mod, const struct load_info *info) 87930@@ -1985,11 +2031,20 @@ static int simplify_symbols(struct module *mod, const struct load_info *info)
86693 secbase = (unsigned long)mod_percpu(mod); 87931 secbase = (unsigned long)mod_percpu(mod);
86694 else 87932 else
86695 secbase = info->sechdrs[sym[i].st_shndx].sh_addr; 87933 secbase = info->sechdrs[sym[i].st_shndx].sh_addr;
@@ -86710,7 +87948,7 @@ index f5a3b1e..97ebb15 100644
86710 return ret; 87948 return ret;
86711 } 87949 }
86712 87950
86713@@ -2075,22 +2130,12 @@ static void layout_sections(struct module *mod, struct load_info *info) 87951@@ -2073,22 +2128,12 @@ static void layout_sections(struct module *mod, struct load_info *info)
86714 || s->sh_entsize != ~0UL 87952 || s->sh_entsize != ~0UL
86715 || strstarts(sname, ".init")) 87953 || strstarts(sname, ".init"))
86716 continue; 87954 continue;
@@ -86737,7 +87975,7 @@ index f5a3b1e..97ebb15 100644
86737 } 87975 }
86738 87976
86739 pr_debug("Init section allocation order:\n"); 87977 pr_debug("Init section allocation order:\n");
86740@@ -2104,23 +2149,13 @@ static void layout_sections(struct module *mod, struct load_info *info) 87978@@ -2102,23 +2147,13 @@ static void layout_sections(struct module *mod, struct load_info *info)
86741 || s->sh_entsize != ~0UL 87979 || s->sh_entsize != ~0UL
86742 || !strstarts(sname, ".init")) 87980 || !strstarts(sname, ".init"))
86743 continue; 87981 continue;
@@ -86766,7 +88004,7 @@ index f5a3b1e..97ebb15 100644
86766 } 88004 }
86767 } 88005 }
86768 88006
86769@@ -2293,7 +2328,7 @@ static void layout_symtab(struct module *mod, struct load_info *info) 88007@@ -2291,7 +2326,7 @@ static void layout_symtab(struct module *mod, struct load_info *info)
86770 88008
86771 /* Put symbol section at end of init part of module. */ 88009 /* Put symbol section at end of init part of module. */
86772 symsect->sh_flags |= SHF_ALLOC; 88010 symsect->sh_flags |= SHF_ALLOC;
@@ -86775,7 +88013,7 @@ index f5a3b1e..97ebb15 100644
86775 info->index.sym) | INIT_OFFSET_MASK; 88013 info->index.sym) | INIT_OFFSET_MASK;
86776 pr_debug("\t%s\n", info->secstrings + symsect->sh_name); 88014 pr_debug("\t%s\n", info->secstrings + symsect->sh_name);
86777 88015
86778@@ -2310,13 +2345,13 @@ static void layout_symtab(struct module *mod, struct load_info *info) 88016@@ -2308,13 +2343,13 @@ static void layout_symtab(struct module *mod, struct load_info *info)
86779 } 88017 }
86780 88018
86781 /* Append room for core symbols at end of core part. */ 88019 /* Append room for core symbols at end of core part. */
@@ -86793,7 +88031,7 @@ index f5a3b1e..97ebb15 100644
86793 info->index.str) | INIT_OFFSET_MASK; 88031 info->index.str) | INIT_OFFSET_MASK;
86794 pr_debug("\t%s\n", info->secstrings + strsect->sh_name); 88032 pr_debug("\t%s\n", info->secstrings + strsect->sh_name);
86795 } 88033 }
86796@@ -2334,12 +2369,14 @@ static void add_kallsyms(struct module *mod, const struct load_info *info) 88034@@ -2332,12 +2367,14 @@ static void add_kallsyms(struct module *mod, const struct load_info *info)
86797 /* Make sure we get permanent strtab: don't use info->strtab. */ 88035 /* Make sure we get permanent strtab: don't use info->strtab. */
86798 mod->strtab = (void *)info->sechdrs[info->index.str].sh_addr; 88036 mod->strtab = (void *)info->sechdrs[info->index.str].sh_addr;
86799 88037
@@ -86810,7 +88048,7 @@ index f5a3b1e..97ebb15 100644
86810 src = mod->symtab; 88048 src = mod->symtab;
86811 for (ndst = i = 0; i < mod->num_symtab; i++) { 88049 for (ndst = i = 0; i < mod->num_symtab; i++) {
86812 if (i == 0 || 88050 if (i == 0 ||
86813@@ -2351,6 +2388,8 @@ static void add_kallsyms(struct module *mod, const struct load_info *info) 88051@@ -2349,6 +2386,8 @@ static void add_kallsyms(struct module *mod, const struct load_info *info)
86814 } 88052 }
86815 } 88053 }
86816 mod->core_num_syms = ndst; 88054 mod->core_num_syms = ndst;
@@ -86819,7 +88057,7 @@ index f5a3b1e..97ebb15 100644
86819 } 88057 }
86820 #else 88058 #else
86821 static inline void layout_symtab(struct module *mod, struct load_info *info) 88059 static inline void layout_symtab(struct module *mod, struct load_info *info)
86822@@ -2384,17 +2423,33 @@ void * __weak module_alloc(unsigned long size) 88060@@ -2382,17 +2421,33 @@ void * __weak module_alloc(unsigned long size)
86823 return vmalloc_exec(size); 88061 return vmalloc_exec(size);
86824 } 88062 }
86825 88063
@@ -86858,7 +88096,7 @@ index f5a3b1e..97ebb15 100644
86858 mutex_unlock(&module_mutex); 88096 mutex_unlock(&module_mutex);
86859 } 88097 }
86860 return ret; 88098 return ret;
86861@@ -2651,7 +2706,15 @@ static struct module *setup_load_info(struct load_info *info, int flags) 88099@@ -2649,7 +2704,15 @@ static struct module *setup_load_info(struct load_info *info, int flags)
86862 mod = (void *)info->sechdrs[info->index.mod].sh_addr; 88100 mod = (void *)info->sechdrs[info->index.mod].sh_addr;
86863 88101
86864 if (info->index.sym == 0) { 88102 if (info->index.sym == 0) {
@@ -86874,7 +88112,7 @@ index f5a3b1e..97ebb15 100644
86874 return ERR_PTR(-ENOEXEC); 88112 return ERR_PTR(-ENOEXEC);
86875 } 88113 }
86876 88114
86877@@ -2667,8 +2730,14 @@ static struct module *setup_load_info(struct load_info *info, int flags) 88115@@ -2665,8 +2728,14 @@ static struct module *setup_load_info(struct load_info *info, int flags)
86878 static int check_modinfo(struct module *mod, struct load_info *info, int flags) 88116 static int check_modinfo(struct module *mod, struct load_info *info, int flags)
86879 { 88117 {
86880 const char *modmagic = get_modinfo(info, "vermagic"); 88118 const char *modmagic = get_modinfo(info, "vermagic");
@@ -86889,7 +88127,7 @@ index f5a3b1e..97ebb15 100644
86889 if (flags & MODULE_INIT_IGNORE_VERMAGIC) 88127 if (flags & MODULE_INIT_IGNORE_VERMAGIC)
86890 modmagic = NULL; 88128 modmagic = NULL;
86891 88129
86892@@ -2693,7 +2762,7 @@ static int check_modinfo(struct module *mod, struct load_info *info, int flags) 88130@@ -2691,7 +2760,7 @@ static int check_modinfo(struct module *mod, struct load_info *info, int flags)
86893 } 88131 }
86894 88132
86895 /* Set up license info based on the info section */ 88133 /* Set up license info based on the info section */
@@ -86898,7 +88136,7 @@ index f5a3b1e..97ebb15 100644
86898 88136
86899 return 0; 88137 return 0;
86900 } 88138 }
86901@@ -2787,7 +2856,7 @@ static int move_module(struct module *mod, struct load_info *info) 88139@@ -2785,7 +2854,7 @@ static int move_module(struct module *mod, struct load_info *info)
86902 void *ptr; 88140 void *ptr;
86903 88141
86904 /* Do the allocs. */ 88142 /* Do the allocs. */
@@ -86907,7 +88145,7 @@ index f5a3b1e..97ebb15 100644
86907 /* 88145 /*
86908 * The pointer to this block is stored in the module structure 88146 * The pointer to this block is stored in the module structure
86909 * which is inside the block. Just mark it as not being a 88147 * which is inside the block. Just mark it as not being a
86910@@ -2797,11 +2866,11 @@ static int move_module(struct module *mod, struct load_info *info) 88148@@ -2795,11 +2864,11 @@ static int move_module(struct module *mod, struct load_info *info)
86911 if (!ptr) 88149 if (!ptr)
86912 return -ENOMEM; 88150 return -ENOMEM;
86913 88151
@@ -86923,7 +88161,7 @@ index f5a3b1e..97ebb15 100644
86923 /* 88161 /*
86924 * The pointer to this block is stored in the module structure 88162 * The pointer to this block is stored in the module structure
86925 * which is inside the block. This block doesn't need to be 88163 * which is inside the block. This block doesn't need to be
86926@@ -2810,13 +2879,45 @@ static int move_module(struct module *mod, struct load_info *info) 88164@@ -2808,13 +2877,45 @@ static int move_module(struct module *mod, struct load_info *info)
86927 */ 88165 */
86928 kmemleak_ignore(ptr); 88166 kmemleak_ignore(ptr);
86929 if (!ptr) { 88167 if (!ptr) {
@@ -86973,7 +88211,7 @@ index f5a3b1e..97ebb15 100644
86973 88211
86974 /* Transfer each section which specifies SHF_ALLOC */ 88212 /* Transfer each section which specifies SHF_ALLOC */
86975 pr_debug("final section addresses:\n"); 88213 pr_debug("final section addresses:\n");
86976@@ -2827,16 +2928,45 @@ static int move_module(struct module *mod, struct load_info *info) 88214@@ -2825,16 +2926,45 @@ static int move_module(struct module *mod, struct load_info *info)
86977 if (!(shdr->sh_flags & SHF_ALLOC)) 88215 if (!(shdr->sh_flags & SHF_ALLOC))
86978 continue; 88216 continue;
86979 88217
@@ -87026,7 +88264,7 @@ index f5a3b1e..97ebb15 100644
87026 pr_debug("\t0x%lx %s\n", 88264 pr_debug("\t0x%lx %s\n",
87027 (long)shdr->sh_addr, info->secstrings + shdr->sh_name); 88265 (long)shdr->sh_addr, info->secstrings + shdr->sh_name);
87028 } 88266 }
87029@@ -2893,12 +3023,12 @@ static void flush_module_icache(const struct module *mod) 88267@@ -2891,12 +3021,12 @@ static void flush_module_icache(const struct module *mod)
87030 * Do it before processing of module parameters, so the module 88268 * Do it before processing of module parameters, so the module
87031 * can provide parameter accessor functions of its own. 88269 * can provide parameter accessor functions of its own.
87032 */ 88270 */
@@ -87045,7 +88283,7 @@ index f5a3b1e..97ebb15 100644
87045 88283
87046 set_fs(old_fs); 88284 set_fs(old_fs);
87047 } 88285 }
87048@@ -2955,8 +3085,10 @@ static struct module *layout_and_allocate(struct load_info *info, int flags) 88286@@ -2953,8 +3083,10 @@ static struct module *layout_and_allocate(struct load_info *info, int flags)
87049 static void module_deallocate(struct module *mod, struct load_info *info) 88287 static void module_deallocate(struct module *mod, struct load_info *info)
87050 { 88288 {
87051 percpu_modfree(mod); 88289 percpu_modfree(mod);
@@ -87058,7 +88296,7 @@ index f5a3b1e..97ebb15 100644
87058 } 88296 }
87059 88297
87060 int __weak module_finalize(const Elf_Ehdr *hdr, 88298 int __weak module_finalize(const Elf_Ehdr *hdr,
87061@@ -2969,7 +3101,9 @@ int __weak module_finalize(const Elf_Ehdr *hdr, 88299@@ -2967,7 +3099,9 @@ int __weak module_finalize(const Elf_Ehdr *hdr,
87062 static int post_relocation(struct module *mod, const struct load_info *info) 88300 static int post_relocation(struct module *mod, const struct load_info *info)
87063 { 88301 {
87064 /* Sort exception table now relocations are done. */ 88302 /* Sort exception table now relocations are done. */
@@ -87068,7 +88306,7 @@ index f5a3b1e..97ebb15 100644
87068 88306
87069 /* Copy relocated percpu area over. */ 88307 /* Copy relocated percpu area over. */
87070 percpu_modcopy(mod, (void *)info->sechdrs[info->index.pcpu].sh_addr, 88308 percpu_modcopy(mod, (void *)info->sechdrs[info->index.pcpu].sh_addr,
87071@@ -3023,16 +3157,16 @@ static int do_init_module(struct module *mod) 88309@@ -3021,16 +3155,16 @@ static int do_init_module(struct module *mod)
87072 MODULE_STATE_COMING, mod); 88310 MODULE_STATE_COMING, mod);
87073 88311
87074 /* Set RO and NX regions for core */ 88312 /* Set RO and NX regions for core */
@@ -87093,7 +88331,7 @@ index f5a3b1e..97ebb15 100644
87093 88331
87094 do_mod_ctors(mod); 88332 do_mod_ctors(mod);
87095 /* Start the module */ 88333 /* Start the module */
87096@@ -3093,11 +3227,12 @@ static int do_init_module(struct module *mod) 88334@@ -3091,11 +3225,12 @@ static int do_init_module(struct module *mod)
87097 mod->strtab = mod->core_strtab; 88335 mod->strtab = mod->core_strtab;
87098 #endif 88336 #endif
87099 unset_module_init_ro_nx(mod); 88337 unset_module_init_ro_nx(mod);
@@ -87111,7 +88349,7 @@ index f5a3b1e..97ebb15 100644
87111 mutex_unlock(&module_mutex); 88349 mutex_unlock(&module_mutex);
87112 wake_up_all(&module_wq); 88350 wake_up_all(&module_wq);
87113 88351
87114@@ -3240,9 +3375,38 @@ static int load_module(struct load_info *info, const char __user *uargs, 88352@@ -3238,9 +3373,38 @@ static int load_module(struct load_info *info, const char __user *uargs,
87115 if (err) 88353 if (err)
87116 goto free_unload; 88354 goto free_unload;
87117 88355
@@ -87150,7 +88388,7 @@ index f5a3b1e..97ebb15 100644
87150 /* Fix up syms, so that st_value is a pointer to location. */ 88388 /* Fix up syms, so that st_value is a pointer to location. */
87151 err = simplify_symbols(mod, info); 88389 err = simplify_symbols(mod, info);
87152 if (err < 0) 88390 if (err < 0)
87153@@ -3258,13 +3422,6 @@ static int load_module(struct load_info *info, const char __user *uargs, 88391@@ -3256,13 +3420,6 @@ static int load_module(struct load_info *info, const char __user *uargs,
87154 88392
87155 flush_module_icache(mod); 88393 flush_module_icache(mod);
87156 88394
@@ -87164,7 +88402,7 @@ index f5a3b1e..97ebb15 100644
87164 dynamic_debug_setup(info->debug, info->num_debug); 88402 dynamic_debug_setup(info->debug, info->num_debug);
87165 88403
87166 /* Finally it's fully formed, ready to start executing. */ 88404 /* Finally it's fully formed, ready to start executing. */
87167@@ -3299,11 +3456,10 @@ static int load_module(struct load_info *info, const char __user *uargs, 88405@@ -3297,11 +3454,10 @@ static int load_module(struct load_info *info, const char __user *uargs,
87168 ddebug_cleanup: 88406 ddebug_cleanup:
87169 dynamic_debug_remove(info->debug); 88407 dynamic_debug_remove(info->debug);
87170 synchronize_sched(); 88408 synchronize_sched();
@@ -87177,7 +88415,7 @@ index f5a3b1e..97ebb15 100644
87177 free_unload: 88415 free_unload:
87178 module_unload_free(mod); 88416 module_unload_free(mod);
87179 unlink_mod: 88417 unlink_mod:
87180@@ -3386,10 +3542,16 @@ static const char *get_ksymbol(struct module *mod, 88418@@ -3384,10 +3540,16 @@ static const char *get_ksymbol(struct module *mod,
87181 unsigned long nextval; 88419 unsigned long nextval;
87182 88420
87183 /* At worse, next value is at end of module */ 88421 /* At worse, next value is at end of module */
@@ -87197,7 +88435,7 @@ index f5a3b1e..97ebb15 100644
87197 88435
87198 /* Scan for closest preceding symbol, and next symbol. (ELF 88436 /* Scan for closest preceding symbol, and next symbol. (ELF
87199 starts real symbols at 1). */ 88437 starts real symbols at 1). */
87200@@ -3640,7 +3802,7 @@ static int m_show(struct seq_file *m, void *p) 88438@@ -3638,7 +3800,7 @@ static int m_show(struct seq_file *m, void *p)
87201 return 0; 88439 return 0;
87202 88440
87203 seq_printf(m, "%s %u", 88441 seq_printf(m, "%s %u",
@@ -87206,7 +88444,7 @@ index f5a3b1e..97ebb15 100644
87206 print_unload_info(m, mod); 88444 print_unload_info(m, mod);
87207 88445
87208 /* Informative for users. */ 88446 /* Informative for users. */
87209@@ -3649,7 +3811,7 @@ static int m_show(struct seq_file *m, void *p) 88447@@ -3647,7 +3809,7 @@ static int m_show(struct seq_file *m, void *p)
87210 mod->state == MODULE_STATE_COMING ? "Loading": 88448 mod->state == MODULE_STATE_COMING ? "Loading":
87211 "Live"); 88449 "Live");
87212 /* Used by oprofile and other similar tools. */ 88450 /* Used by oprofile and other similar tools. */
@@ -87215,7 +88453,7 @@ index f5a3b1e..97ebb15 100644
87215 88453
87216 /* Taints info */ 88454 /* Taints info */
87217 if (mod->taints) 88455 if (mod->taints)
87218@@ -3685,7 +3847,17 @@ static const struct file_operations proc_modules_operations = { 88456@@ -3683,7 +3845,17 @@ static const struct file_operations proc_modules_operations = {
87219 88457
87220 static int __init proc_modules_init(void) 88458 static int __init proc_modules_init(void)
87221 { 88459 {
@@ -87233,7 +88471,7 @@ index f5a3b1e..97ebb15 100644
87233 return 0; 88471 return 0;
87234 } 88472 }
87235 module_init(proc_modules_init); 88473 module_init(proc_modules_init);
87236@@ -3746,14 +3918,14 @@ struct module *__module_address(unsigned long addr) 88474@@ -3744,14 +3916,14 @@ struct module *__module_address(unsigned long addr)
87237 { 88475 {
87238 struct module *mod; 88476 struct module *mod;
87239 88477
@@ -87251,7 +88489,7 @@ index f5a3b1e..97ebb15 100644
87251 return mod; 88489 return mod;
87252 } 88490 }
87253 return NULL; 88491 return NULL;
87254@@ -3788,11 +3960,20 @@ bool is_module_text_address(unsigned long addr) 88492@@ -3786,11 +3958,20 @@ bool is_module_text_address(unsigned long addr)
87255 */ 88493 */
87256 struct module *__module_text_address(unsigned long addr) 88494 struct module *__module_text_address(unsigned long addr)
87257 { 88495 {
@@ -87332,7 +88570,7 @@ index 2d5cc4c..d9ea600 100644
87332 return -ENOENT; 88570 return -ENOENT;
87333 } 88571 }
87334diff --git a/kernel/padata.c b/kernel/padata.c 88572diff --git a/kernel/padata.c b/kernel/padata.c
87335index 2abd25d..02c4faa 100644 88573index 161402f..598814c 100644
87336--- a/kernel/padata.c 88574--- a/kernel/padata.c
87337+++ b/kernel/padata.c 88575+++ b/kernel/padata.c
87338@@ -54,7 +54,7 @@ static int padata_cpu_hash(struct parallel_data *pd) 88576@@ -54,7 +54,7 @@ static int padata_cpu_hash(struct parallel_data *pd)
@@ -87354,7 +88592,7 @@ index 2abd25d..02c4faa 100644
87354 atomic_set(&pd->refcnt, 0); 88592 atomic_set(&pd->refcnt, 0);
87355 pd->pinst = pinst; 88593 pd->pinst = pinst;
87356diff --git a/kernel/panic.c b/kernel/panic.c 88594diff --git a/kernel/panic.c b/kernel/panic.c
87357index c00b4ce..98c7d1a 100644 88595index 6d63003..486a109 100644
87358--- a/kernel/panic.c 88596--- a/kernel/panic.c
87359+++ b/kernel/panic.c 88597+++ b/kernel/panic.c
87360@@ -52,7 +52,7 @@ EXPORT_SYMBOL(panic_blink); 88598@@ -52,7 +52,7 @@ EXPORT_SYMBOL(panic_blink);
@@ -87442,7 +88680,7 @@ index 9b9a266..c20ef80 100644
87442 { 88680 {
87443 struct pid *pid; 88681 struct pid *pid;
87444diff --git a/kernel/pid_namespace.c b/kernel/pid_namespace.c 88682diff --git a/kernel/pid_namespace.c b/kernel/pid_namespace.c
87445index 06c62de..b08cc6c 100644 88683index db95d8e..a0ca23f 100644
87446--- a/kernel/pid_namespace.c 88684--- a/kernel/pid_namespace.c
87447+++ b/kernel/pid_namespace.c 88685+++ b/kernel/pid_namespace.c
87448@@ -253,7 +253,7 @@ static int pid_ns_ctl_handler(struct ctl_table *table, int write, 88686@@ -253,7 +253,7 @@ static int pid_ns_ctl_handler(struct ctl_table *table, int write,
@@ -87455,10 +88693,10 @@ index 06c62de..b08cc6c 100644
87455 if (write && !ns_capable(pid_ns->user_ns, CAP_SYS_ADMIN)) 88693 if (write && !ns_capable(pid_ns->user_ns, CAP_SYS_ADMIN))
87456 return -EPERM; 88694 return -EPERM;
87457diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c 88695diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c
87458index c7f31aa..2b44977 100644 88696index 3b89464..5e38379 100644
87459--- a/kernel/posix-cpu-timers.c 88697--- a/kernel/posix-cpu-timers.c
87460+++ b/kernel/posix-cpu-timers.c 88698+++ b/kernel/posix-cpu-timers.c
87461@@ -1521,14 +1521,14 @@ struct k_clock clock_posix_cpu = { 88699@@ -1464,14 +1464,14 @@ struct k_clock clock_posix_cpu = {
87462 88700
87463 static __init int init_posix_cpu_timers(void) 88701 static __init int init_posix_cpu_timers(void)
87464 { 88702 {
@@ -87648,7 +88886,7 @@ index 06ec886..9dba35e 100644
87648 88886
87649 if (pm_wakeup_pending()) { 88887 if (pm_wakeup_pending()) {
87650diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c 88888diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
87651index be7c86b..b972b27 100644 88889index 4dae9cb..039ffbb 100644
87652--- a/kernel/printk/printk.c 88890--- a/kernel/printk/printk.c
87653+++ b/kernel/printk/printk.c 88891+++ b/kernel/printk/printk.c
87654@@ -385,6 +385,11 @@ static int check_syslog_permissions(int type, bool from_file) 88892@@ -385,6 +385,11 @@ static int check_syslog_permissions(int type, bool from_file)
@@ -87663,24 +88901,8 @@ index be7c86b..b972b27 100644
87663 if (syslog_action_restricted(type)) { 88901 if (syslog_action_restricted(type)) {
87664 if (capable(CAP_SYSLOG)) 88902 if (capable(CAP_SYSLOG))
87665 return 0; 88903 return 0;
87666@@ -1080,7 +1085,6 @@ static int syslog_print_all(char __user *buf, int size, bool clear)
87667 next_seq = log_next_seq;
87668
87669 len = 0;
87670- prev = 0;
87671 while (len >= 0 && seq < next_seq) {
87672 struct printk_log *msg = log_from_idx(idx);
87673 int textlen;
87674@@ -2789,7 +2793,6 @@ bool kmsg_dump_get_buffer(struct kmsg_dumper *dumper, bool syslog,
87675 next_idx = idx;
87676
87677 l = 0;
87678- prev = 0;
87679 while (seq < dumper->next_seq) {
87680 struct printk_log *msg = log_from_idx(idx);
87681
87682diff --git a/kernel/profile.c b/kernel/profile.c 88904diff --git a/kernel/profile.c b/kernel/profile.c
87683index 6631e1e..310c266 100644 88905index ebdd9c1..612ee05 100644
87684--- a/kernel/profile.c 88906--- a/kernel/profile.c
87685+++ b/kernel/profile.c 88907+++ b/kernel/profile.c
87686@@ -37,7 +37,7 @@ struct profile_hit { 88908@@ -37,7 +37,7 @@ struct profile_hit {
@@ -87836,7 +89058,7 @@ index 1f4bcb3..99cf7ab 100644
87836 } 89058 }
87837 89059
87838diff --git a/kernel/rcu/srcu.c b/kernel/rcu/srcu.c 89060diff --git a/kernel/rcu/srcu.c b/kernel/rcu/srcu.c
87839index 01d5ccb..cdcbee6 100644 89061index 3318d82..1a5b2d1 100644
87840--- a/kernel/rcu/srcu.c 89062--- a/kernel/rcu/srcu.c
87841+++ b/kernel/rcu/srcu.c 89063+++ b/kernel/rcu/srcu.c
87842@@ -300,9 +300,9 @@ int __srcu_read_lock(struct srcu_struct *sp) 89064@@ -300,9 +300,9 @@ int __srcu_read_lock(struct srcu_struct *sp)
@@ -87874,10 +89096,10 @@ index 1254f31..16258dc 100644
87874 __rcu_process_callbacks(&rcu_sched_ctrlblk); 89096 __rcu_process_callbacks(&rcu_sched_ctrlblk);
87875 __rcu_process_callbacks(&rcu_bh_ctrlblk); 89097 __rcu_process_callbacks(&rcu_bh_ctrlblk);
87876diff --git a/kernel/rcu/torture.c b/kernel/rcu/torture.c 89098diff --git a/kernel/rcu/torture.c b/kernel/rcu/torture.c
87877index 3929cd4..421624d 100644 89099index 732f8ae..42c1919 100644
87878--- a/kernel/rcu/torture.c 89100--- a/kernel/rcu/torture.c
87879+++ b/kernel/rcu/torture.c 89101+++ b/kernel/rcu/torture.c
87880@@ -176,12 +176,12 @@ static DEFINE_PER_CPU(long [RCU_TORTURE_PIPE_LEN + 1], rcu_torture_count) = 89102@@ -174,12 +174,12 @@ static DEFINE_PER_CPU(long [RCU_TORTURE_PIPE_LEN + 1], rcu_torture_count) =
87881 { 0 }; 89103 { 0 };
87882 static DEFINE_PER_CPU(long [RCU_TORTURE_PIPE_LEN + 1], rcu_torture_batch) = 89104 static DEFINE_PER_CPU(long [RCU_TORTURE_PIPE_LEN + 1], rcu_torture_batch) =
87883 { 0 }; 89105 { 0 };
@@ -87896,7 +89118,7 @@ index 3929cd4..421624d 100644
87896 static long n_rcu_torture_barrier_error; 89118 static long n_rcu_torture_barrier_error;
87897 static long n_rcu_torture_boost_ktrerror; 89119 static long n_rcu_torture_boost_ktrerror;
87898 static long n_rcu_torture_boost_rterror; 89120 static long n_rcu_torture_boost_rterror;
87899@@ -299,11 +299,11 @@ rcu_torture_alloc(void) 89121@@ -297,11 +297,11 @@ rcu_torture_alloc(void)
87900 89122
87901 spin_lock_bh(&rcu_torture_lock); 89123 spin_lock_bh(&rcu_torture_lock);
87902 if (list_empty(&rcu_torture_freelist)) { 89124 if (list_empty(&rcu_torture_freelist)) {
@@ -87910,7 +89132,7 @@ index 3929cd4..421624d 100644
87910 p = rcu_torture_freelist.next; 89132 p = rcu_torture_freelist.next;
87911 list_del_init(p); 89133 list_del_init(p);
87912 spin_unlock_bh(&rcu_torture_lock); 89134 spin_unlock_bh(&rcu_torture_lock);
87913@@ -316,7 +316,7 @@ rcu_torture_alloc(void) 89135@@ -314,7 +314,7 @@ rcu_torture_alloc(void)
87914 static void 89136 static void
87915 rcu_torture_free(struct rcu_torture *p) 89137 rcu_torture_free(struct rcu_torture *p)
87916 { 89138 {
@@ -87919,7 +89141,7 @@ index 3929cd4..421624d 100644
87919 spin_lock_bh(&rcu_torture_lock); 89141 spin_lock_bh(&rcu_torture_lock);
87920 list_add_tail(&p->rtort_free, &rcu_torture_freelist); 89142 list_add_tail(&p->rtort_free, &rcu_torture_freelist);
87921 spin_unlock_bh(&rcu_torture_lock); 89143 spin_unlock_bh(&rcu_torture_lock);
87922@@ -437,7 +437,7 @@ rcu_torture_cb(struct rcu_head *p) 89144@@ -435,7 +435,7 @@ rcu_torture_cb(struct rcu_head *p)
87923 i = rp->rtort_pipe_count; 89145 i = rp->rtort_pipe_count;
87924 if (i > RCU_TORTURE_PIPE_LEN) 89146 if (i > RCU_TORTURE_PIPE_LEN)
87925 i = RCU_TORTURE_PIPE_LEN; 89147 i = RCU_TORTURE_PIPE_LEN;
@@ -87928,7 +89150,7 @@ index 3929cd4..421624d 100644
87928 if (++rp->rtort_pipe_count >= RCU_TORTURE_PIPE_LEN) { 89150 if (++rp->rtort_pipe_count >= RCU_TORTURE_PIPE_LEN) {
87929 rp->rtort_mbtest = 0; 89151 rp->rtort_mbtest = 0;
87930 rcu_torture_free(rp); 89152 rcu_torture_free(rp);
87931@@ -827,7 +827,7 @@ rcu_torture_writer(void *arg) 89153@@ -823,7 +823,7 @@ rcu_torture_writer(void *arg)
87932 i = old_rp->rtort_pipe_count; 89154 i = old_rp->rtort_pipe_count;
87933 if (i > RCU_TORTURE_PIPE_LEN) 89155 if (i > RCU_TORTURE_PIPE_LEN)
87934 i = RCU_TORTURE_PIPE_LEN; 89156 i = RCU_TORTURE_PIPE_LEN;
@@ -87937,7 +89159,7 @@ index 3929cd4..421624d 100644
87937 old_rp->rtort_pipe_count++; 89159 old_rp->rtort_pipe_count++;
87938 if (gp_normal == gp_exp) 89160 if (gp_normal == gp_exp)
87939 exp = !!(rcu_random(&rand) & 0x80); 89161 exp = !!(rcu_random(&rand) & 0x80);
87940@@ -845,7 +845,7 @@ rcu_torture_writer(void *arg) 89162@@ -841,7 +841,7 @@ rcu_torture_writer(void *arg)
87941 i = rp->rtort_pipe_count; 89163 i = rp->rtort_pipe_count;
87942 if (i > RCU_TORTURE_PIPE_LEN) 89164 if (i > RCU_TORTURE_PIPE_LEN)
87943 i = RCU_TORTURE_PIPE_LEN; 89165 i = RCU_TORTURE_PIPE_LEN;
@@ -87946,7 +89168,7 @@ index 3929cd4..421624d 100644
87946 if (++rp->rtort_pipe_count >= 89168 if (++rp->rtort_pipe_count >=
87947 RCU_TORTURE_PIPE_LEN) { 89169 RCU_TORTURE_PIPE_LEN) {
87948 rp->rtort_mbtest = 0; 89170 rp->rtort_mbtest = 0;
87949@@ -944,7 +944,7 @@ static void rcu_torture_timer(unsigned long unused) 89171@@ -940,7 +940,7 @@ static void rcu_torture_timer(unsigned long unused)
87950 return; 89172 return;
87951 } 89173 }
87952 if (p->rtort_mbtest == 0) 89174 if (p->rtort_mbtest == 0)
@@ -87955,7 +89177,7 @@ index 3929cd4..421624d 100644
87955 spin_lock(&rand_lock); 89177 spin_lock(&rand_lock);
87956 cur_ops->read_delay(&rand); 89178 cur_ops->read_delay(&rand);
87957 n_rcu_torture_timers++; 89179 n_rcu_torture_timers++;
87958@@ -1014,7 +1014,7 @@ rcu_torture_reader(void *arg) 89180@@ -1010,7 +1010,7 @@ rcu_torture_reader(void *arg)
87959 continue; 89181 continue;
87960 } 89182 }
87961 if (p->rtort_mbtest == 0) 89183 if (p->rtort_mbtest == 0)
@@ -87964,7 +89186,12 @@ index 3929cd4..421624d 100644
87964 cur_ops->read_delay(&rand); 89186 cur_ops->read_delay(&rand);
87965 preempt_disable(); 89187 preempt_disable();
87966 pipe_count = p->rtort_pipe_count; 89188 pipe_count = p->rtort_pipe_count;
87967@@ -1077,11 +1077,11 @@ rcu_torture_printk(char *page) 89189@@ -1068,15 +1068,15 @@ rcu_torture_printk(char *page)
89190 }
89191 page += sprintf(page, "%s%s ", torture_type, TORTURE_FLAG);
89192 page += sprintf(page,
89193- "rtc: %p ver: %lu tfle: %d rta: %d rtaf: %d rtf: %d ",
89194+ "rtc: %pP ver: %lu tfle: %d rta: %d rtaf: %d rtf: %d ",
87968 rcu_torture_current, 89195 rcu_torture_current,
87969 rcu_torture_current_version, 89196 rcu_torture_current_version,
87970 list_empty(&rcu_torture_freelist), 89197 list_empty(&rcu_torture_freelist),
@@ -87974,16 +89201,16 @@ index 3929cd4..421624d 100644
87974+ atomic_read_unchecked(&n_rcu_torture_alloc), 89201+ atomic_read_unchecked(&n_rcu_torture_alloc),
87975+ atomic_read_unchecked(&n_rcu_torture_alloc_fail), 89202+ atomic_read_unchecked(&n_rcu_torture_alloc_fail),
87976+ atomic_read_unchecked(&n_rcu_torture_free)); 89203+ atomic_read_unchecked(&n_rcu_torture_free));
87977 cnt += sprintf(&page[cnt], "rtmbe: %d rtbke: %ld rtbre: %ld ", 89204 page += sprintf(page, "rtmbe: %d rtbke: %ld rtbre: %ld ",
87978- atomic_read(&n_rcu_torture_mberror), 89205- atomic_read(&n_rcu_torture_mberror),
87979+ atomic_read_unchecked(&n_rcu_torture_mberror), 89206+ atomic_read_unchecked(&n_rcu_torture_mberror),
87980 n_rcu_torture_boost_ktrerror, 89207 n_rcu_torture_boost_ktrerror,
87981 n_rcu_torture_boost_rterror); 89208 n_rcu_torture_boost_rterror);
87982 cnt += sprintf(&page[cnt], "rtbf: %ld rtb: %ld nt: %ld ", 89209 page += sprintf(page, "rtbf: %ld rtb: %ld nt: %ld ",
87983@@ -1100,14 +1100,14 @@ rcu_torture_printk(char *page) 89210@@ -1095,14 +1095,14 @@ rcu_torture_printk(char *page)
87984 n_barrier_attempts, 89211 n_barrier_attempts,
87985 n_rcu_torture_barrier_error); 89212 n_rcu_torture_barrier_error);
87986 cnt += sprintf(&page[cnt], "\n%s%s ", torture_type, TORTURE_FLAG); 89213 page += sprintf(page, "\n%s%s ", torture_type, TORTURE_FLAG);
87987- if (atomic_read(&n_rcu_torture_mberror) != 0 || 89214- if (atomic_read(&n_rcu_torture_mberror) != 0 ||
87988+ if (atomic_read_unchecked(&n_rcu_torture_mberror) != 0 || 89215+ if (atomic_read_unchecked(&n_rcu_torture_mberror) != 0 ||
87989 n_rcu_torture_barrier_error != 0 || 89216 n_rcu_torture_barrier_error != 0 ||
@@ -87991,22 +89218,22 @@ index 3929cd4..421624d 100644
87991 n_rcu_torture_boost_rterror != 0 || 89218 n_rcu_torture_boost_rterror != 0 ||
87992 n_rcu_torture_boost_failure != 0 || 89219 n_rcu_torture_boost_failure != 0 ||
87993 i > 1) { 89220 i > 1) {
87994 cnt += sprintf(&page[cnt], "!!! "); 89221 page += sprintf(page, "!!! ");
87995- atomic_inc(&n_rcu_torture_error); 89222- atomic_inc(&n_rcu_torture_error);
87996+ atomic_inc_unchecked(&n_rcu_torture_error); 89223+ atomic_inc_unchecked(&n_rcu_torture_error);
87997 WARN_ON_ONCE(1); 89224 WARN_ON_ONCE(1);
87998 } 89225 }
87999 cnt += sprintf(&page[cnt], "Reader Pipe: "); 89226 page += sprintf(page, "Reader Pipe: ");
88000@@ -1121,7 +1121,7 @@ rcu_torture_printk(char *page) 89227@@ -1116,7 +1116,7 @@ rcu_torture_printk(char *page)
88001 cnt += sprintf(&page[cnt], "Free-Block Circulation: "); 89228 page += sprintf(page, "Free-Block Circulation: ");
88002 for (i = 0; i < RCU_TORTURE_PIPE_LEN + 1; i++) { 89229 for (i = 0; i < RCU_TORTURE_PIPE_LEN + 1; i++) {
88003 cnt += sprintf(&page[cnt], " %d", 89230 page += sprintf(page, " %d",
88004- atomic_read(&rcu_torture_wcount[i])); 89231- atomic_read(&rcu_torture_wcount[i]));
88005+ atomic_read_unchecked(&rcu_torture_wcount[i])); 89232+ atomic_read_unchecked(&rcu_torture_wcount[i]));
88006 } 89233 }
88007 cnt += sprintf(&page[cnt], "\n"); 89234 page += sprintf(page, "\n");
88008 if (cur_ops->stats) 89235 if (cur_ops->stats)
88009@@ -1836,7 +1836,7 @@ rcu_torture_cleanup(void) 89236@@ -1839,7 +1839,7 @@ rcu_torture_cleanup(void)
88010 89237
88011 rcu_torture_stats_print(); /* -After- the stats thread is stopped! */ 89238 rcu_torture_stats_print(); /* -After- the stats thread is stopped! */
88012 89239
@@ -88015,7 +89242,7 @@ index 3929cd4..421624d 100644
88015 rcu_torture_print_module_parms(cur_ops, "End of test: FAILURE"); 89242 rcu_torture_print_module_parms(cur_ops, "End of test: FAILURE");
88016 else if (n_online_successes != n_online_attempts || 89243 else if (n_online_successes != n_online_attempts ||
88017 n_offline_successes != n_offline_attempts) 89244 n_offline_successes != n_offline_attempts)
88018@@ -1958,18 +1958,18 @@ rcu_torture_init(void) 89245@@ -1961,18 +1961,18 @@ rcu_torture_init(void)
88019 89246
88020 rcu_torture_current = NULL; 89247 rcu_torture_current = NULL;
88021 rcu_torture_current_version = 0; 89248 rcu_torture_current_version = 0;
@@ -88041,10 +89268,10 @@ index 3929cd4..421624d 100644
88041 for (i = 0; i < RCU_TORTURE_PIPE_LEN + 1; i++) { 89268 for (i = 0; i < RCU_TORTURE_PIPE_LEN + 1; i++) {
88042 per_cpu(rcu_torture_count, cpu)[i] = 0; 89269 per_cpu(rcu_torture_count, cpu)[i] = 0;
88043diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c 89270diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
88044index dd08198..5ccccbe 100644 89271index b3d116c..ebf6598 100644
88045--- a/kernel/rcu/tree.c 89272--- a/kernel/rcu/tree.c
88046+++ b/kernel/rcu/tree.c 89273+++ b/kernel/rcu/tree.c
88047@@ -383,9 +383,9 @@ static void rcu_eqs_enter_common(struct rcu_dynticks *rdtp, long long oldval, 89274@@ -390,9 +390,9 @@ static void rcu_eqs_enter_common(struct rcu_dynticks *rdtp, long long oldval,
88048 rcu_prepare_for_idle(smp_processor_id()); 89275 rcu_prepare_for_idle(smp_processor_id());
88049 /* CPUs seeing atomic_inc() must see prior RCU read-side crit sects */ 89276 /* CPUs seeing atomic_inc() must see prior RCU read-side crit sects */
88050 smp_mb__before_atomic_inc(); /* See above. */ 89277 smp_mb__before_atomic_inc(); /* See above. */
@@ -88056,7 +89283,7 @@ index dd08198..5ccccbe 100644
88056 89283
88057 /* 89284 /*
88058 * It is illegal to enter an extended quiescent state while 89285 * It is illegal to enter an extended quiescent state while
88059@@ -502,10 +502,10 @@ static void rcu_eqs_exit_common(struct rcu_dynticks *rdtp, long long oldval, 89286@@ -510,10 +510,10 @@ static void rcu_eqs_exit_common(struct rcu_dynticks *rdtp, long long oldval,
88060 int user) 89287 int user)
88061 { 89288 {
88062 smp_mb__before_atomic_inc(); /* Force ordering w/previous sojourn. */ 89289 smp_mb__before_atomic_inc(); /* Force ordering w/previous sojourn. */
@@ -88069,7 +89296,7 @@ index dd08198..5ccccbe 100644
88069 rcu_cleanup_after_idle(smp_processor_id()); 89296 rcu_cleanup_after_idle(smp_processor_id());
88070 trace_rcu_dyntick(TPS("End"), oldval, rdtp->dynticks_nesting); 89297 trace_rcu_dyntick(TPS("End"), oldval, rdtp->dynticks_nesting);
88071 if (!user && !is_idle_task(current)) { 89298 if (!user && !is_idle_task(current)) {
88072@@ -625,14 +625,14 @@ void rcu_nmi_enter(void) 89299@@ -634,14 +634,14 @@ void rcu_nmi_enter(void)
88073 struct rcu_dynticks *rdtp = this_cpu_ptr(&rcu_dynticks); 89300 struct rcu_dynticks *rdtp = this_cpu_ptr(&rcu_dynticks);
88074 89301
88075 if (rdtp->dynticks_nmi_nesting == 0 && 89302 if (rdtp->dynticks_nmi_nesting == 0 &&
@@ -88087,7 +89314,7 @@ index dd08198..5ccccbe 100644
88087 } 89314 }
88088 89315
88089 /** 89316 /**
88090@@ -651,9 +651,9 @@ void rcu_nmi_exit(void) 89317@@ -660,9 +660,9 @@ void rcu_nmi_exit(void)
88091 return; 89318 return;
88092 /* CPUs seeing atomic_inc() must see prior RCU read-side crit sects */ 89319 /* CPUs seeing atomic_inc() must see prior RCU read-side crit sects */
88093 smp_mb__before_atomic_inc(); /* See above. */ 89320 smp_mb__before_atomic_inc(); /* See above. */
@@ -88099,7 +89326,7 @@ index dd08198..5ccccbe 100644
88099 } 89326 }
88100 89327
88101 /** 89328 /**
88102@@ -666,7 +666,7 @@ void rcu_nmi_exit(void) 89329@@ -675,7 +675,7 @@ void rcu_nmi_exit(void)
88103 */ 89330 */
88104 bool notrace __rcu_is_watching(void) 89331 bool notrace __rcu_is_watching(void)
88105 { 89332 {
@@ -88108,7 +89335,7 @@ index dd08198..5ccccbe 100644
88108 } 89335 }
88109 89336
88110 /** 89337 /**
88111@@ -749,7 +749,7 @@ static int rcu_is_cpu_rrupt_from_idle(void) 89338@@ -758,7 +758,7 @@ static int rcu_is_cpu_rrupt_from_idle(void)
88112 static int dyntick_save_progress_counter(struct rcu_data *rdp, 89339 static int dyntick_save_progress_counter(struct rcu_data *rdp,
88113 bool *isidle, unsigned long *maxj) 89340 bool *isidle, unsigned long *maxj)
88114 { 89341 {
@@ -88117,7 +89344,7 @@ index dd08198..5ccccbe 100644
88117 rcu_sysidle_check_cpu(rdp, isidle, maxj); 89344 rcu_sysidle_check_cpu(rdp, isidle, maxj);
88118 return (rdp->dynticks_snap & 0x1) == 0; 89345 return (rdp->dynticks_snap & 0x1) == 0;
88119 } 89346 }
88120@@ -766,7 +766,7 @@ static int rcu_implicit_dynticks_qs(struct rcu_data *rdp, 89347@@ -781,7 +781,7 @@ static int rcu_implicit_dynticks_qs(struct rcu_data *rdp,
88121 unsigned int curr; 89348 unsigned int curr;
88122 unsigned int snap; 89349 unsigned int snap;
88123 89350
@@ -88126,7 +89353,7 @@ index dd08198..5ccccbe 100644
88126 snap = (unsigned int)rdp->dynticks_snap; 89353 snap = (unsigned int)rdp->dynticks_snap;
88127 89354
88128 /* 89355 /*
88129@@ -1412,9 +1412,9 @@ static int rcu_gp_init(struct rcu_state *rsp) 89356@@ -1450,9 +1450,9 @@ static int rcu_gp_init(struct rcu_state *rsp)
88130 rdp = this_cpu_ptr(rsp->rda); 89357 rdp = this_cpu_ptr(rsp->rda);
88131 rcu_preempt_check_blocked_tasks(rnp); 89358 rcu_preempt_check_blocked_tasks(rnp);
88132 rnp->qsmask = rnp->qsmaskinit; 89359 rnp->qsmask = rnp->qsmaskinit;
@@ -88138,16 +89365,16 @@ index dd08198..5ccccbe 100644
88138 if (rnp == rdp->mynode) 89365 if (rnp == rdp->mynode)
88139 __note_gp_changes(rsp, rnp, rdp); 89366 __note_gp_changes(rsp, rnp, rdp);
88140 rcu_preempt_boost_start_gp(rnp); 89367 rcu_preempt_boost_start_gp(rnp);
88141@@ -1505,7 +1505,7 @@ static void rcu_gp_cleanup(struct rcu_state *rsp) 89368@@ -1546,7 +1546,7 @@ static void rcu_gp_cleanup(struct rcu_state *rsp)
88142 */
88143 rcu_for_each_node_breadth_first(rsp, rnp) { 89369 rcu_for_each_node_breadth_first(rsp, rnp) {
88144 raw_spin_lock_irq(&rnp->lock); 89370 raw_spin_lock_irq(&rnp->lock);
89371 smp_mb__after_unlock_lock();
88145- ACCESS_ONCE(rnp->completed) = rsp->gpnum; 89372- ACCESS_ONCE(rnp->completed) = rsp->gpnum;
88146+ ACCESS_ONCE_RW(rnp->completed) = rsp->gpnum; 89373+ ACCESS_ONCE_RW(rnp->completed) = rsp->gpnum;
88147 rdp = this_cpu_ptr(rsp->rda); 89374 rdp = this_cpu_ptr(rsp->rda);
88148 if (rnp == rdp->mynode) 89375 if (rnp == rdp->mynode)
88149 __note_gp_changes(rsp, rnp, rdp); 89376 __note_gp_changes(rsp, rnp, rdp);
88150@@ -1865,7 +1865,7 @@ rcu_send_cbs_to_orphanage(int cpu, struct rcu_state *rsp, 89377@@ -1912,7 +1912,7 @@ rcu_send_cbs_to_orphanage(int cpu, struct rcu_state *rsp,
88151 rsp->qlen += rdp->qlen; 89378 rsp->qlen += rdp->qlen;
88152 rdp->n_cbs_orphaned += rdp->qlen; 89379 rdp->n_cbs_orphaned += rdp->qlen;
88153 rdp->qlen_lazy = 0; 89380 rdp->qlen_lazy = 0;
@@ -88156,7 +89383,7 @@ index dd08198..5ccccbe 100644
88156 } 89383 }
88157 89384
88158 /* 89385 /*
88159@@ -2111,7 +2111,7 @@ static void rcu_do_batch(struct rcu_state *rsp, struct rcu_data *rdp) 89386@@ -2159,7 +2159,7 @@ static void rcu_do_batch(struct rcu_state *rsp, struct rcu_data *rdp)
88160 } 89387 }
88161 smp_mb(); /* List handling before counting for rcu_barrier(). */ 89388 smp_mb(); /* List handling before counting for rcu_barrier(). */
88162 rdp->qlen_lazy -= count_lazy; 89389 rdp->qlen_lazy -= count_lazy;
@@ -88165,7 +89392,7 @@ index dd08198..5ccccbe 100644
88165 rdp->n_cbs_invoked += count; 89392 rdp->n_cbs_invoked += count;
88166 89393
88167 /* Reinstate batch limit if we have worked down the excess. */ 89394 /* Reinstate batch limit if we have worked down the excess. */
88168@@ -2308,7 +2308,7 @@ __rcu_process_callbacks(struct rcu_state *rsp) 89395@@ -2362,7 +2362,7 @@ __rcu_process_callbacks(struct rcu_state *rsp)
88169 /* 89396 /*
88170 * Do RCU core processing for the current CPU. 89397 * Do RCU core processing for the current CPU.
88171 */ 89398 */
@@ -88174,7 +89401,7 @@ index dd08198..5ccccbe 100644
88174 { 89401 {
88175 struct rcu_state *rsp; 89402 struct rcu_state *rsp;
88176 89403
88177@@ -2415,7 +2415,7 @@ __call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu), 89404@@ -2470,7 +2470,7 @@ __call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu),
88178 WARN_ON_ONCE((unsigned long)head & 0x3); /* Misaligned rcu_head! */ 89405 WARN_ON_ONCE((unsigned long)head & 0x3); /* Misaligned rcu_head! */
88179 if (debug_rcu_head_queue(head)) { 89406 if (debug_rcu_head_queue(head)) {
88180 /* Probable double call_rcu(), so leak the callback. */ 89407 /* Probable double call_rcu(), so leak the callback. */
@@ -88183,7 +89410,7 @@ index dd08198..5ccccbe 100644
88183 WARN_ONCE(1, "__call_rcu(): Leaked duplicate callback\n"); 89410 WARN_ONCE(1, "__call_rcu(): Leaked duplicate callback\n");
88184 return; 89411 return;
88185 } 89412 }
88186@@ -2443,7 +2443,7 @@ __call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu), 89413@@ -2498,7 +2498,7 @@ __call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu),
88187 local_irq_restore(flags); 89414 local_irq_restore(flags);
88188 return; 89415 return;
88189 } 89416 }
@@ -88192,7 +89419,7 @@ index dd08198..5ccccbe 100644
88192 if (lazy) 89419 if (lazy)
88193 rdp->qlen_lazy++; 89420 rdp->qlen_lazy++;
88194 else 89421 else
88195@@ -2652,11 +2652,11 @@ void synchronize_sched_expedited(void) 89422@@ -2707,11 +2707,11 @@ void synchronize_sched_expedited(void)
88196 * counter wrap on a 32-bit system. Quite a few more CPUs would of 89423 * counter wrap on a 32-bit system. Quite a few more CPUs would of
88197 * course be required on a 64-bit system. 89424 * course be required on a 64-bit system.
88198 */ 89425 */
@@ -88206,7 +89433,7 @@ index dd08198..5ccccbe 100644
88206 return; 89433 return;
88207 } 89434 }
88208 89435
88209@@ -2664,7 +2664,7 @@ void synchronize_sched_expedited(void) 89436@@ -2719,7 +2719,7 @@ void synchronize_sched_expedited(void)
88210 * Take a ticket. Note that atomic_inc_return() implies a 89437 * Take a ticket. Note that atomic_inc_return() implies a
88211 * full memory barrier. 89438 * full memory barrier.
88212 */ 89439 */
@@ -88215,7 +89442,7 @@ index dd08198..5ccccbe 100644
88215 firstsnap = snap; 89442 firstsnap = snap;
88216 get_online_cpus(); 89443 get_online_cpus();
88217 WARN_ON_ONCE(cpu_is_offline(raw_smp_processor_id())); 89444 WARN_ON_ONCE(cpu_is_offline(raw_smp_processor_id()));
88218@@ -2677,14 +2677,14 @@ void synchronize_sched_expedited(void) 89445@@ -2732,14 +2732,14 @@ void synchronize_sched_expedited(void)
88219 synchronize_sched_expedited_cpu_stop, 89446 synchronize_sched_expedited_cpu_stop,
88220 NULL) == -EAGAIN) { 89447 NULL) == -EAGAIN) {
88221 put_online_cpus(); 89448 put_online_cpus();
@@ -88232,7 +89459,7 @@ index dd08198..5ccccbe 100644
88232 return; 89459 return;
88233 } 89460 }
88234 89461
88235@@ -2693,7 +2693,7 @@ void synchronize_sched_expedited(void) 89462@@ -2748,7 +2748,7 @@ void synchronize_sched_expedited(void)
88236 udelay(trycount * num_online_cpus()); 89463 udelay(trycount * num_online_cpus());
88237 } else { 89464 } else {
88238 wait_rcu_gp(call_rcu_sched); 89465 wait_rcu_gp(call_rcu_sched);
@@ -88241,7 +89468,7 @@ index dd08198..5ccccbe 100644
88241 return; 89468 return;
88242 } 89469 }
88243 89470
88244@@ -2702,7 +2702,7 @@ void synchronize_sched_expedited(void) 89471@@ -2757,7 +2757,7 @@ void synchronize_sched_expedited(void)
88245 if (ULONG_CMP_GE((ulong)s, (ulong)firstsnap)) { 89472 if (ULONG_CMP_GE((ulong)s, (ulong)firstsnap)) {
88246 /* ensure test happens before caller kfree */ 89473 /* ensure test happens before caller kfree */
88247 smp_mb__before_atomic_inc(); /* ^^^ */ 89474 smp_mb__before_atomic_inc(); /* ^^^ */
@@ -88250,7 +89477,7 @@ index dd08198..5ccccbe 100644
88250 return; 89477 return;
88251 } 89478 }
88252 89479
88253@@ -2714,10 +2714,10 @@ void synchronize_sched_expedited(void) 89480@@ -2769,10 +2769,10 @@ void synchronize_sched_expedited(void)
88254 * period works for us. 89481 * period works for us.
88255 */ 89482 */
88256 get_online_cpus(); 89483 get_online_cpus();
@@ -88263,7 +89490,7 @@ index dd08198..5ccccbe 100644
88263 89490
88264 /* 89491 /*
88265 * Everyone up to our most recent fetch is covered by our grace 89492 * Everyone up to our most recent fetch is covered by our grace
88266@@ -2726,16 +2726,16 @@ void synchronize_sched_expedited(void) 89493@@ -2781,16 +2781,16 @@ void synchronize_sched_expedited(void)
88267 * than we did already did their update. 89494 * than we did already did their update.
88268 */ 89495 */
88269 do { 89496 do {
@@ -88283,7 +89510,7 @@ index dd08198..5ccccbe 100644
88283 89510
88284 put_online_cpus(); 89511 put_online_cpus();
88285 } 89512 }
88286@@ -2931,7 +2931,7 @@ static void _rcu_barrier(struct rcu_state *rsp) 89513@@ -2996,7 +2996,7 @@ static void _rcu_barrier(struct rcu_state *rsp)
88287 * ACCESS_ONCE() to prevent the compiler from speculating 89514 * ACCESS_ONCE() to prevent the compiler from speculating
88288 * the increment to precede the early-exit check. 89515 * the increment to precede the early-exit check.
88289 */ 89516 */
@@ -88292,7 +89519,7 @@ index dd08198..5ccccbe 100644
88292 WARN_ON_ONCE((rsp->n_barrier_done & 0x1) != 1); 89519 WARN_ON_ONCE((rsp->n_barrier_done & 0x1) != 1);
88293 _rcu_barrier_trace(rsp, "Inc1", -1, rsp->n_barrier_done); 89520 _rcu_barrier_trace(rsp, "Inc1", -1, rsp->n_barrier_done);
88294 smp_mb(); /* Order ->n_barrier_done increment with below mechanism. */ 89521 smp_mb(); /* Order ->n_barrier_done increment with below mechanism. */
88295@@ -2981,7 +2981,7 @@ static void _rcu_barrier(struct rcu_state *rsp) 89522@@ -3046,7 +3046,7 @@ static void _rcu_barrier(struct rcu_state *rsp)
88296 89523
88297 /* Increment ->n_barrier_done to prevent duplicate work. */ 89524 /* Increment ->n_barrier_done to prevent duplicate work. */
88298 smp_mb(); /* Keep increment after above mechanism. */ 89525 smp_mb(); /* Keep increment after above mechanism. */
@@ -88301,7 +89528,7 @@ index dd08198..5ccccbe 100644
88301 WARN_ON_ONCE((rsp->n_barrier_done & 0x1) != 0); 89528 WARN_ON_ONCE((rsp->n_barrier_done & 0x1) != 0);
88302 _rcu_barrier_trace(rsp, "Inc2", -1, rsp->n_barrier_done); 89529 _rcu_barrier_trace(rsp, "Inc2", -1, rsp->n_barrier_done);
88303 smp_mb(); /* Keep increment before caller's subsequent code. */ 89530 smp_mb(); /* Keep increment before caller's subsequent code. */
88304@@ -3026,10 +3026,10 @@ rcu_boot_init_percpu_data(int cpu, struct rcu_state *rsp) 89531@@ -3091,10 +3091,10 @@ rcu_boot_init_percpu_data(int cpu, struct rcu_state *rsp)
88305 rdp->grpmask = 1UL << (cpu - rdp->mynode->grplo); 89532 rdp->grpmask = 1UL << (cpu - rdp->mynode->grplo);
88306 init_callback_list(rdp); 89533 init_callback_list(rdp);
88307 rdp->qlen_lazy = 0; 89534 rdp->qlen_lazy = 0;
@@ -88314,7 +89541,7 @@ index dd08198..5ccccbe 100644
88314 rdp->cpu = cpu; 89541 rdp->cpu = cpu;
88315 rdp->rsp = rsp; 89542 rdp->rsp = rsp;
88316 rcu_boot_init_nocb_percpu_data(rdp); 89543 rcu_boot_init_nocb_percpu_data(rdp);
88317@@ -3063,8 +3063,8 @@ rcu_init_percpu_data(int cpu, struct rcu_state *rsp, int preemptible) 89544@@ -3128,8 +3128,8 @@ rcu_init_percpu_data(int cpu, struct rcu_state *rsp, int preemptible)
88318 init_callback_list(rdp); /* Re-enable callbacks on this CPU. */ 89545 init_callback_list(rdp); /* Re-enable callbacks on this CPU. */
88319 rdp->dynticks->dynticks_nesting = DYNTICK_TASK_EXIT_IDLE; 89546 rdp->dynticks->dynticks_nesting = DYNTICK_TASK_EXIT_IDLE;
88320 rcu_sysidle_init_percpu_data(rdp->dynticks); 89547 rcu_sysidle_init_percpu_data(rdp->dynticks);
@@ -88326,7 +89553,7 @@ index dd08198..5ccccbe 100644
88326 89553
88327 /* Add CPU to rcu_node bitmasks. */ 89554 /* Add CPU to rcu_node bitmasks. */
88328diff --git a/kernel/rcu/tree.h b/kernel/rcu/tree.h 89555diff --git a/kernel/rcu/tree.h b/kernel/rcu/tree.h
88329index 52be957..365ded3 100644 89556index 8c19873..bf83c57 100644
88330--- a/kernel/rcu/tree.h 89557--- a/kernel/rcu/tree.h
88331+++ b/kernel/rcu/tree.h 89558+++ b/kernel/rcu/tree.h
88332@@ -87,11 +87,11 @@ struct rcu_dynticks { 89559@@ -87,11 +87,11 @@ struct rcu_dynticks {
@@ -88343,7 +89570,7 @@ index 52be957..365ded3 100644
88343 /* "Idle" excludes userspace execution. */ 89570 /* "Idle" excludes userspace execution. */
88344 unsigned long dynticks_idle_jiffies; 89571 unsigned long dynticks_idle_jiffies;
88345 /* End of last non-NMI non-idle period. */ 89572 /* End of last non-NMI non-idle period. */
88346@@ -429,17 +429,17 @@ struct rcu_state { 89573@@ -431,17 +431,17 @@ struct rcu_state {
88347 /* _rcu_barrier(). */ 89574 /* _rcu_barrier(). */
88348 /* End of fields guarded by barrier_mutex. */ 89575 /* End of fields guarded by barrier_mutex. */
88349 89576
@@ -88373,10 +89600,10 @@ index 52be957..365ded3 100644
88373 unsigned long jiffies_force_qs; /* Time at which to invoke */ 89600 unsigned long jiffies_force_qs; /* Time at which to invoke */
88374 /* force_quiescent_state(). */ 89601 /* force_quiescent_state(). */
88375diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h 89602diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h
88376index 08a7652..3598c7e 100644 89603index 6e2ef4b..c15df94 100644
88377--- a/kernel/rcu/tree_plugin.h 89604--- a/kernel/rcu/tree_plugin.h
88378+++ b/kernel/rcu/tree_plugin.h 89605+++ b/kernel/rcu/tree_plugin.h
88379@@ -749,7 +749,7 @@ static int rcu_preempted_readers_exp(struct rcu_node *rnp) 89606@@ -758,7 +758,7 @@ static int rcu_preempted_readers_exp(struct rcu_node *rnp)
88380 static int sync_rcu_preempt_exp_done(struct rcu_node *rnp) 89607 static int sync_rcu_preempt_exp_done(struct rcu_node *rnp)
88381 { 89608 {
88382 return !rcu_preempted_readers_exp(rnp) && 89609 return !rcu_preempted_readers_exp(rnp) &&
@@ -88385,7 +89612,7 @@ index 08a7652..3598c7e 100644
88385 } 89612 }
88386 89613
88387 /* 89614 /*
88388@@ -905,7 +905,7 @@ void synchronize_rcu_expedited(void) 89615@@ -920,7 +920,7 @@ void synchronize_rcu_expedited(void)
88389 89616
88390 /* Clean up and exit. */ 89617 /* Clean up and exit. */
88391 smp_mb(); /* ensure expedited GP seen before counter increment. */ 89618 smp_mb(); /* ensure expedited GP seen before counter increment. */
@@ -88394,7 +89621,7 @@ index 08a7652..3598c7e 100644
88394 unlock_mb_ret: 89621 unlock_mb_ret:
88395 mutex_unlock(&sync_rcu_preempt_exp_mutex); 89622 mutex_unlock(&sync_rcu_preempt_exp_mutex);
88396 mb_ret: 89623 mb_ret:
88397@@ -1479,7 +1479,7 @@ static void rcu_boost_kthread_setaffinity(struct rcu_node *rnp, int outgoingcpu) 89624@@ -1496,7 +1496,7 @@ static void rcu_boost_kthread_setaffinity(struct rcu_node *rnp, int outgoingcpu)
88398 free_cpumask_var(cm); 89625 free_cpumask_var(cm);
88399 } 89626 }
88400 89627
@@ -88403,7 +89630,7 @@ index 08a7652..3598c7e 100644
88403 .store = &rcu_cpu_kthread_task, 89630 .store = &rcu_cpu_kthread_task,
88404 .thread_should_run = rcu_cpu_kthread_should_run, 89631 .thread_should_run = rcu_cpu_kthread_should_run,
88405 .thread_fn = rcu_cpu_kthread, 89632 .thread_fn = rcu_cpu_kthread,
88406@@ -1946,7 +1946,7 @@ static void print_cpu_stall_info(struct rcu_state *rsp, int cpu) 89633@@ -1965,7 +1965,7 @@ static void print_cpu_stall_info(struct rcu_state *rsp, int cpu)
88407 print_cpu_stall_fast_no_hz(fast_no_hz, cpu); 89634 print_cpu_stall_fast_no_hz(fast_no_hz, cpu);
88408 pr_err("\t%d: (%lu %s) idle=%03x/%llx/%d softirq=%u/%u %s\n", 89635 pr_err("\t%d: (%lu %s) idle=%03x/%llx/%d softirq=%u/%u %s\n",
88409 cpu, ticks_value, ticks_title, 89636 cpu, ticks_value, ticks_title,
@@ -88412,7 +89639,7 @@ index 08a7652..3598c7e 100644
88412 rdtp->dynticks_nesting, rdtp->dynticks_nmi_nesting, 89639 rdtp->dynticks_nesting, rdtp->dynticks_nmi_nesting,
88413 rdp->softirq_snap, kstat_softirqs_cpu(RCU_SOFTIRQ, cpu), 89640 rdp->softirq_snap, kstat_softirqs_cpu(RCU_SOFTIRQ, cpu),
88414 fast_no_hz); 89641 fast_no_hz);
88415@@ -2109,7 +2109,7 @@ static void __call_rcu_nocb_enqueue(struct rcu_data *rdp, 89642@@ -2129,7 +2129,7 @@ static void __call_rcu_nocb_enqueue(struct rcu_data *rdp,
88416 89643
88417 /* Enqueue the callback on the nocb list and update counts. */ 89644 /* Enqueue the callback on the nocb list and update counts. */
88418 old_rhpp = xchg(&rdp->nocb_tail, rhtp); 89645 old_rhpp = xchg(&rdp->nocb_tail, rhtp);
@@ -88421,7 +89648,7 @@ index 08a7652..3598c7e 100644
88421 atomic_long_add(rhcount, &rdp->nocb_q_count); 89648 atomic_long_add(rhcount, &rdp->nocb_q_count);
88422 atomic_long_add(rhcount_lazy, &rdp->nocb_q_count_lazy); 89649 atomic_long_add(rhcount_lazy, &rdp->nocb_q_count_lazy);
88423 89650
88424@@ -2272,12 +2272,12 @@ static int rcu_nocb_kthread(void *arg) 89651@@ -2302,12 +2302,12 @@ static int rcu_nocb_kthread(void *arg)
88425 * Extract queued callbacks, update counts, and wait 89652 * Extract queued callbacks, update counts, and wait
88426 * for a grace period to elapse. 89653 * for a grace period to elapse.
88427 */ 89654 */
@@ -88437,7 +89664,7 @@ index 08a7652..3598c7e 100644
88437 rcu_nocb_wait_gp(rdp); 89664 rcu_nocb_wait_gp(rdp);
88438 89665
88439 /* Each pass through the following loop invokes a callback. */ 89666 /* Each pass through the following loop invokes a callback. */
88440@@ -2303,8 +2303,8 @@ static int rcu_nocb_kthread(void *arg) 89667@@ -2333,8 +2333,8 @@ static int rcu_nocb_kthread(void *arg)
88441 list = next; 89668 list = next;
88442 } 89669 }
88443 trace_rcu_batch_end(rdp->rsp->name, c, !!list, 0, 0, 1); 89670 trace_rcu_batch_end(rdp->rsp->name, c, !!list, 0, 0, 1);
@@ -88448,7 +89675,16 @@ index 08a7652..3598c7e 100644
88448 rdp->n_nocbs_invoked += c; 89675 rdp->n_nocbs_invoked += c;
88449 } 89676 }
88450 return 0; 89677 return 0;
88451@@ -2331,7 +2331,7 @@ static void __init rcu_spawn_nocb_kthreads(struct rcu_state *rsp) 89678@@ -2351,7 +2351,7 @@ static void do_nocb_deferred_wakeup(struct rcu_data *rdp)
89679 {
89680 if (!rcu_nocb_need_deferred_wakeup(rdp))
89681 return;
89682- ACCESS_ONCE(rdp->nocb_defer_wakeup) = false;
89683+ ACCESS_ONCE_RW(rdp->nocb_defer_wakeup) = false;
89684 wake_up(&rdp->nocb_wq);
89685 trace_rcu_nocb_wake(rdp->rsp->name, rdp->cpu, TPS("DeferredWakeEmpty"));
89686 }
89687@@ -2377,7 +2377,7 @@ static void __init rcu_spawn_nocb_kthreads(struct rcu_state *rsp)
88452 t = kthread_run(rcu_nocb_kthread, rdp, 89688 t = kthread_run(rcu_nocb_kthread, rdp,
88453 "rcuo%c/%d", rsp->abbr, cpu); 89689 "rcuo%c/%d", rsp->abbr, cpu);
88454 BUG_ON(IS_ERR(t)); 89690 BUG_ON(IS_ERR(t));
@@ -88457,7 +89693,7 @@ index 08a7652..3598c7e 100644
88457 } 89693 }
88458 } 89694 }
88459 89695
88460@@ -2457,11 +2457,11 @@ static void rcu_sysidle_enter(struct rcu_dynticks *rdtp, int irq) 89696@@ -2513,11 +2513,11 @@ static void rcu_sysidle_enter(struct rcu_dynticks *rdtp, int irq)
88461 89697
88462 /* Record start of fully idle period. */ 89698 /* Record start of fully idle period. */
88463 j = jiffies; 89699 j = jiffies;
@@ -88472,7 +89708,7 @@ index 08a7652..3598c7e 100644
88472 } 89708 }
88473 89709
88474 /* 89710 /*
88475@@ -2526,9 +2526,9 @@ static void rcu_sysidle_exit(struct rcu_dynticks *rdtp, int irq) 89711@@ -2582,9 +2582,9 @@ static void rcu_sysidle_exit(struct rcu_dynticks *rdtp, int irq)
88476 89712
88477 /* Record end of idle period. */ 89713 /* Record end of idle period. */
88478 smp_mb__before_atomic_inc(); 89714 smp_mb__before_atomic_inc();
@@ -88484,7 +89720,7 @@ index 08a7652..3598c7e 100644
88484 89720
88485 /* 89721 /*
88486 * If we are the timekeeping CPU, we are permitted to be non-idle 89722 * If we are the timekeeping CPU, we are permitted to be non-idle
88487@@ -2569,7 +2569,7 @@ static void rcu_sysidle_check_cpu(struct rcu_data *rdp, bool *isidle, 89723@@ -2625,7 +2625,7 @@ static void rcu_sysidle_check_cpu(struct rcu_data *rdp, bool *isidle,
88488 WARN_ON_ONCE(smp_processor_id() != tick_do_timer_cpu); 89724 WARN_ON_ONCE(smp_processor_id() != tick_do_timer_cpu);
88489 89725
88490 /* Pick up current idle and NMI-nesting counter and check. */ 89726 /* Pick up current idle and NMI-nesting counter and check. */
@@ -88493,7 +89729,7 @@ index 08a7652..3598c7e 100644
88493 if (cur & 0x1) { 89729 if (cur & 0x1) {
88494 *isidle = false; /* We are not idle! */ 89730 *isidle = false; /* We are not idle! */
88495 return; 89731 return;
88496@@ -2632,7 +2632,7 @@ static void rcu_sysidle(unsigned long j) 89732@@ -2688,7 +2688,7 @@ static void rcu_sysidle(unsigned long j)
88497 case RCU_SYSIDLE_NOT: 89733 case RCU_SYSIDLE_NOT:
88498 89734
88499 /* First time all are idle, so note a short idle period. */ 89735 /* First time all are idle, so note a short idle period. */
@@ -88502,7 +89738,7 @@ index 08a7652..3598c7e 100644
88502 break; 89738 break;
88503 89739
88504 case RCU_SYSIDLE_SHORT: 89740 case RCU_SYSIDLE_SHORT:
88505@@ -2669,7 +2669,7 @@ static void rcu_sysidle(unsigned long j) 89741@@ -2725,7 +2725,7 @@ static void rcu_sysidle(unsigned long j)
88506 static void rcu_sysidle_cancel(void) 89742 static void rcu_sysidle_cancel(void)
88507 { 89743 {
88508 smp_mb(); 89744 smp_mb();
@@ -88511,7 +89747,7 @@ index 08a7652..3598c7e 100644
88511 } 89747 }
88512 89748
88513 /* 89749 /*
88514@@ -2717,7 +2717,7 @@ static void rcu_sysidle_cb(struct rcu_head *rhp) 89750@@ -2773,7 +2773,7 @@ static void rcu_sysidle_cb(struct rcu_head *rhp)
88515 smp_mb(); /* grace period precedes setting inuse. */ 89751 smp_mb(); /* grace period precedes setting inuse. */
88516 89752
88517 rshp = container_of(rhp, struct rcu_sysidle_head, rh); 89753 rshp = container_of(rhp, struct rcu_sysidle_head, rh);
@@ -88521,7 +89757,7 @@ index 08a7652..3598c7e 100644
88521 89757
88522 /* 89758 /*
88523diff --git a/kernel/rcu/tree_trace.c b/kernel/rcu/tree_trace.c 89759diff --git a/kernel/rcu/tree_trace.c b/kernel/rcu/tree_trace.c
88524index 3596797..f78391c 100644 89760index 4def475..8ffddde 100644
88525--- a/kernel/rcu/tree_trace.c 89761--- a/kernel/rcu/tree_trace.c
88526+++ b/kernel/rcu/tree_trace.c 89762+++ b/kernel/rcu/tree_trace.c
88527@@ -121,7 +121,7 @@ static void print_one_rcu_data(struct seq_file *m, struct rcu_data *rdp) 89763@@ -121,7 +121,7 @@ static void print_one_rcu_data(struct seq_file *m, struct rcu_data *rdp)
@@ -88562,10 +89798,10 @@ index 3596797..f78391c 100644
88562 } 89798 }
88563 89799
88564diff --git a/kernel/rcu/update.c b/kernel/rcu/update.c 89800diff --git a/kernel/rcu/update.c b/kernel/rcu/update.c
88565index 6cb3dff..dc5710f 100644 89801index c54609f..2e8829c 100644
88566--- a/kernel/rcu/update.c 89802--- a/kernel/rcu/update.c
88567+++ b/kernel/rcu/update.c 89803+++ b/kernel/rcu/update.c
88568@@ -318,10 +318,10 @@ int rcu_jiffies_till_stall_check(void) 89804@@ -312,10 +312,10 @@ int rcu_jiffies_till_stall_check(void)
88569 * for CONFIG_RCU_CPU_STALL_TIMEOUT. 89805 * for CONFIG_RCU_CPU_STALL_TIMEOUT.
88570 */ 89806 */
88571 if (till_stall_check < 3) { 89807 if (till_stall_check < 3) {
@@ -88655,10 +89891,10 @@ index a63f4dc..349bbb0 100644
88655 unsigned long timeout) 89891 unsigned long timeout)
88656 { 89892 {
88657diff --git a/kernel/sched/core.c b/kernel/sched/core.c 89893diff --git a/kernel/sched/core.c b/kernel/sched/core.c
88658index c677510..132bb14 100644 89894index f5c6635..7133356 100644
88659--- a/kernel/sched/core.c 89895--- a/kernel/sched/core.c
88660+++ b/kernel/sched/core.c 89896+++ b/kernel/sched/core.c
88661@@ -1768,7 +1768,7 @@ void set_numabalancing_state(bool enabled) 89897@@ -1775,7 +1775,7 @@ void set_numabalancing_state(bool enabled)
88662 int sysctl_numa_balancing(struct ctl_table *table, int write, 89898 int sysctl_numa_balancing(struct ctl_table *table, int write,
88663 void __user *buffer, size_t *lenp, loff_t *ppos) 89899 void __user *buffer, size_t *lenp, loff_t *ppos)
88664 { 89900 {
@@ -88667,7 +89903,19 @@ index c677510..132bb14 100644
88667 int err; 89903 int err;
88668 int state = numabalancing_enabled; 89904 int state = numabalancing_enabled;
88669 89905
88670@@ -2893,6 +2893,8 @@ int can_nice(const struct task_struct *p, const int nice) 89906@@ -2251,8 +2251,10 @@ context_switch(struct rq *rq, struct task_struct *prev,
89907 next->active_mm = oldmm;
89908 atomic_inc(&oldmm->mm_count);
89909 enter_lazy_tlb(oldmm, next);
89910- } else
89911+ } else {
89912 switch_mm(oldmm, mm, next);
89913+ populate_stack();
89914+ }
89915
89916 if (!prev->mm) {
89917 prev->active_mm = NULL;
89918@@ -3049,6 +3051,8 @@ int can_nice(const struct task_struct *p, const int nice)
88671 /* convert nice value [19,-20] to rlimit style value [1,40] */ 89919 /* convert nice value [19,-20] to rlimit style value [1,40] */
88672 int nice_rlim = 20 - nice; 89920 int nice_rlim = 20 - nice;
88673 89921
@@ -88676,7 +89924,7 @@ index c677510..132bb14 100644
88676 return (nice_rlim <= task_rlimit(p, RLIMIT_NICE) || 89924 return (nice_rlim <= task_rlimit(p, RLIMIT_NICE) ||
88677 capable(CAP_SYS_NICE)); 89925 capable(CAP_SYS_NICE));
88678 } 89926 }
88679@@ -2926,7 +2928,8 @@ SYSCALL_DEFINE1(nice, int, increment) 89927@@ -3082,7 +3086,8 @@ SYSCALL_DEFINE1(nice, int, increment)
88680 if (nice > 19) 89928 if (nice > 19)
88681 nice = 19; 89929 nice = 19;
88682 89930
@@ -88686,15 +89934,27 @@ index c677510..132bb14 100644
88686 return -EPERM; 89934 return -EPERM;
88687 89935
88688 retval = security_task_setnice(current, nice); 89936 retval = security_task_setnice(current, nice);
88689@@ -3088,6 +3091,7 @@ recheck: 89937@@ -3332,6 +3337,7 @@ recheck:
88690 unsigned long rlim_rtprio =
88691 task_rlimit(p, RLIMIT_RTPRIO);
88692
88693+ gr_learn_resource(p, RLIMIT_RTPRIO, param->sched_priority, 1);
88694 /* can't set/change the rt policy */
88695 if (policy != p->policy && !rlim_rtprio) 89938 if (policy != p->policy && !rlim_rtprio)
88696 return -EPERM; 89939 return -EPERM;
88697@@ -4254,7 +4258,7 @@ static void migrate_tasks(unsigned int dead_cpu) 89940
89941+ gr_learn_resource(p, RLIMIT_RTPRIO, attr->sched_priority, 1);
89942 /* can't increase priority */
89943 if (attr->sched_priority > p->rt_priority &&
89944 attr->sched_priority > rlim_rtprio)
89945@@ -4702,8 +4708,10 @@ void idle_task_exit(void)
89946
89947 BUG_ON(cpu_online(smp_processor_id()));
89948
89949- if (mm != &init_mm)
89950+ if (mm != &init_mm) {
89951 switch_mm(mm, &init_mm, current);
89952+ populate_stack();
89953+ }
89954 mmdrop(mm);
89955 }
89956
89957@@ -4781,7 +4789,7 @@ static void migrate_tasks(unsigned int dead_cpu)
88698 89958
88699 #if defined(CONFIG_SCHED_DEBUG) && defined(CONFIG_SYSCTL) 89959 #if defined(CONFIG_SCHED_DEBUG) && defined(CONFIG_SYSCTL)
88700 89960
@@ -88703,7 +89963,7 @@ index c677510..132bb14 100644
88703 { 89963 {
88704 .procname = "sched_domain", 89964 .procname = "sched_domain",
88705 .mode = 0555, 89965 .mode = 0555,
88706@@ -4271,17 +4275,17 @@ static struct ctl_table sd_ctl_root[] = { 89966@@ -4798,17 +4806,17 @@ static struct ctl_table sd_ctl_root[] = {
88707 {} 89967 {}
88708 }; 89968 };
88709 89969
@@ -88725,7 +89985,7 @@ index c677510..132bb14 100644
88725 89985
88726 /* 89986 /*
88727 * In the intermediate directories, both the child directory and 89987 * In the intermediate directories, both the child directory and
88728@@ -4289,22 +4293,25 @@ static void sd_free_ctl_entry(struct ctl_table **tablep) 89988@@ -4816,22 +4824,25 @@ static void sd_free_ctl_entry(struct ctl_table **tablep)
88729 * will always be set. In the lowest directory the names are 89989 * will always be set. In the lowest directory the names are
88730 * static strings and all have proc handlers. 89990 * static strings and all have proc handlers.
88731 */ 89991 */
@@ -88757,7 +90017,7 @@ index c677510..132bb14 100644
88757 const char *procname, void *data, int maxlen, 90017 const char *procname, void *data, int maxlen,
88758 umode_t mode, proc_handler *proc_handler, 90018 umode_t mode, proc_handler *proc_handler,
88759 bool load_idx) 90019 bool load_idx)
88760@@ -4324,7 +4331,7 @@ set_table_entry(struct ctl_table *entry, 90020@@ -4851,7 +4862,7 @@ set_table_entry(struct ctl_table *entry,
88761 static struct ctl_table * 90021 static struct ctl_table *
88762 sd_alloc_ctl_domain_table(struct sched_domain *sd) 90022 sd_alloc_ctl_domain_table(struct sched_domain *sd)
88763 { 90023 {
@@ -88766,7 +90026,7 @@ index c677510..132bb14 100644
88766 90026
88767 if (table == NULL) 90027 if (table == NULL)
88768 return NULL; 90028 return NULL;
88769@@ -4359,9 +4366,9 @@ sd_alloc_ctl_domain_table(struct sched_domain *sd) 90029@@ -4886,9 +4897,9 @@ sd_alloc_ctl_domain_table(struct sched_domain *sd)
88770 return table; 90030 return table;
88771 } 90031 }
88772 90032
@@ -88778,7 +90038,7 @@ index c677510..132bb14 100644
88778 struct sched_domain *sd; 90038 struct sched_domain *sd;
88779 int domain_num = 0, i; 90039 int domain_num = 0, i;
88780 char buf[32]; 90040 char buf[32];
88781@@ -4388,11 +4395,13 @@ static struct ctl_table_header *sd_sysctl_header; 90041@@ -4915,11 +4926,13 @@ static struct ctl_table_header *sd_sysctl_header;
88782 static void register_sched_domain_sysctl(void) 90042 static void register_sched_domain_sysctl(void)
88783 { 90043 {
88784 int i, cpu_num = num_possible_cpus(); 90044 int i, cpu_num = num_possible_cpus();
@@ -88793,7 +90053,7 @@ index c677510..132bb14 100644
88793 90053
88794 if (entry == NULL) 90054 if (entry == NULL)
88795 return; 90055 return;
88796@@ -4415,8 +4424,12 @@ static void unregister_sched_domain_sysctl(void) 90056@@ -4942,8 +4955,12 @@ static void unregister_sched_domain_sysctl(void)
88797 if (sd_sysctl_header) 90057 if (sd_sysctl_header)
88798 unregister_sysctl_table(sd_sysctl_header); 90058 unregister_sysctl_table(sd_sysctl_header);
88799 sd_sysctl_header = NULL; 90059 sd_sysctl_header = NULL;
@@ -88809,10 +90069,10 @@ index c677510..132bb14 100644
88809 #else 90069 #else
88810 static void register_sched_domain_sysctl(void) 90070 static void register_sched_domain_sysctl(void)
88811diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c 90071diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
88812index ce501de..1805320 100644 90072index 9b4c4f3..665489b 100644
88813--- a/kernel/sched/fair.c 90073--- a/kernel/sched/fair.c
88814+++ b/kernel/sched/fair.c 90074+++ b/kernel/sched/fair.c
88815@@ -1652,7 +1652,7 @@ void task_numa_fault(int last_cpupid, int node, int pages, int flags) 90075@@ -1647,7 +1647,7 @@ void task_numa_fault(int last_cpupid, int node, int pages, int flags)
88816 90076
88817 static void reset_ptenuma_scan(struct task_struct *p) 90077 static void reset_ptenuma_scan(struct task_struct *p)
88818 { 90078 {
@@ -88821,20 +90081,20 @@ index ce501de..1805320 100644
88821 p->mm->numa_scan_offset = 0; 90081 p->mm->numa_scan_offset = 0;
88822 } 90082 }
88823 90083
88824@@ -6863,7 +6863,7 @@ static void nohz_idle_balance(int this_cpu, enum cpu_idle_type idle) { } 90084@@ -6851,7 +6851,7 @@ static void nohz_idle_balance(struct rq *this_rq, enum cpu_idle_type idle) { }
88825 * run_rebalance_domains is triggered when needed from the scheduler tick. 90085 * run_rebalance_domains is triggered when needed from the scheduler tick.
88826 * Also triggered for nohz idle balancing (with nohz_balancing_kick set). 90086 * Also triggered for nohz idle balancing (with nohz_balancing_kick set).
88827 */ 90087 */
88828-static void run_rebalance_domains(struct softirq_action *h) 90088-static void run_rebalance_domains(struct softirq_action *h)
88829+static __latent_entropy void run_rebalance_domains(void) 90089+static __latent_entropy void run_rebalance_domains(void)
88830 { 90090 {
88831 int this_cpu = smp_processor_id(); 90091 struct rq *this_rq = this_rq();
88832 struct rq *this_rq = cpu_rq(this_cpu); 90092 enum cpu_idle_type idle = this_rq->idle_balance ?
88833diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h 90093diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
88834index 88c85b2..a1dec86 100644 90094index f964add..dcd823d 100644
88835--- a/kernel/sched/sched.h 90095--- a/kernel/sched/sched.h
88836+++ b/kernel/sched/sched.h 90096+++ b/kernel/sched/sched.h
88837@@ -1035,7 +1035,7 @@ struct sched_class { 90097@@ -1157,7 +1157,7 @@ struct sched_class {
88838 #ifdef CONFIG_FAIR_GROUP_SCHED 90098 #ifdef CONFIG_FAIR_GROUP_SCHED
88839 void (*task_move_group) (struct task_struct *p, int on_rq); 90099 void (*task_move_group) (struct task_struct *p, int on_rq);
88840 #endif 90100 #endif
@@ -88844,7 +90104,7 @@ index 88c85b2..a1dec86 100644
88844 #define sched_class_highest (&stop_sched_class) 90104 #define sched_class_highest (&stop_sched_class)
88845 #define for_each_class(class) \ 90105 #define for_each_class(class) \
88846diff --git a/kernel/signal.c b/kernel/signal.c 90106diff --git a/kernel/signal.c b/kernel/signal.c
88847index 940b30e..7fd6041 100644 90107index 52f881d..1e9f941 100644
88848--- a/kernel/signal.c 90108--- a/kernel/signal.c
88849+++ b/kernel/signal.c 90109+++ b/kernel/signal.c
88850@@ -51,12 +51,12 @@ static struct kmem_cache *sigqueue_cachep; 90110@@ -51,12 +51,12 @@ static struct kmem_cache *sigqueue_cachep;
@@ -88970,7 +90230,7 @@ index 940b30e..7fd6041 100644
88970 if (p && (tgid <= 0 || task_tgid_vnr(p) == tgid)) { 90230 if (p && (tgid <= 0 || task_tgid_vnr(p) == tgid)) {
88971 error = check_kill_permission(sig, info, p); 90231 error = check_kill_permission(sig, info, p);
88972 /* 90232 /*
88973@@ -3240,8 +3271,8 @@ COMPAT_SYSCALL_DEFINE2(sigaltstack, 90233@@ -3239,8 +3270,8 @@ COMPAT_SYSCALL_DEFINE2(sigaltstack,
88974 } 90234 }
88975 seg = get_fs(); 90235 seg = get_fs();
88976 set_fs(KERNEL_DS); 90236 set_fs(KERNEL_DS);
@@ -89004,10 +90264,10 @@ index eb89e18..a4e6792 100644
89004 mutex_unlock(&smpboot_threads_lock); 90264 mutex_unlock(&smpboot_threads_lock);
89005 put_online_cpus(); 90265 put_online_cpus();
89006diff --git a/kernel/softirq.c b/kernel/softirq.c 90266diff --git a/kernel/softirq.c b/kernel/softirq.c
89007index 11025cc..bc0e4dc 100644 90267index 490fcbb..1e502c6 100644
89008--- a/kernel/softirq.c 90268--- a/kernel/softirq.c
89009+++ b/kernel/softirq.c 90269+++ b/kernel/softirq.c
89010@@ -50,11 +50,11 @@ irq_cpustat_t irq_stat[NR_CPUS] ____cacheline_aligned; 90270@@ -52,7 +52,7 @@ irq_cpustat_t irq_stat[NR_CPUS] ____cacheline_aligned;
89011 EXPORT_SYMBOL(irq_stat); 90271 EXPORT_SYMBOL(irq_stat);
89012 #endif 90272 #endif
89013 90273
@@ -89016,21 +90276,16 @@ index 11025cc..bc0e4dc 100644
89016 90276
89017 DEFINE_PER_CPU(struct task_struct *, ksoftirqd); 90277 DEFINE_PER_CPU(struct task_struct *, ksoftirqd);
89018 90278
89019-char *softirq_to_name[NR_SOFTIRQS] = { 90279@@ -267,7 +267,7 @@ restart:
89020+const char * const softirq_to_name[NR_SOFTIRQS] = { 90280 kstat_incr_softirqs_this_cpu(vec_nr);
89021 "HI", "TIMER", "NET_TX", "NET_RX", "BLOCK", "BLOCK_IOPOLL", 90281
89022 "TASKLET", "SCHED", "HRTIMER", "RCU" 90282 trace_softirq_entry(vec_nr);
89023 }; 90283- h->action(h);
89024@@ -250,7 +250,7 @@ restart: 90284+ h->action();
89025 kstat_incr_softirqs_this_cpu(vec_nr); 90285 trace_softirq_exit(vec_nr);
89026 90286 if (unlikely(prev_count != preempt_count())) {
89027 trace_softirq_entry(vec_nr); 90287 pr_err("huh, entered softirq %u %s %p with preempt_count %08x, exited with %08x?\n",
89028- h->action(h); 90288@@ -427,7 +427,7 @@ void __raise_softirq_irqoff(unsigned int nr)
89029+ h->action();
89030 trace_softirq_exit(vec_nr);
89031 if (unlikely(prev_count != preempt_count())) {
89032 printk(KERN_ERR "huh, entered softirq %u %s %p"
89033@@ -419,7 +419,7 @@ void __raise_softirq_irqoff(unsigned int nr)
89034 or_softirq_pending(1UL << nr); 90289 or_softirq_pending(1UL << nr);
89035 } 90290 }
89036 90291
@@ -89039,16 +90294,16 @@ index 11025cc..bc0e4dc 100644
89039 { 90294 {
89040 softirq_vec[nr].action = action; 90295 softirq_vec[nr].action = action;
89041 } 90296 }
89042@@ -475,7 +475,7 @@ void __tasklet_hi_schedule_first(struct tasklet_struct *t) 90297@@ -479,7 +479,7 @@ void __tasklet_hi_schedule_first(struct tasklet_struct *t)
89043 90298 }
89044 EXPORT_SYMBOL(__tasklet_hi_schedule_first); 90299 EXPORT_SYMBOL(__tasklet_hi_schedule_first);
89045 90300
89046-static void tasklet_action(struct softirq_action *a) 90301-static void tasklet_action(struct softirq_action *a)
89047+static __latent_entropy void tasklet_action(void) 90302+static void tasklet_action(void)
89048 { 90303 {
89049 struct tasklet_struct *list; 90304 struct tasklet_struct *list;
89050 90305
89051@@ -510,7 +510,7 @@ static void tasklet_action(struct softirq_action *a) 90306@@ -515,7 +515,7 @@ static void tasklet_action(struct softirq_action *a)
89052 } 90307 }
89053 } 90308 }
89054 90309
@@ -89057,7 +90312,7 @@ index 11025cc..bc0e4dc 100644
89057 { 90312 {
89058 struct tasklet_struct *list; 90313 struct tasklet_struct *list;
89059 90314
89060@@ -740,7 +740,7 @@ static struct notifier_block cpu_nfb = { 90315@@ -742,7 +742,7 @@ static struct notifier_block cpu_nfb = {
89061 .notifier_call = cpu_callback 90316 .notifier_call = cpu_callback
89062 }; 90317 };
89063 90318
@@ -89067,7 +90322,7 @@ index 11025cc..bc0e4dc 100644
89067 .thread_should_run = ksoftirqd_should_run, 90322 .thread_should_run = ksoftirqd_should_run,
89068 .thread_fn = run_ksoftirqd, 90323 .thread_fn = run_ksoftirqd,
89069diff --git a/kernel/sys.c b/kernel/sys.c 90324diff --git a/kernel/sys.c b/kernel/sys.c
89070index c723113..46bf922 100644 90325index c0a58be..784c618 100644
89071--- a/kernel/sys.c 90326--- a/kernel/sys.c
89072+++ b/kernel/sys.c 90327+++ b/kernel/sys.c
89073@@ -148,6 +148,12 @@ static int set_one_prio(struct task_struct *p, int niceval, int error) 90328@@ -148,6 +148,12 @@ static int set_one_prio(struct task_struct *p, int niceval, int error)
@@ -89190,7 +90445,7 @@ index c723113..46bf922 100644
89190 abort_creds(new); 90445 abort_creds(new);
89191 return old_fsgid; 90446 return old_fsgid;
89192 90447
89193@@ -1168,19 +1204,19 @@ SYSCALL_DEFINE1(olduname, struct oldold_utsname __user *, name) 90448@@ -1167,19 +1203,19 @@ SYSCALL_DEFINE1(olduname, struct oldold_utsname __user *, name)
89194 return -EFAULT; 90449 return -EFAULT;
89195 90450
89196 down_read(&uts_sem); 90451 down_read(&uts_sem);
@@ -89215,7 +90470,7 @@ index c723113..46bf922 100644
89215 __OLD_UTS_LEN); 90470 __OLD_UTS_LEN);
89216 error |= __put_user(0, name->machine + __OLD_UTS_LEN); 90471 error |= __put_user(0, name->machine + __OLD_UTS_LEN);
89217 up_read(&uts_sem); 90472 up_read(&uts_sem);
89218@@ -1382,6 +1418,13 @@ int do_prlimit(struct task_struct *tsk, unsigned int resource, 90473@@ -1381,6 +1417,13 @@ int do_prlimit(struct task_struct *tsk, unsigned int resource,
89219 */ 90474 */
89220 new_rlim->rlim_cur = 1; 90475 new_rlim->rlim_cur = 1;
89221 } 90476 }
@@ -89230,18 +90485,18 @@ index c723113..46bf922 100644
89230 if (!retval) { 90485 if (!retval) {
89231 if (old_rlim) 90486 if (old_rlim)
89232diff --git a/kernel/sysctl.c b/kernel/sysctl.c 90487diff --git a/kernel/sysctl.c b/kernel/sysctl.c
89233index 06962ba..a54d45e 100644 90488index aae21e8..58d8c9a 100644
89234--- a/kernel/sysctl.c 90489--- a/kernel/sysctl.c
89235+++ b/kernel/sysctl.c 90490+++ b/kernel/sysctl.c
89236@@ -93,7 +93,6 @@ 90491@@ -94,7 +94,6 @@
89237 90492
89238 90493
89239 #if defined(CONFIG_SYSCTL) 90494 #if defined(CONFIG_SYSCTL)
89240- 90495-
89241 /* External variables not in a header file. */ 90496 /* External variables not in a header file. */
89242 extern int sysctl_overcommit_memory; 90497 extern int max_threads;
89243 extern int sysctl_overcommit_ratio; 90498 extern int suid_dumpable;
89244@@ -119,17 +118,18 @@ extern int blk_iopoll_enabled; 90499@@ -118,19 +117,18 @@ extern int blk_iopoll_enabled;
89245 90500
89246 /* Constants used for minimum and maximum */ 90501 /* Constants used for minimum and maximum */
89247 #ifdef CONFIG_LOCKUP_DETECTOR 90502 #ifdef CONFIG_LOCKUP_DETECTOR
@@ -89249,13 +90504,15 @@ index 06962ba..a54d45e 100644
89249+static int sixty __read_only = 60; 90504+static int sixty __read_only = 60;
89250 #endif 90505 #endif
89251 90506
90507-static int __maybe_unused neg_one = -1;
90508-
89252-static int zero; 90509-static int zero;
89253-static int __maybe_unused one = 1; 90510-static int __maybe_unused one = 1;
89254-static int __maybe_unused two = 2; 90511-static int __maybe_unused two = 2;
89255-static int __maybe_unused three = 3; 90512-static int __maybe_unused three = 3;
89256-static unsigned long one_ul = 1; 90513-static unsigned long one_ul = 1;
89257-static int one_hundred = 100; 90514-static int one_hundred = 100;
89258+static int neg_one __read_only = -1; 90515+static int __maybe_unused neg_one __read_only = -1;
89259+static int zero __read_only = 0; 90516+static int zero __read_only = 0;
89260+static int __maybe_unused one __read_only = 1; 90517+static int __maybe_unused one __read_only = 1;
89261+static int __maybe_unused two __read_only = 2; 90518+static int __maybe_unused two __read_only = 2;
@@ -89268,7 +90525,7 @@ index 06962ba..a54d45e 100644
89268 #endif 90525 #endif
89269 90526
89270 /* this is needed for the proc_doulongvec_minmax of vm_dirty_bytes */ 90527 /* this is needed for the proc_doulongvec_minmax of vm_dirty_bytes */
89271@@ -176,10 +176,8 @@ static int proc_taint(struct ctl_table *table, int write, 90528@@ -182,10 +180,8 @@ static int proc_taint(struct ctl_table *table, int write,
89272 void __user *buffer, size_t *lenp, loff_t *ppos); 90529 void __user *buffer, size_t *lenp, loff_t *ppos);
89273 #endif 90530 #endif
89274 90531
@@ -89279,7 +90536,7 @@ index 06962ba..a54d45e 100644
89279 90536
89280 static int proc_dointvec_minmax_coredump(struct ctl_table *table, int write, 90537 static int proc_dointvec_minmax_coredump(struct ctl_table *table, int write,
89281 void __user *buffer, size_t *lenp, loff_t *ppos); 90538 void __user *buffer, size_t *lenp, loff_t *ppos);
89282@@ -210,6 +208,8 @@ static int sysrq_sysctl_handler(ctl_table *table, int write, 90539@@ -216,6 +212,8 @@ static int sysrq_sysctl_handler(ctl_table *table, int write,
89283 90540
89284 #endif 90541 #endif
89285 90542
@@ -89288,7 +90545,7 @@ index 06962ba..a54d45e 100644
89288 static struct ctl_table kern_table[]; 90545 static struct ctl_table kern_table[];
89289 static struct ctl_table vm_table[]; 90546 static struct ctl_table vm_table[];
89290 static struct ctl_table fs_table[]; 90547 static struct ctl_table fs_table[];
89291@@ -224,6 +224,20 @@ extern struct ctl_table epoll_table[]; 90548@@ -230,6 +228,20 @@ extern struct ctl_table epoll_table[];
89292 int sysctl_legacy_va_layout; 90549 int sysctl_legacy_va_layout;
89293 #endif 90550 #endif
89294 90551
@@ -89309,7 +90566,7 @@ index 06962ba..a54d45e 100644
89309 /* The default sysctl tables: */ 90566 /* The default sysctl tables: */
89310 90567
89311 static struct ctl_table sysctl_base_table[] = { 90568 static struct ctl_table sysctl_base_table[] = {
89312@@ -272,6 +286,22 @@ static int max_extfrag_threshold = 1000; 90569@@ -278,6 +290,22 @@ static int max_extfrag_threshold = 1000;
89313 #endif 90570 #endif
89314 90571
89315 static struct ctl_table kern_table[] = { 90572 static struct ctl_table kern_table[] = {
@@ -89332,7 +90589,7 @@ index 06962ba..a54d45e 100644
89332 { 90589 {
89333 .procname = "sched_child_runs_first", 90590 .procname = "sched_child_runs_first",
89334 .data = &sysctl_sched_child_runs_first, 90591 .data = &sysctl_sched_child_runs_first,
89335@@ -629,7 +659,7 @@ static struct ctl_table kern_table[] = { 90592@@ -640,7 +668,7 @@ static struct ctl_table kern_table[] = {
89336 .data = &modprobe_path, 90593 .data = &modprobe_path,
89337 .maxlen = KMOD_PATH_LEN, 90594 .maxlen = KMOD_PATH_LEN,
89338 .mode = 0644, 90595 .mode = 0644,
@@ -89341,7 +90598,7 @@ index 06962ba..a54d45e 100644
89341 }, 90598 },
89342 { 90599 {
89343 .procname = "modules_disabled", 90600 .procname = "modules_disabled",
89344@@ -796,16 +826,20 @@ static struct ctl_table kern_table[] = { 90601@@ -807,16 +835,20 @@ static struct ctl_table kern_table[] = {
89345 .extra1 = &zero, 90602 .extra1 = &zero,
89346 .extra2 = &one, 90603 .extra2 = &one,
89347 }, 90604 },
@@ -89363,7 +90620,7 @@ index 06962ba..a54d45e 100644
89363 { 90620 {
89364 .procname = "ngroups_max", 90621 .procname = "ngroups_max",
89365 .data = &ngroups_max, 90622 .data = &ngroups_max,
89366@@ -1048,10 +1082,17 @@ static struct ctl_table kern_table[] = { 90623@@ -1061,10 +1093,17 @@ static struct ctl_table kern_table[] = {
89367 */ 90624 */
89368 { 90625 {
89369 .procname = "perf_event_paranoid", 90626 .procname = "perf_event_paranoid",
@@ -89384,7 +90641,7 @@ index 06962ba..a54d45e 100644
89384 }, 90641 },
89385 { 90642 {
89386 .procname = "perf_event_mlock_kb", 90643 .procname = "perf_event_mlock_kb",
89387@@ -1315,6 +1356,13 @@ static struct ctl_table vm_table[] = { 90644@@ -1335,6 +1374,13 @@ static struct ctl_table vm_table[] = {
89388 .proc_handler = proc_dointvec_minmax, 90645 .proc_handler = proc_dointvec_minmax,
89389 .extra1 = &zero, 90646 .extra1 = &zero,
89390 }, 90647 },
@@ -89398,7 +90655,7 @@ index 06962ba..a54d45e 100644
89398 #else 90655 #else
89399 { 90656 {
89400 .procname = "nr_trim_pages", 90657 .procname = "nr_trim_pages",
89401@@ -1779,6 +1827,16 @@ int proc_dostring(struct ctl_table *table, int write, 90658@@ -1799,6 +1845,16 @@ int proc_dostring(struct ctl_table *table, int write,
89402 buffer, lenp, ppos); 90659 buffer, lenp, ppos);
89403 } 90660 }
89404 90661
@@ -89415,7 +90672,7 @@ index 06962ba..a54d45e 100644
89415 static size_t proc_skip_spaces(char **buf) 90672 static size_t proc_skip_spaces(char **buf)
89416 { 90673 {
89417 size_t ret; 90674 size_t ret;
89418@@ -1884,6 +1942,8 @@ static int proc_put_long(void __user **buf, size_t *size, unsigned long val, 90675@@ -1904,6 +1960,8 @@ static int proc_put_long(void __user **buf, size_t *size, unsigned long val,
89419 len = strlen(tmp); 90676 len = strlen(tmp);
89420 if (len > *size) 90677 if (len > *size)
89421 len = *size; 90678 len = *size;
@@ -89424,7 +90681,7 @@ index 06962ba..a54d45e 100644
89424 if (copy_to_user(*buf, tmp, len)) 90681 if (copy_to_user(*buf, tmp, len))
89425 return -EFAULT; 90682 return -EFAULT;
89426 *size -= len; 90683 *size -= len;
89427@@ -2048,7 +2108,7 @@ int proc_dointvec(struct ctl_table *table, int write, 90684@@ -2068,7 +2126,7 @@ int proc_dointvec(struct ctl_table *table, int write,
89428 static int proc_taint(struct ctl_table *table, int write, 90685 static int proc_taint(struct ctl_table *table, int write,
89429 void __user *buffer, size_t *lenp, loff_t *ppos) 90686 void __user *buffer, size_t *lenp, loff_t *ppos)
89430 { 90687 {
@@ -89433,7 +90690,7 @@ index 06962ba..a54d45e 100644
89433 unsigned long tmptaint = get_taint(); 90690 unsigned long tmptaint = get_taint();
89434 int err; 90691 int err;
89435 90692
89436@@ -2076,7 +2136,6 @@ static int proc_taint(struct ctl_table *table, int write, 90693@@ -2096,7 +2154,6 @@ static int proc_taint(struct ctl_table *table, int write,
89437 return err; 90694 return err;
89438 } 90695 }
89439 90696
@@ -89441,7 +90698,7 @@ index 06962ba..a54d45e 100644
89441 static int proc_dointvec_minmax_sysadmin(struct ctl_table *table, int write, 90698 static int proc_dointvec_minmax_sysadmin(struct ctl_table *table, int write,
89442 void __user *buffer, size_t *lenp, loff_t *ppos) 90699 void __user *buffer, size_t *lenp, loff_t *ppos)
89443 { 90700 {
89444@@ -2085,7 +2144,6 @@ static int proc_dointvec_minmax_sysadmin(struct ctl_table *table, int write, 90701@@ -2105,7 +2162,6 @@ static int proc_dointvec_minmax_sysadmin(struct ctl_table *table, int write,
89445 90702
89446 return proc_dointvec_minmax(table, write, buffer, lenp, ppos); 90703 return proc_dointvec_minmax(table, write, buffer, lenp, ppos);
89447 } 90704 }
@@ -89449,7 +90706,7 @@ index 06962ba..a54d45e 100644
89449 90706
89450 struct do_proc_dointvec_minmax_conv_param { 90707 struct do_proc_dointvec_minmax_conv_param {
89451 int *min; 90708 int *min;
89452@@ -2632,6 +2690,12 @@ int proc_dostring(struct ctl_table *table, int write, 90709@@ -2652,6 +2708,12 @@ int proc_dostring(struct ctl_table *table, int write,
89453 return -ENOSYS; 90710 return -ENOSYS;
89454 } 90711 }
89455 90712
@@ -89462,7 +90719,7 @@ index 06962ba..a54d45e 100644
89462 int proc_dointvec(struct ctl_table *table, int write, 90719 int proc_dointvec(struct ctl_table *table, int write,
89463 void __user *buffer, size_t *lenp, loff_t *ppos) 90720 void __user *buffer, size_t *lenp, loff_t *ppos)
89464 { 90721 {
89465@@ -2688,5 +2752,6 @@ EXPORT_SYMBOL(proc_dointvec_minmax); 90722@@ -2708,5 +2770,6 @@ EXPORT_SYMBOL(proc_dointvec_minmax);
89466 EXPORT_SYMBOL(proc_dointvec_userhz_jiffies); 90723 EXPORT_SYMBOL(proc_dointvec_userhz_jiffies);
89467 EXPORT_SYMBOL(proc_dointvec_ms_jiffies); 90724 EXPORT_SYMBOL(proc_dointvec_ms_jiffies);
89468 EXPORT_SYMBOL(proc_dostring); 90725 EXPORT_SYMBOL(proc_dostring);
@@ -89526,7 +90783,7 @@ index 88c9c65..7497ebc 100644
89526 .clock_get = alarm_clock_get, 90783 .clock_get = alarm_clock_get,
89527 .timer_create = alarm_timer_create, 90784 .timer_create = alarm_timer_create,
89528diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c 90785diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
89529index b415457..c26876d 100644 90786index 5b40279..81e58db 100644
89530--- a/kernel/time/timekeeping.c 90787--- a/kernel/time/timekeeping.c
89531+++ b/kernel/time/timekeeping.c 90788+++ b/kernel/time/timekeeping.c
89532@@ -15,6 +15,7 @@ 90789@@ -15,6 +15,7 @@
@@ -89537,7 +90794,7 @@ index b415457..c26876d 100644
89537 #include <linux/syscore_ops.h> 90794 #include <linux/syscore_ops.h>
89538 #include <linux/clocksource.h> 90795 #include <linux/clocksource.h>
89539 #include <linux/jiffies.h> 90796 #include <linux/jiffies.h>
89540@@ -500,6 +501,8 @@ int do_settimeofday(const struct timespec *tv) 90797@@ -501,6 +502,8 @@ int do_settimeofday(const struct timespec *tv)
89541 if (!timespec_valid_strict(tv)) 90798 if (!timespec_valid_strict(tv))
89542 return -EINVAL; 90799 return -EINVAL;
89543 90800
@@ -89686,7 +90943,7 @@ index accfd24..e00f0c0 100644
89686 struct timer_list timer; 90943 struct timer_list timer;
89687 unsigned long expire; 90944 unsigned long expire;
89688diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c 90945diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c
89689index f785aef..59f1b18 100644 90946index 4f3a3c03..04b7886 100644
89690--- a/kernel/trace/blktrace.c 90947--- a/kernel/trace/blktrace.c
89691+++ b/kernel/trace/blktrace.c 90948+++ b/kernel/trace/blktrace.c
89692@@ -328,7 +328,7 @@ static ssize_t blk_dropped_read(struct file *filp, char __user *buffer, 90949@@ -328,7 +328,7 @@ static ssize_t blk_dropped_read(struct file *filp, char __user *buffer,
@@ -89717,10 +90974,10 @@ index f785aef..59f1b18 100644
89717 90974
89718 ret = -EIO; 90975 ret = -EIO;
89719diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c 90976diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
89720index 38463d2..68abe92 100644 90977index cd7f76d..553c805 100644
89721--- a/kernel/trace/ftrace.c 90978--- a/kernel/trace/ftrace.c
89722+++ b/kernel/trace/ftrace.c 90979+++ b/kernel/trace/ftrace.c
89723@@ -1978,12 +1978,17 @@ ftrace_code_disable(struct module *mod, struct dyn_ftrace *rec) 90980@@ -1965,12 +1965,17 @@ ftrace_code_disable(struct module *mod, struct dyn_ftrace *rec)
89724 if (unlikely(ftrace_disabled)) 90981 if (unlikely(ftrace_disabled))
89725 return 0; 90982 return 0;
89726 90983
@@ -89740,7 +90997,7 @@ index 38463d2..68abe92 100644
89740 } 90997 }
89741 90998
89742 /* 90999 /*
89743@@ -4190,8 +4195,10 @@ static int ftrace_process_locs(struct module *mod, 91000@@ -4177,8 +4182,10 @@ static int ftrace_process_locs(struct module *mod,
89744 if (!count) 91001 if (!count)
89745 return 0; 91002 return 0;
89746 91003
@@ -89751,7 +91008,7 @@ index 38463d2..68abe92 100644
89751 91008
89752 start_pg = ftrace_allocate_pages(count); 91009 start_pg = ftrace_allocate_pages(count);
89753 if (!start_pg) 91010 if (!start_pg)
89754@@ -4922,8 +4929,6 @@ ftrace_enable_sysctl(struct ctl_table *table, int write, 91011@@ -4909,8 +4916,6 @@ ftrace_enable_sysctl(struct ctl_table *table, int write,
89755 #ifdef CONFIG_FUNCTION_GRAPH_TRACER 91012 #ifdef CONFIG_FUNCTION_GRAPH_TRACER
89756 91013
89757 static int ftrace_graph_active; 91014 static int ftrace_graph_active;
@@ -89760,7 +91017,7 @@ index 38463d2..68abe92 100644
89760 int ftrace_graph_entry_stub(struct ftrace_graph_ent *trace) 91017 int ftrace_graph_entry_stub(struct ftrace_graph_ent *trace)
89761 { 91018 {
89762 return 0; 91019 return 0;
89763@@ -5099,6 +5104,10 @@ static void update_function_graph_func(void) 91020@@ -5086,6 +5091,10 @@ static void update_function_graph_func(void)
89764 ftrace_graph_entry = ftrace_graph_entry_test; 91021 ftrace_graph_entry = ftrace_graph_entry_test;
89765 } 91022 }
89766 91023
@@ -89771,7 +91028,7 @@ index 38463d2..68abe92 100644
89771 int register_ftrace_graph(trace_func_graph_ret_t retfunc, 91028 int register_ftrace_graph(trace_func_graph_ret_t retfunc,
89772 trace_func_graph_ent_t entryfunc) 91029 trace_func_graph_ent_t entryfunc)
89773 { 91030 {
89774@@ -5112,7 +5121,6 @@ int register_ftrace_graph(trace_func_graph_ret_t retfunc, 91031@@ -5099,7 +5108,6 @@ int register_ftrace_graph(trace_func_graph_ret_t retfunc,
89775 goto out; 91032 goto out;
89776 } 91033 }
89777 91034
@@ -89780,7 +91037,7 @@ index 38463d2..68abe92 100644
89780 91037
89781 ftrace_graph_active++; 91038 ftrace_graph_active++;
89782diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c 91039diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
89783index 0e337ee..3370631 100644 91040index fc4da2d..f3e800b 100644
89784--- a/kernel/trace/ring_buffer.c 91041--- a/kernel/trace/ring_buffer.c
89785+++ b/kernel/trace/ring_buffer.c 91042+++ b/kernel/trace/ring_buffer.c
89786@@ -352,9 +352,9 @@ struct buffer_data_page { 91043@@ -352,9 +352,9 @@ struct buffer_data_page {
@@ -90058,10 +91315,10 @@ index 0e337ee..3370631 100644
90058 *data_page = bpage; 91315 *data_page = bpage;
90059 91316
90060diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c 91317diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
90061index 0a360ce..7bd800e 100644 91318index 24c1f23..781fd73f 100644
90062--- a/kernel/trace/trace.c 91319--- a/kernel/trace/trace.c
90063+++ b/kernel/trace/trace.c 91320+++ b/kernel/trace/trace.c
90064@@ -3352,7 +3352,7 @@ int trace_keep_overwrite(struct tracer *tracer, u32 mask, int set) 91321@@ -3399,7 +3399,7 @@ int trace_keep_overwrite(struct tracer *tracer, u32 mask, int set)
90065 return 0; 91322 return 0;
90066 } 91323 }
90067 91324
@@ -90071,10 +91328,10 @@ index 0a360ce..7bd800e 100644
90071 /* do nothing if flag is already set */ 91328 /* do nothing if flag is already set */
90072 if (!!(trace_flags & mask) == !!enabled) 91329 if (!!(trace_flags & mask) == !!enabled)
90073diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h 91330diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h
90074index ea189e0..a5b48c4 100644 91331index 02b592f..f971546 100644
90075--- a/kernel/trace/trace.h 91332--- a/kernel/trace/trace.h
90076+++ b/kernel/trace/trace.h 91333+++ b/kernel/trace/trace.h
90077@@ -1040,7 +1040,7 @@ extern const char *__stop___tracepoint_str[]; 91334@@ -1233,7 +1233,7 @@ extern const char *__stop___tracepoint_str[];
90078 void trace_printk_init_buffers(void); 91335 void trace_printk_init_buffers(void);
90079 void trace_printk_start_comm(void); 91336 void trace_printk_start_comm(void);
90080 int trace_keep_overwrite(struct tracer *tracer, u32 mask, int set); 91337 int trace_keep_overwrite(struct tracer *tracer, u32 mask, int set);
@@ -90104,7 +91361,7 @@ index 26dc348..8708ca7 100644
90104+ return atomic64_inc_return_unchecked(&trace_counter); 91361+ return atomic64_inc_return_unchecked(&trace_counter);
90105 } 91362 }
90106diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c 91363diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c
90107index 2e58196..fdd3d61 100644 91364index 7b16d40..1b2875d 100644
90108--- a/kernel/trace/trace_events.c 91365--- a/kernel/trace/trace_events.c
90109+++ b/kernel/trace/trace_events.c 91366+++ b/kernel/trace/trace_events.c
90110@@ -1681,7 +1681,6 @@ __trace_early_add_new_event(struct ftrace_event_call *call, 91367@@ -1681,7 +1681,6 @@ __trace_early_add_new_event(struct ftrace_event_call *call,
@@ -90190,7 +91447,7 @@ index ed32284..884d6c3 100644
90190 key = event->type & (EVENT_HASHSIZE - 1); 91447 key = event->type & (EVENT_HASHSIZE - 1);
90191 91448
90192diff --git a/kernel/trace/trace_stack.c b/kernel/trace/trace_stack.c 91449diff --git a/kernel/trace/trace_stack.c b/kernel/trace/trace_stack.c
90193index b20428c..4845a10 100644 91450index e6be585..d73ae5e 100644
90194--- a/kernel/trace/trace_stack.c 91451--- a/kernel/trace/trace_stack.c
90195+++ b/kernel/trace/trace_stack.c 91452+++ b/kernel/trace/trace_stack.c
90196@@ -68,7 +68,7 @@ check_stack(unsigned long ip, unsigned long *stack) 91453@@ -68,7 +68,7 @@ check_stack(unsigned long ip, unsigned long *stack)
@@ -90203,7 +91460,7 @@ index b20428c..4845a10 100644
90203 91460
90204 local_irq_save(flags); 91461 local_irq_save(flags);
90205diff --git a/kernel/user_namespace.c b/kernel/user_namespace.c 91462diff --git a/kernel/user_namespace.c b/kernel/user_namespace.c
90206index 240fb62..583473e 100644 91463index 80a57af..7f5a7ff 100644
90207--- a/kernel/user_namespace.c 91464--- a/kernel/user_namespace.c
90208+++ b/kernel/user_namespace.c 91465+++ b/kernel/user_namespace.c
90209@@ -82,6 +82,21 @@ int create_user_ns(struct cred *new) 91466@@ -82,6 +82,21 @@ int create_user_ns(struct cred *new)
@@ -90228,7 +91485,7 @@ index 240fb62..583473e 100644
90228 ns = kmem_cache_zalloc(user_ns_cachep, GFP_KERNEL); 91485 ns = kmem_cache_zalloc(user_ns_cachep, GFP_KERNEL);
90229 if (!ns) 91486 if (!ns)
90230 return -ENOMEM; 91487 return -ENOMEM;
90231@@ -866,7 +881,7 @@ static int userns_install(struct nsproxy *nsproxy, void *ns) 91488@@ -865,7 +880,7 @@ static int userns_install(struct nsproxy *nsproxy, void *ns)
90232 if (atomic_read(&current->mm->mm_users) > 1) 91489 if (atomic_read(&current->mm->mm_users) > 1)
90233 return -EINVAL; 91490 return -EINVAL;
90234 91491
@@ -90264,7 +91521,7 @@ index 4431610..4265616 100644
90264 .thread_should_run = watchdog_should_run, 91521 .thread_should_run = watchdog_should_run,
90265 .thread_fn = watchdog, 91522 .thread_fn = watchdog,
90266diff --git a/kernel/workqueue.c b/kernel/workqueue.c 91523diff --git a/kernel/workqueue.c b/kernel/workqueue.c
90267index a8381cf..1ce1331 100644 91524index 193e977..26dd63f 100644
90268--- a/kernel/workqueue.c 91525--- a/kernel/workqueue.c
90269+++ b/kernel/workqueue.c 91526+++ b/kernel/workqueue.c
90270@@ -4678,7 +4678,7 @@ static void rebind_workers(struct worker_pool *pool) 91527@@ -4678,7 +4678,7 @@ static void rebind_workers(struct worker_pool *pool)
@@ -90277,10 +91534,10 @@ index a8381cf..1ce1331 100644
90277 91534
90278 spin_unlock_irq(&pool->lock); 91535 spin_unlock_irq(&pool->lock);
90279diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug 91536diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
90280index db25707..8b16430 100644 91537index a48abea..e108def 100644
90281--- a/lib/Kconfig.debug 91538--- a/lib/Kconfig.debug
90282+++ b/lib/Kconfig.debug 91539+++ b/lib/Kconfig.debug
90283@@ -845,7 +845,7 @@ config DEBUG_MUTEXES 91540@@ -854,7 +854,7 @@ config DEBUG_MUTEXES
90284 91541
90285 config DEBUG_WW_MUTEX_SLOWPATH 91542 config DEBUG_WW_MUTEX_SLOWPATH
90286 bool "Wait/wound mutex debugging: Slowpath testing" 91543 bool "Wait/wound mutex debugging: Slowpath testing"
@@ -90289,7 +91546,7 @@ index db25707..8b16430 100644
90289 select DEBUG_LOCK_ALLOC 91546 select DEBUG_LOCK_ALLOC
90290 select DEBUG_SPINLOCK 91547 select DEBUG_SPINLOCK
90291 select DEBUG_MUTEXES 91548 select DEBUG_MUTEXES
90292@@ -858,7 +858,7 @@ config DEBUG_WW_MUTEX_SLOWPATH 91549@@ -867,7 +867,7 @@ config DEBUG_WW_MUTEX_SLOWPATH
90293 91550
90294 config DEBUG_LOCK_ALLOC 91551 config DEBUG_LOCK_ALLOC
90295 bool "Lock debugging: detect incorrect freeing of live locks" 91552 bool "Lock debugging: detect incorrect freeing of live locks"
@@ -90298,7 +91555,7 @@ index db25707..8b16430 100644
90298 select DEBUG_SPINLOCK 91555 select DEBUG_SPINLOCK
90299 select DEBUG_MUTEXES 91556 select DEBUG_MUTEXES
90300 select LOCKDEP 91557 select LOCKDEP
90301@@ -872,7 +872,7 @@ config DEBUG_LOCK_ALLOC 91558@@ -881,7 +881,7 @@ config DEBUG_LOCK_ALLOC
90302 91559
90303 config PROVE_LOCKING 91560 config PROVE_LOCKING
90304 bool "Lock debugging: prove locking correctness" 91561 bool "Lock debugging: prove locking correctness"
@@ -90307,7 +91564,7 @@ index db25707..8b16430 100644
90307 select LOCKDEP 91564 select LOCKDEP
90308 select DEBUG_SPINLOCK 91565 select DEBUG_SPINLOCK
90309 select DEBUG_MUTEXES 91566 select DEBUG_MUTEXES
90310@@ -923,7 +923,7 @@ config LOCKDEP 91567@@ -932,7 +932,7 @@ config LOCKDEP
90311 91568
90312 config LOCK_STAT 91569 config LOCK_STAT
90313 bool "Lock usage statistics" 91570 bool "Lock usage statistics"
@@ -90316,7 +91573,7 @@ index db25707..8b16430 100644
90316 select LOCKDEP 91573 select LOCKDEP
90317 select DEBUG_SPINLOCK 91574 select DEBUG_SPINLOCK
90318 select DEBUG_MUTEXES 91575 select DEBUG_MUTEXES
90319@@ -1385,6 +1385,7 @@ config LATENCYTOP 91576@@ -1394,6 +1394,7 @@ config LATENCYTOP
90320 depends on DEBUG_KERNEL 91577 depends on DEBUG_KERNEL
90321 depends on STACKTRACE_SUPPORT 91578 depends on STACKTRACE_SUPPORT
90322 depends on PROC_FS 91579 depends on PROC_FS
@@ -90324,7 +91581,7 @@ index db25707..8b16430 100644
90324 select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM_UNWIND && !ARC 91581 select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM_UNWIND && !ARC
90325 select KALLSYMS 91582 select KALLSYMS
90326 select KALLSYMS_ALL 91583 select KALLSYMS_ALL
90327@@ -1401,7 +1402,7 @@ config ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS 91584@@ -1410,7 +1411,7 @@ config ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS
90328 config DEBUG_STRICT_USER_COPY_CHECKS 91585 config DEBUG_STRICT_USER_COPY_CHECKS
90329 bool "Strict user copy size checks" 91586 bool "Strict user copy size checks"
90330 depends on ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS 91587 depends on ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS
@@ -90333,7 +91590,7 @@ index db25707..8b16430 100644
90333 help 91590 help
90334 Enabling this option turns a certain set of sanity checks for user 91591 Enabling this option turns a certain set of sanity checks for user
90335 copy operations into compile time failures. 91592 copy operations into compile time failures.
90336@@ -1520,7 +1521,7 @@ endmenu # runtime tests 91593@@ -1529,7 +1530,7 @@ endmenu # runtime tests
90337 91594
90338 config PROVIDE_OHCI1394_DMA_INIT 91595 config PROVIDE_OHCI1394_DMA_INIT
90339 bool "Remote debugging over FireWire early on boot" 91596 bool "Remote debugging over FireWire early on boot"
@@ -90342,20 +91599,11 @@ index db25707..8b16430 100644
90342 help 91599 help
90343 If you want to debug problems which hang or crash the kernel early 91600 If you want to debug problems which hang or crash the kernel early
90344 on boot and the crashing machine has a FireWire port, you can use 91601 on boot and the crashing machine has a FireWire port, you can use
90345@@ -1549,7 +1550,7 @@ config PROVIDE_OHCI1394_DMA_INIT
90346
90347 config FIREWIRE_OHCI_REMOTE_DMA
90348 bool "Remote debugging over FireWire with firewire-ohci"
90349- depends on FIREWIRE_OHCI
90350+ depends on FIREWIRE_OHCI && !GRKERNSEC
90351 help
90352 This option lets you use the FireWire bus for remote debugging
90353 with help of the firewire-ohci driver. It enables unfiltered
90354diff --git a/lib/Makefile b/lib/Makefile 91602diff --git a/lib/Makefile b/lib/Makefile
90355index 04944e9..f43eabe 100644 91603index 48140e3..de854e5 100644
90356--- a/lib/Makefile 91604--- a/lib/Makefile
90357+++ b/lib/Makefile 91605+++ b/lib/Makefile
90358@@ -50,7 +50,7 @@ obj-$(CONFIG_GENERIC_HWEIGHT) += hweight.o 91606@@ -52,7 +52,7 @@ obj-$(CONFIG_GENERIC_HWEIGHT) += hweight.o
90359 obj-$(CONFIG_BTREE) += btree.o 91607 obj-$(CONFIG_BTREE) += btree.o
90360 obj-$(CONFIG_ASSOCIATIVE_ARRAY) += assoc_array.o 91608 obj-$(CONFIG_ASSOCIATIVE_ARRAY) += assoc_array.o
90361 obj-$(CONFIG_DEBUG_PREEMPT) += smp_processor_id.o 91609 obj-$(CONFIG_DEBUG_PREEMPT) += smp_processor_id.o
@@ -90364,6 +91612,19 @@ index 04944e9..f43eabe 100644
90364 obj-$(CONFIG_DEBUG_OBJECTS) += debugobjects.o 91612 obj-$(CONFIG_DEBUG_OBJECTS) += debugobjects.o
90365 91613
90366 ifneq ($(CONFIG_HAVE_DEC_LOCK),y) 91614 ifneq ($(CONFIG_HAVE_DEC_LOCK),y)
91615diff --git a/lib/average.c b/lib/average.c
91616index 114d1be..ab0350c 100644
91617--- a/lib/average.c
91618+++ b/lib/average.c
91619@@ -55,7 +55,7 @@ struct ewma *ewma_add(struct ewma *avg, unsigned long val)
91620 {
91621 unsigned long internal = ACCESS_ONCE(avg->internal);
91622
91623- ACCESS_ONCE(avg->internal) = internal ?
91624+ ACCESS_ONCE_RW(avg->internal) = internal ?
91625 (((internal << avg->weight) - internal) +
91626 (val << avg->factor)) >> avg->weight :
91627 (val << avg->factor);
90367diff --git a/lib/bitmap.c b/lib/bitmap.c 91628diff --git a/lib/bitmap.c b/lib/bitmap.c
90368index 06f7e4f..f3cf2b0 100644 91629index 06f7e4f..f3cf2b0 100644
90369--- a/lib/bitmap.c 91630--- a/lib/bitmap.c
@@ -90475,10 +91736,10 @@ index 4382ad7..08aa558 100644
90475 u32 high = divisor >> 32; 91736 u32 high = divisor >> 32;
90476 u64 quot; 91737 u64 quot;
90477diff --git a/lib/dma-debug.c b/lib/dma-debug.c 91738diff --git a/lib/dma-debug.c b/lib/dma-debug.c
90478index d87a17a..ac0d79a 100644 91739index 98f2d7e..899da5c 100644
90479--- a/lib/dma-debug.c 91740--- a/lib/dma-debug.c
90480+++ b/lib/dma-debug.c 91741+++ b/lib/dma-debug.c
90481@@ -768,7 +768,7 @@ static int dma_debug_device_change(struct notifier_block *nb, unsigned long acti 91742@@ -971,7 +971,7 @@ static int dma_debug_device_change(struct notifier_block *nb, unsigned long acti
90482 91743
90483 void dma_debug_add_bus(struct bus_type *bus) 91744 void dma_debug_add_bus(struct bus_type *bus)
90484 { 91745 {
@@ -90487,7 +91748,7 @@ index d87a17a..ac0d79a 100644
90487 91748
90488 if (global_disable) 91749 if (global_disable)
90489 return; 91750 return;
90490@@ -945,7 +945,7 @@ static void check_unmap(struct dma_debug_entry *ref) 91751@@ -1148,7 +1148,7 @@ static void check_unmap(struct dma_debug_entry *ref)
90491 91752
90492 static void check_for_stack(struct device *dev, void *addr) 91753 static void check_for_stack(struct device *dev, void *addr)
90493 { 91754 {
@@ -90496,6 +91757,19 @@ index d87a17a..ac0d79a 100644
90496 err_printk(dev, NULL, "DMA-API: device driver maps memory from" 91757 err_printk(dev, NULL, "DMA-API: device driver maps memory from"
90497 "stack [addr=%p]\n", addr); 91758 "stack [addr=%p]\n", addr);
90498 } 91759 }
91760diff --git a/lib/hash.c b/lib/hash.c
91761index fea973f..386626f 100644
91762--- a/lib/hash.c
91763+++ b/lib/hash.c
91764@@ -14,7 +14,7 @@
91765 #include <linux/hash.h>
91766 #include <linux/cache.h>
91767
91768-static struct fast_hash_ops arch_hash_ops __read_mostly = {
91769+static struct fast_hash_ops arch_hash_ops __read_only = {
91770 .hash = jhash,
91771 .hash2 = jhash2,
91772 };
90499diff --git a/lib/inflate.c b/lib/inflate.c 91773diff --git a/lib/inflate.c b/lib/inflate.c
90500index 013a761..c28f3fc 100644 91774index 013a761..c28f3fc 100644
90501--- a/lib/inflate.c 91775--- a/lib/inflate.c
@@ -90546,10 +91820,10 @@ index bd2bea9..6b3c95e 100644
90546 return false; 91820 return false;
90547 91821
90548diff --git a/lib/kobject.c b/lib/kobject.c 91822diff --git a/lib/kobject.c b/lib/kobject.c
90549index 5b4b888..c2950f7 100644 91823index cb14aea..8c53cdb 100644
90550--- a/lib/kobject.c 91824--- a/lib/kobject.c
90551+++ b/lib/kobject.c 91825+++ b/lib/kobject.c
90552@@ -957,9 +957,9 @@ EXPORT_SYMBOL_GPL(kset_create_and_add); 91826@@ -931,9 +931,9 @@ EXPORT_SYMBOL_GPL(kset_create_and_add);
90553 91827
90554 91828
90555 static DEFINE_SPINLOCK(kobj_ns_type_lock); 91829 static DEFINE_SPINLOCK(kobj_ns_type_lock);
@@ -90783,7 +92057,7 @@ index c24c2f7..f0296f4 100644
90783+} 92057+}
90784+EXPORT_SYMBOL(pax_list_del_rcu); 92058+EXPORT_SYMBOL(pax_list_del_rcu);
90785diff --git a/lib/percpu-refcount.c b/lib/percpu-refcount.c 92059diff --git a/lib/percpu-refcount.c b/lib/percpu-refcount.c
90786index 1a53d49..ace934c 100644 92060index 963b703..438bc51 100644
90787--- a/lib/percpu-refcount.c 92061--- a/lib/percpu-refcount.c
90788+++ b/lib/percpu-refcount.c 92062+++ b/lib/percpu-refcount.c
90789@@ -29,7 +29,7 @@ 92063@@ -29,7 +29,7 @@
@@ -90796,7 +92070,7 @@ index 1a53d49..ace934c 100644
90796 /** 92070 /**
90797 * percpu_ref_init - initialize a percpu refcount 92071 * percpu_ref_init - initialize a percpu refcount
90798diff --git a/lib/radix-tree.c b/lib/radix-tree.c 92072diff --git a/lib/radix-tree.c b/lib/radix-tree.c
90799index 7811ed3..f80ca19 100644 92073index bd4a8df..9e4804f 100644
90800--- a/lib/radix-tree.c 92074--- a/lib/radix-tree.c
90801+++ b/lib/radix-tree.c 92075+++ b/lib/radix-tree.c
90802@@ -93,7 +93,7 @@ struct radix_tree_preload { 92076@@ -93,7 +93,7 @@ struct radix_tree_preload {
@@ -90809,7 +92083,7 @@ index 7811ed3..f80ca19 100644
90809 static inline void *ptr_to_indirect(void *ptr) 92083 static inline void *ptr_to_indirect(void *ptr)
90810 { 92084 {
90811diff --git a/lib/random32.c b/lib/random32.c 92085diff --git a/lib/random32.c b/lib/random32.c
90812index 1e5b2df..fb616c7 100644 92086index 6148967..009bfe8 100644
90813--- a/lib/random32.c 92087--- a/lib/random32.c
90814+++ b/lib/random32.c 92088+++ b/lib/random32.c
90815@@ -44,7 +44,7 @@ 92089@@ -44,7 +44,7 @@
@@ -90836,6 +92110,18 @@ index 65f4eff..2cfa167 100644
90836 }; 92110 };
90837 92111
90838 void rb_insert_color(struct rb_node *node, struct rb_root *root) 92112 void rb_insert_color(struct rb_node *node, struct rb_root *root)
92113diff --git a/lib/show_mem.c b/lib/show_mem.c
92114index 0922579..9d7adb9 100644
92115--- a/lib/show_mem.c
92116+++ b/lib/show_mem.c
92117@@ -44,6 +44,6 @@ void show_mem(unsigned int filter)
92118 quicklist_total_size());
92119 #endif
92120 #ifdef CONFIG_MEMORY_FAILURE
92121- printk("%lu pages hwpoisoned\n", atomic_long_read(&num_poisoned_pages));
92122+ printk("%lu pages hwpoisoned\n", atomic_long_read_unchecked(&num_poisoned_pages));
92123 #endif
92124 }
90839diff --git a/lib/strncpy_from_user.c b/lib/strncpy_from_user.c 92125diff --git a/lib/strncpy_from_user.c b/lib/strncpy_from_user.c
90840index bb2b201..46abaf9 100644 92126index bb2b201..46abaf9 100644
90841--- a/lib/strncpy_from_user.c 92127--- a/lib/strncpy_from_user.c
@@ -90863,10 +92149,10 @@ index a28df52..3d55877 100644
90863 unsigned long c; 92149 unsigned long c;
90864 92150
90865diff --git a/lib/swiotlb.c b/lib/swiotlb.c 92151diff --git a/lib/swiotlb.c b/lib/swiotlb.c
90866index e4399fa..5e8b214 100644 92152index b604b83..c0547f6 100644
90867--- a/lib/swiotlb.c 92153--- a/lib/swiotlb.c
90868+++ b/lib/swiotlb.c 92154+++ b/lib/swiotlb.c
90869@@ -668,7 +668,7 @@ EXPORT_SYMBOL(swiotlb_alloc_coherent); 92155@@ -674,7 +674,7 @@ EXPORT_SYMBOL(swiotlb_alloc_coherent);
90870 92156
90871 void 92157 void
90872 swiotlb_free_coherent(struct device *hwdev, size_t size, void *vaddr, 92158 swiotlb_free_coherent(struct device *hwdev, size_t size, void *vaddr,
@@ -90890,7 +92176,7 @@ index 4f5b1dd..7cab418 100644
90890+} 92176+}
90891+EXPORT_SYMBOL(copy_to_user_overflow); 92177+EXPORT_SYMBOL(copy_to_user_overflow);
90892diff --git a/lib/vsprintf.c b/lib/vsprintf.c 92178diff --git a/lib/vsprintf.c b/lib/vsprintf.c
90893index 10909c5..653e1b8 100644 92179index 185b6d3..823c48c 100644
90894--- a/lib/vsprintf.c 92180--- a/lib/vsprintf.c
90895+++ b/lib/vsprintf.c 92181+++ b/lib/vsprintf.c
90896@@ -16,6 +16,9 @@ 92182@@ -16,6 +16,9 @@
@@ -90903,8 +92189,8 @@ index 10909c5..653e1b8 100644
90903 #include <stdarg.h> 92189 #include <stdarg.h>
90904 #include <linux/module.h> /* for KSYM_SYMBOL_LEN */ 92190 #include <linux/module.h> /* for KSYM_SYMBOL_LEN */
90905 #include <linux/types.h> 92191 #include <linux/types.h>
90906@@ -1155,7 +1158,11 @@ char *netdev_feature_string(char *buf, char *end, const u8 *addr, 92192@@ -1179,7 +1182,11 @@ char *address_val(char *buf, char *end, const void *addr,
90907 return number(buf, end, *(const netdev_features_t *)addr, spec); 92193 return number(buf, end, num, spec);
90908 } 92194 }
90909 92195
90910+#ifdef CONFIG_GRKERNSEC_HIDESYM 92196+#ifdef CONFIG_GRKERNSEC_HIDESYM
@@ -90915,7 +92201,7 @@ index 10909c5..653e1b8 100644
90915 92201
90916 /* 92202 /*
90917 * Show a '%p' thing. A kernel extension is that the '%p' is followed 92203 * Show a '%p' thing. A kernel extension is that the '%p' is followed
90918@@ -1168,6 +1175,7 @@ int kptr_restrict __read_mostly; 92204@@ -1192,6 +1199,7 @@ int kptr_restrict __read_mostly;
90919 * - 'f' For simple symbolic function names without offset 92205 * - 'f' For simple symbolic function names without offset
90920 * - 'S' For symbolic direct pointers with offset 92206 * - 'S' For symbolic direct pointers with offset
90921 * - 's' For symbolic direct pointers without offset 92207 * - 's' For symbolic direct pointers without offset
@@ -90923,7 +92209,7 @@ index 10909c5..653e1b8 100644
90923 * - '[FfSs]R' as above with __builtin_extract_return_addr() translation 92209 * - '[FfSs]R' as above with __builtin_extract_return_addr() translation
90924 * - 'B' For backtraced symbolic direct pointers with offset 92210 * - 'B' For backtraced symbolic direct pointers with offset
90925 * - 'R' For decoded struct resource, e.g., [mem 0x0-0x1f 64bit pref] 92211 * - 'R' For decoded struct resource, e.g., [mem 0x0-0x1f 64bit pref]
90926@@ -1234,12 +1242,12 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, 92212@@ -1259,12 +1267,12 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
90927 92213
90928 if (!ptr && *fmt != 'K') { 92214 if (!ptr && *fmt != 'K') {
90929 /* 92215 /*
@@ -90938,7 +92224,7 @@ index 10909c5..653e1b8 100644
90938 } 92224 }
90939 92225
90940 switch (*fmt) { 92226 switch (*fmt) {
90941@@ -1249,6 +1257,12 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, 92227@@ -1274,6 +1282,12 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
90942 /* Fallthrough */ 92228 /* Fallthrough */
90943 case 'S': 92229 case 'S':
90944 case 's': 92230 case 's':
@@ -90951,7 +92237,7 @@ index 10909c5..653e1b8 100644
90951 case 'B': 92237 case 'B':
90952 return symbol_string(buf, end, ptr, spec, fmt); 92238 return symbol_string(buf, end, ptr, spec, fmt);
90953 case 'R': 92239 case 'R':
90954@@ -1304,6 +1318,8 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, 92240@@ -1329,6 +1343,8 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
90955 va_end(va); 92241 va_end(va);
90956 return buf; 92242 return buf;
90957 } 92243 }
@@ -90960,7 +92246,7 @@ index 10909c5..653e1b8 100644
90960 case 'K': 92246 case 'K':
90961 /* 92247 /*
90962 * %pK cannot be used in IRQ context because its test 92248 * %pK cannot be used in IRQ context because its test
90963@@ -1365,6 +1381,21 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, 92249@@ -1386,6 +1402,21 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
90964 ((const struct file *)ptr)->f_path.dentry, 92250 ((const struct file *)ptr)->f_path.dentry,
90965 spec, fmt); 92251 spec, fmt);
90966 } 92252 }
@@ -90982,7 +92268,7 @@ index 10909c5..653e1b8 100644
90982 spec.flags |= SMALL; 92268 spec.flags |= SMALL;
90983 if (spec.field_width == -1) { 92269 if (spec.field_width == -1) {
90984 spec.field_width = default_width; 92270 spec.field_width = default_width;
90985@@ -2086,11 +2117,11 @@ int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf) 92271@@ -2107,11 +2138,11 @@ int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf)
90986 typeof(type) value; \ 92272 typeof(type) value; \
90987 if (sizeof(type) == 8) { \ 92273 if (sizeof(type) == 8) { \
90988 args = PTR_ALIGN(args, sizeof(u32)); \ 92274 args = PTR_ALIGN(args, sizeof(u32)); \
@@ -90997,7 +92283,7 @@ index 10909c5..653e1b8 100644
90997 } \ 92283 } \
90998 args += sizeof(type); \ 92284 args += sizeof(type); \
90999 value; \ 92285 value; \
91000@@ -2153,7 +2184,7 @@ int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf) 92286@@ -2174,7 +2205,7 @@ int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf)
91001 case FORMAT_TYPE_STR: { 92287 case FORMAT_TYPE_STR: {
91002 const char *str_arg = args; 92288 const char *str_arg = args;
91003 args += strlen(str_arg) + 1; 92289 args += strlen(str_arg) + 1;
@@ -91014,7 +92300,7 @@ index 0000000..7cd6065
91014@@ -0,0 +1 @@ 92300@@ -0,0 +1 @@
91015+-grsec 92301+-grsec
91016diff --git a/mm/Kconfig b/mm/Kconfig 92302diff --git a/mm/Kconfig b/mm/Kconfig
91017index 723bbe0..ea624b1 100644 92303index 2888024..c15a810 100644
91018--- a/mm/Kconfig 92304--- a/mm/Kconfig
91019+++ b/mm/Kconfig 92305+++ b/mm/Kconfig
91020@@ -326,10 +326,11 @@ config KSM 92306@@ -326,10 +326,11 @@ config KSM
@@ -91042,7 +92328,7 @@ index 723bbe0..ea624b1 100644
91042 92328
91043 config NOMMU_INITIAL_TRIM_EXCESS 92329 config NOMMU_INITIAL_TRIM_EXCESS
91044diff --git a/mm/backing-dev.c b/mm/backing-dev.c 92330diff --git a/mm/backing-dev.c b/mm/backing-dev.c
91045index ce682f7..1fb54f9 100644 92331index 09d9591..165bb75 100644
91046--- a/mm/backing-dev.c 92332--- a/mm/backing-dev.c
91047+++ b/mm/backing-dev.c 92333+++ b/mm/backing-dev.c
91048@@ -12,7 +12,7 @@ 92334@@ -12,7 +12,7 @@
@@ -91054,7 +92340,7 @@ index ce682f7..1fb54f9 100644
91054 92340
91055 struct backing_dev_info default_backing_dev_info = { 92341 struct backing_dev_info default_backing_dev_info = {
91056 .name = "default", 92342 .name = "default",
91057@@ -525,7 +525,7 @@ int bdi_setup_and_register(struct backing_dev_info *bdi, char *name, 92343@@ -533,7 +533,7 @@ int bdi_setup_and_register(struct backing_dev_info *bdi, char *name,
91058 return err; 92344 return err;
91059 92345
91060 err = bdi_register(bdi, NULL, "%.28s-%ld", name, 92346 err = bdi_register(bdi, NULL, "%.28s-%ld", name,
@@ -91064,10 +92350,24 @@ index ce682f7..1fb54f9 100644
91064 bdi_destroy(bdi); 92350 bdi_destroy(bdi);
91065 return err; 92351 return err;
91066diff --git a/mm/filemap.c b/mm/filemap.c 92352diff --git a/mm/filemap.c b/mm/filemap.c
91067index b7749a9..50d1123 100644 92353index 7a13f6a..e31738b 100644
91068--- a/mm/filemap.c 92354--- a/mm/filemap.c
91069+++ b/mm/filemap.c 92355+++ b/mm/filemap.c
91070@@ -1768,7 +1768,7 @@ int generic_file_mmap(struct file * file, struct vm_area_struct * vma) 92356@@ -192,9 +192,11 @@ static int filemap_check_errors(struct address_space *mapping)
92357 {
92358 int ret = 0;
92359 /* Check for outstanding write errors */
92360- if (test_and_clear_bit(AS_ENOSPC, &mapping->flags))
92361+ if (test_bit(AS_ENOSPC, &mapping->flags) &&
92362+ test_and_clear_bit(AS_ENOSPC, &mapping->flags))
92363 ret = -ENOSPC;
92364- if (test_and_clear_bit(AS_EIO, &mapping->flags))
92365+ if (test_bit(AS_EIO, &mapping->flags) &&
92366+ test_and_clear_bit(AS_EIO, &mapping->flags))
92367 ret = -EIO;
92368 return ret;
92369 }
92370@@ -1766,7 +1768,7 @@ int generic_file_mmap(struct file * file, struct vm_area_struct * vma)
91071 struct address_space *mapping = file->f_mapping; 92371 struct address_space *mapping = file->f_mapping;
91072 92372
91073 if (!mapping->a_ops->readpage) 92373 if (!mapping->a_ops->readpage)
@@ -91076,7 +92376,7 @@ index b7749a9..50d1123 100644
91076 file_accessed(file); 92376 file_accessed(file);
91077 vma->vm_ops = &generic_file_vm_ops; 92377 vma->vm_ops = &generic_file_vm_ops;
91078 return 0; 92378 return 0;
91079@@ -1950,7 +1950,7 @@ static size_t __iovec_copy_from_user_inatomic(char *vaddr, 92379@@ -1948,7 +1950,7 @@ static size_t __iovec_copy_from_user_inatomic(char *vaddr,
91080 92380
91081 while (bytes) { 92381 while (bytes) {
91082 char __user *buf = iov->iov_base + base; 92382 char __user *buf = iov->iov_base + base;
@@ -91085,7 +92385,7 @@ index b7749a9..50d1123 100644
91085 92385
91086 base = 0; 92386 base = 0;
91087 left = __copy_from_user_inatomic(vaddr, buf, copy); 92387 left = __copy_from_user_inatomic(vaddr, buf, copy);
91088@@ -1979,7 +1979,7 @@ size_t iov_iter_copy_from_user_atomic(struct page *page, 92388@@ -1977,7 +1979,7 @@ size_t iov_iter_copy_from_user_atomic(struct page *page,
91089 BUG_ON(!in_atomic()); 92389 BUG_ON(!in_atomic());
91090 kaddr = kmap_atomic(page); 92390 kaddr = kmap_atomic(page);
91091 if (likely(i->nr_segs == 1)) { 92391 if (likely(i->nr_segs == 1)) {
@@ -91094,7 +92394,7 @@ index b7749a9..50d1123 100644
91094 char __user *buf = i->iov->iov_base + i->iov_offset; 92394 char __user *buf = i->iov->iov_base + i->iov_offset;
91095 left = __copy_from_user_inatomic(kaddr + offset, buf, bytes); 92395 left = __copy_from_user_inatomic(kaddr + offset, buf, bytes);
91096 copied = bytes - left; 92396 copied = bytes - left;
91097@@ -2007,7 +2007,7 @@ size_t iov_iter_copy_from_user(struct page *page, 92397@@ -2005,7 +2007,7 @@ size_t iov_iter_copy_from_user(struct page *page,
91098 92398
91099 kaddr = kmap(page); 92399 kaddr = kmap(page);
91100 if (likely(i->nr_segs == 1)) { 92400 if (likely(i->nr_segs == 1)) {
@@ -91103,7 +92403,7 @@ index b7749a9..50d1123 100644
91103 char __user *buf = i->iov->iov_base + i->iov_offset; 92403 char __user *buf = i->iov->iov_base + i->iov_offset;
91104 left = __copy_from_user(kaddr + offset, buf, bytes); 92404 left = __copy_from_user(kaddr + offset, buf, bytes);
91105 copied = bytes - left; 92405 copied = bytes - left;
91106@@ -2037,7 +2037,7 @@ void iov_iter_advance(struct iov_iter *i, size_t bytes) 92406@@ -2035,7 +2037,7 @@ void iov_iter_advance(struct iov_iter *i, size_t bytes)
91107 * zero-length segments (without overruning the iovec). 92407 * zero-length segments (without overruning the iovec).
91108 */ 92408 */
91109 while (bytes || unlikely(i->count && !iov->iov_len)) { 92409 while (bytes || unlikely(i->count && !iov->iov_len)) {
@@ -91112,7 +92412,7 @@ index b7749a9..50d1123 100644
91112 92412
91113 copy = min(bytes, iov->iov_len - base); 92413 copy = min(bytes, iov->iov_len - base);
91114 BUG_ON(!i->count || i->count < copy); 92414 BUG_ON(!i->count || i->count < copy);
91115@@ -2108,6 +2108,7 @@ inline int generic_write_checks(struct file *file, loff_t *pos, size_t *count, i 92415@@ -2106,6 +2108,7 @@ inline int generic_write_checks(struct file *file, loff_t *pos, size_t *count, i
91116 *pos = i_size_read(inode); 92416 *pos = i_size_read(inode);
91117 92417
91118 if (limit != RLIM_INFINITY) { 92418 if (limit != RLIM_INFINITY) {
@@ -91121,10 +92421,10 @@ index b7749a9..50d1123 100644
91121 send_sig(SIGXFSZ, current, 0); 92421 send_sig(SIGXFSZ, current, 0);
91122 return -EFBIG; 92422 return -EFBIG;
91123diff --git a/mm/fremap.c b/mm/fremap.c 92423diff --git a/mm/fremap.c b/mm/fremap.c
91124index bbc4d66..117b798 100644 92424index 34feba6..315fe78 100644
91125--- a/mm/fremap.c 92425--- a/mm/fremap.c
91126+++ b/mm/fremap.c 92426+++ b/mm/fremap.c
91127@@ -163,6 +163,11 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size, 92427@@ -179,6 +179,11 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
91128 retry: 92428 retry:
91129 vma = find_vma(mm, start); 92429 vma = find_vma(mm, start);
91130 92430
@@ -91165,10 +92465,10 @@ index b32b70c..e512eb0 100644
91165 set_page_address(page, (void *)vaddr); 92465 set_page_address(page, (void *)vaddr);
91166 92466
91167diff --git a/mm/hugetlb.c b/mm/hugetlb.c 92467diff --git a/mm/hugetlb.c b/mm/hugetlb.c
91168index dee6cf4..52b94f7 100644 92468index 06a9bc0..cfbba83 100644
91169--- a/mm/hugetlb.c 92469--- a/mm/hugetlb.c
91170+++ b/mm/hugetlb.c 92470+++ b/mm/hugetlb.c
91171@@ -2077,15 +2077,17 @@ static int hugetlb_sysctl_handler_common(bool obey_mempolicy, 92471@@ -2070,15 +2070,17 @@ static int hugetlb_sysctl_handler_common(bool obey_mempolicy,
91172 struct hstate *h = &default_hstate; 92472 struct hstate *h = &default_hstate;
91173 unsigned long tmp; 92473 unsigned long tmp;
91174 int ret; 92474 int ret;
@@ -91189,7 +92489,7 @@ index dee6cf4..52b94f7 100644
91189 if (ret) 92489 if (ret)
91190 goto out; 92490 goto out;
91191 92491
91192@@ -2130,15 +2132,17 @@ int hugetlb_overcommit_handler(struct ctl_table *table, int write, 92492@@ -2123,15 +2125,17 @@ int hugetlb_overcommit_handler(struct ctl_table *table, int write,
91193 struct hstate *h = &default_hstate; 92493 struct hstate *h = &default_hstate;
91194 unsigned long tmp; 92494 unsigned long tmp;
91195 int ret; 92495 int ret;
@@ -91210,7 +92510,7 @@ index dee6cf4..52b94f7 100644
91210 if (ret) 92510 if (ret)
91211 goto out; 92511 goto out;
91212 92512
91213@@ -2596,6 +2600,27 @@ static int unmap_ref_private(struct mm_struct *mm, struct vm_area_struct *vma, 92513@@ -2600,6 +2604,27 @@ static int unmap_ref_private(struct mm_struct *mm, struct vm_area_struct *vma,
91214 return 1; 92514 return 1;
91215 } 92515 }
91216 92516
@@ -91238,7 +92538,7 @@ index dee6cf4..52b94f7 100644
91238 /* 92538 /*
91239 * Hugetlb_cow() should be called with page lock of the original hugepage held. 92539 * Hugetlb_cow() should be called with page lock of the original hugepage held.
91240 * Called with hugetlb_instantiation_mutex held and pte_page locked so we 92540 * Called with hugetlb_instantiation_mutex held and pte_page locked so we
91241@@ -2712,6 +2737,11 @@ retry_avoidcopy: 92541@@ -2716,6 +2741,11 @@ retry_avoidcopy:
91242 make_huge_pte(vma, new_page, 1)); 92542 make_huge_pte(vma, new_page, 1));
91243 page_remove_rmap(old_page); 92543 page_remove_rmap(old_page);
91244 hugepage_add_new_anon_rmap(new_page, vma, address); 92544 hugepage_add_new_anon_rmap(new_page, vma, address);
@@ -91250,7 +92550,7 @@ index dee6cf4..52b94f7 100644
91250 /* Make the old page be freed below */ 92550 /* Make the old page be freed below */
91251 new_page = old_page; 92551 new_page = old_page;
91252 } 92552 }
91253@@ -2876,6 +2906,10 @@ retry: 92553@@ -2880,6 +2910,10 @@ retry:
91254 && (vma->vm_flags & VM_SHARED))); 92554 && (vma->vm_flags & VM_SHARED)));
91255 set_huge_pte_at(mm, address, ptep, new_pte); 92555 set_huge_pte_at(mm, address, ptep, new_pte);
91256 92556
@@ -91261,7 +92561,7 @@ index dee6cf4..52b94f7 100644
91261 if ((flags & FAULT_FLAG_WRITE) && !(vma->vm_flags & VM_SHARED)) { 92561 if ((flags & FAULT_FLAG_WRITE) && !(vma->vm_flags & VM_SHARED)) {
91262 /* Optimization, do the COW without a second fault */ 92562 /* Optimization, do the COW without a second fault */
91263 ret = hugetlb_cow(mm, vma, address, ptep, new_pte, page, ptl); 92563 ret = hugetlb_cow(mm, vma, address, ptep, new_pte, page, ptl);
91264@@ -2906,6 +2940,10 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma, 92564@@ -2910,6 +2944,10 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
91265 static DEFINE_MUTEX(hugetlb_instantiation_mutex); 92565 static DEFINE_MUTEX(hugetlb_instantiation_mutex);
91266 struct hstate *h = hstate_vma(vma); 92566 struct hstate *h = hstate_vma(vma);
91267 92567
@@ -91272,7 +92572,7 @@ index dee6cf4..52b94f7 100644
91272 address &= huge_page_mask(h); 92572 address &= huge_page_mask(h);
91273 92573
91274 ptep = huge_pte_offset(mm, address); 92574 ptep = huge_pte_offset(mm, address);
91275@@ -2919,6 +2957,26 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma, 92575@@ -2923,6 +2961,26 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
91276 VM_FAULT_SET_HINDEX(hstate_index(h)); 92576 VM_FAULT_SET_HINDEX(hstate_index(h));
91277 } 92577 }
91278 92578
@@ -91300,10 +92600,10 @@ index dee6cf4..52b94f7 100644
91300 if (!ptep) 92600 if (!ptep)
91301 return VM_FAULT_OOM; 92601 return VM_FAULT_OOM;
91302diff --git a/mm/internal.h b/mm/internal.h 92602diff --git a/mm/internal.h b/mm/internal.h
91303index 8b6cfd6..ec809a6 100644 92603index 3e91000..4741a60 100644
91304--- a/mm/internal.h 92604--- a/mm/internal.h
91305+++ b/mm/internal.h 92605+++ b/mm/internal.h
91306@@ -96,6 +96,7 @@ extern pmd_t *mm_find_pmd(struct mm_struct *mm, unsigned long address); 92606@@ -94,6 +94,7 @@ extern pmd_t *mm_find_pmd(struct mm_struct *mm, unsigned long address);
91307 * in mm/page_alloc.c 92607 * in mm/page_alloc.c
91308 */ 92608 */
91309 extern void __free_pages_bootmem(struct page *page, unsigned int order); 92609 extern void __free_pages_bootmem(struct page *page, unsigned int order);
@@ -91311,7 +92611,7 @@ index 8b6cfd6..ec809a6 100644
91311 extern void prep_compound_page(struct page *page, unsigned long order); 92611 extern void prep_compound_page(struct page *page, unsigned long order);
91312 #ifdef CONFIG_MEMORY_FAILURE 92612 #ifdef CONFIG_MEMORY_FAILURE
91313 extern bool is_free_buddy_page(struct page *page); 92613 extern bool is_free_buddy_page(struct page *page);
91314@@ -351,7 +352,7 @@ extern u32 hwpoison_filter_enable; 92614@@ -352,7 +353,7 @@ extern u32 hwpoison_filter_enable;
91315 92615
91316 extern unsigned long vm_mmap_pgoff(struct file *, unsigned long, 92616 extern unsigned long vm_mmap_pgoff(struct file *, unsigned long,
91317 unsigned long, unsigned long, 92617 unsigned long, unsigned long,
@@ -91445,7 +92745,7 @@ index 539eeb9..e24a987 100644
91445 if (end == start) 92745 if (end == start)
91446 return error; 92746 return error;
91447diff --git a/mm/memory-failure.c b/mm/memory-failure.c 92747diff --git a/mm/memory-failure.c b/mm/memory-failure.c
91448index 90977ac..487ab84 100644 92748index 90002ea..db1452d 100644
91449--- a/mm/memory-failure.c 92749--- a/mm/memory-failure.c
91450+++ b/mm/memory-failure.c 92750+++ b/mm/memory-failure.c
91451@@ -61,7 +61,7 @@ int sysctl_memory_failure_early_kill __read_mostly = 0; 92751@@ -61,7 +61,7 @@ int sysctl_memory_failure_early_kill __read_mostly = 0;
@@ -91543,7 +92843,7 @@ index 90977ac..487ab84 100644
91543 return 0; 92843 return 0;
91544 } 92844 }
91545 92845
91546@@ -1610,7 +1610,7 @@ static int __soft_offline_page(struct page *page, int flags) 92846@@ -1616,7 +1616,7 @@ static int __soft_offline_page(struct page *page, int flags)
91547 if (!is_free_buddy_page(page)) 92847 if (!is_free_buddy_page(page))
91548 pr_info("soft offline: %#lx: page leaked\n", 92848 pr_info("soft offline: %#lx: page leaked\n",
91549 pfn); 92849 pfn);
@@ -91552,7 +92852,7 @@ index 90977ac..487ab84 100644
91552 } 92852 }
91553 } else { 92853 } else {
91554 pr_info("soft offline: %#lx: isolation failed: %d, page count %d, type %lx\n", 92854 pr_info("soft offline: %#lx: isolation failed: %d, page count %d, type %lx\n",
91555@@ -1684,11 +1684,11 @@ int soft_offline_page(struct page *page, int flags) 92855@@ -1690,11 +1690,11 @@ int soft_offline_page(struct page *page, int flags)
91556 if (PageHuge(page)) { 92856 if (PageHuge(page)) {
91557 set_page_hwpoison_huge_page(hpage); 92857 set_page_hwpoison_huge_page(hpage);
91558 dequeue_hwpoisoned_huge_page(hpage); 92858 dequeue_hwpoisoned_huge_page(hpage);
@@ -91567,10 +92867,10 @@ index 90977ac..487ab84 100644
91567 } 92867 }
91568 unset_migratetype_isolate(page, MIGRATE_MOVABLE); 92868 unset_migratetype_isolate(page, MIGRATE_MOVABLE);
91569diff --git a/mm/memory.c b/mm/memory.c 92869diff --git a/mm/memory.c b/mm/memory.c
91570index dda27b9..c56b9d6 100644 92870index 22dfa61..90d7ec5 100644
91571--- a/mm/memory.c 92871--- a/mm/memory.c
91572+++ b/mm/memory.c 92872+++ b/mm/memory.c
91573@@ -402,6 +402,7 @@ static inline void free_pmd_range(struct mmu_gather *tlb, pud_t *pud, 92873@@ -403,6 +403,7 @@ static inline void free_pmd_range(struct mmu_gather *tlb, pud_t *pud,
91574 free_pte_range(tlb, pmd, addr); 92874 free_pte_range(tlb, pmd, addr);
91575 } while (pmd++, addr = next, addr != end); 92875 } while (pmd++, addr = next, addr != end);
91576 92876
@@ -91578,7 +92878,7 @@ index dda27b9..c56b9d6 100644
91578 start &= PUD_MASK; 92878 start &= PUD_MASK;
91579 if (start < floor) 92879 if (start < floor)
91580 return; 92880 return;
91581@@ -416,6 +417,8 @@ static inline void free_pmd_range(struct mmu_gather *tlb, pud_t *pud, 92881@@ -417,6 +418,8 @@ static inline void free_pmd_range(struct mmu_gather *tlb, pud_t *pud,
91582 pmd = pmd_offset(pud, start); 92882 pmd = pmd_offset(pud, start);
91583 pud_clear(pud); 92883 pud_clear(pud);
91584 pmd_free_tlb(tlb, pmd, start); 92884 pmd_free_tlb(tlb, pmd, start);
@@ -91587,7 +92887,7 @@ index dda27b9..c56b9d6 100644
91587 } 92887 }
91588 92888
91589 static inline void free_pud_range(struct mmu_gather *tlb, pgd_t *pgd, 92889 static inline void free_pud_range(struct mmu_gather *tlb, pgd_t *pgd,
91590@@ -435,6 +438,7 @@ static inline void free_pud_range(struct mmu_gather *tlb, pgd_t *pgd, 92890@@ -436,6 +439,7 @@ static inline void free_pud_range(struct mmu_gather *tlb, pgd_t *pgd,
91591 free_pmd_range(tlb, pud, addr, next, floor, ceiling); 92891 free_pmd_range(tlb, pud, addr, next, floor, ceiling);
91592 } while (pud++, addr = next, addr != end); 92892 } while (pud++, addr = next, addr != end);
91593 92893
@@ -91595,7 +92895,7 @@ index dda27b9..c56b9d6 100644
91595 start &= PGDIR_MASK; 92895 start &= PGDIR_MASK;
91596 if (start < floor) 92896 if (start < floor)
91597 return; 92897 return;
91598@@ -449,6 +453,8 @@ static inline void free_pud_range(struct mmu_gather *tlb, pgd_t *pgd, 92898@@ -450,6 +454,8 @@ static inline void free_pud_range(struct mmu_gather *tlb, pgd_t *pgd,
91599 pud = pud_offset(pgd, start); 92899 pud = pud_offset(pgd, start);
91600 pgd_clear(pgd); 92900 pgd_clear(pgd);
91601 pud_free_tlb(tlb, pud, start); 92901 pud_free_tlb(tlb, pud, start);
@@ -91604,7 +92904,7 @@ index dda27b9..c56b9d6 100644
91604 } 92904 }
91605 92905
91606 /* 92906 /*
91607@@ -1635,12 +1641,6 @@ no_page_table: 92907@@ -1636,12 +1642,6 @@ no_page_table:
91608 return page; 92908 return page;
91609 } 92909 }
91610 92910
@@ -91617,7 +92917,7 @@ index dda27b9..c56b9d6 100644
91617 /** 92917 /**
91618 * __get_user_pages() - pin user pages in memory 92918 * __get_user_pages() - pin user pages in memory
91619 * @tsk: task_struct of target task 92919 * @tsk: task_struct of target task
91620@@ -1727,10 +1727,10 @@ long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm, 92920@@ -1728,10 +1728,10 @@ long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
91621 92921
91622 i = 0; 92922 i = 0;
91623 92923
@@ -91630,7 +92930,7 @@ index dda27b9..c56b9d6 100644
91630 if (!vma && in_gate_area(mm, start)) { 92930 if (!vma && in_gate_area(mm, start)) {
91631 unsigned long pg = start & PAGE_MASK; 92931 unsigned long pg = start & PAGE_MASK;
91632 pgd_t *pgd; 92932 pgd_t *pgd;
91633@@ -1779,7 +1779,7 @@ long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm, 92933@@ -1780,7 +1780,7 @@ long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
91634 goto next_page; 92934 goto next_page;
91635 } 92935 }
91636 92936
@@ -91639,7 +92939,7 @@ index dda27b9..c56b9d6 100644
91639 (vma->vm_flags & (VM_IO | VM_PFNMAP)) || 92939 (vma->vm_flags & (VM_IO | VM_PFNMAP)) ||
91640 !(vm_flags & vma->vm_flags)) 92940 !(vm_flags & vma->vm_flags))
91641 return i ? : -EFAULT; 92941 return i ? : -EFAULT;
91642@@ -1808,11 +1808,6 @@ long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm, 92942@@ -1809,11 +1809,6 @@ long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
91643 int ret; 92943 int ret;
91644 unsigned int fault_flags = 0; 92944 unsigned int fault_flags = 0;
91645 92945
@@ -91651,7 +92951,7 @@ index dda27b9..c56b9d6 100644
91651 if (foll_flags & FOLL_WRITE) 92951 if (foll_flags & FOLL_WRITE)
91652 fault_flags |= FAULT_FLAG_WRITE; 92952 fault_flags |= FAULT_FLAG_WRITE;
91653 if (nonblocking) 92953 if (nonblocking)
91654@@ -1892,7 +1887,7 @@ next_page: 92954@@ -1893,7 +1888,7 @@ next_page:
91655 start += page_increm * PAGE_SIZE; 92955 start += page_increm * PAGE_SIZE;
91656 nr_pages -= page_increm; 92956 nr_pages -= page_increm;
91657 } while (nr_pages && start < vma->vm_end); 92957 } while (nr_pages && start < vma->vm_end);
@@ -91660,7 +92960,25 @@ index dda27b9..c56b9d6 100644
91660 return i; 92960 return i;
91661 } 92961 }
91662 EXPORT_SYMBOL(__get_user_pages); 92962 EXPORT_SYMBOL(__get_user_pages);
91663@@ -2099,6 +2094,10 @@ static int insert_page(struct vm_area_struct *vma, unsigned long addr, 92963@@ -1929,12 +1924,17 @@ int fixup_user_fault(struct task_struct *tsk, struct mm_struct *mm,
92964 unsigned long address, unsigned int fault_flags)
92965 {
92966 struct vm_area_struct *vma;
92967+ vm_flags_t vm_flags;
92968 int ret;
92969
92970 vma = find_extend_vma(mm, address);
92971 if (!vma || address < vma->vm_start)
92972 return -EFAULT;
92973
92974+ vm_flags = (fault_flags & FAULT_FLAG_WRITE) ? VM_WRITE : VM_READ;
92975+ if (!(vm_flags & vma->vm_flags))
92976+ return -EFAULT;
92977+
92978 ret = handle_mm_fault(mm, vma, address, fault_flags);
92979 if (ret & VM_FAULT_ERROR) {
92980 if (ret & VM_FAULT_OOM)
92981@@ -2100,6 +2100,10 @@ static int insert_page(struct vm_area_struct *vma, unsigned long addr,
91664 page_add_file_rmap(page); 92982 page_add_file_rmap(page);
91665 set_pte_at(mm, addr, pte, mk_pte(page, prot)); 92983 set_pte_at(mm, addr, pte, mk_pte(page, prot));
91666 92984
@@ -91671,7 +92989,7 @@ index dda27b9..c56b9d6 100644
91671 retval = 0; 92989 retval = 0;
91672 pte_unmap_unlock(pte, ptl); 92990 pte_unmap_unlock(pte, ptl);
91673 return retval; 92991 return retval;
91674@@ -2143,9 +2142,21 @@ int vm_insert_page(struct vm_area_struct *vma, unsigned long addr, 92992@@ -2144,9 +2148,21 @@ int vm_insert_page(struct vm_area_struct *vma, unsigned long addr,
91675 if (!page_count(page)) 92993 if (!page_count(page))
91676 return -EINVAL; 92994 return -EINVAL;
91677 if (!(vma->vm_flags & VM_MIXEDMAP)) { 92995 if (!(vma->vm_flags & VM_MIXEDMAP)) {
@@ -91693,7 +93011,7 @@ index dda27b9..c56b9d6 100644
91693 } 93011 }
91694 return insert_page(vma, addr, page, vma->vm_page_prot); 93012 return insert_page(vma, addr, page, vma->vm_page_prot);
91695 } 93013 }
91696@@ -2228,6 +2239,7 @@ int vm_insert_mixed(struct vm_area_struct *vma, unsigned long addr, 93014@@ -2229,6 +2245,7 @@ int vm_insert_mixed(struct vm_area_struct *vma, unsigned long addr,
91697 unsigned long pfn) 93015 unsigned long pfn)
91698 { 93016 {
91699 BUG_ON(!(vma->vm_flags & VM_MIXEDMAP)); 93017 BUG_ON(!(vma->vm_flags & VM_MIXEDMAP));
@@ -91701,7 +93019,7 @@ index dda27b9..c56b9d6 100644
91701 93019
91702 if (addr < vma->vm_start || addr >= vma->vm_end) 93020 if (addr < vma->vm_start || addr >= vma->vm_end)
91703 return -EFAULT; 93021 return -EFAULT;
91704@@ -2475,7 +2487,9 @@ static int apply_to_pmd_range(struct mm_struct *mm, pud_t *pud, 93022@@ -2476,7 +2493,9 @@ static int apply_to_pmd_range(struct mm_struct *mm, pud_t *pud,
91705 93023
91706 BUG_ON(pud_huge(*pud)); 93024 BUG_ON(pud_huge(*pud));
91707 93025
@@ -91712,7 +93030,7 @@ index dda27b9..c56b9d6 100644
91712 if (!pmd) 93030 if (!pmd)
91713 return -ENOMEM; 93031 return -ENOMEM;
91714 do { 93032 do {
91715@@ -2495,7 +2509,9 @@ static int apply_to_pud_range(struct mm_struct *mm, pgd_t *pgd, 93033@@ -2496,7 +2515,9 @@ static int apply_to_pud_range(struct mm_struct *mm, pgd_t *pgd,
91716 unsigned long next; 93034 unsigned long next;
91717 int err; 93035 int err;
91718 93036
@@ -91723,7 +93041,7 @@ index dda27b9..c56b9d6 100644
91723 if (!pud) 93041 if (!pud)
91724 return -ENOMEM; 93042 return -ENOMEM;
91725 do { 93043 do {
91726@@ -2583,6 +2599,186 @@ static inline void cow_user_page(struct page *dst, struct page *src, unsigned lo 93044@@ -2586,6 +2607,186 @@ static inline void cow_user_page(struct page *dst, struct page *src, unsigned lo
91727 copy_user_highpage(dst, src, va, vma); 93045 copy_user_highpage(dst, src, va, vma);
91728 } 93046 }
91729 93047
@@ -91910,7 +93228,7 @@ index dda27b9..c56b9d6 100644
91910 /* 93228 /*
91911 * This routine handles present pages, when users try to write 93229 * This routine handles present pages, when users try to write
91912 * to a shared page. It is done by copying the page to a new address 93230 * to a shared page. It is done by copying the page to a new address
91913@@ -2807,6 +3003,12 @@ gotten: 93231@@ -2810,6 +3011,12 @@ gotten:
91914 */ 93232 */
91915 page_table = pte_offset_map_lock(mm, pmd, address, &ptl); 93233 page_table = pte_offset_map_lock(mm, pmd, address, &ptl);
91916 if (likely(pte_same(*page_table, orig_pte))) { 93234 if (likely(pte_same(*page_table, orig_pte))) {
@@ -91923,7 +93241,7 @@ index dda27b9..c56b9d6 100644
91923 if (old_page) { 93241 if (old_page) {
91924 if (!PageAnon(old_page)) { 93242 if (!PageAnon(old_page)) {
91925 dec_mm_counter_fast(mm, MM_FILEPAGES); 93243 dec_mm_counter_fast(mm, MM_FILEPAGES);
91926@@ -2858,6 +3060,10 @@ gotten: 93244@@ -2861,6 +3068,10 @@ gotten:
91927 page_remove_rmap(old_page); 93245 page_remove_rmap(old_page);
91928 } 93246 }
91929 93247
@@ -91934,7 +93252,7 @@ index dda27b9..c56b9d6 100644
91934 /* Free the old page.. */ 93252 /* Free the old page.. */
91935 new_page = old_page; 93253 new_page = old_page;
91936 ret |= VM_FAULT_WRITE; 93254 ret |= VM_FAULT_WRITE;
91937@@ -3135,6 +3341,11 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma, 93255@@ -3138,6 +3349,11 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma,
91938 swap_free(entry); 93256 swap_free(entry);
91939 if (vm_swap_full() || (vma->vm_flags & VM_LOCKED) || PageMlocked(page)) 93257 if (vm_swap_full() || (vma->vm_flags & VM_LOCKED) || PageMlocked(page))
91940 try_to_free_swap(page); 93258 try_to_free_swap(page);
@@ -91946,7 +93264,7 @@ index dda27b9..c56b9d6 100644
91946 unlock_page(page); 93264 unlock_page(page);
91947 if (page != swapcache) { 93265 if (page != swapcache) {
91948 /* 93266 /*
91949@@ -3158,6 +3369,11 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma, 93267@@ -3161,6 +3377,11 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma,
91950 93268
91951 /* No need to invalidate - it was non-present before */ 93269 /* No need to invalidate - it was non-present before */
91952 update_mmu_cache(vma, address, page_table); 93270 update_mmu_cache(vma, address, page_table);
@@ -91958,7 +93276,7 @@ index dda27b9..c56b9d6 100644
91958 unlock: 93276 unlock:
91959 pte_unmap_unlock(page_table, ptl); 93277 pte_unmap_unlock(page_table, ptl);
91960 out: 93278 out:
91961@@ -3177,40 +3393,6 @@ out_release: 93279@@ -3180,40 +3401,6 @@ out_release:
91962 } 93280 }
91963 93281
91964 /* 93282 /*
@@ -91999,7 +93317,7 @@ index dda27b9..c56b9d6 100644
91999 * We enter with non-exclusive mmap_sem (to exclude vma changes, 93317 * We enter with non-exclusive mmap_sem (to exclude vma changes,
92000 * but allow concurrent faults), and pte mapped but not yet locked. 93318 * but allow concurrent faults), and pte mapped but not yet locked.
92001 * We return with mmap_sem still held, but pte unmapped and unlocked. 93319 * We return with mmap_sem still held, but pte unmapped and unlocked.
92002@@ -3219,27 +3401,23 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma, 93320@@ -3222,27 +3409,23 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma,
92003 unsigned long address, pte_t *page_table, pmd_t *pmd, 93321 unsigned long address, pte_t *page_table, pmd_t *pmd,
92004 unsigned int flags) 93322 unsigned int flags)
92005 { 93323 {
@@ -92032,7 +93350,7 @@ index dda27b9..c56b9d6 100644
92032 if (unlikely(anon_vma_prepare(vma))) 93350 if (unlikely(anon_vma_prepare(vma)))
92033 goto oom; 93351 goto oom;
92034 page = alloc_zeroed_user_highpage_movable(vma, address); 93352 page = alloc_zeroed_user_highpage_movable(vma, address);
92035@@ -3263,6 +3441,11 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma, 93353@@ -3266,6 +3449,11 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma,
92036 if (!pte_none(*page_table)) 93354 if (!pte_none(*page_table))
92037 goto release; 93355 goto release;
92038 93356
@@ -92044,7 +93362,7 @@ index dda27b9..c56b9d6 100644
92044 inc_mm_counter_fast(mm, MM_ANONPAGES); 93362 inc_mm_counter_fast(mm, MM_ANONPAGES);
92045 page_add_new_anon_rmap(page, vma, address); 93363 page_add_new_anon_rmap(page, vma, address);
92046 setpte: 93364 setpte:
92047@@ -3270,6 +3453,12 @@ setpte: 93365@@ -3273,6 +3461,12 @@ setpte:
92048 93366
92049 /* No need to invalidate - it was non-present before */ 93367 /* No need to invalidate - it was non-present before */
92050 update_mmu_cache(vma, address, page_table); 93368 update_mmu_cache(vma, address, page_table);
@@ -92057,7 +93375,7 @@ index dda27b9..c56b9d6 100644
92057 unlock: 93375 unlock:
92058 pte_unmap_unlock(page_table, ptl); 93376 pte_unmap_unlock(page_table, ptl);
92059 return 0; 93377 return 0;
92060@@ -3413,6 +3602,12 @@ static int __do_fault(struct mm_struct *mm, struct vm_area_struct *vma, 93378@@ -3417,6 +3611,12 @@ static int __do_fault(struct mm_struct *mm, struct vm_area_struct *vma,
92061 */ 93379 */
92062 /* Only go through if we didn't race with anybody else... */ 93380 /* Only go through if we didn't race with anybody else... */
92063 if (likely(pte_same(*page_table, orig_pte))) { 93381 if (likely(pte_same(*page_table, orig_pte))) {
@@ -92070,7 +93388,7 @@ index dda27b9..c56b9d6 100644
92070 flush_icache_page(vma, page); 93388 flush_icache_page(vma, page);
92071 entry = mk_pte(page, vma->vm_page_prot); 93389 entry = mk_pte(page, vma->vm_page_prot);
92072 if (flags & FAULT_FLAG_WRITE) 93390 if (flags & FAULT_FLAG_WRITE)
92073@@ -3434,6 +3629,14 @@ static int __do_fault(struct mm_struct *mm, struct vm_area_struct *vma, 93391@@ -3438,6 +3638,14 @@ static int __do_fault(struct mm_struct *mm, struct vm_area_struct *vma,
92074 93392
92075 /* no need to invalidate: a not-present page won't be cached */ 93393 /* no need to invalidate: a not-present page won't be cached */
92076 update_mmu_cache(vma, address, page_table); 93394 update_mmu_cache(vma, address, page_table);
@@ -92085,7 +93403,7 @@ index dda27b9..c56b9d6 100644
92085 } else { 93403 } else {
92086 if (cow_page) 93404 if (cow_page)
92087 mem_cgroup_uncharge_page(cow_page); 93405 mem_cgroup_uncharge_page(cow_page);
92088@@ -3681,6 +3884,12 @@ static int handle_pte_fault(struct mm_struct *mm, 93406@@ -3685,6 +3893,12 @@ static int handle_pte_fault(struct mm_struct *mm,
92089 if (flags & FAULT_FLAG_WRITE) 93407 if (flags & FAULT_FLAG_WRITE)
92090 flush_tlb_fix_spurious_fault(vma, address); 93408 flush_tlb_fix_spurious_fault(vma, address);
92091 } 93409 }
@@ -92098,7 +93416,7 @@ index dda27b9..c56b9d6 100644
92098 unlock: 93416 unlock:
92099 pte_unmap_unlock(pte, ptl); 93417 pte_unmap_unlock(pte, ptl);
92100 return 0; 93418 return 0;
92101@@ -3697,9 +3906,41 @@ static int __handle_mm_fault(struct mm_struct *mm, struct vm_area_struct *vma, 93419@@ -3701,9 +3915,41 @@ static int __handle_mm_fault(struct mm_struct *mm, struct vm_area_struct *vma,
92102 pmd_t *pmd; 93420 pmd_t *pmd;
92103 pte_t *pte; 93421 pte_t *pte;
92104 93422
@@ -92140,7 +93458,7 @@ index dda27b9..c56b9d6 100644
92140 pgd = pgd_offset(mm, address); 93458 pgd = pgd_offset(mm, address);
92141 pud = pud_alloc(mm, pgd, address); 93459 pud = pud_alloc(mm, pgd, address);
92142 if (!pud) 93460 if (!pud)
92143@@ -3830,6 +4071,23 @@ int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address) 93461@@ -3834,6 +4080,23 @@ int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address)
92144 spin_unlock(&mm->page_table_lock); 93462 spin_unlock(&mm->page_table_lock);
92145 return 0; 93463 return 0;
92146 } 93464 }
@@ -92164,7 +93482,7 @@ index dda27b9..c56b9d6 100644
92164 #endif /* __PAGETABLE_PUD_FOLDED */ 93482 #endif /* __PAGETABLE_PUD_FOLDED */
92165 93483
92166 #ifndef __PAGETABLE_PMD_FOLDED 93484 #ifndef __PAGETABLE_PMD_FOLDED
92167@@ -3860,6 +4118,30 @@ int __pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address) 93485@@ -3864,6 +4127,30 @@ int __pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address)
92168 spin_unlock(&mm->page_table_lock); 93486 spin_unlock(&mm->page_table_lock);
92169 return 0; 93487 return 0;
92170 } 93488 }
@@ -92195,7 +93513,7 @@ index dda27b9..c56b9d6 100644
92195 #endif /* __PAGETABLE_PMD_FOLDED */ 93513 #endif /* __PAGETABLE_PMD_FOLDED */
92196 93514
92197 #if !defined(__HAVE_ARCH_GATE_AREA) 93515 #if !defined(__HAVE_ARCH_GATE_AREA)
92198@@ -3873,7 +4155,7 @@ static int __init gate_vma_init(void) 93516@@ -3877,7 +4164,7 @@ static int __init gate_vma_init(void)
92199 gate_vma.vm_start = FIXADDR_USER_START; 93517 gate_vma.vm_start = FIXADDR_USER_START;
92200 gate_vma.vm_end = FIXADDR_USER_END; 93518 gate_vma.vm_end = FIXADDR_USER_END;
92201 gate_vma.vm_flags = VM_READ | VM_MAYREAD | VM_EXEC | VM_MAYEXEC; 93519 gate_vma.vm_flags = VM_READ | VM_MAYREAD | VM_EXEC | VM_MAYEXEC;
@@ -92204,7 +93522,7 @@ index dda27b9..c56b9d6 100644
92204 93522
92205 return 0; 93523 return 0;
92206 } 93524 }
92207@@ -4007,8 +4289,8 @@ out: 93525@@ -4011,8 +4298,8 @@ out:
92208 return ret; 93526 return ret;
92209 } 93527 }
92210 93528
@@ -92215,7 +93533,7 @@ index dda27b9..c56b9d6 100644
92215 { 93533 {
92216 resource_size_t phys_addr; 93534 resource_size_t phys_addr;
92217 unsigned long prot = 0; 93535 unsigned long prot = 0;
92218@@ -4034,8 +4316,8 @@ EXPORT_SYMBOL_GPL(generic_access_phys); 93536@@ -4038,8 +4325,8 @@ EXPORT_SYMBOL_GPL(generic_access_phys);
92219 * Access another process' address space as given in mm. If non-NULL, use the 93537 * Access another process' address space as given in mm. If non-NULL, use the
92220 * given task for page fault accounting. 93538 * given task for page fault accounting.
92221 */ 93539 */
@@ -92226,7 +93544,7 @@ index dda27b9..c56b9d6 100644
92226 { 93544 {
92227 struct vm_area_struct *vma; 93545 struct vm_area_struct *vma;
92228 void *old_buf = buf; 93546 void *old_buf = buf;
92229@@ -4043,7 +4325,7 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm, 93547@@ -4047,7 +4334,7 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm,
92230 down_read(&mm->mmap_sem); 93548 down_read(&mm->mmap_sem);
92231 /* ignore errors, just check how much was successfully transferred */ 93549 /* ignore errors, just check how much was successfully transferred */
92232 while (len) { 93550 while (len) {
@@ -92235,7 +93553,7 @@ index dda27b9..c56b9d6 100644
92235 void *maddr; 93553 void *maddr;
92236 struct page *page = NULL; 93554 struct page *page = NULL;
92237 93555
92238@@ -4102,8 +4384,8 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm, 93556@@ -4106,8 +4393,8 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm,
92239 * 93557 *
92240 * The caller must hold a reference on @mm. 93558 * The caller must hold a reference on @mm.
92241 */ 93559 */
@@ -92246,7 +93564,7 @@ index dda27b9..c56b9d6 100644
92246 { 93564 {
92247 return __access_remote_vm(NULL, mm, addr, buf, len, write); 93565 return __access_remote_vm(NULL, mm, addr, buf, len, write);
92248 } 93566 }
92249@@ -4113,11 +4395,11 @@ int access_remote_vm(struct mm_struct *mm, unsigned long addr, 93567@@ -4117,11 +4404,11 @@ int access_remote_vm(struct mm_struct *mm, unsigned long addr,
92250 * Source/target buffer must be kernel space, 93568 * Source/target buffer must be kernel space,
92251 * Do not walk the page table directly, use get_user_pages 93569 * Do not walk the page table directly, use get_user_pages
92252 */ 93570 */
@@ -92262,10 +93580,10 @@ index dda27b9..c56b9d6 100644
92262 mm = get_task_mm(tsk); 93580 mm = get_task_mm(tsk);
92263 if (!mm) 93581 if (!mm)
92264diff --git a/mm/mempolicy.c b/mm/mempolicy.c 93582diff --git a/mm/mempolicy.c b/mm/mempolicy.c
92265index cb2f3dd..fb80468 100644 93583index ae3c8f3..fa4ee8e 100644
92266--- a/mm/mempolicy.c 93584--- a/mm/mempolicy.c
92267+++ b/mm/mempolicy.c 93585+++ b/mm/mempolicy.c
92268@@ -747,6 +747,10 @@ static int mbind_range(struct mm_struct *mm, unsigned long start, 93586@@ -746,6 +746,10 @@ static int mbind_range(struct mm_struct *mm, unsigned long start,
92269 unsigned long vmstart; 93587 unsigned long vmstart;
92270 unsigned long vmend; 93588 unsigned long vmend;
92271 93589
@@ -92276,7 +93594,7 @@ index cb2f3dd..fb80468 100644
92276 vma = find_vma(mm, start); 93594 vma = find_vma(mm, start);
92277 if (!vma || vma->vm_start > start) 93595 if (!vma || vma->vm_start > start)
92278 return -EFAULT; 93596 return -EFAULT;
92279@@ -790,6 +794,16 @@ static int mbind_range(struct mm_struct *mm, unsigned long start, 93597@@ -789,6 +793,16 @@ static int mbind_range(struct mm_struct *mm, unsigned long start,
92280 err = vma_replace_policy(vma, new_pol); 93598 err = vma_replace_policy(vma, new_pol);
92281 if (err) 93599 if (err)
92282 goto out; 93600 goto out;
@@ -92293,7 +93611,7 @@ index cb2f3dd..fb80468 100644
92293 } 93611 }
92294 93612
92295 out: 93613 out:
92296@@ -1255,6 +1269,17 @@ static long do_mbind(unsigned long start, unsigned long len, 93614@@ -1252,6 +1266,17 @@ static long do_mbind(unsigned long start, unsigned long len,
92297 93615
92298 if (end < start) 93616 if (end < start)
92299 return -EINVAL; 93617 return -EINVAL;
@@ -92311,7 +93629,7 @@ index cb2f3dd..fb80468 100644
92311 if (end == start) 93629 if (end == start)
92312 return 0; 93630 return 0;
92313 93631
92314@@ -1483,8 +1508,7 @@ SYSCALL_DEFINE4(migrate_pages, pid_t, pid, unsigned long, maxnode, 93632@@ -1480,8 +1505,7 @@ SYSCALL_DEFINE4(migrate_pages, pid_t, pid, unsigned long, maxnode,
92315 */ 93633 */
92316 tcred = __task_cred(task); 93634 tcred = __task_cred(task);
92317 if (!uid_eq(cred->euid, tcred->suid) && !uid_eq(cred->euid, tcred->uid) && 93635 if (!uid_eq(cred->euid, tcred->suid) && !uid_eq(cred->euid, tcred->uid) &&
@@ -92321,7 +93639,7 @@ index cb2f3dd..fb80468 100644
92321 rcu_read_unlock(); 93639 rcu_read_unlock();
92322 err = -EPERM; 93640 err = -EPERM;
92323 goto out_put; 93641 goto out_put;
92324@@ -1515,6 +1539,15 @@ SYSCALL_DEFINE4(migrate_pages, pid_t, pid, unsigned long, maxnode, 93642@@ -1512,6 +1536,15 @@ SYSCALL_DEFINE4(migrate_pages, pid_t, pid, unsigned long, maxnode,
92325 goto out; 93643 goto out;
92326 } 93644 }
92327 93645
@@ -92338,10 +93656,10 @@ index cb2f3dd..fb80468 100644
92338 capable(CAP_SYS_NICE) ? MPOL_MF_MOVE_ALL : MPOL_MF_MOVE); 93656 capable(CAP_SYS_NICE) ? MPOL_MF_MOVE_ALL : MPOL_MF_MOVE);
92339 93657
92340diff --git a/mm/migrate.c b/mm/migrate.c 93658diff --git a/mm/migrate.c b/mm/migrate.c
92341index 9194375..75c81e2 100644 93659index bed4880..a493f67 100644
92342--- a/mm/migrate.c 93660--- a/mm/migrate.c
92343+++ b/mm/migrate.c 93661+++ b/mm/migrate.c
92344@@ -1464,8 +1464,7 @@ SYSCALL_DEFINE6(move_pages, pid_t, pid, unsigned long, nr_pages, 93662@@ -1485,8 +1485,7 @@ SYSCALL_DEFINE6(move_pages, pid_t, pid, unsigned long, nr_pages,
92345 */ 93663 */
92346 tcred = __task_cred(task); 93664 tcred = __task_cred(task);
92347 if (!uid_eq(cred->euid, tcred->suid) && !uid_eq(cred->euid, tcred->uid) && 93665 if (!uid_eq(cred->euid, tcred->suid) && !uid_eq(cred->euid, tcred->uid) &&
@@ -92352,7 +93670,7 @@ index 9194375..75c81e2 100644
92352 err = -EPERM; 93670 err = -EPERM;
92353 goto out; 93671 goto out;
92354diff --git a/mm/mlock.c b/mm/mlock.c 93672diff --git a/mm/mlock.c b/mm/mlock.c
92355index 192e6ee..b044449 100644 93673index b1eb536..091d154 100644
92356--- a/mm/mlock.c 93674--- a/mm/mlock.c
92357+++ b/mm/mlock.c 93675+++ b/mm/mlock.c
92358@@ -14,6 +14,7 @@ 93676@@ -14,6 +14,7 @@
@@ -92363,7 +93681,7 @@ index 192e6ee..b044449 100644
92363 #include <linux/sched.h> 93681 #include <linux/sched.h>
92364 #include <linux/export.h> 93682 #include <linux/export.h>
92365 #include <linux/rmap.h> 93683 #include <linux/rmap.h>
92366@@ -588,7 +589,7 @@ static int do_mlock(unsigned long start, size_t len, int on) 93684@@ -606,7 +607,7 @@ static int do_mlock(unsigned long start, size_t len, int on)
92367 { 93685 {
92368 unsigned long nstart, end, tmp; 93686 unsigned long nstart, end, tmp;
92369 struct vm_area_struct * vma, * prev; 93687 struct vm_area_struct * vma, * prev;
@@ -92372,7 +93690,7 @@ index 192e6ee..b044449 100644
92372 93690
92373 VM_BUG_ON(start & ~PAGE_MASK); 93691 VM_BUG_ON(start & ~PAGE_MASK);
92374 VM_BUG_ON(len != PAGE_ALIGN(len)); 93692 VM_BUG_ON(len != PAGE_ALIGN(len));
92375@@ -597,6 +598,9 @@ static int do_mlock(unsigned long start, size_t len, int on) 93693@@ -615,6 +616,9 @@ static int do_mlock(unsigned long start, size_t len, int on)
92376 return -EINVAL; 93694 return -EINVAL;
92377 if (end == start) 93695 if (end == start)
92378 return 0; 93696 return 0;
@@ -92382,7 +93700,7 @@ index 192e6ee..b044449 100644
92382 vma = find_vma(current->mm, start); 93700 vma = find_vma(current->mm, start);
92383 if (!vma || vma->vm_start > start) 93701 if (!vma || vma->vm_start > start)
92384 return -ENOMEM; 93702 return -ENOMEM;
92385@@ -608,6 +612,11 @@ static int do_mlock(unsigned long start, size_t len, int on) 93703@@ -626,6 +630,11 @@ static int do_mlock(unsigned long start, size_t len, int on)
92386 for (nstart = start ; ; ) { 93704 for (nstart = start ; ; ) {
92387 vm_flags_t newflags; 93705 vm_flags_t newflags;
92388 93706
@@ -92394,15 +93712,15 @@ index 192e6ee..b044449 100644
92394 /* Here we know that vma->vm_start <= nstart < vma->vm_end. */ 93712 /* Here we know that vma->vm_start <= nstart < vma->vm_end. */
92395 93713
92396 newflags = vma->vm_flags & ~VM_LOCKED; 93714 newflags = vma->vm_flags & ~VM_LOCKED;
92397@@ -720,6 +729,7 @@ SYSCALL_DEFINE2(mlock, unsigned long, start, size_t, len) 93715@@ -739,6 +748,7 @@ SYSCALL_DEFINE2(mlock, unsigned long, start, size_t, len)
92398 lock_limit >>= PAGE_SHIFT; 93716 locked += current->mm->locked_vm;
92399 93717
92400 /* check against resource limits */ 93718 /* check against resource limits */
92401+ gr_learn_resource(current, RLIMIT_MEMLOCK, (current->mm->locked_vm << PAGE_SHIFT) + len, 1); 93719+ gr_learn_resource(current, RLIMIT_MEMLOCK, (current->mm->locked_vm << PAGE_SHIFT) + len, 1);
92402 if ((locked <= lock_limit) || capable(CAP_IPC_LOCK)) 93720 if ((locked <= lock_limit) || capable(CAP_IPC_LOCK))
92403 error = do_mlock(start, len, 1); 93721 error = do_mlock(start, len, 1);
92404 up_write(&current->mm->mmap_sem); 93722
92405@@ -754,6 +764,11 @@ static int do_mlockall(int flags) 93723@@ -776,6 +786,11 @@ static int do_mlockall(int flags)
92406 for (vma = current->mm->mmap; vma ; vma = prev->vm_next) { 93724 for (vma = current->mm->mmap; vma ; vma = prev->vm_next) {
92407 vm_flags_t newflags; 93725 vm_flags_t newflags;
92408 93726
@@ -92414,16 +93732,20 @@ index 192e6ee..b044449 100644
92414 newflags = vma->vm_flags & ~VM_LOCKED; 93732 newflags = vma->vm_flags & ~VM_LOCKED;
92415 if (flags & MCL_CURRENT) 93733 if (flags & MCL_CURRENT)
92416 newflags |= VM_LOCKED; 93734 newflags |= VM_LOCKED;
92417@@ -787,6 +802,7 @@ SYSCALL_DEFINE1(mlockall, int, flags) 93735@@ -807,8 +822,10 @@ SYSCALL_DEFINE1(mlockall, int, flags)
92418 lock_limit >>= PAGE_SHIFT; 93736 lock_limit >>= PAGE_SHIFT;
92419 93737
92420 ret = -ENOMEM; 93738 ret = -ENOMEM;
93739+
92421+ gr_learn_resource(current, RLIMIT_MEMLOCK, current->mm->total_vm << PAGE_SHIFT, 1); 93740+ gr_learn_resource(current, RLIMIT_MEMLOCK, current->mm->total_vm << PAGE_SHIFT, 1);
93741+
93742 down_write(&current->mm->mmap_sem);
93743-
92422 if (!(flags & MCL_CURRENT) || (current->mm->total_vm <= lock_limit) || 93744 if (!(flags & MCL_CURRENT) || (current->mm->total_vm <= lock_limit) ||
92423 capable(CAP_IPC_LOCK)) 93745 capable(CAP_IPC_LOCK))
92424 ret = do_mlockall(flags); 93746 ret = do_mlockall(flags);
92425diff --git a/mm/mmap.c b/mm/mmap.c 93747diff --git a/mm/mmap.c b/mm/mmap.c
92426index 546db74..650d1b9 100644 93748index 20ff0c3..a9eda98 100644
92427--- a/mm/mmap.c 93749--- a/mm/mmap.c
92428+++ b/mm/mmap.c 93750+++ b/mm/mmap.c
92429@@ -36,6 +36,7 @@ 93751@@ -36,6 +36,7 @@
@@ -92480,7 +93802,7 @@ index 546db74..650d1b9 100644
92480 } 93802 }
92481 EXPORT_SYMBOL(vm_get_page_prot); 93803 EXPORT_SYMBOL(vm_get_page_prot);
92482 93804
92483@@ -89,6 +109,7 @@ int sysctl_overcommit_ratio __read_mostly = 50; /* default is 50% */ 93805@@ -90,6 +110,7 @@ unsigned long sysctl_overcommit_kbytes __read_mostly;
92484 int sysctl_max_map_count __read_mostly = DEFAULT_MAX_MAP_COUNT; 93806 int sysctl_max_map_count __read_mostly = DEFAULT_MAX_MAP_COUNT;
92485 unsigned long sysctl_user_reserve_kbytes __read_mostly = 1UL << 17; /* 128MB */ 93807 unsigned long sysctl_user_reserve_kbytes __read_mostly = 1UL << 17; /* 128MB */
92486 unsigned long sysctl_admin_reserve_kbytes __read_mostly = 1UL << 13; /* 8MB */ 93808 unsigned long sysctl_admin_reserve_kbytes __read_mostly = 1UL << 13; /* 8MB */
@@ -92488,7 +93810,7 @@ index 546db74..650d1b9 100644
92488 /* 93810 /*
92489 * Make sure vm_committed_as in one cacheline and not cacheline shared with 93811 * Make sure vm_committed_as in one cacheline and not cacheline shared with
92490 * other variables. It can be updated by several CPUs frequently. 93812 * other variables. It can be updated by several CPUs frequently.
92491@@ -245,6 +266,7 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma) 93813@@ -246,6 +267,7 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma)
92492 struct vm_area_struct *next = vma->vm_next; 93814 struct vm_area_struct *next = vma->vm_next;
92493 93815
92494 might_sleep(); 93816 might_sleep();
@@ -92496,7 +93818,7 @@ index 546db74..650d1b9 100644
92496 if (vma->vm_ops && vma->vm_ops->close) 93818 if (vma->vm_ops && vma->vm_ops->close)
92497 vma->vm_ops->close(vma); 93819 vma->vm_ops->close(vma);
92498 if (vma->vm_file) 93820 if (vma->vm_file)
92499@@ -289,6 +311,7 @@ SYSCALL_DEFINE1(brk, unsigned long, brk) 93821@@ -290,6 +312,7 @@ SYSCALL_DEFINE1(brk, unsigned long, brk)
92500 * not page aligned -Ram Gupta 93822 * not page aligned -Ram Gupta
92501 */ 93823 */
92502 rlim = rlimit(RLIMIT_DATA); 93824 rlim = rlimit(RLIMIT_DATA);
@@ -92504,7 +93826,7 @@ index 546db74..650d1b9 100644
92504 if (rlim < RLIM_INFINITY && (brk - mm->start_brk) + 93826 if (rlim < RLIM_INFINITY && (brk - mm->start_brk) +
92505 (mm->end_data - mm->start_data) > rlim) 93827 (mm->end_data - mm->start_data) > rlim)
92506 goto out; 93828 goto out;
92507@@ -939,6 +962,12 @@ static int 93829@@ -940,6 +963,12 @@ static int
92508 can_vma_merge_before(struct vm_area_struct *vma, unsigned long vm_flags, 93830 can_vma_merge_before(struct vm_area_struct *vma, unsigned long vm_flags,
92509 struct anon_vma *anon_vma, struct file *file, pgoff_t vm_pgoff) 93831 struct anon_vma *anon_vma, struct file *file, pgoff_t vm_pgoff)
92510 { 93832 {
@@ -92517,7 +93839,7 @@ index 546db74..650d1b9 100644
92517 if (is_mergeable_vma(vma, file, vm_flags) && 93839 if (is_mergeable_vma(vma, file, vm_flags) &&
92518 is_mergeable_anon_vma(anon_vma, vma->anon_vma, vma)) { 93840 is_mergeable_anon_vma(anon_vma, vma->anon_vma, vma)) {
92519 if (vma->vm_pgoff == vm_pgoff) 93841 if (vma->vm_pgoff == vm_pgoff)
92520@@ -958,6 +987,12 @@ static int 93842@@ -959,6 +988,12 @@ static int
92521 can_vma_merge_after(struct vm_area_struct *vma, unsigned long vm_flags, 93843 can_vma_merge_after(struct vm_area_struct *vma, unsigned long vm_flags,
92522 struct anon_vma *anon_vma, struct file *file, pgoff_t vm_pgoff) 93844 struct anon_vma *anon_vma, struct file *file, pgoff_t vm_pgoff)
92523 { 93845 {
@@ -92530,7 +93852,7 @@ index 546db74..650d1b9 100644
92530 if (is_mergeable_vma(vma, file, vm_flags) && 93852 if (is_mergeable_vma(vma, file, vm_flags) &&
92531 is_mergeable_anon_vma(anon_vma, vma->anon_vma, vma)) { 93853 is_mergeable_anon_vma(anon_vma, vma->anon_vma, vma)) {
92532 pgoff_t vm_pglen; 93854 pgoff_t vm_pglen;
92533@@ -1000,13 +1035,20 @@ can_vma_merge_after(struct vm_area_struct *vma, unsigned long vm_flags, 93855@@ -1001,13 +1036,20 @@ can_vma_merge_after(struct vm_area_struct *vma, unsigned long vm_flags,
92534 struct vm_area_struct *vma_merge(struct mm_struct *mm, 93856 struct vm_area_struct *vma_merge(struct mm_struct *mm,
92535 struct vm_area_struct *prev, unsigned long addr, 93857 struct vm_area_struct *prev, unsigned long addr,
92536 unsigned long end, unsigned long vm_flags, 93858 unsigned long end, unsigned long vm_flags,
@@ -92552,7 +93874,7 @@ index 546db74..650d1b9 100644
92552 /* 93874 /*
92553 * We later require that vma->vm_flags == vm_flags, 93875 * We later require that vma->vm_flags == vm_flags,
92554 * so this tests vma->vm_flags & VM_SPECIAL, too. 93876 * so this tests vma->vm_flags & VM_SPECIAL, too.
92555@@ -1022,6 +1064,15 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm, 93877@@ -1023,6 +1065,15 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm,
92556 if (next && next->vm_end == end) /* cases 6, 7, 8 */ 93878 if (next && next->vm_end == end) /* cases 6, 7, 8 */
92557 next = next->vm_next; 93879 next = next->vm_next;
92558 93880
@@ -92568,7 +93890,7 @@ index 546db74..650d1b9 100644
92568 /* 93890 /*
92569 * Can it merge with the predecessor? 93891 * Can it merge with the predecessor?
92570 */ 93892 */
92571@@ -1041,9 +1092,24 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm, 93893@@ -1042,9 +1093,24 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm,
92572 /* cases 1, 6 */ 93894 /* cases 1, 6 */
92573 err = vma_adjust(prev, prev->vm_start, 93895 err = vma_adjust(prev, prev->vm_start,
92574 next->vm_end, prev->vm_pgoff, NULL); 93896 next->vm_end, prev->vm_pgoff, NULL);
@@ -92594,7 +93916,7 @@ index 546db74..650d1b9 100644
92594 if (err) 93916 if (err)
92595 return NULL; 93917 return NULL;
92596 khugepaged_enter_vma_merge(prev); 93918 khugepaged_enter_vma_merge(prev);
92597@@ -1057,12 +1123,27 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm, 93919@@ -1058,12 +1124,27 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm,
92598 mpol_equal(policy, vma_policy(next)) && 93920 mpol_equal(policy, vma_policy(next)) &&
92599 can_vma_merge_before(next, vm_flags, 93921 can_vma_merge_before(next, vm_flags,
92600 anon_vma, file, pgoff+pglen)) { 93922 anon_vma, file, pgoff+pglen)) {
@@ -92624,7 +93946,7 @@ index 546db74..650d1b9 100644
92624 if (err) 93946 if (err)
92625 return NULL; 93947 return NULL;
92626 khugepaged_enter_vma_merge(area); 93948 khugepaged_enter_vma_merge(area);
92627@@ -1171,8 +1252,10 @@ none: 93949@@ -1172,8 +1253,10 @@ none:
92628 void vm_stat_account(struct mm_struct *mm, unsigned long flags, 93950 void vm_stat_account(struct mm_struct *mm, unsigned long flags,
92629 struct file *file, long pages) 93951 struct file *file, long pages)
92630 { 93952 {
@@ -92637,7 +93959,7 @@ index 546db74..650d1b9 100644
92637 93959
92638 mm->total_vm += pages; 93960 mm->total_vm += pages;
92639 93961
92640@@ -1180,7 +1263,7 @@ void vm_stat_account(struct mm_struct *mm, unsigned long flags, 93962@@ -1181,7 +1264,7 @@ void vm_stat_account(struct mm_struct *mm, unsigned long flags,
92641 mm->shared_vm += pages; 93963 mm->shared_vm += pages;
92642 if ((flags & (VM_EXEC|VM_WRITE)) == VM_EXEC) 93964 if ((flags & (VM_EXEC|VM_WRITE)) == VM_EXEC)
92643 mm->exec_vm += pages; 93965 mm->exec_vm += pages;
@@ -92646,7 +93968,15 @@ index 546db74..650d1b9 100644
92646 mm->stack_vm += pages; 93968 mm->stack_vm += pages;
92647 } 93969 }
92648 #endif /* CONFIG_PROC_FS */ 93970 #endif /* CONFIG_PROC_FS */
92649@@ -1218,7 +1301,7 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr, 93971@@ -1211,6 +1294,7 @@ static inline int mlock_future_check(struct mm_struct *mm,
93972 locked += mm->locked_vm;
93973 lock_limit = rlimit(RLIMIT_MEMLOCK);
93974 lock_limit >>= PAGE_SHIFT;
93975+ gr_learn_resource(current, RLIMIT_MEMLOCK, locked << PAGE_SHIFT, 1);
93976 if (locked > lock_limit && !capable(CAP_IPC_LOCK))
93977 return -EAGAIN;
93978 }
93979@@ -1237,7 +1321,7 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
92650 * (the exception is when the underlying filesystem is noexec 93980 * (the exception is when the underlying filesystem is noexec
92651 * mounted, in which case we dont add PROT_EXEC.) 93981 * mounted, in which case we dont add PROT_EXEC.)
92652 */ 93982 */
@@ -92655,7 +93985,7 @@ index 546db74..650d1b9 100644
92655 if (!(file && (file->f_path.mnt->mnt_flags & MNT_NOEXEC))) 93985 if (!(file && (file->f_path.mnt->mnt_flags & MNT_NOEXEC)))
92656 prot |= PROT_EXEC; 93986 prot |= PROT_EXEC;
92657 93987
92658@@ -1244,7 +1327,7 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr, 93988@@ -1263,7 +1347,7 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
92659 /* Obtain the address to map to. we verify (or select) it and ensure 93989 /* Obtain the address to map to. we verify (or select) it and ensure
92660 * that it represents a valid section of the address space. 93990 * that it represents a valid section of the address space.
92661 */ 93991 */
@@ -92664,7 +93994,7 @@ index 546db74..650d1b9 100644
92664 if (addr & ~PAGE_MASK) 93994 if (addr & ~PAGE_MASK)
92665 return addr; 93995 return addr;
92666 93996
92667@@ -1255,6 +1338,43 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr, 93997@@ -1274,6 +1358,43 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
92668 vm_flags = calc_vm_prot_bits(prot) | calc_vm_flag_bits(flags) | 93998 vm_flags = calc_vm_prot_bits(prot) | calc_vm_flag_bits(flags) |
92669 mm->def_flags | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC; 93999 mm->def_flags | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC;
92670 94000
@@ -92708,15 +94038,7 @@ index 546db74..650d1b9 100644
92708 if (flags & MAP_LOCKED) 94038 if (flags & MAP_LOCKED)
92709 if (!can_do_mlock()) 94039 if (!can_do_mlock())
92710 return -EPERM; 94040 return -EPERM;
92711@@ -1266,6 +1386,7 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr, 94041@@ -1361,6 +1482,9 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
92712 locked += mm->locked_vm;
92713 lock_limit = rlimit(RLIMIT_MEMLOCK);
92714 lock_limit >>= PAGE_SHIFT;
92715+ gr_learn_resource(current, RLIMIT_MEMLOCK, locked << PAGE_SHIFT, 1);
92716 if (locked > lock_limit && !capable(CAP_IPC_LOCK))
92717 return -EAGAIN;
92718 }
92719@@ -1350,6 +1471,9 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
92720 vm_flags |= VM_NORESERVE; 94042 vm_flags |= VM_NORESERVE;
92721 } 94043 }
92722 94044
@@ -92726,7 +94048,7 @@ index 546db74..650d1b9 100644
92726 addr = mmap_region(file, addr, len, vm_flags, pgoff); 94048 addr = mmap_region(file, addr, len, vm_flags, pgoff);
92727 if (!IS_ERR_VALUE(addr) && 94049 if (!IS_ERR_VALUE(addr) &&
92728 ((vm_flags & VM_LOCKED) || 94050 ((vm_flags & VM_LOCKED) ||
92729@@ -1443,7 +1567,7 @@ int vma_wants_writenotify(struct vm_area_struct *vma) 94051@@ -1454,7 +1578,7 @@ int vma_wants_writenotify(struct vm_area_struct *vma)
92730 vm_flags_t vm_flags = vma->vm_flags; 94052 vm_flags_t vm_flags = vma->vm_flags;
92731 94053
92732 /* If it was private or non-writable, the write bit is already clear */ 94054 /* If it was private or non-writable, the write bit is already clear */
@@ -92735,7 +94057,7 @@ index 546db74..650d1b9 100644
92735 return 0; 94057 return 0;
92736 94058
92737 /* The backer wishes to know when pages are first written to? */ 94059 /* The backer wishes to know when pages are first written to? */
92738@@ -1489,7 +1613,22 @@ unsigned long mmap_region(struct file *file, unsigned long addr, 94060@@ -1500,7 +1624,22 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
92739 struct rb_node **rb_link, *rb_parent; 94061 struct rb_node **rb_link, *rb_parent;
92740 unsigned long charged = 0; 94062 unsigned long charged = 0;
92741 94063
@@ -92758,7 +94080,7 @@ index 546db74..650d1b9 100644
92758 if (!may_expand_vm(mm, len >> PAGE_SHIFT)) { 94080 if (!may_expand_vm(mm, len >> PAGE_SHIFT)) {
92759 unsigned long nr_pages; 94081 unsigned long nr_pages;
92760 94082
92761@@ -1508,11 +1647,10 @@ unsigned long mmap_region(struct file *file, unsigned long addr, 94083@@ -1519,11 +1658,10 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
92762 94084
92763 /* Clear old maps */ 94085 /* Clear old maps */
92764 error = -ENOMEM; 94086 error = -ENOMEM;
@@ -92771,7 +94093,7 @@ index 546db74..650d1b9 100644
92771 } 94093 }
92772 94094
92773 /* 94095 /*
92774@@ -1543,6 +1681,16 @@ munmap_back: 94096@@ -1554,6 +1692,16 @@ munmap_back:
92775 goto unacct_error; 94097 goto unacct_error;
92776 } 94098 }
92777 94099
@@ -92788,7 +94110,7 @@ index 546db74..650d1b9 100644
92788 vma->vm_mm = mm; 94110 vma->vm_mm = mm;
92789 vma->vm_start = addr; 94111 vma->vm_start = addr;
92790 vma->vm_end = addr + len; 94112 vma->vm_end = addr + len;
92791@@ -1562,6 +1710,13 @@ munmap_back: 94113@@ -1573,6 +1721,13 @@ munmap_back:
92792 if (error) 94114 if (error)
92793 goto unmap_and_free_vma; 94115 goto unmap_and_free_vma;
92794 94116
@@ -92802,7 +94124,7 @@ index 546db74..650d1b9 100644
92802 /* Can addr have changed?? 94124 /* Can addr have changed??
92803 * 94125 *
92804 * Answer: Yes, several device drivers can do it in their 94126 * Answer: Yes, several device drivers can do it in their
92805@@ -1595,6 +1750,12 @@ munmap_back: 94127@@ -1606,6 +1761,12 @@ munmap_back:
92806 } 94128 }
92807 94129
92808 vma_link(mm, vma, prev, rb_link, rb_parent); 94130 vma_link(mm, vma, prev, rb_link, rb_parent);
@@ -92815,7 +94137,7 @@ index 546db74..650d1b9 100644
92815 /* Once vma denies write, undo our temporary denial count */ 94137 /* Once vma denies write, undo our temporary denial count */
92816 if (vm_flags & VM_DENYWRITE) 94138 if (vm_flags & VM_DENYWRITE)
92817 allow_write_access(file); 94139 allow_write_access(file);
92818@@ -1603,6 +1764,7 @@ out: 94140@@ -1614,6 +1775,7 @@ out:
92819 perf_event_mmap(vma); 94141 perf_event_mmap(vma);
92820 94142
92821 vm_stat_account(mm, vm_flags, file, len >> PAGE_SHIFT); 94143 vm_stat_account(mm, vm_flags, file, len >> PAGE_SHIFT);
@@ -92823,7 +94145,7 @@ index 546db74..650d1b9 100644
92823 if (vm_flags & VM_LOCKED) { 94145 if (vm_flags & VM_LOCKED) {
92824 if (!((vm_flags & VM_SPECIAL) || is_vm_hugetlb_page(vma) || 94146 if (!((vm_flags & VM_SPECIAL) || is_vm_hugetlb_page(vma) ||
92825 vma == get_gate_vma(current->mm))) 94147 vma == get_gate_vma(current->mm)))
92826@@ -1635,6 +1797,12 @@ unmap_and_free_vma: 94148@@ -1646,6 +1808,12 @@ unmap_and_free_vma:
92827 unmap_region(mm, vma, prev, vma->vm_start, vma->vm_end); 94149 unmap_region(mm, vma, prev, vma->vm_start, vma->vm_end);
92828 charged = 0; 94150 charged = 0;
92829 free_vma: 94151 free_vma:
@@ -92836,7 +94158,7 @@ index 546db74..650d1b9 100644
92836 kmem_cache_free(vm_area_cachep, vma); 94158 kmem_cache_free(vm_area_cachep, vma);
92837 unacct_error: 94159 unacct_error:
92838 if (charged) 94160 if (charged)
92839@@ -1642,7 +1810,63 @@ unacct_error: 94161@@ -1653,7 +1821,63 @@ unacct_error:
92840 return error; 94162 return error;
92841 } 94163 }
92842 94164
@@ -92901,7 +94223,7 @@ index 546db74..650d1b9 100644
92901 { 94223 {
92902 /* 94224 /*
92903 * We implement the search by looking for an rbtree node that 94225 * We implement the search by looking for an rbtree node that
92904@@ -1690,11 +1914,29 @@ unsigned long unmapped_area(struct vm_unmapped_area_info *info) 94226@@ -1701,11 +1925,29 @@ unsigned long unmapped_area(struct vm_unmapped_area_info *info)
92905 } 94227 }
92906 } 94228 }
92907 94229
@@ -92932,7 +94254,7 @@ index 546db74..650d1b9 100644
92932 if (gap_end >= low_limit && gap_end - gap_start >= length) 94254 if (gap_end >= low_limit && gap_end - gap_start >= length)
92933 goto found; 94255 goto found;
92934 94256
92935@@ -1744,7 +1986,7 @@ found: 94257@@ -1755,7 +1997,7 @@ found:
92936 return gap_start; 94258 return gap_start;
92937 } 94259 }
92938 94260
@@ -92941,7 +94263,7 @@ index 546db74..650d1b9 100644
92941 { 94263 {
92942 struct mm_struct *mm = current->mm; 94264 struct mm_struct *mm = current->mm;
92943 struct vm_area_struct *vma; 94265 struct vm_area_struct *vma;
92944@@ -1798,6 +2040,24 @@ check_current: 94266@@ -1809,6 +2051,24 @@ check_current:
92945 gap_end = vma->vm_start; 94267 gap_end = vma->vm_start;
92946 if (gap_end < low_limit) 94268 if (gap_end < low_limit)
92947 return -ENOMEM; 94269 return -ENOMEM;
@@ -92966,7 +94288,7 @@ index 546db74..650d1b9 100644
92966 if (gap_start <= high_limit && gap_end - gap_start >= length) 94288 if (gap_start <= high_limit && gap_end - gap_start >= length)
92967 goto found; 94289 goto found;
92968 94290
92969@@ -1861,6 +2121,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, 94291@@ -1872,6 +2132,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
92970 struct mm_struct *mm = current->mm; 94292 struct mm_struct *mm = current->mm;
92971 struct vm_area_struct *vma; 94293 struct vm_area_struct *vma;
92972 struct vm_unmapped_area_info info; 94294 struct vm_unmapped_area_info info;
@@ -92974,7 +94296,7 @@ index 546db74..650d1b9 100644
92974 94296
92975 if (len > TASK_SIZE - mmap_min_addr) 94297 if (len > TASK_SIZE - mmap_min_addr)
92976 return -ENOMEM; 94298 return -ENOMEM;
92977@@ -1868,11 +2129,15 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, 94299@@ -1879,11 +2140,15 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
92978 if (flags & MAP_FIXED) 94300 if (flags & MAP_FIXED)
92979 return addr; 94301 return addr;
92980 94302
@@ -92991,7 +94313,7 @@ index 546db74..650d1b9 100644
92991 return addr; 94313 return addr;
92992 } 94314 }
92993 94315
92994@@ -1881,6 +2146,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, 94316@@ -1892,6 +2157,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
92995 info.low_limit = mm->mmap_base; 94317 info.low_limit = mm->mmap_base;
92996 info.high_limit = TASK_SIZE; 94318 info.high_limit = TASK_SIZE;
92997 info.align_mask = 0; 94319 info.align_mask = 0;
@@ -92999,7 +94321,7 @@ index 546db74..650d1b9 100644
92999 return vm_unmapped_area(&info); 94321 return vm_unmapped_area(&info);
93000 } 94322 }
93001 #endif 94323 #endif
93002@@ -1899,6 +2165,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, 94324@@ -1910,6 +2176,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
93003 struct mm_struct *mm = current->mm; 94325 struct mm_struct *mm = current->mm;
93004 unsigned long addr = addr0; 94326 unsigned long addr = addr0;
93005 struct vm_unmapped_area_info info; 94327 struct vm_unmapped_area_info info;
@@ -93007,7 +94329,7 @@ index 546db74..650d1b9 100644
93007 94329
93008 /* requested length too big for entire address space */ 94330 /* requested length too big for entire address space */
93009 if (len > TASK_SIZE - mmap_min_addr) 94331 if (len > TASK_SIZE - mmap_min_addr)
93010@@ -1907,12 +2174,16 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, 94332@@ -1918,12 +2185,16 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
93011 if (flags & MAP_FIXED) 94333 if (flags & MAP_FIXED)
93012 return addr; 94334 return addr;
93013 94335
@@ -93025,7 +94347,7 @@ index 546db74..650d1b9 100644
93025 return addr; 94347 return addr;
93026 } 94348 }
93027 94349
93028@@ -1921,6 +2192,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, 94350@@ -1932,6 +2203,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
93029 info.low_limit = max(PAGE_SIZE, mmap_min_addr); 94351 info.low_limit = max(PAGE_SIZE, mmap_min_addr);
93030 info.high_limit = mm->mmap_base; 94352 info.high_limit = mm->mmap_base;
93031 info.align_mask = 0; 94353 info.align_mask = 0;
@@ -93033,7 +94355,7 @@ index 546db74..650d1b9 100644
93033 addr = vm_unmapped_area(&info); 94355 addr = vm_unmapped_area(&info);
93034 94356
93035 /* 94357 /*
93036@@ -1933,6 +2205,12 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, 94358@@ -1944,6 +2216,12 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
93037 VM_BUG_ON(addr != -ENOMEM); 94359 VM_BUG_ON(addr != -ENOMEM);
93038 info.flags = 0; 94360 info.flags = 0;
93039 info.low_limit = TASK_UNMAPPED_BASE; 94361 info.low_limit = TASK_UNMAPPED_BASE;
@@ -93046,7 +94368,7 @@ index 546db74..650d1b9 100644
93046 info.high_limit = TASK_SIZE; 94368 info.high_limit = TASK_SIZE;
93047 addr = vm_unmapped_area(&info); 94369 addr = vm_unmapped_area(&info);
93048 } 94370 }
93049@@ -2034,6 +2312,28 @@ find_vma_prev(struct mm_struct *mm, unsigned long addr, 94371@@ -2045,6 +2323,28 @@ find_vma_prev(struct mm_struct *mm, unsigned long addr,
93050 return vma; 94372 return vma;
93051 } 94373 }
93052 94374
@@ -93075,7 +94397,7 @@ index 546db74..650d1b9 100644
93075 /* 94397 /*
93076 * Verify that the stack growth is acceptable and 94398 * Verify that the stack growth is acceptable and
93077 * update accounting. This is shared with both the 94399 * update accounting. This is shared with both the
93078@@ -2050,6 +2350,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns 94400@@ -2061,6 +2361,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
93079 return -ENOMEM; 94401 return -ENOMEM;
93080 94402
93081 /* Stack limit test */ 94403 /* Stack limit test */
@@ -93083,7 +94405,7 @@ index 546db74..650d1b9 100644
93083 if (size > ACCESS_ONCE(rlim[RLIMIT_STACK].rlim_cur)) 94405 if (size > ACCESS_ONCE(rlim[RLIMIT_STACK].rlim_cur))
93084 return -ENOMEM; 94406 return -ENOMEM;
93085 94407
93086@@ -2060,6 +2361,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns 94408@@ -2071,6 +2372,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
93087 locked = mm->locked_vm + grow; 94409 locked = mm->locked_vm + grow;
93088 limit = ACCESS_ONCE(rlim[RLIMIT_MEMLOCK].rlim_cur); 94410 limit = ACCESS_ONCE(rlim[RLIMIT_MEMLOCK].rlim_cur);
93089 limit >>= PAGE_SHIFT; 94411 limit >>= PAGE_SHIFT;
@@ -93091,7 +94413,7 @@ index 546db74..650d1b9 100644
93091 if (locked > limit && !capable(CAP_IPC_LOCK)) 94413 if (locked > limit && !capable(CAP_IPC_LOCK))
93092 return -ENOMEM; 94414 return -ENOMEM;
93093 } 94415 }
93094@@ -2089,37 +2391,48 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns 94416@@ -2100,37 +2402,48 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
93095 * PA-RISC uses this for its stack; IA64 for its Register Backing Store. 94417 * PA-RISC uses this for its stack; IA64 for its Register Backing Store.
93096 * vma is the last one with address > vma->vm_end. Have to extend vma. 94418 * vma is the last one with address > vma->vm_end. Have to extend vma.
93097 */ 94419 */
@@ -93149,7 +94471,7 @@ index 546db74..650d1b9 100644
93149 unsigned long size, grow; 94471 unsigned long size, grow;
93150 94472
93151 size = address - vma->vm_start; 94473 size = address - vma->vm_start;
93152@@ -2154,6 +2467,8 @@ int expand_upwards(struct vm_area_struct *vma, unsigned long address) 94474@@ -2165,6 +2478,8 @@ int expand_upwards(struct vm_area_struct *vma, unsigned long address)
93153 } 94475 }
93154 } 94476 }
93155 } 94477 }
@@ -93158,7 +94480,7 @@ index 546db74..650d1b9 100644
93158 vma_unlock_anon_vma(vma); 94480 vma_unlock_anon_vma(vma);
93159 khugepaged_enter_vma_merge(vma); 94481 khugepaged_enter_vma_merge(vma);
93160 validate_mm(vma->vm_mm); 94482 validate_mm(vma->vm_mm);
93161@@ -2168,6 +2483,8 @@ int expand_downwards(struct vm_area_struct *vma, 94483@@ -2179,6 +2494,8 @@ int expand_downwards(struct vm_area_struct *vma,
93162 unsigned long address) 94484 unsigned long address)
93163 { 94485 {
93164 int error; 94486 int error;
@@ -93167,7 +94489,7 @@ index 546db74..650d1b9 100644
93167 94489
93168 /* 94490 /*
93169 * We must make sure the anon_vma is allocated 94491 * We must make sure the anon_vma is allocated
93170@@ -2181,6 +2498,15 @@ int expand_downwards(struct vm_area_struct *vma, 94492@@ -2192,6 +2509,15 @@ int expand_downwards(struct vm_area_struct *vma,
93171 if (error) 94493 if (error)
93172 return error; 94494 return error;
93173 94495
@@ -93183,7 +94505,7 @@ index 546db74..650d1b9 100644
93183 vma_lock_anon_vma(vma); 94505 vma_lock_anon_vma(vma);
93184 94506
93185 /* 94507 /*
93186@@ -2190,9 +2516,17 @@ int expand_downwards(struct vm_area_struct *vma, 94508@@ -2201,9 +2527,17 @@ int expand_downwards(struct vm_area_struct *vma,
93187 */ 94509 */
93188 94510
93189 /* Somebody else might have raced and expanded it already */ 94511 /* Somebody else might have raced and expanded it already */
@@ -93202,7 +94524,7 @@ index 546db74..650d1b9 100644
93202 size = vma->vm_end - address; 94524 size = vma->vm_end - address;
93203 grow = (vma->vm_start - address) >> PAGE_SHIFT; 94525 grow = (vma->vm_start - address) >> PAGE_SHIFT;
93204 94526
93205@@ -2217,13 +2551,27 @@ int expand_downwards(struct vm_area_struct *vma, 94527@@ -2228,13 +2562,27 @@ int expand_downwards(struct vm_area_struct *vma,
93206 vma->vm_pgoff -= grow; 94528 vma->vm_pgoff -= grow;
93207 anon_vma_interval_tree_post_update_vma(vma); 94529 anon_vma_interval_tree_post_update_vma(vma);
93208 vma_gap_update(vma); 94530 vma_gap_update(vma);
@@ -93230,7 +94552,7 @@ index 546db74..650d1b9 100644
93230 khugepaged_enter_vma_merge(vma); 94552 khugepaged_enter_vma_merge(vma);
93231 validate_mm(vma->vm_mm); 94553 validate_mm(vma->vm_mm);
93232 return error; 94554 return error;
93233@@ -2321,6 +2669,13 @@ static void remove_vma_list(struct mm_struct *mm, struct vm_area_struct *vma) 94555@@ -2332,6 +2680,13 @@ static void remove_vma_list(struct mm_struct *mm, struct vm_area_struct *vma)
93234 do { 94556 do {
93235 long nrpages = vma_pages(vma); 94557 long nrpages = vma_pages(vma);
93236 94558
@@ -93244,7 +94566,7 @@ index 546db74..650d1b9 100644
93244 if (vma->vm_flags & VM_ACCOUNT) 94566 if (vma->vm_flags & VM_ACCOUNT)
93245 nr_accounted += nrpages; 94567 nr_accounted += nrpages;
93246 vm_stat_account(mm, vma->vm_flags, vma->vm_file, -nrpages); 94568 vm_stat_account(mm, vma->vm_flags, vma->vm_file, -nrpages);
93247@@ -2365,6 +2720,16 @@ detach_vmas_to_be_unmapped(struct mm_struct *mm, struct vm_area_struct *vma, 94569@@ -2376,6 +2731,16 @@ detach_vmas_to_be_unmapped(struct mm_struct *mm, struct vm_area_struct *vma,
93248 insertion_point = (prev ? &prev->vm_next : &mm->mmap); 94570 insertion_point = (prev ? &prev->vm_next : &mm->mmap);
93249 vma->vm_prev = NULL; 94571 vma->vm_prev = NULL;
93250 do { 94572 do {
@@ -93261,7 +94583,7 @@ index 546db74..650d1b9 100644
93261 vma_rb_erase(vma, &mm->mm_rb); 94583 vma_rb_erase(vma, &mm->mm_rb);
93262 mm->map_count--; 94584 mm->map_count--;
93263 tail_vma = vma; 94585 tail_vma = vma;
93264@@ -2390,14 +2755,33 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma, 94586@@ -2401,14 +2766,33 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
93265 struct vm_area_struct *new; 94587 struct vm_area_struct *new;
93266 int err = -ENOMEM; 94588 int err = -ENOMEM;
93267 94589
@@ -93295,7 +94617,7 @@ index 546db74..650d1b9 100644
93295 /* most fields are the same, copy all, and then fixup */ 94617 /* most fields are the same, copy all, and then fixup */
93296 *new = *vma; 94618 *new = *vma;
93297 94619
93298@@ -2410,6 +2794,22 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma, 94620@@ -2421,6 +2805,22 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
93299 new->vm_pgoff += ((addr - vma->vm_start) >> PAGE_SHIFT); 94621 new->vm_pgoff += ((addr - vma->vm_start) >> PAGE_SHIFT);
93300 } 94622 }
93301 94623
@@ -93318,7 +94640,7 @@ index 546db74..650d1b9 100644
93318 err = vma_dup_policy(vma, new); 94640 err = vma_dup_policy(vma, new);
93319 if (err) 94641 if (err)
93320 goto out_free_vma; 94642 goto out_free_vma;
93321@@ -2429,6 +2829,38 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma, 94643@@ -2440,6 +2840,38 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
93322 else 94644 else
93323 err = vma_adjust(vma, vma->vm_start, addr, vma->vm_pgoff, new); 94645 err = vma_adjust(vma, vma->vm_start, addr, vma->vm_pgoff, new);
93324 94646
@@ -93357,7 +94679,7 @@ index 546db74..650d1b9 100644
93357 /* Success. */ 94679 /* Success. */
93358 if (!err) 94680 if (!err)
93359 return 0; 94681 return 0;
93360@@ -2438,10 +2870,18 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma, 94682@@ -2449,10 +2881,18 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
93361 new->vm_ops->close(new); 94683 new->vm_ops->close(new);
93362 if (new->vm_file) 94684 if (new->vm_file)
93363 fput(new->vm_file); 94685 fput(new->vm_file);
@@ -93377,7 +94699,7 @@ index 546db74..650d1b9 100644
93377 kmem_cache_free(vm_area_cachep, new); 94699 kmem_cache_free(vm_area_cachep, new);
93378 out_err: 94700 out_err:
93379 return err; 94701 return err;
93380@@ -2454,6 +2894,15 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma, 94702@@ -2465,6 +2905,15 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
93381 int split_vma(struct mm_struct *mm, struct vm_area_struct *vma, 94703 int split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
93382 unsigned long addr, int new_below) 94704 unsigned long addr, int new_below)
93383 { 94705 {
@@ -93393,7 +94715,7 @@ index 546db74..650d1b9 100644
93393 if (mm->map_count >= sysctl_max_map_count) 94715 if (mm->map_count >= sysctl_max_map_count)
93394 return -ENOMEM; 94716 return -ENOMEM;
93395 94717
93396@@ -2465,11 +2914,30 @@ int split_vma(struct mm_struct *mm, struct vm_area_struct *vma, 94718@@ -2476,11 +2925,30 @@ int split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
93397 * work. This now handles partial unmappings. 94719 * work. This now handles partial unmappings.
93398 * Jeremy Fitzhardinge <jeremy@goop.org> 94720 * Jeremy Fitzhardinge <jeremy@goop.org>
93399 */ 94721 */
@@ -93424,7 +94746,7 @@ index 546db74..650d1b9 100644
93424 if ((start & ~PAGE_MASK) || start > TASK_SIZE || len > TASK_SIZE-start) 94746 if ((start & ~PAGE_MASK) || start > TASK_SIZE || len > TASK_SIZE-start)
93425 return -EINVAL; 94747 return -EINVAL;
93426 94748
93427@@ -2544,6 +3012,8 @@ int do_munmap(struct mm_struct *mm, unsigned long start, size_t len) 94749@@ -2555,6 +3023,8 @@ int do_munmap(struct mm_struct *mm, unsigned long start, size_t len)
93428 /* Fix up all other VM information */ 94750 /* Fix up all other VM information */
93429 remove_vma_list(mm, vma); 94751 remove_vma_list(mm, vma);
93430 94752
@@ -93433,7 +94755,7 @@ index 546db74..650d1b9 100644
93433 return 0; 94755 return 0;
93434 } 94756 }
93435 94757
93436@@ -2552,6 +3022,13 @@ int vm_munmap(unsigned long start, size_t len) 94758@@ -2563,6 +3033,13 @@ int vm_munmap(unsigned long start, size_t len)
93437 int ret; 94759 int ret;
93438 struct mm_struct *mm = current->mm; 94760 struct mm_struct *mm = current->mm;
93439 94761
@@ -93447,7 +94769,7 @@ index 546db74..650d1b9 100644
93447 down_write(&mm->mmap_sem); 94769 down_write(&mm->mmap_sem);
93448 ret = do_munmap(mm, start, len); 94770 ret = do_munmap(mm, start, len);
93449 up_write(&mm->mmap_sem); 94771 up_write(&mm->mmap_sem);
93450@@ -2565,16 +3042,6 @@ SYSCALL_DEFINE2(munmap, unsigned long, addr, size_t, len) 94772@@ -2576,16 +3053,6 @@ SYSCALL_DEFINE2(munmap, unsigned long, addr, size_t, len)
93451 return vm_munmap(addr, len); 94773 return vm_munmap(addr, len);
93452 } 94774 }
93453 94775
@@ -93464,7 +94786,7 @@ index 546db74..650d1b9 100644
93464 /* 94786 /*
93465 * this is really a simplified "do_mmap". it only handles 94787 * this is really a simplified "do_mmap". it only handles
93466 * anonymous maps. eventually we may be able to do some 94788 * anonymous maps. eventually we may be able to do some
93467@@ -2588,6 +3055,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) 94789@@ -2599,6 +3066,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
93468 struct rb_node ** rb_link, * rb_parent; 94790 struct rb_node ** rb_link, * rb_parent;
93469 pgoff_t pgoff = addr >> PAGE_SHIFT; 94791 pgoff_t pgoff = addr >> PAGE_SHIFT;
93470 int error; 94792 int error;
@@ -93472,7 +94794,7 @@ index 546db74..650d1b9 100644
93472 94794
93473 len = PAGE_ALIGN(len); 94795 len = PAGE_ALIGN(len);
93474 if (!len) 94796 if (!len)
93475@@ -2595,16 +3063,30 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) 94797@@ -2606,10 +3074,24 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
93476 94798
93477 flags = VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags; 94799 flags = VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags;
93478 94800
@@ -93494,17 +94816,10 @@ index 546db74..650d1b9 100644
93494 94816
93495+ charged = len >> PAGE_SHIFT; 94817+ charged = len >> PAGE_SHIFT;
93496+ 94818+
93497 /* 94819 error = mlock_future_check(mm, mm->def_flags, len);
93498 * mlock MCL_FUTURE? 94820 if (error)
93499 */ 94821 return error;
93500 if (mm->def_flags & VM_LOCKED) { 94822@@ -2623,21 +3105,20 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
93501 unsigned long locked, lock_limit;
93502- locked = len >> PAGE_SHIFT;
93503+ locked = charged;
93504 locked += mm->locked_vm;
93505 lock_limit = rlimit(RLIMIT_MEMLOCK);
93506 lock_limit >>= PAGE_SHIFT;
93507@@ -2621,21 +3103,20 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
93508 /* 94823 /*
93509 * Clear old maps. this also does some error checking for us 94824 * Clear old maps. this also does some error checking for us
93510 */ 94825 */
@@ -93529,7 +94844,7 @@ index 546db74..650d1b9 100644
93529 return -ENOMEM; 94844 return -ENOMEM;
93530 94845
93531 /* Can we just expand an old private anonymous mapping? */ 94846 /* Can we just expand an old private anonymous mapping? */
93532@@ -2649,7 +3130,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) 94847@@ -2651,7 +3132,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
93533 */ 94848 */
93534 vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL); 94849 vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL);
93535 if (!vma) { 94850 if (!vma) {
@@ -93538,7 +94853,7 @@ index 546db74..650d1b9 100644
93538 return -ENOMEM; 94853 return -ENOMEM;
93539 } 94854 }
93540 94855
93541@@ -2663,10 +3144,11 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) 94856@@ -2665,10 +3146,11 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
93542 vma_link(mm, vma, prev, rb_link, rb_parent); 94857 vma_link(mm, vma, prev, rb_link, rb_parent);
93543 out: 94858 out:
93544 perf_event_mmap(vma); 94859 perf_event_mmap(vma);
@@ -93552,7 +94867,7 @@ index 546db74..650d1b9 100644
93552 return addr; 94867 return addr;
93553 } 94868 }
93554 94869
93555@@ -2728,6 +3210,7 @@ void exit_mmap(struct mm_struct *mm) 94870@@ -2730,6 +3212,7 @@ void exit_mmap(struct mm_struct *mm)
93556 while (vma) { 94871 while (vma) {
93557 if (vma->vm_flags & VM_ACCOUNT) 94872 if (vma->vm_flags & VM_ACCOUNT)
93558 nr_accounted += vma_pages(vma); 94873 nr_accounted += vma_pages(vma);
@@ -93560,7 +94875,7 @@ index 546db74..650d1b9 100644
93560 vma = remove_vma(vma); 94875 vma = remove_vma(vma);
93561 } 94876 }
93562 vm_unacct_memory(nr_accounted); 94877 vm_unacct_memory(nr_accounted);
93563@@ -2745,6 +3228,13 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma) 94878@@ -2747,6 +3230,13 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma)
93564 struct vm_area_struct *prev; 94879 struct vm_area_struct *prev;
93565 struct rb_node **rb_link, *rb_parent; 94880 struct rb_node **rb_link, *rb_parent;
93566 94881
@@ -93574,7 +94889,7 @@ index 546db74..650d1b9 100644
93574 /* 94889 /*
93575 * The vm_pgoff of a purely anonymous vma should be irrelevant 94890 * The vm_pgoff of a purely anonymous vma should be irrelevant
93576 * until its first write fault, when page's anon_vma and index 94891 * until its first write fault, when page's anon_vma and index
93577@@ -2768,7 +3258,21 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma) 94892@@ -2770,7 +3260,21 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma)
93578 security_vm_enough_memory_mm(mm, vma_pages(vma))) 94893 security_vm_enough_memory_mm(mm, vma_pages(vma)))
93579 return -ENOMEM; 94894 return -ENOMEM;
93580 94895
@@ -93596,7 +94911,7 @@ index 546db74..650d1b9 100644
93596 return 0; 94911 return 0;
93597 } 94912 }
93598 94913
93599@@ -2787,6 +3291,8 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap, 94914@@ -2789,6 +3293,8 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
93600 struct rb_node **rb_link, *rb_parent; 94915 struct rb_node **rb_link, *rb_parent;
93601 bool faulted_in_anon_vma = true; 94916 bool faulted_in_anon_vma = true;
93602 94917
@@ -93605,7 +94920,7 @@ index 546db74..650d1b9 100644
93605 /* 94920 /*
93606 * If anonymous vma has not yet been faulted, update new pgoff 94921 * If anonymous vma has not yet been faulted, update new pgoff
93607 * to match new location, to increase its chance of merging. 94922 * to match new location, to increase its chance of merging.
93608@@ -2851,6 +3357,39 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap, 94923@@ -2853,6 +3359,39 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
93609 return NULL; 94924 return NULL;
93610 } 94925 }
93611 94926
@@ -93645,7 +94960,7 @@ index 546db74..650d1b9 100644
93645 /* 94960 /*
93646 * Return true if the calling process may expand its vm space by the passed 94961 * Return true if the calling process may expand its vm space by the passed
93647 * number of pages 94962 * number of pages
93648@@ -2862,6 +3401,7 @@ int may_expand_vm(struct mm_struct *mm, unsigned long npages) 94963@@ -2864,6 +3403,7 @@ int may_expand_vm(struct mm_struct *mm, unsigned long npages)
93649 94964
93650 lim = rlimit(RLIMIT_AS) >> PAGE_SHIFT; 94965 lim = rlimit(RLIMIT_AS) >> PAGE_SHIFT;
93651 94966
@@ -93653,7 +94968,7 @@ index 546db74..650d1b9 100644
93653 if (cur + npages > lim) 94968 if (cur + npages > lim)
93654 return 0; 94969 return 0;
93655 return 1; 94970 return 1;
93656@@ -2932,6 +3472,22 @@ int install_special_mapping(struct mm_struct *mm, 94971@@ -2934,6 +3474,22 @@ int install_special_mapping(struct mm_struct *mm,
93657 vma->vm_start = addr; 94972 vma->vm_start = addr;
93658 vma->vm_end = addr + len; 94973 vma->vm_end = addr + len;
93659 94974
@@ -93677,13 +94992,13 @@ index 546db74..650d1b9 100644
93677 vma->vm_page_prot = vm_get_page_prot(vma->vm_flags); 94992 vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
93678 94993
93679diff --git a/mm/mprotect.c b/mm/mprotect.c 94994diff --git a/mm/mprotect.c b/mm/mprotect.c
93680index bb53a65..249c052 100644 94995index 769a67a..414d24f 100644
93681--- a/mm/mprotect.c 94996--- a/mm/mprotect.c
93682+++ b/mm/mprotect.c 94997+++ b/mm/mprotect.c
93683@@ -23,10 +23,18 @@ 94998@@ -24,10 +24,18 @@
93684 #include <linux/mmu_notifier.h>
93685 #include <linux/migrate.h> 94999 #include <linux/migrate.h>
93686 #include <linux/perf_event.h> 95000 #include <linux/perf_event.h>
95001 #include <linux/ksm.h>
93687+#include <linux/sched/sysctl.h> 95002+#include <linux/sched/sysctl.h>
93688+ 95003+
93689+#ifdef CONFIG_PAX_MPROTECT 95004+#ifdef CONFIG_PAX_MPROTECT
@@ -93699,7 +95014,7 @@ index bb53a65..249c052 100644
93699 95014
93700 #ifndef pgprot_modify 95015 #ifndef pgprot_modify
93701 static inline pgprot_t pgprot_modify(pgprot_t oldprot, pgprot_t newprot) 95016 static inline pgprot_t pgprot_modify(pgprot_t oldprot, pgprot_t newprot)
93702@@ -222,6 +230,48 @@ unsigned long change_protection(struct vm_area_struct *vma, unsigned long start, 95017@@ -214,6 +222,48 @@ unsigned long change_protection(struct vm_area_struct *vma, unsigned long start,
93703 return pages; 95018 return pages;
93704 } 95019 }
93705 95020
@@ -93748,7 +95063,7 @@ index bb53a65..249c052 100644
93748 int 95063 int
93749 mprotect_fixup(struct vm_area_struct *vma, struct vm_area_struct **pprev, 95064 mprotect_fixup(struct vm_area_struct *vma, struct vm_area_struct **pprev,
93750 unsigned long start, unsigned long end, unsigned long newflags) 95065 unsigned long start, unsigned long end, unsigned long newflags)
93751@@ -234,11 +284,29 @@ mprotect_fixup(struct vm_area_struct *vma, struct vm_area_struct **pprev, 95066@@ -226,11 +276,29 @@ mprotect_fixup(struct vm_area_struct *vma, struct vm_area_struct **pprev,
93752 int error; 95067 int error;
93753 int dirty_accountable = 0; 95068 int dirty_accountable = 0;
93754 95069
@@ -93778,7 +95093,7 @@ index bb53a65..249c052 100644
93778 /* 95093 /*
93779 * If we make a private mapping writable we increase our commit; 95094 * If we make a private mapping writable we increase our commit;
93780 * but (without finer accounting) cannot reduce our commit if we 95095 * but (without finer accounting) cannot reduce our commit if we
93781@@ -255,6 +323,42 @@ mprotect_fixup(struct vm_area_struct *vma, struct vm_area_struct **pprev, 95096@@ -247,6 +315,42 @@ mprotect_fixup(struct vm_area_struct *vma, struct vm_area_struct **pprev,
93782 } 95097 }
93783 } 95098 }
93784 95099
@@ -93821,7 +95136,7 @@ index bb53a65..249c052 100644
93821 /* 95136 /*
93822 * First try to merge with previous and/or next vma. 95137 * First try to merge with previous and/or next vma.
93823 */ 95138 */
93824@@ -285,9 +389,21 @@ success: 95139@@ -277,9 +381,21 @@ success:
93825 * vm_flags and vm_page_prot are protected by the mmap_sem 95140 * vm_flags and vm_page_prot are protected by the mmap_sem
93826 * held in write mode. 95141 * held in write mode.
93827 */ 95142 */
@@ -93844,7 +95159,7 @@ index bb53a65..249c052 100644
93844 95159
93845 if (vma_wants_writenotify(vma)) { 95160 if (vma_wants_writenotify(vma)) {
93846 vma->vm_page_prot = vm_get_page_prot(newflags & ~VM_SHARED); 95161 vma->vm_page_prot = vm_get_page_prot(newflags & ~VM_SHARED);
93847@@ -326,6 +442,17 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len, 95162@@ -318,6 +434,17 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len,
93848 end = start + len; 95163 end = start + len;
93849 if (end <= start) 95164 if (end <= start)
93850 return -ENOMEM; 95165 return -ENOMEM;
@@ -93862,7 +95177,7 @@ index bb53a65..249c052 100644
93862 if (!arch_validate_prot(prot)) 95177 if (!arch_validate_prot(prot))
93863 return -EINVAL; 95178 return -EINVAL;
93864 95179
93865@@ -333,7 +460,7 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len, 95180@@ -325,7 +452,7 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len,
93866 /* 95181 /*
93867 * Does the application expect PROT_READ to imply PROT_EXEC: 95182 * Does the application expect PROT_READ to imply PROT_EXEC:
93868 */ 95183 */
@@ -93871,7 +95186,7 @@ index bb53a65..249c052 100644
93871 prot |= PROT_EXEC; 95186 prot |= PROT_EXEC;
93872 95187
93873 vm_flags = calc_vm_prot_bits(prot); 95188 vm_flags = calc_vm_prot_bits(prot);
93874@@ -365,6 +492,11 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len, 95189@@ -357,6 +484,11 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len,
93875 if (start > vma->vm_start) 95190 if (start > vma->vm_start)
93876 prev = vma; 95191 prev = vma;
93877 95192
@@ -93883,7 +95198,7 @@ index bb53a65..249c052 100644
93883 for (nstart = start ; ; ) { 95198 for (nstart = start ; ; ) {
93884 unsigned long newflags; 95199 unsigned long newflags;
93885 95200
93886@@ -375,6 +507,14 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len, 95201@@ -367,6 +499,14 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len,
93887 95202
93888 /* newflags >> 4 shift VM_MAY% in place of VM_% */ 95203 /* newflags >> 4 shift VM_MAY% in place of VM_% */
93889 if ((newflags & ~(newflags >> 4)) & (VM_READ | VM_WRITE | VM_EXEC)) { 95204 if ((newflags & ~(newflags >> 4)) & (VM_READ | VM_WRITE | VM_EXEC)) {
@@ -93898,7 +95213,7 @@ index bb53a65..249c052 100644
93898 error = -EACCES; 95213 error = -EACCES;
93899 goto out; 95214 goto out;
93900 } 95215 }
93901@@ -389,6 +529,9 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len, 95216@@ -381,6 +521,9 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len,
93902 error = mprotect_fixup(vma, &prev, nstart, tmp, newflags); 95217 error = mprotect_fixup(vma, &prev, nstart, tmp, newflags);
93903 if (error) 95218 if (error)
93904 goto out; 95219 goto out;
@@ -93909,7 +95224,7 @@ index bb53a65..249c052 100644
93909 95224
93910 if (nstart < prev->vm_end) 95225 if (nstart < prev->vm_end)
93911diff --git a/mm/mremap.c b/mm/mremap.c 95226diff --git a/mm/mremap.c b/mm/mremap.c
93912index 0843feb..4f5b2e6 100644 95227index 0843feb..c3cde48 100644
93913--- a/mm/mremap.c 95228--- a/mm/mremap.c
93914+++ b/mm/mremap.c 95229+++ b/mm/mremap.c
93915@@ -144,6 +144,12 @@ static void move_ptes(struct vm_area_struct *vma, pmd_t *old_pmd, 95230@@ -144,6 +144,12 @@ static void move_ptes(struct vm_area_struct *vma, pmd_t *old_pmd,
@@ -93925,7 +95240,26 @@ index 0843feb..4f5b2e6 100644
93925 pte = move_soft_dirty_pte(pte); 95240 pte = move_soft_dirty_pte(pte);
93926 set_pte_at(mm, new_addr, new_pte, pte); 95241 set_pte_at(mm, new_addr, new_pte, pte);
93927 } 95242 }
93928@@ -337,6 +343,11 @@ static struct vm_area_struct *vma_to_resize(unsigned long addr, 95243@@ -194,10 +200,17 @@ unsigned long move_page_tables(struct vm_area_struct *vma,
95244 break;
95245 if (pmd_trans_huge(*old_pmd)) {
95246 int err = 0;
95247- if (extent == HPAGE_PMD_SIZE)
95248+ if (extent == HPAGE_PMD_SIZE) {
95249+ VM_BUG_ON(vma->vm_file || !vma->anon_vma);
95250+ /* See comment in move_ptes() */
95251+ if (need_rmap_locks)
95252+ anon_vma_lock_write(vma->anon_vma);
95253 err = move_huge_pmd(vma, new_vma, old_addr,
95254 new_addr, old_end,
95255 old_pmd, new_pmd);
95256+ if (need_rmap_locks)
95257+ anon_vma_unlock_write(vma->anon_vma);
95258+ }
95259 if (err > 0) {
95260 need_flush = true;
95261 continue;
95262@@ -337,6 +350,11 @@ static struct vm_area_struct *vma_to_resize(unsigned long addr,
93929 if (is_vm_hugetlb_page(vma)) 95263 if (is_vm_hugetlb_page(vma))
93930 goto Einval; 95264 goto Einval;
93931 95265
@@ -93937,7 +95271,7 @@ index 0843feb..4f5b2e6 100644
93937 /* We can't remap across vm area boundaries */ 95271 /* We can't remap across vm area boundaries */
93938 if (old_len > vma->vm_end - addr) 95272 if (old_len > vma->vm_end - addr)
93939 goto Efault; 95273 goto Efault;
93940@@ -392,20 +403,25 @@ static unsigned long mremap_to(unsigned long addr, unsigned long old_len, 95274@@ -392,20 +410,25 @@ static unsigned long mremap_to(unsigned long addr, unsigned long old_len,
93941 unsigned long ret = -EINVAL; 95275 unsigned long ret = -EINVAL;
93942 unsigned long charged = 0; 95276 unsigned long charged = 0;
93943 unsigned long map_flags; 95277 unsigned long map_flags;
@@ -93968,7 +95302,7 @@ index 0843feb..4f5b2e6 100644
93968 goto out; 95302 goto out;
93969 95303
93970 ret = do_munmap(mm, new_addr, new_len); 95304 ret = do_munmap(mm, new_addr, new_len);
93971@@ -474,6 +490,7 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len, 95305@@ -474,6 +497,7 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len,
93972 unsigned long ret = -EINVAL; 95306 unsigned long ret = -EINVAL;
93973 unsigned long charged = 0; 95307 unsigned long charged = 0;
93974 bool locked = false; 95308 bool locked = false;
@@ -93976,7 +95310,7 @@ index 0843feb..4f5b2e6 100644
93976 95310
93977 if (flags & ~(MREMAP_FIXED | MREMAP_MAYMOVE)) 95311 if (flags & ~(MREMAP_FIXED | MREMAP_MAYMOVE))
93978 return ret; 95312 return ret;
93979@@ -495,6 +512,17 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len, 95313@@ -495,6 +519,17 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len,
93980 if (!new_len) 95314 if (!new_len)
93981 return ret; 95315 return ret;
93982 95316
@@ -93994,7 +95328,7 @@ index 0843feb..4f5b2e6 100644
93994 down_write(&current->mm->mmap_sem); 95328 down_write(&current->mm->mmap_sem);
93995 95329
93996 if (flags & MREMAP_FIXED) { 95330 if (flags & MREMAP_FIXED) {
93997@@ -545,6 +573,7 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len, 95331@@ -545,6 +580,7 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len,
93998 new_addr = addr; 95332 new_addr = addr;
93999 } 95333 }
94000 ret = addr; 95334 ret = addr;
@@ -94002,7 +95336,7 @@ index 0843feb..4f5b2e6 100644
94002 goto out; 95336 goto out;
94003 } 95337 }
94004 } 95338 }
94005@@ -568,7 +597,12 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len, 95339@@ -568,7 +604,12 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len,
94006 goto out; 95340 goto out;
94007 } 95341 }
94008 95342
@@ -94016,10 +95350,10 @@ index 0843feb..4f5b2e6 100644
94016 out: 95350 out:
94017 if (ret & ~PAGE_MASK) 95351 if (ret & ~PAGE_MASK)
94018diff --git a/mm/nommu.c b/mm/nommu.c 95352diff --git a/mm/nommu.c b/mm/nommu.c
94019index fec093a..8162f74 100644 95353index 8740213..f87e25b 100644
94020--- a/mm/nommu.c 95354--- a/mm/nommu.c
94021+++ b/mm/nommu.c 95355+++ b/mm/nommu.c
94022@@ -64,7 +64,6 @@ int sysctl_max_map_count = DEFAULT_MAX_MAP_COUNT; 95356@@ -65,7 +65,6 @@ int sysctl_max_map_count = DEFAULT_MAX_MAP_COUNT;
94023 int sysctl_nr_trim_pages = CONFIG_NOMMU_INITIAL_TRIM_EXCESS; 95357 int sysctl_nr_trim_pages = CONFIG_NOMMU_INITIAL_TRIM_EXCESS;
94024 unsigned long sysctl_user_reserve_kbytes __read_mostly = 1UL << 17; /* 128MB */ 95358 unsigned long sysctl_user_reserve_kbytes __read_mostly = 1UL << 17; /* 128MB */
94025 unsigned long sysctl_admin_reserve_kbytes __read_mostly = 1UL << 13; /* 8MB */ 95359 unsigned long sysctl_admin_reserve_kbytes __read_mostly = 1UL << 13; /* 8MB */
@@ -94027,7 +95361,7 @@ index fec093a..8162f74 100644
94027 95361
94028 atomic_long_t mmap_pages_allocated; 95362 atomic_long_t mmap_pages_allocated;
94029 95363
94030@@ -844,15 +843,6 @@ struct vm_area_struct *find_vma(struct mm_struct *mm, unsigned long addr) 95364@@ -845,15 +844,6 @@ struct vm_area_struct *find_vma(struct mm_struct *mm, unsigned long addr)
94031 EXPORT_SYMBOL(find_vma); 95365 EXPORT_SYMBOL(find_vma);
94032 95366
94033 /* 95367 /*
@@ -94043,7 +95377,7 @@ index fec093a..8162f74 100644
94043 * expand a stack to a given address 95377 * expand a stack to a given address
94044 * - not supported under NOMMU conditions 95378 * - not supported under NOMMU conditions
94045 */ 95379 */
94046@@ -1563,6 +1553,7 @@ int split_vma(struct mm_struct *mm, struct vm_area_struct *vma, 95380@@ -1564,6 +1554,7 @@ int split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
94047 95381
94048 /* most fields are the same, copy all, and then fixup */ 95382 /* most fields are the same, copy all, and then fixup */
94049 *new = *vma; 95383 *new = *vma;
@@ -94051,7 +95385,7 @@ index fec093a..8162f74 100644
94051 *region = *vma->vm_region; 95385 *region = *vma->vm_region;
94052 new->vm_region = region; 95386 new->vm_region = region;
94053 95387
94054@@ -1992,8 +1983,8 @@ int generic_file_remap_pages(struct vm_area_struct *vma, unsigned long addr, 95388@@ -1993,8 +1984,8 @@ int generic_file_remap_pages(struct vm_area_struct *vma, unsigned long addr,
94055 } 95389 }
94056 EXPORT_SYMBOL(generic_file_remap_pages); 95390 EXPORT_SYMBOL(generic_file_remap_pages);
94057 95391
@@ -94062,7 +95396,7 @@ index fec093a..8162f74 100644
94062 { 95396 {
94063 struct vm_area_struct *vma; 95397 struct vm_area_struct *vma;
94064 95398
94065@@ -2034,8 +2025,8 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm, 95399@@ -2035,8 +2026,8 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm,
94066 * 95400 *
94067 * The caller must hold a reference on @mm. 95401 * The caller must hold a reference on @mm.
94068 */ 95402 */
@@ -94073,7 +95407,7 @@ index fec093a..8162f74 100644
94073 { 95407 {
94074 return __access_remote_vm(NULL, mm, addr, buf, len, write); 95408 return __access_remote_vm(NULL, mm, addr, buf, len, write);
94075 } 95409 }
94076@@ -2044,7 +2035,7 @@ int access_remote_vm(struct mm_struct *mm, unsigned long addr, 95410@@ -2045,7 +2036,7 @@ int access_remote_vm(struct mm_struct *mm, unsigned long addr,
94077 * Access another process' address space. 95411 * Access another process' address space.
94078 * - source/target buffer must be kernel space 95412 * - source/target buffer must be kernel space
94079 */ 95413 */
@@ -94096,7 +95430,7 @@ index 7106cb1..0805f48 100644
94096 unsigned long bg_thresh, 95430 unsigned long bg_thresh,
94097 unsigned long dirty, 95431 unsigned long dirty,
94098diff --git a/mm/page_alloc.c b/mm/page_alloc.c 95432diff --git a/mm/page_alloc.c b/mm/page_alloc.c
94099index 56f268d..4d35ec4 100644 95433index 7387a67..67105e4 100644
94100--- a/mm/page_alloc.c 95434--- a/mm/page_alloc.c
94101+++ b/mm/page_alloc.c 95435+++ b/mm/page_alloc.c
94102@@ -61,6 +61,7 @@ 95436@@ -61,6 +61,7 @@
@@ -94116,7 +95450,7 @@ index 56f268d..4d35ec4 100644
94116 { 95450 {
94117 __free_pages_ok(page, compound_order(page)); 95451 __free_pages_ok(page, compound_order(page));
94118 } 95452 }
94119@@ -712,6 +713,10 @@ static bool free_pages_prepare(struct page *page, unsigned int order) 95453@@ -728,6 +729,10 @@ static bool free_pages_prepare(struct page *page, unsigned int order)
94120 int i; 95454 int i;
94121 int bad = 0; 95455 int bad = 0;
94122 95456
@@ -94127,7 +95461,7 @@ index 56f268d..4d35ec4 100644
94127 trace_mm_page_free(page, order); 95461 trace_mm_page_free(page, order);
94128 kmemcheck_free_shadow(page, order); 95462 kmemcheck_free_shadow(page, order);
94129 95463
94130@@ -728,6 +733,12 @@ static bool free_pages_prepare(struct page *page, unsigned int order) 95464@@ -744,6 +749,12 @@ static bool free_pages_prepare(struct page *page, unsigned int order)
94131 debug_check_no_obj_freed(page_address(page), 95465 debug_check_no_obj_freed(page_address(page),
94132 PAGE_SIZE << order); 95466 PAGE_SIZE << order);
94133 } 95467 }
@@ -94140,7 +95474,7 @@ index 56f268d..4d35ec4 100644
94140 arch_free_page(page, order); 95474 arch_free_page(page, order);
94141 kernel_map_pages(page, 1 << order, 0); 95475 kernel_map_pages(page, 1 << order, 0);
94142 95476
94143@@ -750,6 +761,20 @@ static void __free_pages_ok(struct page *page, unsigned int order) 95477@@ -766,6 +777,20 @@ static void __free_pages_ok(struct page *page, unsigned int order)
94144 local_irq_restore(flags); 95478 local_irq_restore(flags);
94145 } 95479 }
94146 95480
@@ -94161,7 +95495,7 @@ index 56f268d..4d35ec4 100644
94161 void __init __free_pages_bootmem(struct page *page, unsigned int order) 95495 void __init __free_pages_bootmem(struct page *page, unsigned int order)
94162 { 95496 {
94163 unsigned int nr_pages = 1 << order; 95497 unsigned int nr_pages = 1 << order;
94164@@ -765,6 +790,19 @@ void __init __free_pages_bootmem(struct page *page, unsigned int order) 95498@@ -781,6 +806,19 @@ void __init __free_pages_bootmem(struct page *page, unsigned int order)
94165 __ClearPageReserved(p); 95499 __ClearPageReserved(p);
94166 set_page_count(p, 0); 95500 set_page_count(p, 0);
94167 95501
@@ -94181,7 +95515,7 @@ index 56f268d..4d35ec4 100644
94181 page_zone(page)->managed_pages += nr_pages; 95515 page_zone(page)->managed_pages += nr_pages;
94182 set_page_refcounted(page); 95516 set_page_refcounted(page);
94183 __free_pages(page, order); 95517 __free_pages(page, order);
94184@@ -870,8 +908,10 @@ static int prep_new_page(struct page *page, int order, gfp_t gfp_flags) 95518@@ -897,8 +935,10 @@ static int prep_new_page(struct page *page, int order, gfp_t gfp_flags)
94185 arch_alloc_page(page, order); 95519 arch_alloc_page(page, order);
94186 kernel_map_pages(page, 1 << order, 1); 95520 kernel_map_pages(page, 1 << order, 1);
94187 95521
@@ -94192,8 +95526,23 @@ index 56f268d..4d35ec4 100644
94192 95526
94193 if (order && (gfp_flags & __GFP_COMP)) 95527 if (order && (gfp_flags & __GFP_COMP))
94194 prep_compound_page(page, order); 95528 prep_compound_page(page, order);
95529@@ -2401,7 +2441,7 @@ static void reset_alloc_batches(struct zonelist *zonelist,
95530 continue;
95531 mod_zone_page_state(zone, NR_ALLOC_BATCH,
95532 high_wmark_pages(zone) - low_wmark_pages(zone) -
95533- atomic_long_read(&zone->vm_stat[NR_ALLOC_BATCH]));
95534+ atomic_long_read_unchecked(&zone->vm_stat[NR_ALLOC_BATCH]));
95535 }
95536 }
95537
95538@@ -6565,4 +6605,4 @@ void dump_page(struct page *page, char *reason)
95539 {
95540 dump_page_badflags(page, reason, 0);
95541 }
95542-EXPORT_SYMBOL_GPL(dump_page);
95543+EXPORT_SYMBOL(dump_page);
94195diff --git a/mm/page_io.c b/mm/page_io.c 95544diff --git a/mm/page_io.c b/mm/page_io.c
94196index 8c79a47..a689e0d 100644 95545index 7c59ef6..1358905 100644
94197--- a/mm/page_io.c 95546--- a/mm/page_io.c
94198+++ b/mm/page_io.c 95547+++ b/mm/page_io.c
94199@@ -260,7 +260,7 @@ int __swap_writepage(struct page *page, struct writeback_control *wbc, 95548@@ -260,7 +260,7 @@ int __swap_writepage(struct page *page, struct writeback_control *wbc,
@@ -94206,7 +95555,7 @@ index 8c79a47..a689e0d 100644
94206 }; 95555 };
94207 95556
94208diff --git a/mm/percpu.c b/mm/percpu.c 95557diff --git a/mm/percpu.c b/mm/percpu.c
94209index 0d10def..6dc822d 100644 95558index 036cfe0..980d0fa 100644
94210--- a/mm/percpu.c 95559--- a/mm/percpu.c
94211+++ b/mm/percpu.c 95560+++ b/mm/percpu.c
94212@@ -122,7 +122,7 @@ static unsigned int pcpu_low_unit_cpu __read_mostly; 95561@@ -122,7 +122,7 @@ static unsigned int pcpu_low_unit_cpu __read_mostly;
@@ -94270,7 +95619,7 @@ index fd26d04..0cea1b0 100644
94270 if (!mm || IS_ERR(mm)) { 95619 if (!mm || IS_ERR(mm)) {
94271 rc = IS_ERR(mm) ? PTR_ERR(mm) : -ESRCH; 95620 rc = IS_ERR(mm) ? PTR_ERR(mm) : -ESRCH;
94272diff --git a/mm/rmap.c b/mm/rmap.c 95621diff --git a/mm/rmap.c b/mm/rmap.c
94273index 068522d..f539f21 100644 95622index d3cbac5..0788da4 100644
94274--- a/mm/rmap.c 95623--- a/mm/rmap.c
94275+++ b/mm/rmap.c 95624+++ b/mm/rmap.c
94276@@ -163,6 +163,10 @@ int anon_vma_prepare(struct vm_area_struct *vma) 95625@@ -163,6 +163,10 @@ int anon_vma_prepare(struct vm_area_struct *vma)
@@ -94373,7 +95722,7 @@ index 068522d..f539f21 100644
94373 95722
94374 /* 95723 /*
94375diff --git a/mm/shmem.c b/mm/shmem.c 95724diff --git a/mm/shmem.c b/mm/shmem.c
94376index 902a148..58f9d59 100644 95725index 1f18c9d..3e03d33 100644
94377--- a/mm/shmem.c 95726--- a/mm/shmem.c
94378+++ b/mm/shmem.c 95727+++ b/mm/shmem.c
94379@@ -33,7 +33,7 @@ 95728@@ -33,7 +33,7 @@
@@ -94394,7 +95743,7 @@ index 902a148..58f9d59 100644
94394 95743
94395 /* 95744 /*
94396 * shmem_fallocate and shmem_writepage communicate via inode->i_private 95745 * shmem_fallocate and shmem_writepage communicate via inode->i_private
94397@@ -2232,6 +2232,11 @@ static const struct xattr_handler *shmem_xattr_handlers[] = { 95746@@ -2218,6 +2218,11 @@ static const struct xattr_handler *shmem_xattr_handlers[] = {
94398 static int shmem_xattr_validate(const char *name) 95747 static int shmem_xattr_validate(const char *name)
94399 { 95748 {
94400 struct { const char *prefix; size_t len; } arr[] = { 95749 struct { const char *prefix; size_t len; } arr[] = {
@@ -94406,7 +95755,7 @@ index 902a148..58f9d59 100644
94406 { XATTR_SECURITY_PREFIX, XATTR_SECURITY_PREFIX_LEN }, 95755 { XATTR_SECURITY_PREFIX, XATTR_SECURITY_PREFIX_LEN },
94407 { XATTR_TRUSTED_PREFIX, XATTR_TRUSTED_PREFIX_LEN } 95756 { XATTR_TRUSTED_PREFIX, XATTR_TRUSTED_PREFIX_LEN }
94408 }; 95757 };
94409@@ -2287,6 +2292,15 @@ static int shmem_setxattr(struct dentry *dentry, const char *name, 95758@@ -2273,6 +2278,15 @@ static int shmem_setxattr(struct dentry *dentry, const char *name,
94410 if (err) 95759 if (err)
94411 return err; 95760 return err;
94412 95761
@@ -94422,7 +95771,7 @@ index 902a148..58f9d59 100644
94422 return simple_xattr_set(&info->xattrs, name, value, size, flags); 95771 return simple_xattr_set(&info->xattrs, name, value, size, flags);
94423 } 95772 }
94424 95773
94425@@ -2599,8 +2613,7 @@ int shmem_fill_super(struct super_block *sb, void *data, int silent) 95774@@ -2585,8 +2599,7 @@ int shmem_fill_super(struct super_block *sb, void *data, int silent)
94426 int err = -ENOMEM; 95775 int err = -ENOMEM;
94427 95776
94428 /* Round up to L1_CACHE_BYTES to resist false sharing */ 95777 /* Round up to L1_CACHE_BYTES to resist false sharing */
@@ -94433,7 +95782,7 @@ index 902a148..58f9d59 100644
94433 return -ENOMEM; 95782 return -ENOMEM;
94434 95783
94435diff --git a/mm/slab.c b/mm/slab.c 95784diff --git a/mm/slab.c b/mm/slab.c
94436index eb043bf..d82f5a8 100644 95785index b264214..83872cd 100644
94437--- a/mm/slab.c 95786--- a/mm/slab.c
94438+++ b/mm/slab.c 95787+++ b/mm/slab.c
94439@@ -300,10 +300,12 @@ static void kmem_cache_node_init(struct kmem_cache_node *parent) 95788@@ -300,10 +300,12 @@ static void kmem_cache_node_init(struct kmem_cache_node *parent)
@@ -94615,7 +95964,7 @@ index eb043bf..d82f5a8 100644
94615 * ksize - get the actual amount of memory allocated for a given object 95964 * ksize - get the actual amount of memory allocated for a given object
94616 * @objp: Pointer to the object 95965 * @objp: Pointer to the object
94617diff --git a/mm/slab.h b/mm/slab.h 95966diff --git a/mm/slab.h b/mm/slab.h
94618index 0859c42..2f7b737 100644 95967index 8184a7c..ab27737 100644
94619--- a/mm/slab.h 95968--- a/mm/slab.h
94620+++ b/mm/slab.h 95969+++ b/mm/slab.h
94621@@ -32,6 +32,15 @@ extern struct list_head slab_caches; 95970@@ -32,6 +32,15 @@ extern struct list_head slab_caches;
@@ -94644,7 +95993,7 @@ index 0859c42..2f7b737 100644
94644 95993
94645 #if defined(CONFIG_DEBUG_SLAB) 95994 #if defined(CONFIG_DEBUG_SLAB)
94646 #define SLAB_DEBUG_FLAGS (SLAB_RED_ZONE | SLAB_POISON | SLAB_STORE_USER) 95995 #define SLAB_DEBUG_FLAGS (SLAB_RED_ZONE | SLAB_POISON | SLAB_STORE_USER)
94647@@ -233,6 +243,9 @@ static inline struct kmem_cache *cache_from_obj(struct kmem_cache *s, void *x) 95996@@ -257,6 +267,9 @@ static inline struct kmem_cache *cache_from_obj(struct kmem_cache *s, void *x)
94648 return s; 95997 return s;
94649 95998
94650 page = virt_to_head_page(x); 95999 page = virt_to_head_page(x);
@@ -94655,7 +96004,7 @@ index 0859c42..2f7b737 100644
94655 if (slab_equal_or_root(cachep, s)) 96004 if (slab_equal_or_root(cachep, s))
94656 return cachep; 96005 return cachep;
94657diff --git a/mm/slab_common.c b/mm/slab_common.c 96006diff --git a/mm/slab_common.c b/mm/slab_common.c
94658index 0b7bb39..334c328 100644 96007index 1ec3c61..2067c11 100644
94659--- a/mm/slab_common.c 96008--- a/mm/slab_common.c
94660+++ b/mm/slab_common.c 96009+++ b/mm/slab_common.c
94661@@ -23,11 +23,22 @@ 96010@@ -23,11 +23,22 @@
@@ -94682,16 +96031,16 @@ index 0b7bb39..334c328 100644
94682 #ifdef CONFIG_DEBUG_VM 96031 #ifdef CONFIG_DEBUG_VM
94683 static int kmem_cache_sanity_check(struct mem_cgroup *memcg, const char *name, 96032 static int kmem_cache_sanity_check(struct mem_cgroup *memcg, const char *name,
94684 size_t size) 96033 size_t size)
94685@@ -212,7 +223,7 @@ kmem_cache_create_memcg(struct mem_cgroup *memcg, const char *name, size_t size, 96034@@ -225,7 +236,7 @@ kmem_cache_create_memcg(struct mem_cgroup *memcg, const char *name, size_t size,
96035 if (err)
96036 goto out_free_cache;
94686 96037
94687 err = __kmem_cache_create(s, flags); 96038- s->refcount = 1;
94688 if (!err) { 96039+ atomic_set(&s->refcount, 1);
94689- s->refcount = 1; 96040 list_add(&s->list, &slab_caches);
94690+ atomic_set(&s->refcount, 1); 96041 memcg_register_cache(s);
94691 list_add(&s->list, &slab_caches); 96042
94692 memcg_cache_list_add(memcg, s); 96043@@ -278,8 +289,7 @@ void kmem_cache_destroy(struct kmem_cache *s)
94693 } else {
94694@@ -258,8 +269,7 @@ void kmem_cache_destroy(struct kmem_cache *s)
94695 96044
94696 get_online_cpus(); 96045 get_online_cpus();
94697 mutex_lock(&slab_mutex); 96046 mutex_lock(&slab_mutex);
@@ -94701,7 +96050,7 @@ index 0b7bb39..334c328 100644
94701 list_del(&s->list); 96050 list_del(&s->list);
94702 96051
94703 if (!__kmem_cache_shutdown(s)) { 96052 if (!__kmem_cache_shutdown(s)) {
94704@@ -305,7 +315,7 @@ void __init create_boot_cache(struct kmem_cache *s, const char *name, size_t siz 96053@@ -326,7 +336,7 @@ void __init create_boot_cache(struct kmem_cache *s, const char *name, size_t siz
94705 panic("Creation of kmalloc slab %s size=%zu failed. Reason %d\n", 96054 panic("Creation of kmalloc slab %s size=%zu failed. Reason %d\n",
94706 name, size, err); 96055 name, size, err);
94707 96056
@@ -94710,7 +96059,7 @@ index 0b7bb39..334c328 100644
94710 } 96059 }
94711 96060
94712 struct kmem_cache *__init create_kmalloc_cache(const char *name, size_t size, 96061 struct kmem_cache *__init create_kmalloc_cache(const char *name, size_t size,
94713@@ -318,7 +328,7 @@ struct kmem_cache *__init create_kmalloc_cache(const char *name, size_t size, 96062@@ -339,7 +349,7 @@ struct kmem_cache *__init create_kmalloc_cache(const char *name, size_t size,
94714 96063
94715 create_boot_cache(s, name, size, flags); 96064 create_boot_cache(s, name, size, flags);
94716 list_add(&s->list, &slab_caches); 96065 list_add(&s->list, &slab_caches);
@@ -94719,7 +96068,7 @@ index 0b7bb39..334c328 100644
94719 return s; 96068 return s;
94720 } 96069 }
94721 96070
94722@@ -330,6 +340,11 @@ struct kmem_cache *kmalloc_dma_caches[KMALLOC_SHIFT_HIGH + 1]; 96071@@ -351,6 +361,11 @@ struct kmem_cache *kmalloc_dma_caches[KMALLOC_SHIFT_HIGH + 1];
94723 EXPORT_SYMBOL(kmalloc_dma_caches); 96072 EXPORT_SYMBOL(kmalloc_dma_caches);
94724 #endif 96073 #endif
94725 96074
@@ -94731,7 +96080,7 @@ index 0b7bb39..334c328 100644
94731 /* 96080 /*
94732 * Conversion table for small slabs sizes / 8 to the index in the 96081 * Conversion table for small slabs sizes / 8 to the index in the
94733 * kmalloc array. This is necessary for slabs < 192 since we have non power 96082 * kmalloc array. This is necessary for slabs < 192 since we have non power
94734@@ -394,6 +409,13 @@ struct kmem_cache *kmalloc_slab(size_t size, gfp_t flags) 96083@@ -415,6 +430,13 @@ struct kmem_cache *kmalloc_slab(size_t size, gfp_t flags)
94735 return kmalloc_dma_caches[index]; 96084 return kmalloc_dma_caches[index];
94736 96085
94737 #endif 96086 #endif
@@ -94745,7 +96094,7 @@ index 0b7bb39..334c328 100644
94745 return kmalloc_caches[index]; 96094 return kmalloc_caches[index];
94746 } 96095 }
94747 96096
94748@@ -450,7 +472,7 @@ void __init create_kmalloc_caches(unsigned long flags) 96097@@ -471,7 +493,7 @@ void __init create_kmalloc_caches(unsigned long flags)
94749 for (i = KMALLOC_SHIFT_LOW; i <= KMALLOC_SHIFT_HIGH; i++) { 96098 for (i = KMALLOC_SHIFT_LOW; i <= KMALLOC_SHIFT_HIGH; i++) {
94750 if (!kmalloc_caches[i]) { 96099 if (!kmalloc_caches[i]) {
94751 kmalloc_caches[i] = create_kmalloc_cache(NULL, 96100 kmalloc_caches[i] = create_kmalloc_cache(NULL,
@@ -94754,7 +96103,7 @@ index 0b7bb39..334c328 100644
94754 } 96103 }
94755 96104
94756 /* 96105 /*
94757@@ -459,10 +481,10 @@ void __init create_kmalloc_caches(unsigned long flags) 96106@@ -480,10 +502,10 @@ void __init create_kmalloc_caches(unsigned long flags)
94758 * earlier power of two caches 96107 * earlier power of two caches
94759 */ 96108 */
94760 if (KMALLOC_MIN_SIZE <= 32 && !kmalloc_caches[1] && i == 6) 96109 if (KMALLOC_MIN_SIZE <= 32 && !kmalloc_caches[1] && i == 6)
@@ -94767,7 +96116,7 @@ index 0b7bb39..334c328 100644
94767 } 96116 }
94768 96117
94769 /* Kmalloc array is now usable */ 96118 /* Kmalloc array is now usable */
94770@@ -495,6 +517,23 @@ void __init create_kmalloc_caches(unsigned long flags) 96119@@ -516,6 +538,23 @@ void __init create_kmalloc_caches(unsigned long flags)
94771 } 96120 }
94772 } 96121 }
94773 #endif 96122 #endif
@@ -94791,7 +96140,7 @@ index 0b7bb39..334c328 100644
94791 } 96140 }
94792 #endif /* !CONFIG_SLOB */ 96141 #endif /* !CONFIG_SLOB */
94793 96142
94794@@ -535,6 +574,9 @@ void print_slabinfo_header(struct seq_file *m) 96143@@ -556,6 +595,9 @@ void print_slabinfo_header(struct seq_file *m)
94795 seq_puts(m, " : globalstat <listallocs> <maxobjs> <grown> <reaped> " 96144 seq_puts(m, " : globalstat <listallocs> <maxobjs> <grown> <reaped> "
94796 "<error> <maxfreeable> <nodeallocs> <remotefrees> <alienoverflow>"); 96145 "<error> <maxfreeable> <nodeallocs> <remotefrees> <alienoverflow>");
94797 seq_puts(m, " : cpustat <allochit> <allocmiss> <freehit> <freemiss>"); 96146 seq_puts(m, " : cpustat <allochit> <allocmiss> <freehit> <freemiss>");
@@ -95173,7 +96522,7 @@ index 4bf8809..98a6914 100644
95173 EXPORT_SYMBOL(kmem_cache_free); 96522 EXPORT_SYMBOL(kmem_cache_free);
95174 96523
95175diff --git a/mm/slub.c b/mm/slub.c 96524diff --git a/mm/slub.c b/mm/slub.c
95176index 89490d9..c7b226a 100644 96525index 25f14ad..c904f6f 100644
95177--- a/mm/slub.c 96526--- a/mm/slub.c
95178+++ b/mm/slub.c 96527+++ b/mm/slub.c
95179@@ -207,7 +207,7 @@ struct track { 96528@@ -207,7 +207,7 @@ struct track {
@@ -95185,7 +96534,7 @@ index 89490d9..c7b226a 100644
95185 static int sysfs_slab_add(struct kmem_cache *); 96534 static int sysfs_slab_add(struct kmem_cache *);
95186 static int sysfs_slab_alias(struct kmem_cache *, const char *); 96535 static int sysfs_slab_alias(struct kmem_cache *, const char *);
95187 static void sysfs_slab_remove(struct kmem_cache *); 96536 static void sysfs_slab_remove(struct kmem_cache *);
95188@@ -530,7 +530,7 @@ static void print_track(const char *s, struct track *t) 96537@@ -545,7 +545,7 @@ static void print_track(const char *s, struct track *t)
95189 if (!t->addr) 96538 if (!t->addr)
95190 return; 96539 return;
95191 96540
@@ -95194,7 +96543,7 @@ index 89490d9..c7b226a 100644
95194 s, (void *)t->addr, jiffies - t->when, t->cpu, t->pid); 96543 s, (void *)t->addr, jiffies - t->when, t->cpu, t->pid);
95195 #ifdef CONFIG_STACKTRACE 96544 #ifdef CONFIG_STACKTRACE
95196 { 96545 {
95197@@ -2643,6 +2643,14 @@ static __always_inline void slab_free(struct kmem_cache *s, 96546@@ -2666,6 +2666,14 @@ static __always_inline void slab_free(struct kmem_cache *s,
95198 96547
95199 slab_free_hook(s, x); 96548 slab_free_hook(s, x);
95200 96549
@@ -95209,7 +96558,7 @@ index 89490d9..c7b226a 100644
95209 redo: 96558 redo:
95210 /* 96559 /*
95211 * Determine the currently cpus per cpu slab. 96560 * Determine the currently cpus per cpu slab.
95212@@ -2710,7 +2718,7 @@ static int slub_min_objects; 96561@@ -2733,7 +2741,7 @@ static int slub_min_objects;
95213 * Merge control. If this is set then no merging of slab caches will occur. 96562 * Merge control. If this is set then no merging of slab caches will occur.
95214 * (Could be removed. This was introduced to pacify the merge skeptics.) 96563 * (Could be removed. This was introduced to pacify the merge skeptics.)
95215 */ 96564 */
@@ -95218,7 +96567,7 @@ index 89490d9..c7b226a 100644
95218 96567
95219 /* 96568 /*
95220 * Calculate the order of allocation given an slab object size. 96569 * Calculate the order of allocation given an slab object size.
95221@@ -2987,6 +2995,9 @@ static int calculate_sizes(struct kmem_cache *s, int forced_order) 96570@@ -3014,6 +3022,9 @@ static int calculate_sizes(struct kmem_cache *s, int forced_order)
95222 s->inuse = size; 96571 s->inuse = size;
95223 96572
95224 if (((flags & (SLAB_DESTROY_BY_RCU | SLAB_POISON)) || 96573 if (((flags & (SLAB_DESTROY_BY_RCU | SLAB_POISON)) ||
@@ -95228,7 +96577,7 @@ index 89490d9..c7b226a 100644
95228 s->ctor)) { 96577 s->ctor)) {
95229 /* 96578 /*
95230 * Relocate free pointer after the object if it is not 96579 * Relocate free pointer after the object if it is not
95231@@ -3332,6 +3343,59 @@ void *__kmalloc_node(size_t size, gfp_t flags, int node) 96580@@ -3359,6 +3370,59 @@ void *__kmalloc_node(size_t size, gfp_t flags, int node)
95232 EXPORT_SYMBOL(__kmalloc_node); 96581 EXPORT_SYMBOL(__kmalloc_node);
95233 #endif 96582 #endif
95234 96583
@@ -95288,7 +96637,7 @@ index 89490d9..c7b226a 100644
95288 size_t ksize(const void *object) 96637 size_t ksize(const void *object)
95289 { 96638 {
95290 struct page *page; 96639 struct page *page;
95291@@ -3360,6 +3424,7 @@ void kfree(const void *x) 96640@@ -3387,6 +3451,7 @@ void kfree(const void *x)
95292 if (unlikely(ZERO_OR_NULL_PTR(x))) 96641 if (unlikely(ZERO_OR_NULL_PTR(x)))
95293 return; 96642 return;
95294 96643
@@ -95296,7 +96645,7 @@ index 89490d9..c7b226a 100644
95296 page = virt_to_head_page(x); 96645 page = virt_to_head_page(x);
95297 if (unlikely(!PageSlab(page))) { 96646 if (unlikely(!PageSlab(page))) {
95298 BUG_ON(!PageCompound(page)); 96647 BUG_ON(!PageCompound(page));
95299@@ -3665,7 +3730,7 @@ static int slab_unmergeable(struct kmem_cache *s) 96648@@ -3692,7 +3757,7 @@ static int slab_unmergeable(struct kmem_cache *s)
95300 /* 96649 /*
95301 * We may have set a slab to be unmergeable during bootstrap. 96650 * We may have set a slab to be unmergeable during bootstrap.
95302 */ 96651 */
@@ -95305,7 +96654,7 @@ index 89490d9..c7b226a 100644
95305 return 1; 96654 return 1;
95306 96655
95307 return 0; 96656 return 0;
95308@@ -3723,7 +3788,7 @@ __kmem_cache_alias(struct mem_cgroup *memcg, const char *name, size_t size, 96657@@ -3750,7 +3815,7 @@ __kmem_cache_alias(struct mem_cgroup *memcg, const char *name, size_t size,
95309 96658
95310 s = find_mergeable(memcg, size, align, flags, name, ctor); 96659 s = find_mergeable(memcg, size, align, flags, name, ctor);
95311 if (s) { 96660 if (s) {
@@ -95314,7 +96663,7 @@ index 89490d9..c7b226a 100644
95314 /* 96663 /*
95315 * Adjust the object sizes so that we clear 96664 * Adjust the object sizes so that we clear
95316 * the complete object on kzalloc. 96665 * the complete object on kzalloc.
95317@@ -3732,7 +3797,7 @@ __kmem_cache_alias(struct mem_cgroup *memcg, const char *name, size_t size, 96666@@ -3759,7 +3824,7 @@ __kmem_cache_alias(struct mem_cgroup *memcg, const char *name, size_t size,
95318 s->inuse = max_t(int, s->inuse, ALIGN(size, sizeof(void *))); 96667 s->inuse = max_t(int, s->inuse, ALIGN(size, sizeof(void *)));
95319 96668
95320 if (sysfs_slab_alias(s, name)) { 96669 if (sysfs_slab_alias(s, name)) {
@@ -95323,7 +96672,7 @@ index 89490d9..c7b226a 100644
95323 s = NULL; 96672 s = NULL;
95324 } 96673 }
95325 } 96674 }
95326@@ -3852,7 +3917,7 @@ void *__kmalloc_node_track_caller(size_t size, gfp_t gfpflags, 96675@@ -3879,7 +3944,7 @@ void *__kmalloc_node_track_caller(size_t size, gfp_t gfpflags,
95327 } 96676 }
95328 #endif 96677 #endif
95329 96678
@@ -95332,7 +96681,19 @@ index 89490d9..c7b226a 100644
95332 static int count_inuse(struct page *page) 96681 static int count_inuse(struct page *page)
95333 { 96682 {
95334 return page->inuse; 96683 return page->inuse;
95335@@ -4241,12 +4306,12 @@ static void resiliency_test(void) 96684@@ -4163,7 +4228,11 @@ static int list_locations(struct kmem_cache *s, char *buf,
96685 len += sprintf(buf + len, "%7ld ", l->count);
96686
96687 if (l->addr)
96688+#ifdef CONFIG_GRKERNSEC_HIDESYM
96689+ len += sprintf(buf + len, "%pS", NULL);
96690+#else
96691 len += sprintf(buf + len, "%pS", (void *)l->addr);
96692+#endif
96693 else
96694 len += sprintf(buf + len, "<not-available>");
96695
96696@@ -4268,12 +4337,12 @@ static void resiliency_test(void)
95336 validate_slab_cache(kmalloc_caches[9]); 96697 validate_slab_cache(kmalloc_caches[9]);
95337 } 96698 }
95338 #else 96699 #else
@@ -95347,7 +96708,17 @@ index 89490d9..c7b226a 100644
95347 enum slab_stat_type { 96708 enum slab_stat_type {
95348 SL_ALL, /* All slabs */ 96709 SL_ALL, /* All slabs */
95349 SL_PARTIAL, /* Only partially allocated slabs */ 96710 SL_PARTIAL, /* Only partially allocated slabs */
95350@@ -4492,7 +4557,7 @@ SLAB_ATTR_RO(ctor); 96711@@ -4513,13 +4582,17 @@ static ssize_t ctor_show(struct kmem_cache *s, char *buf)
96712 {
96713 if (!s->ctor)
96714 return 0;
96715+#ifdef CONFIG_GRKERNSEC_HIDESYM
96716+ return sprintf(buf, "%pS\n", NULL);
96717+#else
96718 return sprintf(buf, "%pS\n", s->ctor);
96719+#endif
96720 }
96721 SLAB_ATTR_RO(ctor);
95351 96722
95352 static ssize_t aliases_show(struct kmem_cache *s, char *buf) 96723 static ssize_t aliases_show(struct kmem_cache *s, char *buf)
95353 { 96724 {
@@ -95356,7 +96727,7 @@ index 89490d9..c7b226a 100644
95356 } 96727 }
95357 SLAB_ATTR_RO(aliases); 96728 SLAB_ATTR_RO(aliases);
95358 96729
95359@@ -4580,6 +4645,14 @@ static ssize_t cache_dma_show(struct kmem_cache *s, char *buf) 96730@@ -4607,6 +4680,14 @@ static ssize_t cache_dma_show(struct kmem_cache *s, char *buf)
95360 SLAB_ATTR_RO(cache_dma); 96731 SLAB_ATTR_RO(cache_dma);
95361 #endif 96732 #endif
95362 96733
@@ -95371,7 +96742,7 @@ index 89490d9..c7b226a 100644
95371 static ssize_t destroy_by_rcu_show(struct kmem_cache *s, char *buf) 96742 static ssize_t destroy_by_rcu_show(struct kmem_cache *s, char *buf)
95372 { 96743 {
95373 return sprintf(buf, "%d\n", !!(s->flags & SLAB_DESTROY_BY_RCU)); 96744 return sprintf(buf, "%d\n", !!(s->flags & SLAB_DESTROY_BY_RCU));
95374@@ -4914,6 +4987,9 @@ static struct attribute *slab_attrs[] = { 96745@@ -4941,6 +5022,9 @@ static struct attribute *slab_attrs[] = {
95375 #ifdef CONFIG_ZONE_DMA 96746 #ifdef CONFIG_ZONE_DMA
95376 &cache_dma_attr.attr, 96747 &cache_dma_attr.attr,
95377 #endif 96748 #endif
@@ -95381,7 +96752,7 @@ index 89490d9..c7b226a 100644
95381 #ifdef CONFIG_NUMA 96752 #ifdef CONFIG_NUMA
95382 &remote_node_defrag_ratio_attr.attr, 96753 &remote_node_defrag_ratio_attr.attr,
95383 #endif 96754 #endif
95384@@ -5146,6 +5222,7 @@ static char *create_unique_id(struct kmem_cache *s) 96755@@ -5173,6 +5257,7 @@ static char *create_unique_id(struct kmem_cache *s)
95385 return name; 96756 return name;
95386 } 96757 }
95387 96758
@@ -95389,16 +96760,7 @@ index 89490d9..c7b226a 100644
95389 static int sysfs_slab_add(struct kmem_cache *s) 96760 static int sysfs_slab_add(struct kmem_cache *s)
95390 { 96761 {
95391 int err; 96762 int err;
95392@@ -5169,7 +5246,7 @@ static int sysfs_slab_add(struct kmem_cache *s) 96763@@ -5230,6 +5315,7 @@ static void sysfs_slab_remove(struct kmem_cache *s)
95393 }
95394
95395 s->kobj.kset = slab_kset;
95396- err = kobject_init_and_add(&s->kobj, &slab_ktype, NULL, name);
95397+ err = kobject_init_and_add(&s->kobj, &slab_ktype, NULL, "%s", name);
95398 if (err) {
95399 kobject_put(&s->kobj);
95400 return err;
95401@@ -5203,6 +5280,7 @@ static void sysfs_slab_remove(struct kmem_cache *s)
95402 kobject_del(&s->kobj); 96764 kobject_del(&s->kobj);
95403 kobject_put(&s->kobj); 96765 kobject_put(&s->kobj);
95404 } 96766 }
@@ -95406,7 +96768,7 @@ index 89490d9..c7b226a 100644
95406 96768
95407 /* 96769 /*
95408 * Need to buffer aliases during bootup until sysfs becomes 96770 * Need to buffer aliases during bootup until sysfs becomes
95409@@ -5216,6 +5294,7 @@ struct saved_alias { 96771@@ -5243,6 +5329,7 @@ struct saved_alias {
95410 96772
95411 static struct saved_alias *alias_list; 96773 static struct saved_alias *alias_list;
95412 96774
@@ -95414,7 +96776,7 @@ index 89490d9..c7b226a 100644
95414 static int sysfs_slab_alias(struct kmem_cache *s, const char *name) 96776 static int sysfs_slab_alias(struct kmem_cache *s, const char *name)
95415 { 96777 {
95416 struct saved_alias *al; 96778 struct saved_alias *al;
95417@@ -5238,6 +5317,7 @@ static int sysfs_slab_alias(struct kmem_cache *s, const char *name) 96779@@ -5265,6 +5352,7 @@ static int sysfs_slab_alias(struct kmem_cache *s, const char *name)
95418 alias_list = al; 96780 alias_list = al;
95419 return 0; 96781 return 0;
95420 } 96782 }
@@ -95423,10 +96785,10 @@ index 89490d9..c7b226a 100644
95423 static int __init slab_sysfs_init(void) 96785 static int __init slab_sysfs_init(void)
95424 { 96786 {
95425diff --git a/mm/sparse-vmemmap.c b/mm/sparse-vmemmap.c 96787diff --git a/mm/sparse-vmemmap.c b/mm/sparse-vmemmap.c
95426index 27eeab3..7c3f7f2 100644 96788index 4cba9c2..b4f9fcc 100644
95427--- a/mm/sparse-vmemmap.c 96789--- a/mm/sparse-vmemmap.c
95428+++ b/mm/sparse-vmemmap.c 96790+++ b/mm/sparse-vmemmap.c
95429@@ -130,7 +130,7 @@ pud_t * __meminit vmemmap_pud_populate(pgd_t *pgd, unsigned long addr, int node) 96791@@ -131,7 +131,7 @@ pud_t * __meminit vmemmap_pud_populate(pgd_t *pgd, unsigned long addr, int node)
95430 void *p = vmemmap_alloc_block(PAGE_SIZE, node); 96792 void *p = vmemmap_alloc_block(PAGE_SIZE, node);
95431 if (!p) 96793 if (!p)
95432 return NULL; 96794 return NULL;
@@ -95435,7 +96797,7 @@ index 27eeab3..7c3f7f2 100644
95435 } 96797 }
95436 return pud; 96798 return pud;
95437 } 96799 }
95438@@ -142,7 +142,7 @@ pgd_t * __meminit vmemmap_pgd_populate(unsigned long addr, int node) 96800@@ -143,7 +143,7 @@ pgd_t * __meminit vmemmap_pgd_populate(unsigned long addr, int node)
95439 void *p = vmemmap_alloc_block(PAGE_SIZE, node); 96801 void *p = vmemmap_alloc_block(PAGE_SIZE, node);
95440 if (!p) 96802 if (!p)
95441 return NULL; 96803 return NULL;
@@ -95445,10 +96807,10 @@ index 27eeab3..7c3f7f2 100644
95445 return pgd; 96807 return pgd;
95446 } 96808 }
95447diff --git a/mm/sparse.c b/mm/sparse.c 96809diff --git a/mm/sparse.c b/mm/sparse.c
95448index 8cc7be0..d0f7d7a 100644 96810index 63c3ea5..95c0858 100644
95449--- a/mm/sparse.c 96811--- a/mm/sparse.c
95450+++ b/mm/sparse.c 96812+++ b/mm/sparse.c
95451@@ -745,7 +745,7 @@ static void clear_hwpoisoned_pages(struct page *memmap, int nr_pages) 96813@@ -748,7 +748,7 @@ static void clear_hwpoisoned_pages(struct page *memmap, int nr_pages)
95452 96814
95453 for (i = 0; i < PAGES_PER_SECTION; i++) { 96815 for (i = 0; i < PAGES_PER_SECTION; i++) {
95454 if (PageHWPoison(&memmap[i])) { 96816 if (PageHWPoison(&memmap[i])) {
@@ -95458,10 +96820,18 @@ index 8cc7be0..d0f7d7a 100644
95458 } 96820 }
95459 } 96821 }
95460diff --git a/mm/swap.c b/mm/swap.c 96822diff --git a/mm/swap.c b/mm/swap.c
95461index 84b26aa..ce39899 100644 96823index 0092097..33361ff 100644
95462--- a/mm/swap.c 96824--- a/mm/swap.c
95463+++ b/mm/swap.c 96825+++ b/mm/swap.c
95464@@ -77,6 +77,8 @@ static void __put_compound_page(struct page *page) 96826@@ -31,6 +31,7 @@
96827 #include <linux/memcontrol.h>
96828 #include <linux/gfp.h>
96829 #include <linux/uio.h>
96830+#include <linux/hugetlb.h>
96831
96832 #include "internal.h"
96833
96834@@ -76,6 +77,8 @@ static void __put_compound_page(struct page *page)
95465 96835
95466 __page_cache_release(page); 96836 __page_cache_release(page);
95467 dtor = get_compound_page_dtor(page); 96837 dtor = get_compound_page_dtor(page);
@@ -95471,7 +96841,7 @@ index 84b26aa..ce39899 100644
95471 } 96841 }
95472 96842
95473diff --git a/mm/swapfile.c b/mm/swapfile.c 96843diff --git a/mm/swapfile.c b/mm/swapfile.c
95474index 461fce2..363ae44 100644 96844index 4a7f7e6..22cddf5 100644
95475--- a/mm/swapfile.c 96845--- a/mm/swapfile.c
95476+++ b/mm/swapfile.c 96846+++ b/mm/swapfile.c
95477@@ -66,7 +66,7 @@ static DEFINE_MUTEX(swapon_mutex); 96847@@ -66,7 +66,7 @@ static DEFINE_MUTEX(swapon_mutex);
@@ -95483,7 +96853,7 @@ index 461fce2..363ae44 100644
95483 96853
95484 static inline unsigned char swap_count(unsigned char ent) 96854 static inline unsigned char swap_count(unsigned char ent)
95485 { 96855 {
95486@@ -1958,7 +1958,7 @@ SYSCALL_DEFINE1(swapoff, const char __user *, specialfile) 96856@@ -1959,7 +1959,7 @@ SYSCALL_DEFINE1(swapoff, const char __user *, specialfile)
95487 spin_unlock(&swap_lock); 96857 spin_unlock(&swap_lock);
95488 96858
95489 err = 0; 96859 err = 0;
@@ -95492,7 +96862,7 @@ index 461fce2..363ae44 100644
95492 wake_up_interruptible(&proc_poll_wait); 96862 wake_up_interruptible(&proc_poll_wait);
95493 96863
95494 out_dput: 96864 out_dput:
95495@@ -1975,8 +1975,8 @@ static unsigned swaps_poll(struct file *file, poll_table *wait) 96865@@ -1976,8 +1976,8 @@ static unsigned swaps_poll(struct file *file, poll_table *wait)
95496 96866
95497 poll_wait(file, &proc_poll_wait, wait); 96867 poll_wait(file, &proc_poll_wait, wait);
95498 96868
@@ -95503,7 +96873,7 @@ index 461fce2..363ae44 100644
95503 return POLLIN | POLLRDNORM | POLLERR | POLLPRI; 96873 return POLLIN | POLLRDNORM | POLLERR | POLLPRI;
95504 } 96874 }
95505 96875
95506@@ -2074,7 +2074,7 @@ static int swaps_open(struct inode *inode, struct file *file) 96876@@ -2075,7 +2075,7 @@ static int swaps_open(struct inode *inode, struct file *file)
95507 return ret; 96877 return ret;
95508 96878
95509 seq = file->private_data; 96879 seq = file->private_data;
@@ -95512,7 +96882,7 @@ index 461fce2..363ae44 100644
95512 return 0; 96882 return 0;
95513 } 96883 }
95514 96884
95515@@ -2533,7 +2533,7 @@ SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags) 96885@@ -2534,7 +2534,7 @@ SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags)
95516 (frontswap_map) ? "FS" : ""); 96886 (frontswap_map) ? "FS" : "");
95517 96887
95518 mutex_unlock(&swapon_mutex); 96888 mutex_unlock(&swapon_mutex);
@@ -95522,7 +96892,7 @@ index 461fce2..363ae44 100644
95522 96892
95523 if (S_ISREG(inode->i_mode)) 96893 if (S_ISREG(inode->i_mode))
95524diff --git a/mm/util.c b/mm/util.c 96894diff --git a/mm/util.c b/mm/util.c
95525index 808f375..e4764b5 100644 96895index a24aa22..a0d41ae 100644
95526--- a/mm/util.c 96896--- a/mm/util.c
95527+++ b/mm/util.c 96897+++ b/mm/util.c
95528@@ -297,6 +297,12 @@ done: 96898@@ -297,6 +297,12 @@ done:
@@ -95539,7 +96909,7 @@ index 808f375..e4764b5 100644
95539 } 96909 }
95540 #endif 96910 #endif
95541diff --git a/mm/vmalloc.c b/mm/vmalloc.c 96911diff --git a/mm/vmalloc.c b/mm/vmalloc.c
95542index 0fdf968..d6686e8 100644 96912index 0fdf968..2183ba3 100644
95543--- a/mm/vmalloc.c 96913--- a/mm/vmalloc.c
95544+++ b/mm/vmalloc.c 96914+++ b/mm/vmalloc.c
95545@@ -59,8 +59,19 @@ static void vunmap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end) 96915@@ -59,8 +59,19 @@ static void vunmap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end)
@@ -95685,7 +97055,20 @@ index 0fdf968..d6686e8 100644
95685 area = __get_vm_area_node(size, align, VM_ALLOC | VM_UNINITIALIZED, 97055 area = __get_vm_area_node(size, align, VM_ALLOC | VM_UNINITIALIZED,
95686 start, end, node, gfp_mask, caller); 97056 start, end, node, gfp_mask, caller);
95687 if (!area) 97057 if (!area)
95688@@ -1810,10 +1868,9 @@ EXPORT_SYMBOL(vzalloc_node); 97058@@ -1701,6 +1759,12 @@ static inline void *__vmalloc_node_flags(unsigned long size,
97059 node, __builtin_return_address(0));
97060 }
97061
97062+void *vmalloc_stack(int node)
97063+{
97064+ return __vmalloc_node(THREAD_SIZE, THREAD_SIZE, THREADINFO_GFP, PAGE_KERNEL,
97065+ node, __builtin_return_address(0));
97066+}
97067+
97068 /**
97069 * vmalloc - allocate virtually contiguous memory
97070 * @size: allocation size
97071@@ -1810,10 +1874,9 @@ EXPORT_SYMBOL(vzalloc_node);
95689 * For tight control over page level allocator and protection flags 97072 * For tight control over page level allocator and protection flags
95690 * use __vmalloc() instead. 97073 * use __vmalloc() instead.
95691 */ 97074 */
@@ -95697,7 +97080,7 @@ index 0fdf968..d6686e8 100644
95697 NUMA_NO_NODE, __builtin_return_address(0)); 97080 NUMA_NO_NODE, __builtin_return_address(0));
95698 } 97081 }
95699 97082
95700@@ -2120,6 +2177,8 @@ int remap_vmalloc_range_partial(struct vm_area_struct *vma, unsigned long uaddr, 97083@@ -2120,6 +2183,8 @@ int remap_vmalloc_range_partial(struct vm_area_struct *vma, unsigned long uaddr,
95701 { 97084 {
95702 struct vm_struct *area; 97085 struct vm_struct *area;
95703 97086
@@ -95706,7 +97089,7 @@ index 0fdf968..d6686e8 100644
95706 size = PAGE_ALIGN(size); 97089 size = PAGE_ALIGN(size);
95707 97090
95708 if (!PAGE_ALIGNED(uaddr) || !PAGE_ALIGNED(kaddr)) 97091 if (!PAGE_ALIGNED(uaddr) || !PAGE_ALIGNED(kaddr))
95709@@ -2602,7 +2661,11 @@ static int s_show(struct seq_file *m, void *p) 97092@@ -2602,7 +2667,11 @@ static int s_show(struct seq_file *m, void *p)
95710 v->addr, v->addr + v->size, v->size); 97093 v->addr, v->addr + v->size, v->size);
95711 97094
95712 if (v->caller) 97095 if (v->caller)
@@ -95719,7 +97102,7 @@ index 0fdf968..d6686e8 100644
95719 if (v->nr_pages) 97102 if (v->nr_pages)
95720 seq_printf(m, " pages=%d", v->nr_pages); 97103 seq_printf(m, " pages=%d", v->nr_pages);
95721diff --git a/mm/vmstat.c b/mm/vmstat.c 97104diff --git a/mm/vmstat.c b/mm/vmstat.c
95722index 7249614..2639fc7 100644 97105index def5dd2..4ce55cec 100644
95723--- a/mm/vmstat.c 97106--- a/mm/vmstat.c
95724+++ b/mm/vmstat.c 97107+++ b/mm/vmstat.c
95725@@ -20,6 +20,7 @@ 97108@@ -20,6 +20,7 @@
@@ -95777,7 +97160,7 @@ index 7249614..2639fc7 100644
95777 } 97160 }
95778 } 97161 }
95779 #endif 97162 #endif
95780@@ -1148,10 +1149,22 @@ static void *vmstat_start(struct seq_file *m, loff_t *pos) 97163@@ -1150,10 +1151,22 @@ static void *vmstat_start(struct seq_file *m, loff_t *pos)
95781 stat_items_size += sizeof(struct vm_event_state); 97164 stat_items_size += sizeof(struct vm_event_state);
95782 #endif 97165 #endif
95783 97166
@@ -95801,7 +97184,7 @@ index 7249614..2639fc7 100644
95801 for (i = 0; i < NR_VM_ZONE_STAT_ITEMS; i++) 97184 for (i = 0; i < NR_VM_ZONE_STAT_ITEMS; i++)
95802 v[i] = global_page_state(i); 97185 v[i] = global_page_state(i);
95803 v += NR_VM_ZONE_STAT_ITEMS; 97186 v += NR_VM_ZONE_STAT_ITEMS;
95804@@ -1300,10 +1313,16 @@ static int __init setup_vmstat(void) 97187@@ -1302,10 +1315,16 @@ static int __init setup_vmstat(void)
95805 put_online_cpus(); 97188 put_online_cpus();
95806 #endif 97189 #endif
95807 #ifdef CONFIG_PROC_FS 97190 #ifdef CONFIG_PROC_FS
@@ -95823,10 +97206,10 @@ index 7249614..2639fc7 100644
95823 return 0; 97206 return 0;
95824 } 97207 }
95825diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c 97208diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c
95826index b3d17d1..e8e4cdd 100644 97209index 44ebd5c..1f732bae 100644
95827--- a/net/8021q/vlan.c 97210--- a/net/8021q/vlan.c
95828+++ b/net/8021q/vlan.c 97211+++ b/net/8021q/vlan.c
95829@@ -472,7 +472,7 @@ out: 97212@@ -475,7 +475,7 @@ out:
95830 return NOTIFY_DONE; 97213 return NOTIFY_DONE;
95831 } 97214 }
95832 97215
@@ -95835,7 +97218,7 @@ index b3d17d1..e8e4cdd 100644
95835 .notifier_call = vlan_device_event, 97218 .notifier_call = vlan_device_event,
95836 }; 97219 };
95837 97220
95838@@ -547,8 +547,7 @@ static int vlan_ioctl_handler(struct net *net, void __user *arg) 97221@@ -550,8 +550,7 @@ static int vlan_ioctl_handler(struct net *net, void __user *arg)
95839 err = -EPERM; 97222 err = -EPERM;
95840 if (!ns_capable(net->user_ns, CAP_NET_ADMIN)) 97223 if (!ns_capable(net->user_ns, CAP_NET_ADMIN))
95841 break; 97224 break;
@@ -95846,7 +97229,7 @@ index b3d17d1..e8e4cdd 100644
95846 97229
95847 vn = net_generic(net, vlan_net_id); 97230 vn = net_generic(net, vlan_net_id);
95848diff --git a/net/9p/client.c b/net/9p/client.c 97231diff --git a/net/9p/client.c b/net/9p/client.c
95849index ee8fd6b..0469d50 100644 97232index 9186550..e604a2f 100644
95850--- a/net/9p/client.c 97233--- a/net/9p/client.c
95851+++ b/net/9p/client.c 97234+++ b/net/9p/client.c
95852@@ -588,7 +588,7 @@ static int p9_check_zc_errors(struct p9_client *c, struct p9_req_t *req, 97235@@ -588,7 +588,7 @@ static int p9_check_zc_errors(struct p9_client *c, struct p9_req_t *req,
@@ -95858,7 +97241,7 @@ index ee8fd6b..0469d50 100644
95858 if (err) { 97241 if (err) {
95859 err = -EFAULT; 97242 err = -EFAULT;
95860 goto out_err; 97243 goto out_err;
95861@@ -1563,7 +1563,7 @@ p9_client_read(struct p9_fid *fid, char *data, char __user *udata, u64 offset, 97244@@ -1560,7 +1560,7 @@ p9_client_read(struct p9_fid *fid, char *data, char __user *udata, u64 offset,
95862 kernel_buf = 1; 97245 kernel_buf = 1;
95863 indata = data; 97246 indata = data;
95864 } else 97247 } else
@@ -95867,7 +97250,7 @@ index ee8fd6b..0469d50 100644
95867 /* 97250 /*
95868 * response header len is 11 97251 * response header len is 11
95869 * PDU Header(7) + IO Size (4) 97252 * PDU Header(7) + IO Size (4)
95870@@ -1638,7 +1638,7 @@ p9_client_write(struct p9_fid *fid, char *data, const char __user *udata, 97253@@ -1635,7 +1635,7 @@ p9_client_write(struct p9_fid *fid, char *data, const char __user *udata,
95871 kernel_buf = 1; 97254 kernel_buf = 1;
95872 odata = data; 97255 odata = data;
95873 } else 97256 } else
@@ -95899,7 +97282,7 @@ index 6ab36ae..6f1841b 100644
95899 } 97282 }
95900 EXPORT_SYMBOL(v9fs_unregister_trans); 97283 EXPORT_SYMBOL(v9fs_unregister_trans);
95901diff --git a/net/9p/trans_fd.c b/net/9p/trans_fd.c 97284diff --git a/net/9p/trans_fd.c b/net/9p/trans_fd.c
95902index 9321a77..ed2f256 100644 97285index b7bd7f2..2498bf7 100644
95903--- a/net/9p/trans_fd.c 97286--- a/net/9p/trans_fd.c
95904+++ b/net/9p/trans_fd.c 97287+++ b/net/9p/trans_fd.c
95905@@ -432,7 +432,7 @@ static int p9_fd_write(struct p9_client *client, void *v, int len) 97288@@ -432,7 +432,7 @@ static int p9_fd_write(struct p9_client *client, void *v, int len)
@@ -95911,6 +97294,19 @@ index 9321a77..ed2f256 100644
95911 set_fs(oldfs); 97294 set_fs(oldfs);
95912 97295
95913 if (ret <= 0 && ret != -ERESTARTSYS && ret != -EAGAIN) 97296 if (ret <= 0 && ret != -ERESTARTSYS && ret != -EAGAIN)
97297diff --git a/net/appletalk/atalk_proc.c b/net/appletalk/atalk_proc.c
97298index af46bc4..f9adfcd 100644
97299--- a/net/appletalk/atalk_proc.c
97300+++ b/net/appletalk/atalk_proc.c
97301@@ -256,7 +256,7 @@ int __init atalk_proc_init(void)
97302 struct proc_dir_entry *p;
97303 int rc = -ENOMEM;
97304
97305- atalk_proc_dir = proc_mkdir("atalk", init_net.proc_net);
97306+ atalk_proc_dir = proc_mkdir_restrict("atalk", init_net.proc_net);
97307 if (!atalk_proc_dir)
97308 goto out;
97309
95914diff --git a/net/atm/atm_misc.c b/net/atm/atm_misc.c 97310diff --git a/net/atm/atm_misc.c b/net/atm/atm_misc.c
95915index 876fbe8..8bbea9f 100644 97311index 876fbe8..8bbea9f 100644
95916--- a/net/atm/atm_misc.c 97312--- a/net/atm/atm_misc.c
@@ -95952,7 +97348,7 @@ index 876fbe8..8bbea9f 100644
95952 #undef __HANDLE_ITEM 97348 #undef __HANDLE_ITEM
95953 } 97349 }
95954diff --git a/net/atm/lec.c b/net/atm/lec.c 97350diff --git a/net/atm/lec.c b/net/atm/lec.c
95955index f23916b..dd4d26b 100644 97351index 5a2f602..9396143 100644
95956--- a/net/atm/lec.c 97352--- a/net/atm/lec.c
95957+++ b/net/atm/lec.c 97353+++ b/net/atm/lec.c
95958@@ -111,9 +111,9 @@ static inline void lec_arp_put(struct lec_arp_table *entry) 97354@@ -111,9 +111,9 @@ static inline void lec_arp_put(struct lec_arp_table *entry)
@@ -96090,10 +97486,10 @@ index 919a5ce..cc6b444 100644
96090 table = kmemdup(ax25_param_table, sizeof(ax25_param_table), GFP_KERNEL); 97486 table = kmemdup(ax25_param_table, sizeof(ax25_param_table), GFP_KERNEL);
96091 if (!table) 97487 if (!table)
96092diff --git a/net/batman-adv/bat_iv_ogm.c b/net/batman-adv/bat_iv_ogm.c 97488diff --git a/net/batman-adv/bat_iv_ogm.c b/net/batman-adv/bat_iv_ogm.c
96093index f7270b9..cd0d879 100644 97489index d074d06..ad3cfcf 100644
96094--- a/net/batman-adv/bat_iv_ogm.c 97490--- a/net/batman-adv/bat_iv_ogm.c
96095+++ b/net/batman-adv/bat_iv_ogm.c 97491+++ b/net/batman-adv/bat_iv_ogm.c
96096@@ -307,7 +307,7 @@ static int batadv_iv_ogm_iface_enable(struct batadv_hard_iface *hard_iface) 97492@@ -312,7 +312,7 @@ static int batadv_iv_ogm_iface_enable(struct batadv_hard_iface *hard_iface)
96097 97493
96098 /* randomize initial seqno to avoid collision */ 97494 /* randomize initial seqno to avoid collision */
96099 get_random_bytes(&random_seqno, sizeof(random_seqno)); 97495 get_random_bytes(&random_seqno, sizeof(random_seqno));
@@ -96102,7 +97498,7 @@ index f7270b9..cd0d879 100644
96102 97498
96103 hard_iface->bat_iv.ogm_buff_len = BATADV_OGM_HLEN; 97499 hard_iface->bat_iv.ogm_buff_len = BATADV_OGM_HLEN;
96104 ogm_buff = kmalloc(hard_iface->bat_iv.ogm_buff_len, GFP_ATOMIC); 97500 ogm_buff = kmalloc(hard_iface->bat_iv.ogm_buff_len, GFP_ATOMIC);
96105@@ -894,9 +894,9 @@ static void batadv_iv_ogm_schedule(struct batadv_hard_iface *hard_iface) 97501@@ -917,9 +917,9 @@ static void batadv_iv_ogm_schedule(struct batadv_hard_iface *hard_iface)
96106 batadv_ogm_packet->tvlv_len = htons(tvlv_len); 97502 batadv_ogm_packet->tvlv_len = htons(tvlv_len);
96107 97503
96108 /* change sequence number to network order */ 97504 /* change sequence number to network order */
@@ -96113,21 +97509,21 @@ index f7270b9..cd0d879 100644
96113+ atomic_inc_unchecked(&hard_iface->bat_iv.ogm_seqno); 97509+ atomic_inc_unchecked(&hard_iface->bat_iv.ogm_seqno);
96114 97510
96115 batadv_iv_ogm_slide_own_bcast_window(hard_iface); 97511 batadv_iv_ogm_slide_own_bcast_window(hard_iface);
96116 batadv_iv_ogm_queue_add(bat_priv, hard_iface->bat_iv.ogm_buff, 97512
96117@@ -1261,7 +1261,7 @@ static void batadv_iv_ogm_process(const struct ethhdr *ethhdr, 97513@@ -1596,7 +1596,7 @@ static void batadv_iv_ogm_process(const struct sk_buff *skb, int ogm_offset,
96118 return; 97514 return;
96119 97515
96120 /* could be changed by schedule_own_packet() */ 97516 /* could be changed by schedule_own_packet() */
96121- if_incoming_seqno = atomic_read(&if_incoming->bat_iv.ogm_seqno); 97517- if_incoming_seqno = atomic_read(&if_incoming->bat_iv.ogm_seqno);
96122+ if_incoming_seqno = atomic_read_unchecked(&if_incoming->bat_iv.ogm_seqno); 97518+ if_incoming_seqno = atomic_read_unchecked(&if_incoming->bat_iv.ogm_seqno);
96123 97519
96124 if (batadv_ogm_packet->flags & BATADV_DIRECTLINK) 97520 if (ogm_packet->flags & BATADV_DIRECTLINK)
96125 has_directlink_flag = 1; 97521 has_directlink_flag = true;
96126diff --git a/net/batman-adv/fragmentation.c b/net/batman-adv/fragmentation.c 97522diff --git a/net/batman-adv/fragmentation.c b/net/batman-adv/fragmentation.c
96127index 6ddb614..ca7e886 100644 97523index cc1cfd6..7a68e022 100644
96128--- a/net/batman-adv/fragmentation.c 97524--- a/net/batman-adv/fragmentation.c
96129+++ b/net/batman-adv/fragmentation.c 97525+++ b/net/batman-adv/fragmentation.c
96130@@ -447,7 +447,7 @@ bool batadv_frag_send_packet(struct sk_buff *skb, 97526@@ -446,7 +446,7 @@ bool batadv_frag_send_packet(struct sk_buff *skb,
96131 frag_header.packet_type = BATADV_UNICAST_FRAG; 97527 frag_header.packet_type = BATADV_UNICAST_FRAG;
96132 frag_header.version = BATADV_COMPAT_VERSION; 97528 frag_header.version = BATADV_COMPAT_VERSION;
96133 frag_header.ttl = BATADV_TTL; 97529 frag_header.ttl = BATADV_TTL;
@@ -96137,10 +97533,10 @@ index 6ddb614..ca7e886 100644
96137 frag_header.no = 0; 97533 frag_header.no = 0;
96138 frag_header.total_size = htons(skb->len); 97534 frag_header.total_size = htons(skb->len);
96139diff --git a/net/batman-adv/soft-interface.c b/net/batman-adv/soft-interface.c 97535diff --git a/net/batman-adv/soft-interface.c b/net/batman-adv/soft-interface.c
96140index a8f99d1..11797ef 100644 97536index f82c267..0e56d32 100644
96141--- a/net/batman-adv/soft-interface.c 97537--- a/net/batman-adv/soft-interface.c
96142+++ b/net/batman-adv/soft-interface.c 97538+++ b/net/batman-adv/soft-interface.c
96143@@ -278,7 +278,7 @@ static int batadv_interface_tx(struct sk_buff *skb, 97539@@ -283,7 +283,7 @@ send:
96144 primary_if->net_dev->dev_addr, ETH_ALEN); 97540 primary_if->net_dev->dev_addr, ETH_ALEN);
96145 97541
96146 /* set broadcast sequence number */ 97542 /* set broadcast sequence number */
@@ -96149,7 +97545,7 @@ index a8f99d1..11797ef 100644
96149 bcast_packet->seqno = htonl(seqno); 97545 bcast_packet->seqno = htonl(seqno);
96150 97546
96151 batadv_add_bcast_packet_to_list(bat_priv, skb, brd_delay); 97547 batadv_add_bcast_packet_to_list(bat_priv, skb, brd_delay);
96152@@ -688,7 +688,7 @@ static int batadv_softif_init_late(struct net_device *dev) 97548@@ -707,7 +707,7 @@ static int batadv_softif_init_late(struct net_device *dev)
96153 atomic_set(&bat_priv->batman_queue_left, BATADV_BATMAN_QUEUE_LEN); 97549 atomic_set(&bat_priv->batman_queue_left, BATADV_BATMAN_QUEUE_LEN);
96154 97550
96155 atomic_set(&bat_priv->mesh_state, BATADV_MESH_INACTIVE); 97551 atomic_set(&bat_priv->mesh_state, BATADV_MESH_INACTIVE);
@@ -96158,7 +97554,7 @@ index a8f99d1..11797ef 100644
96158 atomic_set(&bat_priv->tt.vn, 0); 97554 atomic_set(&bat_priv->tt.vn, 0);
96159 atomic_set(&bat_priv->tt.local_changes, 0); 97555 atomic_set(&bat_priv->tt.local_changes, 0);
96160 atomic_set(&bat_priv->tt.ogm_append_cnt, 0); 97556 atomic_set(&bat_priv->tt.ogm_append_cnt, 0);
96161@@ -700,7 +700,7 @@ static int batadv_softif_init_late(struct net_device *dev) 97557@@ -721,7 +721,7 @@ static int batadv_softif_init_late(struct net_device *dev)
96162 97558
96163 /* randomize initial seqno to avoid collision */ 97559 /* randomize initial seqno to avoid collision */
96164 get_random_bytes(&random_seqno, sizeof(random_seqno)); 97560 get_random_bytes(&random_seqno, sizeof(random_seqno));
@@ -96168,10 +97564,10 @@ index a8f99d1..11797ef 100644
96168 bat_priv->primary_if = NULL; 97564 bat_priv->primary_if = NULL;
96169 bat_priv->num_ifaces = 0; 97565 bat_priv->num_ifaces = 0;
96170diff --git a/net/batman-adv/types.h b/net/batman-adv/types.h 97566diff --git a/net/batman-adv/types.h b/net/batman-adv/types.h
96171index 91dd369..9c25750 100644 97567index 78370ab..1cb3614 100644
96172--- a/net/batman-adv/types.h 97568--- a/net/batman-adv/types.h
96173+++ b/net/batman-adv/types.h 97569+++ b/net/batman-adv/types.h
96174@@ -56,7 +56,7 @@ 97570@@ -66,7 +66,7 @@ enum batadv_dhcp_recipient {
96175 struct batadv_hard_iface_bat_iv { 97571 struct batadv_hard_iface_bat_iv {
96176 unsigned char *ogm_buff; 97572 unsigned char *ogm_buff;
96177 int ogm_buff_len; 97573 int ogm_buff_len;
@@ -96180,7 +97576,7 @@ index 91dd369..9c25750 100644
96180 }; 97576 };
96181 97577
96182 /** 97578 /**
96183@@ -673,7 +673,7 @@ struct batadv_priv { 97579@@ -714,7 +714,7 @@ struct batadv_priv {
96184 atomic_t bonding; 97580 atomic_t bonding;
96185 atomic_t fragmentation; 97581 atomic_t fragmentation;
96186 atomic_t packet_size_max; 97582 atomic_t packet_size_max;
@@ -96189,10 +97585,10 @@ index 91dd369..9c25750 100644
96189 #ifdef CONFIG_BATMAN_ADV_BLA 97585 #ifdef CONFIG_BATMAN_ADV_BLA
96190 atomic_t bridge_loop_avoidance; 97586 atomic_t bridge_loop_avoidance;
96191 #endif 97587 #endif
96192@@ -687,7 +687,7 @@ struct batadv_priv { 97588@@ -730,7 +730,7 @@ struct batadv_priv {
96193 #ifdef CONFIG_BATMAN_ADV_DEBUG
96194 atomic_t log_level;
96195 #endif 97589 #endif
97590 uint32_t isolation_mark;
97591 uint32_t isolation_mark_mask;
96196- atomic_t bcast_seqno; 97592- atomic_t bcast_seqno;
96197+ atomic_unchecked_t bcast_seqno; 97593+ atomic_unchecked_t bcast_seqno;
96198 atomic_t bcast_queue_left; 97594 atomic_t bcast_queue_left;
@@ -96212,10 +97608,10 @@ index 7552f9e..074ce29 100644
96212 err = -EFAULT; 97608 err = -EFAULT;
96213 break; 97609 break;
96214diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c 97610diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
96215index 4af3821..f2ba46c 100644 97611index b0ad2c7..96f6a5e 100644
96216--- a/net/bluetooth/l2cap_core.c 97612--- a/net/bluetooth/l2cap_core.c
96217+++ b/net/bluetooth/l2cap_core.c 97613+++ b/net/bluetooth/l2cap_core.c
96218@@ -3500,8 +3500,10 @@ static int l2cap_parse_conf_rsp(struct l2cap_chan *chan, void *rsp, int len, 97614@@ -3740,8 +3740,10 @@ static int l2cap_parse_conf_rsp(struct l2cap_chan *chan, void *rsp, int len,
96219 break; 97615 break;
96220 97616
96221 case L2CAP_CONF_RFC: 97617 case L2CAP_CONF_RFC:
@@ -96229,10 +97625,10 @@ index 4af3821..f2ba46c 100644
96229 if (test_bit(CONF_STATE2_DEVICE, &chan->conf_state) && 97625 if (test_bit(CONF_STATE2_DEVICE, &chan->conf_state) &&
96230 rfc.mode != chan->mode) 97626 rfc.mode != chan->mode)
96231diff --git a/net/bluetooth/l2cap_sock.c b/net/bluetooth/l2cap_sock.c 97627diff --git a/net/bluetooth/l2cap_sock.c b/net/bluetooth/l2cap_sock.c
96232index 7cc24d2..e83f531 100644 97628index d58f76b..b69600a 100644
96233--- a/net/bluetooth/l2cap_sock.c 97629--- a/net/bluetooth/l2cap_sock.c
96234+++ b/net/bluetooth/l2cap_sock.c 97630+++ b/net/bluetooth/l2cap_sock.c
96235@@ -545,7 +545,8 @@ static int l2cap_sock_setsockopt_old(struct socket *sock, int optname, 97631@@ -625,7 +625,8 @@ static int l2cap_sock_setsockopt_old(struct socket *sock, int optname,
96236 struct sock *sk = sock->sk; 97632 struct sock *sk = sock->sk;
96237 struct l2cap_chan *chan = l2cap_pi(sk)->chan; 97633 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
96238 struct l2cap_options opts; 97634 struct l2cap_options opts;
@@ -96242,7 +97638,7 @@ index 7cc24d2..e83f531 100644
96242 u32 opt; 97638 u32 opt;
96243 97639
96244 BT_DBG("sk %p", sk); 97640 BT_DBG("sk %p", sk);
96245@@ -567,7 +568,7 @@ static int l2cap_sock_setsockopt_old(struct socket *sock, int optname, 97641@@ -652,7 +653,7 @@ static int l2cap_sock_setsockopt_old(struct socket *sock, int optname,
96246 opts.max_tx = chan->max_tx; 97642 opts.max_tx = chan->max_tx;
96247 opts.txwin_size = chan->tx_win; 97643 opts.txwin_size = chan->tx_win;
96248 97644
@@ -96251,7 +97647,7 @@ index 7cc24d2..e83f531 100644
96251 if (copy_from_user((char *) &opts, optval, len)) { 97647 if (copy_from_user((char *) &opts, optval, len)) {
96252 err = -EFAULT; 97648 err = -EFAULT;
96253 break; 97649 break;
96254@@ -647,7 +648,8 @@ static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, 97650@@ -734,7 +735,8 @@ static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname,
96255 struct bt_security sec; 97651 struct bt_security sec;
96256 struct bt_power pwr; 97652 struct bt_power pwr;
96257 struct l2cap_conn *conn; 97653 struct l2cap_conn *conn;
@@ -96261,7 +97657,7 @@ index 7cc24d2..e83f531 100644
96261 u32 opt; 97657 u32 opt;
96262 97658
96263 BT_DBG("sk %p", sk); 97659 BT_DBG("sk %p", sk);
96264@@ -670,7 +672,7 @@ static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, 97660@@ -757,7 +759,7 @@ static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname,
96265 97661
96266 sec.level = BT_SECURITY_LOW; 97662 sec.level = BT_SECURITY_LOW;
96267 97663
@@ -96270,7 +97666,7 @@ index 7cc24d2..e83f531 100644
96270 if (copy_from_user((char *) &sec, optval, len)) { 97666 if (copy_from_user((char *) &sec, optval, len)) {
96271 err = -EFAULT; 97667 err = -EFAULT;
96272 break; 97668 break;
96273@@ -770,7 +772,7 @@ static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, 97669@@ -857,7 +859,7 @@ static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname,
96274 97670
96275 pwr.force_active = BT_POWER_FORCE_ACTIVE_ON; 97671 pwr.force_active = BT_POWER_FORCE_ACTIVE_ON;
96276 97672
@@ -96302,10 +97698,10 @@ index 3c2d3e4..884855a 100644
96302 err = -EFAULT; 97698 err = -EFAULT;
96303 break; 97699 break;
96304diff --git a/net/bluetooth/rfcomm/tty.c b/net/bluetooth/rfcomm/tty.c 97700diff --git a/net/bluetooth/rfcomm/tty.c b/net/bluetooth/rfcomm/tty.c
96305index 84fcf9f..e389b27 100644 97701index f9c0980a..fcbbfeb 100644
96306--- a/net/bluetooth/rfcomm/tty.c 97702--- a/net/bluetooth/rfcomm/tty.c
96307+++ b/net/bluetooth/rfcomm/tty.c 97703+++ b/net/bluetooth/rfcomm/tty.c
96308@@ -684,7 +684,7 @@ static int rfcomm_tty_open(struct tty_struct *tty, struct file *filp) 97704@@ -717,7 +717,7 @@ static int rfcomm_tty_open(struct tty_struct *tty, struct file *filp)
96309 BT_DBG("tty %p id %d", tty, tty->index); 97705 BT_DBG("tty %p id %d", tty, tty->index);
96310 97706
96311 BT_DBG("dev %p dst %pMR channel %d opened %d", dev, &dev->dst, 97707 BT_DBG("dev %p dst %pMR channel %d opened %d", dev, &dev->dst,
@@ -96314,7 +97710,7 @@ index 84fcf9f..e389b27 100644
96314 97710
96315 err = tty_port_open(&dev->port, tty, filp); 97711 err = tty_port_open(&dev->port, tty, filp);
96316 if (err) 97712 if (err)
96317@@ -707,7 +707,7 @@ static void rfcomm_tty_close(struct tty_struct *tty, struct file *filp) 97713@@ -740,7 +740,7 @@ static void rfcomm_tty_close(struct tty_struct *tty, struct file *filp)
96318 struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data; 97714 struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
96319 97715
96320 BT_DBG("tty %p dev %p dlc %p opened %d", tty, dev, dev->dlc, 97716 BT_DBG("tty %p dev %p dlc %p opened %d", tty, dev, dev->dlc,
@@ -96324,19 +97720,19 @@ index 84fcf9f..e389b27 100644
96324 tty_port_close(&dev->port, tty, filp); 97720 tty_port_close(&dev->port, tty, filp);
96325 } 97721 }
96326diff --git a/net/bridge/netfilter/ebtables.c b/net/bridge/netfilter/ebtables.c 97722diff --git a/net/bridge/netfilter/ebtables.c b/net/bridge/netfilter/ebtables.c
96327index ac78024..161a80c 100644 97723index 1059ed3..d70846a 100644
96328--- a/net/bridge/netfilter/ebtables.c 97724--- a/net/bridge/netfilter/ebtables.c
96329+++ b/net/bridge/netfilter/ebtables.c 97725+++ b/net/bridge/netfilter/ebtables.c
96330@@ -1525,7 +1525,7 @@ static int do_ebt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len) 97726@@ -1524,7 +1524,7 @@ static int do_ebt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len)
96331 tmp.valid_hooks = t->table->valid_hooks; 97727 tmp.valid_hooks = t->table->valid_hooks;
96332 } 97728 }
96333 mutex_unlock(&ebt_mutex); 97729 mutex_unlock(&ebt_mutex);
96334- if (copy_to_user(user, &tmp, *len) != 0){ 97730- if (copy_to_user(user, &tmp, *len) != 0) {
96335+ if (*len > sizeof(tmp) || copy_to_user(user, &tmp, *len) != 0){ 97731+ if (*len > sizeof(tmp) || copy_to_user(user, &tmp, *len) != 0) {
96336 BUGPRINT("c2u Didn't work\n"); 97732 BUGPRINT("c2u Didn't work\n");
96337 ret = -EFAULT; 97733 ret = -EFAULT;
96338 break; 97734 break;
96339@@ -2331,7 +2331,7 @@ static int compat_do_ebt_get_ctl(struct sock *sk, int cmd, 97735@@ -2330,7 +2330,7 @@ static int compat_do_ebt_get_ctl(struct sock *sk, int cmd,
96340 goto out; 97736 goto out;
96341 tmp.valid_hooks = t->valid_hooks; 97737 tmp.valid_hooks = t->valid_hooks;
96342 97738
@@ -96345,7 +97741,7 @@ index ac78024..161a80c 100644
96345 ret = -EFAULT; 97741 ret = -EFAULT;
96346 break; 97742 break;
96347 } 97743 }
96348@@ -2342,7 +2342,7 @@ static int compat_do_ebt_get_ctl(struct sock *sk, int cmd, 97744@@ -2341,7 +2341,7 @@ static int compat_do_ebt_get_ctl(struct sock *sk, int cmd,
96349 tmp.entries_size = t->table->entries_size; 97745 tmp.entries_size = t->table->entries_size;
96350 tmp.valid_hooks = t->table->valid_hooks; 97746 tmp.valid_hooks = t->table->valid_hooks;
96351 97747
@@ -96410,8 +97806,21 @@ index a27f8aa..67174a3 100644
96410 .notifier_call = can_notifier, 97806 .notifier_call = can_notifier,
96411 }; 97807 };
96412 97808
97809diff --git a/net/can/bcm.c b/net/can/bcm.c
97810index dcb75c0..24b1b43 100644
97811--- a/net/can/bcm.c
97812+++ b/net/can/bcm.c
97813@@ -1624,7 +1624,7 @@ static int __init bcm_module_init(void)
97814 }
97815
97816 /* create /proc/net/can-bcm directory */
97817- proc_dir = proc_mkdir("can-bcm", init_net.proc_net);
97818+ proc_dir = proc_mkdir_restrict("can-bcm", init_net.proc_net);
97819 return 0;
97820 }
97821
96413diff --git a/net/can/gw.c b/net/can/gw.c 97822diff --git a/net/can/gw.c b/net/can/gw.c
96414index 3f9b0f3..fc6d4fa 100644 97823index ac31891..4799c17 100644
96415--- a/net/can/gw.c 97824--- a/net/can/gw.c
96416+++ b/net/can/gw.c 97825+++ b/net/can/gw.c
96417@@ -80,7 +80,6 @@ MODULE_PARM_DESC(max_hops, 97826@@ -80,7 +80,6 @@ MODULE_PARM_DESC(max_hops,
@@ -96422,7 +97831,7 @@ index 3f9b0f3..fc6d4fa 100644
96422 97831
96423 static struct kmem_cache *cgw_cache __read_mostly; 97832 static struct kmem_cache *cgw_cache __read_mostly;
96424 97833
96425@@ -954,6 +953,10 @@ static int cgw_remove_job(struct sk_buff *skb, struct nlmsghdr *nlh) 97834@@ -947,6 +946,10 @@ static int cgw_remove_job(struct sk_buff *skb, struct nlmsghdr *nlh)
96426 return err; 97835 return err;
96427 } 97836 }
96428 97837
@@ -96433,7 +97842,7 @@ index 3f9b0f3..fc6d4fa 100644
96433 static __init int cgw_module_init(void) 97842 static __init int cgw_module_init(void)
96434 { 97843 {
96435 /* sanitize given module parameter */ 97844 /* sanitize given module parameter */
96436@@ -969,7 +972,6 @@ static __init int cgw_module_init(void) 97845@@ -962,7 +965,6 @@ static __init int cgw_module_init(void)
96437 return -ENOMEM; 97846 return -ENOMEM;
96438 97847
96439 /* set notifier */ 97848 /* set notifier */
@@ -96441,11 +97850,24 @@ index 3f9b0f3..fc6d4fa 100644
96441 register_netdevice_notifier(&notifier); 97850 register_netdevice_notifier(&notifier);
96442 97851
96443 if (__rtnl_register(PF_CAN, RTM_GETROUTE, NULL, cgw_dump_jobs, NULL)) { 97852 if (__rtnl_register(PF_CAN, RTM_GETROUTE, NULL, cgw_dump_jobs, NULL)) {
97853diff --git a/net/can/proc.c b/net/can/proc.c
97854index b543470..d2ddae2 100644
97855--- a/net/can/proc.c
97856+++ b/net/can/proc.c
97857@@ -468,7 +468,7 @@ static void can_remove_proc_readentry(const char *name)
97858 void can_init_proc(void)
97859 {
97860 /* create /proc/net/can directory */
97861- can_dir = proc_mkdir("can", init_net.proc_net);
97862+ can_dir = proc_mkdir_restrict("can", init_net.proc_net);
97863
97864 if (!can_dir) {
97865 printk(KERN_INFO "can: failed to create /proc/net/can . "
96444diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c 97866diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c
96445index 4a5df7b..9ad1f1d 100644 97867index 30efc5c..cfa1bbc 100644
96446--- a/net/ceph/messenger.c 97868--- a/net/ceph/messenger.c
96447+++ b/net/ceph/messenger.c 97869+++ b/net/ceph/messenger.c
96448@@ -186,7 +186,7 @@ static void con_fault(struct ceph_connection *con); 97870@@ -187,7 +187,7 @@ static void con_fault(struct ceph_connection *con);
96449 #define MAX_ADDR_STR_LEN 64 /* 54 is enough */ 97871 #define MAX_ADDR_STR_LEN 64 /* 54 is enough */
96450 97872
96451 static char addr_str[ADDR_STR_COUNT][MAX_ADDR_STR_LEN]; 97873 static char addr_str[ADDR_STR_COUNT][MAX_ADDR_STR_LEN];
@@ -96454,7 +97876,7 @@ index 4a5df7b..9ad1f1d 100644
96454 97876
96455 static struct page *zero_page; /* used in certain error cases */ 97877 static struct page *zero_page; /* used in certain error cases */
96456 97878
96457@@ -197,7 +197,7 @@ const char *ceph_pr_addr(const struct sockaddr_storage *ss) 97879@@ -198,7 +198,7 @@ const char *ceph_pr_addr(const struct sockaddr_storage *ss)
96458 struct sockaddr_in *in4 = (struct sockaddr_in *) ss; 97880 struct sockaddr_in *in4 = (struct sockaddr_in *) ss;
96459 struct sockaddr_in6 *in6 = (struct sockaddr_in6 *) ss; 97881 struct sockaddr_in6 *in6 = (struct sockaddr_in6 *) ss;
96460 97882
@@ -96617,10 +98039,10 @@ index a16ed7b..eb44d17 100644
96617 98039
96618 return err; 98040 return err;
96619diff --git a/net/core/dev.c b/net/core/dev.c 98041diff --git a/net/core/dev.c b/net/core/dev.c
96620index 616eccf..31832d38 100644 98042index fccc195..c8486ab 100644
96621--- a/net/core/dev.c 98043--- a/net/core/dev.c
96622+++ b/net/core/dev.c 98044+++ b/net/core/dev.c
96623@@ -1684,14 +1684,14 @@ int dev_forward_skb(struct net_device *dev, struct sk_buff *skb) 98045@@ -1688,14 +1688,14 @@ int dev_forward_skb(struct net_device *dev, struct sk_buff *skb)
96624 { 98046 {
96625 if (skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY) { 98047 if (skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY) {
96626 if (skb_copy_ubufs(skb, GFP_ATOMIC)) { 98048 if (skb_copy_ubufs(skb, GFP_ATOMIC)) {
@@ -96637,7 +98059,7 @@ index 616eccf..31832d38 100644
96637 kfree_skb(skb); 98059 kfree_skb(skb);
96638 return NET_RX_DROP; 98060 return NET_RX_DROP;
96639 } 98061 }
96640@@ -2434,7 +2434,7 @@ static int illegal_highdma(const struct net_device *dev, struct sk_buff *skb) 98062@@ -2453,7 +2453,7 @@ static int illegal_highdma(const struct net_device *dev, struct sk_buff *skb)
96641 98063
96642 struct dev_gso_cb { 98064 struct dev_gso_cb {
96643 void (*destructor)(struct sk_buff *skb); 98065 void (*destructor)(struct sk_buff *skb);
@@ -96646,7 +98068,7 @@ index 616eccf..31832d38 100644
96646 98068
96647 #define DEV_GSO_CB(skb) ((struct dev_gso_cb *)(skb)->cb) 98069 #define DEV_GSO_CB(skb) ((struct dev_gso_cb *)(skb)->cb)
96648 98070
96649@@ -3224,7 +3224,7 @@ enqueue: 98071@@ -3227,7 +3227,7 @@ enqueue:
96650 98072
96651 local_irq_restore(flags); 98073 local_irq_restore(flags);
96652 98074
@@ -96655,7 +98077,7 @@ index 616eccf..31832d38 100644
96655 kfree_skb(skb); 98077 kfree_skb(skb);
96656 return NET_RX_DROP; 98078 return NET_RX_DROP;
96657 } 98079 }
96658@@ -3296,7 +3296,7 @@ int netif_rx_ni(struct sk_buff *skb) 98080@@ -3308,7 +3308,7 @@ int netif_rx_ni(struct sk_buff *skb)
96659 } 98081 }
96660 EXPORT_SYMBOL(netif_rx_ni); 98082 EXPORT_SYMBOL(netif_rx_ni);
96661 98083
@@ -96664,7 +98086,7 @@ index 616eccf..31832d38 100644
96664 { 98086 {
96665 struct softnet_data *sd = &__get_cpu_var(softnet_data); 98087 struct softnet_data *sd = &__get_cpu_var(softnet_data);
96666 98088
96667@@ -3630,7 +3630,7 @@ ncls: 98089@@ -3645,7 +3645,7 @@ ncls:
96668 ret = pt_prev->func(skb, skb->dev, pt_prev, orig_dev); 98090 ret = pt_prev->func(skb, skb->dev, pt_prev, orig_dev);
96669 } else { 98091 } else {
96670 drop: 98092 drop:
@@ -96673,7 +98095,7 @@ index 616eccf..31832d38 100644
96673 kfree_skb(skb); 98095 kfree_skb(skb);
96674 /* Jamal, now you will not able to escape explaining 98096 /* Jamal, now you will not able to escape explaining
96675 * me how you were going to use this. :-) 98097 * me how you were going to use this. :-)
96676@@ -4290,7 +4290,7 @@ void netif_napi_del(struct napi_struct *napi) 98098@@ -4333,7 +4333,7 @@ void netif_napi_del(struct napi_struct *napi)
96677 } 98099 }
96678 EXPORT_SYMBOL(netif_napi_del); 98100 EXPORT_SYMBOL(netif_napi_del);
96679 98101
@@ -96682,7 +98104,7 @@ index 616eccf..31832d38 100644
96682 { 98104 {
96683 struct softnet_data *sd = &__get_cpu_var(softnet_data); 98105 struct softnet_data *sd = &__get_cpu_var(softnet_data);
96684 unsigned long time_limit = jiffies + 2; 98106 unsigned long time_limit = jiffies + 2;
96685@@ -6179,7 +6179,7 @@ struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev, 98107@@ -6302,7 +6302,7 @@ struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev,
96686 } else { 98108 } else {
96687 netdev_stats_to_stats64(storage, &dev->stats); 98109 netdev_stats_to_stats64(storage, &dev->stats);
96688 } 98110 }
@@ -96692,10 +98114,10 @@ index 616eccf..31832d38 100644
96692 } 98114 }
96693 EXPORT_SYMBOL(dev_get_stats); 98115 EXPORT_SYMBOL(dev_get_stats);
96694diff --git a/net/core/dev_ioctl.c b/net/core/dev_ioctl.c 98116diff --git a/net/core/dev_ioctl.c b/net/core/dev_ioctl.c
96695index 5b7d0e1..cb960fc 100644 98117index cf999e0..c59a975 100644
96696--- a/net/core/dev_ioctl.c 98118--- a/net/core/dev_ioctl.c
96697+++ b/net/core/dev_ioctl.c 98119+++ b/net/core/dev_ioctl.c
96698@@ -365,9 +365,13 @@ void dev_load(struct net *net, const char *name) 98120@@ -366,9 +366,13 @@ void dev_load(struct net *net, const char *name)
96699 if (no_module && capable(CAP_NET_ADMIN)) 98121 if (no_module && capable(CAP_NET_ADMIN))
96700 no_module = request_module("netdev-%s", name); 98122 no_module = request_module("netdev-%s", name);
96701 if (no_module && capable(CAP_SYS_MODULE)) { 98123 if (no_module && capable(CAP_SYS_MODULE)) {
@@ -96710,10 +98132,66 @@ index 5b7d0e1..cb960fc 100644
96710 } 98132 }
96711 EXPORT_SYMBOL(dev_load); 98133 EXPORT_SYMBOL(dev_load);
96712diff --git a/net/core/filter.c b/net/core/filter.c 98134diff --git a/net/core/filter.c b/net/core/filter.c
96713index ad30d62..c2757df 100644 98135index ebce437..9fed9d0 100644
96714--- a/net/core/filter.c 98136--- a/net/core/filter.c
96715+++ b/net/core/filter.c 98137+++ b/net/core/filter.c
96716@@ -679,7 +679,7 @@ int sk_unattached_filter_create(struct sk_filter **pfp, 98138@@ -126,7 +126,7 @@ unsigned int sk_run_filter(const struct sk_buff *skb,
98139 void *ptr;
98140 u32 A = 0; /* Accumulator */
98141 u32 X = 0; /* Index Register */
98142- u32 mem[BPF_MEMWORDS]; /* Scratch Memory Store */
98143+ u32 mem[BPF_MEMWORDS] = {}; /* Scratch Memory Store */
98144 u32 tmp;
98145 int k;
98146
98147@@ -292,10 +292,10 @@ load_b:
98148 X = K;
98149 continue;
98150 case BPF_S_LD_MEM:
98151- A = mem[K];
98152+ A = mem[K&15];
98153 continue;
98154 case BPF_S_LDX_MEM:
98155- X = mem[K];
98156+ X = mem[K&15];
98157 continue;
98158 case BPF_S_MISC_TAX:
98159 X = A;
98160@@ -308,10 +308,10 @@ load_b:
98161 case BPF_S_RET_A:
98162 return A;
98163 case BPF_S_ST:
98164- mem[K] = A;
98165+ mem[K&15] = A;
98166 continue;
98167 case BPF_S_STX:
98168- mem[K] = X;
98169+ mem[K&15] = X;
98170 continue;
98171 case BPF_S_ANC_PROTOCOL:
98172 A = ntohs(skb->protocol);
98173@@ -395,9 +395,10 @@ load_b:
98174 continue;
98175 #endif
98176 default:
98177- WARN_RATELIMIT(1, "Unknown code:%u jt:%u tf:%u k:%u\n",
98178+ WARN(1, KERN_ALERT "Unknown sock filter code:%u jt:%u tf:%u k:%u\n",
98179 fentry->code, fentry->jt,
98180 fentry->jf, fentry->k);
98181+ BUG();
98182 return 0;
98183 }
98184 }
98185@@ -420,7 +421,7 @@ static int check_load_and_stores(struct sock_filter *filter, int flen)
98186 u16 *masks, memvalid = 0; /* one bit per cell, 16 cells */
98187 int pc, ret = 0;
98188
98189- BUILD_BUG_ON(BPF_MEMWORDS > 16);
98190+ BUILD_BUG_ON(BPF_MEMWORDS != 16);
98191 masks = kmalloc(flen * sizeof(*masks), GFP_KERNEL);
98192 if (!masks)
98193 return -ENOMEM;
98194@@ -683,7 +684,7 @@ int sk_unattached_filter_create(struct sk_filter **pfp,
96717 fp = kmalloc(sk_filter_size(fprog->len), GFP_KERNEL); 98195 fp = kmalloc(sk_filter_size(fprog->len), GFP_KERNEL);
96718 if (!fp) 98196 if (!fp)
96719 return -ENOMEM; 98197 return -ENOMEM;
@@ -96785,10 +98263,10 @@ index b618694..192bbba 100644
96785 98263
96786 m->msg_iov = iov; 98264 m->msg_iov = iov;
96787diff --git a/net/core/neighbour.c b/net/core/neighbour.c 98265diff --git a/net/core/neighbour.c b/net/core/neighbour.c
96788index 43128dd..e4d4311 100644 98266index 7d95f69..a6065de 100644
96789--- a/net/core/neighbour.c 98267--- a/net/core/neighbour.c
96790+++ b/net/core/neighbour.c 98268+++ b/net/core/neighbour.c
96791@@ -2775,7 +2775,7 @@ static int proc_unres_qlen(struct ctl_table *ctl, int write, 98269@@ -2824,7 +2824,7 @@ static int proc_unres_qlen(struct ctl_table *ctl, int write,
96792 void __user *buffer, size_t *lenp, loff_t *ppos) 98270 void __user *buffer, size_t *lenp, loff_t *ppos)
96793 { 98271 {
96794 int size, ret; 98272 int size, ret;
@@ -96797,7 +98275,16 @@ index 43128dd..e4d4311 100644
96797 98275
96798 tmp.extra1 = &zero; 98276 tmp.extra1 = &zero;
96799 tmp.extra2 = &unres_qlen_max; 98277 tmp.extra2 = &unres_qlen_max;
96800@@ -2983,11 +2983,12 @@ int neigh_sysctl_register(struct net_device *dev, struct neigh_parms *p, 98278@@ -2886,7 +2886,7 @@ static int neigh_proc_dointvec_zero_intmax(struct ctl_table *ctl, int write,
98279 void __user *buffer,
98280 size_t *lenp, loff_t *ppos)
98281 {
98282- struct ctl_table tmp = *ctl;
98283+ ctl_table_no_const tmp = *ctl;
98284 int ret;
98285
98286 tmp.extra1 = &zero;
98287@@ -3058,11 +3058,12 @@ int neigh_sysctl_register(struct net_device *dev, struct neigh_parms *p,
96801 memset(&t->neigh_vars[NEIGH_VAR_GC_INTERVAL], 0, 98288 memset(&t->neigh_vars[NEIGH_VAR_GC_INTERVAL], 0,
96802 sizeof(t->neigh_vars[NEIGH_VAR_GC_INTERVAL])); 98289 sizeof(t->neigh_vars[NEIGH_VAR_GC_INTERVAL]));
96803 } else { 98290 } else {
@@ -96813,12 +98300,45 @@ index 43128dd..e4d4311 100644
96813+ t->neigh_vars[NEIGH_VAR_GC_THRESH3].data = &ntable->gc_thresh3; 98300+ t->neigh_vars[NEIGH_VAR_GC_THRESH3].data = &ntable->gc_thresh3;
96814 } 98301 }
96815 98302
96816 98303 if (handler) {
96817diff --git a/net/core/net-procfs.c b/net/core/net-procfs.c 98304diff --git a/net/core/net-procfs.c b/net/core/net-procfs.c
96818index 2bf8329..7960607 100644 98305index 2bf8329..2eb1423 100644
96819--- a/net/core/net-procfs.c 98306--- a/net/core/net-procfs.c
96820+++ b/net/core/net-procfs.c 98307+++ b/net/core/net-procfs.c
96821@@ -283,8 +283,13 @@ static int ptype_seq_show(struct seq_file *seq, void *v) 98308@@ -79,7 +79,13 @@ static void dev_seq_printf_stats(struct seq_file *seq, struct net_device *dev)
98309 struct rtnl_link_stats64 temp;
98310 const struct rtnl_link_stats64 *stats = dev_get_stats(dev, &temp);
98311
98312- seq_printf(seq, "%6s: %7llu %7llu %4llu %4llu %4llu %5llu %10llu %9llu "
98313+ if (gr_proc_is_restricted())
98314+ seq_printf(seq, "%6s: %7llu %7llu %4llu %4llu %4llu %5llu %10llu %9llu "
98315+ "%8llu %7llu %4llu %4llu %4llu %5llu %7llu %10llu\n",
98316+ dev->name, 0ULL, 0ULL, 0ULL, 0ULL, 0ULL, 0ULL, 0ULL, 0ULL, 0ULL, 0ULL,
98317+ 0ULL, 0ULL, 0ULL, 0ULL, 0ULL, 0ULL);
98318+ else
98319+ seq_printf(seq, "%6s: %7llu %7llu %4llu %4llu %4llu %5llu %10llu %9llu "
98320 "%8llu %7llu %4llu %4llu %4llu %5llu %7llu %10llu\n",
98321 dev->name, stats->rx_bytes, stats->rx_packets,
98322 stats->rx_errors,
98323@@ -166,7 +172,7 @@ static int softnet_seq_show(struct seq_file *seq, void *v)
98324 return 0;
98325 }
98326
98327-static const struct seq_operations dev_seq_ops = {
98328+const struct seq_operations dev_seq_ops = {
98329 .start = dev_seq_start,
98330 .next = dev_seq_next,
98331 .stop = dev_seq_stop,
98332@@ -196,7 +202,7 @@ static const struct seq_operations softnet_seq_ops = {
98333
98334 static int softnet_seq_open(struct inode *inode, struct file *file)
98335 {
98336- return seq_open(file, &softnet_seq_ops);
98337+ return seq_open_restrict(file, &softnet_seq_ops);
98338 }
98339
98340 static const struct file_operations softnet_seq_fops = {
98341@@ -283,8 +289,13 @@ static int ptype_seq_show(struct seq_file *seq, void *v)
96822 else 98342 else
96823 seq_printf(seq, "%04x", ntohs(pt->type)); 98343 seq_printf(seq, "%04x", ntohs(pt->type));
96824 98344
@@ -96832,21 +98352,8 @@ index 2bf8329..7960607 100644
96832 } 98352 }
96833 98353
96834 return 0; 98354 return 0;
96835diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c
96836index f3edf96..3cd8b40 100644
96837--- a/net/core/net-sysfs.c
96838+++ b/net/core/net-sysfs.c
96839@@ -1358,7 +1358,7 @@ void netdev_class_remove_file_ns(struct class_attribute *class_attr,
96840 }
96841 EXPORT_SYMBOL(netdev_class_remove_file_ns);
96842
96843-int netdev_kobject_init(void)
96844+int __init netdev_kobject_init(void)
96845 {
96846 kobj_ns_type_register(&net_ns_type_operations);
96847 return class_register(&net_class);
96848diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c 98355diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c
96849index 81d3a9a..a0bd7a8 100644 98356index 7c8ffd9..0cb3687 100644
96850--- a/net/core/net_namespace.c 98357--- a/net/core/net_namespace.c
96851+++ b/net/core/net_namespace.c 98358+++ b/net/core/net_namespace.c
96852@@ -443,7 +443,7 @@ static int __register_pernet_operations(struct list_head *list, 98359@@ -443,7 +443,7 @@ static int __register_pernet_operations(struct list_head *list,
@@ -96886,7 +98393,7 @@ index 81d3a9a..a0bd7a8 100644
96886 return error; 98393 return error;
96887 } 98394 }
96888diff --git a/net/core/netpoll.c b/net/core/netpoll.c 98395diff --git a/net/core/netpoll.c b/net/core/netpoll.c
96889index 81975f2..9ef3531 100644 98396index df9e6b1..6e68e4e 100644
96890--- a/net/core/netpoll.c 98397--- a/net/core/netpoll.c
96891+++ b/net/core/netpoll.c 98398+++ b/net/core/netpoll.c
96892@@ -435,7 +435,7 @@ void netpoll_send_udp(struct netpoll *np, const char *msg, int len) 98399@@ -435,7 +435,7 @@ void netpoll_send_udp(struct netpoll *np, const char *msg, int len)
@@ -96907,8 +98414,21 @@ index 81975f2..9ef3531 100644
96907 iph->frag_off = 0; 98414 iph->frag_off = 0;
96908 iph->ttl = 64; 98415 iph->ttl = 64;
96909 iph->protocol = IPPROTO_UDP; 98416 iph->protocol = IPPROTO_UDP;
98417diff --git a/net/core/pktgen.c b/net/core/pktgen.c
98418index fdac61c..e5e5b46 100644
98419--- a/net/core/pktgen.c
98420+++ b/net/core/pktgen.c
98421@@ -3719,7 +3719,7 @@ static int __net_init pg_net_init(struct net *net)
98422 pn->net = net;
98423 INIT_LIST_HEAD(&pn->pktgen_threads);
98424 pn->pktgen_exiting = false;
98425- pn->proc_dir = proc_mkdir(PG_PROC_DIR, pn->net->proc_net);
98426+ pn->proc_dir = proc_mkdir_restrict(PG_PROC_DIR, pn->net->proc_net);
98427 if (!pn->proc_dir) {
98428 pr_warn("cannot create /proc/net/%s\n", PG_PROC_DIR);
98429 return -ENODEV;
96910diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c 98430diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
96911index cf67144..12bf94c 100644 98431index 83b9d6a..cff1ce7 100644
96912--- a/net/core/rtnetlink.c 98432--- a/net/core/rtnetlink.c
96913+++ b/net/core/rtnetlink.c 98433+++ b/net/core/rtnetlink.c
96914@@ -58,7 +58,7 @@ struct rtnl_link { 98434@@ -58,7 +58,7 @@ struct rtnl_link {
@@ -96987,10 +98507,10 @@ index b442e7e..6f5b5a2 100644
96987 { 98507 {
96988 struct socket *sock; 98508 struct socket *sock;
96989diff --git a/net/core/skbuff.c b/net/core/skbuff.c 98509diff --git a/net/core/skbuff.c b/net/core/skbuff.c
96990index deffb37..213db0a 100644 98510index e5ae776e..15c90cb 100644
96991--- a/net/core/skbuff.c 98511--- a/net/core/skbuff.c
96992+++ b/net/core/skbuff.c 98512+++ b/net/core/skbuff.c
96993@@ -2006,7 +2006,7 @@ EXPORT_SYMBOL(__skb_checksum); 98513@@ -2003,7 +2003,7 @@ EXPORT_SYMBOL(__skb_checksum);
96994 __wsum skb_checksum(const struct sk_buff *skb, int offset, 98514 __wsum skb_checksum(const struct sk_buff *skb, int offset,
96995 int len, __wsum csum) 98515 int len, __wsum csum)
96996 { 98516 {
@@ -96999,7 +98519,7 @@ index deffb37..213db0a 100644
96999 .update = csum_partial_ext, 98519 .update = csum_partial_ext,
97000 .combine = csum_block_add_ext, 98520 .combine = csum_block_add_ext,
97001 }; 98521 };
97002@@ -3119,13 +3119,15 @@ void __init skb_init(void) 98522@@ -3220,13 +3220,15 @@ void __init skb_init(void)
97003 skbuff_head_cache = kmem_cache_create("skbuff_head_cache", 98523 skbuff_head_cache = kmem_cache_create("skbuff_head_cache",
97004 sizeof(struct sk_buff), 98524 sizeof(struct sk_buff),
97005 0, 98525 0,
@@ -97018,7 +98538,7 @@ index deffb37..213db0a 100644
97018 } 98538 }
97019 98539
97020diff --git a/net/core/sock.c b/net/core/sock.c 98540diff --git a/net/core/sock.c b/net/core/sock.c
97021index fbc5cfb..6d7e8c3 100644 98541index c0fc6bd..51d8326 100644
97022--- a/net/core/sock.c 98542--- a/net/core/sock.c
97023+++ b/net/core/sock.c 98543+++ b/net/core/sock.c
97024@@ -393,7 +393,7 @@ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) 98544@@ -393,7 +393,7 @@ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
@@ -97066,7 +98586,7 @@ index fbc5cfb..6d7e8c3 100644
97066 goto discard_and_relse; 98586 goto discard_and_relse;
97067 } 98587 }
97068 98588
97069@@ -950,12 +950,12 @@ int sock_getsockopt(struct socket *sock, int level, int optname, 98589@@ -949,12 +949,12 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
97070 struct timeval tm; 98590 struct timeval tm;
97071 } v; 98591 } v;
97072 98592
@@ -97082,7 +98602,7 @@ index fbc5cfb..6d7e8c3 100644
97082 return -EINVAL; 98602 return -EINVAL;
97083 98603
97084 memset(&v, 0, sizeof(v)); 98604 memset(&v, 0, sizeof(v));
97085@@ -1107,11 +1107,11 @@ int sock_getsockopt(struct socket *sock, int level, int optname, 98605@@ -1106,11 +1106,11 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
97086 98606
97087 case SO_PEERNAME: 98607 case SO_PEERNAME:
97088 { 98608 {
@@ -97096,7 +98616,7 @@ index fbc5cfb..6d7e8c3 100644
97096 return -EINVAL; 98616 return -EINVAL;
97097 if (copy_to_user(optval, address, len)) 98617 if (copy_to_user(optval, address, len))
97098 return -EFAULT; 98618 return -EFAULT;
97099@@ -1188,7 +1188,7 @@ int sock_getsockopt(struct socket *sock, int level, int optname, 98619@@ -1191,7 +1191,7 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
97100 98620
97101 if (len > lv) 98621 if (len > lv)
97102 len = lv; 98622 len = lv;
@@ -97105,7 +98625,7 @@ index fbc5cfb..6d7e8c3 100644
97105 return -EFAULT; 98625 return -EFAULT;
97106 lenout: 98626 lenout:
97107 if (put_user(len, optlen)) 98627 if (put_user(len, optlen))
97108@@ -2353,7 +2353,7 @@ void sock_init_data(struct socket *sock, struct sock *sk) 98628@@ -2326,7 +2326,7 @@ void sock_init_data(struct socket *sock, struct sock *sk)
97109 */ 98629 */
97110 smp_wmb(); 98630 smp_wmb();
97111 atomic_set(&sk->sk_refcnt, 1); 98631 atomic_set(&sk->sk_refcnt, 1);
@@ -97114,7 +98634,7 @@ index fbc5cfb..6d7e8c3 100644
97114 } 98634 }
97115 EXPORT_SYMBOL(sock_init_data); 98635 EXPORT_SYMBOL(sock_init_data);
97116 98636
97117@@ -2478,6 +2478,7 @@ void sock_enable_timestamp(struct sock *sk, int flag) 98637@@ -2454,6 +2454,7 @@ void sock_enable_timestamp(struct sock *sk, int flag)
97118 int sock_recv_errqueue(struct sock *sk, struct msghdr *msg, int len, 98638 int sock_recv_errqueue(struct sock *sk, struct msghdr *msg, int len,
97119 int level, int type) 98639 int level, int type)
97120 { 98640 {
@@ -97122,7 +98642,7 @@ index fbc5cfb..6d7e8c3 100644
97122 struct sock_exterr_skb *serr; 98642 struct sock_exterr_skb *serr;
97123 struct sk_buff *skb, *skb2; 98643 struct sk_buff *skb, *skb2;
97124 int copied, err; 98644 int copied, err;
97125@@ -2499,7 +2500,8 @@ int sock_recv_errqueue(struct sock *sk, struct msghdr *msg, int len, 98645@@ -2475,7 +2476,8 @@ int sock_recv_errqueue(struct sock *sk, struct msghdr *msg, int len,
97126 sock_recv_timestamp(msg, sk, skb); 98646 sock_recv_timestamp(msg, sk, skb);
97127 98647
97128 serr = SKB_EXT_ERR(skb); 98648 serr = SKB_EXT_ERR(skb);
@@ -97133,7 +98653,7 @@ index fbc5cfb..6d7e8c3 100644
97133 msg->msg_flags |= MSG_ERRQUEUE; 98653 msg->msg_flags |= MSG_ERRQUEUE;
97134 err = copied; 98654 err = copied;
97135diff --git a/net/core/sock_diag.c b/net/core/sock_diag.c 98655diff --git a/net/core/sock_diag.c b/net/core/sock_diag.c
97136index a0e9cf6..ef7f9ed 100644 98656index 6a7fae2..d7c22e6 100644
97137--- a/net/core/sock_diag.c 98657--- a/net/core/sock_diag.c
97138+++ b/net/core/sock_diag.c 98658+++ b/net/core/sock_diag.c
97139@@ -9,26 +9,33 @@ 98659@@ -9,26 +9,33 @@
@@ -97195,7 +98715,7 @@ index a0e9cf6..ef7f9ed 100644
97195 } 98715 }
97196 EXPORT_SYMBOL_GPL(sock_diag_unregister); 98716 EXPORT_SYMBOL_GPL(sock_diag_unregister);
97197diff --git a/net/core/sysctl_net_core.c b/net/core/sysctl_net_core.c 98717diff --git a/net/core/sysctl_net_core.c b/net/core/sysctl_net_core.c
97198index cca4441..5e616de 100644 98718index cf9cd13..8b56af3 100644
97199--- a/net/core/sysctl_net_core.c 98719--- a/net/core/sysctl_net_core.c
97200+++ b/net/core/sysctl_net_core.c 98720+++ b/net/core/sysctl_net_core.c
97201@@ -32,7 +32,7 @@ static int rps_sock_flow_sysctl(struct ctl_table *table, int write, 98721@@ -32,7 +32,7 @@ static int rps_sock_flow_sysctl(struct ctl_table *table, int write,
@@ -97207,7 +98727,7 @@ index cca4441..5e616de 100644
97207 .data = &size, 98727 .data = &size,
97208 .maxlen = sizeof(size), 98728 .maxlen = sizeof(size),
97209 .mode = table->mode 98729 .mode = table->mode
97210@@ -199,7 +199,7 @@ static int set_default_qdisc(struct ctl_table *table, int write, 98730@@ -200,7 +200,7 @@ static int set_default_qdisc(struct ctl_table *table, int write,
97211 void __user *buffer, size_t *lenp, loff_t *ppos) 98731 void __user *buffer, size_t *lenp, loff_t *ppos)
97212 { 98732 {
97213 char id[IFNAMSIZ]; 98733 char id[IFNAMSIZ];
@@ -97216,7 +98736,7 @@ index cca4441..5e616de 100644
97216 .data = id, 98736 .data = id,
97217 .maxlen = IFNAMSIZ, 98737 .maxlen = IFNAMSIZ,
97218 }; 98738 };
97219@@ -378,13 +378,12 @@ static struct ctl_table netns_core_table[] = { 98739@@ -379,13 +379,12 @@ static struct ctl_table netns_core_table[] = {
97220 98740
97221 static __net_init int sysctl_core_net_init(struct net *net) 98741 static __net_init int sysctl_core_net_init(struct net *net)
97222 { 98742 {
@@ -97232,7 +98752,7 @@ index cca4441..5e616de 100644
97232 if (tbl == NULL) 98752 if (tbl == NULL)
97233 goto err_dup; 98753 goto err_dup;
97234 98754
97235@@ -394,17 +393,16 @@ static __net_init int sysctl_core_net_init(struct net *net) 98755@@ -395,17 +394,16 @@ static __net_init int sysctl_core_net_init(struct net *net)
97236 if (net->user_ns != &init_user_ns) { 98756 if (net->user_ns != &init_user_ns) {
97237 tbl[0].procname = NULL; 98757 tbl[0].procname = NULL;
97238 } 98758 }
@@ -97254,7 +98774,7 @@ index cca4441..5e616de 100644
97254 err_dup: 98774 err_dup:
97255 return -ENOMEM; 98775 return -ENOMEM;
97256 } 98776 }
97257@@ -419,7 +417,7 @@ static __net_exit void sysctl_core_net_exit(struct net *net) 98777@@ -420,7 +418,7 @@ static __net_exit void sysctl_core_net_exit(struct net *net)
97258 kfree(tbl); 98778 kfree(tbl);
97259 } 98779 }
97260 98780
@@ -97264,7 +98784,7 @@ index cca4441..5e616de 100644
97264 .exit = sysctl_core_net_exit, 98784 .exit = sysctl_core_net_exit,
97265 }; 98785 };
97266diff --git a/net/decnet/af_decnet.c b/net/decnet/af_decnet.c 98786diff --git a/net/decnet/af_decnet.c b/net/decnet/af_decnet.c
97267index dd4d506..fb2fb87 100644 98787index 4c04848..f575934 100644
97268--- a/net/decnet/af_decnet.c 98788--- a/net/decnet/af_decnet.c
97269+++ b/net/decnet/af_decnet.c 98789+++ b/net/decnet/af_decnet.c
97270@@ -465,6 +465,7 @@ static struct proto dn_proto = { 98790@@ -465,6 +465,7 @@ static struct proto dn_proto = {
@@ -97276,7 +98796,7 @@ index dd4d506..fb2fb87 100644
97276 98796
97277 static struct sock *dn_alloc_sock(struct net *net, struct socket *sock, gfp_t gfp) 98797 static struct sock *dn_alloc_sock(struct net *net, struct socket *sock, gfp_t gfp)
97278diff --git a/net/decnet/dn_dev.c b/net/decnet/dn_dev.c 98798diff --git a/net/decnet/dn_dev.c b/net/decnet/dn_dev.c
97279index dd0dfb2..fdbc764 100644 98799index a603823..a36ee0b 100644
97280--- a/net/decnet/dn_dev.c 98800--- a/net/decnet/dn_dev.c
97281+++ b/net/decnet/dn_dev.c 98801+++ b/net/decnet/dn_dev.c
97282@@ -200,7 +200,7 @@ static struct dn_dev_sysctl_table { 98802@@ -200,7 +200,7 @@ static struct dn_dev_sysctl_table {
@@ -97311,10 +98831,10 @@ index 5325b54..a0d4d69 100644
97311 98831
97312 *lenp = len; 98832 *lenp = len;
97313diff --git a/net/ieee802154/dgram.c b/net/ieee802154/dgram.c 98833diff --git a/net/ieee802154/dgram.c b/net/ieee802154/dgram.c
97314index 1865fdf..581a595 100644 98834index 1846c1f..96d4a9f 100644
97315--- a/net/ieee802154/dgram.c 98835--- a/net/ieee802154/dgram.c
97316+++ b/net/ieee802154/dgram.c 98836+++ b/net/ieee802154/dgram.c
97317@@ -315,8 +315,9 @@ static int dgram_recvmsg(struct kiocb *iocb, struct sock *sk, 98837@@ -313,8 +313,9 @@ static int dgram_recvmsg(struct kiocb *iocb, struct sock *sk,
97318 if (saddr) { 98838 if (saddr) {
97319 saddr->family = AF_IEEE802154; 98839 saddr->family = AF_IEEE802154;
97320 saddr->addr = mac_cb(skb)->sa; 98840 saddr->addr = mac_cb(skb)->sa;
@@ -97326,10 +98846,10 @@ index 1865fdf..581a595 100644
97326 if (flags & MSG_TRUNC) 98846 if (flags & MSG_TRUNC)
97327 copied = skb->len; 98847 copied = skb->len;
97328diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c 98848diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c
97329index e4d96d4..e1651da 100644 98849index 19ab78a..bf575c9 100644
97330--- a/net/ipv4/af_inet.c 98850--- a/net/ipv4/af_inet.c
97331+++ b/net/ipv4/af_inet.c 98851+++ b/net/ipv4/af_inet.c
97332@@ -1686,13 +1686,9 @@ static int __init inet_init(void) 98852@@ -1703,13 +1703,9 @@ static int __init inet_init(void)
97333 98853
97334 BUILD_BUG_ON(sizeof(struct inet_skb_parm) > FIELD_SIZEOF(struct sk_buff, cb)); 98854 BUILD_BUG_ON(sizeof(struct inet_skb_parm) > FIELD_SIZEOF(struct sk_buff, cb));
97335 98855
@@ -97344,7 +98864,7 @@ index e4d96d4..e1651da 100644
97344 98864
97345 rc = proto_register(&udp_prot, 1); 98865 rc = proto_register(&udp_prot, 1);
97346 if (rc) 98866 if (rc)
97347@@ -1799,8 +1795,6 @@ out_unregister_udp_proto: 98867@@ -1816,8 +1812,6 @@ out_unregister_udp_proto:
97348 proto_unregister(&udp_prot); 98868 proto_unregister(&udp_prot);
97349 out_unregister_tcp_proto: 98869 out_unregister_tcp_proto:
97350 proto_unregister(&tcp_prot); 98870 proto_unregister(&tcp_prot);
@@ -97354,10 +98874,10 @@ index e4d96d4..e1651da 100644
97354 } 98874 }
97355 98875
97356diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c 98876diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c
97357index f4b34d8..c54a163 100644 98877index bdbf68b..deb4759 100644
97358--- a/net/ipv4/devinet.c 98878--- a/net/ipv4/devinet.c
97359+++ b/net/ipv4/devinet.c 98879+++ b/net/ipv4/devinet.c
97360@@ -1534,7 +1534,7 @@ static int inet_dump_ifaddr(struct sk_buff *skb, struct netlink_callback *cb) 98880@@ -1543,7 +1543,7 @@ static int inet_dump_ifaddr(struct sk_buff *skb, struct netlink_callback *cb)
97361 idx = 0; 98881 idx = 0;
97362 head = &net->dev_index_head[h]; 98882 head = &net->dev_index_head[h];
97363 rcu_read_lock(); 98883 rcu_read_lock();
@@ -97366,7 +98886,7 @@ index f4b34d8..c54a163 100644
97366 net->dev_base_seq; 98886 net->dev_base_seq;
97367 hlist_for_each_entry_rcu(dev, head, index_hlist) { 98887 hlist_for_each_entry_rcu(dev, head, index_hlist) {
97368 if (idx < s_idx) 98888 if (idx < s_idx)
97369@@ -1845,7 +1845,7 @@ static int inet_netconf_dump_devconf(struct sk_buff *skb, 98889@@ -1861,7 +1861,7 @@ static int inet_netconf_dump_devconf(struct sk_buff *skb,
97370 idx = 0; 98890 idx = 0;
97371 head = &net->dev_index_head[h]; 98891 head = &net->dev_index_head[h];
97372 rcu_read_lock(); 98892 rcu_read_lock();
@@ -97375,7 +98895,7 @@ index f4b34d8..c54a163 100644
97375 net->dev_base_seq; 98895 net->dev_base_seq;
97376 hlist_for_each_entry_rcu(dev, head, index_hlist) { 98896 hlist_for_each_entry_rcu(dev, head, index_hlist) {
97377 if (idx < s_idx) 98897 if (idx < s_idx)
97378@@ -2070,7 +2070,7 @@ static int ipv4_doint_and_flush(struct ctl_table *ctl, int write, 98898@@ -2096,7 +2096,7 @@ static int ipv4_doint_and_flush(struct ctl_table *ctl, int write,
97379 #define DEVINET_SYSCTL_FLUSHING_ENTRY(attr, name) \ 98899 #define DEVINET_SYSCTL_FLUSHING_ENTRY(attr, name) \
97380 DEVINET_SYSCTL_COMPLEX_ENTRY(attr, name, ipv4_doint_and_flush) 98900 DEVINET_SYSCTL_COMPLEX_ENTRY(attr, name, ipv4_doint_and_flush)
97381 98901
@@ -97384,7 +98904,7 @@ index f4b34d8..c54a163 100644
97384 struct ctl_table_header *sysctl_header; 98904 struct ctl_table_header *sysctl_header;
97385 struct ctl_table devinet_vars[__IPV4_DEVCONF_MAX]; 98905 struct ctl_table devinet_vars[__IPV4_DEVCONF_MAX];
97386 } devinet_sysctl = { 98906 } devinet_sysctl = {
97387@@ -2192,7 +2192,7 @@ static __net_init int devinet_init_net(struct net *net) 98907@@ -2218,7 +2218,7 @@ static __net_init int devinet_init_net(struct net *net)
97388 int err; 98908 int err;
97389 struct ipv4_devconf *all, *dflt; 98909 struct ipv4_devconf *all, *dflt;
97390 #ifdef CONFIG_SYSCTL 98910 #ifdef CONFIG_SYSCTL
@@ -97393,7 +98913,7 @@ index f4b34d8..c54a163 100644
97393 struct ctl_table_header *forw_hdr; 98913 struct ctl_table_header *forw_hdr;
97394 #endif 98914 #endif
97395 98915
97396@@ -2210,7 +2210,7 @@ static __net_init int devinet_init_net(struct net *net) 98916@@ -2236,7 +2236,7 @@ static __net_init int devinet_init_net(struct net *net)
97397 goto err_alloc_dflt; 98917 goto err_alloc_dflt;
97398 98918
97399 #ifdef CONFIG_SYSCTL 98919 #ifdef CONFIG_SYSCTL
@@ -97402,7 +98922,7 @@ index f4b34d8..c54a163 100644
97402 if (tbl == NULL) 98922 if (tbl == NULL)
97403 goto err_alloc_ctl; 98923 goto err_alloc_ctl;
97404 98924
97405@@ -2230,7 +2230,10 @@ static __net_init int devinet_init_net(struct net *net) 98925@@ -2256,7 +2256,10 @@ static __net_init int devinet_init_net(struct net *net)
97406 goto err_reg_dflt; 98926 goto err_reg_dflt;
97407 98927
97408 err = -ENOMEM; 98928 err = -ENOMEM;
@@ -97414,7 +98934,7 @@ index f4b34d8..c54a163 100644
97414 if (forw_hdr == NULL) 98934 if (forw_hdr == NULL)
97415 goto err_reg_ctl; 98935 goto err_reg_ctl;
97416 net->ipv4.forw_hdr = forw_hdr; 98936 net->ipv4.forw_hdr = forw_hdr;
97417@@ -2246,8 +2249,7 @@ err_reg_ctl: 98937@@ -2272,8 +2275,7 @@ err_reg_ctl:
97418 err_reg_dflt: 98938 err_reg_dflt:
97419 __devinet_sysctl_unregister(all); 98939 __devinet_sysctl_unregister(all);
97420 err_reg_all: 98940 err_reg_all:
@@ -97453,10 +98973,10 @@ index c7539e2..b455e51 100644
97453 break; 98973 break;
97454 case NETDEV_DOWN: 98974 case NETDEV_DOWN:
97455diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c 98975diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c
97456index e63f47a..e5c531d 100644 98976index 9d43468..ffa28cc 100644
97457--- a/net/ipv4/fib_semantics.c 98977--- a/net/ipv4/fib_semantics.c
97458+++ b/net/ipv4/fib_semantics.c 98978+++ b/net/ipv4/fib_semantics.c
97459@@ -766,7 +766,7 @@ __be32 fib_info_update_nh_saddr(struct net *net, struct fib_nh *nh) 98979@@ -767,7 +767,7 @@ __be32 fib_info_update_nh_saddr(struct net *net, struct fib_nh *nh)
97460 nh->nh_saddr = inet_select_addr(nh->nh_dev, 98980 nh->nh_saddr = inet_select_addr(nh->nh_dev,
97461 nh->nh_gw, 98981 nh->nh_gw,
97462 nh->nh_parent->fib_scope); 98982 nh->nh_parent->fib_scope);
@@ -97466,7 +98986,7 @@ index e63f47a..e5c531d 100644
97466 return nh->nh_saddr; 98986 return nh->nh_saddr;
97467 } 98987 }
97468diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c 98988diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c
97469index fc0e649..febfa65 100644 98989index 0d1e2cb..4501a2c 100644
97470--- a/net/ipv4/inet_connection_sock.c 98990--- a/net/ipv4/inet_connection_sock.c
97471+++ b/net/ipv4/inet_connection_sock.c 98991+++ b/net/ipv4/inet_connection_sock.c
97472@@ -29,7 +29,7 @@ const char inet_csk_timer_bug_msg[] = "inet_csk BUG: unknown timer value\n"; 98992@@ -29,7 +29,7 @@ const char inet_csk_timer_bug_msg[] = "inet_csk BUG: unknown timer value\n";
@@ -97478,23 +98998,6 @@ index fc0e649..febfa65 100644
97478 EXPORT_SYMBOL(sysctl_local_reserved_ports); 98998 EXPORT_SYMBOL(sysctl_local_reserved_ports);
97479 98999
97480 void inet_get_local_port_range(struct net *net, int *low, int *high) 99000 void inet_get_local_port_range(struct net *net, int *low, int *high)
97481diff --git a/net/ipv4/inet_fragment.c b/net/ipv4/inet_fragment.c
97482index bb075fc..322dceb 100644
97483--- a/net/ipv4/inet_fragment.c
97484+++ b/net/ipv4/inet_fragment.c
97485@@ -278,9 +278,10 @@ static struct inet_frag_queue *inet_frag_intern(struct netns_frags *nf,
97486
97487 atomic_inc(&qp->refcnt);
97488 hlist_add_head(&qp->list, &hb->chain);
97489- spin_unlock(&hb->chain_lock);
97490- read_unlock(&f->lock);
97491 inet_frag_lru_add(nf, qp);
97492+ spin_unlock(&hb->chain_lock);
97493+ read_unlock(&f->lock);
97494+
97495 return qp;
97496 }
97497
97498diff --git a/net/ipv4/inet_hashtables.c b/net/ipv4/inet_hashtables.c 99001diff --git a/net/ipv4/inet_hashtables.c b/net/ipv4/inet_hashtables.c
97499index 8b9cf27..0d8d592 100644 99002index 8b9cf27..0d8d592 100644
97500--- a/net/ipv4/inet_hashtables.c 99003--- a/net/ipv4/inet_hashtables.c
@@ -97526,10 +99029,10 @@ index 8b9cf27..0d8d592 100644
97526 inet_twsk_deschedule(tw, death_row); 99029 inet_twsk_deschedule(tw, death_row);
97527 while (twrefcnt) { 99030 while (twrefcnt) {
97528diff --git a/net/ipv4/inetpeer.c b/net/ipv4/inetpeer.c 99031diff --git a/net/ipv4/inetpeer.c b/net/ipv4/inetpeer.c
97529index 33d5537..da337a4 100644 99032index 48f4244..f56d83a 100644
97530--- a/net/ipv4/inetpeer.c 99033--- a/net/ipv4/inetpeer.c
97531+++ b/net/ipv4/inetpeer.c 99034+++ b/net/ipv4/inetpeer.c
97532@@ -503,8 +503,8 @@ relookup: 99035@@ -496,8 +496,8 @@ relookup:
97533 if (p) { 99036 if (p) {
97534 p->daddr = *daddr; 99037 p->daddr = *daddr;
97535 atomic_set(&p->refcnt, 1); 99038 atomic_set(&p->refcnt, 1);
@@ -97541,7 +99044,7 @@ index 33d5537..da337a4 100644
97541 secure_ip_id(daddr->addr.a4) : 99044 secure_ip_id(daddr->addr.a4) :
97542 secure_ipv6_id(daddr->addr.a6)); 99045 secure_ipv6_id(daddr->addr.a6));
97543diff --git a/net/ipv4/ip_fragment.c b/net/ipv4/ip_fragment.c 99046diff --git a/net/ipv4/ip_fragment.c b/net/ipv4/ip_fragment.c
97544index 2481993..2d9a7a7 100644 99047index c10a3ce..dd71f84 100644
97545--- a/net/ipv4/ip_fragment.c 99048--- a/net/ipv4/ip_fragment.c
97546+++ b/net/ipv4/ip_fragment.c 99049+++ b/net/ipv4/ip_fragment.c
97547@@ -283,7 +283,7 @@ static inline int ip_frag_too_far(struct ipq *qp) 99050@@ -283,7 +283,7 @@ static inline int ip_frag_too_far(struct ipq *qp)
@@ -97592,7 +99095,7 @@ index 2481993..2d9a7a7 100644
97592 return -ENOMEM; 99095 return -ENOMEM;
97593 } 99096 }
97594diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c 99097diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c
97595index d306360..1c1a1f1 100644 99098index 94213c8..8bdb342 100644
97596--- a/net/ipv4/ip_gre.c 99099--- a/net/ipv4/ip_gre.c
97597+++ b/net/ipv4/ip_gre.c 99100+++ b/net/ipv4/ip_gre.c
97598@@ -115,7 +115,7 @@ static bool log_ecn_error = true; 99101@@ -115,7 +115,7 @@ static bool log_ecn_error = true;
@@ -97623,10 +99126,10 @@ index d306360..1c1a1f1 100644
97623 .maxtype = IFLA_GRE_MAX, 99126 .maxtype = IFLA_GRE_MAX,
97624 .policy = ipgre_policy, 99127 .policy = ipgre_policy,
97625diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c 99128diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c
97626index ddf32a6..3fdeea9 100644 99129index 580dd96..9fcef7e 100644
97627--- a/net/ipv4/ip_sockglue.c 99130--- a/net/ipv4/ip_sockglue.c
97628+++ b/net/ipv4/ip_sockglue.c 99131+++ b/net/ipv4/ip_sockglue.c
97629@@ -1172,7 +1172,8 @@ static int do_ip_getsockopt(struct sock *sk, int level, int optname, 99132@@ -1171,7 +1171,8 @@ static int do_ip_getsockopt(struct sock *sk, int level, int optname,
97630 len = min_t(unsigned int, len, opt->optlen); 99133 len = min_t(unsigned int, len, opt->optlen);
97631 if (put_user(len, optlen)) 99134 if (put_user(len, optlen))
97632 return -EFAULT; 99135 return -EFAULT;
@@ -97636,7 +99139,7 @@ index ddf32a6..3fdeea9 100644
97636 return -EFAULT; 99139 return -EFAULT;
97637 return 0; 99140 return 0;
97638 } 99141 }
97639@@ -1303,7 +1304,7 @@ static int do_ip_getsockopt(struct sock *sk, int level, int optname, 99142@@ -1302,7 +1303,7 @@ static int do_ip_getsockopt(struct sock *sk, int level, int optname,
97640 if (sk->sk_type != SOCK_STREAM) 99143 if (sk->sk_type != SOCK_STREAM)
97641 return -ENOPROTOOPT; 99144 return -ENOPROTOOPT;
97642 99145
@@ -97646,7 +99149,7 @@ index ddf32a6..3fdeea9 100644
97646 msg.msg_flags = flags; 99149 msg.msg_flags = flags;
97647 99150
97648diff --git a/net/ipv4/ip_vti.c b/net/ipv4/ip_vti.c 99151diff --git a/net/ipv4/ip_vti.c b/net/ipv4/ip_vti.c
97649index 52b802a..b725179 100644 99152index e4a8f76..dd8ad72 100644
97650--- a/net/ipv4/ip_vti.c 99153--- a/net/ipv4/ip_vti.c
97651+++ b/net/ipv4/ip_vti.c 99154+++ b/net/ipv4/ip_vti.c
97652@@ -44,7 +44,7 @@ 99155@@ -44,7 +44,7 @@
@@ -97668,7 +99171,7 @@ index 52b802a..b725179 100644
97668 .maxtype = IFLA_VTI_MAX, 99171 .maxtype = IFLA_VTI_MAX,
97669 .policy = vti_policy, 99172 .policy = vti_policy,
97670diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c 99173diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c
97671index efa1138..20dbba0 100644 99174index b3e86ea..18ce98c 100644
97672--- a/net/ipv4/ipconfig.c 99175--- a/net/ipv4/ipconfig.c
97673+++ b/net/ipv4/ipconfig.c 99176+++ b/net/ipv4/ipconfig.c
97674@@ -334,7 +334,7 @@ static int __init ic_devinet_ioctl(unsigned int cmd, struct ifreq *arg) 99177@@ -334,7 +334,7 @@ static int __init ic_devinet_ioctl(unsigned int cmd, struct ifreq *arg)
@@ -97699,7 +99202,7 @@ index efa1138..20dbba0 100644
97699 return res; 99202 return res;
97700 } 99203 }
97701diff --git a/net/ipv4/ipip.c b/net/ipv4/ipip.c 99204diff --git a/net/ipv4/ipip.c b/net/ipv4/ipip.c
97702index fe3e9f7..4956990 100644 99205index 812b183..56cbe9c 100644
97703--- a/net/ipv4/ipip.c 99206--- a/net/ipv4/ipip.c
97704+++ b/net/ipv4/ipip.c 99207+++ b/net/ipv4/ipip.c
97705@@ -124,7 +124,7 @@ MODULE_PARM_DESC(log_ecn_error, "Log packets received with corrupted ECN"); 99208@@ -124,7 +124,7 @@ MODULE_PARM_DESC(log_ecn_error, "Log packets received with corrupted ECN");
@@ -97721,7 +99224,7 @@ index fe3e9f7..4956990 100644
97721 .maxtype = IFLA_IPTUN_MAX, 99224 .maxtype = IFLA_IPTUN_MAX,
97722 .policy = ipip_policy, 99225 .policy = ipip_policy,
97723diff --git a/net/ipv4/netfilter/arp_tables.c b/net/ipv4/netfilter/arp_tables.c 99226diff --git a/net/ipv4/netfilter/arp_tables.c b/net/ipv4/netfilter/arp_tables.c
97724index 59da7cd..e318de1 100644 99227index f95b6f9..2ee2097 100644
97725--- a/net/ipv4/netfilter/arp_tables.c 99228--- a/net/ipv4/netfilter/arp_tables.c
97726+++ b/net/ipv4/netfilter/arp_tables.c 99229+++ b/net/ipv4/netfilter/arp_tables.c
97727@@ -885,14 +885,14 @@ static int compat_table_info(const struct xt_table_info *info, 99230@@ -885,14 +885,14 @@ static int compat_table_info(const struct xt_table_info *info,
@@ -97751,7 +99254,7 @@ index 59da7cd..e318de1 100644
97751 ret = -EFAULT; 99254 ret = -EFAULT;
97752 else 99255 else
97753 ret = 0; 99256 ret = 0;
97754@@ -1688,7 +1688,7 @@ static int compat_do_arpt_get_ctl(struct sock *sk, int cmd, void __user *user, 99257@@ -1690,7 +1690,7 @@ static int compat_do_arpt_get_ctl(struct sock *sk, int cmd, void __user *user,
97755 99258
97756 switch (cmd) { 99259 switch (cmd) {
97757 case ARPT_SO_GET_INFO: 99260 case ARPT_SO_GET_INFO:
@@ -97760,7 +99263,7 @@ index 59da7cd..e318de1 100644
97760 break; 99263 break;
97761 case ARPT_SO_GET_ENTRIES: 99264 case ARPT_SO_GET_ENTRIES:
97762 ret = compat_get_entries(sock_net(sk), user, len); 99265 ret = compat_get_entries(sock_net(sk), user, len);
97763@@ -1733,7 +1733,7 @@ static int do_arpt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len 99266@@ -1735,7 +1735,7 @@ static int do_arpt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len
97764 99267
97765 switch (cmd) { 99268 switch (cmd) {
97766 case ARPT_SO_GET_INFO: 99269 case ARPT_SO_GET_INFO:
@@ -97770,7 +99273,7 @@ index 59da7cd..e318de1 100644
97770 99273
97771 case ARPT_SO_GET_ENTRIES: 99274 case ARPT_SO_GET_ENTRIES:
97772diff --git a/net/ipv4/netfilter/ip_tables.c b/net/ipv4/netfilter/ip_tables.c 99275diff --git a/net/ipv4/netfilter/ip_tables.c b/net/ipv4/netfilter/ip_tables.c
97773index 718dfbd..cef4152 100644 99276index 99e810f..3711b81 100644
97774--- a/net/ipv4/netfilter/ip_tables.c 99277--- a/net/ipv4/netfilter/ip_tables.c
97775+++ b/net/ipv4/netfilter/ip_tables.c 99278+++ b/net/ipv4/netfilter/ip_tables.c
97776@@ -1073,14 +1073,14 @@ static int compat_table_info(const struct xt_table_info *info, 99279@@ -1073,14 +1073,14 @@ static int compat_table_info(const struct xt_table_info *info,
@@ -97800,7 +99303,7 @@ index 718dfbd..cef4152 100644
97800 ret = -EFAULT; 99303 ret = -EFAULT;
97801 else 99304 else
97802 ret = 0; 99305 ret = 0;
97803@@ -1971,7 +1971,7 @@ compat_do_ipt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len) 99306@@ -1973,7 +1973,7 @@ compat_do_ipt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len)
97804 99307
97805 switch (cmd) { 99308 switch (cmd) {
97806 case IPT_SO_GET_INFO: 99309 case IPT_SO_GET_INFO:
@@ -97809,7 +99312,7 @@ index 718dfbd..cef4152 100644
97809 break; 99312 break;
97810 case IPT_SO_GET_ENTRIES: 99313 case IPT_SO_GET_ENTRIES:
97811 ret = compat_get_entries(sock_net(sk), user, len); 99314 ret = compat_get_entries(sock_net(sk), user, len);
97812@@ -2018,7 +2018,7 @@ do_ipt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len) 99315@@ -2020,7 +2020,7 @@ do_ipt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len)
97813 99316
97814 switch (cmd) { 99317 switch (cmd) {
97815 case IPT_SO_GET_INFO: 99318 case IPT_SO_GET_INFO:
@@ -97818,20 +99321,42 @@ index 718dfbd..cef4152 100644
97818 break; 99321 break;
97819 99322
97820 case IPT_SO_GET_ENTRIES: 99323 case IPT_SO_GET_ENTRIES:
99324diff --git a/net/ipv4/netfilter/ipt_CLUSTERIP.c b/net/ipv4/netfilter/ipt_CLUSTERIP.c
99325index 2510c02..cfb34fa 100644
99326--- a/net/ipv4/netfilter/ipt_CLUSTERIP.c
99327+++ b/net/ipv4/netfilter/ipt_CLUSTERIP.c
99328@@ -720,7 +720,7 @@ static int clusterip_net_init(struct net *net)
99329 spin_lock_init(&cn->lock);
99330
99331 #ifdef CONFIG_PROC_FS
99332- cn->procdir = proc_mkdir("ipt_CLUSTERIP", net->proc_net);
99333+ cn->procdir = proc_mkdir_restrict("ipt_CLUSTERIP", net->proc_net);
99334 if (!cn->procdir) {
99335 pr_err("Unable to proc dir entry\n");
99336 return -ENOMEM;
97821diff --git a/net/ipv4/ping.c b/net/ipv4/ping.c 99337diff --git a/net/ipv4/ping.c b/net/ipv4/ping.c
97822index 242e7f4..a084e95 100644 99338index e21934b..16f52a6 100644
97823--- a/net/ipv4/ping.c 99339--- a/net/ipv4/ping.c
97824+++ b/net/ipv4/ping.c 99340+++ b/net/ipv4/ping.c
97825@@ -55,7 +55,7 @@ 99341@@ -59,7 +59,7 @@ struct ping_table {
97826 99342 };
97827 99343
97828 struct ping_table ping_table; 99344 static struct ping_table ping_table;
97829-struct pingv6_ops pingv6_ops; 99345-struct pingv6_ops pingv6_ops;
97830+struct pingv6_ops *pingv6_ops; 99346+struct pingv6_ops *pingv6_ops;
97831 EXPORT_SYMBOL_GPL(pingv6_ops); 99347 EXPORT_SYMBOL_GPL(pingv6_ops);
97832 99348
97833 static u16 ping_port_rover; 99349 static u16 ping_port_rover;
97834@@ -334,7 +334,7 @@ static int ping_check_bind_addr(struct sock *sk, struct inet_sock *isk, 99350@@ -259,7 +259,7 @@ int ping_init_sock(struct sock *sk)
99351
99352 inet_get_ping_group_range_net(net, &low, &high);
99353 if (gid_lte(low, group) && gid_lte(group, high))
99354- return 0;
99355+ goto out_release_group;
99356
99357 group_info = get_current_groups();
99358 count = group_info->ngroups;
99359@@ -348,7 +348,7 @@ static int ping_check_bind_addr(struct sock *sk, struct inet_sock *isk,
97835 return -ENODEV; 99360 return -ENODEV;
97836 } 99361 }
97837 } 99362 }
@@ -97840,7 +99365,7 @@ index 242e7f4..a084e95 100644
97840 scoped); 99365 scoped);
97841 rcu_read_unlock(); 99366 rcu_read_unlock();
97842 99367
97843@@ -542,7 +542,7 @@ void ping_err(struct sk_buff *skb, int offset, u32 info) 99368@@ -556,7 +556,7 @@ void ping_err(struct sk_buff *skb, int offset, u32 info)
97844 } 99369 }
97845 #if IS_ENABLED(CONFIG_IPV6) 99370 #if IS_ENABLED(CONFIG_IPV6)
97846 } else if (skb->protocol == htons(ETH_P_IPV6)) { 99371 } else if (skb->protocol == htons(ETH_P_IPV6)) {
@@ -97849,7 +99374,7 @@ index 242e7f4..a084e95 100644
97849 #endif 99374 #endif
97850 } 99375 }
97851 99376
97852@@ -560,7 +560,7 @@ void ping_err(struct sk_buff *skb, int offset, u32 info) 99377@@ -574,7 +574,7 @@ void ping_err(struct sk_buff *skb, int offset, u32 info)
97853 info, (u8 *)icmph); 99378 info, (u8 *)icmph);
97854 #if IS_ENABLED(CONFIG_IPV6) 99379 #if IS_ENABLED(CONFIG_IPV6)
97855 } else if (family == AF_INET6) { 99380 } else if (family == AF_INET6) {
@@ -97858,7 +99383,7 @@ index 242e7f4..a084e95 100644
97858 info, (u8 *)icmph); 99383 info, (u8 *)icmph);
97859 #endif 99384 #endif
97860 } 99385 }
97861@@ -830,6 +830,8 @@ int ping_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, 99386@@ -844,6 +844,8 @@ int ping_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
97862 { 99387 {
97863 struct inet_sock *isk = inet_sk(sk); 99388 struct inet_sock *isk = inet_sk(sk);
97864 int family = sk->sk_family; 99389 int family = sk->sk_family;
@@ -97867,7 +99392,7 @@ index 242e7f4..a084e95 100644
97867 struct sk_buff *skb; 99392 struct sk_buff *skb;
97868 int copied, err; 99393 int copied, err;
97869 99394
97870@@ -839,12 +841,19 @@ int ping_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, 99395@@ -853,12 +855,19 @@ int ping_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
97871 if (flags & MSG_OOB) 99396 if (flags & MSG_OOB)
97872 goto out; 99397 goto out;
97873 99398
@@ -97888,7 +99413,7 @@ index 242e7f4..a084e95 100644
97888 addr_len); 99413 addr_len);
97889 #endif 99414 #endif
97890 } 99415 }
97891@@ -876,7 +885,6 @@ int ping_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, 99416@@ -890,7 +899,6 @@ int ping_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
97892 sin->sin_port = 0 /* skb->h.uh->source */; 99417 sin->sin_port = 0 /* skb->h.uh->source */;
97893 sin->sin_addr.s_addr = ip_hdr(skb)->saddr; 99418 sin->sin_addr.s_addr = ip_hdr(skb)->saddr;
97894 memset(sin->sin_zero, 0, sizeof(sin->sin_zero)); 99419 memset(sin->sin_zero, 0, sizeof(sin->sin_zero));
@@ -97896,7 +99421,7 @@ index 242e7f4..a084e95 100644
97896 } 99421 }
97897 99422
97898 if (isk->cmsg_flags) 99423 if (isk->cmsg_flags)
97899@@ -899,11 +907,10 @@ int ping_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, 99424@@ -912,14 +920,13 @@ int ping_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
97900 sin6->sin6_scope_id = 99425 sin6->sin6_scope_id =
97901 ipv6_iface_scope_id(&sin6->sin6_addr, 99426 ipv6_iface_scope_id(&sin6->sin6_addr,
97902 IP6CB(skb)->iif); 99427 IP6CB(skb)->iif);
@@ -97904,12 +99429,16 @@ index 242e7f4..a084e95 100644
97904 } 99429 }
97905 99430
97906 if (inet6_sk(sk)->rxopt.all) 99431 if (inet6_sk(sk)->rxopt.all)
97907- pingv6_ops.ip6_datagram_recv_ctl(sk, msg, skb); 99432- pingv6_ops.ip6_datagram_recv_common_ctl(sk, msg, skb);
97908+ pingv6_ops->ip6_datagram_recv_ctl(sk, msg, skb); 99433+ pingv6_ops->ip6_datagram_recv_common_ctl(sk, msg, skb);
99434 if (skb->protocol == htons(ETH_P_IPV6) &&
99435 inet6_sk(sk)->rxopt.all)
99436- pingv6_ops.ip6_datagram_recv_specific_ctl(sk, msg, skb);
99437+ pingv6_ops->ip6_datagram_recv_specific_ctl(sk, msg, skb);
99438 else if (skb->protocol == htons(ETH_P_IP) && isk->cmsg_flags)
99439 ip_cmsg_recv(msg, skb);
97909 #endif 99440 #endif
97910 } else { 99441@@ -1111,7 +1118,7 @@ static void ping_v4_format_sock(struct sock *sp, struct seq_file *f,
97911 BUG();
97912@@ -1093,7 +1100,7 @@ static void ping_v4_format_sock(struct sock *sp, struct seq_file *f,
97913 from_kuid_munged(seq_user_ns(f), sock_i_uid(sp)), 99442 from_kuid_munged(seq_user_ns(f), sock_i_uid(sp)),
97914 0, sock_i_ino(sp), 99443 0, sock_i_ino(sp),
97915 atomic_read(&sp->sk_refcnt), sp, 99444 atomic_read(&sp->sk_refcnt), sp,
@@ -97919,7 +99448,7 @@ index 242e7f4..a084e95 100644
97919 99448
97920 static int ping_v4_seq_show(struct seq_file *seq, void *v) 99449 static int ping_v4_seq_show(struct seq_file *seq, void *v)
97921diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c 99450diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c
97922index 23c3e5b..cdb8b36 100644 99451index c04518f..824ebe5 100644
97923--- a/net/ipv4/raw.c 99452--- a/net/ipv4/raw.c
97924+++ b/net/ipv4/raw.c 99453+++ b/net/ipv4/raw.c
97925@@ -311,7 +311,7 @@ static int raw_rcv_skb(struct sock *sk, struct sk_buff *skb) 99454@@ -311,7 +311,7 @@ static int raw_rcv_skb(struct sock *sk, struct sk_buff *skb)
@@ -97992,10 +99521,37 @@ index 23c3e5b..cdb8b36 100644
97992 99521
97993 static int raw_seq_show(struct seq_file *seq, void *v) 99522 static int raw_seq_show(struct seq_file *seq, void *v)
97994diff --git a/net/ipv4/route.c b/net/ipv4/route.c 99523diff --git a/net/ipv4/route.c b/net/ipv4/route.c
97995index e611651f..0c17263 100644 99524index 1344373..02f339e 100644
97996--- a/net/ipv4/route.c 99525--- a/net/ipv4/route.c
97997+++ b/net/ipv4/route.c 99526+++ b/net/ipv4/route.c
97998@@ -2621,34 +2621,34 @@ static struct ctl_table ipv4_route_flush_table[] = { 99527@@ -233,7 +233,7 @@ static const struct seq_operations rt_cache_seq_ops = {
99528
99529 static int rt_cache_seq_open(struct inode *inode, struct file *file)
99530 {
99531- return seq_open(file, &rt_cache_seq_ops);
99532+ return seq_open_restrict(file, &rt_cache_seq_ops);
99533 }
99534
99535 static const struct file_operations rt_cache_seq_fops = {
99536@@ -324,7 +324,7 @@ static const struct seq_operations rt_cpu_seq_ops = {
99537
99538 static int rt_cpu_seq_open(struct inode *inode, struct file *file)
99539 {
99540- return seq_open(file, &rt_cpu_seq_ops);
99541+ return seq_open_restrict(file, &rt_cpu_seq_ops);
99542 }
99543
99544 static const struct file_operations rt_cpu_seq_fops = {
99545@@ -362,7 +362,7 @@ static int rt_acct_proc_show(struct seq_file *m, void *v)
99546
99547 static int rt_acct_proc_open(struct inode *inode, struct file *file)
99548 {
99549- return single_open(file, rt_acct_proc_show, NULL);
99550+ return single_open_restrict(file, rt_acct_proc_show, NULL);
99551 }
99552
99553 static const struct file_operations rt_acct_proc_fops = {
99554@@ -2623,34 +2623,34 @@ static struct ctl_table ipv4_route_flush_table[] = {
97999 .maxlen = sizeof(int), 99555 .maxlen = sizeof(int),
98000 .mode = 0200, 99556 .mode = 0200,
98001 .proc_handler = ipv4_sysctl_rtcache_flush, 99557 .proc_handler = ipv4_sysctl_rtcache_flush,
@@ -98038,7 +99594,7 @@ index e611651f..0c17263 100644
98038 err_dup: 99594 err_dup:
98039 return -ENOMEM; 99595 return -ENOMEM;
98040 } 99596 }
98041@@ -2671,8 +2671,8 @@ static __net_initdata struct pernet_operations sysctl_route_ops = { 99597@@ -2673,8 +2673,8 @@ static __net_initdata struct pernet_operations sysctl_route_ops = {
98042 99598
98043 static __net_init int rt_genid_init(struct net *net) 99599 static __net_init int rt_genid_init(struct net *net)
98044 { 99600 {
@@ -98050,7 +99606,7 @@ index e611651f..0c17263 100644
98050 sizeof(net->ipv4.dev_addr_genid)); 99606 sizeof(net->ipv4.dev_addr_genid));
98051 return 0; 99607 return 0;
98052diff --git a/net/ipv4/sysctl_net_ipv4.c b/net/ipv4/sysctl_net_ipv4.c 99608diff --git a/net/ipv4/sysctl_net_ipv4.c b/net/ipv4/sysctl_net_ipv4.c
98053index 3d69ec8..57207b4 100644 99609index 44eba05..b36864b 100644
98054--- a/net/ipv4/sysctl_net_ipv4.c 99610--- a/net/ipv4/sysctl_net_ipv4.c
98055+++ b/net/ipv4/sysctl_net_ipv4.c 99611+++ b/net/ipv4/sysctl_net_ipv4.c
98056@@ -60,7 +60,7 @@ static int ipv4_local_port_range(struct ctl_table *table, int write, 99612@@ -60,7 +60,7 @@ static int ipv4_local_port_range(struct ctl_table *table, int write,
@@ -98107,7 +99663,7 @@ index 3d69ec8..57207b4 100644
98107 struct tcp_fastopen_context *ctxt; 99663 struct tcp_fastopen_context *ctxt;
98108 int ret; 99664 int ret;
98109 u32 user_key[4]; /* 16 bytes, matching TCP_FASTOPEN_KEY_LENGTH */ 99665 u32 user_key[4]; /* 16 bytes, matching TCP_FASTOPEN_KEY_LENGTH */
98110@@ -445,7 +445,7 @@ static struct ctl_table ipv4_table[] = { 99666@@ -438,7 +438,7 @@ static struct ctl_table ipv4_table[] = {
98111 }, 99667 },
98112 { 99668 {
98113 .procname = "ip_local_reserved_ports", 99669 .procname = "ip_local_reserved_ports",
@@ -98116,7 +99672,7 @@ index 3d69ec8..57207b4 100644
98116 .maxlen = 65536, 99672 .maxlen = 65536,
98117 .mode = 0644, 99673 .mode = 0644,
98118 .proc_handler = proc_do_large_bitmap, 99674 .proc_handler = proc_do_large_bitmap,
98119@@ -827,13 +827,12 @@ static struct ctl_table ipv4_net_table[] = { 99675@@ -843,13 +843,12 @@ static struct ctl_table ipv4_net_table[] = {
98120 99676
98121 static __net_init int ipv4_sysctl_init_net(struct net *net) 99677 static __net_init int ipv4_sysctl_init_net(struct net *net)
98122 { 99678 {
@@ -98132,7 +99688,7 @@ index 3d69ec8..57207b4 100644
98132 if (table == NULL) 99688 if (table == NULL)
98133 goto err_alloc; 99689 goto err_alloc;
98134 99690
98135@@ -856,15 +855,17 @@ static __net_init int ipv4_sysctl_init_net(struct net *net) 99691@@ -872,15 +871,17 @@ static __net_init int ipv4_sysctl_init_net(struct net *net)
98136 net->ipv4.sysctl_local_ports.range[0] = 32768; 99692 net->ipv4.sysctl_local_ports.range[0] = 32768;
98137 net->ipv4.sysctl_local_ports.range[1] = 61000; 99693 net->ipv4.sysctl_local_ports.range[1] = 61000;
98138 99694
@@ -98153,7 +99709,7 @@ index 3d69ec8..57207b4 100644
98153 err_alloc: 99709 err_alloc:
98154 return -ENOMEM; 99710 return -ENOMEM;
98155 } 99711 }
98156@@ -886,16 +887,6 @@ static __net_initdata struct pernet_operations ipv4_sysctl_ops = { 99712@@ -902,16 +903,6 @@ static __net_initdata struct pernet_operations ipv4_sysctl_ops = {
98157 static __init int sysctl_ipv4_init(void) 99713 static __init int sysctl_ipv4_init(void)
98158 { 99714 {
98159 struct ctl_table_header *hdr; 99715 struct ctl_table_header *hdr;
@@ -98171,10 +99727,10 @@ index 3d69ec8..57207b4 100644
98171 hdr = register_net_sysctl(&init_net, "net/ipv4", ipv4_table); 99727 hdr = register_net_sysctl(&init_net, "net/ipv4", ipv4_table);
98172 if (hdr == NULL) 99728 if (hdr == NULL)
98173diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c 99729diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
98174index c53b7f3..a89aadd 100644 99730index eeaac39..dc29942 100644
98175--- a/net/ipv4/tcp_input.c 99731--- a/net/ipv4/tcp_input.c
98176+++ b/net/ipv4/tcp_input.c 99732+++ b/net/ipv4/tcp_input.c
98177@@ -759,7 +759,7 @@ static void tcp_update_pacing_rate(struct sock *sk) 99733@@ -761,7 +761,7 @@ static void tcp_update_pacing_rate(struct sock *sk)
98178 * without any lock. We want to make sure compiler wont store 99734 * without any lock. We want to make sure compiler wont store
98179 * intermediate values in this location. 99735 * intermediate values in this location.
98180 */ 99736 */
@@ -98183,7 +99739,7 @@ index c53b7f3..a89aadd 100644
98183 sk->sk_max_pacing_rate); 99739 sk->sk_max_pacing_rate);
98184 } 99740 }
98185 99741
98186@@ -4482,7 +4482,7 @@ static struct sk_buff *tcp_collapse_one(struct sock *sk, struct sk_buff *skb, 99742@@ -4485,7 +4485,7 @@ static struct sk_buff *tcp_collapse_one(struct sock *sk, struct sk_buff *skb,
98187 * simplifies code) 99743 * simplifies code)
98188 */ 99744 */
98189 static void 99745 static void
@@ -98192,7 +99748,7 @@ index c53b7f3..a89aadd 100644
98192 struct sk_buff *head, struct sk_buff *tail, 99748 struct sk_buff *head, struct sk_buff *tail,
98193 u32 start, u32 end) 99749 u32 start, u32 end)
98194 { 99750 {
98195@@ -5559,6 +5559,7 @@ discard: 99751@@ -5562,6 +5562,7 @@ discard:
98196 tcp_paws_reject(&tp->rx_opt, 0)) 99752 tcp_paws_reject(&tp->rx_opt, 0))
98197 goto discard_and_undo; 99753 goto discard_and_undo;
98198 99754
@@ -98200,7 +99756,7 @@ index c53b7f3..a89aadd 100644
98200 if (th->syn) { 99756 if (th->syn) {
98201 /* We see SYN without ACK. It is attempt of 99757 /* We see SYN without ACK. It is attempt of
98202 * simultaneous connect with crossed SYNs. 99758 * simultaneous connect with crossed SYNs.
98203@@ -5609,6 +5610,7 @@ discard: 99759@@ -5612,6 +5613,7 @@ discard:
98204 goto discard; 99760 goto discard;
98205 #endif 99761 #endif
98206 } 99762 }
@@ -98208,7 +99764,7 @@ index c53b7f3..a89aadd 100644
98208 /* "fifth, if neither of the SYN or RST bits is set then 99764 /* "fifth, if neither of the SYN or RST bits is set then
98209 * drop the segment and return." 99765 * drop the segment and return."
98210 */ 99766 */
98211@@ -5655,7 +5657,7 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb, 99767@@ -5658,7 +5660,7 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
98212 goto discard; 99768 goto discard;
98213 99769
98214 if (th->syn) { 99770 if (th->syn) {
@@ -98218,7 +99774,7 @@ index c53b7f3..a89aadd 100644
98218 if (icsk->icsk_af_ops->conn_request(sk, skb) < 0) 99774 if (icsk->icsk_af_ops->conn_request(sk, skb) < 0)
98219 return 1; 99775 return 1;
98220diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c 99776diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
98221index 0672139..cacc17d 100644 99777index 1e4eac7..a66fa4a 100644
98222--- a/net/ipv4/tcp_ipv4.c 99778--- a/net/ipv4/tcp_ipv4.c
98223+++ b/net/ipv4/tcp_ipv4.c 99779+++ b/net/ipv4/tcp_ipv4.c
98224@@ -91,6 +91,10 @@ int sysctl_tcp_low_latency __read_mostly; 99780@@ -91,6 +91,10 @@ int sysctl_tcp_low_latency __read_mostly;
@@ -98232,7 +99788,7 @@ index 0672139..cacc17d 100644
98232 #ifdef CONFIG_TCP_MD5SIG 99788 #ifdef CONFIG_TCP_MD5SIG
98233 static int tcp_v4_md5_hash_hdr(char *md5_hash, const struct tcp_md5sig_key *key, 99789 static int tcp_v4_md5_hash_hdr(char *md5_hash, const struct tcp_md5sig_key *key,
98234 __be32 daddr, __be32 saddr, const struct tcphdr *th); 99790 __be32 daddr, __be32 saddr, const struct tcphdr *th);
98235@@ -1830,6 +1834,9 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb) 99791@@ -1829,6 +1833,9 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb)
98236 return 0; 99792 return 0;
98237 99793
98238 reset: 99794 reset:
@@ -98242,7 +99798,7 @@ index 0672139..cacc17d 100644
98242 tcp_v4_send_reset(rsk, skb); 99798 tcp_v4_send_reset(rsk, skb);
98243 discard: 99799 discard:
98244 kfree_skb(skb); 99800 kfree_skb(skb);
98245@@ -1975,12 +1982,19 @@ int tcp_v4_rcv(struct sk_buff *skb) 99801@@ -1974,12 +1981,19 @@ int tcp_v4_rcv(struct sk_buff *skb)
98246 TCP_SKB_CB(skb)->sacked = 0; 99802 TCP_SKB_CB(skb)->sacked = 0;
98247 99803
98248 sk = __inet_lookup_skb(&tcp_hashinfo, skb, th->source, th->dest); 99804 sk = __inet_lookup_skb(&tcp_hashinfo, skb, th->source, th->dest);
@@ -98265,7 +99821,7 @@ index 0672139..cacc17d 100644
98265 99821
98266 if (unlikely(iph->ttl < inet_sk(sk)->min_ttl)) { 99822 if (unlikely(iph->ttl < inet_sk(sk)->min_ttl)) {
98267 NET_INC_STATS_BH(net, LINUX_MIB_TCPMINTTLDROP); 99823 NET_INC_STATS_BH(net, LINUX_MIB_TCPMINTTLDROP);
98268@@ -2034,6 +2048,10 @@ csum_error: 99824@@ -2033,6 +2047,10 @@ csum_error:
98269 bad_packet: 99825 bad_packet:
98270 TCP_INC_STATS_BH(net, TCP_MIB_INERRS); 99826 TCP_INC_STATS_BH(net, TCP_MIB_INERRS);
98271 } else { 99827 } else {
@@ -98277,7 +99833,7 @@ index 0672139..cacc17d 100644
98277 } 99833 }
98278 99834
98279diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c 99835diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c
98280index 97b6841..0893357 100644 99836index 7a436c5..1b05c59 100644
98281--- a/net/ipv4/tcp_minisocks.c 99837--- a/net/ipv4/tcp_minisocks.c
98282+++ b/net/ipv4/tcp_minisocks.c 99838+++ b/net/ipv4/tcp_minisocks.c
98283@@ -27,6 +27,10 @@ 99839@@ -27,6 +27,10 @@
@@ -98291,7 +99847,7 @@ index 97b6841..0893357 100644
98291 int sysctl_tcp_syncookies __read_mostly = 1; 99847 int sysctl_tcp_syncookies __read_mostly = 1;
98292 EXPORT_SYMBOL(sysctl_tcp_syncookies); 99848 EXPORT_SYMBOL(sysctl_tcp_syncookies);
98293 99849
98294@@ -708,7 +712,10 @@ embryonic_reset: 99850@@ -709,7 +713,10 @@ embryonic_reset:
98295 * avoid becoming vulnerable to outside attack aiming at 99851 * avoid becoming vulnerable to outside attack aiming at
98296 * resetting legit local connections. 99852 * resetting legit local connections.
98297 */ 99853 */
@@ -98304,7 +99860,7 @@ index 97b6841..0893357 100644
98304 reqsk_fastopen_remove(sk, req, true); 99860 reqsk_fastopen_remove(sk, req, true);
98305 tcp_reset(sk); 99861 tcp_reset(sk);
98306diff --git a/net/ipv4/tcp_probe.c b/net/ipv4/tcp_probe.c 99862diff --git a/net/ipv4/tcp_probe.c b/net/ipv4/tcp_probe.c
98307index 8b97d71..9d7ccf5 100644 99863index 1f2d376..01d18c4 100644
98308--- a/net/ipv4/tcp_probe.c 99864--- a/net/ipv4/tcp_probe.c
98309+++ b/net/ipv4/tcp_probe.c 99865+++ b/net/ipv4/tcp_probe.c
98310@@ -238,7 +238,7 @@ static ssize_t tcpprobe_read(struct file *file, char __user *buf, 99866@@ -238,7 +238,7 @@ static ssize_t tcpprobe_read(struct file *file, char __user *buf,
@@ -98346,7 +99902,7 @@ index 64f0354..a81b39d 100644
98346 syn_set ? 0 : icsk->icsk_user_timeout, syn_set)) { 99902 syn_set ? 0 : icsk->icsk_user_timeout, syn_set)) {
98347 /* Has it gone just too far? */ 99903 /* Has it gone just too far? */
98348diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c 99904diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
98349index a7e4729..2758946 100644 99905index 77bd16f..5f7174a 100644
98350--- a/net/ipv4/udp.c 99906--- a/net/ipv4/udp.c
98351+++ b/net/ipv4/udp.c 99907+++ b/net/ipv4/udp.c
98352@@ -87,6 +87,7 @@ 99908@@ -87,6 +87,7 @@
@@ -98538,10 +100094,10 @@ index e1a6393..f634ce5 100644
98538 return -ENOMEM; 100094 return -ENOMEM;
98539 } 100095 }
98540diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c 100096diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
98541index 9c05d77..9cfa714 100644 100097index 6c7fa08..285086c 100644
98542--- a/net/ipv6/addrconf.c 100098--- a/net/ipv6/addrconf.c
98543+++ b/net/ipv6/addrconf.c 100099+++ b/net/ipv6/addrconf.c
98544@@ -589,7 +589,7 @@ static int inet6_netconf_dump_devconf(struct sk_buff *skb, 100100@@ -598,7 +598,7 @@ static int inet6_netconf_dump_devconf(struct sk_buff *skb,
98545 idx = 0; 100101 idx = 0;
98546 head = &net->dev_index_head[h]; 100102 head = &net->dev_index_head[h];
98547 rcu_read_lock(); 100103 rcu_read_lock();
@@ -98550,7 +100106,7 @@ index 9c05d77..9cfa714 100644
98550 net->dev_base_seq; 100106 net->dev_base_seq;
98551 hlist_for_each_entry_rcu(dev, head, index_hlist) { 100107 hlist_for_each_entry_rcu(dev, head, index_hlist) {
98552 if (idx < s_idx) 100108 if (idx < s_idx)
98553@@ -2334,7 +2334,7 @@ int addrconf_set_dstaddr(struct net *net, void __user *arg) 100109@@ -2395,7 +2395,7 @@ int addrconf_set_dstaddr(struct net *net, void __user *arg)
98554 p.iph.ihl = 5; 100110 p.iph.ihl = 5;
98555 p.iph.protocol = IPPROTO_IPV6; 100111 p.iph.protocol = IPPROTO_IPV6;
98556 p.iph.ttl = 64; 100112 p.iph.ttl = 64;
@@ -98559,7 +100115,7 @@ index 9c05d77..9cfa714 100644
98559 100115
98560 if (ops->ndo_do_ioctl) { 100116 if (ops->ndo_do_ioctl) {
98561 mm_segment_t oldfs = get_fs(); 100117 mm_segment_t oldfs = get_fs();
98562@@ -3964,7 +3964,7 @@ static int inet6_dump_addr(struct sk_buff *skb, struct netlink_callback *cb, 100118@@ -4146,7 +4146,7 @@ static int inet6_dump_addr(struct sk_buff *skb, struct netlink_callback *cb,
98563 s_ip_idx = ip_idx = cb->args[2]; 100119 s_ip_idx = ip_idx = cb->args[2];
98564 100120
98565 rcu_read_lock(); 100121 rcu_read_lock();
@@ -98568,7 +100124,7 @@ index 9c05d77..9cfa714 100644
98568 for (h = s_h; h < NETDEV_HASHENTRIES; h++, s_idx = 0) { 100124 for (h = s_h; h < NETDEV_HASHENTRIES; h++, s_idx = 0) {
98569 idx = 0; 100125 idx = 0;
98570 head = &net->dev_index_head[h]; 100126 head = &net->dev_index_head[h];
98571@@ -4571,7 +4571,7 @@ static void __ipv6_ifa_notify(int event, struct inet6_ifaddr *ifp) 100127@@ -4758,7 +4758,7 @@ static void __ipv6_ifa_notify(int event, struct inet6_ifaddr *ifp)
98572 dst_free(&ifp->rt->dst); 100128 dst_free(&ifp->rt->dst);
98573 break; 100129 break;
98574 } 100130 }
@@ -98577,7 +100133,7 @@ index 9c05d77..9cfa714 100644
98577 rt_genid_bump_ipv6(net); 100133 rt_genid_bump_ipv6(net);
98578 } 100134 }
98579 100135
98580@@ -4592,7 +4592,7 @@ int addrconf_sysctl_forward(struct ctl_table *ctl, int write, 100136@@ -4779,7 +4779,7 @@ int addrconf_sysctl_forward(struct ctl_table *ctl, int write,
98581 int *valp = ctl->data; 100137 int *valp = ctl->data;
98582 int val = *valp; 100138 int val = *valp;
98583 loff_t pos = *ppos; 100139 loff_t pos = *ppos;
@@ -98586,7 +100142,7 @@ index 9c05d77..9cfa714 100644
98586 int ret; 100142 int ret;
98587 100143
98588 /* 100144 /*
98589@@ -4677,7 +4677,7 @@ int addrconf_sysctl_disable(struct ctl_table *ctl, int write, 100145@@ -4864,7 +4864,7 @@ int addrconf_sysctl_disable(struct ctl_table *ctl, int write,
98590 int *valp = ctl->data; 100146 int *valp = ctl->data;
98591 int val = *valp; 100147 int val = *valp;
98592 loff_t pos = *ppos; 100148 loff_t pos = *ppos;
@@ -98596,23 +100152,23 @@ index 9c05d77..9cfa714 100644
98596 100152
98597 /* 100153 /*
98598diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c 100154diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c
98599index 4fbdb70..f6411f2 100644 100155index d935889..2f64330 100644
98600--- a/net/ipv6/af_inet6.c 100156--- a/net/ipv6/af_inet6.c
98601+++ b/net/ipv6/af_inet6.c 100157+++ b/net/ipv6/af_inet6.c
98602@@ -776,7 +776,7 @@ static int __net_init inet6_net_init(struct net *net) 100158@@ -776,7 +776,7 @@ static int __net_init inet6_net_init(struct net *net)
98603
98604 net->ipv6.sysctl.bindv6only = 0; 100159 net->ipv6.sysctl.bindv6only = 0;
98605 net->ipv6.sysctl.icmpv6_time = 1*HZ; 100160 net->ipv6.sysctl.icmpv6_time = 1*HZ;
100161 net->ipv6.sysctl.flowlabel_consistency = 1;
98606- atomic_set(&net->ipv6.rt_genid, 0); 100162- atomic_set(&net->ipv6.rt_genid, 0);
98607+ atomic_set_unchecked(&net->ipv6.rt_genid, 0); 100163+ atomic_set_unchecked(&net->ipv6.rt_genid, 0);
98608 100164
98609 err = ipv6_init_mibs(net); 100165 err = ipv6_init_mibs(net);
98610 if (err) 100166 if (err)
98611diff --git a/net/ipv6/datagram.c b/net/ipv6/datagram.c 100167diff --git a/net/ipv6/datagram.c b/net/ipv6/datagram.c
98612index 93b1aa3..e902855 100644 100168index c3bf2d2..1f00573 100644
98613--- a/net/ipv6/datagram.c 100169--- a/net/ipv6/datagram.c
98614+++ b/net/ipv6/datagram.c 100170+++ b/net/ipv6/datagram.c
98615@@ -906,5 +906,5 @@ void ip6_dgram_sock_seq_show(struct seq_file *seq, struct sock *sp, 100171@@ -938,5 +938,5 @@ void ip6_dgram_sock_seq_show(struct seq_file *seq, struct sock *sp,
98616 0, 100172 0,
98617 sock_i_ino(sp), 100173 sock_i_ino(sp),
98618 atomic_read(&sp->sk_refcnt), sp, 100174 atomic_read(&sp->sk_refcnt), sp,
@@ -98620,10 +100176,10 @@ index 93b1aa3..e902855 100644
98620+ atomic_read_unchecked(&sp->sk_drops)); 100176+ atomic_read_unchecked(&sp->sk_drops));
98621 } 100177 }
98622diff --git a/net/ipv6/icmp.c b/net/ipv6/icmp.c 100178diff --git a/net/ipv6/icmp.c b/net/ipv6/icmp.c
98623index eef8d94..cfa1852 100644 100179index 7b32652..0bc348b 100644
98624--- a/net/ipv6/icmp.c 100180--- a/net/ipv6/icmp.c
98625+++ b/net/ipv6/icmp.c 100181+++ b/net/ipv6/icmp.c
98626@@ -997,7 +997,7 @@ struct ctl_table ipv6_icmp_table_template[] = { 100182@@ -1005,7 +1005,7 @@ static struct ctl_table ipv6_icmp_table_template[] = {
98627 100183
98628 struct ctl_table * __net_init ipv6_icmp_sysctl_init(struct net *net) 100184 struct ctl_table * __net_init ipv6_icmp_sysctl_init(struct net *net)
98629 { 100185 {
@@ -98633,10 +100189,10 @@ index eef8d94..cfa1852 100644
98633 table = kmemdup(ipv6_icmp_table_template, 100189 table = kmemdup(ipv6_icmp_table_template,
98634 sizeof(ipv6_icmp_table_template), 100190 sizeof(ipv6_icmp_table_template),
98635diff --git a/net/ipv6/ip6_gre.c b/net/ipv6/ip6_gre.c 100191diff --git a/net/ipv6/ip6_gre.c b/net/ipv6/ip6_gre.c
98636index 8acb286..840dd06 100644 100192index 2465d18..bc5bf7f 100644
98637--- a/net/ipv6/ip6_gre.c 100193--- a/net/ipv6/ip6_gre.c
98638+++ b/net/ipv6/ip6_gre.c 100194+++ b/net/ipv6/ip6_gre.c
98639@@ -74,7 +74,7 @@ struct ip6gre_net { 100195@@ -71,7 +71,7 @@ struct ip6gre_net {
98640 struct net_device *fb_tunnel_dev; 100196 struct net_device *fb_tunnel_dev;
98641 }; 100197 };
98642 100198
@@ -98645,7 +100201,7 @@ index 8acb286..840dd06 100644
98645 static int ip6gre_tunnel_init(struct net_device *dev); 100201 static int ip6gre_tunnel_init(struct net_device *dev);
98646 static void ip6gre_tunnel_setup(struct net_device *dev); 100202 static void ip6gre_tunnel_setup(struct net_device *dev);
98647 static void ip6gre_tunnel_link(struct ip6gre_net *ign, struct ip6_tnl *t); 100203 static void ip6gre_tunnel_link(struct ip6gre_net *ign, struct ip6_tnl *t);
98648@@ -1294,7 +1294,7 @@ static void ip6gre_fb_tunnel_init(struct net_device *dev) 100204@@ -1291,7 +1291,7 @@ static void ip6gre_fb_tunnel_init(struct net_device *dev)
98649 } 100205 }
98650 100206
98651 100207
@@ -98654,7 +100210,7 @@ index 8acb286..840dd06 100644
98654 .handler = ip6gre_rcv, 100210 .handler = ip6gre_rcv,
98655 .err_handler = ip6gre_err, 100211 .err_handler = ip6gre_err,
98656 .flags = INET6_PROTO_NOPOLICY|INET6_PROTO_FINAL, 100212 .flags = INET6_PROTO_NOPOLICY|INET6_PROTO_FINAL,
98657@@ -1637,7 +1637,7 @@ static const struct nla_policy ip6gre_policy[IFLA_GRE_MAX + 1] = { 100213@@ -1643,7 +1643,7 @@ static const struct nla_policy ip6gre_policy[IFLA_GRE_MAX + 1] = {
98658 [IFLA_GRE_FLAGS] = { .type = NLA_U32 }, 100214 [IFLA_GRE_FLAGS] = { .type = NLA_U32 },
98659 }; 100215 };
98660 100216
@@ -98663,7 +100219,7 @@ index 8acb286..840dd06 100644
98663 .kind = "ip6gre", 100219 .kind = "ip6gre",
98664 .maxtype = IFLA_GRE_MAX, 100220 .maxtype = IFLA_GRE_MAX,
98665 .policy = ip6gre_policy, 100221 .policy = ip6gre_policy,
98666@@ -1650,7 +1650,7 @@ static struct rtnl_link_ops ip6gre_link_ops __read_mostly = { 100222@@ -1657,7 +1657,7 @@ static struct rtnl_link_ops ip6gre_link_ops __read_mostly = {
98667 .fill_info = ip6gre_fill_info, 100223 .fill_info = ip6gre_fill_info,
98668 }; 100224 };
98669 100225
@@ -98673,10 +100229,10 @@ index 8acb286..840dd06 100644
98673 .maxtype = IFLA_GRE_MAX, 100229 .maxtype = IFLA_GRE_MAX,
98674 .policy = ip6gre_policy, 100230 .policy = ip6gre_policy,
98675diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c 100231diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c
98676index 7881965..9cf62c4 100644 100232index 0e51f68..1f501e1 100644
98677--- a/net/ipv6/ip6_tunnel.c 100233--- a/net/ipv6/ip6_tunnel.c
98678+++ b/net/ipv6/ip6_tunnel.c 100234+++ b/net/ipv6/ip6_tunnel.c
98679@@ -89,7 +89,7 @@ static u32 HASH(const struct in6_addr *addr1, const struct in6_addr *addr2) 100235@@ -85,7 +85,7 @@ static u32 HASH(const struct in6_addr *addr1, const struct in6_addr *addr2)
98680 100236
98681 static int ip6_tnl_dev_init(struct net_device *dev); 100237 static int ip6_tnl_dev_init(struct net_device *dev);
98682 static void ip6_tnl_dev_setup(struct net_device *dev); 100238 static void ip6_tnl_dev_setup(struct net_device *dev);
@@ -98685,7 +100241,7 @@ index 7881965..9cf62c4 100644
98685 100241
98686 static int ip6_tnl_net_id __read_mostly; 100242 static int ip6_tnl_net_id __read_mostly;
98687 struct ip6_tnl_net { 100243 struct ip6_tnl_net {
98688@@ -1717,7 +1717,7 @@ static const struct nla_policy ip6_tnl_policy[IFLA_IPTUN_MAX + 1] = { 100244@@ -1714,7 +1714,7 @@ static const struct nla_policy ip6_tnl_policy[IFLA_IPTUN_MAX + 1] = {
98689 [IFLA_IPTUN_PROTO] = { .type = NLA_U8 }, 100245 [IFLA_IPTUN_PROTO] = { .type = NLA_U8 },
98690 }; 100246 };
98691 100247
@@ -98695,10 +100251,10 @@ index 7881965..9cf62c4 100644
98695 .maxtype = IFLA_IPTUN_MAX, 100251 .maxtype = IFLA_IPTUN_MAX,
98696 .policy = ip6_tnl_policy, 100252 .policy = ip6_tnl_policy,
98697diff --git a/net/ipv6/ip6_vti.c b/net/ipv6/ip6_vti.c 100253diff --git a/net/ipv6/ip6_vti.c b/net/ipv6/ip6_vti.c
98698index 7b42d5e..1eff693 100644 100254index 2d19272..3a46322 100644
98699--- a/net/ipv6/ip6_vti.c 100255--- a/net/ipv6/ip6_vti.c
98700+++ b/net/ipv6/ip6_vti.c 100256+++ b/net/ipv6/ip6_vti.c
98701@@ -63,7 +63,7 @@ static u32 HASH(const struct in6_addr *addr1, const struct in6_addr *addr2) 100257@@ -62,7 +62,7 @@ static u32 HASH(const struct in6_addr *addr1, const struct in6_addr *addr2)
98702 100258
98703 static int vti6_dev_init(struct net_device *dev); 100259 static int vti6_dev_init(struct net_device *dev);
98704 static void vti6_dev_setup(struct net_device *dev); 100260 static void vti6_dev_setup(struct net_device *dev);
@@ -98707,7 +100263,7 @@ index 7b42d5e..1eff693 100644
98707 100263
98708 static int vti6_net_id __read_mostly; 100264 static int vti6_net_id __read_mostly;
98709 struct vti6_net { 100265 struct vti6_net {
98710@@ -902,7 +902,7 @@ static const struct nla_policy vti6_policy[IFLA_VTI_MAX + 1] = { 100266@@ -901,7 +901,7 @@ static const struct nla_policy vti6_policy[IFLA_VTI_MAX + 1] = {
98711 [IFLA_VTI_OKEY] = { .type = NLA_U32 }, 100267 [IFLA_VTI_OKEY] = { .type = NLA_U32 },
98712 }; 100268 };
98713 100269
@@ -98717,7 +100273,7 @@ index 7b42d5e..1eff693 100644
98717 .maxtype = IFLA_VTI_MAX, 100273 .maxtype = IFLA_VTI_MAX,
98718 .policy = vti6_policy, 100274 .policy = vti6_policy,
98719diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c 100275diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c
98720index 1c6ce31..299e566 100644 100276index 0a00f44..bec42b2 100644
98721--- a/net/ipv6/ipv6_sockglue.c 100277--- a/net/ipv6/ipv6_sockglue.c
98722+++ b/net/ipv6/ipv6_sockglue.c 100278+++ b/net/ipv6/ipv6_sockglue.c
98723@@ -991,7 +991,7 @@ static int do_ipv6_getsockopt(struct sock *sk, int level, int optname, 100279@@ -991,7 +991,7 @@ static int do_ipv6_getsockopt(struct sock *sk, int level, int optname,
@@ -98730,7 +100286,7 @@ index 1c6ce31..299e566 100644
98730 msg.msg_flags = flags; 100286 msg.msg_flags = flags;
98731 100287
98732diff --git a/net/ipv6/netfilter/ip6_tables.c b/net/ipv6/netfilter/ip6_tables.c 100288diff --git a/net/ipv6/netfilter/ip6_tables.c b/net/ipv6/netfilter/ip6_tables.c
98733index 710238f..0fd1816 100644 100289index e080fbb..412b3cf 100644
98734--- a/net/ipv6/netfilter/ip6_tables.c 100290--- a/net/ipv6/netfilter/ip6_tables.c
98735+++ b/net/ipv6/netfilter/ip6_tables.c 100291+++ b/net/ipv6/netfilter/ip6_tables.c
98736@@ -1083,14 +1083,14 @@ static int compat_table_info(const struct xt_table_info *info, 100292@@ -1083,14 +1083,14 @@ static int compat_table_info(const struct xt_table_info *info,
@@ -98760,7 +100316,7 @@ index 710238f..0fd1816 100644
98760 ret = -EFAULT; 100316 ret = -EFAULT;
98761 else 100317 else
98762 ret = 0; 100318 ret = 0;
98763@@ -1981,7 +1981,7 @@ compat_do_ip6t_get_ctl(struct sock *sk, int cmd, void __user *user, int *len) 100319@@ -1983,7 +1983,7 @@ compat_do_ip6t_get_ctl(struct sock *sk, int cmd, void __user *user, int *len)
98764 100320
98765 switch (cmd) { 100321 switch (cmd) {
98766 case IP6T_SO_GET_INFO: 100322 case IP6T_SO_GET_INFO:
@@ -98769,7 +100325,7 @@ index 710238f..0fd1816 100644
98769 break; 100325 break;
98770 case IP6T_SO_GET_ENTRIES: 100326 case IP6T_SO_GET_ENTRIES:
98771 ret = compat_get_entries(sock_net(sk), user, len); 100327 ret = compat_get_entries(sock_net(sk), user, len);
98772@@ -2028,7 +2028,7 @@ do_ip6t_get_ctl(struct sock *sk, int cmd, void __user *user, int *len) 100328@@ -2030,7 +2030,7 @@ do_ip6t_get_ctl(struct sock *sk, int cmd, void __user *user, int *len)
98773 100329
98774 switch (cmd) { 100330 switch (cmd) {
98775 case IP6T_SO_GET_INFO: 100331 case IP6T_SO_GET_INFO:
@@ -98854,38 +100410,42 @@ index 827f795..7e28e82 100644
98854 EXPORT_SYMBOL(ipv6_select_ident); 100410 EXPORT_SYMBOL(ipv6_select_ident);
98855 100411
98856diff --git a/net/ipv6/ping.c b/net/ipv6/ping.c 100412diff --git a/net/ipv6/ping.c b/net/ipv6/ping.c
98857index a83243c..a1ca589 100644 100413index bda7429..469b26b 100644
98858--- a/net/ipv6/ping.c 100414--- a/net/ipv6/ping.c
98859+++ b/net/ipv6/ping.c 100415+++ b/net/ipv6/ping.c
98860@@ -246,6 +246,22 @@ static struct pernet_operations ping_v6_net_ops = { 100416@@ -246,6 +246,24 @@ static struct pernet_operations ping_v6_net_ops = {
98861 }; 100417 };
98862 #endif 100418 #endif
98863 100419
98864+static struct pingv6_ops real_pingv6_ops = { 100420+static struct pingv6_ops real_pingv6_ops = {
98865+ .ipv6_recv_error = ipv6_recv_error, 100421+ .ipv6_recv_error = ipv6_recv_error,
98866+ .ip6_datagram_recv_ctl = ip6_datagram_recv_ctl, 100422+ .ip6_datagram_recv_common_ctl = ip6_datagram_recv_common_ctl,
98867+ .icmpv6_err_convert = icmpv6_err_convert, 100423+ .ip6_datagram_recv_specific_ctl = ip6_datagram_recv_specific_ctl,
98868+ .ipv6_icmp_error = ipv6_icmp_error, 100424+ .icmpv6_err_convert = icmpv6_err_convert,
98869+ .ipv6_chk_addr = ipv6_chk_addr, 100425+ .ipv6_icmp_error = ipv6_icmp_error,
100426+ .ipv6_chk_addr = ipv6_chk_addr,
98870+}; 100427+};
98871+ 100428+
98872+static struct pingv6_ops dummy_pingv6_ops = { 100429+static struct pingv6_ops dummy_pingv6_ops = {
98873+ .ipv6_recv_error = dummy_ipv6_recv_error, 100430+ .ipv6_recv_error = dummy_ipv6_recv_error,
98874+ .ip6_datagram_recv_ctl = dummy_ip6_datagram_recv_ctl, 100431+ .ip6_datagram_recv_common_ctl = dummy_ip6_datagram_recv_ctl,
98875+ .icmpv6_err_convert = dummy_icmpv6_err_convert, 100432+ .ip6_datagram_recv_specific_ctl = dummy_ip6_datagram_recv_ctl,
98876+ .ipv6_icmp_error = dummy_ipv6_icmp_error, 100433+ .icmpv6_err_convert = dummy_icmpv6_err_convert,
98877+ .ipv6_chk_addr = dummy_ipv6_chk_addr, 100434+ .ipv6_icmp_error = dummy_ipv6_icmp_error,
100435+ .ipv6_chk_addr = dummy_ipv6_chk_addr,
98878+}; 100436+};
98879+ 100437+
98880 int __init pingv6_init(void) 100438 int __init pingv6_init(void)
98881 { 100439 {
98882 #ifdef CONFIG_PROC_FS 100440 #ifdef CONFIG_PROC_FS
98883@@ -253,11 +269,7 @@ int __init pingv6_init(void) 100441@@ -253,13 +271,7 @@ int __init pingv6_init(void)
98884 if (ret) 100442 if (ret)
98885 return ret; 100443 return ret;
98886 #endif 100444 #endif
98887- pingv6_ops.ipv6_recv_error = ipv6_recv_error; 100445- pingv6_ops.ipv6_recv_error = ipv6_recv_error;
98888- pingv6_ops.ip6_datagram_recv_ctl = ip6_datagram_recv_ctl; 100446- pingv6_ops.ip6_datagram_recv_common_ctl = ip6_datagram_recv_common_ctl;
100447- pingv6_ops.ip6_datagram_recv_specific_ctl =
100448- ip6_datagram_recv_specific_ctl;
98889- pingv6_ops.icmpv6_err_convert = icmpv6_err_convert; 100449- pingv6_ops.icmpv6_err_convert = icmpv6_err_convert;
98890- pingv6_ops.ipv6_icmp_error = ipv6_icmp_error; 100450- pingv6_ops.ipv6_icmp_error = ipv6_icmp_error;
98891- pingv6_ops.ipv6_chk_addr = ipv6_chk_addr; 100451- pingv6_ops.ipv6_chk_addr = ipv6_chk_addr;
@@ -98893,24 +100453,40 @@ index a83243c..a1ca589 100644
98893 return inet6_register_protosw(&pingv6_protosw); 100453 return inet6_register_protosw(&pingv6_protosw);
98894 } 100454 }
98895 100455
98896@@ -266,11 +278,7 @@ int __init pingv6_init(void) 100456@@ -268,14 +280,9 @@ int __init pingv6_init(void)
98897 */ 100457 */
98898 void pingv6_exit(void) 100458 void pingv6_exit(void)
98899 { 100459 {
98900- pingv6_ops.ipv6_recv_error = dummy_ipv6_recv_error; 100460- pingv6_ops.ipv6_recv_error = dummy_ipv6_recv_error;
98901- pingv6_ops.ip6_datagram_recv_ctl = dummy_ip6_datagram_recv_ctl; 100461- pingv6_ops.ip6_datagram_recv_common_ctl = dummy_ip6_datagram_recv_ctl;
100462- pingv6_ops.ip6_datagram_recv_specific_ctl = dummy_ip6_datagram_recv_ctl;
98902- pingv6_ops.icmpv6_err_convert = dummy_icmpv6_err_convert; 100463- pingv6_ops.icmpv6_err_convert = dummy_icmpv6_err_convert;
98903- pingv6_ops.ipv6_icmp_error = dummy_ipv6_icmp_error; 100464- pingv6_ops.ipv6_icmp_error = dummy_ipv6_icmp_error;
98904- pingv6_ops.ipv6_chk_addr = dummy_ipv6_chk_addr; 100465- pingv6_ops.ipv6_chk_addr = dummy_ipv6_chk_addr;
98905+ pingv6_ops = &dummy_pingv6_ops;
98906 #ifdef CONFIG_PROC_FS 100466 #ifdef CONFIG_PROC_FS
98907 unregister_pernet_subsys(&ping_v6_net_ops); 100467 unregister_pernet_subsys(&ping_v6_net_ops);
98908 #endif 100468 #endif
100469+ pingv6_ops = &dummy_pingv6_ops;
100470 inet6_unregister_protosw(&pingv6_protosw);
100471 }
100472diff --git a/net/ipv6/proc.c b/net/ipv6/proc.c
100473index 091d066..139d410 100644
100474--- a/net/ipv6/proc.c
100475+++ b/net/ipv6/proc.c
100476@@ -309,7 +309,7 @@ static int __net_init ipv6_proc_init_net(struct net *net)
100477 if (!proc_create("snmp6", S_IRUGO, net->proc_net, &snmp6_seq_fops))
100478 goto proc_snmp6_fail;
100479
100480- net->mib.proc_net_devsnmp6 = proc_mkdir("dev_snmp6", net->proc_net);
100481+ net->mib.proc_net_devsnmp6 = proc_mkdir_restrict("dev_snmp6", net->proc_net);
100482 if (!net->mib.proc_net_devsnmp6)
100483 goto proc_dev_snmp6_fail;
100484 return 0;
98909diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c 100485diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c
98910index b6bb87e..06cc9ed 100644 100486index 1f29996..46fe0c7 100644
98911--- a/net/ipv6/raw.c 100487--- a/net/ipv6/raw.c
98912+++ b/net/ipv6/raw.c 100488+++ b/net/ipv6/raw.c
98913@@ -384,7 +384,7 @@ static inline int rawv6_rcv_skb(struct sock *sk, struct sk_buff *skb) 100489@@ -388,7 +388,7 @@ static inline int rawv6_rcv_skb(struct sock *sk, struct sk_buff *skb)
98914 { 100490 {
98915 if ((raw6_sk(sk)->checksum || rcu_access_pointer(sk->sk_filter)) && 100491 if ((raw6_sk(sk)->checksum || rcu_access_pointer(sk->sk_filter)) &&
98916 skb_checksum_complete(skb)) { 100492 skb_checksum_complete(skb)) {
@@ -98919,7 +100495,7 @@ index b6bb87e..06cc9ed 100644
98919 kfree_skb(skb); 100495 kfree_skb(skb);
98920 return NET_RX_DROP; 100496 return NET_RX_DROP;
98921 } 100497 }
98922@@ -412,7 +412,7 @@ int rawv6_rcv(struct sock *sk, struct sk_buff *skb) 100498@@ -416,7 +416,7 @@ int rawv6_rcv(struct sock *sk, struct sk_buff *skb)
98923 struct raw6_sock *rp = raw6_sk(sk); 100499 struct raw6_sock *rp = raw6_sk(sk);
98924 100500
98925 if (!xfrm6_policy_check(sk, XFRM_POLICY_IN, skb)) { 100501 if (!xfrm6_policy_check(sk, XFRM_POLICY_IN, skb)) {
@@ -98928,7 +100504,7 @@ index b6bb87e..06cc9ed 100644
98928 kfree_skb(skb); 100504 kfree_skb(skb);
98929 return NET_RX_DROP; 100505 return NET_RX_DROP;
98930 } 100506 }
98931@@ -436,7 +436,7 @@ int rawv6_rcv(struct sock *sk, struct sk_buff *skb) 100507@@ -440,7 +440,7 @@ int rawv6_rcv(struct sock *sk, struct sk_buff *skb)
98932 100508
98933 if (inet->hdrincl) { 100509 if (inet->hdrincl) {
98934 if (skb_checksum_complete(skb)) { 100510 if (skb_checksum_complete(skb)) {
@@ -98937,7 +100513,7 @@ index b6bb87e..06cc9ed 100644
98937 kfree_skb(skb); 100513 kfree_skb(skb);
98938 return NET_RX_DROP; 100514 return NET_RX_DROP;
98939 } 100515 }
98940@@ -465,6 +465,9 @@ static int rawv6_recvmsg(struct kiocb *iocb, struct sock *sk, 100516@@ -469,6 +469,9 @@ static int rawv6_recvmsg(struct kiocb *iocb, struct sock *sk,
98941 if (flags & MSG_OOB) 100517 if (flags & MSG_OOB)
98942 return -EOPNOTSUPP; 100518 return -EOPNOTSUPP;
98943 100519
@@ -98947,7 +100523,7 @@ index b6bb87e..06cc9ed 100644
98947 if (flags & MSG_ERRQUEUE) 100523 if (flags & MSG_ERRQUEUE)
98948 return ipv6_recv_error(sk, msg, len, addr_len); 100524 return ipv6_recv_error(sk, msg, len, addr_len);
98949 100525
98950@@ -503,7 +506,6 @@ static int rawv6_recvmsg(struct kiocb *iocb, struct sock *sk, 100526@@ -507,7 +510,6 @@ static int rawv6_recvmsg(struct kiocb *iocb, struct sock *sk,
98951 sin6->sin6_flowinfo = 0; 100527 sin6->sin6_flowinfo = 0;
98952 sin6->sin6_scope_id = ipv6_iface_scope_id(&sin6->sin6_addr, 100528 sin6->sin6_scope_id = ipv6_iface_scope_id(&sin6->sin6_addr,
98953 IP6CB(skb)->iif); 100529 IP6CB(skb)->iif);
@@ -98955,7 +100531,7 @@ index b6bb87e..06cc9ed 100644
98955 } 100531 }
98956 100532
98957 sock_recv_ts_and_drops(msg, sk, skb); 100533 sock_recv_ts_and_drops(msg, sk, skb);
98958@@ -606,7 +608,7 @@ out: 100534@@ -610,7 +612,7 @@ out:
98959 return err; 100535 return err;
98960 } 100536 }
98961 100537
@@ -98964,7 +100540,7 @@ index b6bb87e..06cc9ed 100644
98964 struct flowi6 *fl6, struct dst_entry **dstp, 100540 struct flowi6 *fl6, struct dst_entry **dstp,
98965 unsigned int flags) 100541 unsigned int flags)
98966 { 100542 {
98967@@ -918,12 +920,15 @@ do_confirm: 100543@@ -922,12 +924,15 @@ do_confirm:
98968 static int rawv6_seticmpfilter(struct sock *sk, int level, int optname, 100544 static int rawv6_seticmpfilter(struct sock *sk, int level, int optname,
98969 char __user *optval, int optlen) 100545 char __user *optval, int optlen)
98970 { 100546 {
@@ -98981,7 +100557,7 @@ index b6bb87e..06cc9ed 100644
98981 return 0; 100557 return 0;
98982 default: 100558 default:
98983 return -ENOPROTOOPT; 100559 return -ENOPROTOOPT;
98984@@ -936,6 +941,7 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname, 100560@@ -940,6 +945,7 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname,
98985 char __user *optval, int __user *optlen) 100561 char __user *optval, int __user *optlen)
98986 { 100562 {
98987 int len; 100563 int len;
@@ -98989,7 +100565,7 @@ index b6bb87e..06cc9ed 100644
98989 100565
98990 switch (optname) { 100566 switch (optname) {
98991 case ICMPV6_FILTER: 100567 case ICMPV6_FILTER:
98992@@ -947,7 +953,8 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname, 100568@@ -951,7 +957,8 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname,
98993 len = sizeof(struct icmp6_filter); 100569 len = sizeof(struct icmp6_filter);
98994 if (put_user(len, optlen)) 100570 if (put_user(len, optlen))
98995 return -EFAULT; 100571 return -EFAULT;
@@ -99042,19 +100618,10 @@ index cc85a9b..526a133 100644
99042 return -ENOMEM; 100618 return -ENOMEM;
99043 } 100619 }
99044diff --git a/net/ipv6/route.c b/net/ipv6/route.c 100620diff --git a/net/ipv6/route.c b/net/ipv6/route.c
99045index 4b4944c..d346b14 100644 100621index 7cc1102..7785931 100644
99046--- a/net/ipv6/route.c 100622--- a/net/ipv6/route.c
99047+++ b/net/ipv6/route.c 100623+++ b/net/ipv6/route.c
99048@@ -1495,7 +1495,7 @@ int ip6_route_add(struct fib6_config *cfg) 100624@@ -2973,7 +2973,7 @@ struct ctl_table ipv6_route_table_template[] = {
99049 if (!table)
99050 goto out;
99051
99052- rt = ip6_dst_alloc(net, NULL, DST_NOCOUNT, table);
99053+ rt = ip6_dst_alloc(net, NULL, (cfg->fc_flags & RTF_ADDRCONF) ? 0 : DST_NOCOUNT, table);
99054
99055 if (!rt) {
99056 err = -ENOMEM;
99057@@ -2954,7 +2954,7 @@ struct ctl_table ipv6_route_table_template[] = {
99058 100625
99059 struct ctl_table * __net_init ipv6_route_sysctl_init(struct net *net) 100626 struct ctl_table * __net_init ipv6_route_sysctl_init(struct net *net)
99060 { 100627 {
@@ -99064,7 +100631,7 @@ index 4b4944c..d346b14 100644
99064 table = kmemdup(ipv6_route_table_template, 100631 table = kmemdup(ipv6_route_table_template,
99065 sizeof(ipv6_route_table_template), 100632 sizeof(ipv6_route_table_template),
99066diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c 100633diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c
99067index d3005b3..b36df4a 100644 100634index b4d74c8..b4f3fbe 100644
99068--- a/net/ipv6/sit.c 100635--- a/net/ipv6/sit.c
99069+++ b/net/ipv6/sit.c 100636+++ b/net/ipv6/sit.c
99070@@ -74,7 +74,7 @@ static void ipip6_tunnel_setup(struct net_device *dev); 100637@@ -74,7 +74,7 @@ static void ipip6_tunnel_setup(struct net_device *dev);
@@ -99076,7 +100643,7 @@ index d3005b3..b36df4a 100644
99076 100643
99077 static int sit_net_id __read_mostly; 100644 static int sit_net_id __read_mostly;
99078 struct sit_net { 100645 struct sit_net {
99079@@ -1664,7 +1664,7 @@ static void ipip6_dellink(struct net_device *dev, struct list_head *head) 100646@@ -1683,7 +1683,7 @@ static void ipip6_dellink(struct net_device *dev, struct list_head *head)
99080 unregister_netdevice_queue(dev, head); 100647 unregister_netdevice_queue(dev, head);
99081 } 100648 }
99082 100649
@@ -99086,10 +100653,10 @@ index d3005b3..b36df4a 100644
99086 .maxtype = IFLA_IPTUN_MAX, 100653 .maxtype = IFLA_IPTUN_MAX,
99087 .policy = ipip6_policy, 100654 .policy = ipip6_policy,
99088diff --git a/net/ipv6/sysctl_net_ipv6.c b/net/ipv6/sysctl_net_ipv6.c 100655diff --git a/net/ipv6/sysctl_net_ipv6.c b/net/ipv6/sysctl_net_ipv6.c
99089index 107b2f1..72741a9 100644 100656index 7f405a1..eabef92 100644
99090--- a/net/ipv6/sysctl_net_ipv6.c 100657--- a/net/ipv6/sysctl_net_ipv6.c
99091+++ b/net/ipv6/sysctl_net_ipv6.c 100658+++ b/net/ipv6/sysctl_net_ipv6.c
99092@@ -40,7 +40,7 @@ static struct ctl_table ipv6_rotable[] = { 100659@@ -54,7 +54,7 @@ static struct ctl_table ipv6_rotable[] = {
99093 100660
99094 static int __net_init ipv6_sysctl_net_init(struct net *net) 100661 static int __net_init ipv6_sysctl_net_init(struct net *net)
99095 { 100662 {
@@ -99099,7 +100666,7 @@ index 107b2f1..72741a9 100644
99099 struct ctl_table *ipv6_icmp_table; 100666 struct ctl_table *ipv6_icmp_table;
99100 int err; 100667 int err;
99101diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c 100668diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
99102index f67033b..6f974fc 100644 100669index 889079b..a04512c 100644
99103--- a/net/ipv6/tcp_ipv6.c 100670--- a/net/ipv6/tcp_ipv6.c
99104+++ b/net/ipv6/tcp_ipv6.c 100671+++ b/net/ipv6/tcp_ipv6.c
99105@@ -104,6 +104,10 @@ static void inet6_sk_rx_dst_set(struct sock *sk, const struct sk_buff *skb) 100672@@ -104,6 +104,10 @@ static void inet6_sk_rx_dst_set(struct sock *sk, const struct sk_buff *skb)
@@ -99113,7 +100680,7 @@ index f67033b..6f974fc 100644
99113 static void tcp_v6_hash(struct sock *sk) 100680 static void tcp_v6_hash(struct sock *sk)
99114 { 100681 {
99115 if (sk->sk_state != TCP_CLOSE) { 100682 if (sk->sk_state != TCP_CLOSE) {
99116@@ -1397,6 +1401,9 @@ static int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb) 100683@@ -1412,6 +1416,9 @@ static int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb)
99117 return 0; 100684 return 0;
99118 100685
99119 reset: 100686 reset:
@@ -99123,7 +100690,7 @@ index f67033b..6f974fc 100644
99123 tcp_v6_send_reset(sk, skb); 100690 tcp_v6_send_reset(sk, skb);
99124 discard: 100691 discard:
99125 if (opt_skb) 100692 if (opt_skb)
99126@@ -1479,12 +1486,20 @@ static int tcp_v6_rcv(struct sk_buff *skb) 100693@@ -1496,12 +1503,20 @@ static int tcp_v6_rcv(struct sk_buff *skb)
99127 TCP_SKB_CB(skb)->sacked = 0; 100694 TCP_SKB_CB(skb)->sacked = 0;
99128 100695
99129 sk = __inet6_lookup_skb(&tcp_hashinfo, skb, th->source, th->dest); 100696 sk = __inet6_lookup_skb(&tcp_hashinfo, skb, th->source, th->dest);
@@ -99146,7 +100713,7 @@ index f67033b..6f974fc 100644
99146 100713
99147 if (hdr->hop_limit < inet6_sk(sk)->min_hopcount) { 100714 if (hdr->hop_limit < inet6_sk(sk)->min_hopcount) {
99148 NET_INC_STATS_BH(net, LINUX_MIB_TCPMINTTLDROP); 100715 NET_INC_STATS_BH(net, LINUX_MIB_TCPMINTTLDROP);
99149@@ -1536,6 +1551,10 @@ csum_error: 100716@@ -1553,6 +1568,10 @@ csum_error:
99150 bad_packet: 100717 bad_packet:
99151 TCP_INC_STATS_BH(net, TCP_MIB_INERRS); 100718 TCP_INC_STATS_BH(net, TCP_MIB_INERRS);
99152 } else { 100719 } else {
@@ -99158,7 +100725,7 @@ index f67033b..6f974fc 100644
99158 } 100725 }
99159 100726
99160diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c 100727diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
99161index 089c741..cfee117 100644 100728index 1e586d9..384a9c9 100644
99162--- a/net/ipv6/udp.c 100729--- a/net/ipv6/udp.c
99163+++ b/net/ipv6/udp.c 100730+++ b/net/ipv6/udp.c
99164@@ -76,6 +76,10 @@ static unsigned int udp6_ehashfn(struct net *net, 100731@@ -76,6 +76,10 @@ static unsigned int udp6_ehashfn(struct net *net,
@@ -99191,16 +100758,16 @@ index 089c741..cfee117 100644
99191 if (is_udp4) 100758 if (is_udp4)
99192 UDP_INC_STATS_USER(sock_net(sk), 100759 UDP_INC_STATS_USER(sock_net(sk),
99193 UDP_MIB_INERRORS, 100760 UDP_MIB_INERRORS,
99194@@ -477,7 +484,7 @@ try_again: 100761@@ -475,7 +482,7 @@ try_again:
99195 ipv6_iface_scope_id(&sin6->sin6_addr, 100762 ipv6_iface_scope_id(&sin6->sin6_addr,
99196 IP6CB(skb)->iif); 100763 IP6CB(skb)->iif);
99197 } 100764 }
99198- *addr_len = sizeof(*sin6); 100765- *addr_len = sizeof(*sin6);
99199+ 100766+
99200 } 100767 }
99201 if (is_udp4) { 100768
99202 if (inet->cmsg_flags) 100769 if (np->rxopt.all)
99203@@ -685,7 +692,7 @@ csum_error: 100770@@ -690,7 +697,7 @@ csum_error:
99204 UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_CSUMERRORS, is_udplite); 100771 UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_CSUMERRORS, is_udplite);
99205 drop: 100772 drop:
99206 UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite); 100773 UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite);
@@ -99209,7 +100776,7 @@ index 089c741..cfee117 100644
99209 kfree_skb(skb); 100776 kfree_skb(skb);
99210 return -1; 100777 return -1;
99211 } 100778 }
99212@@ -742,7 +749,7 @@ static void flush_stack(struct sock **stack, unsigned int count, 100779@@ -747,7 +754,7 @@ static void flush_stack(struct sock **stack, unsigned int count,
99213 if (likely(skb1 == NULL)) 100780 if (likely(skb1 == NULL))
99214 skb1 = (i == final) ? skb : skb_clone(skb, GFP_ATOMIC); 100781 skb1 = (i == final) ? skb : skb_clone(skb, GFP_ATOMIC);
99215 if (!skb1) { 100782 if (!skb1) {
@@ -99218,7 +100785,7 @@ index 089c741..cfee117 100644
99218 UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_RCVBUFERRORS, 100785 UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_RCVBUFERRORS,
99219 IS_UDPLITE(sk)); 100786 IS_UDPLITE(sk));
99220 UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, 100787 UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS,
99221@@ -881,6 +888,9 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct udp_table *udptable, 100788@@ -886,6 +893,9 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct udp_table *udptable,
99222 goto csum_error; 100789 goto csum_error;
99223 100790
99224 UDP6_INC_STATS_BH(net, UDP_MIB_NOPORTS, proto == IPPROTO_UDPLITE); 100791 UDP6_INC_STATS_BH(net, UDP_MIB_NOPORTS, proto == IPPROTO_UDPLITE);
@@ -99281,11 +100848,24 @@ index 5f8e128..865d38e 100644
99281 err_alloc: 100848 err_alloc:
99282 return -ENOMEM; 100849 return -ENOMEM;
99283 } 100850 }
100851diff --git a/net/ipx/ipx_proc.c b/net/ipx/ipx_proc.c
100852index e15c16a..7cf07aa 100644
100853--- a/net/ipx/ipx_proc.c
100854+++ b/net/ipx/ipx_proc.c
100855@@ -289,7 +289,7 @@ int __init ipx_proc_init(void)
100856 struct proc_dir_entry *p;
100857 int rc = -ENOMEM;
100858
100859- ipx_proc_dir = proc_mkdir("ipx", init_net.proc_net);
100860+ ipx_proc_dir = proc_mkdir_restrict("ipx", init_net.proc_net);
100861
100862 if (!ipx_proc_dir)
100863 goto out;
99284diff --git a/net/irda/ircomm/ircomm_tty.c b/net/irda/ircomm/ircomm_tty.c 100864diff --git a/net/irda/ircomm/ircomm_tty.c b/net/irda/ircomm/ircomm_tty.c
99285index 41ac7938..75e3bb1 100644 100865index 2ba8b97..6d33010 100644
99286--- a/net/irda/ircomm/ircomm_tty.c 100866--- a/net/irda/ircomm/ircomm_tty.c
99287+++ b/net/irda/ircomm/ircomm_tty.c 100867+++ b/net/irda/ircomm/ircomm_tty.c
99288@@ -319,11 +319,11 @@ static int ircomm_tty_block_til_ready(struct ircomm_tty_cb *self, 100868@@ -317,11 +317,11 @@ static int ircomm_tty_block_til_ready(struct ircomm_tty_cb *self,
99289 add_wait_queue(&port->open_wait, &wait); 100869 add_wait_queue(&port->open_wait, &wait);
99290 100870
99291 IRDA_DEBUG(2, "%s(%d):block_til_ready before block on %s open_count=%d\n", 100871 IRDA_DEBUG(2, "%s(%d):block_til_ready before block on %s open_count=%d\n",
@@ -99299,7 +100879,7 @@ index 41ac7938..75e3bb1 100644
99299 port->blocked_open++; 100879 port->blocked_open++;
99300 spin_unlock_irqrestore(&port->lock, flags); 100880 spin_unlock_irqrestore(&port->lock, flags);
99301 100881
99302@@ -358,7 +358,7 @@ static int ircomm_tty_block_til_ready(struct ircomm_tty_cb *self, 100882@@ -356,7 +356,7 @@ static int ircomm_tty_block_til_ready(struct ircomm_tty_cb *self,
99303 } 100883 }
99304 100884
99305 IRDA_DEBUG(1, "%s(%d):block_til_ready blocking on %s open_count=%d\n", 100885 IRDA_DEBUG(1, "%s(%d):block_til_ready blocking on %s open_count=%d\n",
@@ -99308,7 +100888,7 @@ index 41ac7938..75e3bb1 100644
99308 100888
99309 schedule(); 100889 schedule();
99310 } 100890 }
99311@@ -368,12 +368,12 @@ static int ircomm_tty_block_til_ready(struct ircomm_tty_cb *self, 100891@@ -366,12 +366,12 @@ static int ircomm_tty_block_til_ready(struct ircomm_tty_cb *self,
99312 100892
99313 spin_lock_irqsave(&port->lock, flags); 100893 spin_lock_irqsave(&port->lock, flags);
99314 if (!tty_hung_up_p(filp)) 100894 if (!tty_hung_up_p(filp))
@@ -99323,7 +100903,7 @@ index 41ac7938..75e3bb1 100644
99323 100903
99324 if (!retval) 100904 if (!retval)
99325 port->flags |= ASYNC_NORMAL_ACTIVE; 100905 port->flags |= ASYNC_NORMAL_ACTIVE;
99326@@ -447,12 +447,12 @@ static int ircomm_tty_open(struct tty_struct *tty, struct file *filp) 100906@@ -445,12 +445,12 @@ static int ircomm_tty_open(struct tty_struct *tty, struct file *filp)
99327 100907
99328 /* ++ is not atomic, so this should be protected - Jean II */ 100908 /* ++ is not atomic, so this should be protected - Jean II */
99329 spin_lock_irqsave(&self->port.lock, flags); 100909 spin_lock_irqsave(&self->port.lock, flags);
@@ -99338,7 +100918,7 @@ index 41ac7938..75e3bb1 100644
99338 100918
99339 /* Not really used by us, but lets do it anyway */ 100919 /* Not really used by us, but lets do it anyway */
99340 self->port.low_latency = (self->port.flags & ASYNC_LOW_LATENCY) ? 1 : 0; 100920 self->port.low_latency = (self->port.flags & ASYNC_LOW_LATENCY) ? 1 : 0;
99341@@ -989,7 +989,7 @@ static void ircomm_tty_hangup(struct tty_struct *tty) 100921@@ -987,7 +987,7 @@ static void ircomm_tty_hangup(struct tty_struct *tty)
99342 tty_kref_put(port->tty); 100922 tty_kref_put(port->tty);
99343 } 100923 }
99344 port->tty = NULL; 100924 port->tty = NULL;
@@ -99347,7 +100927,7 @@ index 41ac7938..75e3bb1 100644
99347 spin_unlock_irqrestore(&port->lock, flags); 100927 spin_unlock_irqrestore(&port->lock, flags);
99348 100928
99349 wake_up_interruptible(&port->open_wait); 100929 wake_up_interruptible(&port->open_wait);
99350@@ -1346,7 +1346,7 @@ static void ircomm_tty_line_info(struct ircomm_tty_cb *self, struct seq_file *m) 100930@@ -1344,7 +1344,7 @@ static void ircomm_tty_line_info(struct ircomm_tty_cb *self, struct seq_file *m)
99351 seq_putc(m, '\n'); 100931 seq_putc(m, '\n');
99352 100932
99353 seq_printf(m, "Role: %s\n", self->client ? "client" : "server"); 100933 seq_printf(m, "Role: %s\n", self->client ? "client" : "server");
@@ -99356,6 +100936,19 @@ index 41ac7938..75e3bb1 100644
99356 seq_printf(m, "Max data size: %d\n", self->max_data_size); 100936 seq_printf(m, "Max data size: %d\n", self->max_data_size);
99357 seq_printf(m, "Max header size: %d\n", self->max_header_size); 100937 seq_printf(m, "Max header size: %d\n", self->max_header_size);
99358 100938
100939diff --git a/net/irda/irproc.c b/net/irda/irproc.c
100940index b9ac598..f88cc56 100644
100941--- a/net/irda/irproc.c
100942+++ b/net/irda/irproc.c
100943@@ -66,7 +66,7 @@ void __init irda_proc_register(void)
100944 {
100945 int i;
100946
100947- proc_irda = proc_mkdir("irda", init_net.proc_net);
100948+ proc_irda = proc_mkdir_restrict("irda", init_net.proc_net);
100949 if (proc_irda == NULL)
100950 return;
100951
99359diff --git a/net/iucv/af_iucv.c b/net/iucv/af_iucv.c 100952diff --git a/net/iucv/af_iucv.c b/net/iucv/af_iucv.c
99360index c4b7218..3e83259 100644 100953index c4b7218..3e83259 100644
99361--- a/net/iucv/af_iucv.c 100954--- a/net/iucv/af_iucv.c
@@ -99387,10 +100980,10 @@ index cd5b8ec..f205e6b 100644
99387 }; 100980 };
99388 100981
99389diff --git a/net/key/af_key.c b/net/key/af_key.c 100982diff --git a/net/key/af_key.c b/net/key/af_key.c
99390index 545f047..9757a9d 100644 100983index 7932697..a13d158 100644
99391--- a/net/key/af_key.c 100984--- a/net/key/af_key.c
99392+++ b/net/key/af_key.c 100985+++ b/net/key/af_key.c
99393@@ -3041,10 +3041,10 @@ static int pfkey_send_policy_notify(struct xfrm_policy *xp, int dir, const struc 100986@@ -3052,10 +3052,10 @@ static int pfkey_send_policy_notify(struct xfrm_policy *xp, int dir, const struc
99394 static u32 get_acqseq(void) 100987 static u32 get_acqseq(void)
99395 { 100988 {
99396 u32 res; 100989 u32 res;
@@ -99404,7 +100997,7 @@ index 545f047..9757a9d 100644
99404 return res; 100997 return res;
99405 } 100998 }
99406diff --git a/net/l2tp/l2tp_ip.c b/net/l2tp/l2tp_ip.c 100999diff --git a/net/l2tp/l2tp_ip.c b/net/l2tp/l2tp_ip.c
99407index da1a1ce..571db8d 100644 101000index 0b44d85..1a7f88b 100644
99408--- a/net/l2tp/l2tp_ip.c 101001--- a/net/l2tp/l2tp_ip.c
99409+++ b/net/l2tp/l2tp_ip.c 101002+++ b/net/l2tp/l2tp_ip.c
99410@@ -518,6 +518,9 @@ static int l2tp_ip_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *m 101003@@ -518,6 +518,9 @@ static int l2tp_ip_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *m
@@ -99425,11 +101018,24 @@ index da1a1ce..571db8d 100644
99425 } 101018 }
99426 if (inet->cmsg_flags) 101019 if (inet->cmsg_flags)
99427 ip_cmsg_recv(msg, skb); 101020 ip_cmsg_recv(msg, skb);
101021diff --git a/net/llc/llc_proc.c b/net/llc/llc_proc.c
101022index 1a3c7e0..80f8b0c 100644
101023--- a/net/llc/llc_proc.c
101024+++ b/net/llc/llc_proc.c
101025@@ -247,7 +247,7 @@ int __init llc_proc_init(void)
101026 int rc = -ENOMEM;
101027 struct proc_dir_entry *p;
101028
101029- llc_proc_dir = proc_mkdir("llc", init_net.proc_net);
101030+ llc_proc_dir = proc_mkdir_restrict("llc", init_net.proc_net);
101031 if (!llc_proc_dir)
101032 goto out;
101033
99428diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c 101034diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
99429index b4b61b2..ac84a257 100644 101035index 453e974..b3a43a5 100644
99430--- a/net/mac80211/cfg.c 101036--- a/net/mac80211/cfg.c
99431+++ b/net/mac80211/cfg.c 101037+++ b/net/mac80211/cfg.c
99432@@ -826,7 +826,7 @@ static int ieee80211_set_monitor_channel(struct wiphy *wiphy, 101038@@ -839,7 +839,7 @@ static int ieee80211_set_monitor_channel(struct wiphy *wiphy,
99433 ret = ieee80211_vif_use_channel(sdata, chandef, 101039 ret = ieee80211_vif_use_channel(sdata, chandef,
99434 IEEE80211_CHANCTX_EXCLUSIVE); 101040 IEEE80211_CHANCTX_EXCLUSIVE);
99435 } 101041 }
@@ -99438,7 +101044,7 @@ index b4b61b2..ac84a257 100644
99438 local->_oper_chandef = *chandef; 101044 local->_oper_chandef = *chandef;
99439 ieee80211_hw_config(local, 0); 101045 ieee80211_hw_config(local, 0);
99440 } 101046 }
99441@@ -3311,7 +3311,7 @@ static void ieee80211_mgmt_frame_register(struct wiphy *wiphy, 101047@@ -3356,7 +3356,7 @@ static void ieee80211_mgmt_frame_register(struct wiphy *wiphy,
99442 else 101048 else
99443 local->probe_req_reg--; 101049 local->probe_req_reg--;
99444 101050
@@ -99447,7 +101053,7 @@ index b4b61b2..ac84a257 100644
99447 break; 101053 break;
99448 101054
99449 ieee80211_queue_work(&local->hw, &local->reconfig_filter); 101055 ieee80211_queue_work(&local->hw, &local->reconfig_filter);
99450@@ -3774,8 +3774,8 @@ static int ieee80211_cfg_get_channel(struct wiphy *wiphy, 101056@@ -3819,8 +3819,8 @@ static int ieee80211_cfg_get_channel(struct wiphy *wiphy,
99451 if (chanctx_conf) { 101057 if (chanctx_conf) {
99452 *chandef = chanctx_conf->def; 101058 *chandef = chanctx_conf->def;
99453 ret = 0; 101059 ret = 0;
@@ -99459,7 +101065,7 @@ index b4b61b2..ac84a257 100644
99459 if (local->use_chanctx) 101065 if (local->use_chanctx)
99460 *chandef = local->monitor_chandef; 101066 *chandef = local->monitor_chandef;
99461diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h 101067diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
99462index 4aea4e7..9e698d1 100644 101068index 6bd4984..d8805c5 100644
99463--- a/net/mac80211/ieee80211_i.h 101069--- a/net/mac80211/ieee80211_i.h
99464+++ b/net/mac80211/ieee80211_i.h 101070+++ b/net/mac80211/ieee80211_i.h
99465@@ -28,6 +28,7 @@ 101071@@ -28,6 +28,7 @@
@@ -99470,7 +101076,7 @@ index 4aea4e7..9e698d1 100644
99470 #include "key.h" 101076 #include "key.h"
99471 #include "sta_info.h" 101077 #include "sta_info.h"
99472 #include "debug.h" 101078 #include "debug.h"
99473@@ -961,7 +962,7 @@ struct ieee80211_local { 101079@@ -994,7 +995,7 @@ struct ieee80211_local {
99474 /* also used to protect ampdu_ac_queue and amdpu_ac_stop_refcnt */ 101080 /* also used to protect ampdu_ac_queue and amdpu_ac_stop_refcnt */
99475 spinlock_t queue_stop_reason_lock; 101081 spinlock_t queue_stop_reason_lock;
99476 101082
@@ -99480,10 +101086,10 @@ index 4aea4e7..9e698d1 100644
99480 /* number of interfaces with corresponding FIF_ flags */ 101086 /* number of interfaces with corresponding FIF_ flags */
99481 int fif_fcsfail, fif_plcpfail, fif_control, fif_other_bss, fif_pspoll, 101087 int fif_fcsfail, fif_plcpfail, fif_control, fif_other_bss, fif_pspoll,
99482diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c 101088diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
99483index a075791..1d0027f 100644 101089index ce1c443..6cd39e1 100644
99484--- a/net/mac80211/iface.c 101090--- a/net/mac80211/iface.c
99485+++ b/net/mac80211/iface.c 101091+++ b/net/mac80211/iface.c
99486@@ -519,7 +519,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up) 101092@@ -529,7 +529,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
99487 break; 101093 break;
99488 } 101094 }
99489 101095
@@ -99492,7 +101098,7 @@ index a075791..1d0027f 100644
99492 res = drv_start(local); 101098 res = drv_start(local);
99493 if (res) 101099 if (res)
99494 goto err_del_bss; 101100 goto err_del_bss;
99495@@ -566,7 +566,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up) 101101@@ -576,7 +576,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
99496 res = drv_add_interface(local, sdata); 101102 res = drv_add_interface(local, sdata);
99497 if (res) 101103 if (res)
99498 goto err_stop; 101104 goto err_stop;
@@ -99501,7 +101107,7 @@ index a075791..1d0027f 100644
99501 res = ieee80211_add_virtual_monitor(local); 101107 res = ieee80211_add_virtual_monitor(local);
99502 if (res) 101108 if (res)
99503 goto err_stop; 101109 goto err_stop;
99504@@ -675,7 +675,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up) 101110@@ -685,7 +685,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
99505 atomic_inc(&local->iff_promiscs); 101111 atomic_inc(&local->iff_promiscs);
99506 101112
99507 if (coming_up) 101113 if (coming_up)
@@ -99510,7 +101116,7 @@ index a075791..1d0027f 100644
99510 101116
99511 if (hw_reconf_flags) 101117 if (hw_reconf_flags)
99512 ieee80211_hw_config(local, hw_reconf_flags); 101118 ieee80211_hw_config(local, hw_reconf_flags);
99513@@ -713,7 +713,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up) 101119@@ -723,7 +723,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
99514 err_del_interface: 101120 err_del_interface:
99515 drv_remove_interface(local, sdata); 101121 drv_remove_interface(local, sdata);
99516 err_stop: 101122 err_stop:
@@ -99519,7 +101125,7 @@ index a075791..1d0027f 100644
99519 drv_stop(local); 101125 drv_stop(local);
99520 err_del_bss: 101126 err_del_bss:
99521 sdata->bss = NULL; 101127 sdata->bss = NULL;
99522@@ -856,7 +856,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, 101128@@ -874,7 +874,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
99523 } 101129 }
99524 101130
99525 if (going_down) 101131 if (going_down)
@@ -99528,7 +101134,7 @@ index a075791..1d0027f 100644
99528 101134
99529 switch (sdata->vif.type) { 101135 switch (sdata->vif.type) {
99530 case NL80211_IFTYPE_AP_VLAN: 101136 case NL80211_IFTYPE_AP_VLAN:
99531@@ -923,7 +923,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, 101137@@ -933,7 +933,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
99532 } 101138 }
99533 spin_unlock_irqrestore(&local->queue_stop_reason_lock, flags); 101139 spin_unlock_irqrestore(&local->queue_stop_reason_lock, flags);
99534 101140
@@ -99537,7 +101143,7 @@ index a075791..1d0027f 100644
99537 ieee80211_clear_tx_pending(local); 101143 ieee80211_clear_tx_pending(local);
99538 101144
99539 /* 101145 /*
99540@@ -963,7 +963,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, 101146@@ -973,7 +973,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
99541 101147
99542 ieee80211_recalc_ps(local, -1); 101148 ieee80211_recalc_ps(local, -1);
99543 101149
@@ -99546,7 +101152,7 @@ index a075791..1d0027f 100644
99546 ieee80211_stop_device(local); 101152 ieee80211_stop_device(local);
99547 101153
99548 /* no reconfiguring after stop! */ 101154 /* no reconfiguring after stop! */
99549@@ -974,7 +974,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, 101155@@ -984,7 +984,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
99550 ieee80211_configure_filter(local); 101156 ieee80211_configure_filter(local);
99551 ieee80211_hw_config(local, hw_reconf_flags); 101157 ieee80211_hw_config(local, hw_reconf_flags);
99552 101158
@@ -99556,10 +101162,10 @@ index a075791..1d0027f 100644
99556 } 101162 }
99557 101163
99558diff --git a/net/mac80211/main.c b/net/mac80211/main.c 101164diff --git a/net/mac80211/main.c b/net/mac80211/main.c
99559index 7d1c3ac..b62dd29 100644 101165index c7a7a86..a74f57b 100644
99560--- a/net/mac80211/main.c 101166--- a/net/mac80211/main.c
99561+++ b/net/mac80211/main.c 101167+++ b/net/mac80211/main.c
99562@@ -172,7 +172,7 @@ int ieee80211_hw_config(struct ieee80211_local *local, u32 changed) 101168@@ -174,7 +174,7 @@ int ieee80211_hw_config(struct ieee80211_local *local, u32 changed)
99563 changed &= ~(IEEE80211_CONF_CHANGE_CHANNEL | 101169 changed &= ~(IEEE80211_CONF_CHANGE_CHANNEL |
99564 IEEE80211_CONF_CHANGE_POWER); 101170 IEEE80211_CONF_CHANGE_POWER);
99565 101171
@@ -99569,7 +101175,7 @@ index 7d1c3ac..b62dd29 100644
99569 /* 101175 /*
99570 * Goal: 101176 * Goal:
99571diff --git a/net/mac80211/pm.c b/net/mac80211/pm.c 101177diff --git a/net/mac80211/pm.c b/net/mac80211/pm.c
99572index 3401262..d5cd68d 100644 101178index d478b88..8c8d157 100644
99573--- a/net/mac80211/pm.c 101179--- a/net/mac80211/pm.c
99574+++ b/net/mac80211/pm.c 101180+++ b/net/mac80211/pm.c
99575@@ -12,7 +12,7 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan) 101181@@ -12,7 +12,7 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan)
@@ -99581,7 +101187,7 @@ index 3401262..d5cd68d 100644
99581 goto suspend; 101187 goto suspend;
99582 101188
99583 ieee80211_scan_cancel(local); 101189 ieee80211_scan_cancel(local);
99584@@ -59,7 +59,7 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan) 101190@@ -58,7 +58,7 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan)
99585 cancel_work_sync(&local->dynamic_ps_enable_work); 101191 cancel_work_sync(&local->dynamic_ps_enable_work);
99586 del_timer_sync(&local->dynamic_ps_timer); 101192 del_timer_sync(&local->dynamic_ps_timer);
99587 101193
@@ -99590,7 +101196,7 @@ index 3401262..d5cd68d 100644
99590 if (local->wowlan) { 101196 if (local->wowlan) {
99591 int err = drv_suspend(local, wowlan); 101197 int err = drv_suspend(local, wowlan);
99592 if (err < 0) { 101198 if (err < 0) {
99593@@ -116,7 +116,7 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan) 101199@@ -123,7 +123,7 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan)
99594 WARN_ON(!list_empty(&local->chanctx_list)); 101200 WARN_ON(!list_empty(&local->chanctx_list));
99595 101201
99596 /* stop hardware - this must stop RX */ 101202 /* stop hardware - this must stop RX */
@@ -99626,10 +101232,10 @@ index 6ff1346..936ca9a 100644
99626 101232
99627 return p; 101233 return p;
99628diff --git a/net/mac80211/util.c b/net/mac80211/util.c 101234diff --git a/net/mac80211/util.c b/net/mac80211/util.c
99629index 9f9b9bd..d6fcf59 100644 101235index b8700d4..89086d5 100644
99630--- a/net/mac80211/util.c 101236--- a/net/mac80211/util.c
99631+++ b/net/mac80211/util.c 101237+++ b/net/mac80211/util.c
99632@@ -1474,7 +1474,7 @@ int ieee80211_reconfig(struct ieee80211_local *local) 101238@@ -1483,7 +1483,7 @@ int ieee80211_reconfig(struct ieee80211_local *local)
99633 } 101239 }
99634 #endif 101240 #endif
99635 /* everything else happens only if HW was up & running */ 101241 /* everything else happens only if HW was up & running */
@@ -99638,7 +101244,7 @@ index 9f9b9bd..d6fcf59 100644
99638 goto wake_up; 101244 goto wake_up;
99639 101245
99640 /* 101246 /*
99641@@ -1699,7 +1699,7 @@ int ieee80211_reconfig(struct ieee80211_local *local) 101247@@ -1708,7 +1708,7 @@ int ieee80211_reconfig(struct ieee80211_local *local)
99642 local->in_reconfig = false; 101248 local->in_reconfig = false;
99643 barrier(); 101249 barrier();
99644 101250
@@ -99648,10 +101254,10 @@ index 9f9b9bd..d6fcf59 100644
99648 101254
99649 /* 101255 /*
99650diff --git a/net/netfilter/Kconfig b/net/netfilter/Kconfig 101256diff --git a/net/netfilter/Kconfig b/net/netfilter/Kconfig
99651index c3398cd..98ad3b4 100644 101257index e9410d1..77b6378 100644
99652--- a/net/netfilter/Kconfig 101258--- a/net/netfilter/Kconfig
99653+++ b/net/netfilter/Kconfig 101259+++ b/net/netfilter/Kconfig
99654@@ -1002,6 +1002,16 @@ config NETFILTER_XT_MATCH_ESP 101260@@ -1081,6 +1081,16 @@ config NETFILTER_XT_MATCH_ESP
99655 101261
99656 To compile it as a module, choose M here. If unsure, say N. 101262 To compile it as a module, choose M here. If unsure, say N.
99657 101263
@@ -99669,10 +101275,10 @@ index c3398cd..98ad3b4 100644
99669 tristate '"hashlimit" match support' 101275 tristate '"hashlimit" match support'
99670 depends on (IP6_NF_IPTABLES || IP6_NF_IPTABLES=n) 101276 depends on (IP6_NF_IPTABLES || IP6_NF_IPTABLES=n)
99671diff --git a/net/netfilter/Makefile b/net/netfilter/Makefile 101277diff --git a/net/netfilter/Makefile b/net/netfilter/Makefile
99672index 394483b..ed51f2d 100644 101278index bffdad7..f9317d1 100644
99673--- a/net/netfilter/Makefile 101279--- a/net/netfilter/Makefile
99674+++ b/net/netfilter/Makefile 101280+++ b/net/netfilter/Makefile
99675@@ -130,6 +130,7 @@ obj-$(CONFIG_NETFILTER_XT_MATCH_DEVGROUP) += xt_devgroup.o 101281@@ -133,6 +133,7 @@ obj-$(CONFIG_NETFILTER_XT_MATCH_DEVGROUP) += xt_devgroup.o
99676 obj-$(CONFIG_NETFILTER_XT_MATCH_DSCP) += xt_dscp.o 101282 obj-$(CONFIG_NETFILTER_XT_MATCH_DSCP) += xt_dscp.o
99677 obj-$(CONFIG_NETFILTER_XT_MATCH_ECN) += xt_ecn.o 101283 obj-$(CONFIG_NETFILTER_XT_MATCH_ECN) += xt_ecn.o
99678 obj-$(CONFIG_NETFILTER_XT_MATCH_ESP) += xt_esp.o 101284 obj-$(CONFIG_NETFILTER_XT_MATCH_ESP) += xt_esp.o
@@ -99681,10 +101287,10 @@ index 394483b..ed51f2d 100644
99681 obj-$(CONFIG_NETFILTER_XT_MATCH_HELPER) += xt_helper.o 101287 obj-$(CONFIG_NETFILTER_XT_MATCH_HELPER) += xt_helper.o
99682 obj-$(CONFIG_NETFILTER_XT_MATCH_HL) += xt_hl.o 101288 obj-$(CONFIG_NETFILTER_XT_MATCH_HL) += xt_hl.o
99683diff --git a/net/netfilter/ipset/ip_set_core.c b/net/netfilter/ipset/ip_set_core.c 101289diff --git a/net/netfilter/ipset/ip_set_core.c b/net/netfilter/ipset/ip_set_core.c
99684index bac7e01..1d7a31a 100644 101290index de770ec..3fc49d2 100644
99685--- a/net/netfilter/ipset/ip_set_core.c 101291--- a/net/netfilter/ipset/ip_set_core.c
99686+++ b/net/netfilter/ipset/ip_set_core.c 101292+++ b/net/netfilter/ipset/ip_set_core.c
99687@@ -1950,7 +1950,7 @@ done: 101293@@ -1922,7 +1922,7 @@ done:
99688 return ret; 101294 return ret;
99689 } 101295 }
99690 101296
@@ -99694,7 +101300,7 @@ index bac7e01..1d7a31a 100644
99694 .get_optmin = SO_IP_SET, 101300 .get_optmin = SO_IP_SET,
99695 .get_optmax = SO_IP_SET + 1, 101301 .get_optmax = SO_IP_SET + 1,
99696diff --git a/net/netfilter/ipvs/ip_vs_conn.c b/net/netfilter/ipvs/ip_vs_conn.c 101302diff --git a/net/netfilter/ipvs/ip_vs_conn.c b/net/netfilter/ipvs/ip_vs_conn.c
99697index 4c8e5c0..5a79b4d 100644 101303index a8eb0a8..86f2de4 100644
99698--- a/net/netfilter/ipvs/ip_vs_conn.c 101304--- a/net/netfilter/ipvs/ip_vs_conn.c
99699+++ b/net/netfilter/ipvs/ip_vs_conn.c 101305+++ b/net/netfilter/ipvs/ip_vs_conn.c
99700@@ -556,7 +556,7 @@ ip_vs_bind_dest(struct ip_vs_conn *cp, struct ip_vs_dest *dest) 101306@@ -556,7 +556,7 @@ ip_vs_bind_dest(struct ip_vs_conn *cp, struct ip_vs_dest *dest)
@@ -99849,7 +101455,7 @@ index 3f21a2f..a112e85 100644
99849 .procname = "lblcr_expiration", 101455 .procname = "lblcr_expiration",
99850 .data = NULL, 101456 .data = NULL,
99851diff --git a/net/netfilter/ipvs/ip_vs_sync.c b/net/netfilter/ipvs/ip_vs_sync.c 101457diff --git a/net/netfilter/ipvs/ip_vs_sync.c b/net/netfilter/ipvs/ip_vs_sync.c
99852index f63c238..1b87f8a 100644 101458index db80126..ef7110e 100644
99853--- a/net/netfilter/ipvs/ip_vs_sync.c 101459--- a/net/netfilter/ipvs/ip_vs_sync.c
99854+++ b/net/netfilter/ipvs/ip_vs_sync.c 101460+++ b/net/netfilter/ipvs/ip_vs_sync.c
99855@@ -609,7 +609,7 @@ static void ip_vs_sync_conn_v0(struct net *net, struct ip_vs_conn *cp, 101461@@ -609,7 +609,7 @@ static void ip_vs_sync_conn_v0(struct net *net, struct ip_vs_conn *cp,
@@ -99915,10 +101521,10 @@ index a4b5e2a..13b1de3 100644
99915 table = kmemdup(acct_sysctl_table, sizeof(acct_sysctl_table), 101521 table = kmemdup(acct_sysctl_table, sizeof(acct_sysctl_table),
99916 GFP_KERNEL); 101522 GFP_KERNEL);
99917diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c 101523diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c
99918index 43549eb..0bbeace 100644 101524index 356bef5..99932cb 100644
99919--- a/net/netfilter/nf_conntrack_core.c 101525--- a/net/netfilter/nf_conntrack_core.c
99920+++ b/net/netfilter/nf_conntrack_core.c 101526+++ b/net/netfilter/nf_conntrack_core.c
99921@@ -1605,6 +1605,10 @@ void nf_conntrack_init_end(void) 101527@@ -1627,6 +1627,10 @@ void nf_conntrack_init_end(void)
99922 #define DYING_NULLS_VAL ((1<<30)+1) 101528 #define DYING_NULLS_VAL ((1<<30)+1)
99923 #define TEMPLATE_NULLS_VAL ((1<<30)+2) 101529 #define TEMPLATE_NULLS_VAL ((1<<30)+2)
99924 101530
@@ -99929,7 +101535,7 @@ index 43549eb..0bbeace 100644
99929 int nf_conntrack_init_net(struct net *net) 101535 int nf_conntrack_init_net(struct net *net)
99930 { 101536 {
99931 int ret; 101537 int ret;
99932@@ -1619,7 +1623,11 @@ int nf_conntrack_init_net(struct net *net) 101538@@ -1641,7 +1645,11 @@ int nf_conntrack_init_net(struct net *net)
99933 goto err_stat; 101539 goto err_stat;
99934 } 101540 }
99935 101541
@@ -99968,7 +101574,7 @@ index 974a2a4..52cc6ff 100644
99968 table = kmemdup(helper_sysctl_table, sizeof(helper_sysctl_table), 101574 table = kmemdup(helper_sysctl_table, sizeof(helper_sysctl_table),
99969 GFP_KERNEL); 101575 GFP_KERNEL);
99970diff --git a/net/netfilter/nf_conntrack_proto.c b/net/netfilter/nf_conntrack_proto.c 101576diff --git a/net/netfilter/nf_conntrack_proto.c b/net/netfilter/nf_conntrack_proto.c
99971index ce30041..3861b5d 100644 101577index b65d586..beec902 100644
99972--- a/net/netfilter/nf_conntrack_proto.c 101578--- a/net/netfilter/nf_conntrack_proto.c
99973+++ b/net/netfilter/nf_conntrack_proto.c 101579+++ b/net/netfilter/nf_conntrack_proto.c
99974@@ -52,7 +52,7 @@ nf_ct_register_sysctl(struct net *net, 101580@@ -52,7 +52,7 @@ nf_ct_register_sysctl(struct net *net,
@@ -99980,55 +101586,6 @@ index ce30041..3861b5d 100644
99980 unsigned int users) 101586 unsigned int users)
99981 { 101587 {
99982 if (users > 0) 101588 if (users > 0)
99983diff --git a/net/netfilter/nf_conntrack_proto_dccp.c b/net/netfilter/nf_conntrack_proto_dccp.c
99984index a99b6c3..cb372f9 100644
99985--- a/net/netfilter/nf_conntrack_proto_dccp.c
99986+++ b/net/netfilter/nf_conntrack_proto_dccp.c
99987@@ -428,7 +428,7 @@ static bool dccp_new(struct nf_conn *ct, const struct sk_buff *skb,
99988 const char *msg;
99989 u_int8_t state;
99990
99991- dh = skb_header_pointer(skb, dataoff, sizeof(_dh), &dh);
99992+ dh = skb_header_pointer(skb, dataoff, sizeof(_dh), &_dh);
99993 BUG_ON(dh == NULL);
99994
99995 state = dccp_state_table[CT_DCCP_ROLE_CLIENT][dh->dccph_type][CT_DCCP_NONE];
99996@@ -457,7 +457,7 @@ static bool dccp_new(struct nf_conn *ct, const struct sk_buff *skb,
99997 out_invalid:
99998 if (LOG_INVALID(net, IPPROTO_DCCP))
99999 nf_log_packet(net, nf_ct_l3num(ct), 0, skb, NULL, NULL,
100000- NULL, msg);
100001+ NULL, "%s", msg);
100002 return false;
100003 }
100004
100005@@ -486,7 +486,7 @@ static int dccp_packet(struct nf_conn *ct, const struct sk_buff *skb,
100006 u_int8_t type, old_state, new_state;
100007 enum ct_dccp_roles role;
100008
100009- dh = skb_header_pointer(skb, dataoff, sizeof(_dh), &dh);
100010+ dh = skb_header_pointer(skb, dataoff, sizeof(_dh), &_dh);
100011 BUG_ON(dh == NULL);
100012 type = dh->dccph_type;
100013
100014@@ -577,7 +577,7 @@ static int dccp_error(struct net *net, struct nf_conn *tmpl,
100015 unsigned int cscov;
100016 const char *msg;
100017
100018- dh = skb_header_pointer(skb, dataoff, sizeof(_dh), &dh);
100019+ dh = skb_header_pointer(skb, dataoff, sizeof(_dh), &_dh);
100020 if (dh == NULL) {
100021 msg = "nf_ct_dccp: short packet ";
100022 goto out_invalid;
100023@@ -614,7 +614,7 @@ static int dccp_error(struct net *net, struct nf_conn *tmpl,
100024
100025 out_invalid:
100026 if (LOG_INVALID(net, IPPROTO_DCCP))
100027- nf_log_packet(net, pf, 0, skb, NULL, NULL, NULL, msg);
100028+ nf_log_packet(net, pf, 0, skb, NULL, NULL, NULL, "%s", msg);
100029 return -NF_ACCEPT;
100030 }
100031
100032diff --git a/net/netfilter/nf_conntrack_standalone.c b/net/netfilter/nf_conntrack_standalone.c 101589diff --git a/net/netfilter/nf_conntrack_standalone.c b/net/netfilter/nf_conntrack_standalone.c
100033index f641751..d3c5b51 100644 101590index f641751..d3c5b51 100644
100034--- a/net/netfilter/nf_conntrack_standalone.c 101591--- a/net/netfilter/nf_conntrack_standalone.c
@@ -100110,6 +101667,21 @@ index f042ae5..30ea486 100644
100110 mutex_unlock(&nf_sockopt_mutex); 101667 mutex_unlock(&nf_sockopt_mutex);
100111 } 101668 }
100112 EXPORT_SYMBOL(nf_unregister_sockopt); 101669 EXPORT_SYMBOL(nf_unregister_sockopt);
101670diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c
101671index c68e5e0..8d52d50 100644
101672--- a/net/netfilter/nf_tables_api.c
101673+++ b/net/netfilter/nf_tables_api.c
101674@@ -152,8 +152,8 @@ nf_tables_chain_type_lookup(const struct nft_af_info *afi,
101675 #ifdef CONFIG_MODULES
101676 if (autoload) {
101677 nfnl_unlock(NFNL_SUBSYS_NFTABLES);
101678- request_module("nft-chain-%u-%*.s", afi->family,
101679- nla_len(nla)-1, (const char *)nla_data(nla));
101680+ request_module("nft-chain-%u-%.*s", afi->family,
101681+ nla_len(nla), (const char *)nla_data(nla));
101682 nfnl_lock(NFNL_SUBSYS_NFTABLES);
101683 type = __nf_tables_chain_type_lookup(afi->family, nla);
101684 if (type != NULL)
100113diff --git a/net/netfilter/nfnetlink_log.c b/net/netfilter/nfnetlink_log.c 101685diff --git a/net/netfilter/nfnetlink_log.c b/net/netfilter/nfnetlink_log.c
100114index a155d19..726b0f2 100644 101686index a155d19..726b0f2 100644
100115--- a/net/netfilter/nfnetlink_log.c 101687--- a/net/netfilter/nfnetlink_log.c
@@ -100133,7 +101705,7 @@ index a155d19..726b0f2 100644
100133 101705
100134 if (data_len) { 101706 if (data_len) {
100135diff --git a/net/netfilter/nft_compat.c b/net/netfilter/nft_compat.c 101707diff --git a/net/netfilter/nft_compat.c b/net/netfilter/nft_compat.c
100136index da0c1f4..f79737a 100644 101708index 82cb823..5685dd5 100644
100137--- a/net/netfilter/nft_compat.c 101709--- a/net/netfilter/nft_compat.c
100138+++ b/net/netfilter/nft_compat.c 101710+++ b/net/netfilter/nft_compat.c
100139@@ -216,7 +216,7 @@ target_dump_info(struct sk_buff *skb, const struct xt_target *t, const void *in) 101711@@ -216,7 +216,7 @@ target_dump_info(struct sk_buff *skb, const struct xt_target *t, const void *in)
@@ -100211,8 +101783,39 @@ index 0000000..c566332
100211+MODULE_LICENSE("GPL"); 101783+MODULE_LICENSE("GPL");
100212+MODULE_ALIAS("ipt_gradm"); 101784+MODULE_ALIAS("ipt_gradm");
100213+MODULE_ALIAS("ip6t_gradm"); 101785+MODULE_ALIAS("ip6t_gradm");
101786diff --git a/net/netfilter/xt_hashlimit.c b/net/netfilter/xt_hashlimit.c
101787index a3910fc..2d2ba14 100644
101788--- a/net/netfilter/xt_hashlimit.c
101789+++ b/net/netfilter/xt_hashlimit.c
101790@@ -870,11 +870,11 @@ static int __net_init hashlimit_proc_net_init(struct net *net)
101791 {
101792 struct hashlimit_net *hashlimit_net = hashlimit_pernet(net);
101793
101794- hashlimit_net->ipt_hashlimit = proc_mkdir("ipt_hashlimit", net->proc_net);
101795+ hashlimit_net->ipt_hashlimit = proc_mkdir_restrict("ipt_hashlimit", net->proc_net);
101796 if (!hashlimit_net->ipt_hashlimit)
101797 return -ENOMEM;
101798 #if IS_ENABLED(CONFIG_IP6_NF_IPTABLES)
101799- hashlimit_net->ip6t_hashlimit = proc_mkdir("ip6t_hashlimit", net->proc_net);
101800+ hashlimit_net->ip6t_hashlimit = proc_mkdir_restrict("ip6t_hashlimit", net->proc_net);
101801 if (!hashlimit_net->ip6t_hashlimit) {
101802 remove_proc_entry("ipt_hashlimit", net->proc_net);
101803 return -ENOMEM;
101804diff --git a/net/netfilter/xt_recent.c b/net/netfilter/xt_recent.c
101805index 1e657cf..1eb1c34 100644
101806--- a/net/netfilter/xt_recent.c
101807+++ b/net/netfilter/xt_recent.c
101808@@ -618,7 +618,7 @@ static int __net_init recent_proc_net_init(struct net *net)
101809 {
101810 struct recent_net *recent_net = recent_pernet(net);
101811
101812- recent_net->xt_recent = proc_mkdir("xt_recent", net->proc_net);
101813+ recent_net->xt_recent = proc_mkdir_restrict("xt_recent", net->proc_net);
101814 if (!recent_net->xt_recent)
101815 return -ENOMEM;
101816 return 0;
100214diff --git a/net/netfilter/xt_statistic.c b/net/netfilter/xt_statistic.c 101817diff --git a/net/netfilter/xt_statistic.c b/net/netfilter/xt_statistic.c
100215index 4fe4fb4..87a89e5 100644 101818index 11de55e..f25e448 100644
100216--- a/net/netfilter/xt_statistic.c 101819--- a/net/netfilter/xt_statistic.c
100217+++ b/net/netfilter/xt_statistic.c 101820+++ b/net/netfilter/xt_statistic.c
100218@@ -19,7 +19,7 @@ 101821@@ -19,7 +19,7 @@
@@ -100246,10 +101849,10 @@ index 4fe4fb4..87a89e5 100644
100246 return 0; 101849 return 0;
100247 } 101850 }
100248diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c 101851diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
100249index bca50b9..782ec12 100644 101852index 04748ab6..ca8f86f 100644
100250--- a/net/netlink/af_netlink.c 101853--- a/net/netlink/af_netlink.c
100251+++ b/net/netlink/af_netlink.c 101854+++ b/net/netlink/af_netlink.c
100252@@ -249,7 +249,7 @@ static void netlink_overrun(struct sock *sk) 101855@@ -257,7 +257,7 @@ static void netlink_overrun(struct sock *sk)
100253 sk->sk_error_report(sk); 101856 sk->sk_error_report(sk);
100254 } 101857 }
100255 } 101858 }
@@ -100258,18 +101861,7 @@ index bca50b9..782ec12 100644
100258 } 101861 }
100259 101862
100260 static void netlink_rcv_wake(struct sock *sk) 101863 static void netlink_rcv_wake(struct sock *sk)
100261@@ -1481,8 +1481,8 @@ static int netlink_connect(struct socket *sock, struct sockaddr *addr, 101864@@ -2933,7 +2933,7 @@ static int netlink_seq_show(struct seq_file *seq, void *v)
100262 if (addr->sa_family != AF_NETLINK)
100263 return -EINVAL;
100264
100265- /* Only superuser is allowed to send multicasts */
100266- if (nladdr->nl_groups && !netlink_capable(sock, NL_CFG_F_NONROOT_SEND))
100267+ if ((nladdr->nl_groups || nladdr->nl_pid) &&
100268+ !netlink_capable(sock, NL_CFG_F_NONROOT_SEND))
100269 return -EPERM;
100270
100271 if (!nlk->portid)
100272@@ -2940,7 +2940,7 @@ static int netlink_seq_show(struct seq_file *seq, void *v)
100273 sk_wmem_alloc_get(s), 101865 sk_wmem_alloc_get(s),
100274 nlk->cb_running, 101866 nlk->cb_running,
100275 atomic_read(&s->sk_refcnt), 101867 atomic_read(&s->sk_refcnt),
@@ -100279,7 +101871,7 @@ index bca50b9..782ec12 100644
100279 ); 101871 );
100280 101872
100281diff --git a/net/netrom/af_netrom.c b/net/netrom/af_netrom.c 101873diff --git a/net/netrom/af_netrom.c b/net/netrom/af_netrom.c
100282index 53c19a3..b0ac04a 100644 101874index b74aa07..d41926e 100644
100283--- a/net/netrom/af_netrom.c 101875--- a/net/netrom/af_netrom.c
100284+++ b/net/netrom/af_netrom.c 101876+++ b/net/netrom/af_netrom.c
100285@@ -850,7 +850,6 @@ static int nr_getname(struct socket *sock, struct sockaddr *uaddr, 101877@@ -850,7 +850,6 @@ static int nr_getname(struct socket *sock, struct sockaddr *uaddr,
@@ -100291,10 +101883,10 @@ index 53c19a3..b0ac04a 100644
100291 *uaddr_len = sizeof(struct sockaddr_ax25); 101883 *uaddr_len = sizeof(struct sockaddr_ax25);
100292 } 101884 }
100293diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c 101885diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
100294index 88cfbc1..05d73f5 100644 101886index 48a6a93..0b0496e 100644
100295--- a/net/packet/af_packet.c 101887--- a/net/packet/af_packet.c
100296+++ b/net/packet/af_packet.c 101888+++ b/net/packet/af_packet.c
100297@@ -1720,7 +1720,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev, 101889@@ -1845,7 +1845,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev,
100298 101890
100299 spin_lock(&sk->sk_receive_queue.lock); 101891 spin_lock(&sk->sk_receive_queue.lock);
100300 po->stats.stats1.tp_packets++; 101892 po->stats.stats1.tp_packets++;
@@ -100303,7 +101895,7 @@ index 88cfbc1..05d73f5 100644
100303 __skb_queue_tail(&sk->sk_receive_queue, skb); 101895 __skb_queue_tail(&sk->sk_receive_queue, skb);
100304 spin_unlock(&sk->sk_receive_queue.lock); 101896 spin_unlock(&sk->sk_receive_queue.lock);
100305 sk->sk_data_ready(sk, skb->len); 101897 sk->sk_data_ready(sk, skb->len);
100306@@ -1729,7 +1729,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev, 101898@@ -1854,7 +1854,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev,
100307 drop_n_acct: 101899 drop_n_acct:
100308 spin_lock(&sk->sk_receive_queue.lock); 101900 spin_lock(&sk->sk_receive_queue.lock);
100309 po->stats.stats1.tp_drops++; 101901 po->stats.stats1.tp_drops++;
@@ -100312,7 +101904,7 @@ index 88cfbc1..05d73f5 100644
100312 spin_unlock(&sk->sk_receive_queue.lock); 101904 spin_unlock(&sk->sk_receive_queue.lock);
100313 101905
100314 drop_n_restore: 101906 drop_n_restore:
100315@@ -3275,7 +3275,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname, 101907@@ -3449,7 +3449,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname,
100316 case PACKET_HDRLEN: 101908 case PACKET_HDRLEN:
100317 if (len > sizeof(int)) 101909 if (len > sizeof(int))
100318 len = sizeof(int); 101910 len = sizeof(int);
@@ -100321,7 +101913,7 @@ index 88cfbc1..05d73f5 100644
100321 return -EFAULT; 101913 return -EFAULT;
100322 switch (val) { 101914 switch (val) {
100323 case TPACKET_V1: 101915 case TPACKET_V1:
100324@@ -3318,7 +3318,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname, 101916@@ -3495,7 +3495,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname,
100325 len = lv; 101917 len = lv;
100326 if (put_user(len, optlen)) 101918 if (put_user(len, optlen))
100327 return -EFAULT; 101919 return -EFAULT;
@@ -100330,33 +101922,6 @@ index 88cfbc1..05d73f5 100644
100330 return -EFAULT; 101922 return -EFAULT;
100331 return 0; 101923 return 0;
100332 } 101924 }
100333diff --git a/net/phonet/datagram.c b/net/phonet/datagram.c
100334index 38946b2..12c30f3 100644
100335--- a/net/phonet/datagram.c
100336+++ b/net/phonet/datagram.c
100337@@ -139,6 +139,9 @@ static int pn_recvmsg(struct kiocb *iocb, struct sock *sk,
100338 MSG_CMSG_COMPAT))
100339 goto out_nofree;
100340
100341+ if (addr_len)
100342+ *addr_len = sizeof(sa);
100343+
100344 skb = skb_recv_datagram(sk, flags, noblock, &rval);
100345 if (skb == NULL)
100346 goto out_nofree;
100347@@ -159,10 +162,8 @@ static int pn_recvmsg(struct kiocb *iocb, struct sock *sk,
100348
100349 rval = (flags & MSG_TRUNC) ? skb->len : copylen;
100350
100351- if (msg->msg_name != NULL) {
100352- memcpy(msg->msg_name, &sa, sizeof(sa));
100353- *addr_len = sizeof(sa);
100354- }
100355+ if (msg->msg_name != NULL)
100356+ memcpy(msg->msg_name, &sa, sizeof(struct sockaddr_pn));
100357
100358 out:
100359 skb_free_datagram(sk, skb);
100360diff --git a/net/phonet/pep.c b/net/phonet/pep.c 101925diff --git a/net/phonet/pep.c b/net/phonet/pep.c
100361index e774117..900b8b7 100644 101926index e774117..900b8b7 100644
100362--- a/net/phonet/pep.c 101927--- a/net/phonet/pep.c
@@ -100594,10 +102159,10 @@ index e61aa60..f07cc89 100644
100594 /* count of skbs currently in use */ 102159 /* count of skbs currently in use */
100595 atomic_t rxrpc_n_skbs; 102160 atomic_t rxrpc_n_skbs;
100596diff --git a/net/rxrpc/ar-ack.c b/net/rxrpc/ar-ack.c 102161diff --git a/net/rxrpc/ar-ack.c b/net/rxrpc/ar-ack.c
100597index e4d9cbc..b229649 100644 102162index cd97a0c..0041649 100644
100598--- a/net/rxrpc/ar-ack.c 102163--- a/net/rxrpc/ar-ack.c
100599+++ b/net/rxrpc/ar-ack.c 102164+++ b/net/rxrpc/ar-ack.c
100600@@ -175,7 +175,7 @@ static void rxrpc_resend(struct rxrpc_call *call) 102165@@ -182,7 +182,7 @@ static void rxrpc_resend(struct rxrpc_call *call)
100601 102166
100602 _enter("{%d,%d,%d,%d},", 102167 _enter("{%d,%d,%d,%d},",
100603 call->acks_hard, call->acks_unacked, 102168 call->acks_hard, call->acks_unacked,
@@ -100606,7 +102171,7 @@ index e4d9cbc..b229649 100644
100606 CIRC_CNT(call->acks_head, call->acks_tail, call->acks_winsz)); 102171 CIRC_CNT(call->acks_head, call->acks_tail, call->acks_winsz));
100607 102172
100608 stop = 0; 102173 stop = 0;
100609@@ -199,7 +199,7 @@ static void rxrpc_resend(struct rxrpc_call *call) 102174@@ -206,7 +206,7 @@ static void rxrpc_resend(struct rxrpc_call *call)
100610 102175
100611 /* each Tx packet has a new serial number */ 102176 /* each Tx packet has a new serial number */
100612 sp->hdr.serial = 102177 sp->hdr.serial =
@@ -100615,7 +102180,7 @@ index e4d9cbc..b229649 100644
100615 102180
100616 hdr = (struct rxrpc_header *) txb->head; 102181 hdr = (struct rxrpc_header *) txb->head;
100617 hdr->serial = sp->hdr.serial; 102182 hdr->serial = sp->hdr.serial;
100618@@ -403,7 +403,7 @@ static void rxrpc_rotate_tx_window(struct rxrpc_call *call, u32 hard) 102183@@ -410,7 +410,7 @@ static void rxrpc_rotate_tx_window(struct rxrpc_call *call, u32 hard)
100619 */ 102184 */
100620 static void rxrpc_clear_tx_window(struct rxrpc_call *call) 102185 static void rxrpc_clear_tx_window(struct rxrpc_call *call)
100621 { 102186 {
@@ -100624,7 +102189,7 @@ index e4d9cbc..b229649 100644
100624 } 102189 }
100625 102190
100626 /* 102191 /*
100627@@ -629,7 +629,7 @@ process_further: 102192@@ -636,7 +636,7 @@ process_further:
100628 102193
100629 latest = ntohl(sp->hdr.serial); 102194 latest = ntohl(sp->hdr.serial);
100630 hard = ntohl(ack.firstPacket); 102195 hard = ntohl(ack.firstPacket);
@@ -100633,7 +102198,7 @@ index e4d9cbc..b229649 100644
100633 102198
100634 _proto("Rx ACK %%%u { m=%hu f=#%u p=#%u s=%%%u r=%s n=%u }", 102199 _proto("Rx ACK %%%u { m=%hu f=#%u p=#%u s=%%%u r=%s n=%u }",
100635 latest, 102200 latest,
100636@@ -1161,7 +1161,7 @@ void rxrpc_process_call(struct work_struct *work) 102201@@ -1168,7 +1168,7 @@ void rxrpc_process_call(struct work_struct *work)
100637 goto maybe_reschedule; 102202 goto maybe_reschedule;
100638 102203
100639 send_ACK_with_skew: 102204 send_ACK_with_skew:
@@ -100642,7 +102207,7 @@ index e4d9cbc..b229649 100644
100642 ntohl(ack.serial)); 102207 ntohl(ack.serial));
100643 send_ACK: 102208 send_ACK:
100644 mtu = call->conn->trans->peer->if_mtu; 102209 mtu = call->conn->trans->peer->if_mtu;
100645@@ -1173,7 +1173,7 @@ send_ACK: 102210@@ -1180,7 +1180,7 @@ send_ACK:
100646 ackinfo.rxMTU = htonl(5692); 102211 ackinfo.rxMTU = htonl(5692);
100647 ackinfo.jumbo_max = htonl(4); 102212 ackinfo.jumbo_max = htonl(4);
100648 102213
@@ -100651,7 +102216,7 @@ index e4d9cbc..b229649 100644
100651 _proto("Tx ACK %%%u { m=%hu f=#%u p=#%u s=%%%u r=%s n=%u }", 102216 _proto("Tx ACK %%%u { m=%hu f=#%u p=#%u s=%%%u r=%s n=%u }",
100652 ntohl(hdr.serial), 102217 ntohl(hdr.serial),
100653 ntohs(ack.maxSkew), 102218 ntohs(ack.maxSkew),
100654@@ -1191,7 +1191,7 @@ send_ACK: 102219@@ -1198,7 +1198,7 @@ send_ACK:
100655 send_message: 102220 send_message:
100656 _debug("send message"); 102221 _debug("send message");
100657 102222
@@ -100674,7 +102239,7 @@ index a3bbb36..3341fb9 100644
100674 102239
100675 memset(&call->sock_node, 0xed, sizeof(call->sock_node)); 102240 memset(&call->sock_node, 0xed, sizeof(call->sock_node));
100676diff --git a/net/rxrpc/ar-connection.c b/net/rxrpc/ar-connection.c 102241diff --git a/net/rxrpc/ar-connection.c b/net/rxrpc/ar-connection.c
100677index 4106ca9..a338d7a 100644 102242index 7bf5b5b..4a3bf2c 100644
100678--- a/net/rxrpc/ar-connection.c 102243--- a/net/rxrpc/ar-connection.c
100679+++ b/net/rxrpc/ar-connection.c 102244+++ b/net/rxrpc/ar-connection.c
100680@@ -206,7 +206,7 @@ static struct rxrpc_connection *rxrpc_alloc_connection(gfp_t gfp) 102245@@ -206,7 +206,7 @@ static struct rxrpc_connection *rxrpc_alloc_connection(gfp_t gfp)
@@ -100762,7 +102327,7 @@ index 87f7135..74d3703 100644
100762 } 102327 }
100763 102328
100764diff --git a/net/rxrpc/ar-output.c b/net/rxrpc/ar-output.c 102329diff --git a/net/rxrpc/ar-output.c b/net/rxrpc/ar-output.c
100765index e1ac183..b43e10e 100644 102330index d0e8f1c..a3a1686 100644
100766--- a/net/rxrpc/ar-output.c 102331--- a/net/rxrpc/ar-output.c
100767+++ b/net/rxrpc/ar-output.c 102332+++ b/net/rxrpc/ar-output.c
100768@@ -682,9 +682,9 @@ static int rxrpc_send_data(struct kiocb *iocb, 102333@@ -682,9 +682,9 @@ static int rxrpc_send_data(struct kiocb *iocb,
@@ -100841,10 +102406,10 @@ index f226709..0e735a8 100644
100841 102406
100842 ret = kernel_sendmsg(conn->trans->local->socket, &msg, iov, 3, len); 102407 ret = kernel_sendmsg(conn->trans->local->socket, &msg, iov, 3, len);
100843diff --git a/net/sctp/ipv6.c b/net/sctp/ipv6.c 102408diff --git a/net/sctp/ipv6.c b/net/sctp/ipv6.c
100844index 7567e6f..299382b 100644 102409index 2b1738e..a9d0fc9 100644
100845--- a/net/sctp/ipv6.c 102410--- a/net/sctp/ipv6.c
100846+++ b/net/sctp/ipv6.c 102411+++ b/net/sctp/ipv6.c
100847@@ -964,7 +964,7 @@ static const struct inet6_protocol sctpv6_protocol = { 102412@@ -966,7 +966,7 @@ static const struct inet6_protocol sctpv6_protocol = {
100848 .flags = INET6_PROTO_NOPOLICY | INET6_PROTO_FINAL, 102413 .flags = INET6_PROTO_NOPOLICY | INET6_PROTO_FINAL,
100849 }; 102414 };
100850 102415
@@ -100853,7 +102418,7 @@ index 7567e6f..299382b 100644
100853 .sa_family = AF_INET6, 102418 .sa_family = AF_INET6,
100854 .sctp_xmit = sctp_v6_xmit, 102419 .sctp_xmit = sctp_v6_xmit,
100855 .setsockopt = ipv6_setsockopt, 102420 .setsockopt = ipv6_setsockopt,
100856@@ -996,7 +996,7 @@ static struct sctp_af sctp_af_inet6 = { 102421@@ -998,7 +998,7 @@ static struct sctp_af sctp_af_inet6 = {
100857 #endif 102422 #endif
100858 }; 102423 };
100859 102424
@@ -100862,7 +102427,7 @@ index 7567e6f..299382b 100644
100862 .event_msgname = sctp_inet6_event_msgname, 102427 .event_msgname = sctp_inet6_event_msgname,
100863 .skb_msgname = sctp_inet6_skb_msgname, 102428 .skb_msgname = sctp_inet6_skb_msgname,
100864 .af_supported = sctp_inet6_af_supported, 102429 .af_supported = sctp_inet6_af_supported,
100865@@ -1021,7 +1021,7 @@ void sctp_v6_pf_init(void) 102430@@ -1023,7 +1023,7 @@ void sctp_v6_pf_init(void)
100866 102431
100867 void sctp_v6_pf_exit(void) 102432 void sctp_v6_pf_exit(void)
100868 { 102433 {
@@ -100872,10 +102437,10 @@ index 7567e6f..299382b 100644
100872 102437
100873 /* Initialize IPv6 support and register with socket layer. */ 102438 /* Initialize IPv6 support and register with socket layer. */
100874diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c 102439diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c
100875index 5e17092..19be1d4 100644 102440index a62a215..0976540 100644
100876--- a/net/sctp/protocol.c 102441--- a/net/sctp/protocol.c
100877+++ b/net/sctp/protocol.c 102442+++ b/net/sctp/protocol.c
100878@@ -832,8 +832,10 @@ int sctp_register_af(struct sctp_af *af) 102443@@ -836,8 +836,10 @@ int sctp_register_af(struct sctp_af *af)
100879 return 0; 102444 return 0;
100880 } 102445 }
100881 102446
@@ -100887,7 +102452,7 @@ index 5e17092..19be1d4 100644
100887 return 1; 102452 return 1;
100888 } 102453 }
100889 102454
100890@@ -963,7 +965,7 @@ static inline int sctp_v4_xmit(struct sk_buff *skb, 102455@@ -967,7 +969,7 @@ static inline int sctp_v4_xmit(struct sk_buff *skb,
100891 102456
100892 static struct sctp_af sctp_af_inet; 102457 static struct sctp_af sctp_af_inet;
100893 102458
@@ -100896,7 +102461,7 @@ index 5e17092..19be1d4 100644
100896 .event_msgname = sctp_inet_event_msgname, 102461 .event_msgname = sctp_inet_event_msgname,
100897 .skb_msgname = sctp_inet_skb_msgname, 102462 .skb_msgname = sctp_inet_skb_msgname,
100898 .af_supported = sctp_inet_af_supported, 102463 .af_supported = sctp_inet_af_supported,
100899@@ -1034,7 +1036,7 @@ static const struct net_protocol sctp_protocol = { 102464@@ -1039,7 +1041,7 @@ static const struct net_protocol sctp_protocol = {
100900 }; 102465 };
100901 102466
100902 /* IPv4 address related functions. */ 102467 /* IPv4 address related functions. */
@@ -100905,7 +102470,7 @@ index 5e17092..19be1d4 100644
100905 .sa_family = AF_INET, 102470 .sa_family = AF_INET,
100906 .sctp_xmit = sctp_v4_xmit, 102471 .sctp_xmit = sctp_v4_xmit,
100907 .setsockopt = ip_setsockopt, 102472 .setsockopt = ip_setsockopt,
100908@@ -1119,7 +1121,7 @@ static void sctp_v4_pf_init(void) 102473@@ -1124,7 +1126,7 @@ static void sctp_v4_pf_init(void)
100909 102474
100910 static void sctp_v4_pf_exit(void) 102475 static void sctp_v4_pf_exit(void)
100911 { 102476 {
@@ -100915,10 +102480,10 @@ index 5e17092..19be1d4 100644
100915 102480
100916 static int sctp_v4_protosw_init(void) 102481 static int sctp_v4_protosw_init(void)
100917diff --git a/net/sctp/sm_sideeffect.c b/net/sctp/sm_sideeffect.c 102482diff --git a/net/sctp/sm_sideeffect.c b/net/sctp/sm_sideeffect.c
100918index 1a6eef3..17e898f 100644 102483index fef2acd..c705c4f 100644
100919--- a/net/sctp/sm_sideeffect.c 102484--- a/net/sctp/sm_sideeffect.c
100920+++ b/net/sctp/sm_sideeffect.c 102485+++ b/net/sctp/sm_sideeffect.c
100921@@ -440,7 +440,7 @@ static void sctp_generate_sack_event(unsigned long data) 102486@@ -439,7 +439,7 @@ static void sctp_generate_sack_event(unsigned long data)
100922 sctp_generate_timeout_event(asoc, SCTP_EVENT_TIMEOUT_SACK); 102487 sctp_generate_timeout_event(asoc, SCTP_EVENT_TIMEOUT_SACK);
100923 } 102488 }
100924 102489
@@ -100928,10 +102493,10 @@ index 1a6eef3..17e898f 100644
100928 sctp_generate_t1_cookie_event, 102493 sctp_generate_t1_cookie_event,
100929 sctp_generate_t1_init_event, 102494 sctp_generate_t1_init_event,
100930diff --git a/net/sctp/socket.c b/net/sctp/socket.c 102495diff --git a/net/sctp/socket.c b/net/sctp/socket.c
100931index 146b35d..1021a34 100644 102496index 604a6ac..f87f0a3 100644
100932--- a/net/sctp/socket.c 102497--- a/net/sctp/socket.c
100933+++ b/net/sctp/socket.c 102498+++ b/net/sctp/socket.c
100934@@ -2176,11 +2176,13 @@ static int sctp_setsockopt_events(struct sock *sk, char __user *optval, 102499@@ -2175,11 +2175,13 @@ static int sctp_setsockopt_events(struct sock *sk, char __user *optval,
100935 { 102500 {
100936 struct sctp_association *asoc; 102501 struct sctp_association *asoc;
100937 struct sctp_ulpevent *event; 102502 struct sctp_ulpevent *event;
@@ -100946,7 +102511,7 @@ index 146b35d..1021a34 100644
100946 102511
100947 /* 102512 /*
100948 * At the time when a user app subscribes to SCTP_SENDER_DRY_EVENT, 102513 * At the time when a user app subscribes to SCTP_SENDER_DRY_EVENT,
100949@@ -4252,13 +4254,16 @@ static int sctp_getsockopt_disable_fragments(struct sock *sk, int len, 102514@@ -4259,13 +4261,16 @@ static int sctp_getsockopt_disable_fragments(struct sock *sk, int len,
100950 static int sctp_getsockopt_events(struct sock *sk, int len, char __user *optval, 102515 static int sctp_getsockopt_events(struct sock *sk, int len, char __user *optval,
100951 int __user *optlen) 102516 int __user *optlen)
100952 { 102517 {
@@ -100964,7 +102529,7 @@ index 146b35d..1021a34 100644
100964 return -EFAULT; 102529 return -EFAULT;
100965 return 0; 102530 return 0;
100966 } 102531 }
100967@@ -4276,6 +4281,8 @@ static int sctp_getsockopt_events(struct sock *sk, int len, char __user *optval, 102532@@ -4283,6 +4288,8 @@ static int sctp_getsockopt_events(struct sock *sk, int len, char __user *optval,
100968 */ 102533 */
100969 static int sctp_getsockopt_autoclose(struct sock *sk, int len, char __user *optval, int __user *optlen) 102534 static int sctp_getsockopt_autoclose(struct sock *sk, int len, char __user *optval, int __user *optlen)
100970 { 102535 {
@@ -100973,7 +102538,7 @@ index 146b35d..1021a34 100644
100973 /* Applicable to UDP-style socket only */ 102538 /* Applicable to UDP-style socket only */
100974 if (sctp_style(sk, TCP)) 102539 if (sctp_style(sk, TCP))
100975 return -EOPNOTSUPP; 102540 return -EOPNOTSUPP;
100976@@ -4284,7 +4291,8 @@ static int sctp_getsockopt_autoclose(struct sock *sk, int len, char __user *optv 102541@@ -4291,7 +4298,8 @@ static int sctp_getsockopt_autoclose(struct sock *sk, int len, char __user *optv
100977 len = sizeof(int); 102542 len = sizeof(int);
100978 if (put_user(len, optlen)) 102543 if (put_user(len, optlen))
100979 return -EFAULT; 102544 return -EFAULT;
@@ -100983,7 +102548,7 @@ index 146b35d..1021a34 100644
100983 return -EFAULT; 102548 return -EFAULT;
100984 return 0; 102549 return 0;
100985 } 102550 }
100986@@ -4656,12 +4664,15 @@ static int sctp_getsockopt_delayed_ack(struct sock *sk, int len, 102551@@ -4666,12 +4674,15 @@ static int sctp_getsockopt_delayed_ack(struct sock *sk, int len,
100987 */ 102552 */
100988 static int sctp_getsockopt_initmsg(struct sock *sk, int len, char __user *optval, int __user *optlen) 102553 static int sctp_getsockopt_initmsg(struct sock *sk, int len, char __user *optval, int __user *optlen)
100989 { 102554 {
@@ -101000,7 +102565,7 @@ index 146b35d..1021a34 100644
101000 return -EFAULT; 102565 return -EFAULT;
101001 return 0; 102566 return 0;
101002 } 102567 }
101003@@ -4702,6 +4713,8 @@ static int sctp_getsockopt_peer_addrs(struct sock *sk, int len, 102568@@ -4712,6 +4723,8 @@ static int sctp_getsockopt_peer_addrs(struct sock *sk, int len,
101004 addrlen = sctp_get_af_specific(temp.sa.sa_family)->sockaddr_len; 102569 addrlen = sctp_get_af_specific(temp.sa.sa_family)->sockaddr_len;
101005 if (space_left < addrlen) 102570 if (space_left < addrlen)
101006 return -ENOMEM; 102571 return -ENOMEM;
@@ -101010,10 +102575,10 @@ index 146b35d..1021a34 100644
101010 return -EFAULT; 102575 return -EFAULT;
101011 to += addrlen; 102576 to += addrlen;
101012diff --git a/net/sctp/sysctl.c b/net/sctp/sysctl.c 102577diff --git a/net/sctp/sysctl.c b/net/sctp/sysctl.c
101013index b0565af..d135e6e 100644 102578index c82fdc1..4ca1f95 100644
101014--- a/net/sctp/sysctl.c 102579--- a/net/sctp/sysctl.c
101015+++ b/net/sctp/sysctl.c 102580+++ b/net/sctp/sysctl.c
101016@@ -305,7 +305,7 @@ static int proc_sctp_do_hmac_alg(struct ctl_table *ctl, int write, 102581@@ -308,7 +308,7 @@ static int proc_sctp_do_hmac_alg(struct ctl_table *ctl, int write,
101017 { 102582 {
101018 struct net *net = current->nsproxy->net_ns; 102583 struct net *net = current->nsproxy->net_ns;
101019 char tmp[8]; 102584 char tmp[8];
@@ -101022,7 +102587,7 @@ index b0565af..d135e6e 100644
101022 int ret; 102587 int ret;
101023 int changed = 0; 102588 int changed = 0;
101024 char *none = "none"; 102589 char *none = "none";
101025@@ -352,7 +352,7 @@ static int proc_sctp_do_rto_min(struct ctl_table *ctl, int write, 102590@@ -355,7 +355,7 @@ static int proc_sctp_do_rto_min(struct ctl_table *ctl, int write,
101026 { 102591 {
101027 struct net *net = current->nsproxy->net_ns; 102592 struct net *net = current->nsproxy->net_ns;
101028 int new_value; 102593 int new_value;
@@ -101031,7 +102596,7 @@ index b0565af..d135e6e 100644
101031 unsigned int min = *(unsigned int *) ctl->extra1; 102596 unsigned int min = *(unsigned int *) ctl->extra1;
101032 unsigned int max = *(unsigned int *) ctl->extra2; 102597 unsigned int max = *(unsigned int *) ctl->extra2;
101033 int ret; 102598 int ret;
101034@@ -379,7 +379,7 @@ static int proc_sctp_do_rto_max(struct ctl_table *ctl, int write, 102599@@ -382,7 +382,7 @@ static int proc_sctp_do_rto_max(struct ctl_table *ctl, int write,
101035 { 102600 {
101036 struct net *net = current->nsproxy->net_ns; 102601 struct net *net = current->nsproxy->net_ns;
101037 int new_value; 102602 int new_value;
@@ -101040,17 +102605,38 @@ index b0565af..d135e6e 100644
101040 unsigned int min = *(unsigned int *) ctl->extra1; 102605 unsigned int min = *(unsigned int *) ctl->extra1;
101041 unsigned int max = *(unsigned int *) ctl->extra2; 102606 unsigned int max = *(unsigned int *) ctl->extra2;
101042 int ret; 102607 int ret;
101043@@ -402,7 +402,7 @@ static int proc_sctp_do_rto_max(struct ctl_table *ctl, int write, 102608@@ -408,7 +408,7 @@ static int proc_sctp_do_auth(struct ctl_table *ctl, int write,
102609 loff_t *ppos)
102610 {
102611 struct net *net = current->nsproxy->net_ns;
102612- struct ctl_table tbl;
102613+ ctl_table_no_const tbl;
102614 int new_value, ret;
102615
102616 memset(&tbl, 0, sizeof(struct ctl_table));
102617@@ -436,7 +436,7 @@ static int proc_sctp_do_auth(struct ctl_table *ctl, int write,
101044 102618
101045 int sctp_sysctl_net_register(struct net *net) 102619 int sctp_sysctl_net_register(struct net *net)
101046 { 102620 {
101047- struct ctl_table *table; 102621- struct ctl_table *table = sctp_net_table;
101048+ ctl_table_no_const *table; 102622+ ctl_table_no_const *table = NULL;
101049 int i; 102623
102624 if (!net_eq(net, &init_net)) {
102625 int i;
102626@@ -449,7 +449,10 @@ int sctp_sysctl_net_register(struct net *net)
102627 table[i].data += (char *)(&net->sctp) - (char *)&init_net.sctp;
102628 }
102629
102630- net->sctp.sysctl_header = register_net_sysctl(net, "net/sctp", table);
102631+ if (!net_eq(net, &init_net))
102632+ net->sctp.sysctl_header = register_net_sysctl(net, "net/sctp", table);
102633+ else
102634+ net->sctp.sysctl_header = register_net_sysctl(net, "net/sctp", sctp_net_table);
102635 return 0;
102636 }
101050 102637
101051 table = kmemdup(sctp_net_table, sizeof(sctp_net_table), GFP_KERNEL);
101052diff --git a/net/socket.c b/net/socket.c 102638diff --git a/net/socket.c b/net/socket.c
101053index e83c416..f87df4c 100644 102639index a19ae19..89554dc 100644
101054--- a/net/socket.c 102640--- a/net/socket.c
101055+++ b/net/socket.c 102641+++ b/net/socket.c
101056@@ -88,6 +88,7 @@ 102642@@ -88,6 +88,7 @@
@@ -101088,7 +102674,7 @@ index e83c416..f87df4c 100644
101088 102674
101089 static struct file_system_type sock_fs_type = { 102675 static struct file_system_type sock_fs_type = {
101090 .name = "sockfs", 102676 .name = "sockfs",
101091@@ -1255,6 +1258,8 @@ int __sock_create(struct net *net, int family, int type, int protocol, 102677@@ -1256,6 +1259,8 @@ int __sock_create(struct net *net, int family, int type, int protocol,
101092 return -EAFNOSUPPORT; 102678 return -EAFNOSUPPORT;
101093 if (type < 0 || type >= SOCK_MAX) 102679 if (type < 0 || type >= SOCK_MAX)
101094 return -EINVAL; 102680 return -EINVAL;
@@ -101097,7 +102683,7 @@ index e83c416..f87df4c 100644
101097 102683
101098 /* Compatibility. 102684 /* Compatibility.
101099 102685
101100@@ -1275,6 +1280,20 @@ int __sock_create(struct net *net, int family, int type, int protocol, 102686@@ -1276,6 +1281,20 @@ int __sock_create(struct net *net, int family, int type, int protocol,
101101 if (err) 102687 if (err)
101102 return err; 102688 return err;
101103 102689
@@ -101118,7 +102704,7 @@ index e83c416..f87df4c 100644
101118 /* 102704 /*
101119 * Allocate the socket and allow the family to set things up. if 102705 * Allocate the socket and allow the family to set things up. if
101120 * the protocol is 0, the family is instructed to select an appropriate 102706 * the protocol is 0, the family is instructed to select an appropriate
101121@@ -1513,6 +1532,14 @@ SYSCALL_DEFINE3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen) 102707@@ -1527,6 +1546,14 @@ SYSCALL_DEFINE3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen)
101122 if (sock) { 102708 if (sock) {
101123 err = move_addr_to_kernel(umyaddr, addrlen, &address); 102709 err = move_addr_to_kernel(umyaddr, addrlen, &address);
101124 if (err >= 0) { 102710 if (err >= 0) {
@@ -101133,7 +102719,7 @@ index e83c416..f87df4c 100644
101133 err = security_socket_bind(sock, 102719 err = security_socket_bind(sock,
101134 (struct sockaddr *)&address, 102720 (struct sockaddr *)&address,
101135 addrlen); 102721 addrlen);
101136@@ -1521,6 +1548,7 @@ SYSCALL_DEFINE3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen) 102722@@ -1535,6 +1562,7 @@ SYSCALL_DEFINE3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen)
101137 (struct sockaddr *) 102723 (struct sockaddr *)
101138 &address, addrlen); 102724 &address, addrlen);
101139 } 102725 }
@@ -101141,7 +102727,7 @@ index e83c416..f87df4c 100644
101141 fput_light(sock->file, fput_needed); 102727 fput_light(sock->file, fput_needed);
101142 } 102728 }
101143 return err; 102729 return err;
101144@@ -1544,10 +1572,20 @@ SYSCALL_DEFINE2(listen, int, fd, int, backlog) 102730@@ -1558,10 +1586,20 @@ SYSCALL_DEFINE2(listen, int, fd, int, backlog)
101145 if ((unsigned int)backlog > somaxconn) 102731 if ((unsigned int)backlog > somaxconn)
101146 backlog = somaxconn; 102732 backlog = somaxconn;
101147 102733
@@ -101162,7 +102748,7 @@ index e83c416..f87df4c 100644
101162 fput_light(sock->file, fput_needed); 102748 fput_light(sock->file, fput_needed);
101163 } 102749 }
101164 return err; 102750 return err;
101165@@ -1591,6 +1629,18 @@ SYSCALL_DEFINE4(accept4, int, fd, struct sockaddr __user *, upeer_sockaddr, 102751@@ -1605,6 +1643,18 @@ SYSCALL_DEFINE4(accept4, int, fd, struct sockaddr __user *, upeer_sockaddr,
101166 newsock->type = sock->type; 102752 newsock->type = sock->type;
101167 newsock->ops = sock->ops; 102753 newsock->ops = sock->ops;
101168 102754
@@ -101181,7 +102767,7 @@ index e83c416..f87df4c 100644
101181 /* 102767 /*
101182 * We don't need try_module_get here, as the listening socket (sock) 102768 * We don't need try_module_get here, as the listening socket (sock)
101183 * has the protocol module (sock->ops->owner) held. 102769 * has the protocol module (sock->ops->owner) held.
101184@@ -1636,6 +1686,8 @@ SYSCALL_DEFINE4(accept4, int, fd, struct sockaddr __user *, upeer_sockaddr, 102770@@ -1650,6 +1700,8 @@ SYSCALL_DEFINE4(accept4, int, fd, struct sockaddr __user *, upeer_sockaddr,
101185 fd_install(newfd, newfile); 102771 fd_install(newfd, newfile);
101186 err = newfd; 102772 err = newfd;
101187 102773
@@ -101190,7 +102776,7 @@ index e83c416..f87df4c 100644
101190 out_put: 102776 out_put:
101191 fput_light(sock->file, fput_needed); 102777 fput_light(sock->file, fput_needed);
101192 out: 102778 out:
101193@@ -1668,6 +1720,7 @@ SYSCALL_DEFINE3(connect, int, fd, struct sockaddr __user *, uservaddr, 102779@@ -1682,6 +1734,7 @@ SYSCALL_DEFINE3(connect, int, fd, struct sockaddr __user *, uservaddr,
101194 int, addrlen) 102780 int, addrlen)
101195 { 102781 {
101196 struct socket *sock; 102782 struct socket *sock;
@@ -101198,7 +102784,7 @@ index e83c416..f87df4c 100644
101198 struct sockaddr_storage address; 102784 struct sockaddr_storage address;
101199 int err, fput_needed; 102785 int err, fput_needed;
101200 102786
101201@@ -1678,6 +1731,17 @@ SYSCALL_DEFINE3(connect, int, fd, struct sockaddr __user *, uservaddr, 102787@@ -1692,6 +1745,17 @@ SYSCALL_DEFINE3(connect, int, fd, struct sockaddr __user *, uservaddr,
101202 if (err < 0) 102788 if (err < 0)
101203 goto out_put; 102789 goto out_put;
101204 102790
@@ -101216,7 +102802,7 @@ index e83c416..f87df4c 100644
101216 err = 102802 err =
101217 security_socket_connect(sock, (struct sockaddr *)&address, addrlen); 102803 security_socket_connect(sock, (struct sockaddr *)&address, addrlen);
101218 if (err) 102804 if (err)
101219@@ -1759,6 +1823,8 @@ SYSCALL_DEFINE3(getpeername, int, fd, struct sockaddr __user *, usockaddr, 102805@@ -1773,6 +1837,8 @@ SYSCALL_DEFINE3(getpeername, int, fd, struct sockaddr __user *, usockaddr,
101220 * the protocol. 102806 * the protocol.
101221 */ 102807 */
101222 102808
@@ -101225,18 +102811,16 @@ index e83c416..f87df4c 100644
101225 SYSCALL_DEFINE6(sendto, int, fd, void __user *, buff, size_t, len, 102811 SYSCALL_DEFINE6(sendto, int, fd, void __user *, buff, size_t, len,
101226 unsigned int, flags, struct sockaddr __user *, addr, 102812 unsigned int, flags, struct sockaddr __user *, addr,
101227 int, addr_len) 102813 int, addr_len)
101228@@ -1972,6 +2038,10 @@ static int copy_msghdr_from_user(struct msghdr *kmsg, 102814@@ -1839,7 +1905,7 @@ SYSCALL_DEFINE6(recvfrom, int, fd, void __user *, ubuf, size_t, size,
101229 { 102815 struct socket *sock;
101230 if (copy_from_user(kmsg, umsg, sizeof(struct msghdr))) 102816 struct iovec iov;
101231 return -EFAULT; 102817 struct msghdr msg;
101232+ 102818- struct sockaddr_storage address;
101233+ if (kmsg->msg_namelen < 0) 102819+ struct sockaddr_storage address = { };
101234+ return -EINVAL; 102820 int err, err2;
101235+ 102821 int fput_needed;
101236 if (kmsg->msg_namelen > sizeof(struct sockaddr_storage)) 102822
101237 kmsg->msg_namelen = sizeof(struct sockaddr_storage); 102823@@ -2065,7 +2131,7 @@ static int ___sys_sendmsg(struct socket *sock, struct msghdr __user *msg,
101238 return 0;
101239@@ -2047,7 +2117,7 @@ static int ___sys_sendmsg(struct socket *sock, struct msghdr __user *msg,
101240 * checking falls down on this. 102824 * checking falls down on this.
101241 */ 102825 */
101242 if (copy_from_user(ctl_buf, 102826 if (copy_from_user(ctl_buf,
@@ -101245,7 +102829,16 @@ index e83c416..f87df4c 100644
101245 ctl_len)) 102829 ctl_len))
101246 goto out_freectl; 102830 goto out_freectl;
101247 msg_sys->msg_control = ctl_buf; 102831 msg_sys->msg_control = ctl_buf;
101248@@ -2227,7 +2297,7 @@ static int ___sys_recvmsg(struct socket *sock, struct msghdr __user *msg, 102832@@ -2216,7 +2282,7 @@ static int ___sys_recvmsg(struct socket *sock, struct msghdr __user *msg,
102833 int err, total_len, len;
102834
102835 /* kernel mode address */
102836- struct sockaddr_storage addr;
102837+ struct sockaddr_storage addr = { };
102838
102839 /* user mode address pointers */
102840 struct sockaddr __user *uaddr;
102841@@ -2245,7 +2311,7 @@ static int ___sys_recvmsg(struct socket *sock, struct msghdr __user *msg,
101249 /* Save the user-mode address (verify_iovec will change the 102842 /* Save the user-mode address (verify_iovec will change the
101250 * kernel msghdr to use the kernel address space) 102843 * kernel msghdr to use the kernel address space)
101251 */ 102844 */
@@ -101254,7 +102847,7 @@ index e83c416..f87df4c 100644
101254 uaddr_len = COMPAT_NAMELEN(msg); 102847 uaddr_len = COMPAT_NAMELEN(msg);
101255 if (MSG_CMSG_COMPAT & flags) 102848 if (MSG_CMSG_COMPAT & flags)
101256 err = verify_compat_iovec(msg_sys, iov, &addr, VERIFY_WRITE); 102849 err = verify_compat_iovec(msg_sys, iov, &addr, VERIFY_WRITE);
101257@@ -2871,7 +2941,7 @@ static int ethtool_ioctl(struct net *net, struct compat_ifreq __user *ifr32) 102850@@ -2889,7 +2955,7 @@ static int ethtool_ioctl(struct net *net, struct compat_ifreq __user *ifr32)
101258 ifr = compat_alloc_user_space(buf_size); 102851 ifr = compat_alloc_user_space(buf_size);
101259 rxnfc = (void __user *)ifr + ALIGN(sizeof(struct ifreq), 8); 102852 rxnfc = (void __user *)ifr + ALIGN(sizeof(struct ifreq), 8);
101260 102853
@@ -101263,7 +102856,7 @@ index e83c416..f87df4c 100644
101263 return -EFAULT; 102856 return -EFAULT;
101264 102857
101265 if (put_user(convert_in ? rxnfc : compat_ptr(data), 102858 if (put_user(convert_in ? rxnfc : compat_ptr(data),
101266@@ -2985,14 +3055,14 @@ static int bond_ioctl(struct net *net, unsigned int cmd, 102859@@ -3000,7 +3066,7 @@ static int bond_ioctl(struct net *net, unsigned int cmd,
101267 old_fs = get_fs(); 102860 old_fs = get_fs();
101268 set_fs(KERNEL_DS); 102861 set_fs(KERNEL_DS);
101269 err = dev_ioctl(net, cmd, 102862 err = dev_ioctl(net, cmd,
@@ -101272,15 +102865,7 @@ index e83c416..f87df4c 100644
101272 set_fs(old_fs); 102865 set_fs(old_fs);
101273 102866
101274 return err; 102867 return err;
101275 case SIOCBONDSLAVEINFOQUERY: 102868@@ -3093,7 +3159,7 @@ static int compat_sioc_ifmap(struct net *net, unsigned int cmd,
101276 case SIOCBONDINFOQUERY:
101277 uifr = compat_alloc_user_space(sizeof(*uifr));
101278- if (copy_in_user(&uifr->ifr_name, &ifr32->ifr_name, IFNAMSIZ))
101279+ if (copy_in_user(uifr->ifr_name, ifr32->ifr_name, IFNAMSIZ))
101280 return -EFAULT;
101281
101282 if (get_user(data, &ifr32->ifr_ifru.ifru_data))
101283@@ -3094,7 +3164,7 @@ static int compat_sioc_ifmap(struct net *net, unsigned int cmd,
101284 102869
101285 old_fs = get_fs(); 102870 old_fs = get_fs();
101286 set_fs(KERNEL_DS); 102871 set_fs(KERNEL_DS);
@@ -101289,7 +102874,7 @@ index e83c416..f87df4c 100644
101289 set_fs(old_fs); 102874 set_fs(old_fs);
101290 102875
101291 if (cmd == SIOCGIFMAP && !err) { 102876 if (cmd == SIOCGIFMAP && !err) {
101292@@ -3199,7 +3269,7 @@ static int routing_ioctl(struct net *net, struct socket *sock, 102877@@ -3177,7 +3243,7 @@ static int routing_ioctl(struct net *net, struct socket *sock,
101293 ret |= get_user(rtdev, &(ur4->rt_dev)); 102878 ret |= get_user(rtdev, &(ur4->rt_dev));
101294 if (rtdev) { 102879 if (rtdev) {
101295 ret |= copy_from_user(devname, compat_ptr(rtdev), 15); 102880 ret |= copy_from_user(devname, compat_ptr(rtdev), 15);
@@ -101298,7 +102883,7 @@ index e83c416..f87df4c 100644
101298 devname[15] = 0; 102883 devname[15] = 0;
101299 } else 102884 } else
101300 r4.rt_dev = NULL; 102885 r4.rt_dev = NULL;
101301@@ -3425,8 +3495,8 @@ int kernel_getsockopt(struct socket *sock, int level, int optname, 102886@@ -3404,8 +3470,8 @@ int kernel_getsockopt(struct socket *sock, int level, int optname,
101302 int __user *uoptlen; 102887 int __user *uoptlen;
101303 int err; 102888 int err;
101304 102889
@@ -101309,7 +102894,7 @@ index e83c416..f87df4c 100644
101309 102894
101310 set_fs(KERNEL_DS); 102895 set_fs(KERNEL_DS);
101311 if (level == SOL_SOCKET) 102896 if (level == SOL_SOCKET)
101312@@ -3446,7 +3516,7 @@ int kernel_setsockopt(struct socket *sock, int level, int optname, 102897@@ -3425,7 +3491,7 @@ int kernel_setsockopt(struct socket *sock, int level, int optname,
101313 char __user *uoptval; 102898 char __user *uoptval;
101314 int err; 102899 int err;
101315 102900
@@ -101318,26 +102903,8 @@ index e83c416..f87df4c 100644
101318 102903
101319 set_fs(KERNEL_DS); 102904 set_fs(KERNEL_DS);
101320 if (level == SOL_SOCKET) 102905 if (level == SOL_SOCKET)
101321diff --git a/net/sunrpc/auth_gss/auth_gss.c b/net/sunrpc/auth_gss/auth_gss.c
101322index a642fd616..1eebf22 100644
101323--- a/net/sunrpc/auth_gss/auth_gss.c
101324+++ b/net/sunrpc/auth_gss/auth_gss.c
101325@@ -500,10 +500,12 @@ gss_alloc_msg(struct gss_auth *gss_auth,
101326 default:
101327 err = gss_encode_v1_msg(gss_msg, service_name, gss_auth->target_name);
101328 if (err)
101329- goto err_free_msg;
101330+ goto err_put_pipe_version;
101331 };
101332 kref_get(&gss_auth->kref);
101333 return gss_msg;
101334+err_put_pipe_version:
101335+ put_pipe_version(gss_auth->net);
101336 err_free_msg:
101337 kfree(gss_msg);
101338 err:
101339diff --git a/net/sunrpc/auth_gss/svcauth_gss.c b/net/sunrpc/auth_gss/svcauth_gss.c 102906diff --git a/net/sunrpc/auth_gss/svcauth_gss.c b/net/sunrpc/auth_gss/svcauth_gss.c
101340index 1b94a9c..496f7f5 100644 102907index 0f73f45..a96aa52 100644
101341--- a/net/sunrpc/auth_gss/svcauth_gss.c 102908--- a/net/sunrpc/auth_gss/svcauth_gss.c
101342+++ b/net/sunrpc/auth_gss/svcauth_gss.c 102909+++ b/net/sunrpc/auth_gss/svcauth_gss.c
101343@@ -1140,7 +1140,7 @@ static int gss_proxy_save_rsc(struct cache_detail *cd, 102910@@ -1140,7 +1140,7 @@ static int gss_proxy_save_rsc(struct cache_detail *cd,
@@ -101358,40 +102925,21 @@ index 1b94a9c..496f7f5 100644
101358 102925
101359 /* make a copy for the caller */ 102926 /* make a copy for the caller */
101360 *handle = ctxh; 102927 *handle = ctxh;
101361diff --git a/net/sunrpc/backchannel_rqst.c b/net/sunrpc/backchannel_rqst.c 102928diff --git a/net/sunrpc/cache.c b/net/sunrpc/cache.c
101362index 890a299..e860d4f 100644 102929index ae333c1..18521f0 100644
101363--- a/net/sunrpc/backchannel_rqst.c 102930--- a/net/sunrpc/cache.c
101364+++ b/net/sunrpc/backchannel_rqst.c 102931+++ b/net/sunrpc/cache.c
101365@@ -64,7 +64,6 @@ static void xprt_free_allocation(struct rpc_rqst *req) 102932@@ -1609,7 +1609,7 @@ static int create_cache_proc_entries(struct cache_detail *cd, struct net *net)
101366 free_page((unsigned long)xbufp->head[0].iov_base); 102933 struct sunrpc_net *sn;
101367 xbufp = &req->rq_snd_buf; 102934
101368 free_page((unsigned long)xbufp->head[0].iov_base); 102935 sn = net_generic(net, sunrpc_net_id);
101369- list_del(&req->rq_bc_pa_list); 102936- cd->u.procfs.proc_ent = proc_mkdir(cd->name, sn->proc_net_rpc);
101370 kfree(req); 102937+ cd->u.procfs.proc_ent = proc_mkdir_restrict(cd->name, sn->proc_net_rpc);
101371 } 102938 if (cd->u.procfs.proc_ent == NULL)
101372 102939 goto out_nomem;
101373@@ -168,8 +167,10 @@ out_free: 102940 cd->u.procfs.channel_ent = NULL;
101374 /*
101375 * Memory allocation failed, free the temporary list
101376 */
101377- list_for_each_entry_safe(req, tmp, &tmp_list, rq_bc_pa_list)
101378+ list_for_each_entry_safe(req, tmp, &tmp_list, rq_bc_pa_list) {
101379+ list_del(&req->rq_bc_pa_list);
101380 xprt_free_allocation(req);
101381+ }
101382
101383 dprintk("RPC: setup backchannel transport failed\n");
101384 return -ENOMEM;
101385@@ -198,6 +199,7 @@ void xprt_destroy_backchannel(struct rpc_xprt *xprt, unsigned int max_reqs)
101386 xprt_dec_alloc_count(xprt, max_reqs);
101387 list_for_each_entry_safe(req, tmp, &xprt->bc_pa_list, rq_bc_pa_list) {
101388 dprintk("RPC: req=%p\n", req);
101389+ list_del(&req->rq_bc_pa_list);
101390 xprt_free_allocation(req);
101391 if (--max_reqs == 0)
101392 break;
101393diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c 102941diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
101394index e726e16..393c39e 100644 102942index 3ea5cda..bfb3e08 100644
101395--- a/net/sunrpc/clnt.c 102943--- a/net/sunrpc/clnt.c
101396+++ b/net/sunrpc/clnt.c 102944+++ b/net/sunrpc/clnt.c
101397@@ -1415,7 +1415,9 @@ call_start(struct rpc_task *task) 102945@@ -1415,7 +1415,9 @@ call_start(struct rpc_task *task)
@@ -101421,11 +102969,24 @@ index ff3cc4b..7612a9e 100644
101421 } 102969 }
101422 #else 102970 #else
101423 static inline void rpc_task_set_debuginfo(struct rpc_task *task) 102971 static inline void rpc_task_set_debuginfo(struct rpc_task *task)
102972diff --git a/net/sunrpc/stats.c b/net/sunrpc/stats.c
102973index 5453049..465669a 100644
102974--- a/net/sunrpc/stats.c
102975+++ b/net/sunrpc/stats.c
102976@@ -267,7 +267,7 @@ int rpc_proc_init(struct net *net)
102977
102978 dprintk("RPC: registering /proc/net/rpc\n");
102979 sn = net_generic(net, sunrpc_net_id);
102980- sn->proc_net_rpc = proc_mkdir("rpc", net->proc_net);
102981+ sn->proc_net_rpc = proc_mkdir_restrict("rpc", net->proc_net);
102982 if (sn->proc_net_rpc == NULL)
102983 return -ENOMEM;
102984
101424diff --git a/net/sunrpc/svc.c b/net/sunrpc/svc.c 102985diff --git a/net/sunrpc/svc.c b/net/sunrpc/svc.c
101425index e7fbe36..8052603 100644 102986index 5de6801..b4e330d 100644
101426--- a/net/sunrpc/svc.c 102987--- a/net/sunrpc/svc.c
101427+++ b/net/sunrpc/svc.c 102988+++ b/net/sunrpc/svc.c
101428@@ -1158,7 +1158,9 @@ svc_process_common(struct svc_rqst *rqstp, struct kvec *argv, struct kvec *resv) 102989@@ -1167,7 +1167,9 @@ svc_process_common(struct svc_rqst *rqstp, struct kvec *argv, struct kvec *resv)
101429 svc_putnl(resv, RPC_SUCCESS); 102990 svc_putnl(resv, RPC_SUCCESS);
101430 102991
101431 /* Bump per-procedure stats counter */ 102992 /* Bump per-procedure stats counter */
@@ -101676,23 +103237,23 @@ index e7000be..e3b0ba7 100644
101676 int mode = (table->mode >> 6) & 7; 103237 int mode = (table->mode >> 6) & 7;
101677 return (mode << 6) | (mode << 3) | mode; 103238 return (mode << 6) | (mode << 3) | mode;
101678diff --git a/net/tipc/subscr.c b/net/tipc/subscr.c 103239diff --git a/net/tipc/subscr.c b/net/tipc/subscr.c
101679index d38bb45..38d5df5 100644 103240index 6424372..afd36e9 100644
101680--- a/net/tipc/subscr.c 103241--- a/net/tipc/subscr.c
101681+++ b/net/tipc/subscr.c 103242+++ b/net/tipc/subscr.c
101682@@ -98,7 +98,7 @@ static void subscr_send_event(struct tipc_subscription *sub, u32 found_lower, 103243@@ -97,7 +97,7 @@ static void subscr_send_event(struct tipc_subscription *sub, u32 found_lower,
103244 struct tipc_subscriber *subscriber = sub->subscriber;
101683 struct kvec msg_sect; 103245 struct kvec msg_sect;
101684 int ret;
101685 103246
101686- msg_sect.iov_base = (void *)&sub->evt; 103247- msg_sect.iov_base = (void *)&sub->evt;
101687+ msg_sect.iov_base = &sub->evt; 103248+ msg_sect.iov_base = &sub->evt;
101688 msg_sect.iov_len = sizeof(struct tipc_event); 103249 msg_sect.iov_len = sizeof(struct tipc_event);
101689
101690 sub->evt.event = htohl(event, sub->swap); 103250 sub->evt.event = htohl(event, sub->swap);
103251 sub->evt.found_lower = htohl(found_lower, sub->swap);
101691diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c 103252diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c
101692index d7c1ac6..8e92764 100644 103253index 94404f1..5782191 100644
101693--- a/net/unix/af_unix.c 103254--- a/net/unix/af_unix.c
101694+++ b/net/unix/af_unix.c 103255+++ b/net/unix/af_unix.c
101695@@ -789,6 +789,12 @@ static struct sock *unix_find_other(struct net *net, 103256@@ -791,6 +791,12 @@ static struct sock *unix_find_other(struct net *net,
101696 err = -ECONNREFUSED; 103257 err = -ECONNREFUSED;
101697 if (!S_ISSOCK(inode->i_mode)) 103258 if (!S_ISSOCK(inode->i_mode))
101698 goto put_fail; 103259 goto put_fail;
@@ -101705,7 +103266,7 @@ index d7c1ac6..8e92764 100644
101705 u = unix_find_socket_byinode(inode); 103266 u = unix_find_socket_byinode(inode);
101706 if (!u) 103267 if (!u)
101707 goto put_fail; 103268 goto put_fail;
101708@@ -809,6 +815,13 @@ static struct sock *unix_find_other(struct net *net, 103269@@ -811,6 +817,13 @@ static struct sock *unix_find_other(struct net *net,
101709 if (u) { 103270 if (u) {
101710 struct dentry *dentry; 103271 struct dentry *dentry;
101711 dentry = unix_sk(u)->path.dentry; 103272 dentry = unix_sk(u)->path.dentry;
@@ -101719,7 +103280,7 @@ index d7c1ac6..8e92764 100644
101719 if (dentry) 103280 if (dentry)
101720 touch_atime(&unix_sk(u)->path); 103281 touch_atime(&unix_sk(u)->path);
101721 } else 103282 } else
101722@@ -842,12 +855,18 @@ static int unix_mknod(const char *sun_path, umode_t mode, struct path *res) 103283@@ -844,12 +857,18 @@ static int unix_mknod(const char *sun_path, umode_t mode, struct path *res)
101723 */ 103284 */
101724 err = security_path_mknod(&path, dentry, mode, 0); 103285 err = security_path_mknod(&path, dentry, mode, 0);
101725 if (!err) { 103286 if (!err) {
@@ -101738,7 +103299,7 @@ index d7c1ac6..8e92764 100644
101738 done_path_create(&path, dentry); 103299 done_path_create(&path, dentry);
101739 return err; 103300 return err;
101740 } 103301 }
101741@@ -2335,9 +2354,13 @@ static int unix_seq_show(struct seq_file *seq, void *v) 103302@@ -2344,9 +2363,13 @@ static int unix_seq_show(struct seq_file *seq, void *v)
101742 seq_puts(seq, "Num RefCount Protocol Flags Type St " 103303 seq_puts(seq, "Num RefCount Protocol Flags Type St "
101743 "Inode Path\n"); 103304 "Inode Path\n");
101744 else { 103305 else {
@@ -101753,7 +103314,7 @@ index d7c1ac6..8e92764 100644
101753 103314
101754 seq_printf(seq, "%pK: %08X %08X %08X %04X %02X %5lu", 103315 seq_printf(seq, "%pK: %08X %08X %08X %04X %02X %5lu",
101755 s, 103316 s,
101756@@ -2364,8 +2387,10 @@ static int unix_seq_show(struct seq_file *seq, void *v) 103317@@ -2373,8 +2396,10 @@ static int unix_seq_show(struct seq_file *seq, void *v)
101757 } 103318 }
101758 for ( ; i < len; i++) 103319 for ( ; i < len; i++)
101759 seq_putc(seq, u->addr->name->sun_path[i]); 103320 seq_putc(seq, u->addr->name->sun_path[i]);
@@ -101907,11 +103468,24 @@ index 4323952..a06dfe1 100644
101907 }; 103468 };
101908 103469
101909 void __init x25_register_sysctl(void) 103470 void __init x25_register_sysctl(void)
103471diff --git a/net/x25/x25_proc.c b/net/x25/x25_proc.c
103472index 0917f04..f4e3d8c 100644
103473--- a/net/x25/x25_proc.c
103474+++ b/net/x25/x25_proc.c
103475@@ -209,7 +209,7 @@ static const struct file_operations x25_seq_forward_fops = {
103476
103477 int __init x25_proc_init(void)
103478 {
103479- if (!proc_mkdir("x25", init_net.proc_net))
103480+ if (!proc_mkdir_restrict("x25", init_net.proc_net))
103481 return -ENOMEM;
103482
103483 if (!proc_create("x25/route", S_IRUGO, init_net.proc_net,
101910diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c 103484diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
101911index 9a91f74..502f6605 100644 103485index 1d5c7bf..f762f1f 100644
101912--- a/net/xfrm/xfrm_policy.c 103486--- a/net/xfrm/xfrm_policy.c
101913+++ b/net/xfrm/xfrm_policy.c 103487+++ b/net/xfrm/xfrm_policy.c
101914@@ -332,7 +332,7 @@ static void xfrm_policy_kill(struct xfrm_policy *policy) 103488@@ -327,7 +327,7 @@ static void xfrm_policy_kill(struct xfrm_policy *policy)
101915 { 103489 {
101916 policy->walk.dead = 1; 103490 policy->walk.dead = 1;
101917 103491
@@ -101920,7 +103494,7 @@ index 9a91f74..502f6605 100644
101920 103494
101921 if (del_timer(&policy->polq.hold_timer)) 103495 if (del_timer(&policy->polq.hold_timer))
101922 xfrm_pol_put(policy); 103496 xfrm_pol_put(policy);
101923@@ -660,7 +660,7 @@ int xfrm_policy_insert(int dir, struct xfrm_policy *policy, int excl) 103497@@ -661,7 +661,7 @@ int xfrm_policy_insert(int dir, struct xfrm_policy *policy, int excl)
101924 hlist_add_head(&policy->bydst, chain); 103498 hlist_add_head(&policy->bydst, chain);
101925 xfrm_pol_hold(policy); 103499 xfrm_pol_hold(policy);
101926 net->xfrm.policy_count[dir]++; 103500 net->xfrm.policy_count[dir]++;
@@ -101929,43 +103503,16 @@ index 9a91f74..502f6605 100644
101929 103503
101930 /* After previous checking, family can either be AF_INET or AF_INET6 */ 103504 /* After previous checking, family can either be AF_INET or AF_INET6 */
101931 if (policy->family == AF_INET) 103505 if (policy->family == AF_INET)
101932@@ -1636,7 +1636,7 @@ free_dst: 103506@@ -1761,7 +1761,7 @@ xfrm_resolve_and_create_bundle(struct xfrm_policy **pols, int num_pols,
101933 goto out;
101934 }
101935
101936-static int inline
101937+static inline int
101938 xfrm_dst_alloc_copy(void **target, const void *src, int size)
101939 {
101940 if (!*target) {
101941@@ -1648,7 +1648,7 @@ xfrm_dst_alloc_copy(void **target, const void *src, int size)
101942 return 0;
101943 }
101944
101945-static int inline
101946+static inline int
101947 xfrm_dst_update_parent(struct dst_entry *dst, const struct xfrm_selector *sel)
101948 {
101949 #ifdef CONFIG_XFRM_SUB_POLICY
101950@@ -1660,7 +1660,7 @@ xfrm_dst_update_parent(struct dst_entry *dst, const struct xfrm_selector *sel)
101951 #endif
101952 }
101953
101954-static int inline
101955+static inline int
101956 xfrm_dst_update_origin(struct dst_entry *dst, const struct flowi *fl)
101957 {
101958 #ifdef CONFIG_XFRM_SUB_POLICY
101959@@ -1754,7 +1754,7 @@ xfrm_resolve_and_create_bundle(struct xfrm_policy **pols, int num_pols,
101960 103507
101961 xdst->num_pols = num_pols; 103508 xdst->num_pols = num_pols;
101962 memcpy(xdst->pols, pols, sizeof(struct xfrm_policy*) * num_pols); 103509 memcpy(xdst->pols, pols, sizeof(struct xfrm_policy *) * num_pols);
101963- xdst->policy_genid = atomic_read(&pols[0]->genid); 103510- xdst->policy_genid = atomic_read(&pols[0]->genid);
101964+ xdst->policy_genid = atomic_read_unchecked(&pols[0]->genid); 103511+ xdst->policy_genid = atomic_read_unchecked(&pols[0]->genid);
101965 103512
101966 return xdst; 103513 return xdst;
101967 } 103514 }
101968@@ -2582,11 +2582,12 @@ void xfrm_garbage_collect(struct net *net) 103515@@ -2572,11 +2572,12 @@ void xfrm_garbage_collect(struct net *net)
101969 } 103516 }
101970 EXPORT_SYMBOL(xfrm_garbage_collect); 103517 EXPORT_SYMBOL(xfrm_garbage_collect);
101971 103518
@@ -101979,7 +103526,7 @@ index 9a91f74..502f6605 100644
101979 103526
101980 static void xfrm_init_pmtu(struct dst_entry *dst) 103527 static void xfrm_init_pmtu(struct dst_entry *dst)
101981 { 103528 {
101982@@ -2636,7 +2637,7 @@ static int xfrm_bundle_ok(struct xfrm_dst *first) 103529@@ -2626,7 +2627,7 @@ static int xfrm_bundle_ok(struct xfrm_dst *first)
101983 if (xdst->xfrm_genid != dst->xfrm->genid) 103530 if (xdst->xfrm_genid != dst->xfrm->genid)
101984 return 0; 103531 return 0;
101985 if (xdst->num_pols > 0 && 103532 if (xdst->num_pols > 0 &&
@@ -101988,7 +103535,7 @@ index 9a91f74..502f6605 100644
101988 return 0; 103535 return 0;
101989 103536
101990 mtu = dst_mtu(dst->child); 103537 mtu = dst_mtu(dst->child);
101991@@ -2724,8 +2725,6 @@ int xfrm_policy_register_afinfo(struct xfrm_policy_afinfo *afinfo) 103538@@ -2714,8 +2715,6 @@ int xfrm_policy_register_afinfo(struct xfrm_policy_afinfo *afinfo)
101992 dst_ops->link_failure = xfrm_link_failure; 103539 dst_ops->link_failure = xfrm_link_failure;
101993 if (likely(dst_ops->neigh_lookup == NULL)) 103540 if (likely(dst_ops->neigh_lookup == NULL))
101994 dst_ops->neigh_lookup = xfrm_neigh_lookup; 103541 dst_ops->neigh_lookup = xfrm_neigh_lookup;
@@ -101997,7 +103544,7 @@ index 9a91f74..502f6605 100644
101997 rcu_assign_pointer(xfrm_policy_afinfo[afinfo->family], afinfo); 103544 rcu_assign_pointer(xfrm_policy_afinfo[afinfo->family], afinfo);
101998 } 103545 }
101999 spin_unlock(&xfrm_policy_afinfo_lock); 103546 spin_unlock(&xfrm_policy_afinfo_lock);
102000@@ -2779,7 +2778,6 @@ int xfrm_policy_unregister_afinfo(struct xfrm_policy_afinfo *afinfo) 103547@@ -2769,7 +2768,6 @@ int xfrm_policy_unregister_afinfo(struct xfrm_policy_afinfo *afinfo)
102001 dst_ops->check = NULL; 103548 dst_ops->check = NULL;
102002 dst_ops->negative_advice = NULL; 103549 dst_ops->negative_advice = NULL;
102003 dst_ops->link_failure = NULL; 103550 dst_ops->link_failure = NULL;
@@ -102005,7 +103552,7 @@ index 9a91f74..502f6605 100644
102005 } 103552 }
102006 return err; 103553 return err;
102007 } 103554 }
102008@@ -3162,7 +3160,7 @@ static int xfrm_policy_migrate(struct xfrm_policy *pol, 103555@@ -3159,7 +3157,7 @@ static int xfrm_policy_migrate(struct xfrm_policy *pol,
102009 sizeof(pol->xfrm_vec[i].saddr)); 103556 sizeof(pol->xfrm_vec[i].saddr));
102010 pol->xfrm_vec[i].encap_family = mp->new_family; 103557 pol->xfrm_vec[i].encap_family = mp->new_family;
102011 /* flush bundles */ 103558 /* flush bundles */
@@ -102015,10 +103562,10 @@ index 9a91f74..502f6605 100644
102015 } 103562 }
102016 103563
102017diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c 103564diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c
102018index 68c2f35..9eb05ca 100644 103565index 40f1b3e..e33fdfa 100644
102019--- a/net/xfrm/xfrm_state.c 103566--- a/net/xfrm/xfrm_state.c
102020+++ b/net/xfrm/xfrm_state.c 103567+++ b/net/xfrm/xfrm_state.c
102021@@ -174,12 +174,14 @@ int xfrm_register_type(const struct xfrm_type *type, unsigned short family) 103568@@ -172,12 +172,14 @@ int xfrm_register_type(const struct xfrm_type *type, unsigned short family)
102022 103569
102023 if (unlikely(afinfo == NULL)) 103570 if (unlikely(afinfo == NULL))
102024 return -EAFNOSUPPORT; 103571 return -EAFNOSUPPORT;
@@ -102036,7 +103583,7 @@ index 68c2f35..9eb05ca 100644
102036 err = -EEXIST; 103583 err = -EEXIST;
102037 spin_unlock_bh(&xfrm_type_lock); 103584 spin_unlock_bh(&xfrm_type_lock);
102038 xfrm_state_put_afinfo(afinfo); 103585 xfrm_state_put_afinfo(afinfo);
102039@@ -195,13 +197,16 @@ int xfrm_unregister_type(const struct xfrm_type *type, unsigned short family) 103586@@ -193,13 +195,16 @@ int xfrm_unregister_type(const struct xfrm_type *type, unsigned short family)
102040 103587
102041 if (unlikely(afinfo == NULL)) 103588 if (unlikely(afinfo == NULL))
102042 return -EAFNOSUPPORT; 103589 return -EAFNOSUPPORT;
@@ -102055,7 +103602,7 @@ index 68c2f35..9eb05ca 100644
102055 spin_unlock_bh(&xfrm_type_lock); 103602 spin_unlock_bh(&xfrm_type_lock);
102056 xfrm_state_put_afinfo(afinfo); 103603 xfrm_state_put_afinfo(afinfo);
102057 return err; 103604 return err;
102058@@ -211,7 +216,6 @@ EXPORT_SYMBOL(xfrm_unregister_type); 103605@@ -209,7 +214,6 @@ EXPORT_SYMBOL(xfrm_unregister_type);
102059 static const struct xfrm_type *xfrm_get_type(u8 proto, unsigned short family) 103606 static const struct xfrm_type *xfrm_get_type(u8 proto, unsigned short family)
102060 { 103607 {
102061 struct xfrm_state_afinfo *afinfo; 103608 struct xfrm_state_afinfo *afinfo;
@@ -102063,7 +103610,7 @@ index 68c2f35..9eb05ca 100644
102063 const struct xfrm_type *type; 103610 const struct xfrm_type *type;
102064 int modload_attempted = 0; 103611 int modload_attempted = 0;
102065 103612
102066@@ -219,9 +223,8 @@ retry: 103613@@ -217,9 +221,8 @@ retry:
102067 afinfo = xfrm_state_get_afinfo(family); 103614 afinfo = xfrm_state_get_afinfo(family);
102068 if (unlikely(afinfo == NULL)) 103615 if (unlikely(afinfo == NULL))
102069 return NULL; 103616 return NULL;
@@ -102074,7 +103621,7 @@ index 68c2f35..9eb05ca 100644
102074 if (unlikely(type && !try_module_get(type->owner))) 103621 if (unlikely(type && !try_module_get(type->owner)))
102075 type = NULL; 103622 type = NULL;
102076 if (!type && !modload_attempted) { 103623 if (!type && !modload_attempted) {
102077@@ -255,7 +258,7 @@ int xfrm_register_mode(struct xfrm_mode *mode, int family) 103624@@ -253,7 +256,7 @@ int xfrm_register_mode(struct xfrm_mode *mode, int family)
102078 return -EAFNOSUPPORT; 103625 return -EAFNOSUPPORT;
102079 103626
102080 err = -EEXIST; 103627 err = -EEXIST;
@@ -102083,7 +103630,7 @@ index 68c2f35..9eb05ca 100644
102083 spin_lock_bh(&xfrm_mode_lock); 103630 spin_lock_bh(&xfrm_mode_lock);
102084 if (modemap[mode->encap]) 103631 if (modemap[mode->encap])
102085 goto out; 103632 goto out;
102086@@ -264,8 +267,10 @@ int xfrm_register_mode(struct xfrm_mode *mode, int family) 103633@@ -262,8 +265,10 @@ int xfrm_register_mode(struct xfrm_mode *mode, int family)
102087 if (!try_module_get(afinfo->owner)) 103634 if (!try_module_get(afinfo->owner))
102088 goto out; 103635 goto out;
102089 103636
@@ -102095,7 +103642,7 @@ index 68c2f35..9eb05ca 100644
102095 err = 0; 103642 err = 0;
102096 103643
102097 out: 103644 out:
102098@@ -289,10 +294,12 @@ int xfrm_unregister_mode(struct xfrm_mode *mode, int family) 103645@@ -287,10 +292,12 @@ int xfrm_unregister_mode(struct xfrm_mode *mode, int family)
102099 return -EAFNOSUPPORT; 103646 return -EAFNOSUPPORT;
102100 103647
102101 err = -ENOENT; 103648 err = -ENOENT;
@@ -102109,7 +103656,7 @@ index 68c2f35..9eb05ca 100644
102109 module_put(mode->afinfo->owner); 103656 module_put(mode->afinfo->owner);
102110 err = 0; 103657 err = 0;
102111 } 103658 }
102112@@ -1486,10 +1493,10 @@ EXPORT_SYMBOL(xfrm_find_acq_byseq); 103659@@ -1512,10 +1519,10 @@ EXPORT_SYMBOL(xfrm_find_acq_byseq);
102113 u32 xfrm_get_acqseq(void) 103660 u32 xfrm_get_acqseq(void)
102114 { 103661 {
102115 u32 res; 103662 u32 res;
@@ -102292,26 +103839,25 @@ index 078fe1d..fbdb363 100644
102292 fprintf(stderr, "fixdep: sizeof(int) != 4 or wrong endianness? %#x\n", 103839 fprintf(stderr, "fixdep: sizeof(int) != 4 or wrong endianness? %#x\n",
102293diff --git a/scripts/gcc-plugin.sh b/scripts/gcc-plugin.sh 103840diff --git a/scripts/gcc-plugin.sh b/scripts/gcc-plugin.sh
102294new file mode 100644 103841new file mode 100644
102295index 0000000..5e0222d 103842index 0000000..edcbc3a
102296--- /dev/null 103843--- /dev/null
102297+++ b/scripts/gcc-plugin.sh 103844+++ b/scripts/gcc-plugin.sh
102298@@ -0,0 +1,17 @@ 103845@@ -0,0 +1,16 @@
102299+#!/bin/bash 103846+#!/bin/bash
102300+plugincc=`$1 -E -shared - -o /dev/null -I\`$3 -print-file-name=plugin\`/include 2>&1 <<EOF 103847+srctree=$(dirname "$0")
102301+#include "gcc-plugin.h" 103848+gccplugins_dir=$($3 -print-file-name=plugin)
102302+#include "tree.h" 103849+plugincc=$($1 -E -shared - -o /dev/null -I${srctree}/../tools/gcc -I${gccplugins_dir}/include 2>&1 <<EOF
102303+#include "tm.h" 103850+#include "gcc-common.h"
102304+#include "rtl.h" 103851+#if BUILDING_GCC_VERSION >= 4008 || defined(ENABLE_BUILD_WITH_CXX)
102305+#ifdef ENABLE_BUILD_WITH_CXX
102306+#warning $2 103852+#warning $2
102307+#else 103853+#else
102308+#warning $1 103854+#warning $1
102309+#endif 103855+#endif
102310+EOF` 103856+EOF
103857+)
102311+if [ $? -eq 0 ] 103858+if [ $? -eq 0 ]
102312+then 103859+then
102313+ [[ "$plugincc" =~ "$1" ]] && echo "$1" 103860+ ( [[ "$plugincc" =~ "$1" ]] && echo "$1" ) || ( [[ "$plugincc" =~ "$2" ]] && echo "$2" )
102314+ [[ "$plugincc" =~ "$2" ]] && echo "$2"
102315+fi 103861+fi
102316diff --git a/scripts/headers_install.sh b/scripts/headers_install.sh 103862diff --git a/scripts/headers_install.sh b/scripts/headers_install.sh
102317index 5de5660..d3deb89 100644 103863index 5de5660..d3deb89 100644
@@ -102406,10 +103952,10 @@ index 25e5cb0..6e85821 100644
102406 sprintf(alias, "dmi*"); 103952 sprintf(alias, "dmi*");
102407 103953
102408diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c 103954diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
102409index 1785576..5e8e06a 100644 103955index 99a45fd..4b995a3 100644
102410--- a/scripts/mod/modpost.c 103956--- a/scripts/mod/modpost.c
102411+++ b/scripts/mod/modpost.c 103957+++ b/scripts/mod/modpost.c
102412@@ -941,6 +941,7 @@ enum mismatch { 103958@@ -945,6 +945,7 @@ enum mismatch {
102413 ANY_INIT_TO_ANY_EXIT, 103959 ANY_INIT_TO_ANY_EXIT,
102414 ANY_EXIT_TO_ANY_INIT, 103960 ANY_EXIT_TO_ANY_INIT,
102415 EXPORT_TO_INIT_EXIT, 103961 EXPORT_TO_INIT_EXIT,
@@ -102417,7 +103963,7 @@ index 1785576..5e8e06a 100644
102417 }; 103963 };
102418 103964
102419 struct sectioncheck { 103965 struct sectioncheck {
102420@@ -1027,6 +1028,12 @@ const struct sectioncheck sectioncheck[] = { 103966@@ -1031,6 +1032,12 @@ const struct sectioncheck sectioncheck[] = {
102421 .tosec = { INIT_SECTIONS, EXIT_SECTIONS, NULL }, 103967 .tosec = { INIT_SECTIONS, EXIT_SECTIONS, NULL },
102422 .mismatch = EXPORT_TO_INIT_EXIT, 103968 .mismatch = EXPORT_TO_INIT_EXIT,
102423 .symbol_white_list = { DEFAULT_SYMBOL_WHITE_LIST, NULL }, 103969 .symbol_white_list = { DEFAULT_SYMBOL_WHITE_LIST, NULL },
@@ -102430,7 +103976,7 @@ index 1785576..5e8e06a 100644
102430 } 103976 }
102431 }; 103977 };
102432 103978
102433@@ -1147,10 +1154,10 @@ static Elf_Sym *find_elf_symbol(struct elf_info *elf, Elf64_Sword addr, 103979@@ -1151,10 +1158,10 @@ static Elf_Sym *find_elf_symbol(struct elf_info *elf, Elf64_Sword addr,
102434 continue; 103980 continue;
102435 if (ELF_ST_TYPE(sym->st_info) == STT_SECTION) 103981 if (ELF_ST_TYPE(sym->st_info) == STT_SECTION)
102436 continue; 103982 continue;
@@ -102443,7 +103989,7 @@ index 1785576..5e8e06a 100644
102443 if (d < 0) 103989 if (d < 0)
102444 d = addr - sym->st_value; 103990 d = addr - sym->st_value;
102445 if (d < distance) { 103991 if (d < distance) {
102446@@ -1428,6 +1435,14 @@ static void report_sec_mismatch(const char *modname, 103992@@ -1432,6 +1439,14 @@ static void report_sec_mismatch(const char *modname,
102447 tosym, prl_to, prl_to, tosym); 103993 tosym, prl_to, prl_to, tosym);
102448 free(prl_to); 103994 free(prl_to);
102449 break; 103995 break;
@@ -102458,7 +104004,7 @@ index 1785576..5e8e06a 100644
102458 } 104004 }
102459 fprintf(stderr, "\n"); 104005 fprintf(stderr, "\n");
102460 } 104006 }
102461@@ -1662,7 +1677,7 @@ static void section_rel(const char *modname, struct elf_info *elf, 104007@@ -1679,7 +1694,7 @@ static void section_rel(const char *modname, struct elf_info *elf,
102462 static void check_sec_ref(struct module *mod, const char *modname, 104008 static void check_sec_ref(struct module *mod, const char *modname,
102463 struct elf_info *elf) 104009 struct elf_info *elf)
102464 { 104010 {
@@ -102467,7 +104013,7 @@ index 1785576..5e8e06a 100644
102467 Elf_Shdr *sechdrs = elf->sechdrs; 104013 Elf_Shdr *sechdrs = elf->sechdrs;
102468 104014
102469 /* Walk through all sections */ 104015 /* Walk through all sections */
102470@@ -1781,7 +1796,7 @@ void __attribute__((format(printf, 2, 3))) buf_printf(struct buffer *buf, 104016@@ -1798,7 +1813,7 @@ void __attribute__((format(printf, 2, 3))) buf_printf(struct buffer *buf,
102471 va_end(ap); 104017 va_end(ap);
102472 } 104018 }
102473 104019
@@ -102476,7 +104022,7 @@ index 1785576..5e8e06a 100644
102476 { 104022 {
102477 if (buf->size - buf->pos < len) { 104023 if (buf->size - buf->pos < len) {
102478 buf->size += len + SZ; 104024 buf->size += len + SZ;
102479@@ -2000,7 +2015,7 @@ static void write_if_changed(struct buffer *b, const char *fname) 104025@@ -2017,7 +2032,7 @@ static void write_if_changed(struct buffer *b, const char *fname)
102480 if (fstat(fileno(file), &st) < 0) 104026 if (fstat(fileno(file), &st) < 0)
102481 goto close_write; 104027 goto close_write;
102482 104028
@@ -102537,10 +104083,10 @@ index 0865b3e..7235dd4 100644
102537 __ksymtab_gpl : { *(SORT(___ksymtab_gpl+*)) } 104083 __ksymtab_gpl : { *(SORT(___ksymtab_gpl+*)) }
102538 __ksymtab_unused : { *(SORT(___ksymtab_unused+*)) } 104084 __ksymtab_unused : { *(SORT(___ksymtab_unused+*)) }
102539diff --git a/scripts/package/builddeb b/scripts/package/builddeb 104085diff --git a/scripts/package/builddeb b/scripts/package/builddeb
102540index 90e521f..e9eaf8f 100644 104086index f46e4dd..090e168 100644
102541--- a/scripts/package/builddeb 104087--- a/scripts/package/builddeb
102542+++ b/scripts/package/builddeb 104088+++ b/scripts/package/builddeb
102543@@ -281,6 +281,7 @@ fi 104089@@ -291,6 +291,7 @@ fi
102544 (cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl > "$objtree/debian/hdrsrcfiles") 104090 (cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl > "$objtree/debian/hdrsrcfiles")
102545 (cd $srctree; find arch/$SRCARCH/include include scripts -type f >> "$objtree/debian/hdrsrcfiles") 104091 (cd $srctree; find arch/$SRCARCH/include include scripts -type f >> "$objtree/debian/hdrsrcfiles")
102546 (cd $objtree; find arch/$SRCARCH/include Module.symvers include scripts -type f >> "$objtree/debian/hdrobjfiles") 104092 (cd $objtree; find arch/$SRCARCH/include Module.symvers include scripts -type f >> "$objtree/debian/hdrobjfiles")
@@ -102596,7 +104142,7 @@ index 8fac3fd..32ff38d 100644
102596 unsigned int secindex_strings; 104142 unsigned int secindex_strings;
102597 104143
102598diff --git a/security/Kconfig b/security/Kconfig 104144diff --git a/security/Kconfig b/security/Kconfig
102599index e9c6ac7..75578c4 100644 104145index beb86b5..1ea5a01 100644
102600--- a/security/Kconfig 104146--- a/security/Kconfig
102601+++ b/security/Kconfig 104147+++ b/security/Kconfig
102602@@ -4,6 +4,960 @@ 104148@@ -4,6 +4,960 @@
@@ -103179,7 +104725,7 @@ index e9c6ac7..75578c4 100644
103179+ 104725+
103180+config PAX_KERNEXEC 104726+config PAX_KERNEXEC
103181+ bool "Enforce non-executable kernel pages" 104727+ bool "Enforce non-executable kernel pages"
103182+ default y if GRKERNSEC_CONFIG_AUTO && (GRKERNSEC_CONFIG_VIRT_NONE || (GRKERNSEC_CONFIG_VIRT_EPT && GRKERNSEC_CONFIG_VIRT_GUEST) || (GRKERNSEC_CONFIG_VIRT_EPT && GRKERNSEC_CONFIG_VIRT_KVM)) 104728+ default y if GRKERNSEC_CONFIG_AUTO && (!X86 || GRKERNSEC_CONFIG_VIRT_NONE || (GRKERNSEC_CONFIG_VIRT_EPT && GRKERNSEC_CONFIG_VIRT_GUEST) || (GRKERNSEC_CONFIG_VIRT_EPT && GRKERNSEC_CONFIG_VIRT_KVM))
103183+ depends on (X86 || (ARM && (CPU_V6 || CPU_V6K || CPU_V7) && !(ARM_LPAE && MODULES))) && !XEN 104729+ depends on (X86 || (ARM && (CPU_V6 || CPU_V6K || CPU_V7) && !(ARM_LPAE && MODULES))) && !XEN
103184+ select PAX_PER_CPU_PGD if X86_64 || (X86_32 && X86_PAE) 104730+ select PAX_PER_CPU_PGD if X86_64 || (X86_32 && X86_PAE)
103185+ select PAX_KERNEXEC_PLUGIN if X86_64 104731+ select PAX_KERNEXEC_PLUGIN if X86_64
@@ -103410,7 +104956,7 @@ index e9c6ac7..75578c4 100644
103410+ 104956+
103411+config PAX_MEMORY_UDEREF 104957+config PAX_MEMORY_UDEREF
103412+ bool "Prevent invalid userland pointer dereference" 104958+ bool "Prevent invalid userland pointer dereference"
103413+ default y if GRKERNSEC_CONFIG_AUTO && !(X86_64 && GRKERNSEC_CONFIG_PRIORITY_PERF) && (GRKERNSEC_CONFIG_VIRT_NONE || GRKERNSEC_CONFIG_VIRT_EPT) 104959+ default y if GRKERNSEC_CONFIG_AUTO && !(X86_64 && GRKERNSEC_CONFIG_PRIORITY_PERF) && (!X86 || GRKERNSEC_CONFIG_VIRT_NONE || GRKERNSEC_CONFIG_VIRT_EPT)
103414+ depends on (X86 || (ARM && (CPU_V6 || CPU_V6K || CPU_V7) && !ARM_LPAE)) && !UML_X86 && !XEN 104960+ depends on (X86 || (ARM && (CPU_V6 || CPU_V6K || CPU_V7) && !ARM_LPAE)) && !UML_X86 && !XEN
103415+ select PAX_PER_CPU_PGD if X86_64 104961+ select PAX_PER_CPU_PGD if X86_64
103416+ help 104962+ help
@@ -103564,15 +105110,59 @@ index e9c6ac7..75578c4 100644
103564 config LSM_MMAP_MIN_ADDR 105110 config LSM_MMAP_MIN_ADDR
103565 int "Low address space for LSM to protect from user allocation" 105111 int "Low address space for LSM to protect from user allocation"
103566 depends on SECURITY && SECURITY_SELINUX 105112 depends on SECURITY && SECURITY_SELINUX
103567- default 32768 if ARM 105113- default 32768 if ARM || (ARM64 && COMPAT)
103568+ default 32768 if ALPHA || ARM || PARISC || SPARC32 105114+ default 32768 if ALPHA || ARM || (ARM64 && COMPAT) || PARISC || SPARC32
103569 default 65536 105115 default 65536
103570 help 105116 help
103571 This is the portion of low virtual memory which should be protected 105117 This is the portion of low virtual memory which should be protected
105118diff --git a/security/apparmor/file.c b/security/apparmor/file.c
105119index fdaa50c..2761dcb 100644
105120--- a/security/apparmor/file.c
105121+++ b/security/apparmor/file.c
105122@@ -348,8 +348,8 @@ static inline bool xindex_is_subset(u32 link, u32 target)
105123 int aa_path_link(struct aa_profile *profile, struct dentry *old_dentry,
105124 struct path *new_dir, struct dentry *new_dentry)
105125 {
105126- struct path link = { new_dir->mnt, new_dentry };
105127- struct path target = { new_dir->mnt, old_dentry };
105128+ struct path link = { .mnt = new_dir->mnt, .dentry = new_dentry };
105129+ struct path target = { .mnt = new_dir->mnt, .dentry = old_dentry };
105130 struct path_cond cond = {
105131 old_dentry->d_inode->i_uid,
105132 old_dentry->d_inode->i_mode
103572diff --git a/security/apparmor/lsm.c b/security/apparmor/lsm.c 105133diff --git a/security/apparmor/lsm.c b/security/apparmor/lsm.c
103573index 4257b7e..f0c9438 100644 105134index 4257b7e..2d0732d 100644
103574--- a/security/apparmor/lsm.c 105135--- a/security/apparmor/lsm.c
103575+++ b/security/apparmor/lsm.c 105136+++ b/security/apparmor/lsm.c
105137@@ -186,7 +186,7 @@ static int common_perm_dir_dentry(int op, struct path *dir,
105138 struct dentry *dentry, u32 mask,
105139 struct path_cond *cond)
105140 {
105141- struct path path = { dir->mnt, dentry };
105142+ struct path path = { .mnt = dir->mnt, .dentry = dentry };
105143
105144 return common_perm(op, &path, mask, cond);
105145 }
105146@@ -203,7 +203,7 @@ static int common_perm_dir_dentry(int op, struct path *dir,
105147 static int common_perm_mnt_dentry(int op, struct vfsmount *mnt,
105148 struct dentry *dentry, u32 mask)
105149 {
105150- struct path path = { mnt, dentry };
105151+ struct path path = { .mnt = mnt, .dentry = dentry };
105152 struct path_cond cond = { dentry->d_inode->i_uid,
105153 dentry->d_inode->i_mode
105154 };
105155@@ -325,8 +325,8 @@ static int apparmor_path_rename(struct path *old_dir, struct dentry *old_dentry,
105156
105157 profile = aa_current_profile();
105158 if (!unconfined(profile)) {
105159- struct path old_path = { old_dir->mnt, old_dentry };
105160- struct path new_path = { new_dir->mnt, new_dentry };
105161+ struct path old_path = { .mnt = old_dir->mnt, .dentry = old_dentry };
105162+ struct path new_path = { .mnt = new_dir->mnt, .dentry = new_dentry };
105163 struct path_cond cond = { old_dentry->d_inode->i_uid,
105164 old_dentry->d_inode->i_mode
105165 };
103576@@ -615,7 +615,7 @@ static int apparmor_task_setrlimit(struct task_struct *task, 105166@@ -615,7 +615,7 @@ static int apparmor_task_setrlimit(struct task_struct *task,
103577 return error; 105167 return error;
103578 } 105168 }
@@ -103630,7 +105220,7 @@ index b9d613e..f68305c 100644
103630 if (bprm->cap_effective) 105220 if (bprm->cap_effective)
103631 return 1; 105221 return 1;
103632diff --git a/security/integrity/ima/ima.h b/security/integrity/ima/ima.h 105222diff --git a/security/integrity/ima/ima.h b/security/integrity/ima/ima.h
103633index 0356e1d..72332ab 100644 105223index f79fa8b..6161868 100644
103634--- a/security/integrity/ima/ima.h 105224--- a/security/integrity/ima/ima.h
103635+++ b/security/integrity/ima/ima.h 105225+++ b/security/integrity/ima/ima.h
103636@@ -118,8 +118,8 @@ int ima_init_template(void); 105226@@ -118,8 +118,8 @@ int ima_init_template(void);
@@ -103658,7 +105248,7 @@ index c38bbce..f45133d 100644
103658 result = ima_alloc_init_template(NULL, file, filename, 105248 result = ima_alloc_init_template(NULL, file, filename,
103659 NULL, 0, &entry); 105249 NULL, 0, &entry);
103660diff --git a/security/integrity/ima/ima_fs.c b/security/integrity/ima/ima_fs.c 105250diff --git a/security/integrity/ima/ima_fs.c b/security/integrity/ima/ima_fs.c
103661index db01125..61f6597 100644 105251index 468a3ba..9af5cae 100644
103662--- a/security/integrity/ima/ima_fs.c 105252--- a/security/integrity/ima/ima_fs.c
103663+++ b/security/integrity/ima/ima_fs.c 105253+++ b/security/integrity/ima/ima_fs.c
103664@@ -28,12 +28,12 @@ 105254@@ -28,12 +28,12 @@
@@ -103812,23 +105402,6 @@ index cee72ce..e46074a 100644
103812 err: 105402 err:
103813 if (iov != iovstack) 105403 if (iov != iovstack)
103814 kfree(iov); 105404 kfree(iov);
103815diff --git a/security/keys/keyring.c b/security/keys/keyring.c
103816index d46cbc5..2fb2576 100644
103817--- a/security/keys/keyring.c
103818+++ b/security/keys/keyring.c
103819@@ -1000,7 +1000,11 @@ static int keyring_detect_cycle_iterator(const void *object,
103820
103821 kenter("{%d}", key->serial);
103822
103823- BUG_ON(key != ctx->match_data);
103824+ /* We might get a keyring with matching index-key that is nonetheless a
103825+ * different keyring. */
103826+ if (key != ctx->match_data)
103827+ return 0;
103828+
103829 ctx->result = ERR_PTR(-EDEADLK);
103830 return 1;
103831 }
103832diff --git a/security/min_addr.c b/security/min_addr.c 105405diff --git a/security/min_addr.c b/security/min_addr.c
103833index f728728..6457a0c 100644 105406index f728728..6457a0c 100644
103834--- a/security/min_addr.c 105407--- a/security/min_addr.c
@@ -103850,7 +105423,7 @@ index f728728..6457a0c 100644
103850 105423
103851 /* 105424 /*
103852diff --git a/security/security.c b/security/security.c 105425diff --git a/security/security.c b/security/security.c
103853index 15b6928..60d03ec 100644 105426index 919cad9..2127be1 100644
103854--- a/security/security.c 105427--- a/security/security.c
103855+++ b/security/security.c 105428+++ b/security/security.c
103856@@ -33,8 +33,8 @@ 105429@@ -33,8 +33,8 @@
@@ -103908,10 +105481,10 @@ index fc3e662..7844c60 100644
103908 lock = &avc_cache.slots_lock[hvalue]; 105481 lock = &avc_cache.slots_lock[hvalue];
103909 105482
103910diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c 105483diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
103911index 57b0b49..402063e 100644 105484index e294b86..eda45c55 100644
103912--- a/security/selinux/hooks.c 105485--- a/security/selinux/hooks.c
103913+++ b/security/selinux/hooks.c 105486+++ b/security/selinux/hooks.c
103914@@ -96,8 +96,6 @@ 105487@@ -95,8 +95,6 @@
103915 #include "audit.h" 105488 #include "audit.h"
103916 #include "avc_ss.h" 105489 #include "avc_ss.h"
103917 105490
@@ -103920,7 +105493,7 @@ index 57b0b49..402063e 100644
103920 /* SECMARK reference count */ 105493 /* SECMARK reference count */
103921 static atomic_t selinux_secmark_refcount = ATOMIC_INIT(0); 105494 static atomic_t selinux_secmark_refcount = ATOMIC_INIT(0);
103922 105495
103923@@ -5745,7 +5743,7 @@ static int selinux_key_getsecurity(struct key *key, char **_buffer) 105496@@ -5759,7 +5757,7 @@ static int selinux_key_getsecurity(struct key *key, char **_buffer)
103924 105497
103925 #endif 105498 #endif
103926 105499
@@ -103929,7 +105502,7 @@ index 57b0b49..402063e 100644
103929 .name = "selinux", 105502 .name = "selinux",
103930 105503
103931 .ptrace_access_check = selinux_ptrace_access_check, 105504 .ptrace_access_check = selinux_ptrace_access_check,
103932@@ -6098,6 +6096,9 @@ static void selinux_nf_ip_exit(void) 105505@@ -6112,6 +6110,9 @@ static void selinux_nf_ip_exit(void)
103933 #ifdef CONFIG_SECURITY_SELINUX_DISABLE 105506 #ifdef CONFIG_SECURITY_SELINUX_DISABLE
103934 static int selinux_disabled; 105507 static int selinux_disabled;
103935 105508
@@ -103939,7 +105512,7 @@ index 57b0b49..402063e 100644
103939 int selinux_disable(void) 105512 int selinux_disable(void)
103940 { 105513 {
103941 if (ss_initialized) { 105514 if (ss_initialized) {
103942@@ -6115,7 +6116,9 @@ int selinux_disable(void) 105515@@ -6129,7 +6130,9 @@ int selinux_disable(void)
103943 selinux_disabled = 1; 105516 selinux_disabled = 1;
103944 selinux_enabled = 0; 105517 selinux_enabled = 0;
103945 105518
@@ -103951,10 +105524,10 @@ index 57b0b49..402063e 100644
103951 /* Try to destroy the avc node cache */ 105524 /* Try to destroy the avc node cache */
103952 avc_disable(); 105525 avc_disable();
103953diff --git a/security/selinux/include/xfrm.h b/security/selinux/include/xfrm.h 105526diff --git a/security/selinux/include/xfrm.h b/security/selinux/include/xfrm.h
103954index 48c3cc9..8022cf7 100644 105527index 9f05847..7933395 100644
103955--- a/security/selinux/include/xfrm.h 105528--- a/security/selinux/include/xfrm.h
103956+++ b/security/selinux/include/xfrm.h 105529+++ b/security/selinux/include/xfrm.h
103957@@ -45,7 +45,7 @@ static inline void selinux_xfrm_notify_policyload(void) 105530@@ -46,7 +46,7 @@ static inline void selinux_xfrm_notify_policyload(void)
103958 { 105531 {
103959 struct net *net; 105532 struct net *net;
103960 105533
@@ -103964,10 +105537,10 @@ index 48c3cc9..8022cf7 100644
103964 for_each_net(net) 105537 for_each_net(net)
103965 rt_genid_bump_all(net); 105538 rt_genid_bump_all(net);
103966diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c 105539diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c
103967index b0be893..646bd94 100644 105540index 14f52be..7352368 100644
103968--- a/security/smack/smack_lsm.c 105541--- a/security/smack/smack_lsm.c
103969+++ b/security/smack/smack_lsm.c 105542+++ b/security/smack/smack_lsm.c
103970@@ -3731,7 +3731,7 @@ static int smack_inode_getsecctx(struct inode *inode, void **ctx, u32 *ctxlen) 105543@@ -3726,7 +3726,7 @@ static int smack_inode_getsecctx(struct inode *inode, void **ctx, u32 *ctxlen)
103971 return 0; 105544 return 0;
103972 } 105545 }
103973 105546
@@ -103976,6 +105549,57 @@ index b0be893..646bd94 100644
103976 .name = "smack", 105549 .name = "smack",
103977 105550
103978 .ptrace_access_check = smack_ptrace_access_check, 105551 .ptrace_access_check = smack_ptrace_access_check,
105552diff --git a/security/tomoyo/file.c b/security/tomoyo/file.c
105553index 4003907..13a2b55 100644
105554--- a/security/tomoyo/file.c
105555+++ b/security/tomoyo/file.c
105556@@ -692,7 +692,7 @@ int tomoyo_path_number_perm(const u8 type, struct path *path,
105557 {
105558 struct tomoyo_request_info r;
105559 struct tomoyo_obj_info obj = {
105560- .path1 = *path,
105561+ .path1 = { .mnt = path->mnt, .dentry = path->dentry },
105562 };
105563 int error = -ENOMEM;
105564 struct tomoyo_path_info buf;
105565@@ -740,7 +740,7 @@ int tomoyo_check_open_permission(struct tomoyo_domain_info *domain,
105566 struct tomoyo_path_info buf;
105567 struct tomoyo_request_info r;
105568 struct tomoyo_obj_info obj = {
105569- .path1 = *path,
105570+ .path1 = { .mnt = path->mnt, .dentry = path->dentry },
105571 };
105572 int idx;
105573
105574@@ -786,7 +786,7 @@ int tomoyo_path_perm(const u8 operation, struct path *path, const char *target)
105575 {
105576 struct tomoyo_request_info r;
105577 struct tomoyo_obj_info obj = {
105578- .path1 = *path,
105579+ .path1 = { .mnt = path->mnt, .dentry = path->dentry },
105580 };
105581 int error;
105582 struct tomoyo_path_info buf;
105583@@ -843,7 +843,7 @@ int tomoyo_mkdev_perm(const u8 operation, struct path *path,
105584 {
105585 struct tomoyo_request_info r;
105586 struct tomoyo_obj_info obj = {
105587- .path1 = *path,
105588+ .path1 = { .mnt = path->mnt, .dentry = path->dentry },
105589 };
105590 int error = -ENOMEM;
105591 struct tomoyo_path_info buf;
105592@@ -890,8 +890,8 @@ int tomoyo_path2_perm(const u8 operation, struct path *path1,
105593 struct tomoyo_path_info buf2;
105594 struct tomoyo_request_info r;
105595 struct tomoyo_obj_info obj = {
105596- .path1 = *path1,
105597- .path2 = *path2,
105598+ .path1 = { .mnt = path1->mnt, .dentry = path1->dentry },
105599+ .path2 = { .mnt = path2->mnt, .dentry = path2->dentry }
105600 };
105601 int idx;
105602
103979diff --git a/security/tomoyo/mount.c b/security/tomoyo/mount.c 105603diff --git a/security/tomoyo/mount.c b/security/tomoyo/mount.c
103980index 390c646..f2f8db3 100644 105604index 390c646..f2f8db3 100644
103981--- a/security/tomoyo/mount.c 105605--- a/security/tomoyo/mount.c
@@ -103992,9 +105616,94 @@ index 390c646..f2f8db3 100644
103992 if (!fstype) { 105616 if (!fstype) {
103993 error = -ENODEV; 105617 error = -ENODEV;
103994diff --git a/security/tomoyo/tomoyo.c b/security/tomoyo/tomoyo.c 105618diff --git a/security/tomoyo/tomoyo.c b/security/tomoyo/tomoyo.c
103995index f0b756e..b129202 100644 105619index f0b756e..8aa497b 100644
103996--- a/security/tomoyo/tomoyo.c 105620--- a/security/tomoyo/tomoyo.c
103997+++ b/security/tomoyo/tomoyo.c 105621+++ b/security/tomoyo/tomoyo.c
105622@@ -146,7 +146,7 @@ static int tomoyo_bprm_check_security(struct linux_binprm *bprm)
105623 */
105624 static int tomoyo_inode_getattr(struct vfsmount *mnt, struct dentry *dentry)
105625 {
105626- struct path path = { mnt, dentry };
105627+ struct path path = { .mnt = mnt, .dentry = dentry };
105628 return tomoyo_path_perm(TOMOYO_TYPE_GETATTR, &path, NULL);
105629 }
105630
105631@@ -172,7 +172,7 @@ static int tomoyo_path_truncate(struct path *path)
105632 */
105633 static int tomoyo_path_unlink(struct path *parent, struct dentry *dentry)
105634 {
105635- struct path path = { parent->mnt, dentry };
105636+ struct path path = { .mnt = parent->mnt, .dentry = dentry };
105637 return tomoyo_path_perm(TOMOYO_TYPE_UNLINK, &path, NULL);
105638 }
105639
105640@@ -188,7 +188,7 @@ static int tomoyo_path_unlink(struct path *parent, struct dentry *dentry)
105641 static int tomoyo_path_mkdir(struct path *parent, struct dentry *dentry,
105642 umode_t mode)
105643 {
105644- struct path path = { parent->mnt, dentry };
105645+ struct path path = { .mnt = parent->mnt, .dentry = dentry };
105646 return tomoyo_path_number_perm(TOMOYO_TYPE_MKDIR, &path,
105647 mode & S_IALLUGO);
105648 }
105649@@ -203,7 +203,7 @@ static int tomoyo_path_mkdir(struct path *parent, struct dentry *dentry,
105650 */
105651 static int tomoyo_path_rmdir(struct path *parent, struct dentry *dentry)
105652 {
105653- struct path path = { parent->mnt, dentry };
105654+ struct path path = { .mnt = parent->mnt, .dentry = dentry };
105655 return tomoyo_path_perm(TOMOYO_TYPE_RMDIR, &path, NULL);
105656 }
105657
105658@@ -219,7 +219,7 @@ static int tomoyo_path_rmdir(struct path *parent, struct dentry *dentry)
105659 static int tomoyo_path_symlink(struct path *parent, struct dentry *dentry,
105660 const char *old_name)
105661 {
105662- struct path path = { parent->mnt, dentry };
105663+ struct path path = { .mnt = parent->mnt, .dentry = dentry };
105664 return tomoyo_path_perm(TOMOYO_TYPE_SYMLINK, &path, old_name);
105665 }
105666
105667@@ -236,7 +236,7 @@ static int tomoyo_path_symlink(struct path *parent, struct dentry *dentry,
105668 static int tomoyo_path_mknod(struct path *parent, struct dentry *dentry,
105669 umode_t mode, unsigned int dev)
105670 {
105671- struct path path = { parent->mnt, dentry };
105672+ struct path path = { .mnt = parent->mnt, .dentry = dentry };
105673 int type = TOMOYO_TYPE_CREATE;
105674 const unsigned int perm = mode & S_IALLUGO;
105675
105676@@ -275,8 +275,8 @@ static int tomoyo_path_mknod(struct path *parent, struct dentry *dentry,
105677 static int tomoyo_path_link(struct dentry *old_dentry, struct path *new_dir,
105678 struct dentry *new_dentry)
105679 {
105680- struct path path1 = { new_dir->mnt, old_dentry };
105681- struct path path2 = { new_dir->mnt, new_dentry };
105682+ struct path path1 = { .mnt = new_dir->mnt, .dentry = old_dentry };
105683+ struct path path2 = { .mnt = new_dir->mnt, .dentry = new_dentry };
105684 return tomoyo_path2_perm(TOMOYO_TYPE_LINK, &path1, &path2);
105685 }
105686
105687@@ -295,8 +295,8 @@ static int tomoyo_path_rename(struct path *old_parent,
105688 struct path *new_parent,
105689 struct dentry *new_dentry)
105690 {
105691- struct path path1 = { old_parent->mnt, old_dentry };
105692- struct path path2 = { new_parent->mnt, new_dentry };
105693+ struct path path1 = { .mnt = old_parent->mnt, .dentry = old_dentry };
105694+ struct path path2 = { .mnt = new_parent->mnt, .dentry = new_dentry };
105695 return tomoyo_path2_perm(TOMOYO_TYPE_RENAME, &path1, &path2);
105696 }
105697
105698@@ -424,7 +424,7 @@ static int tomoyo_sb_mount(const char *dev_name, struct path *path,
105699 */
105700 static int tomoyo_sb_umount(struct vfsmount *mnt, int flags)
105701 {
105702- struct path path = { mnt, mnt->mnt_root };
105703+ struct path path = { .mnt = mnt, .dentry = mnt->mnt_root };
105704 return tomoyo_path_perm(TOMOYO_TYPE_UMOUNT, &path, NULL);
105705 }
105706
103998@@ -503,7 +503,7 @@ static int tomoyo_socket_sendmsg(struct socket *sock, struct msghdr *msg, 105707@@ -503,7 +503,7 @@ static int tomoyo_socket_sendmsg(struct socket *sock, struct msghdr *msg,
103999 * tomoyo_security_ops is a "struct security_operations" which is used for 105708 * tomoyo_security_ops is a "struct security_operations" which is used for
104000 * registering TOMOYO. 105709 * registering TOMOYO.
@@ -104564,10 +106273,10 @@ index 048439a..3be9f6f 100644
104564 userbuf+useroffs + p, 106273 userbuf+useroffs + p,
104565 locallen)) 106274 locallen))
104566diff --git a/sound/oss/swarm_cs4297a.c b/sound/oss/swarm_cs4297a.c 106275diff --git a/sound/oss/swarm_cs4297a.c b/sound/oss/swarm_cs4297a.c
104567index 7d8803a..559f8d0 100644 106276index f851fd0..92576fb 100644
104568--- a/sound/oss/swarm_cs4297a.c 106277--- a/sound/oss/swarm_cs4297a.c
104569+++ b/sound/oss/swarm_cs4297a.c 106278+++ b/sound/oss/swarm_cs4297a.c
104570@@ -2621,7 +2621,6 @@ static int __init cs4297a_init(void) 106279@@ -2623,7 +2623,6 @@ static int __init cs4297a_init(void)
104571 { 106280 {
104572 struct cs4297a_state *s; 106281 struct cs4297a_state *s;
104573 u32 pwr, id; 106282 u32 pwr, id;
@@ -104575,7 +106284,7 @@ index 7d8803a..559f8d0 100644
104575 int rval; 106284 int rval;
104576 #ifndef CONFIG_BCM_CS4297A_CSWARM 106285 #ifndef CONFIG_BCM_CS4297A_CSWARM
104577 u64 cfg; 106286 u64 cfg;
104578@@ -2711,22 +2710,23 @@ static int __init cs4297a_init(void) 106287@@ -2713,22 +2712,23 @@ static int __init cs4297a_init(void)
104579 if (!rval) { 106288 if (!rval) {
104580 char *sb1250_duart_present; 106289 char *sb1250_duart_present;
104581 106290
@@ -104617,10 +106326,10 @@ index 4c41c90..37f3631 100644
104617 return snd_seq_device_register_driver(SNDRV_SEQ_DEV_ID_EMU10K1_SYNTH, &ops, 106326 return snd_seq_device_register_driver(SNDRV_SEQ_DEV_ID_EMU10K1_SYNTH, &ops,
104618 sizeof(struct snd_emu10k1_synth_arg)); 106327 sizeof(struct snd_emu10k1_synth_arg));
104619diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c 106328diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
104620index 69178c4..4493d52 100644 106329index dafcf82..dd9356f 100644
104621--- a/sound/pci/hda/hda_codec.c 106330--- a/sound/pci/hda/hda_codec.c
104622+++ b/sound/pci/hda/hda_codec.c 106331+++ b/sound/pci/hda/hda_codec.c
104623@@ -976,14 +976,10 @@ find_codec_preset(struct hda_codec *codec) 106332@@ -983,14 +983,10 @@ find_codec_preset(struct hda_codec *codec)
104624 mutex_unlock(&preset_mutex); 106333 mutex_unlock(&preset_mutex);
104625 106334
104626 if (mod_requested < HDA_MODREQ_MAX_COUNT) { 106335 if (mod_requested < HDA_MODREQ_MAX_COUNT) {
@@ -104637,7 +106346,7 @@ index 69178c4..4493d52 100644
104637 mod_requested++; 106346 mod_requested++;
104638 goto again; 106347 goto again;
104639 } 106348 }
104640@@ -2668,7 +2664,7 @@ static int get_kctl_0dB_offset(struct snd_kcontrol *kctl, int *step_to_check) 106349@@ -2739,7 +2735,7 @@ static int get_kctl_0dB_offset(struct snd_kcontrol *kctl, int *step_to_check)
104641 /* FIXME: set_fs() hack for obtaining user-space TLV data */ 106350 /* FIXME: set_fs() hack for obtaining user-space TLV data */
104642 mm_segment_t fs = get_fs(); 106351 mm_segment_t fs = get_fs();
104643 set_fs(get_ds()); 106352 set_fs(get_ds());
@@ -104704,23 +106413,41 @@ index d591c15..8cb8f94 100644
104704 chip->pci = pci; 106413 chip->pci = pci;
104705 chip->irq = -1; 106414 chip->irq = -1;
104706diff --git a/sound/soc/fsl/fsl_ssi.c b/sound/soc/fsl/fsl_ssi.c 106415diff --git a/sound/soc/fsl/fsl_ssi.c b/sound/soc/fsl/fsl_ssi.c
104707index 35e2773..6d6ceee 100644 106416index 5428a1f..474f651 100644
104708--- a/sound/soc/fsl/fsl_ssi.c 106417--- a/sound/soc/fsl/fsl_ssi.c
104709+++ b/sound/soc/fsl/fsl_ssi.c 106418+++ b/sound/soc/fsl/fsl_ssi.c
104710@@ -857,7 +857,7 @@ static int fsl_ssi_probe(struct platform_device *pdev) 106419@@ -1255,7 +1255,6 @@ static int fsl_ssi_probe(struct platform_device *pdev)
104711 { 106420 {
104712 struct fsl_ssi_private *ssi_private; 106421 struct fsl_ssi_private *ssi_private;
104713 int ret = 0; 106422 int ret = 0;
104714- struct device_attribute *dev_attr = NULL; 106423- struct device_attribute *dev_attr = NULL;
104715+ device_attribute_no_const *dev_attr = NULL;
104716 struct device_node *np = pdev->dev.of_node; 106424 struct device_node *np = pdev->dev.of_node;
104717 const char *p, *sprop; 106425 const struct of_device_id *of_id;
104718 const uint32_t *iprop; 106426 enum fsl_ssi_type hw_type;
106427@@ -1481,7 +1480,7 @@ static int fsl_ssi_probe(struct platform_device *pdev)
106428 &ssi_private->cpu_dai_drv, 1);
106429 if (ret) {
106430 dev_err(&pdev->dev, "failed to register DAI: %d\n", ret);
106431- goto error_dev;
106432+ goto error_clk;
106433 }
106434
106435 ret = fsl_ssi_debugfs_create(ssi_private, &pdev->dev);
106436@@ -1562,9 +1561,6 @@ error_pcm:
106437 error_dbgfs:
106438 snd_soc_unregister_component(&pdev->dev);
106439
106440-error_dev:
106441- device_remove_file(&pdev->dev, dev_attr);
106442-
106443 error_clk:
106444 if (ssi_private->ssi_on_imx) {
106445 if (!IS_ERR(ssi_private->baudclk))
104719diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c 106446diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
104720index a66783e..ed1d791 100644 106447index fe1df50..09d3be6 100644
104721--- a/sound/soc/soc-core.c 106448--- a/sound/soc/soc-core.c
104722+++ b/sound/soc/soc-core.c 106449+++ b/sound/soc/soc-core.c
104723@@ -2253,8 +2253,10 @@ int snd_soc_set_ac97_ops_of_reset(struct snd_ac97_bus_ops *ops, 106450@@ -2254,8 +2254,10 @@ int snd_soc_set_ac97_ops_of_reset(struct snd_ac97_bus_ops *ops,
104724 if (ret) 106451 if (ret)
104725 return ret; 106452 return ret;
104726 106453
@@ -104760,18 +106487,18 @@ index 7778b8e..3d619fc 100644
104760 106487
104761diff --git a/tools/gcc/.gitignore b/tools/gcc/.gitignore 106488diff --git a/tools/gcc/.gitignore b/tools/gcc/.gitignore
104762new file mode 100644 106489new file mode 100644
104763index 0000000..4c2c45c 106490index 0000000..60e7af2
104764--- /dev/null 106491--- /dev/null
104765+++ b/tools/gcc/.gitignore 106492+++ b/tools/gcc/.gitignore
104766@@ -0,0 +1,2 @@ 106493@@ -0,0 +1,2 @@
104767+randomize_layout_seed.h 106494+randomize_layout_seed.h
104768+size_overflow_hash.h 106495+randomize_layout_hash.h
104769diff --git a/tools/gcc/Makefile b/tools/gcc/Makefile 106496diff --git a/tools/gcc/Makefile b/tools/gcc/Makefile
104770new file mode 100644 106497new file mode 100644
104771index 0000000..b198b6d 106498index 0000000..7b8921f
104772--- /dev/null 106499--- /dev/null
104773+++ b/tools/gcc/Makefile 106500+++ b/tools/gcc/Makefile
104774@@ -0,0 +1,54 @@ 106501@@ -0,0 +1,52 @@
104775+#CC := gcc 106502+#CC := gcc
104776+#PLUGIN_SOURCE_FILES := pax_plugin.c 106503+#PLUGIN_SOURCE_FILES := pax_plugin.c
104777+#PLUGIN_OBJECT_FILES := $(patsubst %.c,%.o,$(PLUGIN_SOURCE_FILES)) 106504+#PLUGIN_OBJECT_FILES := $(patsubst %.c,%.o,$(PLUGIN_SOURCE_FILES))
@@ -104780,23 +106507,29 @@ index 0000000..b198b6d
104780+ 106507+
104781+ifeq ($(PLUGINCC),$(HOSTCC)) 106508+ifeq ($(PLUGINCC),$(HOSTCC))
104782+HOSTLIBS := hostlibs 106509+HOSTLIBS := hostlibs
104783+HOST_EXTRACFLAGS += -I$(GCCPLUGINS_DIR)/include -std=gnu99 -ggdb 106510+HOST_EXTRACFLAGS += -I$(GCCPLUGINS_DIR)/include -I$(src) -std=gnu99 -ggdb
106511+export HOST_EXTRACFLAGS
104784+else 106512+else
104785+HOSTLIBS := hostcxxlibs 106513+HOSTLIBS := hostcxxlibs
104786+HOST_EXTRACXXFLAGS += -I$(GCCPLUGINS_DIR)/include -std=gnu++98 -fno-rtti -ggdb -Wno-unused-parameter -Wno-narrowing 106514+HOST_EXTRACXXFLAGS += -I$(GCCPLUGINS_DIR)/include -I$(src) -std=gnu++98 -fno-rtti -ggdb -Wno-unused-parameter -Wno-narrowing -Wno-unused-variable
106515+export HOST_EXTRACXXFLAGS
104787+endif 106516+endif
104788+ 106517+
106518+export GCCPLUGINS_DIR HOSTLIBS
106519+
104789+$(HOSTLIBS)-$(CONFIG_PAX_CONSTIFY_PLUGIN) := constify_plugin.so 106520+$(HOSTLIBS)-$(CONFIG_PAX_CONSTIFY_PLUGIN) := constify_plugin.so
104790+$(HOSTLIBS)-$(CONFIG_PAX_MEMORY_STACKLEAK) += stackleak_plugin.so 106521+$(HOSTLIBS)-$(CONFIG_PAX_MEMORY_STACKLEAK) += stackleak_plugin.so
104791+$(HOSTLIBS)-$(CONFIG_KALLOCSTAT_PLUGIN) += kallocstat_plugin.so 106522+$(HOSTLIBS)-$(CONFIG_KALLOCSTAT_PLUGIN) += kallocstat_plugin.so
104792+$(HOSTLIBS)-$(CONFIG_PAX_KERNEXEC_PLUGIN) += kernexec_plugin.so 106523+$(HOSTLIBS)-$(CONFIG_PAX_KERNEXEC_PLUGIN) += kernexec_plugin.so
104793+$(HOSTLIBS)-$(CONFIG_CHECKER_PLUGIN) += checker_plugin.so 106524+$(HOSTLIBS)-$(CONFIG_CHECKER_PLUGIN) += checker_plugin.so
104794+$(HOSTLIBS)-y += colorize_plugin.so 106525+$(HOSTLIBS)-y += colorize_plugin.so
104795+$(HOSTLIBS)-$(CONFIG_PAX_SIZE_OVERFLOW) += size_overflow_plugin.so
104796+$(HOSTLIBS)-$(CONFIG_PAX_LATENT_ENTROPY) += latent_entropy_plugin.so 106526+$(HOSTLIBS)-$(CONFIG_PAX_LATENT_ENTROPY) += latent_entropy_plugin.so
104797+$(HOSTLIBS)-$(CONFIG_PAX_MEMORY_STRUCTLEAK) += structleak_plugin.so 106527+$(HOSTLIBS)-$(CONFIG_PAX_MEMORY_STRUCTLEAK) += structleak_plugin.so
104798+$(HOSTLIBS)-$(CONFIG_GRKERNSEC_RANDSTRUCT) += randomize_layout_plugin.so 106528+$(HOSTLIBS)-$(CONFIG_GRKERNSEC_RANDSTRUCT) += randomize_layout_plugin.so
104799+ 106529+
106530+subdir-$(CONFIG_PAX_SIZE_OVERFLOW) := size_overflow_plugin
106531+subdir- += size_overflow_plugin
106532+
104800+always := $($(HOSTLIBS)-y) 106533+always := $($(HOSTLIBS)-y)
104801+ 106534+
104802+constify_plugin-objs := constify_plugin.o 106535+constify_plugin-objs := constify_plugin.o
@@ -104805,27 +106538,19 @@ index 0000000..b198b6d
104805+kernexec_plugin-objs := kernexec_plugin.o 106538+kernexec_plugin-objs := kernexec_plugin.o
104806+checker_plugin-objs := checker_plugin.o 106539+checker_plugin-objs := checker_plugin.o
104807+colorize_plugin-objs := colorize_plugin.o 106540+colorize_plugin-objs := colorize_plugin.o
104808+size_overflow_plugin-objs := size_overflow_plugin.o
104809+latent_entropy_plugin-objs := latent_entropy_plugin.o 106541+latent_entropy_plugin-objs := latent_entropy_plugin.o
104810+structleak_plugin-objs := structleak_plugin.o 106542+structleak_plugin-objs := structleak_plugin.o
104811+randomize_layout_plugin-objs := randomize_layout_plugin.o 106543+randomize_layout_plugin-objs := randomize_layout_plugin.o
104812+ 106544+
104813+$(obj)/size_overflow_plugin.o: $(objtree)/$(obj)/size_overflow_hash.h
104814+$(obj)/randomize_layout_plugin.o: $(objtree)/$(obj)/randomize_layout_seed.h 106545+$(obj)/randomize_layout_plugin.o: $(objtree)/$(obj)/randomize_layout_seed.h
104815+ 106546+
104816+quiet_cmd_build_size_overflow_hash = GENHASH $@
104817+ cmd_build_size_overflow_hash = \
104818+ $(CONFIG_SHELL) $(srctree)/$(src)/generate_size_overflow_hash.sh -d $< -o $@
104819+$(objtree)/$(obj)/size_overflow_hash.h: $(src)/size_overflow_hash.data FORCE
104820+ $(call if_changed,build_size_overflow_hash)
104821+
104822+quiet_cmd_create_randomize_layout_seed = GENSEED $@ 106547+quiet_cmd_create_randomize_layout_seed = GENSEED $@
104823+ cmd_create_randomize_layout_seed = \ 106548+ cmd_create_randomize_layout_seed = \
104824+ $(CONFIG_SHELL) $(srctree)/$(src)/gen-random-seed.sh $@ $(objtree)/include/generated/randomize_layout_hash.h 106549+ $(CONFIG_SHELL) $(srctree)/$(src)/gen-random-seed.sh $@ $(objtree)/include/generated/randomize_layout_hash.h
104825+$(objtree)/$(obj)/randomize_layout_seed.h: FORCE 106550+$(objtree)/$(obj)/randomize_layout_seed.h: FORCE
104826+ $(call if_changed,create_randomize_layout_seed) 106551+ $(call if_changed,create_randomize_layout_seed)
104827+ 106552+
104828+targets += size_overflow_hash.h randomize_layout_seed.h randomize_layout_hash.h 106553+targets += randomize_layout_seed.h randomize_layout_hash.h
104829diff --git a/tools/gcc/checker_plugin.c b/tools/gcc/checker_plugin.c 106554diff --git a/tools/gcc/checker_plugin.c b/tools/gcc/checker_plugin.c
104830new file mode 100644 106555new file mode 100644
104831index 0000000..5452feea 106556index 0000000..5452feea
@@ -104984,10 +106709,10 @@ index 0000000..5452feea
104984+} 106709+}
104985diff --git a/tools/gcc/colorize_plugin.c b/tools/gcc/colorize_plugin.c 106710diff --git a/tools/gcc/colorize_plugin.c b/tools/gcc/colorize_plugin.c
104986new file mode 100644 106711new file mode 100644
104987index 0000000..06dcfda 106712index 0000000..54461af
104988--- /dev/null 106713--- /dev/null
104989+++ b/tools/gcc/colorize_plugin.c 106714+++ b/tools/gcc/colorize_plugin.c
104990@@ -0,0 +1,169 @@ 106715@@ -0,0 +1,210 @@
104991+/* 106716+/*
104992+ * Copyright 2012-2014 by PaX Team <pageexec@freemail.hu> 106717+ * Copyright 2012-2014 by PaX Team <pageexec@freemail.hu>
104993+ * Licensed under the GPL v2 106718+ * Licensed under the GPL v2
@@ -105006,20 +106731,20 @@ index 0000000..06dcfda
105006+int plugin_is_GPL_compatible; 106731+int plugin_is_GPL_compatible;
105007+ 106732+
105008+static struct plugin_info colorize_plugin_info = { 106733+static struct plugin_info colorize_plugin_info = {
105009+ .version = "201401260140", 106734+ .version = "201404202350",
105010+ .help = NULL, 106735+ .help = "color=[never|always|auto]\tdetermine when to colorize\n",
105011+}; 106736+};
105012+ 106737+
105013+#define GREEN "\033[32m\033[2m" 106738+#define GREEN "\033[32m\033[K"
105014+#define LIGHTGREEN "\033[32m\033[1m" 106739+#define LIGHTGREEN "\033[1;32m\033[K"
105015+#define YELLOW "\033[33m\033[2m" 106740+#define YELLOW "\033[33m\033[K"
105016+#define LIGHTYELLOW "\033[33m\033[1m" 106741+#define LIGHTYELLOW "\033[1;33m\033[K"
105017+#define RED "\033[31m\033[2m" 106742+#define RED "\033[31m\033[K"
105018+#define LIGHTRED "\033[31m\033[1m" 106743+#define LIGHTRED "\033[1;31m\033[K"
105019+#define BLUE "\033[34m\033[2m" 106744+#define BLUE "\033[34m\033[K"
105020+#define LIGHTBLUE "\033[34m\033[1m" 106745+#define LIGHTBLUE "\033[1;34m\033[K"
105021+#define BRIGHT "\033[m\033[1m" 106746+#define BRIGHT "\033[1;m\033[K"
105022+#define NORMAL "\033[m" 106747+#define NORMAL "\033[m\033[K"
105023+ 106748+
105024+static diagnostic_starter_fn old_starter; 106749+static diagnostic_starter_fn old_starter;
105025+static diagnostic_finalizer_fn old_finalizer; 106750+static diagnostic_finalizer_fn old_finalizer;
@@ -105121,26 +106846,42 @@ index 0000000..06dcfda
105121+ unsigned int execute() { return execute_colorize_rearm(); } 106846+ unsigned int execute() { return execute_colorize_rearm(); }
105122+}; 106847+};
105123+} 106848+}
105124+#endif
105125+ 106849+
105126+static struct opt_pass *make_colorize_rearm_pass(void) 106850+static opt_pass *make_colorize_rearm_pass(void)
105127+{ 106851+{
105128+#if BUILDING_GCC_VERSION >= 4009
105129+ return new colorize_rearm_pass(); 106852+ return new colorize_rearm_pass();
106853+}
105130+#else 106854+#else
106855+static struct opt_pass *make_colorize_rearm_pass(void)
106856+{
105131+ return &colorize_rearm_pass.pass; 106857+ return &colorize_rearm_pass.pass;
105132+#endif
105133+} 106858+}
106859+#endif
105134+ 106860+
105135+static void colorize_start_unit(void *gcc_data, void *user_data) 106861+static void colorize_start_unit(void *gcc_data, void *user_data)
105136+{ 106862+{
105137+ colorize_arm(); 106863+ colorize_arm();
105138+} 106864+}
105139+ 106865+
106866+static bool should_colorize(void)
106867+{
106868+#if BUILDING_GCC_VERSION >= 4009
106869+ return false;
106870+#else
106871+ char const *t = getenv("TERM");
106872+
106873+ return t && strcmp(t, "dumb") && isatty(STDERR_FILENO);
106874+#endif
106875+}
106876+
105140+int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version) 106877+int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version)
105141+{ 106878+{
105142+ const char * const plugin_name = plugin_info->base_name; 106879+ const char * const plugin_name = plugin_info->base_name;
106880+ const int argc = plugin_info->argc;
106881+ const struct plugin_argument * const argv = plugin_info->argv;
106882+ int i;
105143+ struct register_pass_info colorize_rearm_pass_info; 106883+ struct register_pass_info colorize_rearm_pass_info;
106884+ bool colorize;
105144+ 106885+
105145+ colorize_rearm_pass_info.pass = make_colorize_rearm_pass(); 106886+ colorize_rearm_pass_info.pass = make_colorize_rearm_pass();
105146+ colorize_rearm_pass_info.reference_pass_name = "*free_lang_data"; 106887+ colorize_rearm_pass_info.reference_pass_name = "*free_lang_data";
@@ -105153,16 +106894,41 @@ index 0000000..06dcfda
105153+ } 106894+ }
105154+ 106895+
105155+ register_callback(plugin_name, PLUGIN_INFO, NULL, &colorize_plugin_info); 106896+ register_callback(plugin_name, PLUGIN_INFO, NULL, &colorize_plugin_info);
105156+ register_callback(plugin_name, PLUGIN_START_UNIT, &colorize_start_unit, NULL); 106897+
105157+ register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &colorize_rearm_pass_info); 106898+ colorize = getenv("GCC_COLORS") ? should_colorize() : false;
106899+
106900+ for (i = 0; i < argc; ++i) {
106901+ if (!strcmp(argv[i].key, "color")) {
106902+ if (!argv[i].value) {
106903+ error(G_("no value supplied for option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key);
106904+ continue;
106905+ }
106906+ if (!strcmp(argv[i].value, "always"))
106907+ colorize = true;
106908+ else if (!strcmp(argv[i].value, "never"))
106909+ colorize = false;
106910+ else if (!strcmp(argv[i].value, "auto"))
106911+ colorize = should_colorize();
106912+ else
106913+ error(G_("invalid option argument '-fplugin-arg-%s-%s=%s'"), plugin_name, argv[i].key, argv[i].value);
106914+ continue;
106915+ }
106916+ error(G_("unkown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key);
106917+ }
106918+
106919+ if (colorize) {
106920+ // TODO: parse GCC_COLORS as used by gcc 4.9+
106921+ register_callback(plugin_name, PLUGIN_START_UNIT, &colorize_start_unit, NULL);
106922+ register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &colorize_rearm_pass_info);
106923+ }
105158+ return 0; 106924+ return 0;
105159+} 106925+}
105160diff --git a/tools/gcc/constify_plugin.c b/tools/gcc/constify_plugin.c 106926diff --git a/tools/gcc/constify_plugin.c b/tools/gcc/constify_plugin.c
105161new file mode 100644 106927new file mode 100644
105162index 0000000..4f67ac1 106928index 0000000..82bc5a8
105163--- /dev/null 106929--- /dev/null
105164+++ b/tools/gcc/constify_plugin.c 106930+++ b/tools/gcc/constify_plugin.c
105165@@ -0,0 +1,552 @@ 106931@@ -0,0 +1,557 @@
105166+/* 106932+/*
105167+ * Copyright 2011 by Emese Revfy <re.emese@gmail.com> 106933+ * Copyright 2011 by Emese Revfy <re.emese@gmail.com>
105168+ * Copyright 2011-2014 by PaX Team <pageexec@freemail.hu> 106934+ * Copyright 2011-2014 by PaX Team <pageexec@freemail.hu>
@@ -105524,7 +107290,11 @@ index 0000000..4f67ac1
105524+ 107290+
105525+static void check_global_variables(void *event_data, void *data) 107291+static void check_global_variables(void *event_data, void *data)
105526+{ 107292+{
107293+#if BUILDING_GCC_VERSION >= 4009
107294+ varpool_node *node;
107295+#else
105527+ struct varpool_node *node; 107296+ struct varpool_node *node;
107297+#endif
105528+ 107298+
105529+ FOR_EACH_VARIABLE(node) { 107299+ FOR_EACH_VARIABLE(node) {
105530+ tree var = NODE_DECL(node); 107300+ tree var = NODE_DECL(node);
@@ -105621,16 +107391,17 @@ index 0000000..4f67ac1
105621+ unsigned int execute() { return check_local_variables(); } 107391+ unsigned int execute() { return check_local_variables(); }
105622+}; 107392+};
105623+} 107393+}
105624+#endif
105625+ 107394+
105626+static struct opt_pass *make_check_local_variables_pass(void) 107395+static opt_pass *make_check_local_variables_pass(void)
105627+{ 107396+{
105628+#if BUILDING_GCC_VERSION >= 4009
105629+ return new check_local_variables_pass(); 107397+ return new check_local_variables_pass();
107398+}
105630+#else 107399+#else
107400+static struct opt_pass *make_check_local_variables_pass(void)
107401+{
105631+ return &check_local_variables_pass.pass; 107402+ return &check_local_variables_pass.pass;
105632+#endif
105633+} 107403+}
107404+#endif
105634+ 107405+
105635+static struct { 107406+static struct {
105636+ const char *name; 107407+ const char *name;
@@ -105717,10 +107488,10 @@ index 0000000..4f67ac1
105717+} 107488+}
105718diff --git a/tools/gcc/gcc-common.h b/tools/gcc/gcc-common.h 107489diff --git a/tools/gcc/gcc-common.h b/tools/gcc/gcc-common.h
105719new file mode 100644 107490new file mode 100644
105720index 0000000..6dbb502 107491index 0000000..e90c205
105721--- /dev/null 107492--- /dev/null
105722+++ b/tools/gcc/gcc-common.h 107493+++ b/tools/gcc/gcc-common.h
105723@@ -0,0 +1,286 @@ 107494@@ -0,0 +1,295 @@
105724+#ifndef GCC_COMMON_H_INCLUDED 107495+#ifndef GCC_COMMON_H_INCLUDED
105725+#define GCC_COMMON_H_INCLUDED 107496+#define GCC_COMMON_H_INCLUDED
105726+ 107497+
@@ -105791,7 +107562,6 @@ index 0000000..6dbb502
105791+#include "tree-pass.h" 107562+#include "tree-pass.h"
105792+//#include "df.h" 107563+//#include "df.h"
105793+#include "predict.h" 107564+#include "predict.h"
105794+//#include "lto-streamer.h"
105795+#include "ipa-utils.h" 107565+#include "ipa-utils.h"
105796+ 107566+
105797+#if BUILDING_GCC_VERSION >= 4009 107567+#if BUILDING_GCC_VERSION >= 4009
@@ -105806,6 +107576,7 @@ index 0000000..6dbb502
105806+#include "tree-ssanames.h" 107576+#include "tree-ssanames.h"
105807+#include "print-tree.h" 107577+#include "print-tree.h"
105808+#include "tree-eh.h" 107578+#include "tree-eh.h"
107579+#include "stmt.h"
105809+#endif 107580+#endif
105810+ 107581+
105811+#include "gimple.h" 107582+#include "gimple.h"
@@ -105819,6 +107590,10 @@ index 0000000..6dbb502
105819+#include "ssa-iterators.h" 107590+#include "ssa-iterators.h"
105820+#endif 107591+#endif
105821+ 107592+
107593+//#include "lto/lto.h"
107594+//#include "data-streamer.h"
107595+//#include "lto-compress.h"
107596+
105822+//#include "expr.h" where are you... 107597+//#include "expr.h" where are you...
105823+extern rtx emit_move_insn(rtx x, rtx y); 107598+extern rtx emit_move_insn(rtx x, rtx y);
105824+ 107599+
@@ -105830,11 +107605,14 @@ index 0000000..6dbb502
105830+ 107605+
105831+#define DECL_NAME_POINTER(node) IDENTIFIER_POINTER(DECL_NAME(node)) 107606+#define DECL_NAME_POINTER(node) IDENTIFIER_POINTER(DECL_NAME(node))
105832+#define DECL_NAME_LENGTH(node) IDENTIFIER_LENGTH(DECL_NAME(node)) 107607+#define DECL_NAME_LENGTH(node) IDENTIFIER_LENGTH(DECL_NAME(node))
107608+#define TYPE_NAME_POINTER(node) IDENTIFIER_POINTER(TYPE_NAME(node))
107609+#define TYPE_NAME_LENGTH(node) IDENTIFIER_LENGTH(TYPE_NAME(node))
105833+ 107610+
105834+#if BUILDING_GCC_VERSION == 4005 107611+#if BUILDING_GCC_VERSION == 4005
105835+#define FOR_EACH_LOCAL_DECL(FUN, I, D) for (tree vars = (FUN)->local_decls; vars && (D = TREE_VALUE(vars)); vars = TREE_CHAIN(vars), I) 107612+#define FOR_EACH_LOCAL_DECL(FUN, I, D) for (tree vars = (FUN)->local_decls; vars && (D = TREE_VALUE(vars)); vars = TREE_CHAIN(vars), I)
105836+#define DECL_CHAIN(NODE) (TREE_CHAIN(DECL_MINIMAL_CHECK(NODE))) 107613+#define DECL_CHAIN(NODE) (TREE_CHAIN(DECL_MINIMAL_CHECK(NODE)))
105837+#define FOR_EACH_VEC_ELT(T, V, I, P) for (I = 0; VEC_iterate(T, (V), (I), (P)); ++(I)) 107614+#define FOR_EACH_VEC_ELT(T, V, I, P) for (I = 0; VEC_iterate(T, (V), (I), (P)); ++(I))
107615+#define TODO_rebuild_cgraph_edges 0
105838+ 107616+
105839+static inline bool gimple_call_builtin_p(gimple stmt, enum built_in_function code) 107617+static inline bool gimple_call_builtin_p(gimple stmt, enum built_in_function code)
105840+{ 107618+{
@@ -105967,6 +107745,8 @@ index 0000000..6dbb502
105967+#if BUILDING_GCC_VERSION >= 4007 107745+#if BUILDING_GCC_VERSION >= 4007
105968+#define cgraph_create_edge(caller, callee, call_stmt, count, freq, nest) \ 107746+#define cgraph_create_edge(caller, callee, call_stmt, count, freq, nest) \
105969+ cgraph_create_edge((caller), (callee), (call_stmt), (count), (freq)) 107747+ cgraph_create_edge((caller), (callee), (call_stmt), (count), (freq))
107748+#define cgraph_create_edge_including_clones(caller, callee, old_call_stmt, call_stmt, count, freq, nest, reason) \
107749+ cgraph_create_edge_including_clones((caller), (callee), (old_call_stmt), (call_stmt), (count), (freq), (reason))
105970+#endif 107750+#endif
105971+ 107751+
105972+#if BUILDING_GCC_VERSION <= 4008 107752+#if BUILDING_GCC_VERSION <= 4008
@@ -106021,112 +107801,12 @@ index 0000000..7514850
106021+ HASH=`echo -n "$SEED" | sha256sum | cut -d" " -f1 | tr -d ' \n'` 107801+ HASH=`echo -n "$SEED" | sha256sum | cut -d" " -f1 | tr -d ' \n'`
106022+ echo "#define RANDSTRUCT_HASHED_SEED \"$HASH\"" > "$2" 107802+ echo "#define RANDSTRUCT_HASHED_SEED \"$HASH\"" > "$2"
106023+fi 107803+fi
106024diff --git a/tools/gcc/generate_size_overflow_hash.sh b/tools/gcc/generate_size_overflow_hash.sh
106025new file mode 100644
106026index 0000000..e518932
106027--- /dev/null
106028+++ b/tools/gcc/generate_size_overflow_hash.sh
106029@@ -0,0 +1,94 @@
106030+#!/bin/bash
106031+
106032+# This script generates the hash table (size_overflow_hash.h) for the size_overflow gcc plugin (size_overflow_plugin.c).
106033+
106034+header1="size_overflow_hash.h"
106035+database="size_overflow_hash.data"
106036+n=65536
106037+
106038+usage() {
106039+cat <<EOF
106040+usage: $0 options
106041+OPTIONS:
106042+ -h|--help help
106043+ -o header file
106044+ -d database file
106045+ -n hash array size
106046+EOF
106047+ return 0
106048+}
106049+
106050+while true
106051+do
106052+ case "$1" in
106053+ -h|--help) usage && exit 0;;
106054+ -n) n=$2; shift 2;;
106055+ -o) header1="$2"; shift 2;;
106056+ -d) database="$2"; shift 2;;
106057+ --) shift 1; break ;;
106058+ *) break ;;
106059+ esac
106060+done
106061+
106062+create_defines() {
106063+ for i in `seq 0 31`
106064+ do
106065+ echo -e "#define PARAM"$i" (1U << "$i")" >> "$header1"
106066+ done
106067+ echo >> "$header1"
106068+}
106069+
106070+create_structs() {
106071+ rm -f "$header1"
106072+
106073+ create_defines
106074+
106075+ cat "$database" | while read data
106076+ do
106077+ data_array=($data)
106078+ struct_hash_name="${data_array[0]}"
106079+ funcn="${data_array[1]}"
106080+ params="${data_array[2]}"
106081+ next="${data_array[4]}"
106082+
106083+ echo "const struct size_overflow_hash $struct_hash_name = {" >> "$header1"
106084+
106085+ echo -e "\t.next\t= $next,\n\t.name\t= \"$funcn\"," >> "$header1"
106086+ echo -en "\t.param\t= " >> "$header1"
106087+ line=
106088+ for param_num in ${params//-/ };
106089+ do
106090+ line="${line}PARAM"$param_num"|"
106091+ done
106092+
106093+ echo -e "${line%?},\n};\n" >> "$header1"
106094+ done
106095+}
106096+
106097+create_headers() {
106098+ echo "const struct size_overflow_hash * const size_overflow_hash[$n] = {" >> "$header1"
106099+}
106100+
106101+create_array_elements() {
106102+ index=0
106103+ grep -v "nohasharray" $database | sort -n -k 4 | while read data
106104+ do
106105+ data_array=($data)
106106+ i="${data_array[3]}"
106107+ hash="${data_array[0]}"
106108+ while [[ $index -lt $i ]]
106109+ do
106110+ echo -e "\t["$index"]\t= NULL," >> "$header1"
106111+ index=$(($index + 1))
106112+ done
106113+ index=$(($index + 1))
106114+ echo -e "\t["$i"]\t= &"$hash"," >> "$header1"
106115+ done
106116+ echo '};' >> $header1
106117+}
106118+
106119+create_structs
106120+create_headers
106121+create_array_elements
106122+
106123+exit 0
106124diff --git a/tools/gcc/kallocstat_plugin.c b/tools/gcc/kallocstat_plugin.c 107804diff --git a/tools/gcc/kallocstat_plugin.c b/tools/gcc/kallocstat_plugin.c
106125new file mode 100644 107805new file mode 100644
106126index 0000000..b559327 107806index 0000000..d81c094
106127--- /dev/null 107807--- /dev/null
106128+++ b/tools/gcc/kallocstat_plugin.c 107808+++ b/tools/gcc/kallocstat_plugin.c
106129@@ -0,0 +1,182 @@ 107809@@ -0,0 +1,183 @@
106130+/* 107810+/*
106131+ * Copyright 2011-2014 by the PaX Team <pageexec@freemail.hu> 107811+ * Copyright 2011-2014 by the PaX Team <pageexec@freemail.hu>
106132+ * Licensed under the GPL v2 107812+ * Licensed under the GPL v2
@@ -106278,16 +107958,17 @@ index 0000000..b559327
106278+ unsigned int execute() { return execute_kallocstat(); } 107958+ unsigned int execute() { return execute_kallocstat(); }
106279+}; 107959+};
106280+} 107960+}
106281+#endif
106282+ 107961+
106283+static struct opt_pass *make_kallocstat_pass(void) 107962+static opt_pass *make_kallocstat_pass(void)
106284+{ 107963+{
106285+#if BUILDING_GCC_VERSION >= 4009
106286+ return new kallocstat_pass(); 107964+ return new kallocstat_pass();
107965+}
106287+#else 107966+#else
107967+static struct opt_pass *make_kallocstat_pass(void)
107968+{
106288+ return &kallocstat_pass.pass; 107969+ return &kallocstat_pass.pass;
106289+#endif
106290+} 107970+}
107971+#endif
106291+ 107972+
106292+int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version) 107973+int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version)
106293+{ 107974+{
@@ -106311,10 +107992,10 @@ index 0000000..b559327
106311+} 107992+}
106312diff --git a/tools/gcc/kernexec_plugin.c b/tools/gcc/kernexec_plugin.c 107993diff --git a/tools/gcc/kernexec_plugin.c b/tools/gcc/kernexec_plugin.c
106313new file mode 100644 107994new file mode 100644
106314index 0000000..dd73713 107995index 0000000..89f256d
106315--- /dev/null 107996--- /dev/null
106316+++ b/tools/gcc/kernexec_plugin.c 107997+++ b/tools/gcc/kernexec_plugin.c
106317@@ -0,0 +1,519 @@ 107998@@ -0,0 +1,522 @@
106318+/* 107999+/*
106319+ * Copyright 2011-2014 by the PaX Team <pageexec@freemail.hu> 108000+ * Copyright 2011-2014 by the PaX Team <pageexec@freemail.hu>
106320+ * Licensed under the GPL v2 108001+ * Licensed under the GPL v2
@@ -106741,34 +108422,37 @@ index 0000000..dd73713
106741+ unsigned int execute() { return execute_kernexec_retaddr(); } 108422+ unsigned int execute() { return execute_kernexec_retaddr(); }
106742+}; 108423+};
106743+} 108424+}
106744+#endif
106745+ 108425+
106746+static struct opt_pass *make_kernexec_reload_pass(void) 108426+static opt_pass *make_kernexec_reload_pass(void)
106747+{ 108427+{
106748+#if BUILDING_GCC_VERSION >= 4009
106749+ return new kernexec_reload_pass(); 108428+ return new kernexec_reload_pass();
108429+}
108430+
108431+static opt_pass *make_kernexec_fptr_pass(void)
108432+{
108433+ return new kernexec_fptr_pass();
108434+}
108435+
108436+static opt_pass *make_kernexec_retaddr_pass(void)
108437+{
108438+ return new kernexec_retaddr_pass();
108439+}
106750+#else 108440+#else
108441+static struct opt_pass *make_kernexec_reload_pass(void)
108442+{
106751+ return &kernexec_reload_pass.pass; 108443+ return &kernexec_reload_pass.pass;
106752+#endif
106753+} 108444+}
106754+ 108445+
106755+static struct opt_pass *make_kernexec_fptr_pass(void) 108446+static struct opt_pass *make_kernexec_fptr_pass(void)
106756+{ 108447+{
106757+#if BUILDING_GCC_VERSION >= 4009
106758+ return new kernexec_fptr_pass();
106759+#else
106760+ return &kernexec_fptr_pass.pass; 108448+ return &kernexec_fptr_pass.pass;
106761+#endif
106762+} 108449+}
106763+ 108450+
106764+static struct opt_pass *make_kernexec_retaddr_pass(void) 108451+static struct opt_pass *make_kernexec_retaddr_pass(void)
106765+{ 108452+{
106766+#if BUILDING_GCC_VERSION >= 4009
106767+ return new kernexec_retaddr_pass();
106768+#else
106769+ return &kernexec_retaddr_pass.pass; 108453+ return &kernexec_retaddr_pass.pass;
106770+#endif
106771+} 108454+}
108455+#endif
106772+ 108456+
106773+int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version) 108457+int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version)
106774+{ 108458+{
@@ -106836,10 +108520,10 @@ index 0000000..dd73713
106836+} 108520+}
106837diff --git a/tools/gcc/latent_entropy_plugin.c b/tools/gcc/latent_entropy_plugin.c 108521diff --git a/tools/gcc/latent_entropy_plugin.c b/tools/gcc/latent_entropy_plugin.c
106838new file mode 100644 108522new file mode 100644
106839index 0000000..1a98bed 108523index 0000000..39d7cc7
106840--- /dev/null 108524--- /dev/null
106841+++ b/tools/gcc/latent_entropy_plugin.c 108525+++ b/tools/gcc/latent_entropy_plugin.c
106842@@ -0,0 +1,451 @@ 108526@@ -0,0 +1,462 @@
106843+/* 108527+/*
106844+ * Copyright 2012-2014 by the PaX Team <pageexec@freemail.hu> 108528+ * Copyright 2012-2014 by the PaX Team <pageexec@freemail.hu>
106845+ * Licensed under the GPL v2 108529+ * Licensed under the GPL v2
@@ -106868,7 +108552,7 @@ index 0000000..1a98bed
106868+static tree latent_entropy_decl; 108552+static tree latent_entropy_decl;
106869+ 108553+
106870+static struct plugin_info latent_entropy_plugin_info = { 108554+static struct plugin_info latent_entropy_plugin_info = {
106871+ .version = "201402240545", 108555+ .version = "201403280150",
106872+ .help = NULL 108556+ .help = NULL
106873+}; 108557+};
106874+ 108558+
@@ -107040,6 +108724,10 @@ index 0000000..1a98bed
107040+ 108724+
107041+static bool gate_latent_entropy(void) 108725+static bool gate_latent_entropy(void)
107042+{ 108726+{
108727+ // don't bother with noreturn functions for now
108728+ if (TREE_THIS_VOLATILE(current_function_decl))
108729+ return false;
108730+
107043+ return lookup_attribute("latent_entropy", DECL_ATTRIBUTES(current_function_decl)) != NULL_TREE; 108731+ return lookup_attribute("latent_entropy", DECL_ATTRIBUTES(current_function_decl)) != NULL_TREE;
107044+} 108732+}
107045+ 108733+
@@ -107129,7 +108817,11 @@ index 0000000..1a98bed
107129+ tree local_entropy; 108817+ tree local_entropy;
107130+ 108818+
107131+ if (!latent_entropy_decl) { 108819+ if (!latent_entropy_decl) {
108820+#if BUILDING_GCC_VERSION >= 4009
108821+ varpool_node *node;
108822+#else
107132+ struct varpool_node *node; 108823+ struct varpool_node *node;
108824+#endif
107133+ 108825+
107134+ FOR_EACH_VARIABLE(node) { 108826+ FOR_EACH_VARIABLE(node) {
107135+ tree var = NODE_DECL(node); 108827+ tree var = NODE_DECL(node);
@@ -107164,7 +108856,8 @@ index 0000000..1a98bed
107164+ gsi_insert_after(&gsi, assign, GSI_NEW_STMT); 108856+ gsi_insert_after(&gsi, assign, GSI_NEW_STMT);
107165+ update_stmt(assign); 108857+ update_stmt(assign);
107166+//debug_bb(bb); 108858+//debug_bb(bb);
107167+ bb = bb->next_bb; 108859+ gcc_assert(single_succ_p(bb));
108860+ bb = single_succ(bb);
107168+ 108861+
107169+ // 3. instrument each BB with an operation on the local entropy variable 108862+ // 3. instrument each BB with an operation on the local entropy variable
107170+ while (bb != EXIT_BLOCK_PTR_FOR_FN(cfun)) { 108863+ while (bb != EXIT_BLOCK_PTR_FOR_FN(cfun)) {
@@ -107174,8 +108867,9 @@ index 0000000..1a98bed
107174+ }; 108867+ };
107175+ 108868+
107176+ // 4. mix local entropy into the global entropy variable 108869+ // 4. mix local entropy into the global entropy variable
107177+ perturb_latent_entropy(EXIT_BLOCK_PTR_FOR_FN(cfun)->prev_bb, local_entropy); 108870+ gcc_assert(single_pred_p(EXIT_BLOCK_PTR_FOR_FN(cfun)));
107178+//debug_bb(EXIT_BLOCK_PTR_FOR_FN(cfun)->prev_bb); 108871+ perturb_latent_entropy(single_pred(EXIT_BLOCK_PTR_FOR_FN(cfun)), local_entropy);
108872+//debug_bb(single_pred(EXIT_BLOCK_PTR_FOR_FN(cfun)));
107179+ return 0; 108873+ return 0;
107180+} 108874+}
107181+ 108875+
@@ -107246,16 +108940,17 @@ index 0000000..1a98bed
107246+ unsigned int execute() { return execute_latent_entropy(); } 108940+ unsigned int execute() { return execute_latent_entropy(); }
107247+}; 108941+};
107248+} 108942+}
107249+#endif
107250+ 108943+
107251+static struct opt_pass *make_latent_entropy_pass(void) 108944+static opt_pass *make_latent_entropy_pass(void)
107252+{ 108945+{
107253+#if BUILDING_GCC_VERSION >= 4009
107254+ return new latent_entropy_pass(); 108946+ return new latent_entropy_pass();
108947+}
107255+#else 108948+#else
108949+static struct opt_pass *make_latent_entropy_pass(void)
108950+{
107256+ return &latent_entropy_pass.pass; 108951+ return &latent_entropy_pass.pass;
107257+#endif
107258+} 108952+}
108953+#endif
107259+ 108954+
107260+int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version) 108955+int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version)
107261+{ 108956+{
@@ -108207,12 +109902,4344 @@ index 0000000..8dafb22
108207+ 109902+
108208+ return 0; 109903+ return 0;
108209+} 109904+}
108210diff --git a/tools/gcc/size_overflow_hash.data b/tools/gcc/size_overflow_hash.data 109905diff --git a/tools/gcc/size_overflow_plugin/.gitignore b/tools/gcc/size_overflow_plugin/.gitignore
109906new file mode 100644
109907index 0000000..92d3b0c
109908--- /dev/null
109909+++ b/tools/gcc/size_overflow_plugin/.gitignore
109910@@ -0,0 +1,2 @@
109911+size_overflow_hash.h
109912+size_overflow_hash_aux.h
109913diff --git a/tools/gcc/size_overflow_plugin/Makefile b/tools/gcc/size_overflow_plugin/Makefile
109914new file mode 100644
109915index 0000000..1ae2ed5
109916--- /dev/null
109917+++ b/tools/gcc/size_overflow_plugin/Makefile
109918@@ -0,0 +1,20 @@
109919+$(HOSTLIBS)-$(CONFIG_PAX_SIZE_OVERFLOW) += size_overflow_plugin.so
109920+always := $($(HOSTLIBS)-y)
109921+
109922+size_overflow_plugin-objs := $(patsubst $(srctree)/$(src)/%.c,%.o,$(wildcard $(srctree)/$(src)/*.c))
109923+
109924+$(patsubst $(srctree)/$(src)/%.c,$(obj)/%.o,$(wildcard $(srctree)/$(src)/*.c)): $(objtree)/$(obj)/size_overflow_hash.h $(objtree)/$(obj)/size_overflow_hash_aux.h
109925+
109926+quiet_cmd_build_size_overflow_hash = GENHASH $@
109927+ cmd_build_size_overflow_hash = \
109928+ $(CONFIG_SHELL) $(srctree)/$(src)/generate_size_overflow_hash.sh -s size_overflow_hash -d $< -o $@
109929+$(objtree)/$(obj)/size_overflow_hash.h: $(src)/size_overflow_hash.data FORCE
109930+ $(call if_changed,build_size_overflow_hash)
109931+
109932+quiet_cmd_build_size_overflow_hash_aux = GENHASH $@
109933+ cmd_build_size_overflow_hash_aux = \
109934+ $(CONFIG_SHELL) $(srctree)/$(src)/generate_size_overflow_hash.sh -s size_overflow_hash_aux -d $< -o $@
109935+$(objtree)/$(obj)/size_overflow_hash_aux.h: $(src)/size_overflow_hash_aux.data FORCE
109936+ $(call if_changed,build_size_overflow_hash_aux)
109937+
109938+targets += size_overflow_hash.h size_overflow_hash_aux.h
109939diff --git a/tools/gcc/size_overflow_plugin/generate_size_overflow_hash.sh b/tools/gcc/size_overflow_plugin/generate_size_overflow_hash.sh
109940new file mode 100644
109941index 0000000..12b1e3b
109942--- /dev/null
109943+++ b/tools/gcc/size_overflow_plugin/generate_size_overflow_hash.sh
109944@@ -0,0 +1,102 @@
109945+#!/bin/bash
109946+
109947+# This script generates the hash table (size_overflow_hash.h) for the size_overflow gcc plugin (size_overflow_plugin.c).
109948+
109949+header1="size_overflow_hash.h"
109950+database="size_overflow_hash.data"
109951+n=65536
109952+hashtable_name="size_overflow_hash"
109953+
109954+usage() {
109955+cat <<EOF
109956+usage: $0 options
109957+OPTIONS:
109958+ -h|--help help
109959+ -o header file
109960+ -d database file
109961+ -n hash array size
109962+ -s name of the hash table
109963+EOF
109964+ return 0
109965+}
109966+
109967+while true
109968+do
109969+ case "$1" in
109970+ -h|--help) usage && exit 0;;
109971+ -n) n=$2; shift 2;;
109972+ -o) header1="$2"; shift 2;;
109973+ -d) database="$2"; shift 2;;
109974+ -s) hashtable_name="$2"; shift 2;;
109975+ --) shift 1; break ;;
109976+ *) break ;;
109977+ esac
109978+done
109979+
109980+create_defines() {
109981+ for i in `seq 0 31`
109982+ do
109983+ echo -e "#define PARAM"$i" (1U << "$i")" >> "$header1"
109984+ done
109985+ echo >> "$header1"
109986+}
109987+
109988+create_structs() {
109989+ rm -f "$header1"
109990+
109991+ create_defines
109992+
109993+ cat "$database" | while read data
109994+ do
109995+ data_array=($data)
109996+ struct_hash_name="${data_array[0]}"
109997+ funcn="${data_array[1]}"
109998+ params="${data_array[2]}"
109999+ next="${data_array[4]}"
110000+
110001+ echo "const struct size_overflow_hash $struct_hash_name = {" >> "$header1"
110002+
110003+ echo -e "\t.next\t= $next,\n\t.name\t= \"$funcn\"," >> "$header1"
110004+ echo -en "\t.param\t= " >> "$header1"
110005+ line=
110006+ for param_num in ${params//-/ };
110007+ do
110008+ line="${line}PARAM"$param_num"|"
110009+ done
110010+
110011+ echo -e "${line%?},\n};\n" >> "$header1"
110012+ done
110013+}
110014+
110015+create_headers() {
110016+ echo "const struct size_overflow_hash * const $hashtable_name[$n] = {" >> "$header1"
110017+}
110018+
110019+create_array_elements() {
110020+ index=0
110021+ grep -v "nohasharray" $database | sort -n -k 4 | while read data
110022+ do
110023+ data_array=($data)
110024+ i="${data_array[3]}"
110025+ hash="${data_array[0]}"
110026+ while [[ $index -lt $i ]]
110027+ do
110028+ echo -e "\t["$index"]\t= NULL," >> "$header1"
110029+ index=$(($index + 1))
110030+ done
110031+ index=$(($index + 1))
110032+ echo -e "\t["$i"]\t= &"$hash"," >> "$header1"
110033+ done
110034+ echo '};' >> $header1
110035+}
110036+
110037+size_overflow_plugin_dir=`dirname $header1`
110038+if [ "$size_overflow_plugin_dir" != '.' ]; then
110039+ mkdir -p "$size_overflow_plugin_dir" 2> /dev/null
110040+fi
110041+
110042+create_structs
110043+create_headers
110044+create_array_elements
110045+
110046+exit 0
110047diff --git a/tools/gcc/size_overflow_plugin/insert_size_overflow_asm.c b/tools/gcc/size_overflow_plugin/insert_size_overflow_asm.c
110048new file mode 100644
110049index 0000000..3e8148c
110050--- /dev/null
110051+++ b/tools/gcc/size_overflow_plugin/insert_size_overflow_asm.c
110052@@ -0,0 +1,790 @@
110053+/*
110054+ * Copyright 2011-2014 by Emese Revfy <re.emese@gmail.com>
110055+ * Licensed under the GPL v2, or (at your option) v3
110056+ *
110057+ * Homepage:
110058+ * http://www.grsecurity.net/~ephox/overflow_plugin/
110059+ *
110060+ * Documentation:
110061+ * http://forums.grsecurity.net/viewtopic.php?f=7&t=3043
110062+ *
110063+ * This plugin recomputes expressions of function arguments marked by a size_overflow attribute
110064+ * with double integer precision (DImode/TImode for 32/64 bit integer types).
110065+ * The recomputed argument is checked against TYPE_MAX and an event is logged on overflow and the triggering process is killed.
110066+ *
110067+ * Usage:
110068+ * $ make
110069+ * $ make run
110070+ */
110071+
110072+#include "gcc-common.h"
110073+#include "size_overflow.h"
110074+
110075+static void search_size_overflow_attribute(struct pointer_set_t *visited, tree lhs);
110076+static enum mark search_intentional(struct pointer_set_t *visited, const_tree lhs);
110077+
110078+// data for the size_overflow asm stmt
110079+struct asm_data {
110080+ gimple def_stmt;
110081+ tree input;
110082+ tree output;
110083+};
110084+
110085+#if BUILDING_GCC_VERSION <= 4007
110086+static VEC(tree, gc) *create_asm_io_list(tree string, tree io)
110087+#else
110088+static vec<tree, va_gc> *create_asm_io_list(tree string, tree io)
110089+#endif
110090+{
110091+ tree list;
110092+#if BUILDING_GCC_VERSION <= 4007
110093+ VEC(tree, gc) *vec_list = NULL;
110094+#else
110095+ vec<tree, va_gc> *vec_list = NULL;
110096+#endif
110097+
110098+ list = build_tree_list(NULL_TREE, string);
110099+ list = chainon(NULL_TREE, build_tree_list(list, io));
110100+#if BUILDING_GCC_VERSION <= 4007
110101+ VEC_safe_push(tree, gc, vec_list, list);
110102+#else
110103+ vec_safe_push(vec_list, list);
110104+#endif
110105+ return vec_list;
110106+}
110107+
110108+static void create_asm_stmt(const char *str, tree str_input, tree str_output, struct asm_data *asm_data)
110109+{
110110+ gimple asm_stmt;
110111+ gimple_stmt_iterator gsi;
110112+#if BUILDING_GCC_VERSION <= 4007
110113+ VEC(tree, gc) *input, *output = NULL;
110114+#else
110115+ vec<tree, va_gc> *input, *output = NULL;
110116+#endif
110117+
110118+ input = create_asm_io_list(str_input, asm_data->input);
110119+
110120+ if (asm_data->output)
110121+ output = create_asm_io_list(str_output, asm_data->output);
110122+
110123+ asm_stmt = gimple_build_asm_vec(str, input, output, NULL, NULL);
110124+ gsi = gsi_for_stmt(asm_data->def_stmt);
110125+ gsi_insert_after(&gsi, asm_stmt, GSI_NEW_STMT);
110126+
110127+ if (asm_data->output)
110128+ SSA_NAME_DEF_STMT(asm_data->output) = asm_stmt;
110129+}
110130+
110131+static void replace_call_lhs(const struct asm_data *asm_data)
110132+{
110133+ gimple_set_lhs(asm_data->def_stmt, asm_data->input);
110134+ update_stmt(asm_data->def_stmt);
110135+ SSA_NAME_DEF_STMT(asm_data->input) = asm_data->def_stmt;
110136+}
110137+
110138+static enum mark search_intentional_phi(struct pointer_set_t *visited, const_tree result)
110139+{
110140+ enum mark cur_fndecl_attr;
110141+ gimple phi = get_def_stmt(result);
110142+ unsigned int i, n = gimple_phi_num_args(phi);
110143+
110144+ pointer_set_insert(visited, phi);
110145+ for (i = 0; i < n; i++) {
110146+ tree arg = gimple_phi_arg_def(phi, i);
110147+
110148+ cur_fndecl_attr = search_intentional(visited, arg);
110149+ if (cur_fndecl_attr != MARK_NO)
110150+ return cur_fndecl_attr;
110151+ }
110152+ return MARK_NO;
110153+}
110154+
110155+static enum mark search_intentional_binary(struct pointer_set_t *visited, const_tree lhs)
110156+{
110157+ enum mark cur_fndecl_attr;
110158+ const_tree rhs1, rhs2;
110159+ gimple def_stmt = get_def_stmt(lhs);
110160+
110161+ rhs1 = gimple_assign_rhs1(def_stmt);
110162+ rhs2 = gimple_assign_rhs2(def_stmt);
110163+
110164+ cur_fndecl_attr = search_intentional(visited, rhs1);
110165+ if (cur_fndecl_attr != MARK_NO)
110166+ return cur_fndecl_attr;
110167+ return search_intentional(visited, rhs2);
110168+}
110169+
110170+// Look up the intentional_overflow attribute on the caller and the callee functions.
110171+static enum mark search_intentional(struct pointer_set_t *visited, const_tree lhs)
110172+{
110173+ const_gimple def_stmt;
110174+
110175+ if (TREE_CODE(lhs) != SSA_NAME)
110176+ return get_intentional_attr_type(lhs);
110177+
110178+ def_stmt = get_def_stmt(lhs);
110179+ if (!def_stmt)
110180+ return MARK_NO;
110181+
110182+ if (pointer_set_contains(visited, def_stmt))
110183+ return MARK_NO;
110184+
110185+ switch (gimple_code(def_stmt)) {
110186+ case GIMPLE_NOP:
110187+ return search_intentional(visited, SSA_NAME_VAR(lhs));
110188+ case GIMPLE_ASM:
110189+ if (is_size_overflow_intentional_asm_turn_off(def_stmt))
110190+ return MARK_TURN_OFF;
110191+ return MARK_NO;
110192+ case GIMPLE_CALL:
110193+ return MARK_NO;
110194+ case GIMPLE_PHI:
110195+ return search_intentional_phi(visited, lhs);
110196+ case GIMPLE_ASSIGN:
110197+ switch (gimple_num_ops(def_stmt)) {
110198+ case 2:
110199+ return search_intentional(visited, gimple_assign_rhs1(def_stmt));
110200+ case 3:
110201+ return search_intentional_binary(visited, lhs);
110202+ }
110203+ case GIMPLE_RETURN:
110204+ return MARK_NO;
110205+ default:
110206+ debug_gimple_stmt((gimple)def_stmt);
110207+ error("%s: unknown gimple code", __func__);
110208+ gcc_unreachable();
110209+ }
110210+}
110211+
110212+// Check the intentional_overflow attribute and create the asm comment string for the size_overflow asm stmt.
110213+static enum mark check_intentional_attribute_gimple(const_tree arg, const_gimple stmt, unsigned int argnum)
110214+{
110215+ const_tree fndecl;
110216+ struct pointer_set_t *visited;
110217+ enum mark cur_fndecl_attr, decl_attr = MARK_NO;
110218+
110219+ fndecl = get_interesting_orig_fndecl(stmt, argnum);
110220+ if (is_end_intentional_intentional_attr(fndecl, argnum))
110221+ decl_attr = MARK_NOT_INTENTIONAL;
110222+ else if (is_yes_intentional_attr(fndecl, argnum))
110223+ decl_attr = MARK_YES;
110224+ else if (is_turn_off_intentional_attr(fndecl) || is_turn_off_intentional_attr(DECL_ORIGIN(current_function_decl))) {
110225+ return MARK_TURN_OFF;
110226+ }
110227+
110228+ visited = pointer_set_create();
110229+ cur_fndecl_attr = search_intentional(visited, arg);
110230+ pointer_set_destroy(visited);
110231+
110232+ switch (cur_fndecl_attr) {
110233+ case MARK_NO:
110234+ case MARK_TURN_OFF:
110235+ return cur_fndecl_attr;
110236+ default:
110237+ print_missing_intentional(decl_attr, cur_fndecl_attr, fndecl, argnum);
110238+ return MARK_YES;
110239+ }
110240+}
110241+
110242+static void check_missing_size_overflow_attribute(tree var)
110243+{
110244+ tree orig_fndecl;
110245+ unsigned int num;
110246+
110247+ if (is_a_return_check(var))
110248+ orig_fndecl = DECL_ORIGIN(var);
110249+ else
110250+ orig_fndecl = DECL_ORIGIN(current_function_decl);
110251+
110252+ num = get_function_num(var, orig_fndecl);
110253+ if (num == CANNOT_FIND_ARG)
110254+ return;
110255+
110256+ is_missing_function(orig_fndecl, num);
110257+}
110258+
110259+static void search_size_overflow_attribute_phi(struct pointer_set_t *visited, const_tree result)
110260+{
110261+ gimple phi = get_def_stmt(result);
110262+ unsigned int i, n = gimple_phi_num_args(phi);
110263+
110264+ pointer_set_insert(visited, phi);
110265+ for (i = 0; i < n; i++) {
110266+ tree arg = gimple_phi_arg_def(phi, i);
110267+
110268+ search_size_overflow_attribute(visited, arg);
110269+ }
110270+}
110271+
110272+static void search_size_overflow_attribute_binary(struct pointer_set_t *visited, const_tree lhs)
110273+{
110274+ const_gimple def_stmt = get_def_stmt(lhs);
110275+ tree rhs1, rhs2;
110276+
110277+ rhs1 = gimple_assign_rhs1(def_stmt);
110278+ rhs2 = gimple_assign_rhs2(def_stmt);
110279+
110280+ search_size_overflow_attribute(visited, rhs1);
110281+ search_size_overflow_attribute(visited, rhs2);
110282+}
110283+
110284+static void search_size_overflow_attribute(struct pointer_set_t *visited, tree lhs)
110285+{
110286+ const_gimple def_stmt;
110287+
110288+ if (TREE_CODE(lhs) == PARM_DECL) {
110289+ check_missing_size_overflow_attribute(lhs);
110290+ return;
110291+ }
110292+
110293+ def_stmt = get_def_stmt(lhs);
110294+ if (!def_stmt)
110295+ return;
110296+
110297+ if (pointer_set_insert(visited, def_stmt))
110298+ return;
110299+
110300+ switch (gimple_code(def_stmt)) {
110301+ case GIMPLE_NOP:
110302+ return search_size_overflow_attribute(visited, SSA_NAME_VAR(lhs));
110303+ case GIMPLE_ASM:
110304+ return;
110305+ case GIMPLE_CALL: {
110306+ tree fndecl = gimple_call_fndecl(def_stmt);
110307+
110308+ if (fndecl == NULL_TREE)
110309+ return;
110310+ check_missing_size_overflow_attribute(fndecl);
110311+ return;
110312+ }
110313+ case GIMPLE_PHI:
110314+ return search_size_overflow_attribute_phi(visited, lhs);
110315+ case GIMPLE_ASSIGN:
110316+ switch (gimple_num_ops(def_stmt)) {
110317+ case 2:
110318+ return search_size_overflow_attribute(visited, gimple_assign_rhs1(def_stmt));
110319+ case 3:
110320+ return search_size_overflow_attribute_binary(visited, lhs);
110321+ }
110322+ default:
110323+ debug_gimple_stmt((gimple)def_stmt);
110324+ error("%s: unknown gimple code", __func__);
110325+ gcc_unreachable();
110326+ }
110327+}
110328+
110329+// Search missing entries in the hash table (invoked from the gimple pass)
110330+static void search_missing_size_overflow_attribute_gimple(const_gimple stmt, unsigned int num)
110331+{
110332+ tree fndecl = NULL_TREE;
110333+ tree lhs;
110334+ struct pointer_set_t *visited;
110335+
110336+ if (is_turn_off_intentional_attr(DECL_ORIGIN(current_function_decl)))
110337+ return;
110338+
110339+ if (num == 0) {
110340+ gcc_assert(gimple_code(stmt) == GIMPLE_RETURN);
110341+ lhs = gimple_return_retval(stmt);
110342+ } else {
110343+ gcc_assert(is_gimple_call(stmt));
110344+ lhs = gimple_call_arg(stmt, num - 1);
110345+ fndecl = gimple_call_fndecl(stmt);
110346+ }
110347+
110348+ if (fndecl != NULL_TREE && is_turn_off_intentional_attr(DECL_ORIGIN(fndecl)))
110349+ return;
110350+
110351+ visited = pointer_set_create();
110352+ search_size_overflow_attribute(visited, lhs);
110353+ pointer_set_destroy(visited);
110354+}
110355+
110356+static void create_output_from_phi(gimple stmt, unsigned int argnum, struct asm_data *asm_data)
110357+{
110358+ gimple_stmt_iterator gsi;
110359+ gimple assign;
110360+
110361+ assign = gimple_build_assign(asm_data->input, asm_data->output);
110362+ gsi = gsi_for_stmt(stmt);
110363+ gsi_insert_before(&gsi, assign, GSI_NEW_STMT);
110364+ asm_data->def_stmt = assign;
110365+
110366+ asm_data->output = create_new_var(TREE_TYPE(asm_data->output));
110367+ asm_data->output = make_ssa_name(asm_data->output, stmt);
110368+ if (gimple_code(stmt) == GIMPLE_RETURN)
110369+ gimple_return_set_retval(stmt, asm_data->output);
110370+ else
110371+ gimple_call_set_arg(stmt, argnum - 1, asm_data->output);
110372+ update_stmt(stmt);
110373+}
110374+
110375+static char *create_asm_comment(unsigned int argnum, const_gimple stmt , const char *mark_str)
110376+{
110377+ const char *fn_name;
110378+ char *asm_comment;
110379+ unsigned int len;
110380+
110381+ if (argnum == 0)
110382+ fn_name = DECL_NAME_POINTER(current_function_decl);
110383+ else
110384+ fn_name = DECL_NAME_POINTER(gimple_call_fndecl(stmt));
110385+
110386+ len = asprintf(&asm_comment, "%s %s %u", mark_str, fn_name, argnum);
110387+ gcc_assert(len > 0);
110388+
110389+ return asm_comment;
110390+}
110391+
110392+static const char *convert_mark_to_str(enum mark mark)
110393+{
110394+ switch (mark) {
110395+ case MARK_NO:
110396+ return OK_ASM_STR;
110397+ case MARK_YES:
110398+ case MARK_NOT_INTENTIONAL:
110399+ return YES_ASM_STR;
110400+ case MARK_TURN_OFF:
110401+ return TURN_OFF_ASM_STR;
110402+ }
110403+
110404+ gcc_unreachable();
110405+}
110406+
110407+/* Create the input of the size_overflow asm stmt.
110408+ * When the arg of the callee function is a parm_decl it creates this kind of size_overflow asm stmt:
110409+ * __asm__("# size_overflow MARK_YES" : : "rm" size_1(D));
110410+ * The input field in asm_data will be empty if there is no need for further size_overflow asm stmt insertion.
110411+ * otherwise create the input (for a phi stmt the output too) of the asm stmt.
110412+ */
110413+static void create_asm_input(gimple stmt, unsigned int argnum, struct asm_data *asm_data)
110414+{
110415+ if (!asm_data->def_stmt) {
110416+ asm_data->input = NULL_TREE;
110417+ return;
110418+ }
110419+
110420+ asm_data->input = create_new_var(TREE_TYPE(asm_data->output));
110421+ asm_data->input = make_ssa_name(asm_data->input, asm_data->def_stmt);
110422+
110423+ switch (gimple_code(asm_data->def_stmt)) {
110424+ case GIMPLE_ASSIGN:
110425+ case GIMPLE_CALL:
110426+ replace_call_lhs(asm_data);
110427+ break;
110428+ case GIMPLE_PHI:
110429+ create_output_from_phi(stmt, argnum, asm_data);
110430+ break;
110431+ case GIMPLE_NOP: {
110432+ enum mark mark;
110433+ const char *mark_str;
110434+ char *asm_comment;
110435+
110436+ mark = check_intentional_attribute_gimple(asm_data->output, stmt, argnum);
110437+
110438+ asm_data->input = asm_data->output;
110439+ asm_data->output = NULL;
110440+ asm_data->def_stmt = stmt;
110441+
110442+ mark_str = convert_mark_to_str(mark);
110443+ asm_comment = create_asm_comment(argnum, stmt, mark_str);
110444+
110445+ create_asm_stmt(asm_comment, build_string(3, "rm"), NULL, asm_data);
110446+ free(asm_comment);
110447+ asm_data->input = NULL_TREE;
110448+ break;
110449+ }
110450+ case GIMPLE_ASM:
110451+ if (is_size_overflow_asm(asm_data->def_stmt)) {
110452+ asm_data->input = NULL_TREE;
110453+ break;
110454+ }
110455+ default:
110456+ debug_gimple_stmt(asm_data->def_stmt);
110457+ gcc_unreachable();
110458+ }
110459+}
110460+
110461+/* This is the gimple part of searching for a missing size_overflow attribute. If the intentional_overflow attribute type
110462+ * is of the right kind create the appropriate size_overflow asm stmts:
110463+ * __asm__("# size_overflow" : =rm" D.3344_8 : "0" cicus.4_16);
110464+ * __asm__("# size_overflow MARK_YES" : : "rm" size_1(D));
110465+ */
110466+static void create_size_overflow_asm(gimple stmt, tree output_node, unsigned int argnum)
110467+{
110468+ struct asm_data asm_data;
110469+ const char *mark_str;
110470+ char *asm_comment;
110471+ enum mark mark;
110472+
110473+ if (is_gimple_constant(output_node))
110474+ return;
110475+
110476+ asm_data.output = output_node;
110477+ mark = check_intentional_attribute_gimple(asm_data.output, stmt, argnum);
110478+ if (mark != MARK_TURN_OFF)
110479+ search_missing_size_overflow_attribute_gimple(stmt, argnum);
110480+
110481+ asm_data.def_stmt = get_def_stmt(asm_data.output);
110482+ if (is_size_overflow_intentional_asm_turn_off(asm_data.def_stmt))
110483+ return;
110484+
110485+ create_asm_input(stmt, argnum, &asm_data);
110486+ if (asm_data.input == NULL_TREE)
110487+ return;
110488+
110489+ mark_str = convert_mark_to_str(mark);
110490+ asm_comment = create_asm_comment(argnum, stmt, mark_str);
110491+ create_asm_stmt(asm_comment, build_string(2, "0"), build_string(4, "=rm"), &asm_data);
110492+ free(asm_comment);
110493+}
110494+
110495+// Insert an asm stmt with "MARK_TURN_OFF", "MARK_YES" or "MARK_NOT_INTENTIONAL".
110496+static bool create_mark_asm(gimple stmt, enum mark mark)
110497+{
110498+ struct asm_data asm_data;
110499+ const char *asm_str;
110500+
110501+ switch (mark) {
110502+ case MARK_TURN_OFF:
110503+ asm_str = TURN_OFF_ASM_STR;
110504+ break;
110505+ case MARK_NOT_INTENTIONAL:
110506+ case MARK_YES:
110507+ asm_str = YES_ASM_STR;
110508+ break;
110509+ default:
110510+ gcc_unreachable();
110511+ }
110512+
110513+ asm_data.def_stmt = stmt;
110514+ asm_data.output = gimple_call_lhs(stmt);
110515+
110516+ if (asm_data.output == NULL_TREE) {
110517+ asm_data.input = gimple_call_arg(stmt, 0);
110518+ if (is_gimple_constant(asm_data.input))
110519+ return false;
110520+ asm_data.output = NULL;
110521+ create_asm_stmt(asm_str, build_string(3, "rm"), NULL, &asm_data);
110522+ return true;
110523+ }
110524+
110525+ create_asm_input(stmt, 0, &asm_data);
110526+ gcc_assert(asm_data.input != NULL_TREE);
110527+
110528+ create_asm_stmt(asm_str, build_string(2, "0"), build_string(4, "=rm"), &asm_data);
110529+ return true;
110530+}
110531+
110532+static bool is_from_cast(const_tree node)
110533+{
110534+ gimple def_stmt = get_def_stmt(node);
110535+
110536+ if (!def_stmt)
110537+ return false;
110538+
110539+ if (gimple_assign_cast_p(def_stmt))
110540+ return true;
110541+
110542+ return false;
110543+}
110544+
110545+// Skip duplication when there is a minus expr and the type of rhs1 or rhs2 is a pointer_type.
110546+static bool skip_ptr_minus(gimple stmt)
110547+{
110548+ const_tree rhs1, rhs2, ptr1_rhs, ptr2_rhs;
110549+
110550+ if (gimple_assign_rhs_code(stmt) != MINUS_EXPR)
110551+ return false;
110552+
110553+ rhs1 = gimple_assign_rhs1(stmt);
110554+ if (!is_from_cast(rhs1))
110555+ return false;
110556+
110557+ rhs2 = gimple_assign_rhs2(stmt);
110558+ if (!is_from_cast(rhs2))
110559+ return false;
110560+
110561+ ptr1_rhs = gimple_assign_rhs1(get_def_stmt(rhs1));
110562+ ptr2_rhs = gimple_assign_rhs1(get_def_stmt(rhs2));
110563+
110564+ if (TREE_CODE(TREE_TYPE(ptr1_rhs)) != POINTER_TYPE && TREE_CODE(TREE_TYPE(ptr2_rhs)) != POINTER_TYPE)
110565+ return false;
110566+
110567+ create_mark_asm(stmt, MARK_YES);
110568+ return true;
110569+}
110570+
110571+static void walk_use_def_ptr(struct pointer_set_t *visited, const_tree lhs)
110572+{
110573+ gimple def_stmt;
110574+
110575+ def_stmt = get_def_stmt(lhs);
110576+ if (!def_stmt)
110577+ return;
110578+
110579+ if (pointer_set_insert(visited, def_stmt))
110580+ return;
110581+
110582+ switch (gimple_code(def_stmt)) {
110583+ case GIMPLE_NOP:
110584+ case GIMPLE_ASM:
110585+ case GIMPLE_CALL:
110586+ break;
110587+ case GIMPLE_PHI: {
110588+ unsigned int i, n = gimple_phi_num_args(def_stmt);
110589+
110590+ pointer_set_insert(visited, def_stmt);
110591+
110592+ for (i = 0; i < n; i++) {
110593+ tree arg = gimple_phi_arg_def(def_stmt, i);
110594+
110595+ walk_use_def_ptr(visited, arg);
110596+ }
110597+ }
110598+ case GIMPLE_ASSIGN:
110599+ switch (gimple_num_ops(def_stmt)) {
110600+ case 2:
110601+ walk_use_def_ptr(visited, gimple_assign_rhs1(def_stmt));
110602+ return;
110603+ case 3:
110604+ if (skip_ptr_minus(def_stmt))
110605+ return;
110606+
110607+ walk_use_def_ptr(visited, gimple_assign_rhs1(def_stmt));
110608+ walk_use_def_ptr(visited, gimple_assign_rhs2(def_stmt));
110609+ return;
110610+ default:
110611+ return;
110612+ }
110613+ default:
110614+ debug_gimple_stmt((gimple)def_stmt);
110615+ error("%s: unknown gimple code", __func__);
110616+ gcc_unreachable();
110617+ }
110618+}
110619+
110620+// Look for a ptr - ptr expression (e.g., cpuset_common_file_read() s - page)
110621+static void insert_mark_not_intentional_asm_at_ptr(const_tree arg)
110622+{
110623+ struct pointer_set_t *visited;
110624+
110625+ visited = pointer_set_create();
110626+ walk_use_def_ptr(visited, arg);
110627+ pointer_set_destroy(visited);
110628+}
110629+
110630+// Determine the return value and insert the asm stmt to mark the return stmt.
110631+static void insert_asm_ret(gimple stmt)
110632+{
110633+ tree ret;
110634+
110635+ ret = gimple_return_retval(stmt);
110636+ create_size_overflow_asm(stmt, ret, 0);
110637+}
110638+
110639+// Determine the correct arg index and arg and insert the asm stmt to mark the stmt.
110640+static void insert_asm_arg(gimple stmt, unsigned int orig_argnum)
110641+{
110642+ tree arg;
110643+ unsigned int argnum;
110644+
110645+ argnum = get_correct_arg_count(orig_argnum, gimple_call_fndecl(stmt));
110646+ gcc_assert(argnum != 0);
110647+ if (argnum == CANNOT_FIND_ARG)
110648+ return;
110649+
110650+ arg = gimple_call_arg(stmt, argnum - 1);
110651+ gcc_assert(arg != NULL_TREE);
110652+
110653+ // skip all ptr - ptr expressions
110654+ insert_mark_not_intentional_asm_at_ptr(arg);
110655+
110656+ create_size_overflow_asm(stmt, arg, argnum);
110657+}
110658+
110659+// If a function arg or the return value is marked by the size_overflow attribute then set its index in the array.
110660+static void set_argnum_attribute(const_tree attr, bool *argnums)
110661+{
110662+ unsigned int argnum;
110663+ tree attr_value;
110664+
110665+ for (attr_value = TREE_VALUE(attr); attr_value; attr_value = TREE_CHAIN(attr_value)) {
110666+ argnum = TREE_INT_CST_LOW(TREE_VALUE(attr_value));
110667+ argnums[argnum] = true;
110668+ }
110669+}
110670+
110671+// If a function arg or the return value is in the hash table then set its index in the array.
110672+static void set_argnum_hash(tree fndecl, bool *argnums)
110673+{
110674+ unsigned int num;
110675+ const struct size_overflow_hash *hash;
110676+
110677+ hash = get_function_hash(DECL_ORIGIN(fndecl));
110678+ if (!hash)
110679+ return;
110680+
110681+ for (num = 0; num <= MAX_PARAM; num++) {
110682+ if (!(hash->param & (1U << num)))
110683+ continue;
110684+
110685+ argnums[num] = true;
110686+ }
110687+}
110688+
110689+static bool is_all_the_argnums_empty(bool *argnums)
110690+{
110691+ unsigned int i;
110692+
110693+ for (i = 0; i <= MAX_PARAM; i++)
110694+ if (argnums[i])
110695+ return false;
110696+ return true;
110697+}
110698+
110699+// Check whether the arguments or the return value of the function are in the hash table or are marked by the size_overflow attribute.
110700+static void search_interesting_args(tree fndecl, bool *argnums)
110701+{
110702+ const_tree attr;
110703+
110704+ set_argnum_hash(fndecl, argnums);
110705+ if (!is_all_the_argnums_empty(argnums))
110706+ return;
110707+
110708+ attr = lookup_attribute("size_overflow", DECL_ATTRIBUTES(fndecl));
110709+ if (attr && TREE_VALUE(attr))
110710+ set_argnum_attribute(attr, argnums);
110711+}
110712+
110713+/*
110714+ * Look up the intentional_overflow attribute that turns off ipa based duplication
110715+ * on the callee function.
110716+ */
110717+static bool is_mark_turn_off_attribute(gimple stmt)
110718+{
110719+ enum mark mark;
110720+ const_tree fndecl = gimple_call_fndecl(stmt);
110721+
110722+ mark = get_intentional_attr_type(DECL_ORIGIN(fndecl));
110723+ if (mark == MARK_TURN_OFF)
110724+ return true;
110725+ return false;
110726+}
110727+
110728+// If the argument(s) of the callee function is/are in the hash table or are marked by an attribute then mark the call stmt with an asm stmt
110729+static void handle_interesting_function(gimple stmt)
110730+{
110731+ unsigned int argnum;
110732+ tree fndecl;
110733+ bool orig_argnums[MAX_PARAM + 1] = {false};
110734+
110735+ if (gimple_call_num_args(stmt) == 0)
110736+ return;
110737+ fndecl = gimple_call_fndecl(stmt);
110738+ if (fndecl == NULL_TREE)
110739+ return;
110740+ fndecl = DECL_ORIGIN(fndecl);
110741+
110742+ if (is_mark_turn_off_attribute(stmt)) {
110743+ create_mark_asm(stmt, MARK_TURN_OFF);
110744+ return;
110745+ }
110746+
110747+ search_interesting_args(fndecl, orig_argnums);
110748+
110749+ for (argnum = 1; argnum < MAX_PARAM; argnum++)
110750+ if (orig_argnums[argnum])
110751+ insert_asm_arg(stmt, argnum);
110752+}
110753+
110754+// If the return value of the caller function is in hash table (its index is 0) then mark the return stmt with an asm stmt
110755+static void handle_interesting_ret(gimple stmt)
110756+{
110757+ bool orig_argnums[MAX_PARAM + 1] = {false};
110758+
110759+ search_interesting_args(current_function_decl, orig_argnums);
110760+
110761+ if (orig_argnums[0])
110762+ insert_asm_ret(stmt);
110763+}
110764+
110765+// Iterate over all the stmts and search for call and return stmts and mark them if they're in the hash table
110766+static unsigned int search_interesting_functions(void)
110767+{
110768+ basic_block bb;
110769+
110770+ FOR_ALL_BB_FN(bb, cfun) {
110771+ gimple_stmt_iterator gsi;
110772+
110773+ for (gsi = gsi_start_bb(bb); !gsi_end_p(gsi); gsi_next(&gsi)) {
110774+ gimple stmt = gsi_stmt(gsi);
110775+
110776+ if (is_size_overflow_asm(stmt))
110777+ continue;
110778+
110779+ if (is_gimple_call(stmt))
110780+ handle_interesting_function(stmt);
110781+ else if (gimple_code(stmt) == GIMPLE_RETURN)
110782+ handle_interesting_ret(stmt);
110783+ }
110784+ }
110785+ return 0;
110786+}
110787+
110788+/*
110789+ * A lot of functions get inlined before the ipa passes so after the build_ssa gimple pass
110790+ * this pass inserts asm stmts to mark the interesting args
110791+ * that the ipa pass will detect and insert the size overflow checks for.
110792+ */
110793+#if BUILDING_GCC_VERSION >= 4009
110794+static const struct pass_data insert_size_overflow_asm_pass_data = {
110795+#else
110796+static struct gimple_opt_pass insert_size_overflow_asm_pass = {
110797+ .pass = {
110798+#endif
110799+ .type = GIMPLE_PASS,
110800+ .name = "insert_size_overflow_asm",
110801+#if BUILDING_GCC_VERSION >= 4008
110802+ .optinfo_flags = OPTGROUP_NONE,
110803+#endif
110804+#if BUILDING_GCC_VERSION >= 4009
110805+ .has_gate = false,
110806+ .has_execute = true,
110807+#else
110808+ .gate = NULL,
110809+ .execute = search_interesting_functions,
110810+ .sub = NULL,
110811+ .next = NULL,
110812+ .static_pass_number = 0,
110813+#endif
110814+ .tv_id = TV_NONE,
110815+ .properties_required = PROP_cfg,
110816+ .properties_provided = 0,
110817+ .properties_destroyed = 0,
110818+ .todo_flags_start = 0,
110819+ .todo_flags_finish = TODO_dump_func | TODO_verify_ssa | TODO_verify_stmts | TODO_remove_unused_locals | TODO_update_ssa_no_phi | TODO_cleanup_cfg | TODO_ggc_collect | TODO_verify_flow
110820+#if BUILDING_GCC_VERSION < 4009
110821+ }
110822+#endif
110823+};
110824+
110825+#if BUILDING_GCC_VERSION >= 4009
110826+namespace {
110827+class insert_size_overflow_asm_pass : public gimple_opt_pass {
110828+public:
110829+ insert_size_overflow_asm_pass() : gimple_opt_pass(insert_size_overflow_asm_pass_data, g) {}
110830+ unsigned int execute() { return search_interesting_functions(); }
110831+};
110832+}
110833+#endif
110834+
110835+struct opt_pass *make_insert_size_overflow_asm_pass(void)
110836+{
110837+#if BUILDING_GCC_VERSION >= 4009
110838+ return new insert_size_overflow_asm_pass();
110839+#else
110840+ return &insert_size_overflow_asm_pass.pass;
110841+#endif
110842+}
110843diff --git a/tools/gcc/size_overflow_plugin/insert_size_overflow_check_core.c b/tools/gcc/size_overflow_plugin/insert_size_overflow_check_core.c
110844new file mode 100644
110845index 0000000..88469e9
110846--- /dev/null
110847+++ b/tools/gcc/size_overflow_plugin/insert_size_overflow_check_core.c
110848@@ -0,0 +1,902 @@
110849+/*
110850+ * Copyright 2011-2014 by Emese Revfy <re.emese@gmail.com>
110851+ * Licensed under the GPL v2, or (at your option) v3
110852+ *
110853+ * Homepage:
110854+ * http://www.grsecurity.net/~ephox/overflow_plugin/
110855+ *
110856+ * Documentation:
110857+ * http://forums.grsecurity.net/viewtopic.php?f=7&t=3043
110858+ *
110859+ * This plugin recomputes expressions of function arguments marked by a size_overflow attribute
110860+ * with double integer precision (DImode/TImode for 32/64 bit integer types).
110861+ * The recomputed argument is checked against TYPE_MAX and an event is logged on overflow and the triggering process is killed.
110862+ *
110863+ * Usage:
110864+ * $ make
110865+ * $ make run
110866+ */
110867+
110868+#include "gcc-common.h"
110869+#include "size_overflow.h"
110870+
110871+#define MIN_CHECK true
110872+#define MAX_CHECK false
110873+
110874+static tree get_size_overflow_type(struct visited *visited, const_gimple stmt, const_tree node)
110875+{
110876+ const_tree type;
110877+ tree new_type;
110878+
110879+ gcc_assert(node != NULL_TREE);
110880+
110881+ type = TREE_TYPE(node);
110882+
110883+ if (pointer_set_contains(visited->my_stmts, stmt))
110884+ return TREE_TYPE(node);
110885+
110886+ switch (TYPE_MODE(type)) {
110887+ case QImode:
110888+ new_type = size_overflow_type_HI;
110889+ break;
110890+ case HImode:
110891+ new_type = size_overflow_type_SI;
110892+ break;
110893+ case SImode:
110894+ new_type = size_overflow_type_DI;
110895+ break;
110896+ case DImode:
110897+ if (LONG_TYPE_SIZE == GET_MODE_BITSIZE(SImode))
110898+ new_type = TYPE_UNSIGNED(type) ? unsigned_intDI_type_node : intDI_type_node;
110899+ else
110900+ new_type = size_overflow_type_TI;
110901+ break;
110902+ case TImode:
110903+ gcc_assert(!TYPE_UNSIGNED(type));
110904+ new_type = size_overflow_type_TI;
110905+ break;
110906+ default:
110907+ debug_tree((tree)node);
110908+ error("%s: unsupported gcc configuration (%qE).", __func__, current_function_decl);
110909+ gcc_unreachable();
110910+ }
110911+
110912+ if (TYPE_QUALS(type) != 0)
110913+ return build_qualified_type(new_type, TYPE_QUALS(type));
110914+ return new_type;
110915+}
110916+
110917+static tree get_lhs(const_gimple stmt)
110918+{
110919+ switch (gimple_code(stmt)) {
110920+ case GIMPLE_ASSIGN:
110921+ case GIMPLE_CALL:
110922+ return gimple_get_lhs(stmt);
110923+ case GIMPLE_PHI:
110924+ return gimple_phi_result(stmt);
110925+ default:
110926+ return NULL_TREE;
110927+ }
110928+}
110929+
110930+static tree cast_to_new_size_overflow_type(struct visited *visited, gimple stmt, tree rhs, tree size_overflow_type, bool before)
110931+{
110932+ gimple_stmt_iterator gsi;
110933+ tree lhs;
110934+ gimple new_stmt;
110935+
110936+ if (rhs == NULL_TREE)
110937+ return NULL_TREE;
110938+
110939+ gsi = gsi_for_stmt(stmt);
110940+ new_stmt = build_cast_stmt(visited, size_overflow_type, rhs, CREATE_NEW_VAR, &gsi, before, false);
110941+ pointer_set_insert(visited->my_stmts, new_stmt);
110942+
110943+ lhs = get_lhs(new_stmt);
110944+ gcc_assert(lhs != NULL_TREE);
110945+ return lhs;
110946+}
110947+
110948+tree create_assign(struct visited *visited, gimple oldstmt, tree rhs1, bool before)
110949+{
110950+ tree lhs, dst_type;
110951+ gimple_stmt_iterator gsi;
110952+
110953+ if (rhs1 == NULL_TREE) {
110954+ debug_gimple_stmt(oldstmt);
110955+ error("%s: rhs1 is NULL_TREE", __func__);
110956+ gcc_unreachable();
110957+ }
110958+
110959+ switch (gimple_code(oldstmt)) {
110960+ case GIMPLE_ASM:
110961+ lhs = rhs1;
110962+ break;
110963+ case GIMPLE_CALL:
110964+ case GIMPLE_ASSIGN:
110965+ lhs = gimple_get_lhs(oldstmt);
110966+ break;
110967+ default:
110968+ debug_gimple_stmt(oldstmt);
110969+ gcc_unreachable();
110970+ }
110971+
110972+ gsi = gsi_for_stmt(oldstmt);
110973+ pointer_set_insert(visited->stmts, oldstmt);
110974+ if (lookup_stmt_eh_lp(oldstmt) != 0) {
110975+ basic_block next_bb, cur_bb;
110976+ const_edge e;
110977+
110978+ gcc_assert(before == false);
110979+ gcc_assert(stmt_can_throw_internal(oldstmt));
110980+ gcc_assert(gimple_code(oldstmt) == GIMPLE_CALL);
110981+ gcc_assert(!gsi_end_p(gsi));
110982+
110983+ cur_bb = gimple_bb(oldstmt);
110984+ next_bb = cur_bb->next_bb;
110985+ e = find_edge(cur_bb, next_bb);
110986+ gcc_assert(e != NULL);
110987+ gcc_assert(e->flags & EDGE_FALLTHRU);
110988+
110989+ gsi = gsi_after_labels(next_bb);
110990+ gcc_assert(!gsi_end_p(gsi));
110991+
110992+ before = true;
110993+ oldstmt = gsi_stmt(gsi);
110994+ }
110995+
110996+ dst_type = get_size_overflow_type(visited, oldstmt, lhs);
110997+
110998+ if (is_gimple_constant(rhs1))
110999+ return cast_a_tree(dst_type, rhs1);
111000+ return cast_to_new_size_overflow_type(visited, oldstmt, rhs1, dst_type, before);
111001+}
111002+
111003+tree dup_assign(struct visited *visited, gimple oldstmt, const_tree node, tree rhs1, tree rhs2, tree __unused rhs3)
111004+{
111005+ gimple stmt;
111006+ gimple_stmt_iterator gsi;
111007+ tree size_overflow_type, new_var, lhs = gimple_assign_lhs(oldstmt);
111008+
111009+ if (pointer_set_contains(visited->my_stmts, oldstmt))
111010+ return lhs;
111011+
111012+ if (gimple_num_ops(oldstmt) != 4 && rhs1 == NULL_TREE) {
111013+ rhs1 = gimple_assign_rhs1(oldstmt);
111014+ rhs1 = create_assign(visited, oldstmt, rhs1, BEFORE_STMT);
111015+ }
111016+ if (gimple_num_ops(oldstmt) == 3 && rhs2 == NULL_TREE) {
111017+ rhs2 = gimple_assign_rhs2(oldstmt);
111018+ rhs2 = create_assign(visited, oldstmt, rhs2, BEFORE_STMT);
111019+ }
111020+
111021+ stmt = gimple_copy(oldstmt);
111022+ gimple_set_location(stmt, gimple_location(oldstmt));
111023+ pointer_set_insert(visited->my_stmts, stmt);
111024+
111025+ if (gimple_assign_rhs_code(oldstmt) == WIDEN_MULT_EXPR)
111026+ gimple_assign_set_rhs_code(stmt, MULT_EXPR);
111027+
111028+ size_overflow_type = get_size_overflow_type(visited, oldstmt, node);
111029+
111030+ new_var = create_new_var(size_overflow_type);
111031+ new_var = make_ssa_name(new_var, stmt);
111032+ gimple_assign_set_lhs(stmt, new_var);
111033+
111034+ if (rhs1 != NULL_TREE)
111035+ gimple_assign_set_rhs1(stmt, rhs1);
111036+
111037+ if (rhs2 != NULL_TREE)
111038+ gimple_assign_set_rhs2(stmt, rhs2);
111039+#if BUILDING_GCC_VERSION >= 4006
111040+ if (rhs3 != NULL_TREE)
111041+ gimple_assign_set_rhs3(stmt, rhs3);
111042+#endif
111043+ gimple_set_vuse(stmt, gimple_vuse(oldstmt));
111044+ gimple_set_vdef(stmt, gimple_vdef(oldstmt));
111045+
111046+ gsi = gsi_for_stmt(oldstmt);
111047+ gsi_insert_after(&gsi, stmt, GSI_SAME_STMT);
111048+ update_stmt(stmt);
111049+ pointer_set_insert(visited->stmts, oldstmt);
111050+ return gimple_assign_lhs(stmt);
111051+}
111052+
111053+static tree cast_parm_decl(struct visited *visited, tree phi_ssa_name, tree arg, tree size_overflow_type, basic_block bb)
111054+{
111055+ gimple assign;
111056+ gimple_stmt_iterator gsi;
111057+ basic_block first_bb;
111058+
111059+ gcc_assert(SSA_NAME_IS_DEFAULT_DEF(arg));
111060+
111061+ if (bb->index == 0) {
111062+ first_bb = split_block_after_labels(ENTRY_BLOCK_PTR_FOR_FN(cfun))->dest;
111063+ gcc_assert(dom_info_available_p(CDI_DOMINATORS));
111064+ set_immediate_dominator(CDI_DOMINATORS, first_bb, ENTRY_BLOCK_PTR_FOR_FN(cfun));
111065+ bb = first_bb;
111066+ }
111067+
111068+ gsi = gsi_after_labels(bb);
111069+ assign = build_cast_stmt(visited, size_overflow_type, arg, phi_ssa_name, &gsi, BEFORE_STMT, false);
111070+ pointer_set_insert(visited->my_stmts, assign);
111071+
111072+ return gimple_assign_lhs(assign);
111073+}
111074+
111075+static tree use_phi_ssa_name(struct visited *visited, tree ssa_name_var, tree new_arg)
111076+{
111077+ gimple_stmt_iterator gsi;
111078+ gimple assign, def_stmt = get_def_stmt(new_arg);
111079+
111080+ if (gimple_code(def_stmt) == GIMPLE_PHI) {
111081+ gsi = gsi_after_labels(gimple_bb(def_stmt));
111082+ assign = build_cast_stmt(visited, TREE_TYPE(new_arg), new_arg, ssa_name_var, &gsi, BEFORE_STMT, true);
111083+ } else {
111084+ gsi = gsi_for_stmt(def_stmt);
111085+ assign = build_cast_stmt(visited, TREE_TYPE(new_arg), new_arg, ssa_name_var, &gsi, AFTER_STMT, true);
111086+ }
111087+
111088+ pointer_set_insert(visited->my_stmts, assign);
111089+ return gimple_assign_lhs(assign);
111090+}
111091+
111092+static tree cast_visited_phi_arg(struct visited *visited, tree ssa_name_var, tree arg, tree size_overflow_type)
111093+{
111094+ basic_block bb;
111095+ gimple_stmt_iterator gsi;
111096+ const_gimple def_stmt;
111097+ gimple assign;
111098+
111099+ def_stmt = get_def_stmt(arg);
111100+ bb = gimple_bb(def_stmt);
111101+ gcc_assert(bb->index != 0);
111102+ gsi = gsi_after_labels(bb);
111103+
111104+ assign = build_cast_stmt(visited, size_overflow_type, arg, ssa_name_var, &gsi, BEFORE_STMT, false);
111105+ pointer_set_insert(visited->my_stmts, assign);
111106+ return gimple_assign_lhs(assign);
111107+}
111108+
111109+static tree create_new_phi_arg(struct visited *visited, tree ssa_name_var, tree new_arg, gimple oldstmt, unsigned int i)
111110+{
111111+ tree size_overflow_type;
111112+ tree arg;
111113+ const_gimple def_stmt;
111114+
111115+ if (new_arg != NULL_TREE && is_gimple_constant(new_arg))
111116+ return new_arg;
111117+
111118+ arg = gimple_phi_arg_def(oldstmt, i);
111119+ def_stmt = get_def_stmt(arg);
111120+ gcc_assert(def_stmt != NULL);
111121+ size_overflow_type = get_size_overflow_type(visited, oldstmt, arg);
111122+
111123+ switch (gimple_code(def_stmt)) {
111124+ case GIMPLE_PHI:
111125+ return cast_visited_phi_arg(visited, ssa_name_var, arg, size_overflow_type);
111126+ case GIMPLE_NOP: {
111127+ basic_block bb;
111128+
111129+ bb = gimple_phi_arg_edge(oldstmt, i)->src;
111130+ return cast_parm_decl(visited, ssa_name_var, arg, size_overflow_type, bb);
111131+ }
111132+ case GIMPLE_ASM: {
111133+ gimple_stmt_iterator gsi;
111134+ gimple assign, stmt = get_def_stmt(arg);
111135+
111136+ gsi = gsi_for_stmt(stmt);
111137+ assign = build_cast_stmt(visited, size_overflow_type, arg, ssa_name_var, &gsi, AFTER_STMT, false);
111138+ pointer_set_insert(visited->my_stmts, assign);
111139+ return gimple_assign_lhs(assign);
111140+ }
111141+ default:
111142+ gcc_assert(new_arg != NULL_TREE);
111143+ gcc_assert(types_compatible_p(TREE_TYPE(new_arg), size_overflow_type));
111144+ return use_phi_ssa_name(visited, ssa_name_var, new_arg);
111145+ }
111146+}
111147+
111148+static gimple overflow_create_phi_node(struct visited *visited, gimple oldstmt, tree result)
111149+{
111150+ basic_block bb;
111151+ gimple phi;
111152+ gimple_seq seq;
111153+ gimple_stmt_iterator gsi = gsi_for_stmt(oldstmt);
111154+
111155+ bb = gsi_bb(gsi);
111156+
111157+ if (result == NULL_TREE) {
111158+ tree old_result = gimple_phi_result(oldstmt);
111159+ tree size_overflow_type = get_size_overflow_type(visited, oldstmt, old_result);
111160+
111161+ result = create_new_var(size_overflow_type);
111162+ }
111163+
111164+ phi = create_phi_node(result, bb);
111165+ gimple_phi_set_result(phi, make_ssa_name(result, phi));
111166+ seq = phi_nodes(bb);
111167+ gsi = gsi_last(seq);
111168+ gsi_remove(&gsi, false);
111169+
111170+ gsi = gsi_for_stmt(oldstmt);
111171+ gsi_insert_after(&gsi, phi, GSI_NEW_STMT);
111172+ gimple_set_bb(phi, bb);
111173+ return phi;
111174+}
111175+
111176+#if BUILDING_GCC_VERSION <= 4007
111177+static tree create_new_phi_node(struct visited *visited, VEC(tree, heap) **args, tree ssa_name_var, gimple oldstmt)
111178+#else
111179+static tree create_new_phi_node(struct visited *visited, vec<tree, va_heap, vl_embed> *&args, tree ssa_name_var, gimple oldstmt)
111180+#endif
111181+{
111182+ gimple new_phi;
111183+ unsigned int i;
111184+ tree arg, result;
111185+ location_t loc = gimple_location(oldstmt);
111186+
111187+#if BUILDING_GCC_VERSION <= 4007
111188+ gcc_assert(!VEC_empty(tree, *args));
111189+#else
111190+ gcc_assert(!args->is_empty());
111191+#endif
111192+
111193+ new_phi = overflow_create_phi_node(visited, oldstmt, ssa_name_var);
111194+ result = gimple_phi_result(new_phi);
111195+ ssa_name_var = SSA_NAME_VAR(result);
111196+
111197+#if BUILDING_GCC_VERSION <= 4007
111198+ FOR_EACH_VEC_ELT(tree, *args, i, arg) {
111199+#else
111200+ FOR_EACH_VEC_SAFE_ELT(args, i, arg) {
111201+#endif
111202+ arg = create_new_phi_arg(visited, ssa_name_var, arg, oldstmt, i);
111203+ add_phi_arg(new_phi, arg, gimple_phi_arg_edge(oldstmt, i), loc);
111204+ }
111205+
111206+#if BUILDING_GCC_VERSION <= 4007
111207+ VEC_free(tree, heap, *args);
111208+#else
111209+ vec_free(args);
111210+#endif
111211+ update_stmt(new_phi);
111212+ pointer_set_insert(visited->my_stmts, new_phi);
111213+ return result;
111214+}
111215+
111216+static tree handle_phi(struct visited *visited, struct cgraph_node *caller_node, tree orig_result)
111217+{
111218+ tree ssa_name_var = NULL_TREE;
111219+#if BUILDING_GCC_VERSION <= 4007
111220+ VEC(tree, heap) *args = NULL;
111221+#else
111222+ vec<tree, va_heap, vl_embed> *args = NULL;
111223+#endif
111224+ gimple oldstmt = get_def_stmt(orig_result);
111225+ unsigned int i, len = gimple_phi_num_args(oldstmt);
111226+
111227+ pointer_set_insert(visited->stmts, oldstmt);
111228+ for (i = 0; i < len; i++) {
111229+ tree arg, new_arg;
111230+
111231+ arg = gimple_phi_arg_def(oldstmt, i);
111232+ new_arg = expand(visited, caller_node, arg);
111233+
111234+ if (ssa_name_var == NULL_TREE && new_arg != NULL_TREE)
111235+ ssa_name_var = SSA_NAME_VAR(new_arg);
111236+
111237+ if (is_gimple_constant(arg)) {
111238+ tree size_overflow_type = get_size_overflow_type(visited, oldstmt, arg);
111239+
111240+ new_arg = cast_a_tree(size_overflow_type, arg);
111241+ }
111242+
111243+#if BUILDING_GCC_VERSION <= 4007
111244+ VEC_safe_push(tree, heap, args, new_arg);
111245+#else
111246+ vec_safe_push(args, new_arg);
111247+#endif
111248+ }
111249+
111250+#if BUILDING_GCC_VERSION <= 4007
111251+ return create_new_phi_node(visited, &args, ssa_name_var, oldstmt);
111252+#else
111253+ return create_new_phi_node(visited, args, ssa_name_var, oldstmt);
111254+#endif
111255+}
111256+
111257+static tree create_cast_assign(struct visited *visited, gimple stmt)
111258+{
111259+ tree rhs1 = gimple_assign_rhs1(stmt);
111260+ tree lhs = gimple_assign_lhs(stmt);
111261+ const_tree rhs1_type = TREE_TYPE(rhs1);
111262+ const_tree lhs_type = TREE_TYPE(lhs);
111263+
111264+ if (TYPE_UNSIGNED(rhs1_type) == TYPE_UNSIGNED(lhs_type))
111265+ return create_assign(visited, stmt, lhs, AFTER_STMT);
111266+
111267+ return create_assign(visited, stmt, rhs1, AFTER_STMT);
111268+}
111269+
111270+static bool skip_lhs_cast_check(const_gimple stmt)
111271+{
111272+ const_tree rhs = gimple_assign_rhs1(stmt);
111273+ const_gimple def_stmt = get_def_stmt(rhs);
111274+
111275+ // 3.8.2 kernel/futex_compat.c compat_exit_robust_list(): get_user() 64 ulong -> int (compat_long_t), int max
111276+ if (gimple_code(def_stmt) == GIMPLE_ASM)
111277+ return true;
111278+
111279+ if (is_const_plus_unsigned_signed_truncation(rhs))
111280+ return true;
111281+
111282+ return false;
111283+}
111284+
111285+static tree create_string_param(tree string)
111286+{
111287+ tree i_type, a_type;
111288+ const int length = TREE_STRING_LENGTH(string);
111289+
111290+ gcc_assert(length > 0);
111291+
111292+ i_type = build_index_type(build_int_cst(NULL_TREE, length - 1));
111293+ a_type = build_array_type(char_type_node, i_type);
111294+
111295+ TREE_TYPE(string) = a_type;
111296+ TREE_CONSTANT(string) = 1;
111297+ TREE_READONLY(string) = 1;
111298+
111299+ return build1(ADDR_EXPR, ptr_type_node, string);
111300+}
111301+
111302+static void insert_cond(basic_block cond_bb, tree arg, enum tree_code cond_code, tree type_value)
111303+{
111304+ gimple cond_stmt;
111305+ gimple_stmt_iterator gsi = gsi_last_bb(cond_bb);
111306+
111307+ cond_stmt = gimple_build_cond(cond_code, arg, type_value, NULL_TREE, NULL_TREE);
111308+ gsi_insert_after(&gsi, cond_stmt, GSI_CONTINUE_LINKING);
111309+ update_stmt(cond_stmt);
111310+}
111311+
111312+static void insert_cond_result(struct cgraph_node *caller_node, basic_block bb_true, const_gimple stmt, const_tree arg, bool min)
111313+{
111314+ gimple func_stmt;
111315+ const_gimple def_stmt;
111316+ const_tree loc_line;
111317+ tree loc_file, ssa_name, current_func;
111318+ expanded_location xloc;
111319+ char *ssa_name_buf;
111320+ int len;
111321+ struct cgraph_edge *edge;
111322+ struct cgraph_node *callee_node;
111323+ int frequency;
111324+ gimple_stmt_iterator gsi = gsi_start_bb(bb_true);
111325+
111326+ def_stmt = get_def_stmt(arg);
111327+ xloc = expand_location(gimple_location(def_stmt));
111328+
111329+ if (!gimple_has_location(def_stmt)) {
111330+ xloc = expand_location(gimple_location(stmt));
111331+ if (!gimple_has_location(stmt))
111332+ xloc = expand_location(DECL_SOURCE_LOCATION(current_function_decl));
111333+ }
111334+
111335+ loc_line = build_int_cstu(unsigned_type_node, xloc.line);
111336+
111337+ loc_file = build_string(strlen(xloc.file) + 1, xloc.file);
111338+ loc_file = create_string_param(loc_file);
111339+
111340+ current_func = build_string(DECL_NAME_LENGTH(current_function_decl) + 1, DECL_NAME_POINTER(current_function_decl));
111341+ current_func = create_string_param(current_func);
111342+
111343+ gcc_assert(DECL_NAME(SSA_NAME_VAR(arg)) != NULL);
111344+ call_count++;
111345+ len = asprintf(&ssa_name_buf, "%s_%u %s, count: %u\n", DECL_NAME_POINTER(SSA_NAME_VAR(arg)), SSA_NAME_VERSION(arg), min ? "min" : "max", call_count);
111346+ gcc_assert(len > 0);
111347+ ssa_name = build_string(len + 1, ssa_name_buf);
111348+ free(ssa_name_buf);
111349+ ssa_name = create_string_param(ssa_name);
111350+
111351+ // void report_size_overflow(const char *file, unsigned int line, const char *func, const char *ssa_name)
111352+ func_stmt = gimple_build_call(report_size_overflow_decl, 4, loc_file, loc_line, current_func, ssa_name);
111353+ gsi_insert_after(&gsi, func_stmt, GSI_CONTINUE_LINKING);
111354+
111355+ callee_node = cgraph_get_create_node(report_size_overflow_decl);
111356+ frequency = compute_call_stmt_bb_frequency(current_function_decl, bb_true);
111357+
111358+ edge = cgraph_create_edge(caller_node, callee_node, func_stmt, bb_true->count, frequency, bb_true->loop_depth);
111359+ gcc_assert(edge != NULL);
111360+}
111361+
111362+static void insert_check_size_overflow(struct cgraph_node *caller_node, gimple stmt, enum tree_code cond_code, tree arg, tree type_value, bool before, bool min)
111363+{
111364+ basic_block cond_bb, join_bb, bb_true;
111365+ edge e;
111366+ gimple_stmt_iterator gsi = gsi_for_stmt(stmt);
111367+
111368+ cond_bb = gimple_bb(stmt);
111369+ if (before)
111370+ gsi_prev(&gsi);
111371+ if (gsi_end_p(gsi))
111372+ e = split_block_after_labels(cond_bb);
111373+ else
111374+ e = split_block(cond_bb, gsi_stmt(gsi));
111375+ cond_bb = e->src;
111376+ join_bb = e->dest;
111377+ e->flags = EDGE_FALSE_VALUE;
111378+ e->probability = REG_BR_PROB_BASE;
111379+
111380+ bb_true = create_empty_bb(cond_bb);
111381+ make_edge(cond_bb, bb_true, EDGE_TRUE_VALUE);
111382+ make_edge(cond_bb, join_bb, EDGE_FALSE_VALUE);
111383+ make_edge(bb_true, join_bb, EDGE_FALLTHRU);
111384+
111385+ gcc_assert(dom_info_available_p(CDI_DOMINATORS));
111386+ set_immediate_dominator(CDI_DOMINATORS, bb_true, cond_bb);
111387+ set_immediate_dominator(CDI_DOMINATORS, join_bb, cond_bb);
111388+
111389+ if (current_loops != NULL) {
111390+ gcc_assert(cond_bb->loop_father == join_bb->loop_father);
111391+ add_bb_to_loop(bb_true, cond_bb->loop_father);
111392+ }
111393+
111394+ insert_cond(cond_bb, arg, cond_code, type_value);
111395+ insert_cond_result(caller_node, bb_true, stmt, arg, min);
111396+
111397+// print_the_code_insertions(stmt);
111398+}
111399+
111400+void check_size_overflow(struct cgraph_node *caller_node, gimple stmt, tree size_overflow_type, tree cast_rhs, tree rhs, bool before)
111401+{
111402+ const_tree rhs_type = TREE_TYPE(rhs);
111403+ tree cast_rhs_type, type_max_type, type_min_type, type_max, type_min;
111404+
111405+ gcc_assert(rhs_type != NULL_TREE);
111406+ if (TREE_CODE(rhs_type) == POINTER_TYPE)
111407+ return;
111408+
111409+ gcc_assert(TREE_CODE(rhs_type) == INTEGER_TYPE || TREE_CODE(rhs_type) == ENUMERAL_TYPE);
111410+
111411+ if (is_const_plus_unsigned_signed_truncation(rhs))
111412+ return;
111413+
111414+ type_max = cast_a_tree(size_overflow_type, TYPE_MAX_VALUE(rhs_type));
111415+ // typemax (-1) < typemin (0)
111416+ if (TREE_OVERFLOW(type_max))
111417+ return;
111418+
111419+ type_min = cast_a_tree(size_overflow_type, TYPE_MIN_VALUE(rhs_type));
111420+
111421+ cast_rhs_type = TREE_TYPE(cast_rhs);
111422+ type_max_type = TREE_TYPE(type_max);
111423+ gcc_assert(types_compatible_p(cast_rhs_type, type_max_type));
111424+
111425+ insert_check_size_overflow(caller_node, stmt, GT_EXPR, cast_rhs, type_max, before, MAX_CHECK);
111426+
111427+ // special case: get_size_overflow_type(), 32, u64->s
111428+ if (LONG_TYPE_SIZE == GET_MODE_BITSIZE(SImode) && TYPE_UNSIGNED(size_overflow_type) && !TYPE_UNSIGNED(rhs_type))
111429+ return;
111430+
111431+ type_min_type = TREE_TYPE(type_min);
111432+ gcc_assert(types_compatible_p(type_max_type, type_min_type));
111433+ insert_check_size_overflow(caller_node, stmt, LT_EXPR, cast_rhs, type_min, before, MIN_CHECK);
111434+}
111435+
111436+static tree create_cast_overflow_check(struct visited *visited, struct cgraph_node *caller_node, tree new_rhs1, gimple stmt)
111437+{
111438+ bool cast_lhs, cast_rhs;
111439+ tree lhs = gimple_assign_lhs(stmt);
111440+ tree rhs = gimple_assign_rhs1(stmt);
111441+ const_tree lhs_type = TREE_TYPE(lhs);
111442+ const_tree rhs_type = TREE_TYPE(rhs);
111443+ enum machine_mode lhs_mode = TYPE_MODE(lhs_type);
111444+ enum machine_mode rhs_mode = TYPE_MODE(rhs_type);
111445+ unsigned int lhs_size = GET_MODE_BITSIZE(lhs_mode);
111446+ unsigned int rhs_size = GET_MODE_BITSIZE(rhs_mode);
111447+
111448+ static bool check_lhs[3][4] = {
111449+ // ss su us uu
111450+ { false, true, true, false }, // lhs > rhs
111451+ { false, false, false, false }, // lhs = rhs
111452+ { true, true, true, true }, // lhs < rhs
111453+ };
111454+
111455+ static bool check_rhs[3][4] = {
111456+ // ss su us uu
111457+ { true, false, true, true }, // lhs > rhs
111458+ { true, false, true, true }, // lhs = rhs
111459+ { true, false, true, true }, // lhs < rhs
111460+ };
111461+
111462+ // skip lhs check on signed SI -> HI cast or signed SI -> QI cast !!!!
111463+ if (rhs_mode == SImode && !TYPE_UNSIGNED(rhs_type) && (lhs_mode == HImode || lhs_mode == QImode))
111464+ return create_assign(visited, stmt, lhs, AFTER_STMT);
111465+
111466+ if (lhs_size > rhs_size) {
111467+ cast_lhs = check_lhs[0][TYPE_UNSIGNED(rhs_type) + 2 * TYPE_UNSIGNED(lhs_type)];
111468+ cast_rhs = check_rhs[0][TYPE_UNSIGNED(rhs_type) + 2 * TYPE_UNSIGNED(lhs_type)];
111469+ } else if (lhs_size == rhs_size) {
111470+ cast_lhs = check_lhs[1][TYPE_UNSIGNED(rhs_type) + 2 * TYPE_UNSIGNED(lhs_type)];
111471+ cast_rhs = check_rhs[1][TYPE_UNSIGNED(rhs_type) + 2 * TYPE_UNSIGNED(lhs_type)];
111472+ } else {
111473+ cast_lhs = check_lhs[2][TYPE_UNSIGNED(rhs_type) + 2 * TYPE_UNSIGNED(lhs_type)];
111474+ cast_rhs = check_rhs[2][TYPE_UNSIGNED(rhs_type) + 2 * TYPE_UNSIGNED(lhs_type)];
111475+ }
111476+
111477+ if (!cast_lhs && !cast_rhs)
111478+ return dup_assign(visited, stmt, lhs, new_rhs1, NULL_TREE, NULL_TREE);
111479+
111480+ if (cast_lhs && !skip_lhs_cast_check(stmt))
111481+ check_size_overflow(caller_node, stmt, TREE_TYPE(new_rhs1), new_rhs1, lhs, BEFORE_STMT);
111482+
111483+ if (cast_rhs)
111484+ check_size_overflow(caller_node, stmt, TREE_TYPE(new_rhs1), new_rhs1, rhs, BEFORE_STMT);
111485+
111486+ return dup_assign(visited, stmt, lhs, new_rhs1, NULL_TREE, NULL_TREE);
111487+}
111488+
111489+static tree handle_unary_rhs(struct visited *visited, struct cgraph_node *caller_node, gimple stmt)
111490+{
111491+ enum tree_code rhs_code;
111492+ tree rhs1, new_rhs1, lhs = gimple_assign_lhs(stmt);
111493+
111494+ if (pointer_set_contains(visited->my_stmts, stmt))
111495+ return lhs;
111496+
111497+ rhs1 = gimple_assign_rhs1(stmt);
111498+ if (TREE_CODE(TREE_TYPE(rhs1)) == POINTER_TYPE)
111499+ return create_assign(visited, stmt, lhs, AFTER_STMT);
111500+
111501+ new_rhs1 = expand(visited, caller_node, rhs1);
111502+
111503+ if (new_rhs1 == NULL_TREE)
111504+ return create_cast_assign(visited, stmt);
111505+
111506+ if (pointer_set_contains(visited->no_cast_check, stmt))
111507+ return dup_assign(visited, stmt, lhs, new_rhs1, NULL_TREE, NULL_TREE);
111508+
111509+ rhs_code = gimple_assign_rhs_code(stmt);
111510+ if (rhs_code == BIT_NOT_EXPR || rhs_code == NEGATE_EXPR) {
111511+ tree size_overflow_type = get_size_overflow_type(visited, stmt, rhs1);
111512+
111513+ new_rhs1 = cast_to_new_size_overflow_type(visited, stmt, new_rhs1, size_overflow_type, BEFORE_STMT);
111514+ check_size_overflow(caller_node, stmt, size_overflow_type, new_rhs1, rhs1, BEFORE_STMT);
111515+ return create_assign(visited, stmt, lhs, AFTER_STMT);
111516+ }
111517+
111518+ if (!gimple_assign_cast_p(stmt))
111519+ return dup_assign(visited, stmt, lhs, new_rhs1, NULL_TREE, NULL_TREE);
111520+
111521+ return create_cast_overflow_check(visited, caller_node, new_rhs1, stmt);
111522+}
111523+
111524+static tree handle_unary_ops(struct visited *visited, struct cgraph_node *caller_node, gimple stmt)
111525+{
111526+ tree rhs1, lhs = gimple_assign_lhs(stmt);
111527+ gimple def_stmt = get_def_stmt(lhs);
111528+
111529+ gcc_assert(gimple_code(def_stmt) != GIMPLE_NOP);
111530+ rhs1 = gimple_assign_rhs1(def_stmt);
111531+
111532+ if (is_gimple_constant(rhs1))
111533+ return create_assign(visited, def_stmt, lhs, AFTER_STMT);
111534+
111535+ switch (TREE_CODE(rhs1)) {
111536+ case SSA_NAME: {
111537+ tree ret = handle_unary_rhs(visited, caller_node, def_stmt);
111538+
111539+ if (gimple_assign_cast_p(stmt))
111540+ unsigned_signed_cast_intentional_overflow(visited, stmt);
111541+ return ret;
111542+ }
111543+ case ARRAY_REF:
111544+ case BIT_FIELD_REF:
111545+ case ADDR_EXPR:
111546+ case COMPONENT_REF:
111547+ case INDIRECT_REF:
111548+#if BUILDING_GCC_VERSION >= 4006
111549+ case MEM_REF:
111550+#endif
111551+ case TARGET_MEM_REF:
111552+ case VIEW_CONVERT_EXPR:
111553+ return create_assign(visited, def_stmt, lhs, AFTER_STMT);
111554+ case PARM_DECL:
111555+ case VAR_DECL:
111556+ return create_assign(visited, stmt, lhs, AFTER_STMT);
111557+
111558+ default:
111559+ debug_gimple_stmt(def_stmt);
111560+ debug_tree(rhs1);
111561+ gcc_unreachable();
111562+ }
111563+}
111564+
111565+static void __unused print_the_code_insertions(const_gimple stmt)
111566+{
111567+ location_t loc = gimple_location(stmt);
111568+
111569+ inform(loc, "Integer size_overflow check applied here.");
111570+}
111571+
111572+static tree handle_binary_ops(struct visited *visited, struct cgraph_node *caller_node, tree lhs)
111573+{
111574+ enum intentional_overflow_type res;
111575+ tree rhs1, rhs2, new_lhs;
111576+ gimple def_stmt = get_def_stmt(lhs);
111577+ tree new_rhs1 = NULL_TREE;
111578+ tree new_rhs2 = NULL_TREE;
111579+
111580+ rhs1 = gimple_assign_rhs1(def_stmt);
111581+ rhs2 = gimple_assign_rhs2(def_stmt);
111582+
111583+ /* no DImode/TImode division in the 32/64 bit kernel */
111584+ switch (gimple_assign_rhs_code(def_stmt)) {
111585+ case RDIV_EXPR:
111586+ case TRUNC_DIV_EXPR:
111587+ case CEIL_DIV_EXPR:
111588+ case FLOOR_DIV_EXPR:
111589+ case ROUND_DIV_EXPR:
111590+ case TRUNC_MOD_EXPR:
111591+ case CEIL_MOD_EXPR:
111592+ case FLOOR_MOD_EXPR:
111593+ case ROUND_MOD_EXPR:
111594+ case EXACT_DIV_EXPR:
111595+ case POINTER_PLUS_EXPR:
111596+ case BIT_AND_EXPR:
111597+ return create_assign(visited, def_stmt, lhs, AFTER_STMT);
111598+ default:
111599+ break;
111600+ }
111601+
111602+ new_lhs = handle_integer_truncation(visited, caller_node, lhs);
111603+ if (new_lhs != NULL_TREE)
111604+ return new_lhs;
111605+
111606+ if (TREE_CODE(rhs1) == SSA_NAME)
111607+ new_rhs1 = expand(visited, caller_node, rhs1);
111608+ if (TREE_CODE(rhs2) == SSA_NAME)
111609+ new_rhs2 = expand(visited, caller_node, rhs2);
111610+
111611+ res = add_mul_intentional_overflow(def_stmt);
111612+ if (res != NO_INTENTIONAL_OVERFLOW) {
111613+ new_lhs = dup_assign(visited, def_stmt, lhs, new_rhs1, new_rhs2, NULL_TREE);
111614+ insert_cast_expr(visited, get_def_stmt(new_lhs), res);
111615+ return new_lhs;
111616+ }
111617+
111618+ if (skip_expr_on_double_type(def_stmt)) {
111619+ new_lhs = dup_assign(visited, def_stmt, lhs, new_rhs1, new_rhs2, NULL_TREE);
111620+ insert_cast_expr(visited, get_def_stmt(new_lhs), NO_INTENTIONAL_OVERFLOW);
111621+ return new_lhs;
111622+ }
111623+
111624+ if (is_a_neg_overflow(def_stmt, rhs2))
111625+ return handle_intentional_overflow(visited, caller_node, true, def_stmt, new_rhs1, NULL_TREE);
111626+ if (is_a_neg_overflow(def_stmt, rhs1))
111627+ return handle_intentional_overflow(visited, caller_node, true, def_stmt, new_rhs2, new_rhs2);
111628+
111629+
111630+ if (is_a_constant_overflow(def_stmt, rhs2))
111631+ return handle_intentional_overflow(visited, caller_node, !is_a_cast_and_const_overflow(rhs1), def_stmt, new_rhs1, NULL_TREE);
111632+ if (is_a_constant_overflow(def_stmt, rhs1))
111633+ return handle_intentional_overflow(visited, caller_node, !is_a_cast_and_const_overflow(rhs2), def_stmt, new_rhs2, new_rhs2);
111634+
111635+ // the const is between 0 and (signed) MAX
111636+ if (is_gimple_constant(rhs1))
111637+ new_rhs1 = create_assign(visited, def_stmt, rhs1, BEFORE_STMT);
111638+ if (is_gimple_constant(rhs2))
111639+ new_rhs2 = create_assign(visited, def_stmt, rhs2, BEFORE_STMT);
111640+
111641+ return dup_assign(visited, def_stmt, lhs, new_rhs1, new_rhs2, NULL_TREE);
111642+}
111643+
111644+#if BUILDING_GCC_VERSION >= 4006
111645+static tree get_new_rhs(struct visited *visited, struct cgraph_node *caller_node, tree size_overflow_type, tree rhs)
111646+{
111647+ if (is_gimple_constant(rhs))
111648+ return cast_a_tree(size_overflow_type, rhs);
111649+ if (TREE_CODE(rhs) != SSA_NAME)
111650+ return NULL_TREE;
111651+ return expand(visited, caller_node, rhs);
111652+}
111653+
111654+static tree handle_ternary_ops(struct visited *visited, struct cgraph_node *caller_node, tree lhs)
111655+{
111656+ tree rhs1, rhs2, rhs3, new_rhs1, new_rhs2, new_rhs3, size_overflow_type;
111657+ gimple def_stmt = get_def_stmt(lhs);
111658+
111659+ size_overflow_type = get_size_overflow_type(visited, def_stmt, lhs);
111660+
111661+ rhs1 = gimple_assign_rhs1(def_stmt);
111662+ rhs2 = gimple_assign_rhs2(def_stmt);
111663+ rhs3 = gimple_assign_rhs3(def_stmt);
111664+ new_rhs1 = get_new_rhs(visited, caller_node, size_overflow_type, rhs1);
111665+ new_rhs2 = get_new_rhs(visited, caller_node, size_overflow_type, rhs2);
111666+ new_rhs3 = get_new_rhs(visited, caller_node, size_overflow_type, rhs3);
111667+
111668+ return dup_assign(visited, def_stmt, lhs, new_rhs1, new_rhs2, new_rhs3);
111669+}
111670+#endif
111671+
111672+static tree get_my_stmt_lhs(struct visited *visited, gimple stmt)
111673+{
111674+ gimple_stmt_iterator gsi;
111675+ gimple next_stmt = NULL;
111676+
111677+ gsi = gsi_for_stmt(stmt);
111678+
111679+ do {
111680+ gsi_next(&gsi);
111681+ next_stmt = gsi_stmt(gsi);
111682+
111683+ if (gimple_code(stmt) == GIMPLE_PHI && !pointer_set_contains(visited->my_stmts, next_stmt))
111684+ return NULL_TREE;
111685+
111686+ if (pointer_set_contains(visited->my_stmts, next_stmt) && !pointer_set_contains(visited->skip_expr_casts, next_stmt))
111687+ break;
111688+
111689+ gcc_assert(pointer_set_contains(visited->my_stmts, next_stmt));
111690+ } while (!gsi_end_p(gsi));
111691+
111692+ gcc_assert(next_stmt);
111693+ return get_lhs(next_stmt);
111694+}
111695+
111696+static tree expand_visited(struct visited *visited, gimple def_stmt)
111697+{
111698+ gimple_stmt_iterator gsi;
111699+ enum gimple_code code = gimple_code(def_stmt);
111700+
111701+ if (code == GIMPLE_ASM)
111702+ return NULL_TREE;
111703+
111704+ gsi = gsi_for_stmt(def_stmt);
111705+ gsi_next(&gsi);
111706+
111707+ if (gimple_code(def_stmt) == GIMPLE_PHI && gsi_end_p(gsi))
111708+ return NULL_TREE;
111709+ return get_my_stmt_lhs(visited, def_stmt);
111710+}
111711+
111712+tree expand(struct visited *visited, struct cgraph_node *caller_node, tree lhs)
111713+{
111714+ gimple def_stmt;
111715+
111716+ def_stmt = get_def_stmt(lhs);
111717+
111718+ if (!def_stmt || gimple_code(def_stmt) == GIMPLE_NOP)
111719+ return NULL_TREE;
111720+
111721+ if (pointer_set_contains(visited->my_stmts, def_stmt))
111722+ return lhs;
111723+
111724+ if (pointer_set_contains(visited->stmts, def_stmt))
111725+ return expand_visited(visited, def_stmt);
111726+
111727+ switch (gimple_code(def_stmt)) {
111728+ case GIMPLE_PHI:
111729+ return handle_phi(visited, caller_node, lhs);
111730+ case GIMPLE_CALL:
111731+ case GIMPLE_ASM:
111732+ return create_assign(visited, def_stmt, lhs, AFTER_STMT);
111733+ case GIMPLE_ASSIGN:
111734+ switch (gimple_num_ops(def_stmt)) {
111735+ case 2:
111736+ return handle_unary_ops(visited, caller_node, def_stmt);
111737+ case 3:
111738+ return handle_binary_ops(visited, caller_node, lhs);
111739+#if BUILDING_GCC_VERSION >= 4006
111740+ case 4:
111741+ return handle_ternary_ops(visited, caller_node, lhs);
111742+#endif
111743+ }
111744+ default:
111745+ debug_gimple_stmt(def_stmt);
111746+ error("%s: unknown gimple code", __func__);
111747+ gcc_unreachable();
111748+ }
111749+}
111750+
111751diff --git a/tools/gcc/size_overflow_plugin/insert_size_overflow_check_ipa.c b/tools/gcc/size_overflow_plugin/insert_size_overflow_check_ipa.c
111752new file mode 100644
111753index 0000000..f8f5dd5
111754--- /dev/null
111755+++ b/tools/gcc/size_overflow_plugin/insert_size_overflow_check_ipa.c
111756@@ -0,0 +1,1133 @@
111757+/*
111758+ * Copyright 2011-2014 by Emese Revfy <re.emese@gmail.com>
111759+ * Licensed under the GPL v2, or (at your option) v3
111760+ *
111761+ * Homepage:
111762+ * http://www.grsecurity.net/~ephox/overflow_plugin/
111763+ *
111764+ * Documentation:
111765+ * http://forums.grsecurity.net/viewtopic.php?f=7&t=3043
111766+ *
111767+ * This plugin recomputes expressions of function arguments marked by a size_overflow attribute
111768+ * with double integer precision (DImode/TImode for 32/64 bit integer types).
111769+ * The recomputed argument is checked against TYPE_MAX and an event is logged on overflow and the triggering process is killed.
111770+ *
111771+ * Usage:
111772+ * $ make
111773+ * $ make run
111774+ */
111775+
111776+#include "gcc-common.h"
111777+#include "size_overflow.h"
111778+
111779+#define VEC_LEN 128
111780+#define RET_CHECK NULL_TREE
111781+#define WRONG_NODE 32
111782+#define NOT_INTENTIONAL_ASM NULL
111783+
111784+unsigned int call_count;
111785+
111786+static void set_conditions(struct pointer_set_t *visited, bool *interesting_conditions, const_tree lhs);
111787+static void walk_use_def(struct pointer_set_t *visited, struct interesting_node *cur_node, tree lhs);
111788+
111789+struct visited_fns {
111790+ struct visited_fns *next;
111791+ const_tree fndecl;
111792+ unsigned int num;
111793+ const_gimple first_stmt;
111794+};
111795+
111796+struct next_cgraph_node {
111797+ struct next_cgraph_node *next;
111798+ struct cgraph_node *current_function;
111799+ tree callee_fndecl;
111800+ unsigned int num;
111801+};
111802+
111803+// Don't want to duplicate entries in next_cgraph_node
111804+static bool is_in_next_cgraph_node(struct next_cgraph_node *head, struct cgraph_node *node, const_tree fndecl, unsigned int num)
111805+{
111806+ const_tree new_callee_fndecl;
111807+ struct next_cgraph_node *cur_node;
111808+
111809+ if (fndecl == RET_CHECK)
111810+ new_callee_fndecl = NODE_DECL(node);
111811+ else
111812+ new_callee_fndecl = fndecl;
111813+
111814+ for (cur_node = head; cur_node; cur_node = cur_node->next) {
111815+ if (!operand_equal_p(NODE_DECL(cur_node->current_function), NODE_DECL(node), 0))
111816+ continue;
111817+ if (!operand_equal_p(cur_node->callee_fndecl, new_callee_fndecl, 0))
111818+ continue;
111819+ if (num == cur_node->num)
111820+ return true;
111821+ }
111822+ return false;
111823+}
111824+
111825+/* Add a next_cgraph_node into the list for handle_function().
111826+ * handle_function() iterates over all the next cgraph nodes and
111827+ * starts the overflow check insertion process.
111828+ */
111829+static struct next_cgraph_node *create_new_next_cgraph_node(struct next_cgraph_node *head, struct cgraph_node *node, tree fndecl, unsigned int num)
111830+{
111831+ struct next_cgraph_node *new_node;
111832+
111833+ if (is_in_next_cgraph_node(head, node, fndecl, num))
111834+ return head;
111835+
111836+ new_node = (struct next_cgraph_node *)xmalloc(sizeof(*new_node));
111837+ new_node->current_function = node;
111838+ new_node->next = NULL;
111839+ new_node->num = num;
111840+ if (fndecl == RET_CHECK)
111841+ new_node->callee_fndecl = NODE_DECL(node);
111842+ else
111843+ new_node->callee_fndecl = fndecl;
111844+
111845+ if (!head)
111846+ return new_node;
111847+
111848+ new_node->next = head;
111849+ return new_node;
111850+}
111851+
111852+static struct next_cgraph_node *create_new_next_cgraph_nodes(struct next_cgraph_node *head, struct cgraph_node *node, unsigned int num)
111853+{
111854+ struct cgraph_edge *e;
111855+
111856+ if (num == 0)
111857+ return create_new_next_cgraph_node(head, node, RET_CHECK, num);
111858+
111859+ for (e = node->callers; e; e = e->next_caller) {
111860+ tree fndecl = gimple_call_fndecl(e->call_stmt);
111861+
111862+ gcc_assert(fndecl != NULL_TREE);
111863+ head = create_new_next_cgraph_node(head, e->caller, fndecl, num);
111864+ }
111865+
111866+ return head;
111867+}
111868+
111869+struct missing_functions {
111870+ struct missing_functions *next;
111871+ const_tree node;
111872+ tree fndecl;
111873+};
111874+
111875+static struct missing_functions *create_new_missing_function(struct missing_functions *missing_fn_head, tree node)
111876+{
111877+ struct missing_functions *new_function;
111878+
111879+ new_function = (struct missing_functions *)xmalloc(sizeof(*new_function));
111880+ new_function->node = node;
111881+ new_function->next = NULL;
111882+
111883+ if (TREE_CODE(node) == FUNCTION_DECL)
111884+ new_function->fndecl = node;
111885+ else
111886+ new_function->fndecl = current_function_decl;
111887+ gcc_assert(new_function->fndecl);
111888+
111889+ if (!missing_fn_head)
111890+ return new_function;
111891+
111892+ new_function->next = missing_fn_head;
111893+ return new_function;
111894+}
111895+
111896+/* If the function is missing from the hash table and it is a static function
111897+ * then create a next_cgraph_node from it for handle_function()
111898+ */
111899+static struct next_cgraph_node *check_missing_overflow_attribute_and_create_next_node(struct next_cgraph_node *cnodes, struct missing_functions *missing_fn_head)
111900+{
111901+ unsigned int num;
111902+ const_tree orig_fndecl;
111903+ struct cgraph_node *next_node = NULL;
111904+
111905+ orig_fndecl = DECL_ORIGIN(missing_fn_head->fndecl);
111906+
111907+ num = get_function_num(missing_fn_head->node, orig_fndecl);
111908+ if (num == CANNOT_FIND_ARG)
111909+ return cnodes;
111910+
111911+ if (!is_missing_function(orig_fndecl, num))
111912+ return cnodes;
111913+
111914+ next_node = cgraph_get_node(missing_fn_head->fndecl);
111915+ if (next_node && next_node->local.local)
111916+ cnodes = create_new_next_cgraph_nodes(cnodes, next_node, num);
111917+ return cnodes;
111918+}
111919+
111920+/* Search for missing size_overflow attributes on the last nodes in ipa and collect them
111921+ * into the next_cgraph_node list. They will be the next interesting returns or callees.
111922+ */
111923+static struct next_cgraph_node *search_overflow_attribute(struct next_cgraph_node *cnodes, struct interesting_node *cur_node)
111924+{
111925+ unsigned int i;
111926+ tree node;
111927+ struct missing_functions *cur, *missing_fn_head = NULL;
111928+
111929+#if BUILDING_GCC_VERSION <= 4007
111930+ FOR_EACH_VEC_ELT(tree, cur_node->last_nodes, i, node) {
111931+#else
111932+ FOR_EACH_VEC_ELT(*cur_node->last_nodes, i, node) {
111933+#endif
111934+ switch (TREE_CODE(node)) {
111935+ case PARM_DECL:
111936+ if (TREE_CODE(TREE_TYPE(node)) != INTEGER_TYPE)
111937+ break;
111938+ case FUNCTION_DECL:
111939+ missing_fn_head = create_new_missing_function(missing_fn_head, node);
111940+ break;
111941+ default:
111942+ break;
111943+ }
111944+ }
111945+
111946+ while (missing_fn_head) {
111947+ cnodes = check_missing_overflow_attribute_and_create_next_node(cnodes, missing_fn_head);
111948+
111949+ cur = missing_fn_head->next;
111950+ free(missing_fn_head);
111951+ missing_fn_head = cur;
111952+ }
111953+
111954+ return cnodes;
111955+}
111956+
111957+static void walk_phi_set_conditions(struct pointer_set_t *visited, bool *interesting_conditions, const_tree result)
111958+{
111959+ gimple phi = get_def_stmt(result);
111960+ unsigned int i, n = gimple_phi_num_args(phi);
111961+
111962+ pointer_set_insert(visited, phi);
111963+ for (i = 0; i < n; i++) {
111964+ const_tree arg = gimple_phi_arg_def(phi, i);
111965+
111966+ set_conditions(visited, interesting_conditions, arg);
111967+ }
111968+}
111969+
111970+enum conditions {
111971+ FROM_CONST, NOT_UNARY, CAST
111972+};
111973+
111974+// Search for constants, cast assignments and binary/ternary assignments
111975+static void set_conditions(struct pointer_set_t *visited, bool *interesting_conditions, const_tree lhs)
111976+{
111977+ gimple def_stmt = get_def_stmt(lhs);
111978+
111979+ if (is_gimple_constant(lhs)) {
111980+ interesting_conditions[FROM_CONST] = true;
111981+ return;
111982+ }
111983+
111984+ if (!def_stmt)
111985+ return;
111986+
111987+ if (pointer_set_contains(visited, def_stmt))
111988+ return;
111989+
111990+ switch (gimple_code(def_stmt)) {
111991+ case GIMPLE_NOP:
111992+ case GIMPLE_CALL:
111993+ case GIMPLE_ASM:
111994+ return;
111995+ case GIMPLE_PHI:
111996+ return walk_phi_set_conditions(visited, interesting_conditions, lhs);
111997+ case GIMPLE_ASSIGN:
111998+ if (gimple_num_ops(def_stmt) == 2) {
111999+ const_tree rhs = gimple_assign_rhs1(def_stmt);
112000+
112001+ if (gimple_assign_cast_p(def_stmt))
112002+ interesting_conditions[CAST] = true;
112003+
112004+ return set_conditions(visited, interesting_conditions, rhs);
112005+ } else {
112006+ interesting_conditions[NOT_UNARY] = true;
112007+ return;
112008+ }
112009+ default:
112010+ debug_gimple_stmt(def_stmt);
112011+ gcc_unreachable();
112012+ }
112013+}
112014+
112015+// determine whether duplication will be necessary or not.
112016+static void search_interesting_conditions(struct interesting_node *cur_node, bool *interesting_conditions)
112017+{
112018+ struct pointer_set_t *visited;
112019+
112020+ if (gimple_assign_cast_p(cur_node->first_stmt))
112021+ interesting_conditions[CAST] = true;
112022+ else if (is_gimple_assign(cur_node->first_stmt) && gimple_num_ops(cur_node->first_stmt) > 2)
112023+ interesting_conditions[NOT_UNARY] = true;
112024+
112025+ visited = pointer_set_create();
112026+ set_conditions(visited, interesting_conditions, cur_node->node);
112027+ pointer_set_destroy(visited);
112028+}
112029+
112030+// Remove the size_overflow asm stmt and create an assignment from the input and output of the asm
112031+static void replace_size_overflow_asm_with_assign(gimple asm_stmt, tree lhs, tree rhs)
112032+{
112033+ gimple assign;
112034+ gimple_stmt_iterator gsi;
112035+
112036+ // already removed
112037+ if (gimple_bb(asm_stmt) == NULL)
112038+ return;
112039+ gsi = gsi_for_stmt(asm_stmt);
112040+
112041+ assign = gimple_build_assign(lhs, rhs);
112042+ gsi_insert_before(&gsi, assign, GSI_SAME_STMT);
112043+ SSA_NAME_DEF_STMT(lhs) = assign;
112044+
112045+ gsi_remove(&gsi, true);
112046+}
112047+
112048+/* Get the fndecl of an interesting stmt, the fndecl is the caller function if the interesting
112049+ * stmt is a return otherwise it is the callee function.
112050+ */
112051+const_tree get_interesting_orig_fndecl(const_gimple stmt, unsigned int argnum)
112052+{
112053+ const_tree fndecl;
112054+
112055+ if (argnum == 0)
112056+ fndecl = current_function_decl;
112057+ else
112058+ fndecl = gimple_call_fndecl(stmt);
112059+
112060+ if (fndecl == NULL_TREE)
112061+ return NULL_TREE;
112062+
112063+ return DECL_ORIGIN(fndecl);
112064+}
112065+
112066+// e.g., 3.8.2, 64, arch/x86/ia32/ia32_signal.c copy_siginfo_from_user32(): compat_ptr() u32 max
112067+static bool skip_asm(const_tree arg)
112068+{
112069+ gimple def_stmt = get_def_stmt(arg);
112070+
112071+ if (!def_stmt || !gimple_assign_cast_p(def_stmt))
112072+ return false;
112073+
112074+ def_stmt = get_def_stmt(gimple_assign_rhs1(def_stmt));
112075+ return def_stmt && gimple_code(def_stmt) == GIMPLE_ASM;
112076+}
112077+
112078+static void walk_use_def_phi(struct pointer_set_t *visited, struct interesting_node *cur_node, tree result)
112079+{
112080+ gimple phi = get_def_stmt(result);
112081+ unsigned int i, n = gimple_phi_num_args(phi);
112082+
112083+ pointer_set_insert(visited, phi);
112084+ for (i = 0; i < n; i++) {
112085+ tree arg = gimple_phi_arg_def(phi, i);
112086+
112087+ walk_use_def(visited, cur_node, arg);
112088+ }
112089+}
112090+
112091+static void walk_use_def_binary(struct pointer_set_t *visited, struct interesting_node *cur_node, tree lhs)
112092+{
112093+ gimple def_stmt = get_def_stmt(lhs);
112094+ tree rhs1, rhs2;
112095+
112096+ rhs1 = gimple_assign_rhs1(def_stmt);
112097+ rhs2 = gimple_assign_rhs2(def_stmt);
112098+
112099+ walk_use_def(visited, cur_node, rhs1);
112100+ walk_use_def(visited, cur_node, rhs2);
112101+}
112102+
112103+static void insert_last_node(struct interesting_node *cur_node, tree node)
112104+{
112105+ unsigned int i;
112106+ tree element;
112107+ enum tree_code code;
112108+
112109+ gcc_assert(node != NULL_TREE);
112110+
112111+ if (is_gimple_constant(node))
112112+ return;
112113+
112114+ code = TREE_CODE(node);
112115+ if (code == VAR_DECL) {
112116+ node = DECL_ORIGIN(node);
112117+ code = TREE_CODE(node);
112118+ }
112119+
112120+ if (code != PARM_DECL && code != FUNCTION_DECL && code != COMPONENT_REF)
112121+ return;
112122+
112123+#if BUILDING_GCC_VERSION <= 4007
112124+ FOR_EACH_VEC_ELT(tree, cur_node->last_nodes, i, element) {
112125+#else
112126+ FOR_EACH_VEC_ELT(*cur_node->last_nodes, i, element) {
112127+#endif
112128+ if (operand_equal_p(node, element, 0))
112129+ return;
112130+ }
112131+
112132+#if BUILDING_GCC_VERSION <= 4007
112133+ gcc_assert(VEC_length(tree, cur_node->last_nodes) < VEC_LEN);
112134+ VEC_safe_push(tree, gc, cur_node->last_nodes, node);
112135+#else
112136+ gcc_assert(cur_node->last_nodes->length() < VEC_LEN);
112137+ vec_safe_push(cur_node->last_nodes, node);
112138+#endif
112139+}
112140+
112141+// a size_overflow asm stmt in the control flow doesn't stop the recursion
112142+static void handle_asm_stmt(struct pointer_set_t *visited, struct interesting_node *cur_node, tree lhs, const_gimple stmt)
112143+{
112144+ if (!is_size_overflow_asm(stmt))
112145+ walk_use_def(visited, cur_node, SSA_NAME_VAR(lhs));
112146+}
112147+
112148+/* collect the parm_decls and fndecls (for checking a missing size_overflow attribute (ret or arg) or intentional_overflow)
112149+ * and component refs (for checking the intentional_overflow attribute).
112150+ */
112151+static void walk_use_def(struct pointer_set_t *visited, struct interesting_node *cur_node, tree lhs)
112152+{
112153+ const_gimple def_stmt;
112154+
112155+ if (TREE_CODE(lhs) != SSA_NAME) {
112156+ insert_last_node(cur_node, lhs);
112157+ return;
112158+ }
112159+
112160+ def_stmt = get_def_stmt(lhs);
112161+ if (!def_stmt)
112162+ return;
112163+
112164+ if (pointer_set_insert(visited, def_stmt))
112165+ return;
112166+
112167+ switch (gimple_code(def_stmt)) {
112168+ case GIMPLE_NOP:
112169+ return walk_use_def(visited, cur_node, SSA_NAME_VAR(lhs));
112170+ case GIMPLE_ASM:
112171+ return handle_asm_stmt(visited, cur_node, lhs, def_stmt);
112172+ case GIMPLE_CALL: {
112173+ tree fndecl = gimple_call_fndecl(def_stmt);
112174+
112175+ if (fndecl == NULL_TREE)
112176+ return;
112177+ insert_last_node(cur_node, fndecl);
112178+ return;
112179+ }
112180+ case GIMPLE_PHI:
112181+ return walk_use_def_phi(visited, cur_node, lhs);
112182+ case GIMPLE_ASSIGN:
112183+ switch (gimple_num_ops(def_stmt)) {
112184+ case 2:
112185+ return walk_use_def(visited, cur_node, gimple_assign_rhs1(def_stmt));
112186+ case 3:
112187+ return walk_use_def_binary(visited, cur_node, lhs);
112188+ }
112189+ default:
112190+ debug_gimple_stmt((gimple)def_stmt);
112191+ error("%s: unknown gimple code", __func__);
112192+ gcc_unreachable();
112193+ }
112194+}
112195+
112196+// Collect all the last nodes for checking the intentional_overflow and size_overflow attributes
112197+static void set_last_nodes(struct interesting_node *cur_node)
112198+{
112199+ struct pointer_set_t *visited;
112200+
112201+ visited = pointer_set_create();
112202+ walk_use_def(visited, cur_node, cur_node->node);
112203+ pointer_set_destroy(visited);
112204+}
112205+
112206+enum precond {
112207+ NO_ATTRIBUTE_SEARCH, NO_CHECK_INSERT, NONE
112208+};
112209+
112210+/* If there is a mark_turn_off intentional attribute on the caller or the callee then there is no duplication and missing size_overflow attribute check anywhere.
112211+ * There is only missing size_overflow attribute checking if the intentional_overflow attribute is the mark_no type.
112212+ * Stmt duplication is unnecessary if there are no binary/ternary assignements or if the unary assignment isn't a cast.
112213+ * It skips the possible error codes too. If the def_stmts trace back to a constant and there are no binary/ternary assigments then we assume that it is some kind of error code.
112214+ */
112215+static enum precond check_preconditions(struct interesting_node *cur_node)
112216+{
112217+ bool interesting_conditions[3] = {false, false, false};
112218+
112219+ set_last_nodes(cur_node);
112220+
112221+ check_intentional_attribute_ipa(cur_node);
112222+ if (cur_node->intentional_attr_decl == MARK_TURN_OFF || cur_node->intentional_attr_cur_fndecl == MARK_TURN_OFF)
112223+ return NO_ATTRIBUTE_SEARCH;
112224+
112225+ search_interesting_conditions(cur_node, interesting_conditions);
112226+
112227+ // error code
112228+ if (interesting_conditions[CAST] && interesting_conditions[FROM_CONST] && !interesting_conditions[NOT_UNARY])
112229+ return NO_ATTRIBUTE_SEARCH;
112230+
112231+ // unnecessary overflow check
112232+ if (!interesting_conditions[CAST] && !interesting_conditions[NOT_UNARY])
112233+ return NO_CHECK_INSERT;
112234+
112235+ if (cur_node->intentional_attr_cur_fndecl != MARK_NO)
112236+ return NO_CHECK_INSERT;
112237+
112238+ return NONE;
112239+}
112240+
112241+static tree cast_to_orig_type(struct visited *visited, gimple stmt, const_tree orig_node, tree new_node)
112242+{
112243+ const_gimple assign;
112244+ tree orig_type = TREE_TYPE(orig_node);
112245+ gimple_stmt_iterator gsi = gsi_for_stmt(stmt);
112246+
112247+ assign = build_cast_stmt(visited, orig_type, new_node, CREATE_NEW_VAR, &gsi, BEFORE_STMT, false);
112248+ return gimple_assign_lhs(assign);
112249+}
112250+
112251+static void change_orig_node(struct visited *visited, struct interesting_node *cur_node, tree new_node)
112252+{
112253+ void (*set_rhs)(gimple, tree);
112254+ gimple stmt = cur_node->first_stmt;
112255+ const_tree orig_node = cur_node->node;
112256+
112257+ switch (gimple_code(stmt)) {
112258+ case GIMPLE_RETURN:
112259+ gimple_return_set_retval(stmt, cast_to_orig_type(visited, stmt, orig_node, new_node));
112260+ break;
112261+ case GIMPLE_CALL:
112262+ gimple_call_set_arg(stmt, cur_node->num - 1, cast_to_orig_type(visited, stmt, orig_node, new_node));
112263+ break;
112264+ case GIMPLE_ASSIGN:
112265+ switch (cur_node->num) {
112266+ case 1:
112267+ set_rhs = &gimple_assign_set_rhs1;
112268+ break;
112269+ case 2:
112270+ set_rhs = &gimple_assign_set_rhs2;
112271+ break;
112272+#if BUILDING_GCC_VERSION >= 4006
112273+ case 3:
112274+ set_rhs = &gimple_assign_set_rhs3;
112275+ break;
112276+#endif
112277+ default:
112278+ gcc_unreachable();
112279+ }
112280+
112281+ set_rhs(stmt, cast_to_orig_type(visited, stmt, orig_node, new_node));
112282+ break;
112283+ default:
112284+ debug_gimple_stmt(stmt);
112285+ gcc_unreachable();
112286+ }
112287+
112288+ update_stmt(stmt);
112289+}
112290+
112291+static struct visited *create_visited(void)
112292+{
112293+ struct visited *new_node;
112294+
112295+ new_node = (struct visited *)xmalloc(sizeof(*new_node));
112296+ new_node->stmts = pointer_set_create();
112297+ new_node->my_stmts = pointer_set_create();
112298+ new_node->skip_expr_casts = pointer_set_create();
112299+ new_node->no_cast_check = pointer_set_create();
112300+ return new_node;
112301+}
112302+
112303+static void free_visited(struct visited *visited)
112304+{
112305+ pointer_set_destroy(visited->stmts);
112306+ pointer_set_destroy(visited->my_stmts);
112307+ pointer_set_destroy(visited->skip_expr_casts);
112308+ pointer_set_destroy(visited->no_cast_check);
112309+
112310+ free(visited);
112311+}
112312+
112313+/* This function calls the main recursion function (expand) that duplicates the stmts. Before that it checks the intentional_overflow attribute and asm stmts,
112314+ * it decides whether the duplication is necessary or not and it searches for missing size_overflow attributes. After expand() it changes the orig node to the duplicated node
112315+ * in the original stmt (first stmt) and it inserts the overflow check for the arg of the callee or for the return value.
112316+ */
112317+static struct next_cgraph_node *handle_interesting_stmt(struct visited *visited, struct next_cgraph_node *cnodes, struct interesting_node *cur_node, struct cgraph_node *caller_node)
112318+{
112319+ enum precond ret;
112320+ tree new_node, orig_node = cur_node->node;
112321+
112322+ ret = check_preconditions(cur_node);
112323+ if (ret == NO_ATTRIBUTE_SEARCH)
112324+ return cnodes;
112325+
112326+ cnodes = search_overflow_attribute(cnodes, cur_node);
112327+
112328+ if (ret == NO_CHECK_INSERT)
112329+ return cnodes;
112330+
112331+ new_node = expand(visited, caller_node, orig_node);
112332+ if (new_node == NULL_TREE)
112333+ return cnodes;
112334+
112335+ change_orig_node(visited, cur_node, new_node);
112336+ check_size_overflow(caller_node, cur_node->first_stmt, TREE_TYPE(new_node), new_node, orig_node, BEFORE_STMT);
112337+
112338+ return cnodes;
112339+}
112340+
112341+// Check visited_fns interesting nodes.
112342+static bool is_in_interesting_node(struct interesting_node *head, const_gimple first_stmt, const_tree node, unsigned int num)
112343+{
112344+ struct interesting_node *cur;
112345+
112346+ for (cur = head; cur; cur = cur->next) {
112347+ if (!operand_equal_p(node, cur->node, 0))
112348+ continue;
112349+ if (num != cur->num)
112350+ continue;
112351+ if (first_stmt == cur->first_stmt)
112352+ return true;
112353+ }
112354+ return false;
112355+}
112356+
112357+/* Create an interesting node. The ipa pass starts to duplicate from these stmts.
112358+ first_stmt: it is the call or assignment or ret stmt, change_orig_node() will change the original node (retval, or function arg) in this
112359+ last_nodes: they are the last stmts in the recursion (they haven't a def_stmt). They are useful in the missing size_overflow attribute check and
112360+ the intentional_overflow attribute check. They are collected by set_last_nodes().
112361+ num: arg count of a call stmt or 0 when it is a ret
112362+ node: the recursion starts from here, it is a call arg or a return value
112363+ fndecl: the fndecl of the interesting node when the node is an arg. it is the fndecl of the callee function otherwise it is the fndecl of the caller (current_function_fndecl) function.
112364+ intentional_attr_decl: intentional_overflow attribute of the callee function
112365+ intentional_attr_cur_fndecl: intentional_overflow attribute of the caller function
112366+ intentional_mark_from_gimple: the intentional overflow type of size_overflow asm stmt from gimple if it exists
112367+ */
112368+static struct interesting_node *create_new_interesting_node(struct interesting_node *head, gimple first_stmt, tree node, unsigned int num, gimple asm_stmt)
112369+{
112370+ struct interesting_node *new_node;
112371+ tree fndecl;
112372+ enum gimple_code code;
112373+
112374+ gcc_assert(node != NULL_TREE);
112375+ code = gimple_code(first_stmt);
112376+ gcc_assert(code == GIMPLE_CALL || code == GIMPLE_ASM || code == GIMPLE_ASSIGN || code == GIMPLE_RETURN);
112377+
112378+ if (num == CANNOT_FIND_ARG)
112379+ return head;
112380+
112381+ if (skip_types(node))
112382+ return head;
112383+
112384+ if (skip_asm(node))
112385+ return head;
112386+
112387+ if (is_gimple_call(first_stmt))
112388+ fndecl = gimple_call_fndecl(first_stmt);
112389+ else
112390+ fndecl = current_function_decl;
112391+
112392+ if (fndecl == NULL_TREE)
112393+ return head;
112394+
112395+ if (is_in_interesting_node(head, first_stmt, node, num))
112396+ return head;
112397+
112398+ new_node = (struct interesting_node *)xmalloc(sizeof(*new_node));
112399+
112400+ new_node->next = NULL;
112401+ new_node->first_stmt = first_stmt;
112402+#if BUILDING_GCC_VERSION <= 4007
112403+ new_node->last_nodes = VEC_alloc(tree, gc, VEC_LEN);
112404+#else
112405+ vec_alloc(new_node->last_nodes, VEC_LEN);
112406+#endif
112407+ new_node->num = num;
112408+ new_node->node = node;
112409+ new_node->fndecl = fndecl;
112410+ new_node->intentional_attr_decl = MARK_NO;
112411+ new_node->intentional_attr_cur_fndecl = MARK_NO;
112412+ new_node->intentional_mark_from_gimple = asm_stmt;
112413+
112414+ if (!head)
112415+ return new_node;
112416+
112417+ new_node->next = head;
112418+ return new_node;
112419+}
112420+
112421+/* Check the ret stmts in the functions on the next cgraph node list (these functions will be in the hash table and they are reachable from ipa).
112422+ * If the ret stmt is in the next cgraph node list then it's an interesting ret.
112423+ */
112424+static struct interesting_node *handle_stmt_by_cgraph_nodes_ret(struct interesting_node *head, gimple stmt, struct next_cgraph_node *next_node)
112425+{
112426+ struct next_cgraph_node *cur_node;
112427+ tree ret = gimple_return_retval(stmt);
112428+
112429+ if (ret == NULL_TREE)
112430+ return head;
112431+
112432+ for (cur_node = next_node; cur_node; cur_node = cur_node->next) {
112433+ if (!operand_equal_p(cur_node->callee_fndecl, DECL_ORIGIN(current_function_decl), 0))
112434+ continue;
112435+ if (cur_node->num == 0)
112436+ head = create_new_interesting_node(head, stmt, ret, 0, NOT_INTENTIONAL_ASM);
112437+ }
112438+
112439+ return head;
112440+}
112441+
112442+/* Check the call stmts in the functions on the next cgraph node list (these functions will be in the hash table and they are reachable from ipa).
112443+ * If the call stmt is in the next cgraph node list then it's an interesting call.
112444+ */
112445+static struct interesting_node *handle_stmt_by_cgraph_nodes_call(struct interesting_node *head, gimple stmt, struct next_cgraph_node *next_node)
112446+{
112447+ unsigned int argnum;
112448+ tree arg;
112449+ const_tree fndecl;
112450+ struct next_cgraph_node *cur_node;
112451+
112452+ fndecl = gimple_call_fndecl(stmt);
112453+ if (fndecl == NULL_TREE)
112454+ return head;
112455+
112456+ for (cur_node = next_node; cur_node; cur_node = cur_node->next) {
112457+ if (!operand_equal_p(cur_node->callee_fndecl, fndecl, 0))
112458+ continue;
112459+ argnum = get_correct_arg_count(cur_node->num, fndecl);
112460+ gcc_assert(argnum != CANNOT_FIND_ARG);
112461+ if (argnum == 0)
112462+ continue;
112463+
112464+ arg = gimple_call_arg(stmt, argnum - 1);
112465+ head = create_new_interesting_node(head, stmt, arg, argnum, NOT_INTENTIONAL_ASM);
112466+ }
112467+
112468+ return head;
112469+}
112470+
112471+static unsigned int check_ops(const_tree orig_node, const_tree node, unsigned int ret_count)
112472+{
112473+ if (!operand_equal_p(orig_node, node, 0))
112474+ return WRONG_NODE;
112475+ if (skip_types(node))
112476+ return WRONG_NODE;
112477+ return ret_count;
112478+}
112479+
112480+// Get the index of the rhs node in an assignment
112481+static unsigned int get_assign_ops_count(const_gimple stmt, tree node)
112482+{
112483+ const_tree rhs1, rhs2;
112484+ unsigned int ret;
112485+
112486+ gcc_assert(stmt);
112487+ gcc_assert(is_gimple_assign(stmt));
112488+
112489+ rhs1 = gimple_assign_rhs1(stmt);
112490+ gcc_assert(rhs1 != NULL_TREE);
112491+
112492+ switch (gimple_num_ops(stmt)) {
112493+ case 2:
112494+ return check_ops(node, rhs1, 1);
112495+ case 3:
112496+ ret = check_ops(node, rhs1, 1);
112497+ if (ret != WRONG_NODE)
112498+ return ret;
112499+
112500+ rhs2 = gimple_assign_rhs2(stmt);
112501+ gcc_assert(rhs2 != NULL_TREE);
112502+ return check_ops(node, rhs2, 2);
112503+ default:
112504+ gcc_unreachable();
112505+ }
112506+}
112507+
112508+// Find the correct arg number of a call stmt. It is needed when the interesting function is a cloned function.
112509+static unsigned int find_arg_number_gimple(const_tree arg, const_gimple stmt)
112510+{
112511+ unsigned int i;
112512+
112513+ if (gimple_call_fndecl(stmt) == NULL_TREE)
112514+ return CANNOT_FIND_ARG;
112515+
112516+ for (i = 0; i < gimple_call_num_args(stmt); i++) {
112517+ tree node;
112518+
112519+ node = gimple_call_arg(stmt, i);
112520+ if (!operand_equal_p(arg, node, 0))
112521+ continue;
112522+ if (!skip_types(node))
112523+ return i + 1;
112524+ }
112525+
112526+ return CANNOT_FIND_ARG;
112527+}
112528+
112529+/* starting from the size_overflow asm stmt collect interesting stmts. They can be
112530+ * any of return, call or assignment stmts (because of inlining).
112531+ */
112532+static struct interesting_node *get_interesting_ret_or_call(struct pointer_set_t *visited, struct interesting_node *head, tree node, gimple intentional_asm)
112533+{
112534+ use_operand_p use_p;
112535+ imm_use_iterator imm_iter;
112536+ unsigned int argnum;
112537+
112538+ gcc_assert(TREE_CODE(node) == SSA_NAME);
112539+
112540+ if (pointer_set_insert(visited, node))
112541+ return head;
112542+
112543+ FOR_EACH_IMM_USE_FAST(use_p, imm_iter, node) {
112544+ gimple stmt = USE_STMT(use_p);
112545+
112546+ if (stmt == NULL)
112547+ return head;
112548+ if (is_gimple_debug(stmt))
112549+ continue;
112550+
112551+ switch (gimple_code(stmt)) {
112552+ case GIMPLE_CALL:
112553+ argnum = find_arg_number_gimple(node, stmt);
112554+ head = create_new_interesting_node(head, stmt, node, argnum, intentional_asm);
112555+ break;
112556+ case GIMPLE_RETURN:
112557+ head = create_new_interesting_node(head, stmt, node, 0, intentional_asm);
112558+ break;
112559+ case GIMPLE_ASSIGN:
112560+ argnum = get_assign_ops_count(stmt, node);
112561+ head = create_new_interesting_node(head, stmt, node, argnum, intentional_asm);
112562+ break;
112563+ case GIMPLE_PHI: {
112564+ tree result = gimple_phi_result(stmt);
112565+ head = get_interesting_ret_or_call(visited, head, result, intentional_asm);
112566+ break;
112567+ }
112568+ case GIMPLE_ASM:
112569+ if (gimple_asm_noutputs(stmt) != 0)
112570+ break;
112571+ if (!is_size_overflow_asm(stmt))
112572+ break;
112573+ head = create_new_interesting_node(head, stmt, node, 1, intentional_asm);
112574+ break;
112575+ case GIMPLE_COND:
112576+ case GIMPLE_SWITCH:
112577+ break;
112578+ default:
112579+ debug_gimple_stmt(stmt);
112580+ gcc_unreachable();
112581+ break;
112582+ }
112583+ }
112584+ return head;
112585+}
112586+
112587+static void remove_size_overflow_asm(gimple stmt)
112588+{
112589+ gimple_stmt_iterator gsi;
112590+ tree input, output;
112591+
112592+ if (!is_size_overflow_asm(stmt))
112593+ return;
112594+
112595+ if (gimple_asm_noutputs(stmt) == 0) {
112596+ gsi = gsi_for_stmt(stmt);
112597+ ipa_remove_stmt_references(cgraph_get_create_node(current_function_decl), stmt);
112598+ gsi_remove(&gsi, true);
112599+ return;
112600+ }
112601+
112602+ input = gimple_asm_input_op(stmt, 0);
112603+ output = gimple_asm_output_op(stmt, 0);
112604+ replace_size_overflow_asm_with_assign(stmt, TREE_VALUE(output), TREE_VALUE(input));
112605+}
112606+
112607+/* handle the size_overflow asm stmts from the gimple pass and collect the interesting stmts.
112608+ * If the asm stmt is a parm_decl kind (noutputs == 0) then remove it.
112609+ * If it is a simple asm stmt then replace it with an assignment from the asm input to the asm output.
112610+ */
112611+static struct interesting_node *handle_stmt_by_size_overflow_asm(gimple stmt, struct interesting_node *head)
112612+{
112613+ const_tree output;
112614+ struct pointer_set_t *visited;
112615+ gimple intentional_asm = NOT_INTENTIONAL_ASM;
112616+
112617+ if (!is_size_overflow_asm(stmt))
112618+ return head;
112619+
112620+ if (is_size_overflow_intentional_asm_yes(stmt) || is_size_overflow_intentional_asm_turn_off(stmt))
112621+ intentional_asm = stmt;
112622+
112623+ gcc_assert(gimple_asm_ninputs(stmt) == 1);
112624+
112625+ if (gimple_asm_noutputs(stmt) == 0 && is_size_overflow_intentional_asm_turn_off(stmt))
112626+ return head;
112627+
112628+ if (gimple_asm_noutputs(stmt) == 0) {
112629+ const_tree input;
112630+
112631+ if (!is_size_overflow_intentional_asm_turn_off(stmt))
112632+ return head;
112633+
112634+ input = gimple_asm_input_op(stmt, 0);
112635+ remove_size_overflow_asm(stmt);
112636+ if (is_gimple_constant(TREE_VALUE(input)))
112637+ return head;
112638+ visited = pointer_set_create();
112639+ head = get_interesting_ret_or_call(visited, head, TREE_VALUE(input), intentional_asm);
112640+ pointer_set_destroy(visited);
112641+ return head;
112642+ }
112643+
112644+ if (!is_size_overflow_intentional_asm_yes(stmt) && !is_size_overflow_intentional_asm_turn_off(stmt))
112645+ remove_size_overflow_asm(stmt);
112646+
112647+ visited = pointer_set_create();
112648+ output = gimple_asm_output_op(stmt, 0);
112649+ head = get_interesting_ret_or_call(visited, head, TREE_VALUE(output), intentional_asm);
112650+ pointer_set_destroy(visited);
112651+ return head;
112652+}
112653+
112654+/* Iterate over all the stmts of a function and look for the size_overflow asm stmts (they were created in the gimple pass)
112655+ * or a call stmt or a return stmt and store them in the interesting_node list
112656+ */
112657+static struct interesting_node *collect_interesting_stmts(struct next_cgraph_node *next_node)
112658+{
112659+ basic_block bb;
112660+ struct interesting_node *head = NULL;
112661+
112662+ FOR_ALL_BB_FN(bb, cfun) {
112663+ gimple_stmt_iterator gsi;
112664+
112665+ for (gsi = gsi_start_bb(bb); !gsi_end_p(gsi); gsi_next(&gsi)) {
112666+ enum gimple_code code;
112667+ gimple stmt = gsi_stmt(gsi);
112668+
112669+ code = gimple_code(stmt);
112670+
112671+ if (code == GIMPLE_ASM)
112672+ head = handle_stmt_by_size_overflow_asm(stmt, head);
112673+
112674+ if (!next_node)
112675+ continue;
112676+ if (code == GIMPLE_CALL)
112677+ head = handle_stmt_by_cgraph_nodes_call(head, stmt, next_node);
112678+ if (code == GIMPLE_RETURN)
112679+ head = handle_stmt_by_cgraph_nodes_ret(head, stmt, next_node);
112680+ }
112681+ }
112682+ return head;
112683+}
112684+
112685+static void free_interesting_node(struct interesting_node *head)
112686+{
112687+ struct interesting_node *cur;
112688+
112689+ while (head) {
112690+ cur = head->next;
112691+#if BUILDING_GCC_VERSION <= 4007
112692+ VEC_free(tree, gc, head->last_nodes);
112693+#else
112694+ vec_free(head->last_nodes);
112695+#endif
112696+ free(head);
112697+ head = cur;
112698+ }
112699+}
112700+
112701+static struct visited_fns *insert_visited_fns_function(struct visited_fns *head, struct interesting_node *cur_node)
112702+{
112703+ struct visited_fns *new_visited_fns;
112704+
112705+ new_visited_fns = (struct visited_fns *)xmalloc(sizeof(*new_visited_fns));
112706+ new_visited_fns->fndecl = cur_node->fndecl;
112707+ new_visited_fns->num = cur_node->num;
112708+ new_visited_fns->first_stmt = cur_node->first_stmt;
112709+ new_visited_fns->next = NULL;
112710+
112711+ if (!head)
112712+ return new_visited_fns;
112713+
112714+ new_visited_fns->next = head;
112715+ return new_visited_fns;
112716+}
112717+
112718+/* Check whether the function was already visited_fns. If the fndecl, the arg count of the fndecl and the first_stmt (call or return) are same then
112719+ * it is a visited_fns function.
112720+ */
112721+static bool is_visited_fns_function(struct visited_fns *head, struct interesting_node *cur_node)
112722+{
112723+ struct visited_fns *cur;
112724+
112725+ if (!head)
112726+ return false;
112727+
112728+ for (cur = head; cur; cur = cur->next) {
112729+ if (cur_node->first_stmt != cur->first_stmt)
112730+ continue;
112731+ if (!operand_equal_p(cur_node->fndecl, cur->fndecl, 0))
112732+ continue;
112733+ if (cur_node->num == cur->num)
112734+ return true;
112735+ }
112736+ return false;
112737+}
112738+
112739+static void free_next_cgraph_node(struct next_cgraph_node *head)
112740+{
112741+ struct next_cgraph_node *cur;
112742+
112743+ while (head) {
112744+ cur = head->next;
112745+ free(head);
112746+ head = cur;
112747+ }
112748+}
112749+
112750+static void remove_all_size_overflow_asm(void)
112751+{
112752+ basic_block bb;
112753+
112754+ FOR_ALL_BB_FN(bb, cfun) {
112755+ gimple_stmt_iterator si;
112756+
112757+ for (si = gsi_start_bb(bb); !gsi_end_p(si); gsi_next(&si))
112758+ remove_size_overflow_asm(gsi_stmt(si));
112759+ }
112760+}
112761+
112762+/* Main recursive walk of the ipa pass: iterate over the collected interesting stmts in a function
112763+ * (they are interesting if they have an associated size_overflow asm stmt) and recursively walk
112764+ * the newly collected interesting functions (they are interesting if there is control flow between
112765+ * the interesting stmts and them).
112766+ */
112767+static struct visited_fns *handle_function(struct cgraph_node *node, struct next_cgraph_node *next_node, struct visited_fns *visited_fns)
112768+{
112769+ struct visited *visited;
112770+ struct interesting_node *head, *cur_node;
112771+ struct next_cgraph_node *cur_cnodes, *cnodes_head = NULL;
112772+
112773+ set_current_function_decl(NODE_DECL(node));
112774+ call_count = 0;
112775+
112776+ head = collect_interesting_stmts(next_node);
112777+
112778+ visited = create_visited();
112779+ for (cur_node = head; cur_node; cur_node = cur_node->next) {
112780+ if (is_visited_fns_function(visited_fns, cur_node))
112781+ continue;
112782+ cnodes_head = handle_interesting_stmt(visited, cnodes_head, cur_node, node);
112783+ visited_fns = insert_visited_fns_function(visited_fns, cur_node);
112784+ }
112785+
112786+ free_visited(visited);
112787+ free_interesting_node(head);
112788+ remove_all_size_overflow_asm();
112789+ unset_current_function_decl();
112790+
112791+ for (cur_cnodes = cnodes_head; cur_cnodes; cur_cnodes = cur_cnodes->next)
112792+ visited_fns = handle_function(cur_cnodes->current_function, cur_cnodes, visited_fns);
112793+
112794+ free_next_cgraph_node(cnodes_head);
112795+ return visited_fns;
112796+}
112797+
112798+static void free_visited_fns(struct visited_fns *head)
112799+{
112800+ struct visited_fns *cur;
112801+
112802+ while (head) {
112803+ cur = head->next;
112804+ free(head);
112805+ head = cur;
112806+ }
112807+}
112808+
112809+// Main entry point of the ipa pass: erases the plf flag of all stmts and iterates over all the functions
112810+unsigned int search_function(void)
112811+{
112812+ struct cgraph_node *node;
112813+ struct visited_fns *visited_fns = NULL;
112814+
112815+ FOR_EACH_FUNCTION_WITH_GIMPLE_BODY(node) {
112816+ gcc_assert(cgraph_function_flags_ready);
112817+#if BUILDING_GCC_VERSION <= 4007
112818+ gcc_assert(node->reachable);
112819+#endif
112820+
112821+ visited_fns = handle_function(node, NULL, visited_fns);
112822+ }
112823+
112824+ free_visited_fns(visited_fns);
112825+ return 0;
112826+}
112827+
112828+#if BUILDING_GCC_VERSION >= 4009
112829+static const struct pass_data insert_size_overflow_check_data = {
112830+#else
112831+static struct ipa_opt_pass_d insert_size_overflow_check = {
112832+ .pass = {
112833+#endif
112834+ .type = SIMPLE_IPA_PASS,
112835+ .name = "size_overflow",
112836+#if BUILDING_GCC_VERSION >= 4008
112837+ .optinfo_flags = OPTGROUP_NONE,
112838+#endif
112839+#if BUILDING_GCC_VERSION >= 4009
112840+ .has_gate = false,
112841+ .has_execute = true,
112842+#else
112843+ .gate = NULL,
112844+ .execute = search_function,
112845+ .sub = NULL,
112846+ .next = NULL,
112847+ .static_pass_number = 0,
112848+#endif
112849+ .tv_id = TV_NONE,
112850+ .properties_required = 0,
112851+ .properties_provided = 0,
112852+ .properties_destroyed = 0,
112853+ .todo_flags_start = 0,
112854+ .todo_flags_finish = TODO_verify_ssa | TODO_verify_stmts | TODO_remove_unused_locals | TODO_ggc_collect | TODO_verify_flow | TODO_dump_cgraph | TODO_dump_func | TODO_update_ssa_no_phi,
112855+#if BUILDING_GCC_VERSION < 4009
112856+ },
112857+ .generate_summary = NULL,
112858+ .write_summary = NULL,
112859+ .read_summary = NULL,
112860+#if BUILDING_GCC_VERSION >= 4006
112861+ .write_optimization_summary = NULL,
112862+ .read_optimization_summary = NULL,
112863+#endif
112864+ .stmt_fixup = NULL,
112865+ .function_transform_todo_flags_start = 0,
112866+ .function_transform = NULL,
112867+ .variable_transform = NULL,
112868+#endif
112869+};
112870+
112871+#if BUILDING_GCC_VERSION >= 4009
112872+namespace {
112873+class insert_size_overflow_check : public ipa_opt_pass_d {
112874+public:
112875+ insert_size_overflow_check() : ipa_opt_pass_d(insert_size_overflow_check_data, g, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL) {}
112876+ unsigned int execute() { return search_function(); }
112877+};
112878+}
112879+#endif
112880+
112881+struct opt_pass *make_insert_size_overflow_check(void)
112882+{
112883+#if BUILDING_GCC_VERSION >= 4009
112884+ return new insert_size_overflow_check();
112885+#else
112886+ return &insert_size_overflow_check.pass;
112887+#endif
112888+}
112889+
112890diff --git a/tools/gcc/size_overflow_plugin/intentional_overflow.c b/tools/gcc/size_overflow_plugin/intentional_overflow.c
108211new file mode 100644 112891new file mode 100644
108212index 0000000..9529806 112892index 0000000..38904bc
108213--- /dev/null 112893--- /dev/null
108214+++ b/tools/gcc/size_overflow_hash.data 112894+++ b/tools/gcc/size_overflow_plugin/intentional_overflow.c
108215@@ -0,0 +1,5709 @@ 112895@@ -0,0 +1,733 @@
112896+/*
112897+ * Copyright 2011-2014 by Emese Revfy <re.emese@gmail.com>
112898+ * Licensed under the GPL v2, or (at your option) v3
112899+ *
112900+ * Homepage:
112901+ * http://www.grsecurity.net/~ephox/overflow_plugin/
112902+ *
112903+ * Documentation:
112904+ * http://forums.grsecurity.net/viewtopic.php?f=7&t=3043
112905+ *
112906+ * This plugin recomputes expressions of function arguments marked by a size_overflow attribute
112907+ * with double integer precision (DImode/TImode for 32/64 bit integer types).
112908+ * The recomputed argument is checked against TYPE_MAX and an event is logged on overflow and the triggering process is killed.
112909+ *
112910+ * Usage:
112911+ * $ make
112912+ * $ make run
112913+ */
112914+
112915+#include "gcc-common.h"
112916+#include "size_overflow.h"
112917+
112918+/* Get the param of the intentional_overflow attribute.
112919+ * * 0: MARK_NOT_INTENTIONAL
112920+ * * 1..MAX_PARAM: MARK_YES
112921+ * * -1: MARK_TURN_OFF
112922+ */
112923+static tree get_attribute_param(const_tree decl)
112924+{
112925+ const_tree attr;
112926+
112927+ if (decl == NULL_TREE)
112928+ return NULL_TREE;
112929+
112930+ attr = lookup_attribute("intentional_overflow", DECL_ATTRIBUTES(decl));
112931+ if (!attr || !TREE_VALUE(attr))
112932+ return NULL_TREE;
112933+
112934+ return TREE_VALUE(attr);
112935+}
112936+
112937+// MARK_TURN_OFF
112938+bool is_turn_off_intentional_attr(const_tree decl)
112939+{
112940+ const_tree param_head;
112941+
112942+ param_head = get_attribute_param(decl);
112943+ if (param_head == NULL_TREE)
112944+ return false;
112945+
112946+ if (TREE_INT_CST_HIGH(TREE_VALUE(param_head)) == -1)
112947+ return true;
112948+ return false;
112949+}
112950+
112951+// MARK_NOT_INTENTIONAL
112952+bool is_end_intentional_intentional_attr(const_tree decl, unsigned int argnum)
112953+{
112954+ const_tree param_head;
112955+
112956+ if (argnum == 0)
112957+ return false;
112958+
112959+ param_head = get_attribute_param(decl);
112960+ if (param_head == NULL_TREE)
112961+ return false;
112962+
112963+ if (!TREE_INT_CST_LOW(TREE_VALUE(param_head)))
112964+ return true;
112965+ return false;
112966+}
112967+
112968+// MARK_YES
112969+bool is_yes_intentional_attr(const_tree decl, unsigned int argnum)
112970+{
112971+ tree param, param_head;
112972+
112973+ if (argnum == 0)
112974+ return false;
112975+
112976+ param_head = get_attribute_param(decl);
112977+ for (param = param_head; param; param = TREE_CHAIN(param))
112978+ if (argnum == TREE_INT_CST_LOW(TREE_VALUE(param)))
112979+ return true;
112980+ return false;
112981+}
112982+
112983+void print_missing_intentional(enum mark callee_attr, enum mark caller_attr, const_tree decl, unsigned int argnum)
112984+{
112985+ location_t loc;
112986+
112987+ if (caller_attr == MARK_NO || caller_attr == MARK_NOT_INTENTIONAL || caller_attr == MARK_TURN_OFF)
112988+ return;
112989+
112990+ if (callee_attr == MARK_NOT_INTENTIONAL || callee_attr == MARK_YES)
112991+ return;
112992+
112993+ loc = DECL_SOURCE_LOCATION(decl);
112994+ inform(loc, "The intentional_overflow attribute is missing from +%s+%u+", DECL_NAME_POINTER(decl), argnum);
112995+}
112996+
112997+// Get the field decl of a component ref for intentional_overflow checking
112998+static const_tree search_field_decl(const_tree comp_ref)
112999+{
113000+ const_tree field = NULL_TREE;
113001+ unsigned int i, len = TREE_OPERAND_LENGTH(comp_ref);
113002+
113003+ for (i = 0; i < len; i++) {
113004+ field = TREE_OPERAND(comp_ref, i);
113005+ if (TREE_CODE(field) == FIELD_DECL)
113006+ break;
113007+ }
113008+ gcc_assert(TREE_CODE(field) == FIELD_DECL);
113009+ return field;
113010+}
113011+
113012+/* Get the type of the intentional_overflow attribute of a node
113013+ * * MARK_TURN_OFF
113014+ * * MARK_YES
113015+ * * MARK_NO
113016+ * * MARK_NOT_INTENTIONAL
113017+ */
113018+enum mark get_intentional_attr_type(const_tree node)
113019+{
113020+ const_tree cur_decl;
113021+
113022+ if (node == NULL_TREE)
113023+ return MARK_NO;
113024+
113025+ switch (TREE_CODE(node)) {
113026+ case COMPONENT_REF:
113027+ cur_decl = search_field_decl(node);
113028+ if (is_turn_off_intentional_attr(cur_decl))
113029+ return MARK_TURN_OFF;
113030+ if (is_end_intentional_intentional_attr(cur_decl, 1))
113031+ return MARK_YES;
113032+ break;
113033+ case PARM_DECL: {
113034+ unsigned int argnum;
113035+
113036+ cur_decl = DECL_ORIGIN(current_function_decl);
113037+ argnum = find_arg_number_tree(node, cur_decl);
113038+ if (argnum == CANNOT_FIND_ARG)
113039+ return MARK_NO;
113040+ if (is_yes_intentional_attr(cur_decl, argnum))
113041+ return MARK_YES;
113042+ if (is_end_intentional_intentional_attr(cur_decl, argnum))
113043+ return MARK_NOT_INTENTIONAL;
113044+ break;
113045+ }
113046+ case FUNCTION_DECL:
113047+ if (is_turn_off_intentional_attr(DECL_ORIGIN(node)))
113048+ return MARK_TURN_OFF;
113049+ break;
113050+ default:
113051+ break;
113052+ }
113053+ return MARK_NO;
113054+}
113055+
113056+// Search for the intentional_overflow attribute on the last nodes
113057+static enum mark search_last_nodes_intentional(struct interesting_node *cur_node)
113058+{
113059+ unsigned int i;
113060+ tree last_node;
113061+ enum mark mark = MARK_NO;
113062+
113063+#if BUILDING_GCC_VERSION <= 4007
113064+ FOR_EACH_VEC_ELT(tree, cur_node->last_nodes, i, last_node) {
113065+#else
113066+ FOR_EACH_VEC_ELT(*cur_node->last_nodes, i, last_node) {
113067+#endif
113068+ mark = get_intentional_attr_type(last_node);
113069+ if (mark != MARK_NO)
113070+ break;
113071+ }
113072+ return mark;
113073+}
113074+
113075+/* Check the intentional kind of size_overflow asm stmt (created by the gimple pass) and
113076+ * set the appropriate intentional_overflow type. Delete the asm stmt in the end.
113077+ */
113078+static bool is_intentional_attribute_from_gimple(struct interesting_node *cur_node)
113079+{
113080+ if (!cur_node->intentional_mark_from_gimple)
113081+ return false;
113082+
113083+ if (is_size_overflow_intentional_asm_yes(cur_node->intentional_mark_from_gimple))
113084+ cur_node->intentional_attr_cur_fndecl = MARK_YES;
113085+ else
113086+ cur_node->intentional_attr_cur_fndecl = MARK_TURN_OFF;
113087+
113088+ // skip param decls
113089+ if (gimple_asm_noutputs(cur_node->intentional_mark_from_gimple) == 0)
113090+ return true;
113091+ return true;
113092+}
113093+
113094+/* Search intentional_overflow attribute on caller and on callee too.
113095+ * 0</MARK_YES: no dup, search size_overflow and intentional_overflow attributes
113096+ * 0/MARK_NOT_INTENTIONAL: no dup, search size_overflow attribute (int)
113097+ * -1/MARK_TURN_OFF: no dup, no search, current_function_decl -> no dup
113098+*/
113099+void check_intentional_attribute_ipa(struct interesting_node *cur_node)
113100+{
113101+ const_tree fndecl;
113102+
113103+ if (is_intentional_attribute_from_gimple(cur_node))
113104+ return;
113105+
113106+ if (is_turn_off_intentional_attr(DECL_ORIGIN(current_function_decl))) {
113107+ cur_node->intentional_attr_cur_fndecl = MARK_TURN_OFF;
113108+ return;
113109+ }
113110+
113111+ if (gimple_code(cur_node->first_stmt) == GIMPLE_ASM) {
113112+ cur_node->intentional_attr_cur_fndecl = MARK_NOT_INTENTIONAL;
113113+ return;
113114+ }
113115+
113116+ if (gimple_code(cur_node->first_stmt) == GIMPLE_ASSIGN)
113117+ return;
113118+
113119+ fndecl = get_interesting_orig_fndecl(cur_node->first_stmt, cur_node->num);
113120+ if (is_turn_off_intentional_attr(fndecl)) {
113121+ cur_node->intentional_attr_decl = MARK_TURN_OFF;
113122+ return;
113123+ }
113124+
113125+ if (is_end_intentional_intentional_attr(fndecl, cur_node->num))
113126+ cur_node->intentional_attr_decl = MARK_NOT_INTENTIONAL;
113127+ else if (is_yes_intentional_attr(fndecl, cur_node->num))
113128+ cur_node->intentional_attr_decl = MARK_YES;
113129+
113130+ cur_node->intentional_attr_cur_fndecl = search_last_nodes_intentional(cur_node);
113131+ print_missing_intentional(cur_node->intentional_attr_decl, cur_node->intentional_attr_cur_fndecl, cur_node->fndecl, cur_node->num);
113132+}
113133+
113134+bool is_a_cast_and_const_overflow(const_tree no_const_rhs)
113135+{
113136+ const_tree rhs1, lhs, rhs1_type, lhs_type;
113137+ enum machine_mode lhs_mode, rhs_mode;
113138+ gimple def_stmt = get_def_stmt(no_const_rhs);
113139+
113140+ if (!def_stmt || !gimple_assign_cast_p(def_stmt))
113141+ return false;
113142+
113143+ rhs1 = gimple_assign_rhs1(def_stmt);
113144+ lhs = gimple_assign_lhs(def_stmt);
113145+ rhs1_type = TREE_TYPE(rhs1);
113146+ lhs_type = TREE_TYPE(lhs);
113147+ rhs_mode = TYPE_MODE(rhs1_type);
113148+ lhs_mode = TYPE_MODE(lhs_type);
113149+ if (TYPE_UNSIGNED(lhs_type) == TYPE_UNSIGNED(rhs1_type) || lhs_mode != rhs_mode)
113150+ return false;
113151+
113152+ return true;
113153+}
113154+
113155+static unsigned int uses_num(tree node)
113156+{
113157+ imm_use_iterator imm_iter;
113158+ use_operand_p use_p;
113159+ unsigned int num = 0;
113160+
113161+ FOR_EACH_IMM_USE_FAST(use_p, imm_iter, node) {
113162+ gimple use_stmt = USE_STMT(use_p);
113163+
113164+ if (use_stmt == NULL)
113165+ return num;
113166+ if (is_gimple_debug(use_stmt))
113167+ continue;
113168+ if (gimple_assign_cast_p(use_stmt) && is_size_overflow_type(gimple_assign_lhs(use_stmt)))
113169+ continue;
113170+ num++;
113171+ }
113172+ return num;
113173+}
113174+
113175+static bool no_uses(tree node)
113176+{
113177+ return !uses_num(node);
113178+}
113179+
113180+// 3.8.5 mm/page-writeback.c __ilog2_u64(): ret, uint + uintmax; uint -> int; int max
113181+bool is_const_plus_unsigned_signed_truncation(const_tree lhs)
113182+{
113183+ tree rhs1, lhs_type, rhs_type, rhs2, not_const_rhs;
113184+ gimple def_stmt = get_def_stmt(lhs);
113185+
113186+ if (!def_stmt || !gimple_assign_cast_p(def_stmt))
113187+ return false;
113188+
113189+ rhs1 = gimple_assign_rhs1(def_stmt);
113190+ rhs_type = TREE_TYPE(rhs1);
113191+ lhs_type = TREE_TYPE(lhs);
113192+ if (TYPE_UNSIGNED(lhs_type) || !TYPE_UNSIGNED(rhs_type))
113193+ return false;
113194+ if (TYPE_MODE(lhs_type) != TYPE_MODE(rhs_type))
113195+ return false;
113196+
113197+ def_stmt = get_def_stmt(rhs1);
113198+ if (!def_stmt || !is_gimple_assign(def_stmt) || gimple_num_ops(def_stmt) != 3)
113199+ return false;
113200+
113201+ if (gimple_assign_rhs_code(def_stmt) != PLUS_EXPR)
113202+ return false;
113203+
113204+ rhs1 = gimple_assign_rhs1(def_stmt);
113205+ rhs2 = gimple_assign_rhs2(def_stmt);
113206+ if (!is_gimple_constant(rhs1) && !is_gimple_constant(rhs2))
113207+ return false;
113208+
113209+ if (is_gimple_constant(rhs2))
113210+ not_const_rhs = rhs1;
113211+ else
113212+ not_const_rhs = rhs2;
113213+
113214+ return no_uses(not_const_rhs);
113215+}
113216+
113217+static bool is_lt_signed_type_max(const_tree rhs)
113218+{
113219+ const_tree new_type, type_max, type = TREE_TYPE(rhs);
113220+
113221+ if (!TYPE_UNSIGNED(type))
113222+ return true;
113223+
113224+ switch (TYPE_MODE(type)) {
113225+ case QImode:
113226+ new_type = intQI_type_node;
113227+ break;
113228+ case HImode:
113229+ new_type = intHI_type_node;
113230+ break;
113231+ case SImode:
113232+ new_type = intSI_type_node;
113233+ break;
113234+ case DImode:
113235+ new_type = intDI_type_node;
113236+ break;
113237+ default:
113238+ debug_tree((tree)type);
113239+ gcc_unreachable();
113240+ }
113241+
113242+ type_max = TYPE_MAX_VALUE(new_type);
113243+ if (!tree_int_cst_lt(type_max, rhs))
113244+ return true;
113245+
113246+ return false;
113247+}
113248+
113249+static bool is_gt_zero(const_tree rhs)
113250+{
113251+ const_tree type = TREE_TYPE(rhs);
113252+
113253+ if (TYPE_UNSIGNED(type))
113254+ return true;
113255+
113256+ if (!tree_int_cst_lt(rhs, integer_zero_node))
113257+ return true;
113258+
113259+ return false;
113260+}
113261+
113262+bool is_a_constant_overflow(const_gimple stmt, const_tree rhs)
113263+{
113264+ if (gimple_assign_rhs_code(stmt) == MIN_EXPR)
113265+ return false;
113266+ if (!is_gimple_constant(rhs))
113267+ return false;
113268+
113269+ // If the const is between 0 and the max value of the signed type of the same bitsize then there is no intentional overflow
113270+ if (is_lt_signed_type_max(rhs) && is_gt_zero(rhs))
113271+ return false;
113272+
113273+ return true;
113274+}
113275+
113276+static tree change_assign_rhs(struct visited *visited, gimple stmt, const_tree orig_rhs, tree new_rhs)
113277+{
113278+ gimple assign;
113279+ gimple_stmt_iterator gsi = gsi_for_stmt(stmt);
113280+ tree origtype = TREE_TYPE(orig_rhs);
113281+
113282+ gcc_assert(is_gimple_assign(stmt));
113283+
113284+ assign = build_cast_stmt(visited, origtype, new_rhs, CREATE_NEW_VAR, &gsi, BEFORE_STMT, false);
113285+ pointer_set_insert(visited->my_stmts, assign);
113286+ return gimple_assign_lhs(assign);
113287+}
113288+
113289+tree handle_intentional_overflow(struct visited *visited, struct cgraph_node *caller_node, bool check_overflow, gimple stmt, tree change_rhs, tree new_rhs2)
113290+{
113291+ tree new_rhs, orig_rhs;
113292+ void (*gimple_assign_set_rhs)(gimple, tree);
113293+ tree rhs1 = gimple_assign_rhs1(stmt);
113294+ tree rhs2 = gimple_assign_rhs2(stmt);
113295+ tree lhs = gimple_assign_lhs(stmt);
113296+
113297+ if (!check_overflow)
113298+ return create_assign(visited, stmt, lhs, AFTER_STMT);
113299+
113300+ if (change_rhs == NULL_TREE)
113301+ return create_assign(visited, stmt, lhs, AFTER_STMT);
113302+
113303+ if (new_rhs2 == NULL_TREE) {
113304+ orig_rhs = rhs1;
113305+ gimple_assign_set_rhs = &gimple_assign_set_rhs1;
113306+ } else {
113307+ orig_rhs = rhs2;
113308+ gimple_assign_set_rhs = &gimple_assign_set_rhs2;
113309+ }
113310+
113311+ check_size_overflow(caller_node, stmt, TREE_TYPE(change_rhs), change_rhs, orig_rhs, BEFORE_STMT);
113312+
113313+ new_rhs = change_assign_rhs(visited, stmt, orig_rhs, change_rhs);
113314+ gimple_assign_set_rhs(stmt, new_rhs);
113315+ update_stmt(stmt);
113316+
113317+ return create_assign(visited, stmt, lhs, AFTER_STMT);
113318+}
113319+
113320+static bool is_subtraction_special(struct visited *visited, const_gimple stmt)
113321+{
113322+ gimple rhs1_def_stmt, rhs2_def_stmt;
113323+ const_tree rhs1_def_stmt_rhs1, rhs2_def_stmt_rhs1, rhs1_def_stmt_lhs, rhs2_def_stmt_lhs;
113324+ enum machine_mode rhs1_def_stmt_rhs1_mode, rhs2_def_stmt_rhs1_mode, rhs1_def_stmt_lhs_mode, rhs2_def_stmt_lhs_mode;
113325+ const_tree rhs1 = gimple_assign_rhs1(stmt);
113326+ const_tree rhs2 = gimple_assign_rhs2(stmt);
113327+
113328+ if (is_gimple_constant(rhs1) || is_gimple_constant(rhs2))
113329+ return false;
113330+
113331+ gcc_assert(TREE_CODE(rhs1) == SSA_NAME && TREE_CODE(rhs2) == SSA_NAME);
113332+
113333+ if (gimple_assign_rhs_code(stmt) != MINUS_EXPR)
113334+ return false;
113335+
113336+ rhs1_def_stmt = get_def_stmt(rhs1);
113337+ rhs2_def_stmt = get_def_stmt(rhs2);
113338+ if (!gimple_assign_cast_p(rhs1_def_stmt) || !gimple_assign_cast_p(rhs2_def_stmt))
113339+ return false;
113340+
113341+ rhs1_def_stmt_rhs1 = gimple_assign_rhs1(rhs1_def_stmt);
113342+ rhs2_def_stmt_rhs1 = gimple_assign_rhs1(rhs2_def_stmt);
113343+ rhs1_def_stmt_lhs = gimple_assign_lhs(rhs1_def_stmt);
113344+ rhs2_def_stmt_lhs = gimple_assign_lhs(rhs2_def_stmt);
113345+ rhs1_def_stmt_rhs1_mode = TYPE_MODE(TREE_TYPE(rhs1_def_stmt_rhs1));
113346+ rhs2_def_stmt_rhs1_mode = TYPE_MODE(TREE_TYPE(rhs2_def_stmt_rhs1));
113347+ rhs1_def_stmt_lhs_mode = TYPE_MODE(TREE_TYPE(rhs1_def_stmt_lhs));
113348+ rhs2_def_stmt_lhs_mode = TYPE_MODE(TREE_TYPE(rhs2_def_stmt_lhs));
113349+ if (GET_MODE_BITSIZE(rhs1_def_stmt_rhs1_mode) <= GET_MODE_BITSIZE(rhs1_def_stmt_lhs_mode))
113350+ return false;
113351+ if (GET_MODE_BITSIZE(rhs2_def_stmt_rhs1_mode) <= GET_MODE_BITSIZE(rhs2_def_stmt_lhs_mode))
113352+ return false;
113353+
113354+ pointer_set_insert(visited->no_cast_check, rhs1_def_stmt);
113355+ pointer_set_insert(visited->no_cast_check, rhs2_def_stmt);
113356+ return true;
113357+}
113358+
113359+static gimple create_binary_assign(struct visited *visited, enum tree_code code, gimple stmt, tree rhs1, tree rhs2)
113360+{
113361+ gimple assign;
113362+ gimple_stmt_iterator gsi = gsi_for_stmt(stmt);
113363+ tree type = TREE_TYPE(rhs1);
113364+ tree lhs = create_new_var(type);
113365+
113366+ gcc_assert(types_compatible_p(type, TREE_TYPE(rhs2)));
113367+ assign = gimple_build_assign_with_ops(code, lhs, rhs1, rhs2);
113368+ gimple_assign_set_lhs(assign, make_ssa_name(lhs, assign));
113369+
113370+ gsi_insert_before(&gsi, assign, GSI_NEW_STMT);
113371+ update_stmt(assign);
113372+ pointer_set_insert(visited->my_stmts, assign);
113373+ return assign;
113374+}
113375+
113376+static tree cast_to_TI_type(struct visited *visited, gimple stmt, tree node)
113377+{
113378+ gimple_stmt_iterator gsi;
113379+ gimple cast_stmt;
113380+ tree type = TREE_TYPE(node);
113381+
113382+ if (types_compatible_p(type, intTI_type_node))
113383+ return node;
113384+
113385+ gsi = gsi_for_stmt(stmt);
113386+ cast_stmt = build_cast_stmt(visited, intTI_type_node, node, CREATE_NEW_VAR, &gsi, BEFORE_STMT, false);
113387+ pointer_set_insert(visited->my_stmts, cast_stmt);
113388+ return gimple_assign_lhs(cast_stmt);
113389+}
113390+
113391+static tree get_def_stmt_rhs(struct visited *visited, const_tree var)
113392+{
113393+ tree rhs1, def_stmt_rhs1;
113394+ gimple rhs1_def_stmt, def_stmt_rhs1_def_stmt, def_stmt;
113395+
113396+ def_stmt = get_def_stmt(var);
113397+ if (!gimple_assign_cast_p(def_stmt))
113398+ return NULL_TREE;
113399+ gcc_assert(gimple_code(def_stmt) != GIMPLE_NOP && pointer_set_contains(visited->my_stmts, def_stmt) && gimple_assign_cast_p(def_stmt));
113400+
113401+ rhs1 = gimple_assign_rhs1(def_stmt);
113402+ rhs1_def_stmt = get_def_stmt(rhs1);
113403+ if (!gimple_assign_cast_p(rhs1_def_stmt))
113404+ return rhs1;
113405+
113406+ def_stmt_rhs1 = gimple_assign_rhs1(rhs1_def_stmt);
113407+ def_stmt_rhs1_def_stmt = get_def_stmt(def_stmt_rhs1);
113408+
113409+ switch (gimple_code(def_stmt_rhs1_def_stmt)) {
113410+ case GIMPLE_CALL:
113411+ case GIMPLE_NOP:
113412+ case GIMPLE_ASM:
113413+ case GIMPLE_PHI:
113414+ return def_stmt_rhs1;
113415+ case GIMPLE_ASSIGN:
113416+ return rhs1;
113417+ default:
113418+ debug_gimple_stmt(def_stmt_rhs1_def_stmt);
113419+ gcc_unreachable();
113420+ }
113421+}
113422+
113423+tree handle_integer_truncation(struct visited *visited, struct cgraph_node *caller_node, const_tree lhs)
113424+{
113425+ tree new_rhs1, new_rhs2;
113426+ tree new_rhs1_def_stmt_rhs1, new_rhs2_def_stmt_rhs1, new_lhs;
113427+ gimple assign, stmt = get_def_stmt(lhs);
113428+ tree rhs1 = gimple_assign_rhs1(stmt);
113429+ tree rhs2 = gimple_assign_rhs2(stmt);
113430+
113431+ if (!is_subtraction_special(visited, stmt))
113432+ return NULL_TREE;
113433+
113434+ new_rhs1 = expand(visited, caller_node, rhs1);
113435+ new_rhs2 = expand(visited, caller_node, rhs2);
113436+
113437+ new_rhs1_def_stmt_rhs1 = get_def_stmt_rhs(visited, new_rhs1);
113438+ new_rhs2_def_stmt_rhs1 = get_def_stmt_rhs(visited, new_rhs2);
113439+
113440+ if (new_rhs1_def_stmt_rhs1 == NULL_TREE || new_rhs2_def_stmt_rhs1 == NULL_TREE)
113441+ return NULL_TREE;
113442+
113443+ if (!types_compatible_p(TREE_TYPE(new_rhs1_def_stmt_rhs1), TREE_TYPE(new_rhs2_def_stmt_rhs1))) {
113444+ new_rhs1_def_stmt_rhs1 = cast_to_TI_type(visited, stmt, new_rhs1_def_stmt_rhs1);
113445+ new_rhs2_def_stmt_rhs1 = cast_to_TI_type(visited, stmt, new_rhs2_def_stmt_rhs1);
113446+ }
113447+
113448+ assign = create_binary_assign(visited, MINUS_EXPR, stmt, new_rhs1_def_stmt_rhs1, new_rhs2_def_stmt_rhs1);
113449+ new_lhs = gimple_assign_lhs(assign);
113450+ check_size_overflow(caller_node, assign, TREE_TYPE(new_lhs), new_lhs, rhs1, AFTER_STMT);
113451+
113452+ return dup_assign(visited, stmt, lhs, new_rhs1, new_rhs2, NULL_TREE);
113453+}
113454+
113455+bool is_a_neg_overflow(const_gimple stmt, const_tree rhs)
113456+{
113457+ const_gimple def_stmt;
113458+
113459+ if (TREE_CODE(rhs) != SSA_NAME)
113460+ return false;
113461+
113462+ if (gimple_assign_rhs_code(stmt) != PLUS_EXPR)
113463+ return false;
113464+
113465+ def_stmt = get_def_stmt(rhs);
113466+ if (!is_gimple_assign(def_stmt) || gimple_assign_rhs_code(def_stmt) != BIT_NOT_EXPR)
113467+ return false;
113468+
113469+ return true;
113470+}
113471+
113472+/* e.g., drivers/acpi/acpica/utids.c acpi_ut_execute_CID()
113473+ * ((count - 1) * sizeof(struct acpi_pnp_dee_id_list) -> (count + fffffff) * 16
113474+ * fffffff * 16 > signed max -> truncate
113475+ */
113476+static bool look_for_mult_and_add(const_gimple stmt)
113477+{
113478+ const_tree res;
113479+ tree rhs1, rhs2, def_rhs1, def_rhs2, const_rhs, def_const_rhs;
113480+ const_gimple def_stmt;
113481+
113482+ if (!stmt || gimple_code(stmt) == GIMPLE_NOP)
113483+ return false;
113484+ if (!is_gimple_assign(stmt))
113485+ return false;
113486+ if (gimple_assign_rhs_code(stmt) != MULT_EXPR)
113487+ return false;
113488+
113489+ rhs1 = gimple_assign_rhs1(stmt);
113490+ rhs2 = gimple_assign_rhs2(stmt);
113491+ if (is_gimple_constant(rhs1)) {
113492+ const_rhs = rhs1;
113493+ def_stmt = get_def_stmt(rhs2);
113494+ } else if (is_gimple_constant(rhs2)) {
113495+ const_rhs = rhs2;
113496+ def_stmt = get_def_stmt(rhs1);
113497+ } else
113498+ return false;
113499+
113500+ if (gimple_assign_rhs_code(def_stmt) != PLUS_EXPR && gimple_assign_rhs_code(def_stmt) != MINUS_EXPR)
113501+ return false;
113502+
113503+ def_rhs1 = gimple_assign_rhs1(def_stmt);
113504+ def_rhs2 = gimple_assign_rhs2(def_stmt);
113505+ if (is_gimple_constant(def_rhs1))
113506+ def_const_rhs = def_rhs1;
113507+ else if (is_gimple_constant(def_rhs2))
113508+ def_const_rhs = def_rhs2;
113509+ else
113510+ return false;
113511+
113512+ res = fold_binary_loc(gimple_location(def_stmt), MULT_EXPR, TREE_TYPE(const_rhs), const_rhs, def_const_rhs);
113513+ if (is_lt_signed_type_max(res) && is_gt_zero(res))
113514+ return false;
113515+ return true;
113516+}
113517+
113518+enum intentional_overflow_type add_mul_intentional_overflow(const_gimple stmt)
113519+{
113520+ const_gimple def_stmt_1, def_stmt_2;
113521+ const_tree rhs1, rhs2;
113522+ bool add_mul_rhs1, add_mul_rhs2;
113523+
113524+ rhs1 = gimple_assign_rhs1(stmt);
113525+ def_stmt_1 = get_def_stmt(rhs1);
113526+ add_mul_rhs1 = look_for_mult_and_add(def_stmt_1);
113527+
113528+ rhs2 = gimple_assign_rhs2(stmt);
113529+ def_stmt_2 = get_def_stmt(rhs2);
113530+ add_mul_rhs2 = look_for_mult_and_add(def_stmt_2);
113531+
113532+ if (add_mul_rhs1)
113533+ return RHS1_INTENTIONAL_OVERFLOW;
113534+ if (add_mul_rhs2)
113535+ return RHS2_INTENTIONAL_OVERFLOW;
113536+ return NO_INTENTIONAL_OVERFLOW;
113537+}
113538+
113539+static gimple get_dup_stmt(struct visited *visited, gimple stmt)
113540+{
113541+ gimple my_stmt;
113542+ gimple_stmt_iterator gsi = gsi_for_stmt(stmt);
113543+
113544+ gsi_next(&gsi);
113545+ my_stmt = gsi_stmt(gsi);
113546+
113547+ gcc_assert(pointer_set_contains(visited->my_stmts, my_stmt));
113548+ gcc_assert(gimple_assign_rhs_code(stmt) == gimple_assign_rhs_code(my_stmt));
113549+
113550+ return my_stmt;
113551+}
113552+
113553+/* unsigned type -> unary or binary assign (rhs1 or rhs2 is constant)
113554+ * unsigned type cast to signed type, unsigned type: no more uses
113555+ * e.g., lib/vsprintf.c:simple_strtol()
113556+ * _10 = (unsigned long int) _9
113557+ * _11 = -_10;
113558+ * _12 = (long int) _11; (_11_ no more uses)
113559+ */
113560+static bool is_call_or_cast(gimple stmt)
113561+{
113562+ return gimple_assign_cast_p(stmt) || is_gimple_call(stmt);
113563+}
113564+
113565+static bool is_unsigned_cast_or_call_def_stmt(const_tree node)
113566+{
113567+ const_tree rhs;
113568+ gimple def_stmt;
113569+
113570+ if (node == NULL_TREE)
113571+ return true;
113572+ if (is_gimple_constant(node))
113573+ return true;
113574+
113575+ def_stmt = get_def_stmt(node);
113576+ if (!def_stmt)
113577+ return false;
113578+
113579+ if (is_call_or_cast(def_stmt))
113580+ return true;
113581+
113582+ if (!is_gimple_assign(def_stmt) || gimple_num_ops(def_stmt) != 2)
113583+ return false;
113584+ rhs = gimple_assign_rhs1(def_stmt);
113585+ def_stmt = get_def_stmt(rhs);
113586+ if (!def_stmt)
113587+ return false;
113588+ return is_call_or_cast(def_stmt);
113589+}
113590+
113591+void unsigned_signed_cast_intentional_overflow(struct visited *visited, gimple stmt)
113592+{
113593+ unsigned int use_num;
113594+ gimple so_stmt;
113595+ const_gimple def_stmt;
113596+ const_tree rhs1, rhs2;
113597+ tree rhs = gimple_assign_rhs1(stmt);
113598+ tree lhs_type = TREE_TYPE(gimple_assign_lhs(stmt));
113599+ const_tree rhs_type = TREE_TYPE(rhs);
113600+
113601+ if (!(TYPE_UNSIGNED(rhs_type) && !TYPE_UNSIGNED(lhs_type)))
113602+ return;
113603+ if (GET_MODE_BITSIZE(TYPE_MODE(rhs_type)) != GET_MODE_BITSIZE(TYPE_MODE(lhs_type)))
113604+ return;
113605+ use_num = uses_num(rhs);
113606+ if (use_num != 1)
113607+ return;
113608+
113609+ def_stmt = get_def_stmt(rhs);
113610+ if (!def_stmt)
113611+ return;
113612+ if (!is_gimple_assign(def_stmt))
113613+ return;
113614+
113615+ rhs1 = gimple_assign_rhs1(def_stmt);
113616+ if (!is_unsigned_cast_or_call_def_stmt(rhs1))
113617+ return;
113618+
113619+ rhs2 = gimple_assign_rhs2(def_stmt);
113620+ if (!is_unsigned_cast_or_call_def_stmt(rhs2))
113621+ return;
113622+ if (gimple_num_ops(def_stmt) == 3 && !is_gimple_constant(rhs1) && !is_gimple_constant(rhs2))
113623+ return;
113624+
113625+ so_stmt = get_dup_stmt(visited, stmt);
113626+ create_up_and_down_cast(visited, so_stmt, lhs_type, gimple_assign_rhs1(so_stmt));
113627+}
113628+
113629diff --git a/tools/gcc/size_overflow_plugin/misc.c b/tools/gcc/size_overflow_plugin/misc.c
113630new file mode 100644
113631index 0000000..4bddad2
113632--- /dev/null
113633+++ b/tools/gcc/size_overflow_plugin/misc.c
113634@@ -0,0 +1,203 @@
113635+/*
113636+ * Copyright 2011-2014 by Emese Revfy <re.emese@gmail.com>
113637+ * Licensed under the GPL v2, or (at your option) v3
113638+ *
113639+ * Homepage:
113640+ * http://www.grsecurity.net/~ephox/overflow_plugin/
113641+ *
113642+ * Documentation:
113643+ * http://forums.grsecurity.net/viewtopic.php?f=7&t=3043
113644+ *
113645+ * This plugin recomputes expressions of function arguments marked by a size_overflow attribute
113646+ * with double integer precision (DImode/TImode for 32/64 bit integer types).
113647+ * The recomputed argument is checked against TYPE_MAX and an event is logged on overflow and the triggering process is killed.
113648+ *
113649+ * Usage:
113650+ * $ make
113651+ * $ make run
113652+ */
113653+
113654+#include "gcc-common.h"
113655+#include "size_overflow.h"
113656+
113657+void set_current_function_decl(tree fndecl)
113658+{
113659+ gcc_assert(fndecl != NULL_TREE);
113660+
113661+ push_cfun(DECL_STRUCT_FUNCTION(fndecl));
113662+ calculate_dominance_info(CDI_DOMINATORS);
113663+ current_function_decl = fndecl;
113664+}
113665+
113666+void unset_current_function_decl(void)
113667+{
113668+ free_dominance_info(CDI_DOMINATORS);
113669+ pop_cfun();
113670+ current_function_decl = NULL_TREE;
113671+}
113672+
113673+static bool is_bool(const_tree node)
113674+{
113675+ const_tree type;
113676+
113677+ if (node == NULL_TREE)
113678+ return false;
113679+
113680+ type = TREE_TYPE(node);
113681+ if (!INTEGRAL_TYPE_P(type))
113682+ return false;
113683+ if (TREE_CODE(type) == BOOLEAN_TYPE)
113684+ return true;
113685+ if (TYPE_PRECISION(type) == 1)
113686+ return true;
113687+ return false;
113688+}
113689+
113690+bool skip_types(const_tree var)
113691+{
113692+ tree type;
113693+ enum tree_code code;
113694+
113695+ if (is_gimple_constant(var))
113696+ return true;
113697+
113698+ switch (TREE_CODE(var)) {
113699+ case ADDR_EXPR:
113700+#if BUILDING_GCC_VERSION >= 4006
113701+ case MEM_REF:
113702+#endif
113703+ case ARRAY_REF:
113704+ case BIT_FIELD_REF:
113705+ case INDIRECT_REF:
113706+ case TARGET_MEM_REF:
113707+ case COMPONENT_REF:
113708+ case VAR_DECL:
113709+ case VIEW_CONVERT_EXPR:
113710+ return true;
113711+ default:
113712+ break;
113713+ }
113714+
113715+ code = TREE_CODE(var);
113716+ gcc_assert(code == SSA_NAME || code == PARM_DECL);
113717+
113718+ type = TREE_TYPE(var);
113719+ switch (TREE_CODE(type)) {
113720+ case INTEGER_TYPE:
113721+ case ENUMERAL_TYPE:
113722+ return false;
113723+ case BOOLEAN_TYPE:
113724+ return is_bool(var);
113725+ default:
113726+ return true;
113727+ }
113728+}
113729+
113730+gimple get_def_stmt(const_tree node)
113731+{
113732+ gcc_assert(node != NULL_TREE);
113733+
113734+ if (skip_types(node))
113735+ return NULL;
113736+
113737+ if (TREE_CODE(node) != SSA_NAME)
113738+ return NULL;
113739+ return SSA_NAME_DEF_STMT(node);
113740+}
113741+
113742+tree create_new_var(tree type)
113743+{
113744+ tree new_var = create_tmp_var(type, "cicus");
113745+
113746+ add_referenced_var(new_var);
113747+ return new_var;
113748+}
113749+
113750+static bool skip_cast(tree dst_type, const_tree rhs, bool force)
113751+{
113752+ const_gimple def_stmt = get_def_stmt(rhs);
113753+
113754+ if (force)
113755+ return false;
113756+
113757+ if (is_gimple_constant(rhs))
113758+ return false;
113759+
113760+ if (!def_stmt || gimple_code(def_stmt) == GIMPLE_NOP)
113761+ return false;
113762+
113763+ if (!types_compatible_p(dst_type, TREE_TYPE(rhs)))
113764+ return false;
113765+
113766+ // DI type can be on 32 bit (from create_assign) but overflow type stays DI
113767+ if (LONG_TYPE_SIZE == GET_MODE_BITSIZE(SImode))
113768+ return false;
113769+
113770+ return true;
113771+}
113772+
113773+tree cast_a_tree(tree type, tree var)
113774+{
113775+ gcc_assert(type != NULL_TREE);
113776+ gcc_assert(var != NULL_TREE);
113777+ gcc_assert(fold_convertible_p(type, var));
113778+
113779+ return fold_convert(type, var);
113780+}
113781+
113782+gimple build_cast_stmt(struct visited *visited, tree dst_type, tree rhs, tree lhs, gimple_stmt_iterator *gsi, bool before, bool force)
113783+{
113784+ gimple assign, def_stmt;
113785+
113786+ gcc_assert(dst_type != NULL_TREE && rhs != NULL_TREE);
113787+ gcc_assert(!is_gimple_constant(rhs));
113788+ if (gsi_end_p(*gsi) && before == AFTER_STMT)
113789+ gcc_unreachable();
113790+
113791+ def_stmt = get_def_stmt(rhs);
113792+ if (def_stmt && gimple_code(def_stmt) != GIMPLE_NOP && skip_cast(dst_type, rhs, force) && pointer_set_contains(visited->my_stmts, def_stmt))
113793+ return def_stmt;
113794+
113795+ if (lhs == CREATE_NEW_VAR)
113796+ lhs = create_new_var(dst_type);
113797+
113798+ assign = gimple_build_assign(lhs, cast_a_tree(dst_type, rhs));
113799+
113800+ if (!gsi_end_p(*gsi)) {
113801+ location_t loc = gimple_location(gsi_stmt(*gsi));
113802+ gimple_set_location(assign, loc);
113803+ }
113804+
113805+ gimple_assign_set_lhs(assign, make_ssa_name(lhs, assign));
113806+
113807+ if (before)
113808+ gsi_insert_before(gsi, assign, GSI_NEW_STMT);
113809+ else
113810+ gsi_insert_after(gsi, assign, GSI_NEW_STMT);
113811+ update_stmt(assign);
113812+ return assign;
113813+}
113814+
113815+bool is_size_overflow_type(const_tree var)
113816+{
113817+ const char *name;
113818+ const_tree type_name, type;
113819+
113820+ if (var == NULL_TREE)
113821+ return false;
113822+
113823+ type = TREE_TYPE(var);
113824+ type_name = TYPE_NAME(type);
113825+ if (type_name == NULL_TREE)
113826+ return false;
113827+
113828+ if (DECL_P(type_name))
113829+ name = DECL_NAME_POINTER(type_name);
113830+ else
113831+ name = IDENTIFIER_POINTER(type_name);
113832+
113833+ if (!strncmp(name, "size_overflow_type", 18))
113834+ return true;
113835+ return false;
113836+}
113837+
113838diff --git a/tools/gcc/size_overflow_plugin/remove_unnecessary_dup.c b/tools/gcc/size_overflow_plugin/remove_unnecessary_dup.c
113839new file mode 100644
113840index 0000000..7c9e6d1
113841--- /dev/null
113842+++ b/tools/gcc/size_overflow_plugin/remove_unnecessary_dup.c
113843@@ -0,0 +1,138 @@
113844+/*
113845+ * Copyright 2011-2014 by Emese Revfy <re.emese@gmail.com>
113846+ * Licensed under the GPL v2, or (at your option) v3
113847+ *
113848+ * Homepage:
113849+ * http://www.grsecurity.net/~ephox/overflow_plugin/
113850+ *
113851+ * Documentation:
113852+ * http://forums.grsecurity.net/viewtopic.php?f=7&t=3043
113853+ *
113854+ * This plugin recomputes expressions of function arguments marked by a size_overflow attribute
113855+ * with double integer precision (DImode/TImode for 32/64 bit integer types).
113856+ * The recomputed argument is checked against TYPE_MAX and an event is logged on overflow and the triggering process is killed.
113857+ *
113858+ * Usage:
113859+ * $ make
113860+ * $ make run
113861+ */
113862+
113863+#include "gcc-common.h"
113864+#include "size_overflow.h"
113865+
113866+bool skip_expr_on_double_type(const_gimple stmt)
113867+{
113868+ enum tree_code code = gimple_assign_rhs_code(stmt);
113869+
113870+ switch (code) {
113871+ case RSHIFT_EXPR:
113872+ case TRUNC_DIV_EXPR:
113873+ case CEIL_DIV_EXPR:
113874+ case FLOOR_DIV_EXPR:
113875+ case ROUND_DIV_EXPR:
113876+ case EXACT_DIV_EXPR:
113877+ case RDIV_EXPR:
113878+ case TRUNC_MOD_EXPR:
113879+ case CEIL_MOD_EXPR:
113880+ case FLOOR_MOD_EXPR:
113881+ case ROUND_MOD_EXPR:
113882+ return true;
113883+ default:
113884+ return false;
113885+ }
113886+}
113887+
113888+void create_up_and_down_cast(struct visited *visited, gimple use_stmt, tree orig_type, tree rhs)
113889+{
113890+ const_tree orig_rhs1;
113891+ tree down_lhs, new_lhs, dup_type = TREE_TYPE(rhs);
113892+ gimple down_cast, up_cast;
113893+ gimple_stmt_iterator gsi = gsi_for_stmt(use_stmt);
113894+
113895+ down_cast = build_cast_stmt(visited, orig_type, rhs, CREATE_NEW_VAR, &gsi, BEFORE_STMT, false);
113896+ down_lhs = gimple_assign_lhs(down_cast);
113897+
113898+ gsi = gsi_for_stmt(use_stmt);
113899+ up_cast = build_cast_stmt(visited, dup_type, down_lhs, CREATE_NEW_VAR, &gsi, BEFORE_STMT, false);
113900+ new_lhs = gimple_assign_lhs(up_cast);
113901+
113902+ orig_rhs1 = gimple_assign_rhs1(use_stmt);
113903+ if (operand_equal_p(orig_rhs1, rhs, 0))
113904+ gimple_assign_set_rhs1(use_stmt, new_lhs);
113905+ else
113906+ gimple_assign_set_rhs2(use_stmt, new_lhs);
113907+ update_stmt(use_stmt);
113908+
113909+ pointer_set_insert(visited->my_stmts, up_cast);
113910+ pointer_set_insert(visited->my_stmts, down_cast);
113911+ pointer_set_insert(visited->skip_expr_casts, up_cast);
113912+ pointer_set_insert(visited->skip_expr_casts, down_cast);
113913+}
113914+
113915+static tree get_proper_unsigned_half_type(const_tree node)
113916+{
113917+ tree new_type, type;
113918+
113919+ gcc_assert(is_size_overflow_type(node));
113920+
113921+ type = TREE_TYPE(node);
113922+ switch (TYPE_MODE(type)) {
113923+ case HImode:
113924+ new_type = unsigned_intQI_type_node;
113925+ break;
113926+ case SImode:
113927+ new_type = unsigned_intHI_type_node;
113928+ break;
113929+ case DImode:
113930+ new_type = unsigned_intSI_type_node;
113931+ break;
113932+ case TImode:
113933+ new_type = unsigned_intDI_type_node;
113934+ break;
113935+ default:
113936+ gcc_unreachable();
113937+ }
113938+
113939+ if (TYPE_QUALS(type) != 0)
113940+ return build_qualified_type(new_type, TYPE_QUALS(type));
113941+ return new_type;
113942+}
113943+
113944+static void insert_cast_rhs(struct visited *visited, gimple stmt, tree rhs)
113945+{
113946+ tree type;
113947+
113948+ if (rhs == NULL_TREE)
113949+ return;
113950+ if (!is_size_overflow_type(rhs))
113951+ return;
113952+
113953+ type = get_proper_unsigned_half_type(rhs);
113954+ if (is_gimple_constant(rhs))
113955+ return;
113956+ create_up_and_down_cast(visited, stmt, type, rhs);
113957+}
113958+
113959+static void insert_cast(struct visited *visited, gimple stmt, tree rhs)
113960+{
113961+ if (LONG_TYPE_SIZE == GET_MODE_BITSIZE(SImode) && !is_size_overflow_type(rhs))
113962+ return;
113963+ gcc_assert(is_size_overflow_type(rhs));
113964+ insert_cast_rhs(visited, stmt, rhs);
113965+}
113966+
113967+void insert_cast_expr(struct visited *visited, gimple stmt, enum intentional_overflow_type type)
113968+{
113969+ tree rhs1, rhs2;
113970+
113971+ if (type == NO_INTENTIONAL_OVERFLOW || type == RHS1_INTENTIONAL_OVERFLOW) {
113972+ rhs1 = gimple_assign_rhs1(stmt);
113973+ insert_cast(visited, stmt, rhs1);
113974+ }
113975+
113976+ if (type == NO_INTENTIONAL_OVERFLOW || type == RHS2_INTENTIONAL_OVERFLOW) {
113977+ rhs2 = gimple_assign_rhs2(stmt);
113978+ insert_cast(visited, stmt, rhs2);
113979+ }
113980+}
113981+
113982diff --git a/tools/gcc/size_overflow_plugin/size_overflow.h b/tools/gcc/size_overflow_plugin/size_overflow.h
113983new file mode 100644
113984index 0000000..e5b4e50
113985--- /dev/null
113986+++ b/tools/gcc/size_overflow_plugin/size_overflow.h
113987@@ -0,0 +1,127 @@
113988+#ifndef SIZE_OVERFLOW_H
113989+#define SIZE_OVERFLOW_H
113990+
113991+#define CREATE_NEW_VAR NULL_TREE
113992+#define CANNOT_FIND_ARG 32
113993+#define MAX_PARAM 31
113994+#define BEFORE_STMT true
113995+#define AFTER_STMT false
113996+
113997+#define TURN_OFF_ASM_STR "# size_overflow MARK_TURN_OFF "
113998+#define YES_ASM_STR "# size_overflow MARK_YES "
113999+#define OK_ASM_STR "# size_overflow "
114000+
114001+enum mark {
114002+ MARK_NO, MARK_YES, MARK_NOT_INTENTIONAL, MARK_TURN_OFF
114003+};
114004+
114005+enum intentional_overflow_type {
114006+ NO_INTENTIONAL_OVERFLOW, RHS1_INTENTIONAL_OVERFLOW, RHS2_INTENTIONAL_OVERFLOW
114007+};
114008+
114009+struct visited {
114010+ struct pointer_set_t *stmts;
114011+ struct pointer_set_t *my_stmts;
114012+ struct pointer_set_t *skip_expr_casts;
114013+ struct pointer_set_t *no_cast_check;
114014+};
114015+
114016+// size_overflow_plugin.c
114017+extern tree report_size_overflow_decl;
114018+extern tree size_overflow_type_HI;
114019+extern tree size_overflow_type_SI;
114020+extern tree size_overflow_type_DI;
114021+extern tree size_overflow_type_TI;
114022+
114023+
114024+// size_overflow_plugin_hash.c
114025+struct size_overflow_hash {
114026+ const struct size_overflow_hash * const next;
114027+ const char * const name;
114028+ const unsigned int param;
114029+};
114030+
114031+struct interesting_node {
114032+ struct interesting_node *next;
114033+ gimple first_stmt;
114034+ const_tree fndecl;
114035+ tree node;
114036+#if BUILDING_GCC_VERSION <= 4007
114037+ VEC(tree, gc) *last_nodes;
114038+#else
114039+ vec<tree, va_gc> *last_nodes;
114040+#endif
114041+ unsigned int num;
114042+ enum mark intentional_attr_decl;
114043+ enum mark intentional_attr_cur_fndecl;
114044+ gimple intentional_mark_from_gimple;
114045+};
114046+
114047+extern bool is_size_overflow_asm(const_gimple stmt);
114048+extern unsigned int get_function_num(const_tree node, const_tree orig_fndecl);
114049+extern unsigned int get_correct_arg_count(unsigned int argnum, const_tree fndecl);
114050+extern bool is_missing_function(const_tree orig_fndecl, unsigned int num);
114051+extern bool is_a_return_check(const_tree node);
114052+extern const struct size_overflow_hash *get_function_hash(const_tree fndecl);
114053+extern unsigned int find_arg_number_tree(const_tree arg, const_tree func);
114054+
114055+
114056+// size_overflow_debug.c
114057+extern struct opt_pass *make_dump_pass(void);
114058+
114059+
114060+// intentional_overflow.c
114061+extern enum mark get_intentional_attr_type(const_tree node);
114062+extern bool is_size_overflow_intentional_asm_yes(const_gimple stmt);
114063+extern bool is_size_overflow_intentional_asm_turn_off(const_gimple stmt);
114064+extern bool is_end_intentional_intentional_attr(const_tree decl, unsigned int argnum);
114065+extern bool is_yes_intentional_attr(const_tree decl, unsigned int argnum);
114066+extern bool is_turn_off_intentional_attr(const_tree decl);
114067+extern void print_missing_intentional(enum mark callee_attr, enum mark caller_attr, const_tree decl, unsigned int argnum);
114068+extern void check_intentional_attribute_ipa(struct interesting_node *cur_node);
114069+extern bool is_a_cast_and_const_overflow(const_tree no_const_rhs);
114070+extern bool is_const_plus_unsigned_signed_truncation(const_tree lhs);
114071+extern bool is_a_constant_overflow(const_gimple stmt, const_tree rhs);
114072+extern tree handle_intentional_overflow(struct visited *visited, struct cgraph_node *caller_node, bool check_overflow, gimple stmt, tree change_rhs, tree new_rhs2);
114073+extern tree handle_integer_truncation(struct visited *visited, struct cgraph_node *caller_node, const_tree lhs);
114074+extern bool is_a_neg_overflow(const_gimple stmt, const_tree rhs);
114075+extern enum intentional_overflow_type add_mul_intentional_overflow(const_gimple def_stmt);
114076+extern void unsigned_signed_cast_intentional_overflow(struct visited *visited, gimple stmt);
114077+
114078+
114079+// insert_size_overflow_check_ipa.c
114080+extern unsigned int search_function(void);
114081+extern unsigned int call_count;
114082+extern struct opt_pass *make_insert_size_overflow_check(void);
114083+extern const_tree get_interesting_orig_fndecl(const_gimple stmt, unsigned int argnum);
114084+
114085+
114086+// insert_size_overflow_asm.c
114087+extern struct opt_pass *make_insert_size_overflow_asm_pass(void);
114088+
114089+
114090+// misc.c
114091+extern void set_current_function_decl(tree fndecl);
114092+extern void unset_current_function_decl(void);
114093+extern gimple get_def_stmt(const_tree node);
114094+extern tree create_new_var(tree type);
114095+extern gimple build_cast_stmt(struct visited *visited, tree dst_type, tree rhs, tree lhs, gimple_stmt_iterator *gsi, bool before, bool force);
114096+extern bool skip_types(const_tree var);
114097+extern tree cast_a_tree(tree type, tree var);
114098+extern bool is_size_overflow_type(const_tree var);
114099+
114100+
114101+// insert_size_overflow_check_core.c
114102+extern tree expand(struct visited *visited, struct cgraph_node *caller_node, tree lhs);
114103+extern void check_size_overflow(struct cgraph_node *caller_node, gimple stmt, tree size_overflow_type, tree cast_rhs, tree rhs, bool before);
114104+extern tree dup_assign(struct visited *visited, gimple oldstmt, const_tree node, tree rhs1, tree rhs2, tree __unused rhs3);
114105+extern tree create_assign(struct visited *visited, gimple oldstmt, tree rhs1, bool before);
114106+
114107+
114108+// remove_unnecessary_dup.c
114109+extern struct opt_pass *make_remove_unnecessary_dup_pass(void);
114110+extern void insert_cast_expr(struct visited *visited, gimple stmt, enum intentional_overflow_type type);
114111+extern bool skip_expr_on_double_type(const_gimple stmt);
114112+extern void create_up_and_down_cast(struct visited *visited, gimple use_stmt, tree orig_type, tree rhs);
114113+
114114+#endif
114115diff --git a/tools/gcc/size_overflow_plugin/size_overflow_debug.c b/tools/gcc/size_overflow_plugin/size_overflow_debug.c
114116new file mode 100644
114117index 0000000..4378111
114118--- /dev/null
114119+++ b/tools/gcc/size_overflow_plugin/size_overflow_debug.c
114120@@ -0,0 +1,116 @@
114121+/*
114122+ * Copyright 2011-2014 by Emese Revfy <re.emese@gmail.com>
114123+ * Licensed under the GPL v2, or (at your option) v3
114124+ *
114125+ * Homepage:
114126+ * http://www.grsecurity.net/~ephox/overflow_plugin/
114127+ *
114128+ * Documentation:
114129+ * http://forums.grsecurity.net/viewtopic.php?f=7&t=3043
114130+ *
114131+ * This plugin recomputes expressions of function arguments marked by a size_overflow attribute
114132+ * with double integer precision (DImode/TImode for 32/64 bit integer types).
114133+ * The recomputed argument is checked against TYPE_MAX and an event is logged on overflow and the triggering process is killed.
114134+ *
114135+ * Usage:
114136+ * $ make
114137+ * $ make run
114138+ */
114139+
114140+#include "gcc-common.h"
114141+
114142+static unsigned int dump_functions(void)
114143+{
114144+ struct cgraph_node *node;
114145+
114146+ FOR_EACH_FUNCTION_WITH_GIMPLE_BODY(node) {
114147+ basic_block bb;
114148+
114149+ push_cfun(DECL_STRUCT_FUNCTION(NODE_DECL(node)));
114150+ current_function_decl = NODE_DECL(node);
114151+
114152+ fprintf(stderr, "-----------------------------------------\n%s\n-----------------------------------------\n", DECL_NAME_POINTER(current_function_decl));
114153+
114154+ FOR_ALL_BB_FN(bb, cfun) {
114155+ gimple_stmt_iterator si;
114156+
114157+ fprintf(stderr, "<bb %u>:\n", bb->index);
114158+ for (si = gsi_start_phis(bb); !gsi_end_p(si); gsi_next(&si))
114159+ debug_gimple_stmt(gsi_stmt(si));
114160+ for (si = gsi_start_bb(bb); !gsi_end_p(si); gsi_next(&si))
114161+ debug_gimple_stmt(gsi_stmt(si));
114162+ fprintf(stderr, "\n");
114163+ }
114164+
114165+ fprintf(stderr, "-------------------------------------------------------------------------\n");
114166+
114167+ pop_cfun();
114168+ current_function_decl = NULL_TREE;
114169+ }
114170+
114171+ fprintf(stderr, "###############################################################################\n");
114172+
114173+ return 0;
114174+}
114175+
114176+#if BUILDING_GCC_VERSION >= 4009
114177+static const struct pass_data dump_pass_data = {
114178+#else
114179+static struct ipa_opt_pass_d dump_pass = {
114180+ .pass = {
114181+#endif
114182+ .type = SIMPLE_IPA_PASS,
114183+ .name = "dump",
114184+#if BUILDING_GCC_VERSION >= 4008
114185+ .optinfo_flags = OPTGROUP_NONE,
114186+#endif
114187+#if BUILDING_GCC_VERSION >= 4009
114188+ .has_gate = false,
114189+ .has_execute = true,
114190+#else
114191+ .gate = NULL,
114192+ .execute = dump_functions,
114193+ .sub = NULL,
114194+ .next = NULL,
114195+ .static_pass_number = 0,
114196+#endif
114197+ .tv_id = TV_NONE,
114198+ .properties_required = 0,
114199+ .properties_provided = 0,
114200+ .properties_destroyed = 0,
114201+ .todo_flags_start = 0,
114202+ .todo_flags_finish = 0,
114203+#if BUILDING_GCC_VERSION < 4009
114204+ },
114205+ .generate_summary = NULL,
114206+ .write_summary = NULL,
114207+ .read_summary = NULL,
114208+#if BUILDING_GCC_VERSION >= 4006
114209+ .write_optimization_summary = NULL,
114210+ .read_optimization_summary = NULL,
114211+#endif
114212+ .stmt_fixup = NULL,
114213+ .function_transform_todo_flags_start = 0,
114214+ .function_transform = NULL,
114215+ .variable_transform = NULL,
114216+#endif
114217+};
114218+
114219+#if BUILDING_GCC_VERSION >= 4009
114220+namespace {
114221+class dump_pass : public ipa_opt_pass_d {
114222+public:
114223+ dump_pass() : ipa_opt_pass_d(dump_pass_data, g, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL) {}
114224+ unsigned int execute() { return dump_functions(); }
114225+};
114226+}
114227+#endif
114228+
114229+struct opt_pass *make_dump_pass(void)
114230+{
114231+#if BUILDING_GCC_VERSION >= 4009
114232+ return new dump_pass();
114233+#else
114234+ return &dump_pass.pass;
114235+#endif
114236+}
114237diff --git a/tools/gcc/size_overflow_plugin/size_overflow_hash.data b/tools/gcc/size_overflow_plugin/size_overflow_hash.data
114238new file mode 100644
114239index 0000000..72e9c0e
114240--- /dev/null
114241+++ b/tools/gcc/size_overflow_plugin/size_overflow_hash.data
114242@@ -0,0 +1,5986 @@
108216+intel_fake_agp_alloc_by_type_1 intel_fake_agp_alloc_by_type 1 1 NULL 114243+intel_fake_agp_alloc_by_type_1 intel_fake_agp_alloc_by_type 1 1 NULL
108217+ocfs2_get_refcount_tree_3 ocfs2_get_refcount_tree 0 3 NULL 114244+ocfs2_get_refcount_tree_3 ocfs2_get_refcount_tree 0 3 NULL
108218+storvsc_connect_to_vsp_22 storvsc_connect_to_vsp 2 22 NULL 114245+storvsc_connect_to_vsp_22 storvsc_connect_to_vsp 2 22 NULL
@@ -108227,21 +114254,24 @@ index 0000000..9529806
108227+ipath_verbs_send_117 ipath_verbs_send 5-3 117 NULL 114254+ipath_verbs_send_117 ipath_verbs_send 5-3 117 NULL
108228+init_q_132 init_q 4 132 NULL 114255+init_q_132 init_q 4 132 NULL
108229+memstick_alloc_host_142 memstick_alloc_host 1 142 NULL 114256+memstick_alloc_host_142 memstick_alloc_host 1 142 NULL
114257+gfs2_glock_get_147 gfs2_glock_get 0 147 NULL
108230+hva_to_gfn_memslot_149 hva_to_gfn_memslot 0-1 149 NULL 114258+hva_to_gfn_memslot_149 hva_to_gfn_memslot 0-1 149 NULL
108231+ping_v6_sendmsg_152 ping_v6_sendmsg 4 152 NULL 114259+ping_v6_sendmsg_152 ping_v6_sendmsg 4 152 NULL
108232+ext4_ext_get_actual_len_153 ext4_ext_get_actual_len 0 153 NULL nohasharray 114260+ext4_ext_get_actual_len_153 ext4_ext_get_actual_len 0 153 NULL nohasharray
108233+tracing_trace_options_write_153 tracing_trace_options_write 3 153 &ext4_ext_get_actual_len_153 114261+tracing_trace_options_write_153 tracing_trace_options_write 3 153 &ext4_ext_get_actual_len_153
108234+pci_request_selected_regions_169 pci_request_selected_regions 0 169 NULL 114262+pci_request_selected_regions_169 pci_request_selected_regions 0 169 NULL
108235+xfs_buf_item_get_format_189 xfs_buf_item_get_format 2 189 NULL 114263+xfs_buf_item_get_format_189 xfs_buf_item_get_format 2 189 NULL
114264+xfs_bmap_btalloc_192 xfs_bmap_btalloc 0 192 NULL
108236+iscsi_session_setup_196 iscsi_session_setup 4-5 196 NULL 114265+iscsi_session_setup_196 iscsi_session_setup 4-5 196 NULL
114266+ll_xattr_cache_seq_write_250 ll_xattr_cache_seq_write 3 250 NULL
108237+br_port_info_size_268 br_port_info_size 0 268 NULL 114267+br_port_info_size_268 br_port_info_size 0 268 NULL
108238+generic_file_direct_write_291 generic_file_direct_write 0 291 NULL 114268+generic_file_direct_write_291 generic_file_direct_write 0 291 NULL
108239+read_file_war_stats_292 read_file_war_stats 3 292 NULL 114269+read_file_war_stats_292 read_file_war_stats 3 292 NULL
114270+xfs_zero_last_block_298 xfs_zero_last_block 0 298 NULL
108240+SYSC_connect_304 SYSC_connect 3 304 NULL 114271+SYSC_connect_304 SYSC_connect 3 304 NULL
108241+syslog_print_307 syslog_print 2 307 NULL 114272+syslog_print_307 syslog_print 2 307 NULL
108242+dn_setsockopt_314 dn_setsockopt 5 314 NULL 114273+dn_setsockopt_314 dn_setsockopt 5 314 NULL
108243+mlx5_core_access_reg_361 mlx5_core_access_reg 3-5 361 NULL 114274+mlx5_core_access_reg_361 mlx5_core_access_reg 3-5 361 NULL
108244+hw_device_state_409 hw_device_state 0 409 NULL
108245+aio_read_events_ring_410 aio_read_events_ring 3-0 410 NULL 114275+aio_read_events_ring_410 aio_read_events_ring 3-0 410 NULL
108246+lbs_rdmac_read_418 lbs_rdmac_read 3 418 NULL 114276+lbs_rdmac_read_418 lbs_rdmac_read 3 418 NULL
108247+snd_ca0106_ptr_read_467 snd_ca0106_ptr_read 0 467 NULL 114277+snd_ca0106_ptr_read_467 snd_ca0106_ptr_read 0 467 NULL
@@ -108258,20 +114288,19 @@ index 0000000..9529806
108258+start_isoc_chain_565 start_isoc_chain 2 565 NULL nohasharray 114288+start_isoc_chain_565 start_isoc_chain 2 565 NULL nohasharray
108259+dev_hard_header_565 dev_hard_header 0 565 &start_isoc_chain_565 114289+dev_hard_header_565 dev_hard_header 0 565 &start_isoc_chain_565
108260+ocfs2_refcounted_xattr_delete_need_584 ocfs2_refcounted_xattr_delete_need 0 584 NULL 114290+ocfs2_refcounted_xattr_delete_need_584 ocfs2_refcounted_xattr_delete_need 0 584 NULL
108261+osl_pktget_590 osl_pktget 2 590 NULL
108262+smk_write_load_self2_591 smk_write_load_self2 3 591 NULL 114291+smk_write_load_self2_591 smk_write_load_self2 3 591 NULL
108263+btrfs_stack_file_extent_offset_607 btrfs_stack_file_extent_offset 0 607 NULL 114292+btrfs_stack_file_extent_offset_607 btrfs_stack_file_extent_offset 0 607 NULL
108264+ni_gpct_device_construct_610 ni_gpct_device_construct 5 610 NULL 114293+ni_gpct_device_construct_610 ni_gpct_device_construct 5 610 NULL
108265+fuse_request_alloc_nofs_617 fuse_request_alloc_nofs 1 617 NULL 114294+fuse_request_alloc_nofs_617 fuse_request_alloc_nofs 1 617 NULL
108266+ptlrpc_lprocfs_nrs_seq_write_621 ptlrpc_lprocfs_nrs_seq_write 3 621 NULL 114295+ptlrpc_lprocfs_nrs_seq_write_621 ptlrpc_lprocfs_nrs_seq_write 3 621 NULL
108267+viafb_dfpl_proc_write_627 viafb_dfpl_proc_write 3 627 NULL 114296+viafb_dfpl_proc_write_627 viafb_dfpl_proc_write 3 627 NULL
108268+clone_split_bio_633 clone_split_bio 6 633 NULL
108269+ceph_osdc_new_request_635 ceph_osdc_new_request 6 635 NULL 114297+ceph_osdc_new_request_635 ceph_osdc_new_request 6 635 NULL
108270+cfs_hash_bkt_size_643 cfs_hash_bkt_size 0 643 NULL 114298+cfs_hash_bkt_size_643 cfs_hash_bkt_size 0 643 NULL
108271+unlink_queued_645 unlink_queued 4 645 NULL 114299+unlink_queued_645 unlink_queued 4 645 NULL
108272+dtim_interval_read_654 dtim_interval_read 3 654 NULL 114300+dtim_interval_read_654 dtim_interval_read 3 654 NULL
108273+mem_rx_free_mem_blks_read_675 mem_rx_free_mem_blks_read 3 675 NULL 114301+mem_rx_free_mem_blks_read_675 mem_rx_free_mem_blks_read 3 675 NULL
108274+persistent_ram_vmap_709 persistent_ram_vmap 1-2 709 NULL 114302+persistent_ram_vmap_709 persistent_ram_vmap 1-2 709 NULL
114303+xfs_bmap_eof_728 xfs_bmap_eof 0 728 NULL
108275+sctp_setsockopt_peer_addr_params_734 sctp_setsockopt_peer_addr_params 3 734 NULL 114304+sctp_setsockopt_peer_addr_params_734 sctp_setsockopt_peer_addr_params 3 734 NULL
108276+dvb_video_write_754 dvb_video_write 3 754 NULL 114305+dvb_video_write_754 dvb_video_write 3 754 NULL
108277+cfs_trace_allocate_string_buffer_781 cfs_trace_allocate_string_buffer 2 781 NULL 114306+cfs_trace_allocate_string_buffer_781 cfs_trace_allocate_string_buffer 2 781 NULL
@@ -108285,6 +114314,8 @@ index 0000000..9529806
108285+carl9170_cmd_buf_950 carl9170_cmd_buf 3 950 NULL 114314+carl9170_cmd_buf_950 carl9170_cmd_buf 3 950 NULL
108286+__nodes_weight_956 __nodes_weight 2-0 956 NULL 114315+__nodes_weight_956 __nodes_weight 2-0 956 NULL
108287+bnx2x_fill_fw_str_968 bnx2x_fill_fw_str 3 968 NULL 114316+bnx2x_fill_fw_str_968 bnx2x_fill_fw_str 3 968 NULL
114317+mnt_want_write_975 mnt_want_write 0 975 NULL
114318+usnic_ib_qp_grp_dump_hdr_989 usnic_ib_qp_grp_dump_hdr 2 989 NULL
108288+memcmp_990 memcmp 0 990 NULL 114319+memcmp_990 memcmp 0 990 NULL
108289+readreg_1017 readreg 0-1 1017 NULL 114320+readreg_1017 readreg 0-1 1017 NULL
108290+smk_write_cipso2_1021 smk_write_cipso2 3 1021 NULL 114321+smk_write_cipso2_1021 smk_write_cipso2 3 1021 NULL
@@ -108293,7 +114324,6 @@ index 0000000..9529806
108293+agp_create_memory_1075 agp_create_memory 1 1075 NULL 114324+agp_create_memory_1075 agp_create_memory 1 1075 NULL
108294+_scsih_adjust_queue_depth_1083 _scsih_adjust_queue_depth 2 1083 NULL 114325+_scsih_adjust_queue_depth_1083 _scsih_adjust_queue_depth 2 1083 NULL
108295+llcp_sock_sendmsg_1092 llcp_sock_sendmsg 4 1092 NULL 114326+llcp_sock_sendmsg_1092 llcp_sock_sendmsg 4 1092 NULL
108296+llc_mac_hdr_init_1094 llc_mac_hdr_init 0 1094 NULL
108297+nfs4_init_nonuniform_client_string_1097 nfs4_init_nonuniform_client_string 3 1097 NULL 114327+nfs4_init_nonuniform_client_string_1097 nfs4_init_nonuniform_client_string 3 1097 NULL
108298+utf8s_to_utf16s_1115 utf8s_to_utf16s 0 1115 NULL 114328+utf8s_to_utf16s_1115 utf8s_to_utf16s 0 1115 NULL
108299+cfg80211_report_obss_beacon_1133 cfg80211_report_obss_beacon 3 1133 NULL 114329+cfg80211_report_obss_beacon_1133 cfg80211_report_obss_beacon 3 1133 NULL
@@ -108305,11 +114335,15 @@ index 0000000..9529806
108305+dgrp_dpa_read_1204 dgrp_dpa_read 3 1204 NULL 114335+dgrp_dpa_read_1204 dgrp_dpa_read 3 1204 NULL
108306+i2cdev_read_1206 i2cdev_read 3 1206 NULL 114336+i2cdev_read_1206 i2cdev_read 3 1206 NULL
108307+lov_ost_pool_init_1215 lov_ost_pool_init 2 1215 NULL 114337+lov_ost_pool_init_1215 lov_ost_pool_init 2 1215 NULL
114338+fsync_buffers_list_1219 fsync_buffers_list 0 1219 NULL
114339+kernfs_file_direct_read_1238 kernfs_file_direct_read 3 1238 NULL
108308+ocfs2_extend_file_1266 ocfs2_extend_file 3 1266 NULL 114340+ocfs2_extend_file_1266 ocfs2_extend_file 3 1266 NULL
108309+qla4xxx_change_queue_depth_1268 qla4xxx_change_queue_depth 2 1268 NULL 114341+qla4xxx_change_queue_depth_1268 qla4xxx_change_queue_depth 2 1268 NULL
108310+ioctl_private_iw_point_1273 ioctl_private_iw_point 7 1273 NULL 114342+ioctl_private_iw_point_1273 ioctl_private_iw_point 7 1273 NULL
108311+SyS_flistxattr_1287 SyS_flistxattr 3 1287 NULL 114343+SyS_flistxattr_1287 SyS_flistxattr 3 1287 NULL
108312+tx_frag_in_process_called_read_1290 tx_frag_in_process_called_read 3 1290 NULL 114344+tx_frag_in_process_called_read_1290 tx_frag_in_process_called_read 3 1290 NULL
114345+posix_acl_xattr_set_1301 posix_acl_xattr_set 4 1301 NULL
114346+tcf_hash_create_1305 tcf_hash_create 4 1305 NULL
108313+ffs_1322 ffs 0 1322 NULL 114347+ffs_1322 ffs 0 1322 NULL
108314+qlcnic_pci_sriov_configure_1327 qlcnic_pci_sriov_configure 2 1327 NULL 114348+qlcnic_pci_sriov_configure_1327 qlcnic_pci_sriov_configure 2 1327 NULL
108315+btrfs_submit_compressed_write_1347 btrfs_submit_compressed_write 5 1347 NULL 114349+btrfs_submit_compressed_write_1347 btrfs_submit_compressed_write 5 1347 NULL
@@ -108332,6 +114366,7 @@ index 0000000..9529806
108332+tomoyo_round2_1518 tomoyo_round2 0 1518 NULL 114366+tomoyo_round2_1518 tomoyo_round2 0 1518 NULL
108333+alloc_perm_bits_1532 alloc_perm_bits 2 1532 NULL 114367+alloc_perm_bits_1532 alloc_perm_bits 2 1532 NULL
108334+ath6kl_init_get_fwcaps_1557 ath6kl_init_get_fwcaps 3 1557 NULL 114368+ath6kl_init_get_fwcaps_1557 ath6kl_init_get_fwcaps 3 1557 NULL
114369+ffs_mutex_lock_1564 ffs_mutex_lock 0 1564 NULL
108335+ieee80211_if_read_dot11MeshHWMPnetDiameterTraversalTime_1589 ieee80211_if_read_dot11MeshHWMPnetDiameterTraversalTime 3 1589 NULL 114370+ieee80211_if_read_dot11MeshHWMPnetDiameterTraversalTime_1589 ieee80211_if_read_dot11MeshHWMPnetDiameterTraversalTime 3 1589 NULL
108336+ipath_ht_handle_hwerrors_1592 ipath_ht_handle_hwerrors 3 1592 NULL 114371+ipath_ht_handle_hwerrors_1592 ipath_ht_handle_hwerrors 3 1592 NULL
108337+packet_buffer_init_1607 packet_buffer_init 2 1607 NULL 114372+packet_buffer_init_1607 packet_buffer_init 2 1607 NULL
@@ -108343,8 +114378,10 @@ index 0000000..9529806
108343+configfs_read_file_1683 configfs_read_file 3 1683 NULL 114378+configfs_read_file_1683 configfs_read_file 3 1683 NULL
108344+pdu_write_u_1710 pdu_write_u 3 1710 NULL 114379+pdu_write_u_1710 pdu_write_u 3 1710 NULL
108345+coda_psdev_write_1711 coda_psdev_write 3 1711 NULL 114380+coda_psdev_write_1711 coda_psdev_write 3 1711 NULL
114381+btrfs_dir_data_len_1714 btrfs_dir_data_len 0 1714 NULL
108346+internal_create_group_1733 internal_create_group 0 1733 NULL 114382+internal_create_group_1733 internal_create_group 0 1733 NULL
108347+dev_irnet_read_1741 dev_irnet_read 3 1741 NULL 114383+dev_irnet_read_1741 dev_irnet_read 3 1741 NULL
114384+usb_ep_align_maybe_1743 usb_ep_align_maybe 0-3 1743 NULL
108348+tx_frag_called_read_1748 tx_frag_called_read 3 1748 NULL 114385+tx_frag_called_read_1748 tx_frag_called_read 3 1748 NULL
108349+cosa_write_1774 cosa_write 3 1774 NULL 114386+cosa_write_1774 cosa_write 3 1774 NULL
108350+fcoe_ctlr_device_add_1793 fcoe_ctlr_device_add 3 1793 NULL 114387+fcoe_ctlr_device_add_1793 fcoe_ctlr_device_add 3 1793 NULL
@@ -108359,11 +114396,13 @@ index 0000000..9529806
108359+ext3_fiemap_1936 ext3_fiemap 4 1936 NULL 114396+ext3_fiemap_1936 ext3_fiemap 4 1936 NULL
108360+cyttsp_probe_1940 cyttsp_probe 4 1940 NULL 114397+cyttsp_probe_1940 cyttsp_probe 4 1940 NULL
108361+ieee80211_if_fmt_dot11MeshConfirmTimeout_1945 ieee80211_if_fmt_dot11MeshConfirmTimeout 3 1945 NULL 114398+ieee80211_if_fmt_dot11MeshConfirmTimeout_1945 ieee80211_if_fmt_dot11MeshConfirmTimeout 3 1945 NULL
114399+update_qd_1955 update_qd 0 1955 NULL
108362+ivtv_v4l2_read_1964 ivtv_v4l2_read 3 1964 NULL 114400+ivtv_v4l2_read_1964 ivtv_v4l2_read 3 1964 NULL
108363+sel_read_avc_hash_stats_1984 sel_read_avc_hash_stats 3 1984 NULL 114401+sel_read_avc_hash_stats_1984 sel_read_avc_hash_stats 3 1984 NULL
108364+gpio_power_write_1991 gpio_power_write 3 1991 NULL 114402+gpio_power_write_1991 gpio_power_write 3 1991 NULL
108365+__alloc_bootmem_node_1992 __alloc_bootmem_node 2 1992 NULL 114403+__alloc_bootmem_node_1992 __alloc_bootmem_node 2 1992 NULL
108366+rx_rx_defrag_read_2010 rx_rx_defrag_read 3 2010 NULL 114404+rx_rx_defrag_read_2010 rx_rx_defrag_read 3 2010 NULL
114405+xfs_mru_cache_insert_2013 xfs_mru_cache_insert 0 2013 NULL
108367+ocfs2_global_qinit_alloc_2018 ocfs2_global_qinit_alloc 0 2018 NULL 114406+ocfs2_global_qinit_alloc_2018 ocfs2_global_qinit_alloc 0 2018 NULL
108368+write_flush_pipefs_2021 write_flush_pipefs 3 2021 NULL 114407+write_flush_pipefs_2021 write_flush_pipefs 3 2021 NULL
108369+BcmCopySection_2035 BcmCopySection 5 2035 NULL 114408+BcmCopySection_2035 BcmCopySection 5 2035 NULL
@@ -108374,19 +114413,22 @@ index 0000000..9529806
108374+iwl_dbgfs_current_sleep_command_read_2081 iwl_dbgfs_current_sleep_command_read 3 2081 NULL 114413+iwl_dbgfs_current_sleep_command_read_2081 iwl_dbgfs_current_sleep_command_read 3 2081 NULL
108375+idetape_chrdev_read_2097 idetape_chrdev_read 3 2097 NULL 114414+idetape_chrdev_read_2097 idetape_chrdev_read 3 2097 NULL
108376+audit_expand_2098 audit_expand 0 2098 NULL 114415+audit_expand_2098 audit_expand 0 2098 NULL
114416+__set_print_fmt_2106 __set_print_fmt 0 2106 NULL
108377+iwl_dbgfs_log_event_read_2107 iwl_dbgfs_log_event_read 3 2107 NULL 114417+iwl_dbgfs_log_event_read_2107 iwl_dbgfs_log_event_read 3 2107 NULL
108378+ecryptfs_encrypt_and_encode_filename_2109 ecryptfs_encrypt_and_encode_filename 6 2109 NULL 114418+ecryptfs_encrypt_and_encode_filename_2109 ecryptfs_encrypt_and_encode_filename 6 2109 NULL
114419+btrfs_file_extent_inline_len_2116 btrfs_file_extent_inline_len 0 2116 NULL
108379+enable_read_2117 enable_read 3 2117 NULL 114420+enable_read_2117 enable_read 3 2117 NULL
108380+pcf50633_write_block_2124 pcf50633_write_block 2-3 2124 NULL 114421+pcf50633_write_block_2124 pcf50633_write_block 2-3 2124 NULL
114422+xfs_recover_inode_owner_change_2132 xfs_recover_inode_owner_change 0 2132 NULL
108381+check_load_and_stores_2143 check_load_and_stores 2 2143 NULL 114423+check_load_and_stores_2143 check_load_and_stores 2 2143 NULL
108382+iov_iter_count_2152 iov_iter_count 0 2152 NULL 114424+iov_iter_count_2152 iov_iter_count 0 2152 NULL
108383+__copy_to_user_ll_2157 __copy_to_user_ll 0-3 2157 NULL 114425+__copy_to_user_ll_2157 __copy_to_user_ll 0-3 2157 NULL
108384+_ore_get_io_state_2166 _ore_get_io_state 3-4-5 2166 NULL 114426+_ore_get_io_state_2166 _ore_get_io_state 3-4-5 2166 NULL
108385+bio_integrity_alloc_2194 bio_integrity_alloc 3 2194 NULL 114427+bio_integrity_alloc_2194 bio_integrity_alloc 3 2194 NULL
108386+picolcd_debug_reset_write_2195 picolcd_debug_reset_write 3 2195 NULL 114428+picolcd_debug_reset_write_2195 picolcd_debug_reset_write 3 2195 NULL
114429+xfs_inobt_update_2206 xfs_inobt_update 0 2206 NULL
108387+u32_array_read_2219 u32_array_read 3 2219 NULL nohasharray 114430+u32_array_read_2219 u32_array_read 3 2219 NULL nohasharray
108388+mei_dbgfs_read_meclients_2219 mei_dbgfs_read_meclients 3 2219 &u32_array_read_2219 114431+mei_dbgfs_read_meclients_2219 mei_dbgfs_read_meclients 3 2219 &u32_array_read_2219
108389+vhci_write_2224 vhci_write 3 2224 NULL
108390+__ocfs2_journal_access_2241 __ocfs2_journal_access 0 2241 NULL 114432+__ocfs2_journal_access_2241 __ocfs2_journal_access 0 2241 NULL
108391+ieee80211_if_read_dot11MeshHWMPRannInterval_2249 ieee80211_if_read_dot11MeshHWMPRannInterval 3 2249 NULL 114433+ieee80211_if_read_dot11MeshHWMPRannInterval_2249 ieee80211_if_read_dot11MeshHWMPRannInterval 3 2249 NULL
108392+netlbl_secattr_catmap_walk_2255 netlbl_secattr_catmap_walk 0-2 2255 NULL 114434+netlbl_secattr_catmap_walk_2255 netlbl_secattr_catmap_walk 0-2 2255 NULL
@@ -108394,6 +114436,7 @@ index 0000000..9529806
108394+do_update_counters_2259 do_update_counters 4 2259 NULL 114436+do_update_counters_2259 do_update_counters 4 2259 NULL
108395+ath6kl_wmi_bssinfo_event_rx_2275 ath6kl_wmi_bssinfo_event_rx 3 2275 NULL 114437+ath6kl_wmi_bssinfo_event_rx_2275 ath6kl_wmi_bssinfo_event_rx 3 2275 NULL
108396+debug_debug5_read_2291 debug_debug5_read 3 2291 NULL 114438+debug_debug5_read_2291 debug_debug5_read 3 2291 NULL
114439+sr_read_cmd_2299 sr_read_cmd 5 2299 NULL
108397+kvm_clear_guest_page_2308 kvm_clear_guest_page 4 2308 NULL 114440+kvm_clear_guest_page_2308 kvm_clear_guest_page 4 2308 NULL
108398+intel_sdvo_set_value_2311 intel_sdvo_set_value 4 2311 NULL 114441+intel_sdvo_set_value_2311 intel_sdvo_set_value 4 2311 NULL
108399+hfsplus_find_init_2318 hfsplus_find_init 0 2318 NULL nohasharray 114442+hfsplus_find_init_2318 hfsplus_find_init 0 2318 NULL nohasharray
@@ -108401,9 +114444,9 @@ index 0000000..9529806
108401+dice_hwdep_read_2326 dice_hwdep_read 3 2326 NULL 114444+dice_hwdep_read_2326 dice_hwdep_read 3 2326 NULL
108402+__erst_read_to_erange_2341 __erst_read_to_erange 0 2341 NULL 114445+__erst_read_to_erange_2341 __erst_read_to_erange 0 2341 NULL
108403+zr364xx_read_2354 zr364xx_read 3 2354 NULL 114446+zr364xx_read_2354 zr364xx_read 3 2354 NULL
108404+sysfs_add_file_mode_ns_2362 sysfs_add_file_mode_ns 0 2362 NULL 114447+ntfs_file_aio_write_nolock_2360 ntfs_file_aio_write_nolock 0 2360 NULL
108405+viafb_iga2_odev_proc_write_2363 viafb_iga2_odev_proc_write 3 2363 NULL 114448+viafb_iga2_odev_proc_write_2363 viafb_iga2_odev_proc_write 3 2363 NULL
108406+xfs_buf_map_from_irec_2368 xfs_buf_map_from_irec 5 2368 NULL nohasharray 114449+xfs_buf_map_from_irec_2368 xfs_buf_map_from_irec 5-0 2368 NULL nohasharray
108407+rose_recvmsg_2368 rose_recvmsg 4 2368 &xfs_buf_map_from_irec_2368 114450+rose_recvmsg_2368 rose_recvmsg 4 2368 &xfs_buf_map_from_irec_2368
108408+il_dbgfs_sensitivity_read_2370 il_dbgfs_sensitivity_read 3 2370 NULL 114451+il_dbgfs_sensitivity_read_2370 il_dbgfs_sensitivity_read 3 2370 NULL
108409+rxpipe_rx_prep_beacon_drop_read_2403 rxpipe_rx_prep_beacon_drop_read 3 2403 NULL 114452+rxpipe_rx_prep_beacon_drop_read_2403 rxpipe_rx_prep_beacon_drop_read 3 2403 NULL
@@ -108412,11 +114455,12 @@ index 0000000..9529806
108412+b43legacy_debugfs_read_2473 b43legacy_debugfs_read 3 2473 NULL 114455+b43legacy_debugfs_read_2473 b43legacy_debugfs_read 3 2473 NULL
108413+wiphy_new_2482 wiphy_new 2 2482 NULL 114456+wiphy_new_2482 wiphy_new 2 2482 NULL
108414+bio_alloc_bioset_2484 bio_alloc_bioset 2 2484 NULL 114457+bio_alloc_bioset_2484 bio_alloc_bioset 2 2484 NULL
108415+hfsplus_user_setxattr_2485 hfsplus_user_setxattr 4 2485 NULL
108416+squashfs_read_fragment_index_table_2506 squashfs_read_fragment_index_table 4 2506 NULL 114458+squashfs_read_fragment_index_table_2506 squashfs_read_fragment_index_table 4 2506 NULL
108417+v9fs_cached_file_read_2514 v9fs_cached_file_read 3 2514 NULL 114459+v9fs_cached_file_read_2514 v9fs_cached_file_read 3 2514 NULL
108418+ext4_get_inode_loc_2516 ext4_get_inode_loc 0 2516 NULL 114460+ext4_get_inode_loc_2516 ext4_get_inode_loc 0 2516 NULL
108419+batadv_tvlv_container_list_size_2524 batadv_tvlv_container_list_size 0 2524 NULL 114461+batadv_tvlv_container_list_size_2524 batadv_tvlv_container_list_size 0 2524 NULL
114462+smk_write_syslog_2529 smk_write_syslog 3 2529 NULL
114463+__ceph_setxattr_2532 __ceph_setxattr 4 2532 NULL
108420+gspca_dev_probe_2570 gspca_dev_probe 4 2570 NULL 114464+gspca_dev_probe_2570 gspca_dev_probe 4 2570 NULL
108421+pcm_sanity_check_2574 pcm_sanity_check 0 2574 NULL 114465+pcm_sanity_check_2574 pcm_sanity_check 0 2574 NULL
108422+mdc_max_rpcs_in_flight_seq_write_2594 mdc_max_rpcs_in_flight_seq_write 3 2594 NULL 114466+mdc_max_rpcs_in_flight_seq_write_2594 mdc_max_rpcs_in_flight_seq_write 3 2594 NULL
@@ -108430,8 +114474,10 @@ index 0000000..9529806
108430+nfc_llcp_send_ui_frame_2702 nfc_llcp_send_ui_frame 5 2702 NULL 114474+nfc_llcp_send_ui_frame_2702 nfc_llcp_send_ui_frame 5 2702 NULL
108431+memcpy_fromiovecend_2707 memcpy_fromiovecend 3-4 2707 NULL 114475+memcpy_fromiovecend_2707 memcpy_fromiovecend 3-4 2707 NULL
108432+lprocfs_stats_counter_size_2708 lprocfs_stats_counter_size 0 2708 NULL 114476+lprocfs_stats_counter_size_2708 lprocfs_stats_counter_size 0 2708 NULL
114477+gfs2_glock_nq_num_2747 gfs2_glock_nq_num 0 2747 NULL
108433+xfs_readdir_2767 xfs_readdir 3 2767 NULL 114478+xfs_readdir_2767 xfs_readdir 3 2767 NULL
108434+mon_bin_ioctl_2771 mon_bin_ioctl 3 2771 NULL 114479+mon_bin_ioctl_2771 mon_bin_ioctl 3 2771 NULL
114480+set_msr_hyperv_pw_2785 set_msr_hyperv_pw 3 2785 NULL
108435+device_add_attrs_2789 device_add_attrs 0 2789 NULL 114481+device_add_attrs_2789 device_add_attrs 0 2789 NULL
108436+iwl_dbgfs_clear_ucode_statistics_write_2804 iwl_dbgfs_clear_ucode_statistics_write 3 2804 NULL 114482+iwl_dbgfs_clear_ucode_statistics_write_2804 iwl_dbgfs_clear_ucode_statistics_write 3 2804 NULL
108437+sel_read_enforce_2828 sel_read_enforce 3 2828 NULL 114483+sel_read_enforce_2828 sel_read_enforce 3 2828 NULL
@@ -108449,12 +114495,15 @@ index 0000000..9529806
108449+i40e_dbg_prep_dump_buf_2951 i40e_dbg_prep_dump_buf 2 2951 NULL 114495+i40e_dbg_prep_dump_buf_2951 i40e_dbg_prep_dump_buf 2 2951 NULL
108450+set_fast_connectable_2952 set_fast_connectable 4 2952 NULL 114496+set_fast_connectable_2952 set_fast_connectable 4 2952 NULL
108451+free_area_init_core_2962 free_area_init_core 2-3 2962 NULL 114497+free_area_init_core_2962 free_area_init_core 2-3 2962 NULL
114498+bio_setup_sector_2970 bio_setup_sector 3 2970 NULL
108452+do_strnlen_user_2976 do_strnlen_user 0-2 2976 NULL 114499+do_strnlen_user_2976 do_strnlen_user 0-2 2976 NULL
108453+p9_nr_pages_2992 p9_nr_pages 0-2 2992 NULL 114500+p9_nr_pages_2992 p9_nr_pages 0-2 2992 NULL
114501+_xfs_filestream_pick_ag_3007 _xfs_filestream_pick_ag 0 3007 NULL
108454+lov_stripetype_seq_write_3013 lov_stripetype_seq_write 3 3013 NULL 114502+lov_stripetype_seq_write_3013 lov_stripetype_seq_write 3 3013 NULL
108455+do_dmabuf_dirty_sou_3017 do_dmabuf_dirty_sou 7 3017 NULL 114503+do_dmabuf_dirty_sou_3017 do_dmabuf_dirty_sou 7 3017 NULL
108456+depth_write_3021 depth_write 3 3021 NULL 114504+depth_write_3021 depth_write 3 3021 NULL
108457+snd_azf3328_codec_inl_3022 snd_azf3328_codec_inl 0 3022 NULL 114505+snd_azf3328_codec_inl_3022 snd_azf3328_codec_inl 0 3022 NULL
114506+nvme_split_and_submit_3027 nvme_split_and_submit 3 3027 NULL
108458+kvm_unmap_hva_3028 kvm_unmap_hva 2 3028 NULL 114507+kvm_unmap_hva_3028 kvm_unmap_hva 2 3028 NULL
108459+xfrm_dst_alloc_copy_3034 xfrm_dst_alloc_copy 3 3034 NULL 114508+xfrm_dst_alloc_copy_3034 xfrm_dst_alloc_copy 3 3034 NULL
108460+lpfc_idiag_mbxacc_write_3038 lpfc_idiag_mbxacc_write 3 3038 NULL nohasharray 114509+lpfc_idiag_mbxacc_write_3038 lpfc_idiag_mbxacc_write 3 3038 NULL nohasharray
@@ -108465,14 +114514,14 @@ index 0000000..9529806
108465+__blk_end_bidi_request_3070 __blk_end_bidi_request 3-4 3070 NULL 114514+__blk_end_bidi_request_3070 __blk_end_bidi_request 3-4 3070 NULL
108466+dac960_user_command_proc_write_3071 dac960_user_command_proc_write 3 3071 NULL 114515+dac960_user_command_proc_write_3071 dac960_user_command_proc_write 3 3071 NULL
108467+read_file_antenna_diversity_3077 read_file_antenna_diversity 3 3077 NULL 114516+read_file_antenna_diversity_3077 read_file_antenna_diversity 3 3077 NULL
108468+clone_bio_3100 clone_bio 6 3100 NULL nohasharray 114517+ttusb2_msg_3100 ttusb2_msg 4 3100 NULL
108469+ttusb2_msg_3100 ttusb2_msg 4 3100 &clone_bio_3100
108470+rb_alloc_3102 rb_alloc 1 3102 NULL 114518+rb_alloc_3102 rb_alloc 1 3102 NULL
108471+simple_write_to_buffer_3122 simple_write_to_buffer 5-2 3122 NULL 114519+simple_write_to_buffer_3122 simple_write_to_buffer 5-2 3122 NULL
108472+print_time_3132 print_time 0 3132 NULL 114520+print_time_3132 print_time 0 3132 NULL
108473+fill_write_buffer_3142 fill_write_buffer 3 3142 NULL 114521+fill_write_buffer_3142 fill_write_buffer 3 3142 NULL
108474+CIFSSMBSetPosixACL_3154 CIFSSMBSetPosixACL 5 3154 NULL 114522+CIFSSMBSetPosixACL_3154 CIFSSMBSetPosixACL 5 3154 NULL
108475+compat_sys_migrate_pages_3157 compat_sys_migrate_pages 2 3157 NULL 114523+compat_sys_migrate_pages_3157 compat_sys_migrate_pages 2 3157 NULL
114524+gfs2_rindex_update_3165 gfs2_rindex_update 0 3165 NULL
108476+uv_num_possible_blades_3177 uv_num_possible_blades 0 3177 NULL 114525+uv_num_possible_blades_3177 uv_num_possible_blades 0 3177 NULL
108477+uvc_video_stats_dump_3181 uvc_video_stats_dump 3 3181 NULL 114526+uvc_video_stats_dump_3181 uvc_video_stats_dump 3 3181 NULL
108478+compat_do_ip6t_set_ctl_3184 compat_do_ip6t_set_ctl 4 3184 NULL 114527+compat_do_ip6t_set_ctl_3184 compat_do_ip6t_set_ctl 4 3184 NULL
@@ -108488,10 +114537,11 @@ index 0000000..9529806
108488+ext3_xattr_find_entry_3237 ext3_xattr_find_entry 0 3237 NULL 114537+ext3_xattr_find_entry_3237 ext3_xattr_find_entry 0 3237 NULL
108489+key_key_read_3241 key_key_read 3 3241 NULL 114538+key_key_read_3241 key_key_read 3 3241 NULL
108490+__ilog2_u64_3284 __ilog2_u64 0 3284 NULL 114539+__ilog2_u64_3284 __ilog2_u64 0 3284 NULL
114540+__set_extent_bit_3305 __set_extent_bit 0 3305 NULL
108491+__iovec_copy_from_user_inatomic_3314 __iovec_copy_from_user_inatomic 0-4-3 3314 NULL 114541+__iovec_copy_from_user_inatomic_3314 __iovec_copy_from_user_inatomic 0-4-3 3314 NULL
114542+_iwl_dbgfs_d3_sram_write_3315 _iwl_dbgfs_d3_sram_write 3 3315 NULL
108492+dbDiscardAG_3322 dbDiscardAG 3 3322 NULL 114543+dbDiscardAG_3322 dbDiscardAG 3 3322 NULL
108493+compat_sys_setsockopt_3326 compat_sys_setsockopt 5 3326 NULL 114544+compat_sys_setsockopt_3326 compat_sys_setsockopt 5 3326 NULL
108494+ocfs2_extend_xattr_bucket_3328 ocfs2_extend_xattr_bucket 4 3328 NULL
108495+read_from_oldmem_3337 read_from_oldmem 2 3337 NULL 114545+read_from_oldmem_3337 read_from_oldmem 2 3337 NULL
108496+sysfs_create_group_3339 sysfs_create_group 0 3339 NULL 114546+sysfs_create_group_3339 sysfs_create_group 0 3339 NULL
108497+tty_port_register_device_attr_3341 tty_port_register_device_attr 3 3341 NULL 114547+tty_port_register_device_attr_3341 tty_port_register_device_attr 3 3341 NULL
@@ -108508,10 +114558,8 @@ index 0000000..9529806
108508+crystalhd_create_dio_pool_3427 crystalhd_create_dio_pool 2 3427 NULL 114558+crystalhd_create_dio_pool_3427 crystalhd_create_dio_pool 2 3427 NULL
108509+SyS_msgsnd_3436 SyS_msgsnd 3 3436 NULL 114559+SyS_msgsnd_3436 SyS_msgsnd 3 3436 NULL
108510+pipe_iov_copy_to_user_3447 pipe_iov_copy_to_user 3 3447 NULL 114560+pipe_iov_copy_to_user_3447 pipe_iov_copy_to_user 3 3447 NULL
108511+s3fb_ddc_read_3451 s3fb_ddc_read 0 3451 NULL
108512+softsynth_write_3455 softsynth_write 3 3455 NULL 114561+softsynth_write_3455 softsynth_write 3 3455 NULL
108513+snd_pcm_lib_readv_transfer_3464 snd_pcm_lib_readv_transfer 5-4-2 3464 NULL nohasharray 114562+snd_pcm_lib_readv_transfer_3464 snd_pcm_lib_readv_transfer 5-4-2 3464 NULL
108514+jffs2_acl_setxattr_3464 jffs2_acl_setxattr 4 3464 &snd_pcm_lib_readv_transfer_3464
108515+security_context_to_sid_default_3492 security_context_to_sid_default 2 3492 NULL 114563+security_context_to_sid_default_3492 security_context_to_sid_default 2 3492 NULL
108516+xfrm_migrate_msgsize_3496 xfrm_migrate_msgsize 1 3496 NULL 114564+xfrm_migrate_msgsize_3496 xfrm_migrate_msgsize 1 3496 NULL
108517+mem_tx_free_mem_blks_read_3521 mem_tx_free_mem_blks_read 3 3521 NULL 114565+mem_tx_free_mem_blks_read_3521 mem_tx_free_mem_blks_read 3 3521 NULL
@@ -108529,9 +114577,10 @@ index 0000000..9529806
108529+aligned_kmalloc_3628 aligned_kmalloc 1 3628 NULL 114577+aligned_kmalloc_3628 aligned_kmalloc 1 3628 NULL
108530+ath6kl_disconnect_timeout_read_3650 ath6kl_disconnect_timeout_read 3 3650 NULL 114578+ath6kl_disconnect_timeout_read_3650 ath6kl_disconnect_timeout_read 3 3650 NULL
108531+i915_compat_ioctl_3656 i915_compat_ioctl 2 3656 NULL 114579+i915_compat_ioctl_3656 i915_compat_ioctl 2 3656 NULL
114580+xfs_attr3_leaf_list_int_3661 xfs_attr3_leaf_list_int 0 3661 NULL
114581+_iwl_dbgfs_tx_flush_write_3675 _iwl_dbgfs_tx_flush_write 3 3675 NULL
108532+snd_m3_assp_read_3703 snd_m3_assp_read 0 3703 NULL 114582+snd_m3_assp_read_3703 snd_m3_assp_read 0 3703 NULL
108533+ci_ll_write_3740 ci_ll_write 4 3740 NULL nohasharray 114583+ci_ll_write_3740 ci_ll_write 4 3740 NULL
108534+ath6kl_mgmt_tx_3740 ath6kl_mgmt_tx 7 3740 &ci_ll_write_3740
108535+sctp_setsockopt_auth_key_3793 sctp_setsockopt_auth_key 3 3793 NULL 114584+sctp_setsockopt_auth_key_3793 sctp_setsockopt_auth_key 3 3793 NULL
108536+ncp_file_write_3813 ncp_file_write 3 3813 NULL 114585+ncp_file_write_3813 ncp_file_write 3 3813 NULL
108537+llc_ui_recvmsg_3826 llc_ui_recvmsg 4 3826 NULL 114586+llc_ui_recvmsg_3826 llc_ui_recvmsg 4 3826 NULL
@@ -108549,9 +114598,9 @@ index 0000000..9529806
108549+SyS_move_pages_3920 SyS_move_pages 2 3920 NULL 114598+SyS_move_pages_3920 SyS_move_pages 2 3920 NULL
108550+hdlc_irq_one_3944 hdlc_irq_one 2 3944 NULL 114599+hdlc_irq_one_3944 hdlc_irq_one 2 3944 NULL
108551+brcmf_debugfs_fws_stats_read_3947 brcmf_debugfs_fws_stats_read 3 3947 NULL 114600+brcmf_debugfs_fws_stats_read_3947 brcmf_debugfs_fws_stats_read 3 3947 NULL
108552+ll_get_max_mdsize_3962 ll_get_max_mdsize 0 3962 NULL
108553+mite_bytes_written_to_memory_lb_3987 mite_bytes_written_to_memory_lb 0 3987 NULL 114601+mite_bytes_written_to_memory_lb_3987 mite_bytes_written_to_memory_lb 0 3987 NULL
108554+do_add_counters_3992 do_add_counters 3 3992 NULL 114602+do_add_counters_3992 do_add_counters 3 3992 NULL
114603+xfs_bmbt_lookup_eq_3997 xfs_bmbt_lookup_eq 0 3997 NULL
108555+obd_alloc_memmd_4002 obd_alloc_memmd 0 4002 NULL 114604+obd_alloc_memmd_4002 obd_alloc_memmd 0 4002 NULL
108556+userspace_status_4004 userspace_status 4 4004 NULL 114605+userspace_status_4004 userspace_status 4 4004 NULL
108557+xfs_check_block_4005 xfs_check_block 4 4005 NULL nohasharray 114606+xfs_check_block_4005 xfs_check_block 4 4005 NULL nohasharray
@@ -108559,10 +114608,10 @@ index 0000000..9529806
108559+snd_hdsp_capture_copy_4011 snd_hdsp_capture_copy 5 4011 NULL 114608+snd_hdsp_capture_copy_4011 snd_hdsp_capture_copy 5 4011 NULL
108560+blk_end_request_4024 blk_end_request 3 4024 NULL 114609+blk_end_request_4024 blk_end_request 3 4024 NULL
108561+ext4_xattr_find_entry_4025 ext4_xattr_find_entry 0 4025 NULL 114610+ext4_xattr_find_entry_4025 ext4_xattr_find_entry 0 4025 NULL
114611+xfs_free_ag_extent_4036 xfs_free_ag_extent 0 4036 NULL
108562+mtip_hw_read_registers_4037 mtip_hw_read_registers 3 4037 NULL 114612+mtip_hw_read_registers_4037 mtip_hw_read_registers 3 4037 NULL
108563+read_file_queues_4078 read_file_queues 3 4078 NULL 114613+read_file_queues_4078 read_file_queues 3 4078 NULL
108564+fbcon_do_set_font_4079 fbcon_do_set_font 2-3 4079 NULL 114614+fbcon_do_set_font_4079 fbcon_do_set_font 2-3 4079 NULL
108565+C_SYSC_rt_sigpending_4114 C_SYSC_rt_sigpending 2 4114 NULL
108566+tm6000_read_4151 tm6000_read 3 4151 NULL 114615+tm6000_read_4151 tm6000_read 3 4151 NULL
108567+mpt_raid_phys_disk_get_num_paths_4155 mpt_raid_phys_disk_get_num_paths 0 4155 NULL 114616+mpt_raid_phys_disk_get_num_paths_4155 mpt_raid_phys_disk_get_num_paths 0 4155 NULL
108568+msg_bits_4158 msg_bits 0-3-4 4158 NULL 114617+msg_bits_4158 msg_bits 0-3-4 4158 NULL
@@ -108577,11 +114626,11 @@ index 0000000..9529806
108577+ath6kl_force_roam_write_4282 ath6kl_force_roam_write 3 4282 NULL 114626+ath6kl_force_roam_write_4282 ath6kl_force_roam_write 3 4282 NULL
108578+goldfish_audio_write_4284 goldfish_audio_write 3 4284 NULL 114627+goldfish_audio_write_4284 goldfish_audio_write 3 4284 NULL
108579+__usbnet_read_cmd_4299 __usbnet_read_cmd 7 4299 NULL 114628+__usbnet_read_cmd_4299 __usbnet_read_cmd 7 4299 NULL
108580+dvb_ringbuffer_pkt_read_user_4303 dvb_ringbuffer_pkt_read_user 3-2-5 4303 NULL 114629+dvb_ringbuffer_pkt_read_user_4303 dvb_ringbuffer_pkt_read_user 2-3-5 4303 NULL
108581+count_strings_4315 count_strings 0 4315 NULL 114630+count_strings_4315 count_strings 0 4315 NULL
108582+__sysfs_add_one_4326 __sysfs_add_one 0 4326 NULL
108583+nouveau_fifo_create__4327 nouveau_fifo_create_ 5-6 4327 NULL 114631+nouveau_fifo_create__4327 nouveau_fifo_create_ 5-6 4327 NULL
108584+snd_rawmidi_kernel_read_4328 snd_rawmidi_kernel_read 3 4328 NULL 114632+snd_rawmidi_kernel_read_4328 snd_rawmidi_kernel_read 3 4328 NULL
114633+ima_eventdigest_init_common_4338 ima_eventdigest_init_common 2 4338 NULL
108585+__copy_from_user_inatomic_4365 __copy_from_user_inatomic 0-3 4365 NULL nohasharray 114634+__copy_from_user_inatomic_4365 __copy_from_user_inatomic 0-3 4365 NULL nohasharray
108586+lookup_string_4365 lookup_string 0 4365 &__copy_from_user_inatomic_4365 114635+lookup_string_4365 lookup_string 0 4365 &__copy_from_user_inatomic_4365
108587+irda_sendmsg_4388 irda_sendmsg 4 4388 NULL 114636+irda_sendmsg_4388 irda_sendmsg 4 4388 NULL
@@ -108594,6 +114643,7 @@ index 0000000..9529806
108594+snd_seq_expand_var_event_4481 snd_seq_expand_var_event 5-0 4481 NULL 114643+snd_seq_expand_var_event_4481 snd_seq_expand_var_event 5-0 4481 NULL
108595+vmbus_establish_gpadl_4495 vmbus_establish_gpadl 3 4495 NULL 114644+vmbus_establish_gpadl_4495 vmbus_establish_gpadl 3 4495 NULL
108596+set_link_security_4502 set_link_security 4 4502 NULL 114645+set_link_security_4502 set_link_security 4 4502 NULL
114646+xfs_btree_kill_root_4526 xfs_btree_kill_root 0 4526 NULL
108597+ll_max_readahead_per_file_mb_seq_write_4531 ll_max_readahead_per_file_mb_seq_write 3 4531 NULL 114647+ll_max_readahead_per_file_mb_seq_write_4531 ll_max_readahead_per_file_mb_seq_write 3 4531 NULL
108598+tty_register_device_4544 tty_register_device 2 4544 NULL 114648+tty_register_device_4544 tty_register_device 2 4544 NULL
108599+btrfs_file_extent_inline_item_len_4575 btrfs_file_extent_inline_item_len 0 4575 NULL 114649+btrfs_file_extent_inline_item_len_4575 btrfs_file_extent_inline_item_len 0 4575 NULL
@@ -108655,8 +114705,10 @@ index 0000000..9529806
108655+cq_free_res_5355 cq_free_res 5 5355 NULL 114705+cq_free_res_5355 cq_free_res 5 5355 NULL
108656+ps_pspoll_utilization_read_5361 ps_pspoll_utilization_read 3 5361 NULL 114706+ps_pspoll_utilization_read_5361 ps_pspoll_utilization_read 3 5361 NULL
108657+cciss_allocate_sg_chain_blocks_5368 cciss_allocate_sg_chain_blocks 3-2 5368 NULL 114707+cciss_allocate_sg_chain_blocks_5368 cciss_allocate_sg_chain_blocks 3-2 5368 NULL
108658+__split_bvec_across_targets_5454 __split_bvec_across_targets 3 5454 NULL 114708+xfs_free_extent_5411 xfs_free_extent 0 5411 NULL
108659+xfs_efd_init_5463 xfs_efd_init 3 5463 NULL 114709+xfs_efd_init_5463 xfs_efd_init 3 5463 NULL
114710+ll_xattr_cache_refill_5468 ll_xattr_cache_refill 0 5468 NULL
114711+kernfs_fop_write_5471 kernfs_fop_write 3 5471 NULL
108660+xfs_efi_init_5476 xfs_efi_init 2 5476 NULL 114712+xfs_efi_init_5476 xfs_efi_init 2 5476 NULL
108661+cifs_security_flags_proc_write_5484 cifs_security_flags_proc_write 3 5484 NULL 114713+cifs_security_flags_proc_write_5484 cifs_security_flags_proc_write 3 5484 NULL
108662+tty_write_5494 tty_write 3 5494 NULL 114714+tty_write_5494 tty_write 3 5494 NULL
@@ -108667,8 +114719,11 @@ index 0000000..9529806
108667+get_entry_msg_len_5552 get_entry_msg_len 0 5552 NULL 114719+get_entry_msg_len_5552 get_entry_msg_len 0 5552 NULL
108668+le_readq_5557 le_readq 0 5557 NULL 114720+le_readq_5557 le_readq 0 5557 NULL
108669+inw_5558 inw 0 5558 NULL 114721+inw_5558 inw 0 5558 NULL
114722+gfs2_extent_map_5561 gfs2_extent_map 0 5561 NULL
108670+bioset_create_5580 bioset_create 1 5580 NULL 114723+bioset_create_5580 bioset_create 1 5580 NULL
108671+oz_ep_alloc_5587 oz_ep_alloc 1 5587 NULL 114724+oz_ep_alloc_5587 oz_ep_alloc 1 5587 NULL
114725+__remove_suid_5618 __remove_suid 0 5618 NULL
114726+gfs2_unstuffer_page_5620 gfs2_unstuffer_page 0 5620 NULL
108672+SYSC_fsetxattr_5639 SYSC_fsetxattr 4 5639 NULL 114727+SYSC_fsetxattr_5639 SYSC_fsetxattr 4 5639 NULL
108673+ext4_xattr_get_5661 ext4_xattr_get 0 5661 NULL 114728+ext4_xattr_get_5661 ext4_xattr_get 0 5661 NULL
108674+posix_clock_register_5662 posix_clock_register 2 5662 NULL 114729+posix_clock_register_5662 posix_clock_register 2 5662 NULL
@@ -108683,11 +114738,10 @@ index 0000000..9529806
108683+nv50_disp_pioc_create__5812 nv50_disp_pioc_create_ 5 5812 NULL 114738+nv50_disp_pioc_create__5812 nv50_disp_pioc_create_ 5 5812 NULL
108684+ceph_x_encrypt_buflen_5829 ceph_x_encrypt_buflen 0-1 5829 NULL 114739+ceph_x_encrypt_buflen_5829 ceph_x_encrypt_buflen 0-1 5829 NULL
108685+ceph_msg_new_5846 ceph_msg_new 2 5846 NULL 114740+ceph_msg_new_5846 ceph_msg_new 2 5846 NULL
108686+setup_req_5848 setup_req 3-0 5848 NULL 114741+setup_req_5848 setup_req 3 5848 NULL
108687+ria_page_count_5849 ria_page_count 0 5849 NULL 114742+ria_page_count_5849 ria_page_count 0 5849 NULL
108688+rx_filter_max_arp_queue_dep_read_5851 rx_filter_max_arp_queue_dep_read 3 5851 NULL 114743+rx_filter_max_arp_queue_dep_read_5851 rx_filter_max_arp_queue_dep_read 3 5851 NULL
108689+config_buf_5862 config_buf 0 5862 NULL 114744+config_buf_5862 config_buf 0 5862 NULL
108690+iwl_dbgfs_scan_ant_rxchain_write_5877 iwl_dbgfs_scan_ant_rxchain_write 3 5877 NULL
108691+lprocfs_fid_width_seq_write_5889 lprocfs_fid_width_seq_write 3 5889 NULL 114745+lprocfs_fid_width_seq_write_5889 lprocfs_fid_width_seq_write 3 5889 NULL
108692+port_show_regs_5904 port_show_regs 3 5904 NULL 114746+port_show_regs_5904 port_show_regs 3 5904 NULL
108693+rbd_segment_length_5907 rbd_segment_length 0-3-2 5907 NULL 114747+rbd_segment_length_5907 rbd_segment_length 0-3-2 5907 NULL
@@ -108698,15 +114752,16 @@ index 0000000..9529806
108698+ll_statahead_one_5962 ll_statahead_one 3 5962 NULL 114752+ll_statahead_one_5962 ll_statahead_one 3 5962 NULL
108699+__apu_get_register_5967 __apu_get_register 0 5967 NULL 114753+__apu_get_register_5967 __apu_get_register 0 5967 NULL
108700+ieee80211_if_fmt_rc_rateidx_mask_5ghz_5971 ieee80211_if_fmt_rc_rateidx_mask_5ghz 3 5971 NULL 114754+ieee80211_if_fmt_rc_rateidx_mask_5ghz_5971 ieee80211_if_fmt_rc_rateidx_mask_5ghz 3 5971 NULL
108701+SyS_semop_5980 SyS_semop 3 5980 NULL
108702+alloc_msg_6072 alloc_msg 1 6072 NULL 114755+alloc_msg_6072 alloc_msg 1 6072 NULL
108703+sctp_setsockopt_connectx_6073 sctp_setsockopt_connectx 3 6073 NULL 114756+sctp_setsockopt_connectx_6073 sctp_setsockopt_connectx 3 6073 NULL
108704+rts51x_ms_rw_multi_sector_6076 rts51x_ms_rw_multi_sector 3-4 6076 NULL 114757+rts51x_ms_rw_multi_sector_6076 rts51x_ms_rw_multi_sector 3-4 6076 NULL
114758+__mnt_want_write_6091 __mnt_want_write 0 6091 NULL
108705+ipmi_addr_length_6110 ipmi_addr_length 0 6110 NULL 114759+ipmi_addr_length_6110 ipmi_addr_length 0 6110 NULL
108706+dfs_global_file_write_6112 dfs_global_file_write 3 6112 NULL 114760+dfs_global_file_write_6112 dfs_global_file_write 3 6112 NULL
108707+nouveau_parent_create__6131 nouveau_parent_create_ 7 6131 NULL 114761+nouveau_parent_create__6131 nouveau_parent_create_ 7 6131 NULL
108708+ieee80211_if_fmt_beacon_timeout_6153 ieee80211_if_fmt_beacon_timeout 3 6153 NULL 114762+ieee80211_if_fmt_beacon_timeout_6153 ieee80211_if_fmt_beacon_timeout 3 6153 NULL
108709+ivtv_copy_buf_to_user_6159 ivtv_copy_buf_to_user 4 6159 NULL 114763+ivtv_copy_buf_to_user_6159 ivtv_copy_buf_to_user 4 6159 NULL
114764+maybe_insert_hole_6167 maybe_insert_hole 3 6167 NULL
108710+wl1251_cmd_template_set_6172 wl1251_cmd_template_set 4 6172 NULL 114765+wl1251_cmd_template_set_6172 wl1251_cmd_template_set 4 6172 NULL
108711+SyS_setgroups_6182 SyS_setgroups 1 6182 NULL 114766+SyS_setgroups_6182 SyS_setgroups 1 6182 NULL
108712+mxt_show_instance_6207 mxt_show_instance 2-0 6207 NULL 114767+mxt_show_instance_6207 mxt_show_instance 2-0 6207 NULL
@@ -108728,6 +114783,7 @@ index 0000000..9529806
108728+mei_dbgfs_read_devstate_6352 mei_dbgfs_read_devstate 3 6352 NULL 114783+mei_dbgfs_read_devstate_6352 mei_dbgfs_read_devstate 3 6352 NULL
108729+_proc_do_string_6376 _proc_do_string 2 6376 NULL 114784+_proc_do_string_6376 _proc_do_string 2 6376 NULL
108730+osd_req_read_sg_kern_6378 osd_req_read_sg_kern 5 6378 NULL 114785+osd_req_read_sg_kern_6378 osd_req_read_sg_kern 5 6378 NULL
114786+xfs_bmap_extents_to_btree_6387 xfs_bmap_extents_to_btree 0 6387 NULL
108731+posix_acl_fix_xattr_userns_6420 posix_acl_fix_xattr_userns 4 6420 NULL 114787+posix_acl_fix_xattr_userns_6420 posix_acl_fix_xattr_userns 4 6420 NULL
108732+add_transaction_credits_6422 add_transaction_credits 2-3 6422 NULL 114788+add_transaction_credits_6422 add_transaction_credits 2-3 6422 NULL
108733+ipr_change_queue_depth_6431 ipr_change_queue_depth 2 6431 NULL 114789+ipr_change_queue_depth_6431 ipr_change_queue_depth 2 6431 NULL
@@ -108742,8 +114798,8 @@ index 0000000..9529806
108742+dm_stats_create_6551 dm_stats_create 4-2-3 6551 NULL 114798+dm_stats_create_6551 dm_stats_create 4-2-3 6551 NULL
108743+fb_alloc_cmap_6554 fb_alloc_cmap 2 6554 NULL 114799+fb_alloc_cmap_6554 fb_alloc_cmap 2 6554 NULL
108744+SyS_semtimedop_6563 SyS_semtimedop 3 6563 NULL 114800+SyS_semtimedop_6563 SyS_semtimedop 3 6563 NULL
114801+xfs_iozero_6573 xfs_iozero 0 6573 NULL
108745+ecryptfs_filldir_6622 ecryptfs_filldir 3 6622 NULL 114802+ecryptfs_filldir_6622 ecryptfs_filldir 3 6622 NULL
108746+xfs_do_div_6649 xfs_do_div 0-2 6649 NULL
108747+process_rcvd_data_6679 process_rcvd_data 3 6679 NULL 114803+process_rcvd_data_6679 process_rcvd_data 3 6679 NULL
108748+btrfs_lookup_csums_range_6696 btrfs_lookup_csums_range 2-3 6696 NULL 114804+btrfs_lookup_csums_range_6696 btrfs_lookup_csums_range 2-3 6696 NULL
108749+ps_pspoll_max_apturn_read_6699 ps_pspoll_max_apturn_read 3 6699 NULL 114805+ps_pspoll_max_apturn_read_6699 ps_pspoll_max_apturn_read 3 6699 NULL
@@ -108757,11 +114813,13 @@ index 0000000..9529806
108757+ieee80211_if_read_6785 ieee80211_if_read 3 6785 NULL 114813+ieee80211_if_read_6785 ieee80211_if_read 3 6785 NULL
108758+zone_spanned_pages_in_node_6787 zone_spanned_pages_in_node 0-3-4 6787 NULL 114814+zone_spanned_pages_in_node_6787 zone_spanned_pages_in_node 0-3-4 6787 NULL
108759+hdlcdrv_register_6792 hdlcdrv_register 2 6792 NULL 114815+hdlcdrv_register_6792 hdlcdrv_register 2 6792 NULL
114816+ll_xattr_cache_find_6798 ll_xattr_cache_find 0 6798 NULL
108760+tx_tx_done_data_read_6799 tx_tx_done_data_read 3 6799 NULL 114817+tx_tx_done_data_read_6799 tx_tx_done_data_read 3 6799 NULL
108761+lbs_rdrf_write_6826 lbs_rdrf_write 3 6826 NULL 114818+lbs_rdrf_write_6826 lbs_rdrf_write 3 6826 NULL
108762+calc_pages_for_6838 calc_pages_for 0-1-2 6838 NULL 114819+calc_pages_for_6838 calc_pages_for 0-1-2 6838 NULL
108763+mon_bin_read_6841 mon_bin_read 3 6841 NULL 114820+mon_bin_read_6841 mon_bin_read 3 6841 NULL
108764+snd_cs4281_BA0_read_6847 snd_cs4281_BA0_read 5 6847 NULL 114821+snd_cs4281_BA0_read_6847 snd_cs4281_BA0_read 5 6847 NULL
114822+xfs_rtany_summary_6851 xfs_rtany_summary 0 6851 NULL
108765+perf_output_sample_ustack_6868 perf_output_sample_ustack 2 6868 NULL 114823+perf_output_sample_ustack_6868 perf_output_sample_ustack 2 6868 NULL
108766+dio_complete_6879 dio_complete 0-2-3 6879 NULL 114824+dio_complete_6879 dio_complete 0-2-3 6879 NULL
108767+raw_seticmpfilter_6888 raw_seticmpfilter 3 6888 NULL nohasharray 114825+raw_seticmpfilter_6888 raw_seticmpfilter 3 6888 NULL nohasharray
@@ -108771,7 +114829,7 @@ index 0000000..9529806
108771+spi_show_regs_6911 spi_show_regs 3 6911 &proc_sessionid_read_6911 nohasharray 114829+spi_show_regs_6911 spi_show_regs 3 6911 &proc_sessionid_read_6911 nohasharray
108772+acm_alloc_minor_6911 acm_alloc_minor 0 6911 &spi_show_regs_6911 114830+acm_alloc_minor_6911 acm_alloc_minor 0 6911 &spi_show_regs_6911
108773+__kfifo_dma_in_finish_r_6913 __kfifo_dma_in_finish_r 2-3 6913 NULL 114831+__kfifo_dma_in_finish_r_6913 __kfifo_dma_in_finish_r 2-3 6913 NULL
108774+do_msgrcv_6921 do_msgrcv 3 6921 NULL 114832+lops_scan_elements_6916 lops_scan_elements 0 6916 NULL
108775+cache_do_downcall_6926 cache_do_downcall 3 6926 NULL 114833+cache_do_downcall_6926 cache_do_downcall 3 6926 NULL
108776+ipath_verbs_send_dma_6929 ipath_verbs_send_dma 6 6929 NULL 114834+ipath_verbs_send_dma_6929 ipath_verbs_send_dma 6 6929 NULL
108777+qsfp_cks_6945 qsfp_cks 2-0 6945 NULL 114835+qsfp_cks_6945 qsfp_cks 2-0 6945 NULL
@@ -108786,6 +114844,7 @@ index 0000000..9529806
108786+tracing_cpumask_read_7010 tracing_cpumask_read 3 7010 NULL 114844+tracing_cpumask_read_7010 tracing_cpumask_read 3 7010 NULL
108787+ld_usb_write_7022 ld_usb_write 3 7022 NULL 114845+ld_usb_write_7022 ld_usb_write 3 7022 NULL
108788+wimax_msg_7030 wimax_msg 4 7030 NULL 114846+wimax_msg_7030 wimax_msg 4 7030 NULL
114847+ceph_kvmalloc_7033 ceph_kvmalloc 1 7033 NULL
108789+ipath_get_base_info_7043 ipath_get_base_info 3 7043 NULL 114848+ipath_get_base_info_7043 ipath_get_base_info 3 7043 NULL
108790+snd_pcm_oss_bytes_7051 snd_pcm_oss_bytes 2 7051 NULL 114849+snd_pcm_oss_bytes_7051 snd_pcm_oss_bytes 2 7051 NULL
108791+hci_sock_recvmsg_7072 hci_sock_recvmsg 4 7072 NULL 114850+hci_sock_recvmsg_7072 hci_sock_recvmsg 4 7072 NULL
@@ -108800,9 +114859,12 @@ index 0000000..9529806
108800+f_midi_start_ep_7270 f_midi_start_ep 0 7270 NULL 114859+f_midi_start_ep_7270 f_midi_start_ep 0 7270 NULL
108801+rx_rate_rx_frames_per_rates_read_7282 rx_rate_rx_frames_per_rates_read 3 7282 NULL 114860+rx_rate_rx_frames_per_rates_read_7282 rx_rate_rx_frames_per_rates_read 3 7282 NULL
108802+get_string_7302 get_string 0 7302 NULL 114861+get_string_7302 get_string 0 7302 NULL
114862+security_inode_need_killpriv_7322 security_inode_need_killpriv 0 7322 NULL
114863+pci_vpd_info_field_size_7324 pci_vpd_info_field_size 0 7324 NULL
108803+mgmt_control_7349 mgmt_control 3 7349 NULL 114864+mgmt_control_7349 mgmt_control 3 7349 NULL
108804+at_est2timeout_7365 at_est2timeout 0-1 7365 NULL 114865+at_est2timeout_7365 at_est2timeout 0-1 7365 NULL
108805+ieee80211_if_read_dot11MeshHWMPactivePathTimeout_7368 ieee80211_if_read_dot11MeshHWMPactivePathTimeout 3 7368 NULL 114866+ieee80211_if_read_dot11MeshHWMPactivePathTimeout_7368 ieee80211_if_read_dot11MeshHWMPactivePathTimeout 3 7368 NULL
114867+xfs_btree_delete_7384 xfs_btree_delete 0 7384 NULL
108806+ath10k_read_fw_stats_7387 ath10k_read_fw_stats 3 7387 NULL 114868+ath10k_read_fw_stats_7387 ath10k_read_fw_stats 3 7387 NULL
108807+hweight_long_7388 hweight_long 1-0 7388 NULL 114869+hweight_long_7388 hweight_long 1-0 7388 NULL
108808+sl_change_mtu_7396 sl_change_mtu 2 7396 NULL 114870+sl_change_mtu_7396 sl_change_mtu 2 7396 NULL
@@ -108828,6 +114890,7 @@ index 0000000..9529806
108828+groups_alloc_7614 groups_alloc 1 7614 NULL nohasharray 114890+groups_alloc_7614 groups_alloc 1 7614 NULL nohasharray
108829+create_dir_7614 create_dir 0 7614 &groups_alloc_7614 114891+create_dir_7614 create_dir 0 7614 &groups_alloc_7614
108830+_rtw_zmalloc_7636 _rtw_zmalloc 1 7636 NULL 114892+_rtw_zmalloc_7636 _rtw_zmalloc 1 7636 NULL
114893+xfs_bmap_btalloc_nullfb_7654 xfs_bmap_btalloc_nullfb 0 7654 NULL
108831+fault_inject_write_7662 fault_inject_write 3 7662 NULL 114894+fault_inject_write_7662 fault_inject_write 3 7662 NULL
108832+acpi_ex_allocate_name_string_7685 acpi_ex_allocate_name_string 2-1 7685 NULL 114895+acpi_ex_allocate_name_string_7685 acpi_ex_allocate_name_string 2-1 7685 NULL
108833+acpi_ns_get_pathname_length_7699 acpi_ns_get_pathname_length 0 7699 NULL 114896+acpi_ns_get_pathname_length_7699 acpi_ns_get_pathname_length 0 7699 NULL
@@ -108840,9 +114903,11 @@ index 0000000..9529806
108840+bnx2_nvram_write_7790 bnx2_nvram_write 4-2 7790 NULL 114903+bnx2_nvram_write_7790 bnx2_nvram_write 4-2 7790 NULL
108841+diva_os_copy_from_user_7792 diva_os_copy_from_user 4 7792 NULL nohasharray 114904+diva_os_copy_from_user_7792 diva_os_copy_from_user 4 7792 NULL nohasharray
108842+lustre_packed_msg_size_7792 lustre_packed_msg_size 0 7792 &diva_os_copy_from_user_7792 114905+lustre_packed_msg_size_7792 lustre_packed_msg_size 0 7792 &diva_os_copy_from_user_7792
114906+xfs_alloc_find_best_extent_7837 xfs_alloc_find_best_extent 0 7837 NULL
108843+cfs_trace_dump_debug_buffer_usrstr_7861 cfs_trace_dump_debug_buffer_usrstr 2 7861 NULL 114907+cfs_trace_dump_debug_buffer_usrstr_7861 cfs_trace_dump_debug_buffer_usrstr 2 7861 NULL
108844+tipc_alloc_entry_7875 tipc_alloc_entry 2 7875 NULL 114908+tipc_alloc_entry_7875 tipc_alloc_entry 2 7875 NULL
108845+config_desc_7878 config_desc 0 7878 NULL 114909+config_desc_7878 config_desc 0 7878 NULL
114910+gfs2_permission_7884 gfs2_permission 0 7884 NULL
108846+dvb_dmxdev_read_sec_7892 dvb_dmxdev_read_sec 4 7892 NULL 114911+dvb_dmxdev_read_sec_7892 dvb_dmxdev_read_sec 4 7892 NULL
108847+xfs_trans_get_efi_7898 xfs_trans_get_efi 2 7898 NULL 114912+xfs_trans_get_efi_7898 xfs_trans_get_efi 2 7898 NULL
108848+libfc_host_alloc_7917 libfc_host_alloc 2 7917 NULL 114913+libfc_host_alloc_7917 libfc_host_alloc 2 7917 NULL
@@ -108858,7 +114923,6 @@ index 0000000..9529806
108858+qla4xxx_post_ping_evt_work_8074 qla4xxx_post_ping_evt_work 4 8074 NULL 114923+qla4xxx_post_ping_evt_work_8074 qla4xxx_post_ping_evt_work 4 8074 NULL
108859+venus_lookup_8121 venus_lookup 4 8121 NULL 114924+venus_lookup_8121 venus_lookup 4 8121 NULL
108860+ieee80211_if_fmt_num_buffered_multicast_8127 ieee80211_if_fmt_num_buffered_multicast 3 8127 NULL 114925+ieee80211_if_fmt_num_buffered_multicast_8127 ieee80211_if_fmt_num_buffered_multicast 3 8127 NULL
108861+xfs_file_fallocate_8150 xfs_file_fallocate 3-4 8150 NULL
108862+__sk_mem_schedule_8185 __sk_mem_schedule 2 8185 NULL 114926+__sk_mem_schedule_8185 __sk_mem_schedule 2 8185 NULL
108863+ieee80211_if_fmt_dot11MeshHoldingTimeout_8187 ieee80211_if_fmt_dot11MeshHoldingTimeout 3 8187 NULL 114927+ieee80211_if_fmt_dot11MeshHoldingTimeout_8187 ieee80211_if_fmt_dot11MeshHoldingTimeout 3 8187 NULL
108864+recent_mt_proc_write_8206 recent_mt_proc_write 3 8206 NULL 114928+recent_mt_proc_write_8206 recent_mt_proc_write 3 8206 NULL
@@ -108868,7 +114932,6 @@ index 0000000..9529806
108868+play_iframe_8219 play_iframe 3 8219 NULL 114932+play_iframe_8219 play_iframe 3 8219 NULL
108869+kvm_mmu_page_set_gfn_8225 kvm_mmu_page_set_gfn 2 8225 NULL 114933+kvm_mmu_page_set_gfn_8225 kvm_mmu_page_set_gfn 2 8225 NULL
108870+sctp_ssnmap_size_8228 sctp_ssnmap_size 0-1-2 8228 NULL 114934+sctp_ssnmap_size_8228 sctp_ssnmap_size 0-1-2 8228 NULL
108871+ceph_sync_write_8233 ceph_sync_write 4 8233 NULL
108872+check_xattr_ref_inode_8244 check_xattr_ref_inode 0 8244 NULL 114935+check_xattr_ref_inode_8244 check_xattr_ref_inode 0 8244 NULL
108873+t3_init_l2t_8261 t3_init_l2t 1 8261 NULL 114936+t3_init_l2t_8261 t3_init_l2t 1 8261 NULL
108874+init_cdev_8274 init_cdev 1 8274 NULL 114937+init_cdev_8274 init_cdev 1 8274 NULL
@@ -108898,10 +114961,10 @@ index 0000000..9529806
108898+tower_write_8580 tower_write 3 8580 NULL 114961+tower_write_8580 tower_write 3 8580 NULL
108899+cfs_cpt_number_8618 cfs_cpt_number 0 8618 NULL 114962+cfs_cpt_number_8618 cfs_cpt_number 0 8618 NULL
108900+shash_setkey_unaligned_8620 shash_setkey_unaligned 3 8620 NULL 114963+shash_setkey_unaligned_8620 shash_setkey_unaligned 3 8620 NULL
114964+xfs_qm_dqattach_locked_8625 xfs_qm_dqattach_locked 0 8625 NULL
108901+it821x_firmware_command_8628 it821x_firmware_command 3 8628 NULL 114965+it821x_firmware_command_8628 it821x_firmware_command 3 8628 NULL
108902+scsi_dma_map_8632 scsi_dma_map 0 8632 NULL 114966+scsi_dma_map_8632 scsi_dma_map 0 8632 NULL
108903+fuse_send_write_pages_8636 fuse_send_write_pages 0-5 8636 NULL 114967+fuse_send_write_pages_8636 fuse_send_write_pages 0-5 8636 NULL
108904+generic_acl_set_8658 generic_acl_set 4 8658 NULL
108905+mlx5_vzalloc_8663 mlx5_vzalloc 1 8663 NULL 114968+mlx5_vzalloc_8663 mlx5_vzalloc 1 8663 NULL
108906+dio_bio_alloc_8677 dio_bio_alloc 5 8677 NULL 114969+dio_bio_alloc_8677 dio_bio_alloc 5 8677 NULL
108907+lbs_bcnmiss_read_8678 lbs_bcnmiss_read 3 8678 NULL 114970+lbs_bcnmiss_read_8678 lbs_bcnmiss_read 3 8678 NULL
@@ -108924,12 +114987,16 @@ index 0000000..9529806
108924+paging32_prefetch_gpte_8783 paging32_prefetch_gpte 4 8783 NULL 114987+paging32_prefetch_gpte_8783 paging32_prefetch_gpte 4 8783 NULL
108925+ext4_try_to_write_inline_data_8785 ext4_try_to_write_inline_data 3-4 8785 NULL 114988+ext4_try_to_write_inline_data_8785 ext4_try_to_write_inline_data 3-4 8785 NULL
108926+__bitmap_weight_8796 __bitmap_weight 0-2 8796 NULL 114989+__bitmap_weight_8796 __bitmap_weight 0-2 8796 NULL
108927+cpuset_common_file_read_8800 cpuset_common_file_read 5 8800 NULL 114990+gfs2_glock_nq_8808 gfs2_glock_nq 0 8808 NULL
114991+ntfs_commit_pages_after_write_8809 ntfs_commit_pages_after_write 0 8809 NULL
108928+metronomefb_write_8823 metronomefb_write 3 8823 NULL 114992+metronomefb_write_8823 metronomefb_write 3 8823 NULL
108929+SyS_llistxattr_8824 SyS_llistxattr 3 8824 NULL 114993+SyS_llistxattr_8824 SyS_llistxattr 3 8824 NULL
114994+extent_read_full_page_8826 extent_read_full_page 0 8826 NULL
114995+ll_xattr_cache_get_8829 ll_xattr_cache_get 0 8829 NULL
108930+get_queue_depth_8833 get_queue_depth 0 8833 NULL 114996+get_queue_depth_8833 get_queue_depth 0 8833 NULL
108931+dvb_ringbuffer_pkt_next_8834 dvb_ringbuffer_pkt_next 0-2 8834 NULL 114997+dvb_ringbuffer_pkt_next_8834 dvb_ringbuffer_pkt_next 0-2 8834 NULL
108932+usb_ep_queue_8839 usb_ep_queue 0 8839 NULL 114998+usb_ep_queue_8839 usb_ep_queue 0 8839 NULL
114999+iwl_rx_packet_len_8854 iwl_rx_packet_len 0 8854 NULL
108933+debug_debug1_read_8856 debug_debug1_read 3 8856 NULL 115000+debug_debug1_read_8856 debug_debug1_read 3 8856 NULL
108934+wa_nep_queue_8858 wa_nep_queue 2 8858 NULL 115001+wa_nep_queue_8858 wa_nep_queue 2 8858 NULL
108935+radeon_drm_ioctl_8875 radeon_drm_ioctl 2 8875 NULL 115002+radeon_drm_ioctl_8875 radeon_drm_ioctl 2 8875 NULL
@@ -108951,9 +115018,12 @@ index 0000000..9529806
108951+bio_integrity_get_tag_8974 bio_integrity_get_tag 3 8974 NULL 115018+bio_integrity_get_tag_8974 bio_integrity_get_tag 3 8974 NULL
108952+jbd2_journal_blocks_per_page_9004 jbd2_journal_blocks_per_page 0 9004 NULL 115019+jbd2_journal_blocks_per_page_9004 jbd2_journal_blocks_per_page 0 9004 NULL
108953+il_dbgfs_clear_ucode_stats_write_9016 il_dbgfs_clear_ucode_stats_write 3 9016 NULL 115020+il_dbgfs_clear_ucode_stats_write_9016 il_dbgfs_clear_ucode_stats_write 3 9016 NULL
115021+xfs_inobt_get_rec_9023 xfs_inobt_get_rec 0 9023 NULL
108954+snd_emu10k1_ptr_read_9026 snd_emu10k1_ptr_read 0-2 9026 NULL 115022+snd_emu10k1_ptr_read_9026 snd_emu10k1_ptr_read 0-2 9026 NULL
108955+fd_ioctl_9028 fd_ioctl 3 9028 NULL 115023+fd_ioctl_9028 fd_ioctl 3 9028 NULL
108956+nla_put_9042 nla_put 3 9042 NULL 115024+nla_put_9042 nla_put 3 9042 NULL
115025+ffs_func_revmap_intf_9043 ffs_func_revmap_intf 0 9043 NULL
115026+sta_tx_latency_stat_header_9050 sta_tx_latency_stat_header 0-3-4 9050 NULL
108957+snd_emu10k1_synth_copy_from_user_9061 snd_emu10k1_synth_copy_from_user 3-5 9061 NULL 115027+snd_emu10k1_synth_copy_from_user_9061 snd_emu10k1_synth_copy_from_user 3-5 9061 NULL
108958+snd_gus_dram_peek_9062 snd_gus_dram_peek 4 9062 NULL 115028+snd_gus_dram_peek_9062 snd_gus_dram_peek 4 9062 NULL
108959+fib_info_hash_alloc_9075 fib_info_hash_alloc 1 9075 NULL 115029+fib_info_hash_alloc_9075 fib_info_hash_alloc 1 9075 NULL
@@ -108961,7 +115031,8 @@ index 0000000..9529806
108961+ftdi_prepare_write_buffer_9093 ftdi_prepare_write_buffer 3 9093 NULL 115031+ftdi_prepare_write_buffer_9093 ftdi_prepare_write_buffer 3 9093 NULL
108962+adxl34x_spi_read_block_9108 adxl34x_spi_read_block 3 9108 NULL 115032+adxl34x_spi_read_block_9108 adxl34x_spi_read_block 3 9108 NULL
108963+caif_stream_sendmsg_9110 caif_stream_sendmsg 4 9110 NULL nohasharray 115033+caif_stream_sendmsg_9110 caif_stream_sendmsg 4 9110 NULL nohasharray
108964+gfn_to_rmap_9110 gfn_to_rmap 3-2 9110 &caif_stream_sendmsg_9110 115034+gfn_to_rmap_9110 gfn_to_rmap 3-2 9110 &caif_stream_sendmsg_9110 nohasharray
115035+jhead_scan_9110 jhead_scan 0 9110 &gfn_to_rmap_9110
108965+udf_direct_IO_9111 udf_direct_IO 4 9111 NULL 115036+udf_direct_IO_9111 udf_direct_IO 4 9111 NULL
108966+pmcraid_change_queue_depth_9116 pmcraid_change_queue_depth 2 9116 NULL 115037+pmcraid_change_queue_depth_9116 pmcraid_change_queue_depth 2 9116 NULL
108967+apei_resources_merge_9149 apei_resources_merge 0 9149 NULL 115038+apei_resources_merge_9149 apei_resources_merge 0 9149 NULL
@@ -108969,11 +115040,13 @@ index 0000000..9529806
108969+dbg_command_buf_9165 dbg_command_buf 2 9165 NULL 115040+dbg_command_buf_9165 dbg_command_buf 2 9165 NULL
108970+isr_irqs_read_9181 isr_irqs_read 3 9181 NULL 115041+isr_irqs_read_9181 isr_irqs_read 3 9181 NULL
108971+count_leading_zeros_9183 count_leading_zeros 0 9183 NULL 115042+count_leading_zeros_9183 count_leading_zeros 0 9183 NULL
115043+xfs_btree_rshift_9187 xfs_btree_rshift 0 9187 NULL
108972+altera_swap_ir_9194 altera_swap_ir 2 9194 NULL 115044+altera_swap_ir_9194 altera_swap_ir 2 9194 NULL
108973+snd_m3_get_pointer_9206 snd_m3_get_pointer 0 9206 NULL 115045+snd_m3_get_pointer_9206 snd_m3_get_pointer 0 9206 NULL
108974+virtqueue_add_9217 virtqueue_add 4-5 9217 NULL 115046+virtqueue_add_9217 virtqueue_add 4-5 9217 NULL
108975+tx_tx_prepared_descs_read_9221 tx_tx_prepared_descs_read 3 9221 NULL 115047+tx_tx_prepared_descs_read_9221 tx_tx_prepared_descs_read 3 9221 NULL
108976+sctp_getsockopt_delayed_ack_9232 sctp_getsockopt_delayed_ack 2 9232 NULL 115048+sctp_getsockopt_delayed_ack_9232 sctp_getsockopt_delayed_ack 2 9232 NULL
115049+xfs_error_trap_9239 xfs_error_trap 0-1 9239 NULL
108977+hfsplus_bnode_read_u16_9262 hfsplus_bnode_read_u16 0 9262 NULL 115050+hfsplus_bnode_read_u16_9262 hfsplus_bnode_read_u16 0 9262 NULL
108978+hdpvr_read_9273 hdpvr_read 3 9273 NULL 115051+hdpvr_read_9273 hdpvr_read 3 9273 NULL
108979+flakey_status_9274 flakey_status 5 9274 NULL 115052+flakey_status_9274 flakey_status 5 9274 NULL
@@ -108993,7 +115066,6 @@ index 0000000..9529806
108993+bm_realloc_pages_9431 bm_realloc_pages 2 9431 NULL 115066+bm_realloc_pages_9431 bm_realloc_pages 2 9431 NULL
108994+ffs_ep0_write_9438 ffs_ep0_write 3 9438 NULL 115067+ffs_ep0_write_9438 ffs_ep0_write 3 9438 NULL
108995+ieee80211_if_fmt_fwded_unicast_9454 ieee80211_if_fmt_fwded_unicast 3 9454 NULL 115068+ieee80211_if_fmt_fwded_unicast_9454 ieee80211_if_fmt_fwded_unicast 3 9454 NULL
108996+ext3_xattr_set_acl_9467 ext3_xattr_set_acl 4 9467 NULL
108997+agp_generic_alloc_user_9470 agp_generic_alloc_user 1 9470 NULL nohasharray 115069+agp_generic_alloc_user_9470 agp_generic_alloc_user 1 9470 NULL nohasharray
108998+get_registers_9470 get_registers 4 9470 &agp_generic_alloc_user_9470 115070+get_registers_9470 get_registers 4 9470 &agp_generic_alloc_user_9470
108999+crypt_status_9492 crypt_status 5 9492 NULL 115071+crypt_status_9492 crypt_status 5 9492 NULL
@@ -109004,12 +115076,14 @@ index 0000000..9529806
109004+ll_max_read_ahead_whole_mb_seq_write_9528 ll_max_read_ahead_whole_mb_seq_write 3 9528 NULL 115076+ll_max_read_ahead_whole_mb_seq_write_9528 ll_max_read_ahead_whole_mb_seq_write 3 9528 NULL
109005+read_file_dma_9530 read_file_dma 3 9530 NULL 115077+read_file_dma_9530 read_file_dma 3 9530 NULL
109006+iwl_dbgfs_bf_params_read_9542 iwl_dbgfs_bf_params_read 3 9542 NULL 115078+iwl_dbgfs_bf_params_read_9542 iwl_dbgfs_bf_params_read 3 9542 NULL
115079+xfs_ialloc_read_agi_9545 xfs_ialloc_read_agi 0 9545 NULL
109007+il_dbgfs_missed_beacon_write_9546 il_dbgfs_missed_beacon_write 3 9546 NULL 115080+il_dbgfs_missed_beacon_write_9546 il_dbgfs_missed_beacon_write 3 9546 NULL
109008+compat_SyS_pwritev64_9548 compat_SyS_pwritev64 3 9548 NULL 115081+compat_SyS_pwritev64_9548 compat_SyS_pwritev64 3 9548 NULL
109009+fw_node_create_9559 fw_node_create 2 9559 NULL 115082+fw_node_create_9559 fw_node_create 2 9559 NULL
109010+kobj_map_9566 kobj_map 2-3 9566 NULL 115083+kobj_map_9566 kobj_map 2-3 9566 NULL
109011+f2fs_read_data_pages_9574 f2fs_read_data_pages 4 9574 NULL 115084+f2fs_read_data_pages_9574 f2fs_read_data_pages 4 9574 NULL
109012+snd_emu10k1_fx8010_read_9605 snd_emu10k1_fx8010_read 5-6 9605 NULL 115085+snd_emu10k1_fx8010_read_9605 snd_emu10k1_fx8010_read 5-6 9605 NULL
115086+xfs_qm_dqattach_one_9612 xfs_qm_dqattach_one 0 9612 NULL
109013+lov_ost_pool_add_9626 lov_ost_pool_add 3 9626 NULL 115087+lov_ost_pool_add_9626 lov_ost_pool_add 3 9626 NULL
109014+saa7164_buffer_alloc_user_9627 saa7164_buffer_alloc_user 2 9627 NULL 115088+saa7164_buffer_alloc_user_9627 saa7164_buffer_alloc_user 2 9627 NULL
109015+ceph_copy_user_to_page_vector_9635 ceph_copy_user_to_page_vector 4-3 9635 NULL 115089+ceph_copy_user_to_page_vector_9635 ceph_copy_user_to_page_vector 4-3 9635 NULL
@@ -109030,16 +115104,16 @@ index 0000000..9529806
109030+SYSC_ppoll_9721 SYSC_ppoll 2 9721 NULL 115104+SYSC_ppoll_9721 SYSC_ppoll 2 9721 NULL
109031+nla_get_u8_9736 nla_get_u8 0 9736 NULL 115105+nla_get_u8_9736 nla_get_u8 0 9736 NULL
109032+ieee80211_if_fmt_num_mcast_sta_9738 ieee80211_if_fmt_num_mcast_sta 3 9738 NULL 115106+ieee80211_if_fmt_num_mcast_sta_9738 ieee80211_if_fmt_num_mcast_sta 3 9738 NULL
115107+shmem_replace_page_9740 shmem_replace_page 0 9740 NULL
109033+ddb_input_read_9743 ddb_input_read 3-0 9743 NULL 115108+ddb_input_read_9743 ddb_input_read 3-0 9743 NULL
109034+sta_last_ack_signal_read_9751 sta_last_ack_signal_read 3 9751 NULL 115109+sta_last_ack_signal_read_9751 sta_last_ack_signal_read 3 9751 NULL
109035+btrfs_super_root_9763 btrfs_super_root 0 9763 NULL 115110+btrfs_super_root_9763 btrfs_super_root 0 9763 NULL
109036+__blk_queue_init_tags_9778 __blk_queue_init_tags 2 9778 NULL 115111+__blk_queue_init_tags_9778 __blk_queue_init_tags 2 9778 NULL
109037+snd_mem_proc_write_9786 snd_mem_proc_write 3 9786 NULL
109038+kvm_age_hva_9795 kvm_age_hva 2 9795 NULL 115112+kvm_age_hva_9795 kvm_age_hva 2 9795 NULL
109039+parse_uac2_sample_rate_range_9801 parse_uac2_sample_rate_range 0 9801 NULL 115113+parse_uac2_sample_rate_range_9801 parse_uac2_sample_rate_range 0 9801 NULL
109040+tpm_data_in_9802 tpm_data_in 0 9802 NULL 115114+tpm_data_in_9802 tpm_data_in 0 9802 NULL
109041+udpv6_recvmsg_9813 udpv6_recvmsg 4 9813 NULL nohasharray 115115+ieee80211_if_read_state_9813 ieee80211_if_read_state 3 9813 NULL nohasharray
109042+ieee80211_if_read_state_9813 ieee80211_if_read_state 3 9813 &udpv6_recvmsg_9813 115116+udpv6_recvmsg_9813 udpv6_recvmsg 4 9813 &ieee80211_if_read_state_9813
109043+pmcraid_alloc_sglist_9864 pmcraid_alloc_sglist 1 9864 NULL 115117+pmcraid_alloc_sglist_9864 pmcraid_alloc_sglist 1 9864 NULL
109044+btrfs_free_reserved_extent_9867 btrfs_free_reserved_extent 2 9867 NULL 115118+btrfs_free_reserved_extent_9867 btrfs_free_reserved_extent 2 9867 NULL
109045+f1x_translate_sysaddr_to_cs_9868 f1x_translate_sysaddr_to_cs 2 9868 NULL 115119+f1x_translate_sysaddr_to_cs_9868 f1x_translate_sysaddr_to_cs 2 9868 NULL
@@ -109052,13 +115126,17 @@ index 0000000..9529806
109052+pstore_ftrace_knob_read_9947 pstore_ftrace_knob_read 3 9947 NULL 115126+pstore_ftrace_knob_read_9947 pstore_ftrace_knob_read 3 9947 NULL
109053+read_file_misc_9948 read_file_misc 3 9948 NULL 115127+read_file_misc_9948 read_file_misc 3 9948 NULL
109054+csum_partial_copy_fromiovecend_9957 csum_partial_copy_fromiovecend 3-4 9957 NULL 115128+csum_partial_copy_fromiovecend_9957 csum_partial_copy_fromiovecend 3-4 9957 NULL
115129+xfs_buf_geterror_9959 xfs_buf_geterror 0 9959 NULL
109055+SyS_gethostname_9964 SyS_gethostname 2 9964 NULL 115130+SyS_gethostname_9964 SyS_gethostname 2 9964 NULL
109056+get_free_serial_index_9969 get_free_serial_index 0 9969 NULL 115131+get_free_serial_index_9969 get_free_serial_index 0 9969 NULL
109057+btrfs_add_link_9973 btrfs_add_link 5 9973 NULL 115132+btrfs_add_link_9973 btrfs_add_link 5 9973 NULL
109058+gameport_read_9983 gameport_read 0 9983 NULL 115133+gameport_read_9983 gameport_read 0 9983 NULL
109059+SYSC_move_pages_9986 SYSC_move_pages 2 9986 NULL 115134+SYSC_move_pages_9986 SYSC_move_pages 2 9986 NULL
115135+ceph_oloc_oid_to_pg_10003 ceph_oloc_oid_to_pg 0 10003 NULL
109060+aat2870_dump_reg_10019 aat2870_dump_reg 0 10019 NULL 115136+aat2870_dump_reg_10019 aat2870_dump_reg 0 10019 NULL
109061+ieee80211_set_probe_resp_10077 ieee80211_set_probe_resp 3 10077 NULL 115137+ieee80211_set_probe_resp_10077 ieee80211_set_probe_resp 3 10077 NULL
115138+xfs_attr_rmtval_get_10092 xfs_attr_rmtval_get 0 10092 NULL
115139+xfs_btree_check_lptr_10104 xfs_btree_check_lptr 0 10104 NULL
109062+get_elem_size_10110 get_elem_size 0-2 10110 NULL nohasharray 115140+get_elem_size_10110 get_elem_size 0-2 10110 NULL nohasharray
109063+dynamic_ps_timeout_read_10110 dynamic_ps_timeout_read 3 10110 &get_elem_size_10110 115141+dynamic_ps_timeout_read_10110 dynamic_ps_timeout_read 3 10110 &get_elem_size_10110
109064+gfs2_meta_read_10112 gfs2_meta_read 0 10112 NULL 115142+gfs2_meta_read_10112 gfs2_meta_read 0 10112 NULL
@@ -109070,6 +115148,8 @@ index 0000000..9529806
109070+kstrtol_from_user_10168 kstrtol_from_user 2 10168 NULL 115148+kstrtol_from_user_10168 kstrtol_from_user 2 10168 NULL
109071+proc_pid_attr_read_10173 proc_pid_attr_read 3 10173 NULL 115149+proc_pid_attr_read_10173 proc_pid_attr_read 3 10173 NULL
109072+jffs2_user_setxattr_10182 jffs2_user_setxattr 4 10182 NULL 115150+jffs2_user_setxattr_10182 jffs2_user_setxattr 4 10182 NULL
115151+xfs_attr_rmtval_copyout_10222 xfs_attr_rmtval_copyout 0 10222 NULL nohasharray
115152+xfs_btree_read_buf_block_10222 xfs_btree_read_buf_block 0 10222 &xfs_attr_rmtval_copyout_10222
109073+hdlc_rpr_irq_10240 hdlc_rpr_irq 2 10240 NULL 115153+hdlc_rpr_irq_10240 hdlc_rpr_irq 2 10240 NULL
109074+cciss_proc_write_10259 cciss_proc_write 3 10259 NULL 115154+cciss_proc_write_10259 cciss_proc_write 3 10259 NULL
109075+__qlcnic_pci_sriov_enable_10281 __qlcnic_pci_sriov_enable 2 10281 NULL 115155+__qlcnic_pci_sriov_enable_10281 __qlcnic_pci_sriov_enable 2 10281 NULL
@@ -109103,6 +115183,7 @@ index 0000000..9529806
109103+otp_read_10594 otp_read 2-4-5 10594 NULL 115183+otp_read_10594 otp_read 2-4-5 10594 NULL
109104+supply_map_read_file_10608 supply_map_read_file 3 10608 NULL 115184+supply_map_read_file_10608 supply_map_read_file 3 10608 NULL
109105+ima_show_htable_violations_10619 ima_show_htable_violations 3 10619 NULL 115185+ima_show_htable_violations_10619 ima_show_htable_violations 3 10619 NULL
115186+fq_alloc_node_10633 fq_alloc_node 1 10633 NULL
109106+nfs_idmap_lookup_id_10660 nfs_idmap_lookup_id 2 10660 NULL 115187+nfs_idmap_lookup_id_10660 nfs_idmap_lookup_id 2 10660 NULL
109107+efx_max_tx_len_10662 efx_max_tx_len 0-2 10662 NULL 115188+efx_max_tx_len_10662 efx_max_tx_len 0-2 10662 NULL
109108+parport_write_10669 parport_write 0 10669 NULL 115189+parport_write_10669 parport_write 0 10669 NULL
@@ -109112,10 +115193,11 @@ index 0000000..9529806
109112+shash_async_setkey_10720 shash_async_setkey 3 10720 NULL nohasharray 115193+shash_async_setkey_10720 shash_async_setkey 3 10720 NULL nohasharray
109113+pvr2_ioread_read_10720 pvr2_ioread_read 3 10720 &shash_async_setkey_10720 115194+pvr2_ioread_read_10720 pvr2_ioread_read 3 10720 &shash_async_setkey_10720
109114+spi_sync_10731 spi_sync 0 10731 NULL 115195+spi_sync_10731 spi_sync 0 10731 NULL
109115+apu_get_register_10737 apu_get_register 0 10737 NULL nohasharray 115196+sctp_getsockopt_maxseg_10737 sctp_getsockopt_maxseg 2 10737 NULL nohasharray
109116+sctp_getsockopt_maxseg_10737 sctp_getsockopt_maxseg 2 10737 &apu_get_register_10737 115197+apu_get_register_10737 apu_get_register 0 10737 &sctp_getsockopt_maxseg_10737
109117+SyS_io_getevents_10756 SyS_io_getevents 3 10756 NULL 115198+SyS_io_getevents_10756 SyS_io_getevents 3 10756 NULL
109118+vhost_add_used_n_10760 vhost_add_used_n 3 10760 NULL 115199+vhost_add_used_n_10760 vhost_add_used_n 3 10760 NULL
115200+rd_build_prot_space_10761 rd_build_prot_space 2-3 10761 NULL
109119+kvm_read_guest_atomic_10765 kvm_read_guest_atomic 4 10765 NULL 115201+kvm_read_guest_atomic_10765 kvm_read_guest_atomic 4 10765 NULL
109120+__qp_memcpy_to_queue_10779 __qp_memcpy_to_queue 2-4 10779 NULL 115202+__qp_memcpy_to_queue_10779 __qp_memcpy_to_queue 2-4 10779 NULL
109121+diva_set_trace_filter_10820 diva_set_trace_filter 0-1 10820 NULL 115203+diva_set_trace_filter_10820 diva_set_trace_filter 0-1 10820 NULL
@@ -109125,7 +115207,6 @@ index 0000000..9529806
109125+snd_pcm_oss_write1_10872 snd_pcm_oss_write1 3 10872 NULL 115207+snd_pcm_oss_write1_10872 snd_pcm_oss_write1 3 10872 NULL
109126+wiidebug_drm_write_10879 wiidebug_drm_write 3 10879 NULL 115208+wiidebug_drm_write_10879 wiidebug_drm_write 3 10879 NULL
109127+get_scq_10897 get_scq 2 10897 NULL 115209+get_scq_10897 get_scq 2 10897 NULL
109128+cgroup_write_string_10900 cgroup_write_string 5 10900 NULL
109129+tifm_alloc_adapter_10903 tifm_alloc_adapter 1 10903 NULL 115210+tifm_alloc_adapter_10903 tifm_alloc_adapter 1 10903 NULL
109130+lprocfs_wr_atomic_10912 lprocfs_wr_atomic 3 10912 NULL 115211+lprocfs_wr_atomic_10912 lprocfs_wr_atomic 3 10912 NULL
109131+__copy_from_user_10918 __copy_from_user 0-3 10918 NULL 115212+__copy_from_user_10918 __copy_from_user 0-3 10918 NULL
@@ -109136,18 +115217,17 @@ index 0000000..9529806
109136+sched_autogroup_write_10984 sched_autogroup_write 3 10984 NULL 115217+sched_autogroup_write_10984 sched_autogroup_write 3 10984 NULL
109137+xfrm_hash_alloc_10997 xfrm_hash_alloc 1 10997 NULL 115218+xfrm_hash_alloc_10997 xfrm_hash_alloc 1 10997 NULL
109138+rx_filter_accum_arp_pend_requests_read_11003 rx_filter_accum_arp_pend_requests_read 3 11003 NULL 115219+rx_filter_accum_arp_pend_requests_read_11003 rx_filter_accum_arp_pend_requests_read 3 11003 NULL
115220+gfs2_dir_read_11017 gfs2_dir_read 0 11017 NULL
109139+SetLineNumber_11023 SetLineNumber 0 11023 NULL 115221+SetLineNumber_11023 SetLineNumber 0 11023 NULL
109140+tda10048_writeregbulk_11050 tda10048_writeregbulk 4 11050 NULL 115222+tda10048_writeregbulk_11050 tda10048_writeregbulk 4 11050 NULL
109141+insert_inline_extent_backref_11063 insert_inline_extent_backref 8 11063 NULL 115223+insert_inline_extent_backref_11063 insert_inline_extent_backref 8 11063 NULL
109142+tcp_send_mss_11079 tcp_send_mss 0 11079 NULL 115224+tcp_send_mss_11079 tcp_send_mss 0 11079 NULL
109143+count_argc_11083 count_argc 0 11083 NULL 115225+count_argc_11083 count_argc 0 11083 NULL
109144+ocfs2_blocks_per_xattr_bucket_11099 ocfs2_blocks_per_xattr_bucket 0 11099 NULL
109145+kvm_write_guest_cached_11106 kvm_write_guest_cached 4 11106 NULL 115226+kvm_write_guest_cached_11106 kvm_write_guest_cached 4 11106 NULL
109146+tw_change_queue_depth_11116 tw_change_queue_depth 2 11116 NULL 115227+tw_change_queue_depth_11116 tw_change_queue_depth 2 11116 NULL
109147+page_offset_11120 page_offset 0 11120 NULL 115228+page_offset_11120 page_offset 0 11120 NULL
109148+cea_db_payload_len_11124 cea_db_payload_len 0 11124 NULL nohasharray 115229+cea_db_payload_len_11124 cea_db_payload_len 0 11124 NULL nohasharray
109149+tracing_buffers_read_11124 tracing_buffers_read 3 11124 &cea_db_payload_len_11124 115230+tracing_buffers_read_11124 tracing_buffers_read 3 11124 &cea_db_payload_len_11124
109150+alloc_alien_cache_11127 alloc_alien_cache 2 11127 NULL
109151+snd_gf1_pcm_playback_silence_11172 snd_gf1_pcm_playback_silence 4-3 11172 NULL 115231+snd_gf1_pcm_playback_silence_11172 snd_gf1_pcm_playback_silence 4-3 11172 NULL
109152+il_dbgfs_rx_queue_read_11221 il_dbgfs_rx_queue_read 3 11221 NULL 115232+il_dbgfs_rx_queue_read_11221 il_dbgfs_rx_queue_read 3 11221 NULL
109153+comedi_alloc_spriv_11234 comedi_alloc_spriv 2 11234 NULL 115233+comedi_alloc_spriv_11234 comedi_alloc_spriv 2 11234 NULL
@@ -109158,6 +115238,7 @@ index 0000000..9529806
109158+bcache_dev_sectors_dirty_add_11315 bcache_dev_sectors_dirty_add 3-4 11315 NULL 115238+bcache_dev_sectors_dirty_add_11315 bcache_dev_sectors_dirty_add 3-4 11315 NULL
109159+sk_filter_size_11316 sk_filter_size 0 11316 NULL nohasharray 115239+sk_filter_size_11316 sk_filter_size 0 11316 NULL nohasharray
109160+tcp_send_rcvq_11316 tcp_send_rcvq 3 11316 &sk_filter_size_11316 115240+tcp_send_rcvq_11316 tcp_send_rcvq 3 11316 &sk_filter_size_11316
115241+shmem_radix_tree_replace_11325 shmem_radix_tree_replace 0 11325 NULL
109161+construct_key_11329 construct_key 3 11329 NULL nohasharray 115242+construct_key_11329 construct_key 3 11329 NULL nohasharray
109162+__kfifo_out_peek_11329 __kfifo_out_peek 0-3 11329 &construct_key_11329 115243+__kfifo_out_peek_11329 __kfifo_out_peek 0-3 11329 &construct_key_11329
109163+next_segment_11330 next_segment 0-2-1 11330 NULL 115244+next_segment_11330 next_segment 0-2-1 11330 NULL
@@ -109174,8 +115255,8 @@ index 0000000..9529806
109174+str_to_user_11411 str_to_user 2 11411 NULL 115255+str_to_user_11411 str_to_user 2 11411 NULL
109175+mem_fw_gen_free_mem_blks_read_11413 mem_fw_gen_free_mem_blks_read 3 11413 NULL 115256+mem_fw_gen_free_mem_blks_read_11413 mem_fw_gen_free_mem_blks_read 3 11413 NULL
109176+ath6kl_wmi_test_rx_11414 ath6kl_wmi_test_rx 3 11414 NULL 115257+ath6kl_wmi_test_rx_11414 ath6kl_wmi_test_rx 3 11414 NULL
109177+adis16480_show_firmware_revision_11417 adis16480_show_firmware_revision 3 11417 NULL nohasharray 115258+xfs_btree_lookup_11417 xfs_btree_lookup 0 11417 NULL nohasharray
109178+import_sec_validate_get_11417 import_sec_validate_get 0 11417 &adis16480_show_firmware_revision_11417 115259+adis16480_show_firmware_revision_11417 adis16480_show_firmware_revision 3 11417 &xfs_btree_lookup_11417
109179+trace_options_read_11419 trace_options_read 3 11419 NULL 115260+trace_options_read_11419 trace_options_read 3 11419 NULL
109180+i40e_dbg_command_write_11421 i40e_dbg_command_write 3 11421 NULL 115261+i40e_dbg_command_write_11421 i40e_dbg_command_write 3 11421 NULL
109181+xd_read_multiple_pages_11422 xd_read_multiple_pages 5-4 11422 NULL 115262+xd_read_multiple_pages_11422 xd_read_multiple_pages 5-4 11422 NULL
@@ -109184,11 +115265,13 @@ index 0000000..9529806
109184+do_blockdev_direct_IO_11455 do_blockdev_direct_IO 0-6 11455 NULL 115265+do_blockdev_direct_IO_11455 do_blockdev_direct_IO 0-6 11455 NULL
109185+pci_set_power_state_11479 pci_set_power_state 0 11479 NULL nohasharray 115266+pci_set_power_state_11479 pci_set_power_state 0 11479 NULL nohasharray
109186+sca3000_read_first_n_hw_rb_11479 sca3000_read_first_n_hw_rb 2 11479 &pci_set_power_state_11479 115267+sca3000_read_first_n_hw_rb_11479 sca3000_read_first_n_hw_rb 2 11479 &pci_set_power_state_11479
109187+xfs_file_buffered_aio_write_11492 xfs_file_buffered_aio_write 4 11492 NULL 115268+xfs_file_buffered_aio_write_11492 xfs_file_buffered_aio_write 4-0 11492 NULL
109188+sd_do_mode_sense_11507 sd_do_mode_sense 5 11507 NULL 115269+sd_do_mode_sense_11507 sd_do_mode_sense 5 11507 NULL
109189+kmem_zalloc_11510 kmem_zalloc 1 11510 NULL 115270+kmem_zalloc_11510 kmem_zalloc 1 11510 NULL
109190+ll_direct_IO_26_seg_11518 ll_direct_IO_26_seg 0 11518 NULL 115271+ll_direct_IO_26_seg_11518 ll_direct_IO_26_seg 0 11518 NULL
109191+twl_direction_in_11527 twl_direction_in 2 11527 NULL 115272+twl_direction_in_11527 twl_direction_in 2 11527 NULL
115273+xfs_rtcheck_alloc_range_11553 xfs_rtcheck_alloc_range 0 11553 NULL
115274+radix_tree_extend_11555 radix_tree_extend 0 11555 NULL
109192+skb_cow_data_11565 skb_cow_data 0 11565 NULL 115275+skb_cow_data_11565 skb_cow_data 0 11565 NULL
109193+lpfc_idiag_ctlacc_write_11576 lpfc_idiag_ctlacc_write 3 11576 NULL 115276+lpfc_idiag_ctlacc_write_11576 lpfc_idiag_ctlacc_write 3 11576 NULL
109194+oprofilefs_ulong_to_user_11582 oprofilefs_ulong_to_user 3 11582 NULL 115277+oprofilefs_ulong_to_user_11582 oprofilefs_ulong_to_user 3 11582 NULL
@@ -109209,14 +115292,17 @@ index 0000000..9529806
109209+blk_rq_cur_bytes_11723 blk_rq_cur_bytes 0 11723 NULL 115292+blk_rq_cur_bytes_11723 blk_rq_cur_bytes 0 11723 NULL
109210+dm_bio_prison_create_11749 dm_bio_prison_create 1 11749 NULL 115293+dm_bio_prison_create_11749 dm_bio_prison_create 1 11749 NULL
109211+iwl_dbgfs_qos_read_11753 iwl_dbgfs_qos_read 3 11753 NULL 115294+iwl_dbgfs_qos_read_11753 iwl_dbgfs_qos_read 3 11753 NULL
115295+ieee80211_get_num_supported_channels_11768 ieee80211_get_num_supported_channels 0 11768 NULL
109212+ps_pspoll_timeouts_read_11776 ps_pspoll_timeouts_read 3 11776 NULL 115296+ps_pspoll_timeouts_read_11776 ps_pspoll_timeouts_read 3 11776 NULL
109213+btrfs_key_blockptr_11786 btrfs_key_blockptr 0 11786 NULL 115297+btrfs_key_blockptr_11786 btrfs_key_blockptr 0 11786 NULL
109214+pcpu_fc_alloc_11818 pcpu_fc_alloc 2 11818 NULL 115298+pcpu_fc_alloc_11818 pcpu_fc_alloc 2 11818 NULL
115299+xfs_ialloc_11819 xfs_ialloc 0 11819 NULL
109215+umc_device_register_11824 umc_device_register 0 11824 NULL 115300+umc_device_register_11824 umc_device_register 0 11824 NULL
109216+zerocopy_sg_from_iovec_11828 zerocopy_sg_from_iovec 3 11828 NULL 115301+zerocopy_sg_from_iovec_11828 zerocopy_sg_from_iovec 3 11828 NULL
109217+sctp_setsockopt_maxseg_11829 sctp_setsockopt_maxseg 3 11829 NULL 115302+sctp_setsockopt_maxseg_11829 sctp_setsockopt_maxseg 3 11829 NULL
109218+rts51x_read_status_11830 rts51x_read_status 4 11830 NULL 115303+rts51x_read_status_11830 rts51x_read_status 4 11830 NULL
109219+unix_stream_connect_11844 unix_stream_connect 3 11844 NULL 115304+unix_stream_connect_11844 unix_stream_connect 3 11844 NULL
115305+xfs_file_aio_write_checks_11851 xfs_file_aio_write_checks 0 11851 NULL
109220+ecryptfs_copy_filename_11868 ecryptfs_copy_filename 4 11868 NULL 115306+ecryptfs_copy_filename_11868 ecryptfs_copy_filename 4 11868 NULL
109221+ieee80211_rx_bss_info_11887 ieee80211_rx_bss_info 3 11887 NULL 115307+ieee80211_rx_bss_info_11887 ieee80211_rx_bss_info 3 11887 NULL
109222+mdc_rename_11899 mdc_rename 4-6 11899 NULL 115308+mdc_rename_11899 mdc_rename 4-6 11899 NULL
@@ -109235,6 +115321,7 @@ index 0000000..9529806
109235+ptc_proc_write_12076 ptc_proc_write 3 12076 NULL 115321+ptc_proc_write_12076 ptc_proc_write 3 12076 NULL
109236+batadv_tt_global_size_mod_12085 batadv_tt_global_size_mod 3 12085 NULL 115322+batadv_tt_global_size_mod_12085 batadv_tt_global_size_mod 3 12085 NULL
109237+rtw_malloc2d_12102 rtw_malloc2d 1-2-3 12102 NULL 115323+rtw_malloc2d_12102 rtw_malloc2d 1-2-3 12102 NULL
115324+gfs2_find_jhead_12117 gfs2_find_jhead 0 12117 NULL
109238+alloc_bulk_urbs_generic_12127 alloc_bulk_urbs_generic 5 12127 NULL 115325+alloc_bulk_urbs_generic_12127 alloc_bulk_urbs_generic 5 12127 NULL
109239+set_powered_12129 set_powered 4 12129 NULL 115326+set_powered_12129 set_powered 4 12129 NULL
109240+ramoops_init_prz_12134 ramoops_init_prz 5 12134 NULL 115327+ramoops_init_prz_12134 ramoops_init_prz 5 12134 NULL
@@ -109251,7 +115338,9 @@ index 0000000..9529806
109251+snd_pcm_kernel_ioctl_12219 snd_pcm_kernel_ioctl 0 12219 NULL 115338+snd_pcm_kernel_ioctl_12219 snd_pcm_kernel_ioctl 0 12219 NULL
109252+fuse_get_req_12221 fuse_get_req 2 12221 NULL nohasharray 115339+fuse_get_req_12221 fuse_get_req 2 12221 NULL nohasharray
109253+aat2870_reg_read_file_12221 aat2870_reg_read_file 3 12221 &fuse_get_req_12221 115340+aat2870_reg_read_file_12221 aat2870_reg_read_file 3 12221 &fuse_get_req_12221
115341+xfs_attr3_leaf_read_12222 xfs_attr3_leaf_read 0 12222 NULL
109254+__alloc_bootmem_low_nopanic_12235 __alloc_bootmem_low_nopanic 1 12235 NULL 115342+__alloc_bootmem_low_nopanic_12235 __alloc_bootmem_low_nopanic 1 12235 NULL
115343+usnic_ib_qp_grp_dump_rows_12239 usnic_ib_qp_grp_dump_rows 3 12239 NULL
109255+ib_uverbs_unmarshall_recv_12251 ib_uverbs_unmarshall_recv 5 12251 NULL 115344+ib_uverbs_unmarshall_recv_12251 ib_uverbs_unmarshall_recv 5 12251 NULL
109256+shash_compat_setkey_12267 shash_compat_setkey 3 12267 NULL 115345+shash_compat_setkey_12267 shash_compat_setkey 3 12267 NULL
109257+add_sctp_bind_addr_12269 add_sctp_bind_addr 3 12269 NULL 115346+add_sctp_bind_addr_12269 add_sctp_bind_addr 3 12269 NULL
@@ -109259,22 +115348,23 @@ index 0000000..9529806
109259+roundup_to_multiple_of_64_12288 roundup_to_multiple_of_64 0-1 12288 NULL nohasharray 115348+roundup_to_multiple_of_64_12288 roundup_to_multiple_of_64 0-1 12288 NULL nohasharray
109260+il_dbgfs_nvm_read_12288 il_dbgfs_nvm_read 3 12288 &roundup_to_multiple_of_64_12288 115349+il_dbgfs_nvm_read_12288 il_dbgfs_nvm_read 3 12288 &roundup_to_multiple_of_64_12288
109261+bt_sock_recvmsg_12316 bt_sock_recvmsg 4 12316 NULL 115350+bt_sock_recvmsg_12316 bt_sock_recvmsg 4 12316 NULL
115351+usnic_transport_sock_to_str_12322 usnic_transport_sock_to_str 2-0 12322 NULL
109262+pcbit_writecmd_12332 pcbit_writecmd 2 12332 NULL 115352+pcbit_writecmd_12332 pcbit_writecmd 2 12332 NULL
115353+xfs_bmap_last_extent_12335 xfs_bmap_last_extent 0 12335 NULL
109263+mptctl_ioctl_12355 mptctl_ioctl 2 12355 NULL 115354+mptctl_ioctl_12355 mptctl_ioctl 2 12355 NULL
109264+__nf_ct_ext_add_length_12364 __nf_ct_ext_add_length 3 12364 NULL 115355+__nf_ct_ext_add_length_12364 __nf_ct_ext_add_length 3 12364 NULL
109265+xfs_iext_inline_to_direct_12384 xfs_iext_inline_to_direct 2 12384 NULL 115356+xfs_iext_inline_to_direct_12384 xfs_iext_inline_to_direct 2 12384 NULL
109266+btrfs_file_extent_ram_bytes_12391 btrfs_file_extent_ram_bytes 0 12391 NULL nohasharray 115357+populate_dir_12391 populate_dir 0 12391 NULL nohasharray
109267+populate_dir_12391 populate_dir 0 12391 &btrfs_file_extent_ram_bytes_12391 nohasharray
109268+write_file_dump_12391 write_file_dump 3 12391 &populate_dir_12391 115358+write_file_dump_12391 write_file_dump 3 12391 &populate_dir_12391
109269+hbucket_elem_add_12416 hbucket_elem_add 3 12416 NULL 115359+hbucket_elem_add_12416 hbucket_elem_add 3 12416 NULL
109270+ieee80211_if_read_num_mcast_sta_12419 ieee80211_if_read_num_mcast_sta 3 12419 NULL 115360+ieee80211_if_read_num_mcast_sta_12419 ieee80211_if_read_num_mcast_sta 3 12419 NULL
109271+ptlrpc_set_wait_12426 ptlrpc_set_wait 0 12426 NULL
109272+cfs_array_alloc_12441 cfs_array_alloc 2 12441 NULL 115361+cfs_array_alloc_12441 cfs_array_alloc 2 12441 NULL
109273+skb_do_copy_data_nocache_12465 skb_do_copy_data_nocache 5 12465 NULL 115362+skb_do_copy_data_nocache_12465 skb_do_copy_data_nocache 5 12465 NULL
109274+x25_sendmsg_12487 x25_sendmsg 4 12487 NULL 115363+x25_sendmsg_12487 x25_sendmsg 4 12487 NULL
109275+fnic_trace_ctrl_read_12497 fnic_trace_ctrl_read 3 12497 NULL 115364+fnic_trace_ctrl_read_12497 fnic_trace_ctrl_read 3 12497 NULL
115365+__ceph_osdc_start_request_12502 __ceph_osdc_start_request 0 12502 NULL
109276+qib_alloc_fast_reg_mr_12526 qib_alloc_fast_reg_mr 2 12526 NULL 115366+qib_alloc_fast_reg_mr_12526 qib_alloc_fast_reg_mr 2 12526 NULL
109277+xfs_get_extsz_hint_12531 xfs_get_extsz_hint 0 12531 NULL 115367+write_inode_now_12565 write_inode_now 0 12565 NULL
109278+hvc_alloc_12579 hvc_alloc 4 12579 NULL 115368+hvc_alloc_12579 hvc_alloc 4 12579 NULL
109279+pcpu_extend_area_map_12589 pcpu_extend_area_map 2 12589 NULL 115369+pcpu_extend_area_map_12589 pcpu_extend_area_map 2 12589 NULL
109280+tlbflush_write_file_12598 tlbflush_write_file 3 12598 NULL 115370+tlbflush_write_file_12598 tlbflush_write_file 3 12598 NULL
@@ -109286,10 +115376,8 @@ index 0000000..9529806
109286+nr_recvmsg_12649 nr_recvmsg 4 12649 NULL 115376+nr_recvmsg_12649 nr_recvmsg 4 12649 NULL
109287+rtw_android_get_link_speed_12655 rtw_android_get_link_speed 0 12655 NULL 115377+rtw_android_get_link_speed_12655 rtw_android_get_link_speed 0 12655 NULL
109288+ocfs2_read_block_12659 ocfs2_read_block 0 12659 NULL 115378+ocfs2_read_block_12659 ocfs2_read_block 0 12659 NULL
109289+lustre_pack_request_v2_12665 lustre_pack_request_v2 0 12665 NULL
109290+sel_read_class_12669 sel_read_class 3 12669 NULL nohasharray 115379+sel_read_class_12669 sel_read_class 3 12669 NULL nohasharray
109291+sparse_mem_maps_populate_node_12669 sparse_mem_maps_populate_node 4 12669 &sel_read_class_12669 115380+sparse_mem_maps_populate_node_12669 sparse_mem_maps_populate_node 4 12669 &sel_read_class_12669
109292+ext4_writepage_trans_blocks_12674 ext4_writepage_trans_blocks 0 12674 NULL
109293+iwl_dbgfs_calib_disabled_write_12707 iwl_dbgfs_calib_disabled_write 3 12707 NULL 115381+iwl_dbgfs_calib_disabled_write_12707 iwl_dbgfs_calib_disabled_write 3 12707 NULL
109294+ieee80211_if_read_num_buffered_multicast_12716 ieee80211_if_read_num_buffered_multicast 3 12716 NULL 115382+ieee80211_if_read_num_buffered_multicast_12716 ieee80211_if_read_num_buffered_multicast 3 12716 NULL
109295+ivtv_write_12721 ivtv_write 3 12721 NULL 115383+ivtv_write_12721 ivtv_write 3 12721 NULL
@@ -109302,9 +115390,11 @@ index 0000000..9529806
109302+xfs_inumbers_fmt_12817 xfs_inumbers_fmt 3 12817 NULL 115390+xfs_inumbers_fmt_12817 xfs_inumbers_fmt 3 12817 NULL
109303+readq_12825 readq 0 12825 NULL 115391+readq_12825 readq 0 12825 NULL
109304+SyS_add_key_12834 SyS_add_key 4 12834 NULL 115392+SyS_add_key_12834 SyS_add_key 4 12834 NULL
115393+gfs2_log_reserve_12835 gfs2_log_reserve 0 12835 NULL
109305+TSS_authhmac_12839 TSS_authhmac 3 12839 NULL 115394+TSS_authhmac_12839 TSS_authhmac 3 12839 NULL
109306+spidev_sync_12842 spidev_sync 0 12842 NULL 115395+spidev_sync_12842 spidev_sync 0 12842 NULL
109307+spidev_ioctl_12846 spidev_ioctl 2 12846 NULL 115396+spidev_ioctl_12846 spidev_ioctl 2 12846 NULL
115397+xfs_rtallocate_extent_exact_12865 xfs_rtallocate_extent_exact 0 12865 NULL
109308+ath9k_dump_4k_modal_eeprom_12883 ath9k_dump_4k_modal_eeprom 3-2 12883 NULL 115398+ath9k_dump_4k_modal_eeprom_12883 ath9k_dump_4k_modal_eeprom 3-2 12883 NULL
109309+get_leb_cnt_12892 get_leb_cnt 0-2 12892 NULL 115399+get_leb_cnt_12892 get_leb_cnt 0-2 12892 NULL
109310+get_virtual_node_size_12908 get_virtual_node_size 0 12908 NULL 115400+get_virtual_node_size_12908 get_virtual_node_size 0 12908 NULL
@@ -109314,6 +115404,7 @@ index 0000000..9529806
109314+raid56_parity_recover_12987 raid56_parity_recover 5 12987 NULL 115404+raid56_parity_recover_12987 raid56_parity_recover 5 12987 NULL
109315+TransmitTcb_12989 TransmitTcb 4 12989 NULL 115405+TransmitTcb_12989 TransmitTcb 4 12989 NULL
109316+sk_peek_offset_12991 sk_peek_offset 0 12991 NULL 115406+sk_peek_offset_12991 sk_peek_offset 0 12991 NULL
115407+bset_prev_bytes_13020 bset_prev_bytes 0 13020 NULL
109317+subsystem_filter_write_13022 subsystem_filter_write 3 13022 NULL 115408+subsystem_filter_write_13022 subsystem_filter_write 3 13022 NULL
109318+generic_segment_checks_13041 generic_segment_checks 0 13041 NULL 115409+generic_segment_checks_13041 generic_segment_checks 0 13041 NULL
109319+ocfs2_write_begin_13045 ocfs2_write_begin 3-4 13045 NULL 115410+ocfs2_write_begin_13045 ocfs2_write_begin 3-4 13045 NULL
@@ -109322,11 +115413,9 @@ index 0000000..9529806
109322+biovec_create_pool_13079 biovec_create_pool 2 13079 NULL 115413+biovec_create_pool_13079 biovec_create_pool 2 13079 NULL
109323+xattr_getsecurity_13090 xattr_getsecurity 0 13090 NULL 115414+xattr_getsecurity_13090 xattr_getsecurity 0 13090 NULL
109324+ttm_dma_pool_alloc_new_pages_13105 ttm_dma_pool_alloc_new_pages 3 13105 NULL 115415+ttm_dma_pool_alloc_new_pages_13105 ttm_dma_pool_alloc_new_pages 3 13105 NULL
109325+SyS_msgrcv_13109 SyS_msgrcv 3 13109 NULL
109326+snd_rme96_playback_copy_13111 snd_rme96_playback_copy 5 13111 NULL 115416+snd_rme96_playback_copy_13111 snd_rme96_playback_copy 5 13111 NULL
109327+bfad_debugfs_read_13119 bfad_debugfs_read 3 13119 NULL 115417+bfad_debugfs_read_13119 bfad_debugfs_read 3 13119 NULL
109328+blk_update_request_13146 blk_update_request 3 13146 NULL 115418+blk_update_request_13146 blk_update_request 3 13146 NULL
109329+ocfs2_quota_trans_credits_13150 ocfs2_quota_trans_credits 0 13150 NULL
109330+caif_stream_recvmsg_13173 caif_stream_recvmsg 4 13173 NULL 115419+caif_stream_recvmsg_13173 caif_stream_recvmsg 4 13173 NULL
109331+pwr_disable_ps_read_13176 pwr_disable_ps_read 3 13176 NULL 115420+pwr_disable_ps_read_13176 pwr_disable_ps_read 3 13176 NULL
109332+ucs2_strlen_13178 ucs2_strlen 0 13178 NULL 115421+ucs2_strlen_13178 ucs2_strlen 0 13178 NULL
@@ -109337,18 +115426,21 @@ index 0000000..9529806
109337+mmc_ext_csd_read_13205 mmc_ext_csd_read 3 13205 NULL 115426+mmc_ext_csd_read_13205 mmc_ext_csd_read 3 13205 NULL
109338+svm_msrpm_offset_13220 svm_msrpm_offset 0-1 13220 NULL 115427+svm_msrpm_offset_13220 svm_msrpm_offset 0-1 13220 NULL
109339+fnic_trace_ctrl_write_13229 fnic_trace_ctrl_write 3 13229 NULL 115428+fnic_trace_ctrl_write_13229 fnic_trace_ctrl_write 3 13229 NULL
115429+_iwl_dbgfs_disable_power_off_write_13243 _iwl_dbgfs_disable_power_off_write 3 13243 NULL
109340+asix_read_cmd_13245 asix_read_cmd 5 13245 NULL 115430+asix_read_cmd_13245 asix_read_cmd 5 13245 NULL
109341+init_tid_tabs_13252 init_tid_tabs 2-3-4 13252 NULL 115431+init_tid_tabs_13252 init_tid_tabs 2-3-4 13252 NULL
109342+bio_integrity_trim_13259 bio_integrity_trim 3 13259 NULL 115432+bio_integrity_trim_13259 bio_integrity_trim 3-2 13259 NULL
109343+simple_attr_write_13260 simple_attr_write 3 13260 NULL 115433+simple_attr_write_13260 simple_attr_write 3 13260 NULL
109344+pmcraid_notify_aen_13274 pmcraid_notify_aen 3 13274 NULL 115434+pmcraid_notify_aen_13274 pmcraid_notify_aen 3 13274 NULL
109345+il4965_stats_flag_13281 il4965_stats_flag 3-0 13281 NULL 115435+il4965_stats_flag_13281 il4965_stats_flag 0-3 13281 NULL
109346+lpfc_idiag_mbxacc_get_setup_13282 lpfc_idiag_mbxacc_get_setup 0 13282 NULL 115436+lpfc_idiag_mbxacc_get_setup_13282 lpfc_idiag_mbxacc_get_setup 0 13282 NULL
109347+sd_major_13294 sd_major 0-1 13294 NULL 115437+sd_major_13294 sd_major 0-1 13294 NULL
109348+module_param_sysfs_setup_13296 module_param_sysfs_setup 0 13296 NULL 115438+module_param_sysfs_setup_13296 module_param_sysfs_setup 0 13296 NULL
109349+__clone_and_map_data_bio_13334 __clone_and_map_data_bio 4-8 13334 NULL 115439+read_file_phy_err_13318 read_file_phy_err 3 13318 NULL
109350+kvm_read_nested_guest_page_13337 kvm_read_nested_guest_page 5 13337 NULL 115440+kvm_read_nested_guest_page_13337 kvm_read_nested_guest_page 5 13337 NULL
115441+round_event_name_len_13348 round_event_name_len 0 13348 NULL
109351+hscx_empty_fifo_13360 hscx_empty_fifo 2 13360 NULL 115442+hscx_empty_fifo_13360 hscx_empty_fifo 2 13360 NULL
115443+xfs_btree_delrec_13364 xfs_btree_delrec 0 13364 NULL
109352+iso_sched_alloc_13377 iso_sched_alloc 1 13377 NULL nohasharray 115444+iso_sched_alloc_13377 iso_sched_alloc 1 13377 NULL nohasharray
109353+wep_key_not_found_read_13377 wep_key_not_found_read 3 13377 &iso_sched_alloc_13377 115445+wep_key_not_found_read_13377 wep_key_not_found_read 3 13377 &iso_sched_alloc_13377
109354+ext4_meta_trans_blocks_13380 ext4_meta_trans_blocks 0-3-2 13380 NULL 115446+ext4_meta_trans_blocks_13380 ext4_meta_trans_blocks 0-3-2 13380 NULL
@@ -109360,7 +115452,6 @@ index 0000000..9529806
109360+sb_init_dio_done_wq_13482 sb_init_dio_done_wq 0 13482 NULL 115452+sb_init_dio_done_wq_13482 sb_init_dio_done_wq 0 13482 NULL
109361+data_read_13494 data_read 3 13494 NULL 115453+data_read_13494 data_read 3 13494 NULL
109362+ioat_chansts_32_13506 ioat_chansts_32 0 13506 NULL 115454+ioat_chansts_32_13506 ioat_chansts_32 0 13506 NULL
109363+ocfs2_align_bytes_to_blocks_13512 ocfs2_align_bytes_to_blocks 0-2 13512 NULL
109364+core_status_13515 core_status 4 13515 NULL 115455+core_status_13515 core_status 4 13515 NULL
109365+smk_write_mapped_13519 smk_write_mapped 3 13519 NULL 115456+smk_write_mapped_13519 smk_write_mapped 3 13519 NULL
109366+bm_init_13529 bm_init 2 13529 NULL 115457+bm_init_13529 bm_init 2 13529 NULL
@@ -109371,12 +115462,12 @@ index 0000000..9529806
109371+cache_write_13589 cache_write 3 13589 NULL 115462+cache_write_13589 cache_write 3 13589 NULL
109372+Rd_Indx_13602 Rd_Indx 3-2 13602 NULL 115463+Rd_Indx_13602 Rd_Indx 3-2 13602 NULL
109373+wm8994_bulk_write_13615 wm8994_bulk_write 2-3 13615 NULL 115464+wm8994_bulk_write_13615 wm8994_bulk_write 2-3 13615 NULL
115465+__ntfs_grab_cache_pages_13617 __ntfs_grab_cache_pages 0 13617 NULL
109374+pmcraid_get_minor_13619 pmcraid_get_minor 0 13619 NULL 115466+pmcraid_get_minor_13619 pmcraid_get_minor 0 13619 NULL
109375+packet_snd_13634 packet_snd 3 13634 NULL 115467+packet_snd_13634 packet_snd 3 13634 NULL
109376+blk_msg_write_13655 blk_msg_write 3 13655 NULL 115468+blk_msg_write_13655 blk_msg_write 3 13655 NULL
109377+cache_downcall_13666 cache_downcall 3 13666 NULL 115469+cache_downcall_13666 cache_downcall 3 13666 NULL
109378+ext3_xattr_list_entries_13682 ext3_xattr_list_entries 0 13682 NULL 115470+ext3_xattr_list_entries_13682 ext3_xattr_list_entries 0 13682 NULL
109379+nv94_aux_13689 nv94_aux 2-5 13689 NULL
109380+usb_get_string_13693 usb_get_string 0 13693 NULL 115471+usb_get_string_13693 usb_get_string 0 13693 NULL
109381+fw_iso_buffer_alloc_13704 fw_iso_buffer_alloc 2 13704 NULL 115472+fw_iso_buffer_alloc_13704 fw_iso_buffer_alloc 2 13704 NULL
109382+audit_unpack_string_13748 audit_unpack_string 3 13748 NULL 115473+audit_unpack_string_13748 audit_unpack_string 3 13748 NULL
@@ -109398,20 +115489,22 @@ index 0000000..9529806
109398+ocfs2_xa_value_truncate_13940 ocfs2_xa_value_truncate 2 13940 &ieee80211_if_read_dot11MeshForwarding_13940 115489+ocfs2_xa_value_truncate_13940 ocfs2_xa_value_truncate 2 13940 &ieee80211_if_read_dot11MeshForwarding_13940
109399+iwl_dbgfs_protection_mode_read_13943 iwl_dbgfs_protection_mode_read 3 13943 NULL 115490+iwl_dbgfs_protection_mode_read_13943 iwl_dbgfs_protection_mode_read 3 13943 NULL
109400+ieee80211_if_read_min_discovery_timeout_13946 ieee80211_if_read_min_discovery_timeout 3 13946 NULL 115491+ieee80211_if_read_min_discovery_timeout_13946 ieee80211_if_read_min_discovery_timeout 3 13946 NULL
109401+lpfc_idiag_queacc_read_13950 lpfc_idiag_queacc_read 3 13950 NULL 115492+lpfc_idiag_queacc_read_13950 lpfc_idiag_queacc_read 3 13950 NULL nohasharray
115493+pagecache_write_end_13950 pagecache_write_end 0 13950 &lpfc_idiag_queacc_read_13950
109402+osc_grant_shrink_interval_seq_write_13952 osc_grant_shrink_interval_seq_write 3 13952 NULL 115494+osc_grant_shrink_interval_seq_write_13952 osc_grant_shrink_interval_seq_write 3 13952 NULL
109403+ocfs2_refresh_slot_info_13957 ocfs2_refresh_slot_info 0 13957 NULL 115495+ocfs2_refresh_slot_info_13957 ocfs2_refresh_slot_info 0 13957 NULL
109404+snd_pcm_plug_slave_size_13967 snd_pcm_plug_slave_size 0-2 13967 NULL 115496+snd_pcm_plug_slave_size_13967 snd_pcm_plug_slave_size 0-2 13967 NULL
109405+qcam_read_13977 qcam_read 3 13977 NULL 115497+qcam_read_13977 qcam_read 3 13977 NULL
109406+dsp_read_13980 dsp_read 2 13980 NULL 115498+dsp_read_13980 dsp_read 2 13980 NULL
109407+dvb_demux_read_13981 dvb_demux_read 3 13981 NULL 115499+dvb_demux_read_13981 dvb_demux_read 3 13981 NULL
109408+create_files_14003 create_files 0 14003 NULL
109409+sddr09_write_data_14014 sddr09_write_data 3 14014 NULL 115500+sddr09_write_data_14014 sddr09_write_data 3 14014 NULL
109410+btrfs_get_blocks_direct_14016 btrfs_get_blocks_direct 2 14016 NULL 115501+btrfs_get_blocks_direct_14016 btrfs_get_blocks_direct 2 14016 NULL
109411+dmi_format_ids_14018 dmi_format_ids 2 14018 NULL 115502+dmi_format_ids_14018 dmi_format_ids 2 14018 NULL
109412+iscsi_create_flashnode_conn_14022 iscsi_create_flashnode_conn 4 14022 NULL 115503+iscsi_create_flashnode_conn_14022 iscsi_create_flashnode_conn 4 14022 NULL
115504+pci_add_ext_cap_save_buffer_14032 pci_add_ext_cap_save_buffer 3 14032 NULL
109413+dvb_usercopy_14036 dvb_usercopy 2 14036 NULL 115505+dvb_usercopy_14036 dvb_usercopy 2 14036 NULL
109414+read_def_modal_eeprom_14041 read_def_modal_eeprom 3 14041 NULL 115506+read_def_modal_eeprom_14041 read_def_modal_eeprom 3 14041 NULL
115507+xfs_bmap_alloc_14044 xfs_bmap_alloc 0 14044 NULL
109415+ieee80211_if_fmt_aid_14055 ieee80211_if_fmt_aid 3 14055 NULL 115508+ieee80211_if_fmt_aid_14055 ieee80211_if_fmt_aid 3 14055 NULL
109416+ovs_nla_alloc_flow_actions_14056 ovs_nla_alloc_flow_actions 1 14056 NULL 115509+ovs_nla_alloc_flow_actions_14056 ovs_nla_alloc_flow_actions 1 14056 NULL
109417+sta_agg_status_read_14058 sta_agg_status_read 3 14058 NULL 115510+sta_agg_status_read_14058 sta_agg_status_read 3 14058 NULL
@@ -109422,6 +115515,7 @@ index 0000000..9529806
109422+isku_sysfs_read_light_14140 isku_sysfs_read_light 6 14140 NULL 115515+isku_sysfs_read_light_14140 isku_sysfs_read_light 6 14140 NULL
109423+em_canid_change_14150 em_canid_change 3 14150 NULL 115516+em_canid_change_14150 em_canid_change 3 14150 NULL
109424+gsm_dlci_data_14155 gsm_dlci_data 3 14155 NULL 115517+gsm_dlci_data_14155 gsm_dlci_data 3 14155 NULL
115518+midi_alloc_ep_req_14159 midi_alloc_ep_req 2 14159 NULL
109425+print_input_mask_14168 print_input_mask 3-0 14168 NULL 115519+print_input_mask_14168 print_input_mask 3-0 14168 NULL
109426+ocfs2_xattr_value_truncate_14183 ocfs2_xattr_value_truncate 3 14183 NULL 115520+ocfs2_xattr_value_truncate_14183 ocfs2_xattr_value_truncate 3 14183 NULL
109427+datafab_read_data_14186 datafab_read_data 4 14186 NULL 115521+datafab_read_data_14186 datafab_read_data 4 14186 NULL
@@ -109430,19 +115524,24 @@ index 0000000..9529806
109430+ath6kl_regread_write_14220 ath6kl_regread_write 3 14220 NULL 115524+ath6kl_regread_write_14220 ath6kl_regread_write 3 14220 NULL
109431+ieee80211_if_write_uapsd_max_sp_len_14233 ieee80211_if_write_uapsd_max_sp_len 3 14233 NULL 115525+ieee80211_if_write_uapsd_max_sp_len_14233 ieee80211_if_write_uapsd_max_sp_len 3 14233 NULL
109432+dma_declare_coherent_memory_14244 dma_declare_coherent_memory 4 14244 NULL 115526+dma_declare_coherent_memory_14244 dma_declare_coherent_memory 4 14244 NULL
115527+btrfs_token_file_extent_ram_bytes_14247 btrfs_token_file_extent_ram_bytes 0 14247 NULL
109433+ath6kl_connect_event_14267 ath6kl_connect_event 7-8-9 14267 NULL 115528+ath6kl_connect_event_14267 ath6kl_connect_event 7-8-9 14267 NULL
109434+rr_status_14293 rr_status 5 14293 NULL 115529+rr_status_14293 rr_status 5 14293 NULL
109435+read_default_ldt_14302 read_default_ldt 2 14302 NULL 115530+read_default_ldt_14302 read_default_ldt 2 14302 NULL
115531+update_rgrp_lvb_14303 update_rgrp_lvb 0 14303 NULL
115532+xfs_qm_qino_alloc_14309 xfs_qm_qino_alloc 0 14309 NULL
109436+oo_objects_14319 oo_objects 0 14319 NULL 115533+oo_objects_14319 oo_objects 0 14319 NULL
109437+ll_get_user_pages_14328 ll_get_user_pages 3-2-0 14328 NULL 115534+ll_get_user_pages_14328 ll_get_user_pages 3-2-0 14328 NULL
109438+p9_client_zc_rpc_14345 p9_client_zc_rpc 7 14345 NULL 115535+p9_client_zc_rpc_14345 p9_client_zc_rpc 7 14345 NULL
109439+alloc_tx_struct_14349 alloc_tx_struct 1 14349 NULL 115536+alloc_tx_struct_14349 alloc_tx_struct 1 14349 NULL
109440+hash_ipportnet4_expire_14354 hash_ipportnet4_expire 4 14354 NULL 115537+hash_ipportnet4_expire_14354 hash_ipportnet4_expire 4 14354 NULL
109441+snd_pcm_lib_readv_14363 snd_pcm_lib_readv 0-3 14363 NULL 115538+snd_pcm_lib_readv_14363 snd_pcm_lib_readv 0-3 14363 NULL
115539+lowpan_read_14369 lowpan_read 3 14369 NULL
109442+ath6kl_regdump_read_14393 ath6kl_regdump_read 3 14393 NULL 115540+ath6kl_regdump_read_14393 ath6kl_regdump_read 3 14393 NULL
109443+smk_write_onlycap_14400 smk_write_onlycap 3 14400 NULL 115541+smk_write_onlycap_14400 smk_write_onlycap 3 14400 NULL
109444+mtd_concat_create_14416 mtd_concat_create 2 14416 NULL 115542+mtd_concat_create_14416 mtd_concat_create 2 14416 NULL
109445+get_kcore_size_14425 get_kcore_size 0 14425 NULL 115543+get_kcore_size_14425 get_kcore_size 0 14425 NULL
115544+_iwl_dbgfs_sram_write_14439 _iwl_dbgfs_sram_write 3 14439 NULL
109446+block_size_14443 block_size 0 14443 NULL 115545+block_size_14443 block_size 0 14443 NULL
109447+lmv_user_md_size_14456 lmv_user_md_size 0-1 14456 NULL 115546+lmv_user_md_size_14456 lmv_user_md_size 0-1 14456 NULL
109448+snd_emu10k1_proc_spdif_status_14457 snd_emu10k1_proc_spdif_status 4-5 14457 NULL 115547+snd_emu10k1_proc_spdif_status_14457 snd_emu10k1_proc_spdif_status 4-5 14457 NULL
@@ -109451,16 +115550,20 @@ index 0000000..9529806
109451+dma_transfer_size_14473 dma_transfer_size 0 14473 NULL 115550+dma_transfer_size_14473 dma_transfer_size 0 14473 NULL
109452+udplite_getfrag_14479 udplite_getfrag 3-4 14479 NULL 115551+udplite_getfrag_14479 udplite_getfrag 3-4 14479 NULL
109453+ieee80211_if_read_dot11MeshGateAnnouncementProtocol_14486 ieee80211_if_read_dot11MeshGateAnnouncementProtocol 3 14486 NULL 115552+ieee80211_if_read_dot11MeshGateAnnouncementProtocol_14486 ieee80211_if_read_dot11MeshGateAnnouncementProtocol 3 14486 NULL
115553+split_state_14491 split_state 0 14491 NULL
109454+ocfs2_debug_read_14507 ocfs2_debug_read 3 14507 NULL 115554+ocfs2_debug_read_14507 ocfs2_debug_read 3 14507 NULL
109455+ep0_write_14536 ep0_write 3 14536 NULL nohasharray 115555+ep0_write_14536 ep0_write 3 14536 NULL nohasharray
109456+dataflash_read_user_otp_14536 dataflash_read_user_otp 3-2 14536 &ep0_write_14536 115556+dataflash_read_user_otp_14536 dataflash_read_user_otp 3-2 14536 &ep0_write_14536
109457+picolcd_debug_eeprom_read_14549 picolcd_debug_eeprom_read 3 14549 NULL 115557+picolcd_debug_eeprom_read_14549 picolcd_debug_eeprom_read 3 14549 NULL
109458+qp_host_alloc_queue_14566 qp_host_alloc_queue 1 14566 NULL 115558+qp_host_alloc_queue_14566 qp_host_alloc_queue 1 14566 NULL
109459+SyS_setdomainname_14569 SyS_setdomainname 2 14569 NULL 115559+SyS_setdomainname_14569 SyS_setdomainname 2 14569 NULL
115560+stuffed_readpage_14581 stuffed_readpage 0 14581 NULL
109460+idmap_pipe_downcall_14591 idmap_pipe_downcall 3 14591 NULL 115561+idmap_pipe_downcall_14591 idmap_pipe_downcall 3 14591 NULL
109461+ceph_osdc_alloc_request_14597 ceph_osdc_alloc_request 3 14597 NULL 115562+ceph_osdc_alloc_request_14597 ceph_osdc_alloc_request 3 14597 NULL
109462+dbJoin_14644 dbJoin 0 14644 NULL 115563+dbJoin_14644 dbJoin 0 14644 NULL
109463+profile_replace_14652 profile_replace 3 14652 NULL 115564+profile_replace_14652 profile_replace 3 14652 NULL
115565+usnic_vnic_dump_14662 usnic_vnic_dump 3 14662 NULL
115566+add_to_page_cache_locked_14668 add_to_page_cache_locked 0 14668 NULL
109464+min_bytes_needed_14675 min_bytes_needed 0 14675 NULL 115567+min_bytes_needed_14675 min_bytes_needed 0 14675 NULL
109465+nvme_trans_log_info_exceptions_14677 nvme_trans_log_info_exceptions 3 14677 NULL 115568+nvme_trans_log_info_exceptions_14677 nvme_trans_log_info_exceptions 3 14677 NULL
109466+pipeline_enc_tx_stat_fifo_int_read_14680 pipeline_enc_tx_stat_fifo_int_read 3 14680 NULL 115569+pipeline_enc_tx_stat_fifo_int_read_14680 pipeline_enc_tx_stat_fifo_int_read 3 14680 NULL
@@ -109483,10 +115586,12 @@ index 0000000..9529806
109483+__kfifo_in_14797 __kfifo_in 3-0 14797 NULL 115586+__kfifo_in_14797 __kfifo_in 3-0 14797 NULL
109484+hpet_readl_14801 hpet_readl 0 14801 NULL nohasharray 115587+hpet_readl_14801 hpet_readl 0 14801 NULL nohasharray
109485+snd_als300_gcr_read_14801 snd_als300_gcr_read 0 14801 &hpet_readl_14801 115588+snd_als300_gcr_read_14801 snd_als300_gcr_read 0 14801 &hpet_readl_14801
109486+do_tune_cpucache_14828 do_tune_cpucache 2 14828 NULL 115589+security_inode_rename_14805 security_inode_rename 0 14805 NULL
115590+xfs_btree_kill_iroot_14824 xfs_btree_kill_iroot 0 14824 NULL
109487+mrp_attr_create_14853 mrp_attr_create 3 14853 NULL 115591+mrp_attr_create_14853 mrp_attr_create 3 14853 NULL
109488+lcd_write_14857 lcd_write 3 14857 NULL 115592+lcd_write_14857 lcd_write 3 14857 NULL
109489+get_user_cpu_mask_14861 get_user_cpu_mask 2 14861 NULL 115593+get_user_cpu_mask_14861 get_user_cpu_mask 2 14861 NULL
115594+xfs_bmapi_convert_unwritten_14886 xfs_bmapi_convert_unwritten 0 14886 NULL
109490+gmux_index_read8_14890 gmux_index_read8 0 14890 NULL 115595+gmux_index_read8_14890 gmux_index_read8 0 14890 NULL
109491+acpi_os_allocate_14892 acpi_os_allocate 1 14892 NULL 115596+acpi_os_allocate_14892 acpi_os_allocate 1 14892 NULL
109492+SYSC_readv_14901 SYSC_readv 3 14901 NULL 115597+SYSC_readv_14901 SYSC_readv 3 14901 NULL
@@ -109499,20 +115604,19 @@ index 0000000..9529806
109499+mce_flush_rx_buffer_14976 mce_flush_rx_buffer 2 14976 NULL 115604+mce_flush_rx_buffer_14976 mce_flush_rx_buffer 2 14976 NULL
109500+setkey_14987 setkey 3 14987 NULL nohasharray 115605+setkey_14987 setkey 3 14987 NULL nohasharray
109501+gpio_twl4030_write_14987 gpio_twl4030_write 1 14987 &setkey_14987 115606+gpio_twl4030_write_14987 gpio_twl4030_write 1 14987 &setkey_14987
109502+xfs_dinode_size_14996 xfs_dinode_size 0 14996 NULL
109503+blk_integrity_tuple_size_15027 blk_integrity_tuple_size 0 15027 NULL 115607+blk_integrity_tuple_size_15027 blk_integrity_tuple_size 0 15027 NULL
115608+read_file_node_aggr_15040 read_file_node_aggr 3 15040 NULL
109504+cld_pipe_downcall_15058 cld_pipe_downcall 3 15058 NULL 115609+cld_pipe_downcall_15058 cld_pipe_downcall 3 15058 NULL
109505+ieee80211_if_read_uapsd_max_sp_len_15067 ieee80211_if_read_uapsd_max_sp_len 3 15067 NULL 115610+ieee80211_if_read_uapsd_max_sp_len_15067 ieee80211_if_read_uapsd_max_sp_len 3 15067 NULL
109506+nfs4_write_cached_acl_15070 nfs4_write_cached_acl 4 15070 NULL 115611+nfs4_write_cached_acl_15070 nfs4_write_cached_acl 4 15070 NULL
109507+ntfs_copy_from_user_15072 ntfs_copy_from_user 3-5-0 15072 NULL 115612+ntfs_copy_from_user_15072 ntfs_copy_from_user 3-5-0 15072 NULL
109508+pppoe_recvmsg_15073 pppoe_recvmsg 4 15073 NULL 115613+pppoe_recvmsg_15073 pppoe_recvmsg 4 15073 NULL
109509+ceph_calc_ceph_pg_15075 ceph_calc_ceph_pg 0 15075 NULL
109510+smscore_load_firmware_family2_15086 smscore_load_firmware_family2 3 15086 NULL 115614+smscore_load_firmware_family2_15086 smscore_load_firmware_family2 3 15086 NULL
109511+compat_SyS_pwritev_15118 compat_SyS_pwritev 3 15118 NULL 115615+xfs_btree_insrec_15090 xfs_btree_insrec 0 15090 NULL
115616+btrfs_readpage_15094 btrfs_readpage 0 15094 NULL
109512+hex_dump_to_buffer_15121 hex_dump_to_buffer 6 15121 NULL 115617+hex_dump_to_buffer_15121 hex_dump_to_buffer 6 15121 NULL
109513+start_port_15124 start_port 0 15124 NULL 115618+start_port_15124 start_port 0 15124 NULL
109514+ipwireless_ppp_mru_15153 ipwireless_ppp_mru 0 15153 NULL 115619+ipwireless_ppp_mru_15153 ipwireless_ppp_mru 0 15153 NULL
109515+iwl_dbgfs_sta_drain_write_15167 iwl_dbgfs_sta_drain_write 3 15167 NULL
109516+SYSC_setdomainname_15180 SYSC_setdomainname 2 15180 NULL 115620+SYSC_setdomainname_15180 SYSC_setdomainname 2 15180 NULL
109517+iscsi_create_endpoint_15193 iscsi_create_endpoint 1 15193 NULL 115621+iscsi_create_endpoint_15193 iscsi_create_endpoint 1 15193 NULL
109518+mtt_alloc_res_15211 mtt_alloc_res 5 15211 NULL 115622+mtt_alloc_res_15211 mtt_alloc_res 5 15211 NULL
@@ -109522,7 +115626,6 @@ index 0000000..9529806
109522+simple_strtol_15273 simple_strtol 0 15273 NULL 115626+simple_strtol_15273 simple_strtol 0 15273 NULL
109523+fw_realloc_buffer_15280 fw_realloc_buffer 2 15280 NULL 115627+fw_realloc_buffer_15280 fw_realloc_buffer 2 15280 NULL
109524+ocfs2_read_refcount_block_15305 ocfs2_read_refcount_block 0 15305 NULL 115628+ocfs2_read_refcount_block_15305 ocfs2_read_refcount_block 0 15305 NULL
109525+xlog_ticket_alloc_15335 xlog_ticket_alloc 2 15335 NULL
109526+kovaplus_sysfs_read_15337 kovaplus_sysfs_read 6 15337 NULL 115629+kovaplus_sysfs_read_15337 kovaplus_sysfs_read 6 15337 NULL
109527+ioread16_15342 ioread16 0 15342 NULL 115630+ioread16_15342 ioread16 0 15342 NULL
109528+ept_prefetch_gpte_15348 ept_prefetch_gpte 4 15348 NULL 115631+ept_prefetch_gpte_15348 ept_prefetch_gpte 4 15348 NULL
@@ -109553,28 +115656,27 @@ index 0000000..9529806
109553+pipeline_hs_tx_stat_fifo_int_read_15642 pipeline_hs_tx_stat_fifo_int_read 3 15642 &sk_memory_allocated_add_15642 115656+pipeline_hs_tx_stat_fifo_int_read_15642 pipeline_hs_tx_stat_fifo_int_read 3 15642 &sk_memory_allocated_add_15642
109554+joydev_handle_JSIOCSBTNMAP_15643 joydev_handle_JSIOCSBTNMAP 3 15643 NULL 115657+joydev_handle_JSIOCSBTNMAP_15643 joydev_handle_JSIOCSBTNMAP 3 15643 NULL
109555+fs_path_add_15648 fs_path_add 3 15648 NULL 115658+fs_path_add_15648 fs_path_add 3 15648 NULL
115659+__do_readpage_15652 __do_readpage 0 15652 NULL
109556+xsd_read_15653 xsd_read 3 15653 NULL 115660+xsd_read_15653 xsd_read 3 15653 NULL
109557+unix_bind_15668 unix_bind 3 15668 NULL 115661+unix_bind_15668 unix_bind 3 15668 NULL
109558+dm_read_15674 dm_read 3 15674 NULL nohasharray 115662+dm_read_15674 dm_read 3 15674 NULL nohasharray
109559+SyS_connect_15674 SyS_connect 3 15674 &dm_read_15674 115663+SyS_connect_15674 SyS_connect 3 15674 &dm_read_15674
109560+tracing_snapshot_write_15719 tracing_snapshot_write 3 15719 NULL 115664+tracing_snapshot_write_15719 tracing_snapshot_write 3 15719 NULL
109561+HiSax_readstatus_15752 HiSax_readstatus 2 15752 NULL 115665+HiSax_readstatus_15752 HiSax_readstatus 2 15752 NULL
109562+bio_map_15794 bio_map 3-0 15794 NULL
109563+smk_read_direct_15803 smk_read_direct 3 15803 NULL 115666+smk_read_direct_15803 smk_read_direct 3 15803 NULL
109564+nameseq_list_15817 nameseq_list 3-0 15817 NULL nohasharray 115667+nameseq_list_15817 nameseq_list 3-0 15817 NULL nohasharray
109565+gnttab_expand_15817 gnttab_expand 1 15817 &nameseq_list_15817 115668+gnttab_expand_15817 gnttab_expand 1 15817 &nameseq_list_15817
109566+afs_proc_rootcell_write_15822 afs_proc_rootcell_write 3 15822 NULL 115669+afs_proc_rootcell_write_15822 afs_proc_rootcell_write 3 15822 NULL
109567+brcmf_sdbrcm_died_dump_15841 brcmf_sdbrcm_died_dump 3 15841 NULL
109568+table_size_15851 table_size 0-1-2 15851 NULL 115670+table_size_15851 table_size 0-1-2 15851 NULL
109569+write_file_tx99_15856 write_file_tx99 3 15856 NULL 115671+write_file_tx99_15856 write_file_tx99 3 15856 NULL
109570+media_entity_init_15870 media_entity_init 2-4 15870 NULL 115672+media_entity_init_15870 media_entity_init 2-4 15870 NULL
109571+__mptctl_ioctl_15875 __mptctl_ioctl 2 15875 NULL 115673+__mptctl_ioctl_15875 __mptctl_ioctl 2 15875 NULL
109572+nfs_map_group_to_gid_15892 nfs_map_group_to_gid 3 15892 NULL
109573+native_read_msr_15905 native_read_msr 0 15905 NULL 115674+native_read_msr_15905 native_read_msr 0 15905 NULL
109574+parse_audio_stream_data_15937 parse_audio_stream_data 3 15937 NULL 115675+parse_audio_stream_data_15937 parse_audio_stream_data 3 15937 NULL
109575+power_read_15939 power_read 3 15939 NULL 115676+power_read_15939 power_read 3 15939 NULL
109576+lpfc_idiag_drbacc_read_15948 lpfc_idiag_drbacc_read 3 15948 NULL 115677+lpfc_idiag_drbacc_read_15948 lpfc_idiag_drbacc_read 3 15948 NULL
109577+snd_pcm_lib_read_transfer_15952 snd_pcm_lib_read_transfer 5-2-4 15952 NULL 115678+snd_pcm_lib_read_transfer_15952 snd_pcm_lib_read_transfer 5-2-4 15952 NULL
115679+memblock_virt_alloc_try_nid_15954 memblock_virt_alloc_try_nid 1 15954 NULL
109578+viafb_vt1636_proc_write_16018 viafb_vt1636_proc_write 3 16018 NULL 115680+viafb_vt1636_proc_write_16018 viafb_vt1636_proc_write 3 16018 NULL
109579+dccp_recvmsg_16056 dccp_recvmsg 4 16056 NULL 115681+dccp_recvmsg_16056 dccp_recvmsg 4 16056 NULL
109580+read_file_spectral_period_16057 read_file_spectral_period 3 16057 NULL 115682+read_file_spectral_period_16057 read_file_spectral_period 3 16057 NULL
@@ -109582,6 +115684,7 @@ index 0000000..9529806
109582+isr_tx_exch_complete_read_16103 isr_tx_exch_complete_read 3 16103 NULL 115684+isr_tx_exch_complete_read_16103 isr_tx_exch_complete_read 3 16103 NULL
109583+isr_hw_pm_mode_changes_read_16110 isr_hw_pm_mode_changes_read 3 16110 NULL nohasharray 115685+isr_hw_pm_mode_changes_read_16110 isr_hw_pm_mode_changes_read 3 16110 NULL nohasharray
109584+dma_tx_requested_read_16110 dma_tx_requested_read 3 16110 &isr_hw_pm_mode_changes_read_16110 115686+dma_tx_requested_read_16110 dma_tx_requested_read 3 16110 &isr_hw_pm_mode_changes_read_16110
115687+gfs2_jdesc_check_16122 gfs2_jdesc_check 0 16122 NULL
109585+snd_dma_pointer_16126 snd_dma_pointer 0-2 16126 NULL 115688+snd_dma_pointer_16126 snd_dma_pointer 0-2 16126 NULL
109586+compat_sys_select_16131 compat_sys_select 1 16131 NULL 115689+compat_sys_select_16131 compat_sys_select 1 16131 NULL
109587+fsm_init_16134 fsm_init 2 16134 NULL 115690+fsm_init_16134 fsm_init 2 16134 NULL
@@ -109615,7 +115718,10 @@ index 0000000..9529806
109615+kvm_handle_hva_range_16312 kvm_handle_hva_range 3-2 16312 NULL 115718+kvm_handle_hva_range_16312 kvm_handle_hva_range 3-2 16312 NULL
109616+sysfs_create_groups_16360 sysfs_create_groups 0 16360 NULL 115719+sysfs_create_groups_16360 sysfs_create_groups 0 16360 NULL
109617+total_ps_buffered_read_16365 total_ps_buffered_read 3 16365 NULL 115720+total_ps_buffered_read_16365 total_ps_buffered_read 3 16365 NULL
115721+xfs_inobt_lookup_16367 xfs_inobt_lookup 0 16367 NULL
109618+iscsi_tcp_conn_setup_16376 iscsi_tcp_conn_setup 2 16376 NULL 115722+iscsi_tcp_conn_setup_16376 iscsi_tcp_conn_setup 2 16376 NULL
115723+gfs2_dinode_in_16378 gfs2_dinode_in 0 16378 NULL
115724+xfs_btree_check_block_16419 xfs_btree_check_block 0 16419 NULL
109619+ieee80211_if_read_tsf_16420 ieee80211_if_read_tsf 3 16420 NULL 115725+ieee80211_if_read_tsf_16420 ieee80211_if_read_tsf 3 16420 NULL
109620+rxrpc_server_keyring_16431 rxrpc_server_keyring 3 16431 NULL 115726+rxrpc_server_keyring_16431 rxrpc_server_keyring 3 16431 NULL
109621+__bio_add_page_16435 __bio_add_page 0-4 16435 NULL 115727+__bio_add_page_16435 __bio_add_page 0-4 16435 NULL
@@ -109643,7 +115749,9 @@ index 0000000..9529806
109643+drm_malloc_ab_16831 drm_malloc_ab 1-2 16831 NULL 115749+drm_malloc_ab_16831 drm_malloc_ab 1-2 16831 NULL
109644+scsi_mode_sense_16835 scsi_mode_sense 5 16835 NULL 115750+scsi_mode_sense_16835 scsi_mode_sense 5 16835 NULL
109645+hfsplus_min_io_size_16859 hfsplus_min_io_size 0 16859 NULL 115751+hfsplus_min_io_size_16859 hfsplus_min_io_size 0 16859 NULL
109646+alloc_idx_lebs_16872 alloc_idx_lebs 2 16872 NULL 115752+xfs_dialloc_ag_16868 xfs_dialloc_ag 0 16868 NULL
115753+alloc_idx_lebs_16872 alloc_idx_lebs 2 16872 NULL nohasharray
115754+xfs_iget_16872 xfs_iget 0 16872 &alloc_idx_lebs_16872
109647+carl9170_debugfs_ampdu_state_read_16873 carl9170_debugfs_ampdu_state_read 3 16873 NULL 115755+carl9170_debugfs_ampdu_state_read_16873 carl9170_debugfs_ampdu_state_read 3 16873 NULL
109648+st_write_16874 st_write 3 16874 NULL 115756+st_write_16874 st_write 3 16874 NULL
109649+__kfifo_peek_n_16877 __kfifo_peek_n 0 16877 NULL 115757+__kfifo_peek_n_16877 __kfifo_peek_n 0 16877 NULL
@@ -109687,7 +115795,6 @@ index 0000000..9529806
109687+hmac_sha256_17278 hmac_sha256 2 17278 NULL 115795+hmac_sha256_17278 hmac_sha256 2 17278 NULL
109688+neigh_hash_grow_17283 neigh_hash_grow 2 17283 NULL 115796+neigh_hash_grow_17283 neigh_hash_grow 2 17283 NULL
109689+minstrel_stats_read_17290 minstrel_stats_read 3 17290 NULL 115797+minstrel_stats_read_17290 minstrel_stats_read 3 17290 NULL
109690+__ptlrpc_request_bufs_pack_17298 __ptlrpc_request_bufs_pack 0 17298 NULL
109691+ieee80211_if_fmt_dot11MeshForwarding_17301 ieee80211_if_fmt_dot11MeshForwarding 3 17301 NULL 115798+ieee80211_if_fmt_dot11MeshForwarding_17301 ieee80211_if_fmt_dot11MeshForwarding 3 17301 NULL
109692+mb_cache_create_17307 mb_cache_create 2 17307 NULL 115799+mb_cache_create_17307 mb_cache_create 2 17307 NULL
109693+gnttab_map_frames_v2_17314 gnttab_map_frames_v2 2 17314 NULL 115800+gnttab_map_frames_v2_17314 gnttab_map_frames_v2 2 17314 NULL
@@ -109698,6 +115805,7 @@ index 0000000..9529806
109698+compat_sys_ppoll_17430 compat_sys_ppoll 2 17430 NULL 115805+compat_sys_ppoll_17430 compat_sys_ppoll 2 17430 NULL
109699+sta_connected_time_read_17435 sta_connected_time_read 3 17435 NULL 115806+sta_connected_time_read_17435 sta_connected_time_read 3 17435 NULL
109700+libcfs_ipif_enumerate_17445 libcfs_ipif_enumerate 0 17445 NULL 115807+libcfs_ipif_enumerate_17445 libcfs_ipif_enumerate 0 17445 NULL
115808+xfs_btree_lshift_17448 xfs_btree_lshift 0 17448 NULL
109701+nla_get_u32_17455 nla_get_u32 0 17455 NULL 115809+nla_get_u32_17455 nla_get_u32 0 17455 NULL
109702+__ref_totlen_17461 __ref_totlen 0 17461 NULL 115810+__ref_totlen_17461 __ref_totlen 0 17461 NULL
109703+probe_kernel_write_17481 probe_kernel_write 3 17481 NULL 115811+probe_kernel_write_17481 probe_kernel_write 3 17481 NULL
@@ -109712,20 +115820,20 @@ index 0000000..9529806
109712+osst_execute_17607 osst_execute 7-6 17607 NULL 115820+osst_execute_17607 osst_execute 7-6 17607 NULL
109713+ieee80211_if_read_dot11MeshHWMPactivePathToRootTimeout_17618 ieee80211_if_read_dot11MeshHWMPactivePathToRootTimeout 3 17618 NULL 115821+ieee80211_if_read_dot11MeshHWMPactivePathToRootTimeout_17618 ieee80211_if_read_dot11MeshHWMPactivePathToRootTimeout 3 17618 NULL
109714+dma_map_page_17628 dma_map_page 0 17628 NULL 115822+dma_map_page_17628 dma_map_page 0 17628 NULL
109715+ocfs2_rotate_subtree_left_17634 ocfs2_rotate_subtree_left 5 17634 NULL
109716+twl4030_set_gpio_direction_17645 twl4030_set_gpio_direction 1 17645 NULL 115823+twl4030_set_gpio_direction_17645 twl4030_set_gpio_direction 1 17645 NULL
109717+SYSC_migrate_pages_17657 SYSC_migrate_pages 2 17657 NULL 115824+SYSC_migrate_pages_17657 SYSC_migrate_pages 2 17657 NULL
109718+packet_setsockopt_17662 packet_setsockopt 5 17662 NULL 115825+packet_setsockopt_17662 packet_setsockopt 5 17662 NULL
109719+pwr_enable_ps_read_17686 pwr_enable_ps_read 3 17686 NULL 115826+pwr_enable_ps_read_17686 pwr_enable_ps_read 3 17686 NULL
115827+filemap_fdatawait_17688 filemap_fdatawait 0 17688 NULL
109720+venus_rename_17707 venus_rename 4-5 17707 NULL nohasharray 115828+venus_rename_17707 venus_rename 4-5 17707 NULL nohasharray
109721+__einj_error_trigger_17707 __einj_error_trigger 0 17707 &venus_rename_17707 115829+__einj_error_trigger_17707 __einj_error_trigger 0 17707 &venus_rename_17707
109722+exofs_read_lookup_dev_table_17733 exofs_read_lookup_dev_table 3 17733 NULL 115830+exofs_read_lookup_dev_table_17733 exofs_read_lookup_dev_table 3 17733 NULL
109723+sctpprobe_read_17741 sctpprobe_read 3 17741 NULL 115831+sctpprobe_read_17741 sctpprobe_read 3 17741 NULL
109724+dgap_do_fep_load_17765 dgap_do_fep_load 3 17765 NULL 115832+dgap_do_fep_load_17765 dgap_do_fep_load 3 17765 NULL
109725+brcmf_sdio_chip_verifynvram_17776 brcmf_sdio_chip_verifynvram 4 17776 NULL
109726+shrink_slab_node_17794 shrink_slab_node 3 17794 NULL 115833+shrink_slab_node_17794 shrink_slab_node 3 17794 NULL
109727+gnet_stats_copy_app_17821 gnet_stats_copy_app 3 17821 NULL 115834+gnet_stats_copy_app_17821 gnet_stats_copy_app 3 17821 NULL
109728+cipso_v4_gentag_rbm_17836 cipso_v4_gentag_rbm 0 17836 NULL 115835+cipso_v4_gentag_rbm_17836 cipso_v4_gentag_rbm 0 17836 NULL
115836+em28xx_audio_ep_packet_size_17844 em28xx_audio_ep_packet_size 0 17844 NULL
109729+dm_stats_message_17863 dm_stats_message 5 17863 NULL 115837+dm_stats_message_17863 dm_stats_message 5 17863 NULL
109730+sisusb_send_bulk_msg_17864 sisusb_send_bulk_msg 3 17864 NULL 115838+sisusb_send_bulk_msg_17864 sisusb_send_bulk_msg 3 17864 NULL
109731+alloc_sja1000dev_17868 alloc_sja1000dev 1 17868 NULL 115839+alloc_sja1000dev_17868 alloc_sja1000dev 1 17868 NULL
@@ -109737,6 +115845,7 @@ index 0000000..9529806
109737+ieee80211_if_fmt_dot11MeshMaxPeerLinks_17883 ieee80211_if_fmt_dot11MeshMaxPeerLinks 3 17883 NULL 115845+ieee80211_if_fmt_dot11MeshMaxPeerLinks_17883 ieee80211_if_fmt_dot11MeshMaxPeerLinks 3 17883 NULL
109738+ieee80211_if_fmt_dot11MeshHWMPRootMode_17890 ieee80211_if_fmt_dot11MeshHWMPRootMode 3 17890 NULL 115846+ieee80211_if_fmt_dot11MeshHWMPRootMode_17890 ieee80211_if_fmt_dot11MeshHWMPRootMode 3 17890 NULL
109739+xfs_buf_associate_memory_17915 xfs_buf_associate_memory 3 17915 NULL 115847+xfs_buf_associate_memory_17915 xfs_buf_associate_memory 3 17915 NULL
115848+xfs_rtallocate_extent_near_17916 xfs_rtallocate_extent_near 0 17916 NULL
109740+scsi_bufflen_17933 scsi_bufflen 0 17933 NULL 115849+scsi_bufflen_17933 scsi_bufflen 0 17933 NULL
109741+__mutex_lock_check_stamp_17947 __mutex_lock_check_stamp 0 17947 NULL 115850+__mutex_lock_check_stamp_17947 __mutex_lock_check_stamp 0 17947 NULL
109742+beacon_interval_write_17952 beacon_interval_write 3 17952 NULL 115851+beacon_interval_write_17952 beacon_interval_write 3 17952 NULL
@@ -109749,6 +115858,7 @@ index 0000000..9529806
109749+cpufreq_add_dev_symlink_18028 cpufreq_add_dev_symlink 0 18028 NULL 115858+cpufreq_add_dev_symlink_18028 cpufreq_add_dev_symlink 0 18028 NULL
109750+o2hb_highest_node_18034 o2hb_highest_node 0 18034 NULL 115859+o2hb_highest_node_18034 o2hb_highest_node 0 18034 NULL
109751+cryptd_alloc_instance_18048 cryptd_alloc_instance 2-3 18048 NULL 115860+cryptd_alloc_instance_18048 cryptd_alloc_instance 2-3 18048 NULL
115861+__btrfs_drop_extents_18049 __btrfs_drop_extents 5 18049 NULL
109752+ddebug_proc_write_18055 ddebug_proc_write 3 18055 NULL 115862+ddebug_proc_write_18055 ddebug_proc_write 3 18055 NULL
109753+lua_sysfs_read_18062 lua_sysfs_read 6 18062 NULL 115863+lua_sysfs_read_18062 lua_sysfs_read 6 18062 NULL
109754+fpregs_get_18066 fpregs_get 4 18066 NULL 115864+fpregs_get_18066 fpregs_get 4 18066 NULL
@@ -109760,10 +115870,12 @@ index 0000000..9529806
109760+dfs_file_read_18116 dfs_file_read 3 18116 NULL 115870+dfs_file_read_18116 dfs_file_read 3 18116 NULL
109761+svc_getnl_18120 svc_getnl 0 18120 NULL 115871+svc_getnl_18120 svc_getnl 0 18120 NULL
109762+paging32_gpte_to_gfn_lvl_18131 paging32_gpte_to_gfn_lvl 0-2-1 18131 NULL 115872+paging32_gpte_to_gfn_lvl_18131 paging32_gpte_to_gfn_lvl 0-2-1 18131 NULL
115873+xfs_zero_eof_18134 xfs_zero_eof 0 18134 NULL
109763+selinux_inode_setsecurity_18148 selinux_inode_setsecurity 4 18148 NULL 115874+selinux_inode_setsecurity_18148 selinux_inode_setsecurity 4 18148 NULL
109764+pccard_store_cis_18176 pccard_store_cis 6 18176 NULL 115875+pccard_store_cis_18176 pccard_store_cis 6 18176 NULL
109765+orinoco_add_extscan_result_18207 orinoco_add_extscan_result 3 18207 NULL 115876+orinoco_add_extscan_result_18207 orinoco_add_extscan_result 3 18207 NULL
109766+gsm_control_message_18209 gsm_control_message 4 18209 NULL 115877+gsm_control_message_18209 gsm_control_message 4 18209 NULL
115878+read_rindex_entry_18213 read_rindex_entry 0 18213 NULL
109767+do_ipv6_setsockopt_18215 do_ipv6_setsockopt 5 18215 NULL 115879+do_ipv6_setsockopt_18215 do_ipv6_setsockopt 5 18215 NULL
109768+gnttab_alloc_grant_references_18240 gnttab_alloc_grant_references 1 18240 NULL 115880+gnttab_alloc_grant_references_18240 gnttab_alloc_grant_references 1 18240 NULL
109769+alloc_trace_uprobe_18247 alloc_trace_uprobe 3 18247 NULL 115881+alloc_trace_uprobe_18247 alloc_trace_uprobe 3 18247 NULL
@@ -109788,10 +115900,12 @@ index 0000000..9529806
109788+SyS_process_vm_readv_18366 SyS_process_vm_readv 3-5 18366 NULL 115900+SyS_process_vm_readv_18366 SyS_process_vm_readv 3-5 18366 NULL
109789+ep_io_18367 ep_io 0 18367 NULL 115901+ep_io_18367 ep_io 0 18367 NULL
109790+qib_user_sdma_num_pages_18371 qib_user_sdma_num_pages 0 18371 NULL 115902+qib_user_sdma_num_pages_18371 qib_user_sdma_num_pages 0 18371 NULL
115903+__ceph_getxattr_18386 __ceph_getxattr 0 18386 NULL
109791+ci_role_write_18388 ci_role_write 3 18388 NULL 115904+ci_role_write_18388 ci_role_write 3 18388 NULL
109792+hdlc_empty_fifo_18397 hdlc_empty_fifo 2 18397 NULL 115905+hdlc_empty_fifo_18397 hdlc_empty_fifo 2 18397 NULL
109793+adis16136_show_serial_18402 adis16136_show_serial 3 18402 NULL 115906+adis16136_show_serial_18402 adis16136_show_serial 3 18402 NULL
109794+crystalhd_user_data_18407 crystalhd_user_data 3 18407 NULL 115907+crystalhd_user_data_18407 crystalhd_user_data 3 18407 NULL
115908+memblock_virt_alloc_node_nopanic_18431 memblock_virt_alloc_node_nopanic 1 18431 NULL
109795+iscsi_create_flashnode_sess_18433 iscsi_create_flashnode_sess 4 18433 NULL 115909+iscsi_create_flashnode_sess_18433 iscsi_create_flashnode_sess 4 18433 NULL
109796+snd_hda_get_connections_18437 snd_hda_get_connections 0 18437 NULL 115910+snd_hda_get_connections_18437 snd_hda_get_connections 0 18437 NULL
109797+flash_dev_cache_miss_18454 flash_dev_cache_miss 4 18454 NULL 115911+flash_dev_cache_miss_18454 flash_dev_cache_miss 4 18454 NULL
@@ -109802,6 +115916,7 @@ index 0000000..9529806
109802+udpv6_setsockopt_18487 udpv6_setsockopt 5 18487 NULL 115916+udpv6_setsockopt_18487 udpv6_setsockopt 5 18487 NULL
109803+btrfs_fiemap_18501 btrfs_fiemap 3 18501 NULL 115917+btrfs_fiemap_18501 btrfs_fiemap 3 18501 NULL
109804+__copy_user_zeroing_intel_18510 __copy_user_zeroing_intel 0-3 18510 NULL 115918+__copy_user_zeroing_intel_18510 __copy_user_zeroing_intel 0-3 18510 NULL
115919+__block_write_begin_18511 __block_write_begin 0 18511 NULL
109805+snd_vx_inb_18514 snd_vx_inb 0 18514 NULL 115920+snd_vx_inb_18514 snd_vx_inb 0 18514 NULL
109806+snd_gus_dram_poke_18525 snd_gus_dram_poke 4 18525 NULL 115921+snd_gus_dram_poke_18525 snd_gus_dram_poke 4 18525 NULL
109807+nouveau_fifo_channel_create__18530 nouveau_fifo_channel_create_ 9 18530 NULL 115922+nouveau_fifo_channel_create__18530 nouveau_fifo_channel_create_ 9 18530 NULL
@@ -109809,11 +115924,10 @@ index 0000000..9529806
109809+sas_change_queue_depth_18555 sas_change_queue_depth 2 18555 NULL 115924+sas_change_queue_depth_18555 sas_change_queue_depth 2 18555 NULL
109810+smk_write_rules_list_18565 smk_write_rules_list 3 18565 NULL 115925+smk_write_rules_list_18565 smk_write_rules_list 3 18565 NULL
109811+debug_output_18575 debug_output 3 18575 NULL 115926+debug_output_18575 debug_output 3 18575 NULL
109812+filemap_fdatawait_range_18600 filemap_fdatawait_range 0 18600 NULL nohasharray 115927+xfs_btree_read_bufl_18597 xfs_btree_read_bufl 0 18597 NULL
109813+slabinfo_write_18600 slabinfo_write 3 18600 &filemap_fdatawait_range_18600 115928+filemap_fdatawait_range_18600 filemap_fdatawait_range 0 18600 NULL
109814+iowarrior_write_18604 iowarrior_write 3 18604 NULL 115929+iowarrior_write_18604 iowarrior_write 3 18604 NULL
109815+nvc0_ram_create__18624 nvc0_ram_create_ 4 18624 NULL nohasharray 115930+nvc0_ram_create__18624 nvc0_ram_create_ 4 18624 NULL
109816+audio_get_endpoint_req_18624 audio_get_endpoint_req 0 18624 &nvc0_ram_create__18624
109817+from_buffer_18625 from_buffer 3 18625 NULL 115931+from_buffer_18625 from_buffer 3 18625 NULL
109818+snd_pcm_oss_write3_18657 snd_pcm_oss_write3 0-3 18657 NULL 115932+snd_pcm_oss_write3_18657 snd_pcm_oss_write3 0-3 18657 NULL
109819+ieee80211_if_fmt_rssi_threshold_18664 ieee80211_if_fmt_rssi_threshold 3 18664 NULL 115933+ieee80211_if_fmt_rssi_threshold_18664 ieee80211_if_fmt_rssi_threshold 3 18664 NULL
@@ -109831,7 +115945,6 @@ index 0000000..9529806
109831+ffs_epfile_read_18775 ffs_epfile_read 3 18775 NULL 115945+ffs_epfile_read_18775 ffs_epfile_read 3 18775 NULL
109832+SyS_lsetxattr_18776 SyS_lsetxattr 4 18776 NULL 115946+SyS_lsetxattr_18776 SyS_lsetxattr 4 18776 NULL
109833+alloc_fcdev_18780 alloc_fcdev 1 18780 NULL 115947+alloc_fcdev_18780 alloc_fcdev 1 18780 NULL
109834+prealloc_18800 prealloc 0 18800 NULL
109835+dm_stats_print_18815 dm_stats_print 7 18815 NULL 115948+dm_stats_print_18815 dm_stats_print 7 18815 NULL
109836+sys_modify_ldt_18824 sys_modify_ldt 3 18824 NULL 115949+sys_modify_ldt_18824 sys_modify_ldt 3 18824 NULL
109837+mtf_test_write_18844 mtf_test_write 3 18844 NULL 115950+mtf_test_write_18844 mtf_test_write 3 18844 NULL
@@ -109841,6 +115954,7 @@ index 0000000..9529806
109841+ceph_setxattr_18913 ceph_setxattr 4 18913 NULL 115954+ceph_setxattr_18913 ceph_setxattr 4 18913 NULL
109842+ieee80211_rx_mgmt_disassoc_18927 ieee80211_rx_mgmt_disassoc 3 18927 NULL 115955+ieee80211_rx_mgmt_disassoc_18927 ieee80211_rx_mgmt_disassoc 3 18927 NULL
109843+snapshot_write_next_18937 snapshot_write_next 0 18937 NULL 115956+snapshot_write_next_18937 snapshot_write_next 0 18937 NULL
115957+clean_journal_18955 clean_journal 0 18955 NULL
109844+__nla_reserve_18974 __nla_reserve 3 18974 NULL 115958+__nla_reserve_18974 __nla_reserve 3 18974 NULL
109845+__blockdev_direct_IO_18977 __blockdev_direct_IO 0-6 18977 NULL 115959+__blockdev_direct_IO_18977 __blockdev_direct_IO 0-6 18977 NULL
109846+layout_in_gaps_19006 layout_in_gaps 2 19006 NULL 115960+layout_in_gaps_19006 layout_in_gaps 2 19006 NULL
@@ -109850,12 +115964,11 @@ index 0000000..9529806
109850+revalidate_19043 revalidate 2 19043 NULL 115964+revalidate_19043 revalidate 2 19043 NULL
109851+afs_vnode_store_data_19048 afs_vnode_store_data 2-3-4-5 19048 NULL 115965+afs_vnode_store_data_19048 afs_vnode_store_data 2-3-4-5 19048 NULL
109852+osc_pinger_recov_seq_write_19056 osc_pinger_recov_seq_write 3 19056 NULL 115966+osc_pinger_recov_seq_write_19056 osc_pinger_recov_seq_write 3 19056 NULL
115967+get_log_header_19063 get_log_header 0 19063 NULL
109853+create_gpadl_header_19064 create_gpadl_header 2 19064 NULL 115968+create_gpadl_header_19064 create_gpadl_header 2 19064 NULL
109854+ieee80211_key_alloc_19065 ieee80211_key_alloc 3 19065 NULL
109855+ceph_create_snap_context_19082 ceph_create_snap_context 1 19082 NULL 115969+ceph_create_snap_context_19082 ceph_create_snap_context 1 19082 NULL
109856+sta_last_seq_ctrl_read_19106 sta_last_seq_ctrl_read 3 19106 NULL 115970+sta_last_seq_ctrl_read_19106 sta_last_seq_ctrl_read 3 19106 NULL
109857+cifs_readv_from_socket_19109 cifs_readv_from_socket 3 19109 NULL 115971+cifs_readv_from_socket_19109 cifs_readv_from_socket 3 19109 NULL
109858+ATOMIC_SUB_RETURN_19115 ATOMIC_SUB_RETURN 2 19115 NULL
109859+snd_als4k_iobase_readl_19136 snd_als4k_iobase_readl 0 19136 NULL 115972+snd_als4k_iobase_readl_19136 snd_als4k_iobase_readl 0 19136 NULL
109860+alloc_irdadev_19140 alloc_irdadev 1 19140 NULL 115973+alloc_irdadev_19140 alloc_irdadev 1 19140 NULL
109861+sleep_auth_read_19159 sleep_auth_read 3 19159 NULL 115974+sleep_auth_read_19159 sleep_auth_read 3 19159 NULL
@@ -109896,17 +116009,18 @@ index 0000000..9529806
109896+apei_exec_pre_map_gars_19529 apei_exec_pre_map_gars 0 19529 NULL nohasharray 116009+apei_exec_pre_map_gars_19529 apei_exec_pre_map_gars 0 19529 NULL nohasharray
109897+cfc_write_array_to_buffer_19529 cfc_write_array_to_buffer 3 19529 &apei_exec_pre_map_gars_19529 116010+cfc_write_array_to_buffer_19529 cfc_write_array_to_buffer 3 19529 &apei_exec_pre_map_gars_19529
109898+nfc_llcp_build_tlv_19536 nfc_llcp_build_tlv 3 19536 NULL 116011+nfc_llcp_build_tlv_19536 nfc_llcp_build_tlv 3 19536 NULL
109899+howmany_64_19548 howmany_64 2 19548 NULL
109900+gfn_to_index_19558 gfn_to_index 0-1-3-2 19558 NULL 116012+gfn_to_index_19558 gfn_to_index 0-1-3-2 19558 NULL
109901+ocfs2_control_message_19564 ocfs2_control_message 3 19564 NULL 116013+ocfs2_control_message_19564 ocfs2_control_message 3 19564 NULL
109902+ieee80211_if_read_tkip_mic_test_19565 ieee80211_if_read_tkip_mic_test 3 19565 NULL
109903+nfsd_read_19568 nfsd_read 5 19568 NULL 116014+nfsd_read_19568 nfsd_read 5 19568 NULL
109904+cgroup_read_s64_19570 cgroup_read_s64 5 19570 NULL 116015+ieee80211_key_alloc_19575 ieee80211_key_alloc 3 19575 NULL
116016+mnt_want_write_file_19579 mnt_want_write_file 0 19579 NULL
109905+bm_status_read_19583 bm_status_read 3 19583 NULL 116017+bm_status_read_19583 bm_status_read 3 19583 NULL
109906+load_xattr_datum_19594 load_xattr_datum 0 19594 NULL 116018+load_xattr_datum_19594 load_xattr_datum 0 19594 NULL
116019+fallocate_chunk_19610 fallocate_chunk 0 19610 NULL
109907+__mei_cl_recv_19636 __mei_cl_recv 3 19636 NULL 116020+__mei_cl_recv_19636 __mei_cl_recv 3 19636 NULL
109908+LoadBitmap_19658 LoadBitmap 2 19658 NULL 116021+LoadBitmap_19658 LoadBitmap 2 19658 NULL
109909+iwl_dbgfs_pm_params_write_19660 iwl_dbgfs_pm_params_write 3 19660 NULL 116022+memblock_virt_alloc_low_nopanic_19714 memblock_virt_alloc_low_nopanic 1 19714 NULL
116023+ocfs2_control_get_this_node_19721 ocfs2_control_get_this_node 0 19721 NULL
109910+read_reg_19723 read_reg 0 19723 NULL 116024+read_reg_19723 read_reg 0 19723 NULL
109911+wm8350_block_write_19727 wm8350_block_write 2-3 19727 NULL 116025+wm8350_block_write_19727 wm8350_block_write 2-3 19727 NULL
109912+memcpy_toiovecend_19736 memcpy_toiovecend 4-3 19736 NULL 116026+memcpy_toiovecend_19736 memcpy_toiovecend 4-3 19736 NULL
@@ -109916,11 +116030,9 @@ index 0000000..9529806
109916+ocfs2_readpages_19759 ocfs2_readpages 4 19759 NULL 116030+ocfs2_readpages_19759 ocfs2_readpages 4 19759 NULL
109917+jffs2_acl_from_medium_19762 jffs2_acl_from_medium 2 19762 NULL 116031+jffs2_acl_from_medium_19762 jffs2_acl_from_medium 2 19762 NULL
109918+readhscx_19769 readhscx 0 19769 NULL 116032+readhscx_19769 readhscx 0 19769 NULL
109919+__set_print_fmt_19776 __set_print_fmt 0 19776 NULL
109920+iwl_dbgfs_disable_power_off_write_19823 iwl_dbgfs_disable_power_off_write 3 19823 NULL
109921+irda_setsockopt_19824 irda_setsockopt 5 19824 NULL 116033+irda_setsockopt_19824 irda_setsockopt 5 19824 NULL
116034+xfs_bmap_add_extent_hole_real_19828 xfs_bmap_add_extent_hole_real 0 19828 NULL
109922+vfs_getxattr_19832 vfs_getxattr 0 19832 NULL 116035+vfs_getxattr_19832 vfs_getxattr 0 19832 NULL
109923+security_context_to_sid_19839 security_context_to_sid 2 19839 NULL
109924+crypt_alloc_buffer_19846 crypt_alloc_buffer 2 19846 NULL 116036+crypt_alloc_buffer_19846 crypt_alloc_buffer 2 19846 NULL
109925+cfg80211_mlme_register_mgmt_19852 cfg80211_mlme_register_mgmt 5 19852 NULL 116037+cfg80211_mlme_register_mgmt_19852 cfg80211_mlme_register_mgmt 5 19852 NULL
109926+__nla_put_19857 __nla_put 3 19857 NULL 116038+__nla_put_19857 __nla_put 3 19857 NULL
@@ -109932,12 +116044,13 @@ index 0000000..9529806
109932+guest_read_tsc_19931 guest_read_tsc 0 19931 NULL 116044+guest_read_tsc_19931 guest_read_tsc 0 19931 NULL
109933+iwl_dbgfs_rx_queue_read_19943 iwl_dbgfs_rx_queue_read 3 19943 NULL 116045+iwl_dbgfs_rx_queue_read_19943 iwl_dbgfs_rx_queue_read 3 19943 NULL
109934+cfg80211_rx_assoc_resp_19944 cfg80211_rx_assoc_resp 4 19944 NULL 116046+cfg80211_rx_assoc_resp_19944 cfg80211_rx_assoc_resp 4 19944 NULL
116047+ll_xattr_cache_list_19954 ll_xattr_cache_list 0 19954 NULL
109935+get_jack_mode_name_19976 get_jack_mode_name 4 19976 NULL 116048+get_jack_mode_name_19976 get_jack_mode_name 4 19976 NULL
109936+attach_hdlc_protocol_19986 attach_hdlc_protocol 3 19986 NULL 116049+attach_hdlc_protocol_19986 attach_hdlc_protocol 3 19986 NULL
109937+rtw_set_wps_probe_resp_19989 rtw_set_wps_probe_resp 3 19989 NULL 116050+rtw_set_wps_probe_resp_19989 rtw_set_wps_probe_resp 3 19989 NULL
109938+lustre_pack_request_19992 lustre_pack_request 0 19992 NULL
109939+diva_um_idi_read_20003 diva_um_idi_read 0 20003 NULL 116051+diva_um_idi_read_20003 diva_um_idi_read 0 20003 NULL
109940+lov_stripe_md_size_20009 lov_stripe_md_size 0-1 20009 NULL 116052+lov_stripe_md_size_20009 lov_stripe_md_size 0-1 20009 NULL nohasharray
116053+event_trigger_write_20009 event_trigger_write 3 20009 &lov_stripe_md_size_20009
109941+tree_mod_log_eb_move_20011 tree_mod_log_eb_move 5 20011 NULL 116054+tree_mod_log_eb_move_20011 tree_mod_log_eb_move 5 20011 NULL
109942+SYSC_fgetxattr_20027 SYSC_fgetxattr 4 20027 NULL 116055+SYSC_fgetxattr_20027 SYSC_fgetxattr 4 20027 NULL
109943+split_scan_timeout_read_20029 split_scan_timeout_read 3 20029 NULL 116056+split_scan_timeout_read_20029 split_scan_timeout_read 3 20029 NULL
@@ -109949,12 +116062,12 @@ index 0000000..9529806
109949+aat2870_reg_write_file_20086 aat2870_reg_write_file 3 20086 NULL 116062+aat2870_reg_write_file_20086 aat2870_reg_write_file 3 20086 NULL
109950+team_options_register_20091 team_options_register 3 20091 NULL 116063+team_options_register_20091 team_options_register 3 20091 NULL
109951+qla2x00_adjust_sdev_qdepth_up_20097 qla2x00_adjust_sdev_qdepth_up 2 20097 NULL 116064+qla2x00_adjust_sdev_qdepth_up_20097 qla2x00_adjust_sdev_qdepth_up 2 20097 NULL
116065+xfs_qm_dqget_20103 xfs_qm_dqget 0 20103 NULL
109952+root_nfs_copy_20111 root_nfs_copy 3 20111 NULL 116066+root_nfs_copy_20111 root_nfs_copy 3 20111 NULL
109953+hptiop_adjust_disk_queue_depth_20122 hptiop_adjust_disk_queue_depth 2 20122 NULL 116067+hptiop_adjust_disk_queue_depth_20122 hptiop_adjust_disk_queue_depth 2 20122 NULL
109954+tomoyo_commit_ok_20167 tomoyo_commit_ok 2 20167 NULL 116068+tomoyo_commit_ok_20167 tomoyo_commit_ok 2 20167 NULL
109955+read_flush_pipefs_20171 read_flush_pipefs 3 20171 NULL 116069+read_flush_pipefs_20171 read_flush_pipefs 3 20171 NULL
109956+wep_addr_key_count_read_20174 wep_addr_key_count_read 3 20174 NULL 116070+wep_addr_key_count_read_20174 wep_addr_key_count_read 3 20174 NULL
109957+create_trace_probe_20175 create_trace_probe 1 20175 NULL
109958+crystalhd_map_dio_20181 crystalhd_map_dio 3 20181 NULL 116071+crystalhd_map_dio_20181 crystalhd_map_dio 3 20181 NULL
109959+pvr2_ctrl_value_to_sym_20229 pvr2_ctrl_value_to_sym 5 20229 NULL 116072+pvr2_ctrl_value_to_sym_20229 pvr2_ctrl_value_to_sym 5 20229 NULL
109960+rose_sendmsg_20249 rose_sendmsg 4 20249 NULL 116073+rose_sendmsg_20249 rose_sendmsg 4 20249 NULL
@@ -109972,7 +116085,6 @@ index 0000000..9529806
109972+read_7220_creg32_20394 read_7220_creg32 0 20394 &snd_nm256_readl_20394 116085+read_7220_creg32_20394 read_7220_creg32 0 20394 &snd_nm256_readl_20394
109973+__kfifo_from_user_20399 __kfifo_from_user 3 20399 NULL nohasharray 116086+__kfifo_from_user_20399 __kfifo_from_user 3 20399 NULL nohasharray
109974+SyS_get_mempolicy_20399 SyS_get_mempolicy 3 20399 &__kfifo_from_user_20399 116087+SyS_get_mempolicy_20399 SyS_get_mempolicy 3 20399 &__kfifo_from_user_20399
109975+nfs3_setxattr_20458 nfs3_setxattr 4 20458 NULL
109976+compat_ipv6_setsockopt_20468 compat_ipv6_setsockopt 5 20468 NULL 116088+compat_ipv6_setsockopt_20468 compat_ipv6_setsockopt 5 20468 NULL
109977+read_buf_20469 read_buf 2 20469 NULL 116089+read_buf_20469 read_buf 2 20469 NULL
109978+bio_trim_20472 bio_trim 2 20472 NULL 116090+bio_trim_20472 bio_trim 2 20472 NULL
@@ -109984,6 +116096,7 @@ index 0000000..9529806
109984+venus_create_20555 venus_create 4 20555 NULL 116096+venus_create_20555 venus_create 4 20555 NULL
109985+btrfs_super_log_root_20565 btrfs_super_log_root 0 20565 NULL 116097+btrfs_super_log_root_20565 btrfs_super_log_root 0 20565 NULL
109986+crypto_ahash_reqsize_20569 crypto_ahash_reqsize 0 20569 NULL 116098+crypto_ahash_reqsize_20569 crypto_ahash_reqsize 0 20569 NULL
116099+xfs_bmap_isaeof_20570 xfs_bmap_isaeof 0 20570 NULL
109987+ocfs2_cluster_lock_20588 ocfs2_cluster_lock 0 20588 NULL 116100+ocfs2_cluster_lock_20588 ocfs2_cluster_lock 0 20588 NULL
109988+kvm_test_age_hva_20593 kvm_test_age_hva 2 20593 NULL 116101+kvm_test_age_hva_20593 kvm_test_age_hva 2 20593 NULL
109989+sync_timeline_create_20601 sync_timeline_create 2 20601 NULL 116102+sync_timeline_create_20601 sync_timeline_create 2 20601 NULL
@@ -109995,7 +116108,8 @@ index 0000000..9529806
109995+cpulist_scnprintf_20648 cpulist_scnprintf 2-0 20648 NULL 116108+cpulist_scnprintf_20648 cpulist_scnprintf 2-0 20648 NULL
109996+oz_add_farewell_20652 oz_add_farewell 5 20652 NULL 116109+oz_add_farewell_20652 oz_add_farewell 5 20652 NULL
109997+oz_cdev_read_20659 oz_cdev_read 3 20659 NULL 116110+oz_cdev_read_20659 oz_cdev_read 3 20659 NULL
109998+snd_hdsp_playback_copy_20676 snd_hdsp_playback_copy 5 20676 NULL 116111+snd_hdsp_playback_copy_20676 snd_hdsp_playback_copy 5 20676 NULL nohasharray
116112+btrfs_qgroup_reserve_20676 btrfs_qgroup_reserve 0 20676 &snd_hdsp_playback_copy_20676
109999+dvb_dmxdev_buffer_read_20682 dvb_dmxdev_buffer_read 0-4 20682 NULL 116113+dvb_dmxdev_buffer_read_20682 dvb_dmxdev_buffer_read 0-4 20682 NULL
110000+cpumask_size_20683 cpumask_size 0 20683 NULL 116114+cpumask_size_20683 cpumask_size 0 20683 NULL
110001+btrfs_node_blockptr_20685 btrfs_node_blockptr 0 20685 NULL 116115+btrfs_node_blockptr_20685 btrfs_node_blockptr 0 20685 NULL
@@ -110008,13 +116122,16 @@ index 0000000..9529806
110008+fb_prepare_logo_20743 fb_prepare_logo 0 20743 NULL 116122+fb_prepare_logo_20743 fb_prepare_logo 0 20743 NULL
110009+vol_cdev_direct_write_20751 vol_cdev_direct_write 3 20751 NULL 116123+vol_cdev_direct_write_20751 vol_cdev_direct_write 3 20751 NULL
110010+ocfs2_align_bytes_to_clusters_20754 ocfs2_align_bytes_to_clusters 2 20754 NULL 116124+ocfs2_align_bytes_to_clusters_20754 ocfs2_align_bytes_to_clusters 2 20754 NULL
110011+brcmf_p2p_escan_20763 brcmf_p2p_escan 2 20763 NULL 116125+brcmf_p2p_escan_20763 brcmf_p2p_escan 2 20763 NULL nohasharray
116126+mnt_clone_write_20763 mnt_clone_write 0 20763 &brcmf_p2p_escan_20763
110012+fb_alloc_cmap_gfp_20792 fb_alloc_cmap_gfp 2 20792 NULL 116127+fb_alloc_cmap_gfp_20792 fb_alloc_cmap_gfp 2 20792 NULL
110013+iwl_dbgfs_rxon_flags_read_20795 iwl_dbgfs_rxon_flags_read 3 20795 NULL 116128+iwl_dbgfs_rxon_flags_read_20795 iwl_dbgfs_rxon_flags_read 3 20795 NULL
110014+strndup_user_20819 strndup_user 2 20819 NULL 116129+lowpan_write_20800 lowpan_write 3 20800 NULL
116130+strndup_user_20819 strndup_user 2 20819 NULL nohasharray
116131+do_glock_20819 do_glock 0 20819 &strndup_user_20819
110015+tipc_msg_build_20825 tipc_msg_build 3 20825 NULL 116132+tipc_msg_build_20825 tipc_msg_build 3 20825 NULL
110016+wl1271_format_buffer_20834 wl1271_format_buffer 2 20834 NULL 116133+wl1271_format_buffer_20834 wl1271_format_buffer 2 20834 NULL
110017+uvc_alloc_entity_20836 uvc_alloc_entity 3-4 20836 NULL 116134+uvc_alloc_entity_20836 uvc_alloc_entity 4-3 20836 NULL
110018+p9_tag_alloc_20845 p9_tag_alloc 3 20845 NULL 116135+p9_tag_alloc_20845 p9_tag_alloc 3 20845 NULL
110019+nvme_trans_supported_vpd_pages_20847 nvme_trans_supported_vpd_pages 4 20847 NULL 116136+nvme_trans_supported_vpd_pages_20847 nvme_trans_supported_vpd_pages 4 20847 NULL
110020+get_name_20855 get_name 4 20855 NULL 116137+get_name_20855 get_name 4 20855 NULL
@@ -110035,7 +116152,9 @@ index 0000000..9529806
110035+snd_rme9652_playback_copy_20970 snd_rme9652_playback_copy 5 20970 NULL 116152+snd_rme9652_playback_copy_20970 snd_rme9652_playback_copy 5 20970 NULL
110036+alg_setsockopt_20985 alg_setsockopt 5 20985 NULL 116153+alg_setsockopt_20985 alg_setsockopt 5 20985 NULL
110037+qib_verbs_send_20999 qib_verbs_send 5-3 20999 NULL 116154+qib_verbs_send_20999 qib_verbs_send 5-3 20999 NULL
116155+btrfs_dirty_pages_21019 btrfs_dirty_pages 0 21019 NULL
110038+btrfs_inode_ref_name_len_21024 btrfs_inode_ref_name_len 0 21024 NULL 116156+btrfs_inode_ref_name_len_21024 btrfs_inode_ref_name_len 0 21024 NULL
116157+xfs_btree_new_root_21028 xfs_btree_new_root 0 21028 NULL
110039+rx_defrag_tkip_called_read_21031 rx_defrag_tkip_called_read 3 21031 NULL 116158+rx_defrag_tkip_called_read_21031 rx_defrag_tkip_called_read 3 21031 NULL
110040+srp_change_queue_depth_21038 srp_change_queue_depth 2 21038 NULL 116159+srp_change_queue_depth_21038 srp_change_queue_depth 2 21038 NULL
110041+lbs_threshold_read_21046 lbs_threshold_read 5 21046 NULL 116160+lbs_threshold_read_21046 lbs_threshold_read 5 21046 NULL
@@ -110046,8 +116165,8 @@ index 0000000..9529806
110046+bl_add_page_to_bio_21094 bl_add_page_to_bio 2 21094 NULL nohasharray 116165+bl_add_page_to_bio_21094 bl_add_page_to_bio 2 21094 NULL nohasharray
110047+multipath_status_21094 multipath_status 5 21094 &bl_add_page_to_bio_21094 116166+multipath_status_21094 multipath_status 5 21094 &bl_add_page_to_bio_21094
110048+rate_control_pid_events_read_21099 rate_control_pid_events_read 3 21099 NULL 116167+rate_control_pid_events_read_21099 rate_control_pid_events_read 3 21099 NULL
110049+ocfs2_extend_meta_needed_21104 ocfs2_extend_meta_needed 0 21104 NULL
110050+ath6kl_send_go_probe_resp_21113 ath6kl_send_go_probe_resp 3 21113 NULL 116168+ath6kl_send_go_probe_resp_21113 ath6kl_send_go_probe_resp 3 21113 NULL
116169+_efx_mcdi_rpc_async_21119 _efx_mcdi_rpc_async 4-5 21119 NULL
110051+i2400m_rx_trace_21127 i2400m_rx_trace 3 21127 NULL 116170+i2400m_rx_trace_21127 i2400m_rx_trace 3 21127 NULL
110052+cx18_v4l2_read_21196 cx18_v4l2_read 3 21196 NULL 116171+cx18_v4l2_read_21196 cx18_v4l2_read 3 21196 NULL
110053+ipc_rcu_alloc_21208 ipc_rcu_alloc 1 21208 NULL 116172+ipc_rcu_alloc_21208 ipc_rcu_alloc 1 21208 NULL
@@ -110058,20 +116177,21 @@ index 0000000..9529806
110058+use_debug_keys_read_21251 use_debug_keys_read 3 21251 NULL 116177+use_debug_keys_read_21251 use_debug_keys_read 3 21251 NULL
110059+fru_length_21257 fru_length 0 21257 NULL 116178+fru_length_21257 fru_length 0 21257 NULL
110060+rtw_set_wps_beacon_21262 rtw_set_wps_beacon 3 21262 NULL 116179+rtw_set_wps_beacon_21262 rtw_set_wps_beacon 3 21262 NULL
110061+ocfs2_blocks_for_bytes_21268 ocfs2_blocks_for_bytes 0-2 21268 NULL 116180+xfs_alloc_ag_vextent_size_21276 xfs_alloc_ag_vextent_size 0 21276 NULL
110062+do_msg_fill_21307 do_msg_fill 3 21307 NULL 116181+do_msg_fill_21307 do_msg_fill 3 21307 NULL
110063+add_res_range_21310 add_res_range 4 21310 NULL 116182+add_res_range_21310 add_res_range 4 21310 NULL
110064+get_zeroed_page_21322 get_zeroed_page 0 21322 NULL 116183+get_zeroed_page_21322 get_zeroed_page 0 21322 NULL
110065+ftrace_profile_read_21327 ftrace_profile_read 3 21327 NULL 116184+ftrace_profile_read_21327 ftrace_profile_read 3 21327 NULL
110066+read_file_bool_bmps_21344 read_file_bool_bmps 3 21344 NULL 116185+read_file_bool_bmps_21344 read_file_bool_bmps 3 21344 NULL
110067+ocfs2_find_subtree_root_21351 ocfs2_find_subtree_root 0 21351 NULL
110068+gfs2_ea_get_copy_21353 gfs2_ea_get_copy 0 21353 NULL 116186+gfs2_ea_get_copy_21353 gfs2_ea_get_copy 0 21353 NULL
110069+alloc_orinocodev_21371 alloc_orinocodev 1 21371 NULL 116187+alloc_orinocodev_21371 alloc_orinocodev 1 21371 NULL
110070+SYSC_rt_sigpending_21379 SYSC_rt_sigpending 2 21379 NULL 116188+SYSC_rt_sigpending_21379 SYSC_rt_sigpending 2 21379 NULL
110071+video_ioctl2_21380 video_ioctl2 2 21380 NULL 116189+video_ioctl2_21380 video_ioctl2 2 21380 NULL
110072+insert_ptr_21386 insert_ptr 6 21386 NULL 116190+insert_ptr_21386 insert_ptr 6 21386 NULL
110073+diva_get_driver_dbg_mask_21399 diva_get_driver_dbg_mask 0 21399 NULL 116191+diva_get_driver_dbg_mask_21399 diva_get_driver_dbg_mask 0 21399 NULL
116192+__clone_and_map_simple_bio_21404 __clone_and_map_simple_bio 4 21404 NULL
110074+snd_m3_inw_21406 snd_m3_inw 0 21406 NULL 116193+snd_m3_inw_21406 snd_m3_inw 0 21406 NULL
116194+usnic_ib_dump_vf_hdr_21423 usnic_ib_dump_vf_hdr 3 21423 NULL
110075+snapshot_read_next_21426 snapshot_read_next 0 21426 NULL 116195+snapshot_read_next_21426 snapshot_read_next 0 21426 NULL
110076+tcp_bound_to_half_wnd_21429 tcp_bound_to_half_wnd 0-2 21429 NULL 116196+tcp_bound_to_half_wnd_21429 tcp_bound_to_half_wnd 0-2 21429 NULL
110077+tracing_saved_cmdlines_read_21434 tracing_saved_cmdlines_read 3 21434 NULL 116197+tracing_saved_cmdlines_read_21434 tracing_saved_cmdlines_read 3 21434 NULL
@@ -110090,12 +116210,14 @@ index 0000000..9529806
110090+snd_es18xx_mixer_read_21586 snd_es18xx_mixer_read 0 21586 NULL 116210+snd_es18xx_mixer_read_21586 snd_es18xx_mixer_read 0 21586 NULL
110091+ocfs2_acl_from_xattr_21604 ocfs2_acl_from_xattr 2 21604 NULL 116211+ocfs2_acl_from_xattr_21604 ocfs2_acl_from_xattr 2 21604 NULL
110092+filemap_get_page_21606 filemap_get_page 2 21606 NULL 116212+filemap_get_page_21606 filemap_get_page 2 21606 NULL
110093+ocfs2_refcount_cow_hunk_21630 ocfs2_refcount_cow_hunk 3-4 21630 NULL 116213+gfs2_glock_nq_init_21624 gfs2_glock_nq_init 0 21624 NULL
110094+__jfs_getxattr_21631 __jfs_getxattr 0 21631 NULL 116214+__jfs_getxattr_21631 __jfs_getxattr 0 21631 NULL
110095+atalk_sendmsg_21677 atalk_sendmsg 4 21677 NULL 116215+atalk_sendmsg_21677 atalk_sendmsg 4 21677 NULL
110096+ocfs2_xattr_get_nolock_21678 ocfs2_xattr_get_nolock 0 21678 NULL 116216+ocfs2_xattr_get_nolock_21678 ocfs2_xattr_get_nolock 0 21678 NULL
110097+rtllib_alloc_txb_21687 rtllib_alloc_txb 1 21687 NULL 116217+rtllib_alloc_txb_21687 rtllib_alloc_txb 1 21687 NULL
110098+evdev_ioctl_handler_21705 evdev_ioctl_handler 2 21705 NULL 116218+evdev_ioctl_handler_21705 evdev_ioctl_handler 2 21705 NULL
116219+xfs_btree_insert_21712 xfs_btree_insert 0 21712 NULL
116220+update_time_21719 update_time 0 21719 NULL
110099+unix_skb_len_21722 unix_skb_len 0 21722 NULL 116221+unix_skb_len_21722 unix_skb_len 0 21722 NULL
110100+lprocfs_wr_import_21728 lprocfs_wr_import 3 21728 NULL 116222+lprocfs_wr_import_21728 lprocfs_wr_import 3 21728 NULL
110101+mthca_alloc_init_21754 mthca_alloc_init 2 21754 NULL 116223+mthca_alloc_init_21754 mthca_alloc_init 2 21754 NULL
@@ -110104,6 +116226,7 @@ index 0000000..9529806
110104+xfs_da_grow_inode_int_21785 xfs_da_grow_inode_int 3 21785 NULL 116226+xfs_da_grow_inode_int_21785 xfs_da_grow_inode_int 3 21785 NULL
110105+dvb_generic_ioctl_21810 dvb_generic_ioctl 2 21810 NULL 116227+dvb_generic_ioctl_21810 dvb_generic_ioctl 2 21810 NULL
110106+__ocfs2_cluster_lock_21812 __ocfs2_cluster_lock 0 21812 NULL 116228+__ocfs2_cluster_lock_21812 __ocfs2_cluster_lock 0 21812 NULL
116229+_iwl_dbgfs_sta_drain_write_21837 _iwl_dbgfs_sta_drain_write 3 21837 NULL
110107+oom_adj_read_21847 oom_adj_read 3 21847 NULL 116230+oom_adj_read_21847 oom_adj_read 3 21847 NULL
110108+lpfc_idiag_extacc_avail_get_21865 lpfc_idiag_extacc_avail_get 0-3 21865 NULL 116231+lpfc_idiag_extacc_avail_get_21865 lpfc_idiag_extacc_avail_get 0-3 21865 NULL
110109+brcms_debugfs_hardware_read_21867 brcms_debugfs_hardware_read 3 21867 NULL 116232+brcms_debugfs_hardware_read_21867 brcms_debugfs_hardware_read 3 21867 NULL
@@ -110111,18 +116234,22 @@ index 0000000..9529806
110111+ldlm_lock_create_21888 ldlm_lock_create 7 21888 NULL 116234+ldlm_lock_create_21888 ldlm_lock_create 7 21888 NULL
110112+dbAllocCtl_21911 dbAllocCtl 0 21911 NULL 116235+dbAllocCtl_21911 dbAllocCtl 0 21911 NULL
110113+qsfp_1_read_21915 qsfp_1_read 3 21915 NULL 116236+qsfp_1_read_21915 qsfp_1_read 3 21915 NULL
116237+__build_xattrs_21979 __build_xattrs 0 21979 NULL
110114+SYSC_prctl_21980 SYSC_prctl 4 21980 NULL 116238+SYSC_prctl_21980 SYSC_prctl 4 21980 NULL
110115+compat_rw_copy_check_uvector_22001 compat_rw_copy_check_uvector 0-3 22001 NULL nohasharray 116239+compat_rw_copy_check_uvector_22001 compat_rw_copy_check_uvector 0-3 22001 NULL nohasharray
110116+rxpipe_descr_host_int_trig_rx_data_read_22001 rxpipe_descr_host_int_trig_rx_data_read 3 22001 &compat_rw_copy_check_uvector_22001 116240+rxpipe_descr_host_int_trig_rx_data_read_22001 rxpipe_descr_host_int_trig_rx_data_read 3 22001 &compat_rw_copy_check_uvector_22001
110117+regcache_sync_block_raw_flush_22021 regcache_sync_block_raw_flush 3-4 22021 NULL 116241+regcache_sync_block_raw_flush_22021 regcache_sync_block_raw_flush 3-4 22021 NULL
110118+btrfs_get_16_22023 btrfs_get_16 0 22023 NULL 116242+btrfs_get_16_22023 btrfs_get_16 0 22023 NULL
110119+_sp2d_min_pg_22032 _sp2d_min_pg 0 22032 NULL 116243+_sp2d_min_pg_22032 _sp2d_min_pg 0 22032 NULL
116244+lookup_metapath_22039 lookup_metapath 0 22039 NULL
110120+zd_usb_read_fw_22049 zd_usb_read_fw 4 22049 NULL 116245+zd_usb_read_fw_22049 zd_usb_read_fw 4 22049 NULL
110121+ieee80211_if_fmt_dropped_frames_ttl_22054 ieee80211_if_fmt_dropped_frames_ttl 3 22054 NULL 116246+ieee80211_if_fmt_dropped_frames_ttl_22054 ieee80211_if_fmt_dropped_frames_ttl 3 22054 NULL
110122+btrfs_reloc_clone_csums_22077 btrfs_reloc_clone_csums 2-3 22077 NULL 116247+btrfs_reloc_clone_csums_22077 btrfs_reloc_clone_csums 2-3 22077 NULL
110123+mem_rw_22085 mem_rw 3 22085 NULL 116248+mem_rw_22085 mem_rw 3 22085 NULL
116249+xfs_bmapi_reserve_delalloc_22086 xfs_bmapi_reserve_delalloc 0 22086 NULL
110124+kstrtos32_from_user_22087 kstrtos32_from_user 2 22087 NULL 116250+kstrtos32_from_user_22087 kstrtos32_from_user 2 22087 NULL
110125+rt2x00debug_read_crypto_stats_22109 rt2x00debug_read_crypto_stats 3 22109 NULL 116251+rt2x00debug_read_crypto_stats_22109 rt2x00debug_read_crypto_stats 3 22109 NULL
116252+shmem_add_to_page_cache_22121 shmem_add_to_page_cache 0 22121 NULL
110126+snd_hda_codec_read_22130 snd_hda_codec_read 0 22130 NULL 116253+snd_hda_codec_read_22130 snd_hda_codec_read 0 22130 NULL
110127+SyS_sched_setaffinity_22148 SyS_sched_setaffinity 2 22148 NULL 116254+SyS_sched_setaffinity_22148 SyS_sched_setaffinity 2 22148 NULL
110128+do_tcp_sendpages_22155 do_tcp_sendpages 4 22155 NULL 116255+do_tcp_sendpages_22155 do_tcp_sendpages 4 22155 NULL
@@ -110134,28 +116261,23 @@ index 0000000..9529806
110134+compat_process_vm_rw_22254 compat_process_vm_rw 3-5 22254 NULL 116261+compat_process_vm_rw_22254 compat_process_vm_rw 3-5 22254 NULL
110135+ping_common_sendmsg_22261 ping_common_sendmsg 5 22261 NULL 116262+ping_common_sendmsg_22261 ping_common_sendmsg 5 22261 NULL
110136+add_res_tree_22263 add_res_tree 7 22263 NULL 116263+add_res_tree_22263 add_res_tree 7 22263 NULL
110137+__btrfs_direct_write_22273 __btrfs_direct_write 4 22273 NULL 116264+__btrfs_direct_write_22273 __btrfs_direct_write 4-0 22273 NULL
110138+queue_max_sectors_22280 queue_max_sectors 0 22280 NULL 116265+queue_max_sectors_22280 queue_max_sectors 0 22280 NULL
110139+__tun_chr_ioctl_22300 __tun_chr_ioctl 4 22300 NULL nohasharray 116266+__tun_chr_ioctl_22300 __tun_chr_ioctl 4 22300 NULL nohasharray
110140+pci_vpd_srdt_size_22300 pci_vpd_srdt_size 0 22300 &__tun_chr_ioctl_22300 116267+pci_vpd_srdt_size_22300 pci_vpd_srdt_size 0 22300 &__tun_chr_ioctl_22300
110141+mesh_table_alloc_22305 mesh_table_alloc 1 22305 NULL 116268+mesh_table_alloc_22305 mesh_table_alloc 1 22305 NULL
110142+lov_setstripe_22307 lov_setstripe 2 22307 NULL 116269+lov_setstripe_22307 lov_setstripe 2 22307 NULL
110143+udpv6_sendmsg_22316 udpv6_sendmsg 4 22316 NULL 116270+udpv6_sendmsg_22316 udpv6_sendmsg 4 22316 NULL
110144+C_SYSC_msgrcv_22320 C_SYSC_msgrcv 3 22320 NULL
110145+atomic_read_22342 atomic_read 0 22342 NULL 116271+atomic_read_22342 atomic_read 0 22342 NULL
110146+ll_lazystatfs_seq_write_22353 ll_lazystatfs_seq_write 3 22353 NULL 116272+ll_lazystatfs_seq_write_22353 ll_lazystatfs_seq_write 3 22353 NULL
110147+memcg_size_22360 memcg_size 0 22360 NULL
110148+snd_pcm_alsa_frames_22363 snd_pcm_alsa_frames 2 22363 NULL 116273+snd_pcm_alsa_frames_22363 snd_pcm_alsa_frames 2 22363 NULL
110149+evdev_ioctl_22371 evdev_ioctl 2 22371 NULL 116274+evdev_ioctl_22371 evdev_ioctl 2 22371 NULL
110150+alloc_large_system_hash_22391 alloc_large_system_hash 2 22391 NULL 116275+alloc_large_system_hash_22391 alloc_large_system_hash 2 22391 NULL
110151+zoran_write_22404 zoran_write 3 22404 NULL 116276+zoran_write_22404 zoran_write 3 22404 NULL
110152+ATOMIC_ADD_RETURN_22413 ATOMIC_ADD_RETURN 2 22413 NULL
110153+queue_reply_22416 queue_reply 3 22416 NULL 116277+queue_reply_22416 queue_reply 3 22416 NULL
110154+__set_enter_print_fmt_22431 __set_enter_print_fmt 0 22431 NULL 116278+__set_enter_print_fmt_22431 __set_enter_print_fmt 0 22431 NULL
110155+queue_max_segments_22441 queue_max_segments 0 22441 NULL 116279+queue_max_segments_22441 queue_max_segments 0 22441 NULL
110156+handle_received_packet_22457 handle_received_packet 3 22457 NULL 116280+handle_received_packet_22457 handle_received_packet 3 22457 NULL
110157+mem_cgroup_read_22461 mem_cgroup_read 5 22461 NULL
110158+source_sink_start_ep_22472 source_sink_start_ep 0 22472 NULL
110159+ecryptfs_write_22488 ecryptfs_write 4-3 22488 NULL 116281+ecryptfs_write_22488 ecryptfs_write 4-3 22488 NULL
110160+qib_user_sdma_alloc_header_22490 qib_user_sdma_alloc_header 2 22490 NULL 116282+qib_user_sdma_alloc_header_22490 qib_user_sdma_alloc_header 2 22490 NULL
110161+cache_write_procfs_22491 cache_write_procfs 3 22491 NULL 116283+cache_write_procfs_22491 cache_write_procfs 3 22491 NULL
@@ -110170,7 +116292,6 @@ index 0000000..9529806
110170+wl1271_rx_filter_get_fields_size_22638 wl1271_rx_filter_get_fields_size 0 22638 NULL 116292+wl1271_rx_filter_get_fields_size_22638 wl1271_rx_filter_get_fields_size 0 22638 NULL
110171+pwr_wake_on_timer_exp_read_22640 pwr_wake_on_timer_exp_read 3 22640 NULL 116293+pwr_wake_on_timer_exp_read_22640 pwr_wake_on_timer_exp_read 3 22640 NULL
110172+iwl_dbgfs_calib_disabled_read_22649 iwl_dbgfs_calib_disabled_read 3 22649 NULL 116294+iwl_dbgfs_calib_disabled_read_22649 iwl_dbgfs_calib_disabled_read 3 22649 NULL
110173+compat_SyS_msgrcv_22661 compat_SyS_msgrcv 3 22661 NULL
110174+ext4_ext_direct_IO_22679 ext4_ext_direct_IO 4 22679 NULL 116295+ext4_ext_direct_IO_22679 ext4_ext_direct_IO 4 22679 NULL
110175+l2tp_ip_recvmsg_22681 l2tp_ip_recvmsg 4 22681 NULL 116296+l2tp_ip_recvmsg_22681 l2tp_ip_recvmsg 4 22681 NULL
110176+bch_dump_read_22685 bch_dump_read 3 22685 NULL 116297+bch_dump_read_22685 bch_dump_read 3 22685 NULL
@@ -110179,35 +116300,40 @@ index 0000000..9529806
110179+cx18_copy_buf_to_user_22735 cx18_copy_buf_to_user 4-0 22735 NULL 116300+cx18_copy_buf_to_user_22735 cx18_copy_buf_to_user 4-0 22735 NULL
110180+ceph_decode_32_22738 ceph_decode_32 0 22738 NULL nohasharray 116301+ceph_decode_32_22738 ceph_decode_32 0 22738 NULL nohasharray
110181+__mei_cl_send_22738 __mei_cl_send 3 22738 &ceph_decode_32_22738 116302+__mei_cl_send_22738 __mei_cl_send 3 22738 &ceph_decode_32_22738
116303+__writeback_single_inode_22739 __writeback_single_inode 0 22739 NULL
110182+iio_debugfs_write_reg_22742 iio_debugfs_write_reg 3 22742 NULL 116304+iio_debugfs_write_reg_22742 iio_debugfs_write_reg 3 22742 NULL
110183+qlcnic_sriov_init_22762 qlcnic_sriov_init 2 22762 NULL 116305+qlcnic_sriov_init_22762 qlcnic_sriov_init 2 22762 NULL
110184+print_frame_22769 print_frame 0 22769 NULL 116306+print_frame_22769 print_frame 0 22769 NULL
110185+ftrace_arch_read_dyn_info_22773 ftrace_arch_read_dyn_info 0 22773 NULL 116307+ftrace_arch_read_dyn_info_22773 ftrace_arch_read_dyn_info 0 22773 NULL
116308+__break_lease_22777 __break_lease 0 22777 NULL
116309+vnic_dev_get_res_count_22791 vnic_dev_get_res_count 0 22791 NULL
110186+pla_ocp_write_22802 pla_ocp_write 4 22802 NULL 116310+pla_ocp_write_22802 pla_ocp_write 4 22802 NULL
110187+__generic_copy_to_user_intel_22806 __generic_copy_to_user_intel 0-3 22806 NULL 116311+__generic_copy_to_user_intel_22806 __generic_copy_to_user_intel 0-3 22806 NULL
110188+clone_bio_integrity_22842 clone_bio_integrity 4 22842 NULL
110189+read_file_rcstat_22854 read_file_rcstat 3 22854 NULL 116312+read_file_rcstat_22854 read_file_rcstat 3 22854 NULL
110190+create_attr_set_22861 create_attr_set 1 22861 NULL 116313+create_attr_set_22861 create_attr_set 1 22861 NULL
110191+hash_ip6_expire_22867 hash_ip6_expire 4 22867 NULL 116314+hash_ip6_expire_22867 hash_ip6_expire 4 22867 NULL
110192+vmw_execbuf_process_22885 vmw_execbuf_process 5 22885 NULL 116315+vmw_execbuf_process_22885 vmw_execbuf_process 5 22885 NULL
110193+usblp_new_writeurb_22894 usblp_new_writeurb 2 22894 NULL 116316+usblp_new_writeurb_22894 usblp_new_writeurb 2 22894 NULL
110194+mdc800_device_read_22896 mdc800_device_read 3 22896 NULL 116317+mdc800_device_read_22896 mdc800_device_read 3 22896 NULL
110195+policy_emit_config_values_22900 policy_emit_config_values 3 22900 NULL 116318+ion_handle_test_kernel_22900 ion_handle_test_kernel 4-3 22900 NULL nohasharray
116319+policy_emit_config_values_22900 policy_emit_config_values 3 22900 &ion_handle_test_kernel_22900
116320+__set_xattr_22923 __set_xattr 0 22923 NULL
110196+xstateregs_set_22932 xstateregs_set 4 22932 NULL 116321+xstateregs_set_22932 xstateregs_set 4 22932 NULL
110197+pcpu_mem_zalloc_22948 pcpu_mem_zalloc 1 22948 NULL 116322+pcpu_mem_zalloc_22948 pcpu_mem_zalloc 1 22948 NULL
110198+alloc_sglist_22960 alloc_sglist 2-3 22960 NULL 116323+alloc_sglist_22960 alloc_sglist 2-3 22960 NULL
110199+caif_seqpkt_sendmsg_22961 caif_seqpkt_sendmsg 4 22961 NULL 116324+caif_seqpkt_sendmsg_22961 caif_seqpkt_sendmsg 4 22961 NULL
110200+vme_get_size_22964 vme_get_size 0 22964 NULL 116325+vme_get_size_22964 vme_get_size 0 22964 NULL
110201+tx_frag_key_not_found_read_22971 tx_frag_key_not_found_read 3 22971 NULL 116326+tx_frag_key_not_found_read_22971 tx_frag_key_not_found_read 3 22971 NULL
116327+cached_dev_cache_miss_22979 cached_dev_cache_miss 4 22979 NULL
110202+usb_get_langid_22983 usb_get_langid 0 22983 NULL 116328+usb_get_langid_22983 usb_get_langid 0 22983 NULL
110203+remote_settings_file_write_22987 remote_settings_file_write 3 22987 NULL 116329+remote_settings_file_write_22987 remote_settings_file_write 3 22987 NULL
110204+brcmf_sdio_chip_exit_download_23001 brcmf_sdio_chip_exit_download 4 23001 NULL
110205+viafb_dvp0_proc_write_23023 viafb_dvp0_proc_write 3 23023 NULL 116330+viafb_dvp0_proc_write_23023 viafb_dvp0_proc_write 3 23023 NULL
110206+cifs_local_to_utf16_bytes_23025 cifs_local_to_utf16_bytes 0 23025 NULL 116331+cifs_local_to_utf16_bytes_23025 cifs_local_to_utf16_bytes 0 23025 NULL
110207+ocfs2_refcount_cow_xattr_23029 ocfs2_refcount_cow_xattr 0-6-7 23029 NULL 116332+ocfs2_refcount_cow_xattr_23029 ocfs2_refcount_cow_xattr 0 23029 NULL
110208+st_status_23032 st_status 5 23032 NULL 116333+st_status_23032 st_status 5 23032 NULL
110209+nv50_disp_chan_create__23056 nv50_disp_chan_create_ 5 23056 NULL 116334+nv50_disp_chan_create__23056 nv50_disp_chan_create_ 5 23056 NULL
110210+comedi_buf_write_n_available_23057 comedi_buf_write_n_available 0 23057 NULL 116335+comedi_buf_write_n_available_23057 comedi_buf_write_n_available 0 23057 NULL
116336+security_inode_killpriv_23060 security_inode_killpriv 0 23060 NULL
110211+reiserfs_add_entry_23062 reiserfs_add_entry 4 23062 NULL nohasharray 116337+reiserfs_add_entry_23062 reiserfs_add_entry 4 23062 NULL nohasharray
110212+unix_seqpacket_recvmsg_23062 unix_seqpacket_recvmsg 4 23062 &reiserfs_add_entry_23062 116338+unix_seqpacket_recvmsg_23062 unix_seqpacket_recvmsg 4 23062 &reiserfs_add_entry_23062
110213+mei_cl_send_23068 mei_cl_send 3 23068 NULL 116339+mei_cl_send_23068 mei_cl_send 3 23068 NULL
@@ -110217,10 +116343,12 @@ index 0000000..9529806
110217+isr_tx_procs_read_23084 isr_tx_procs_read 3 23084 NULL 116343+isr_tx_procs_read_23084 isr_tx_procs_read 3 23084 NULL
110218+rt2x00debug_write_eeprom_23091 rt2x00debug_write_eeprom 3 23091 NULL 116344+rt2x00debug_write_eeprom_23091 rt2x00debug_write_eeprom 3 23091 NULL
110219+ntfs_ucstonls_23097 ntfs_ucstonls 3-5 23097 NULL 116345+ntfs_ucstonls_23097 ntfs_ucstonls 3-5 23097 NULL
116346+xfs_dir_ialloc_23100 xfs_dir_ialloc 0 23100 NULL
110220+pipe_iov_copy_from_user_23102 pipe_iov_copy_from_user 3 23102 NULL 116347+pipe_iov_copy_from_user_23102 pipe_iov_copy_from_user 3 23102 NULL
110221+dgram_recvmsg_23104 dgram_recvmsg 4 23104 NULL 116348+dgram_recvmsg_23104 dgram_recvmsg 4 23104 NULL
110222+mwl8k_cmd_set_beacon_23110 mwl8k_cmd_set_beacon 4 23110 NULL 116349+mwl8k_cmd_set_beacon_23110 mwl8k_cmd_set_beacon 4 23110 NULL
110223+nl80211_send_rx_auth_23111 nl80211_send_rx_auth 4 23111 NULL 116350+nl80211_send_rx_auth_23111 nl80211_send_rx_auth 4 23111 NULL nohasharray
116351+bset_tree_bytes_23111 bset_tree_bytes 0 23111 &nl80211_send_rx_auth_23111
110224+__clear_user_23118 __clear_user 0-2 23118 NULL 116352+__clear_user_23118 __clear_user 0-2 23118 NULL
110225+drm_mode_create_tv_properties_23122 drm_mode_create_tv_properties 2 23122 NULL 116353+drm_mode_create_tv_properties_23122 drm_mode_create_tv_properties 2 23122 NULL
110226+ata_scsi_change_queue_depth_23126 ata_scsi_change_queue_depth 2 23126 NULL 116354+ata_scsi_change_queue_depth_23126 ata_scsi_change_queue_depth 2 23126 NULL
@@ -110242,14 +116370,16 @@ index 0000000..9529806
110242+__aa_kvmalloc_23320 __aa_kvmalloc 1 23320 NULL 116370+__aa_kvmalloc_23320 __aa_kvmalloc 1 23320 NULL
110243+page_readlink_23346 page_readlink 3 23346 NULL 116371+page_readlink_23346 page_readlink 3 23346 NULL
110244+kmem_zalloc_large_23351 kmem_zalloc_large 1 23351 NULL 116372+kmem_zalloc_large_23351 kmem_zalloc_large 1 23351 NULL
110245+get_dst_timing_23358 get_dst_timing 0 23358 NULL 116373+get_dst_timing_23358 get_dst_timing 0 23358 NULL nohasharray
116374+write_inode_23358 write_inode 0 23358 &get_dst_timing_23358
110246+fd_setup_write_same_buf_23369 fd_setup_write_same_buf 3 23369 NULL 116375+fd_setup_write_same_buf_23369 fd_setup_write_same_buf 3 23369 NULL
110247+iscsi_change_queue_depth_23416 iscsi_change_queue_depth 2 23416 NULL 116376+iscsi_change_queue_depth_23416 iscsi_change_queue_depth 2 23416 NULL
110248+vga_mm_r_23419 vga_mm_r 0 23419 NULL 116377+vga_mm_r_23419 vga_mm_r 0 23419 NULL
110249+ocfs2_zero_tail_23447 ocfs2_zero_tail 3 23447 NULL 116378+ocfs2_zero_tail_23447 ocfs2_zero_tail 3 23447 NULL
110250+hidraw_send_report_23449 hidraw_send_report 3 23449 NULL 116379+hidraw_send_report_23449 hidraw_send_report 3 23449 NULL
110251+__ata_change_queue_depth_23484 __ata_change_queue_depth 3 23484 NULL 116380+__ata_change_queue_depth_23484 __ata_change_queue_depth 3 23484 NULL
110252+linear_conf_23485 linear_conf 2 23485 NULL 116381+linear_conf_23485 linear_conf 2 23485 NULL nohasharray
116382+sync_mapping_buffers_23485 sync_mapping_buffers 0 23485 &linear_conf_23485
110253+event_filter_read_23494 event_filter_read 3 23494 NULL 116383+event_filter_read_23494 event_filter_read 3 23494 NULL
110254+lustre_acl_xattr_merge2ext_23502 lustre_acl_xattr_merge2ext 2 23502 NULL 116384+lustre_acl_xattr_merge2ext_23502 lustre_acl_xattr_merge2ext 2 23502 NULL
110255+devm_iio_device_alloc_23511 devm_iio_device_alloc 2 23511 NULL 116385+devm_iio_device_alloc_23511 devm_iio_device_alloc 2 23511 NULL
@@ -110262,6 +116392,7 @@ index 0000000..9529806
110262+xfpregs_get_23586 xfpregs_get 4 23586 NULL 116392+xfpregs_get_23586 xfpregs_get 4 23586 NULL
110263+snd_interval_min_23590 snd_interval_min 0 23590 NULL 116393+snd_interval_min_23590 snd_interval_min 0 23590 NULL
110264+islpci_mgt_transaction_23610 islpci_mgt_transaction 5 23610 NULL 116394+islpci_mgt_transaction_23610 islpci_mgt_transaction 5 23610 NULL
116395+xfs_qm_dqread_23613 xfs_qm_dqread 0 23613 NULL
110265+ocfs2_journal_access_23616 ocfs2_journal_access 0 23616 NULL 116396+ocfs2_journal_access_23616 ocfs2_journal_access 0 23616 NULL
110266+__i2400mu_send_barker_23652 __i2400mu_send_barker 3 23652 NULL 116397+__i2400mu_send_barker_23652 __i2400mu_send_barker 3 23652 NULL
110267+sInW_23663 sInW 0 23663 NULL 116398+sInW_23663 sInW 0 23663 NULL
@@ -110279,16 +116410,16 @@ index 0000000..9529806
110279+ocfs2_replace_cow_23803 ocfs2_replace_cow 0 23803 NULL 116410+ocfs2_replace_cow_23803 ocfs2_replace_cow 0 23803 NULL
110280+__earlyonly_bootmem_alloc_23824 __earlyonly_bootmem_alloc 2 23824 NULL 116411+__earlyonly_bootmem_alloc_23824 __earlyonly_bootmem_alloc 2 23824 NULL
110281+lustre_msg_buflen_23827 lustre_msg_buflen 0 23827 NULL 116412+lustre_msg_buflen_23827 lustre_msg_buflen 0 23827 NULL
110282+ceph_copy_page_vector_to_user_23829 ceph_copy_page_vector_to_user 3-4 23829 NULL 116413+ceph_copy_page_vector_to_user_23829 ceph_copy_page_vector_to_user 0-4-3 23829 NULL
110283+pgdat_end_pfn_23842 pgdat_end_pfn 0 23842 NULL 116414+pgdat_end_pfn_23842 pgdat_end_pfn 0 23842 NULL
110284+iwl_dbgfs_nvm_read_23845 iwl_dbgfs_nvm_read 3 23845 NULL 116415+iwl_dbgfs_nvm_read_23845 iwl_dbgfs_nvm_read 3 23845 NULL
110285+p54_init_common_23850 p54_init_common 1 23850 NULL 116416+p54_init_common_23850 p54_init_common 1 23850 NULL
110286+bin_to_hex_dup_23853 bin_to_hex_dup 2 23853 NULL 116417+bin_to_hex_dup_23853 bin_to_hex_dup 2 23853 NULL
110287+ocfs2_xattr_get_clusters_23857 ocfs2_xattr_get_clusters 0 23857 NULL 116418+ocfs2_xattr_get_clusters_23857 ocfs2_xattr_get_clusters 0 23857 NULL
110288+ieee80211_if_read_dot11MeshMaxPeerLinks_23878 ieee80211_if_read_dot11MeshMaxPeerLinks 3 23878 NULL 116419+ieee80211_if_read_dot11MeshMaxPeerLinks_23878 ieee80211_if_read_dot11MeshMaxPeerLinks 3 23878 NULL
110289+nouveau_clock_create__23881 nouveau_clock_create_ 5 23881 NULL 116420+nouveau_clock_create__23881 nouveau_clock_create_ 5 23881 NULL nohasharray
116421+writeback_single_inode_23881 writeback_single_inode 0 23881 &nouveau_clock_create__23881
110290+tipc_snprintf_23893 tipc_snprintf 2-0 23893 NULL 116422+tipc_snprintf_23893 tipc_snprintf 2-0 23893 NULL
110291+usbg_prepare_w_request_23895 usbg_prepare_w_request 0 23895 NULL
110292+add_new_gdb_meta_bg_23911 add_new_gdb_meta_bg 3 23911 NULL nohasharray 116423+add_new_gdb_meta_bg_23911 add_new_gdb_meta_bg 3 23911 NULL nohasharray
110293+ieee80211_if_read_hw_queues_23911 ieee80211_if_read_hw_queues 3 23911 &add_new_gdb_meta_bg_23911 116424+ieee80211_if_read_hw_queues_23911 ieee80211_if_read_hw_queues 3 23911 &add_new_gdb_meta_bg_23911
110294+f2fs_getxattr_23917 f2fs_getxattr 0 23917 NULL 116425+f2fs_getxattr_23917 f2fs_getxattr 0 23917 NULL
@@ -110312,7 +116443,8 @@ index 0000000..9529806
110312+lov_brw_24122 lov_brw 4 24122 NULL 116443+lov_brw_24122 lov_brw 4 24122 NULL
110313+mpu401_read_24126 mpu401_read 3-0 24126 NULL 116444+mpu401_read_24126 mpu401_read 3-0 24126 NULL
110314+_picolcd_flash_write_24134 _picolcd_flash_write 4 24134 NULL 116445+_picolcd_flash_write_24134 _picolcd_flash_write 4 24134 NULL
110315+irnet_ctrl_write_24139 irnet_ctrl_write 3 24139 NULL 116446+irnet_ctrl_write_24139 irnet_ctrl_write 3 24139 NULL nohasharray
116447+xfs_btree_increment_24139 xfs_btree_increment 0 24139 &irnet_ctrl_write_24139
110316+SyS_sethostname_24150 SyS_sethostname 2 24150 NULL 116448+SyS_sethostname_24150 SyS_sethostname 2 24150 NULL
110317+trim_bitmaps_24158 trim_bitmaps 3 24158 NULL 116449+trim_bitmaps_24158 trim_bitmaps 3 24158 NULL
110318+adu_read_24177 adu_read 3 24177 NULL 116450+adu_read_24177 adu_read 3 24177 NULL
@@ -110324,22 +116456,26 @@ index 0000000..9529806
110324+mei_amthif_read_24224 mei_amthif_read 4 24224 &pcpu_embed_first_chunk_24224 116456+mei_amthif_read_24224 mei_amthif_read 4 24224 &pcpu_embed_first_chunk_24224
110325+pci_num_vf_24235 pci_num_vf 0 24235 NULL 116457+pci_num_vf_24235 pci_num_vf 0 24235 NULL
110326+sel_read_bool_24236 sel_read_bool 3 24236 NULL 116458+sel_read_bool_24236 sel_read_bool 3 24236 NULL
116459+xfs_bmap_rtalloc_24237 xfs_bmap_rtalloc 0 24237 NULL
110327+em28xx_alloc_urbs_24260 em28xx_alloc_urbs 4-6 24260 NULL 116460+em28xx_alloc_urbs_24260 em28xx_alloc_urbs 4-6 24260 NULL
110328+calculate_sizes_24273 calculate_sizes 2 24273 NULL 116461+calculate_sizes_24273 calculate_sizes 2 24273 NULL
110329+thin_status_24278 thin_status 5 24278 NULL 116462+thin_status_24278 thin_status 5 24278 NULL
110330+msg_size_24288 msg_size 0 24288 NULL 116463+msg_size_24288 msg_size 0 24288 NULL
110331+gserial_connect_24302 gserial_connect 0 24302 NULL 116464+gserial_connect_24302 gserial_connect 0 24302 NULL
110332+btmrvl_pscmd_read_24308 btmrvl_pscmd_read 3 24308 NULL 116465+btmrvl_pscmd_read_24308 btmrvl_pscmd_read 3 24308 NULL
116466+reserve_metadata_bytes_24313 reserve_metadata_bytes 0 24313 NULL
110333+ath6kl_add_bss_if_needed_24317 ath6kl_add_bss_if_needed 6 24317 NULL 116467+ath6kl_add_bss_if_needed_24317 ath6kl_add_bss_if_needed 6 24317 NULL
110334+si476x_radio_read_acf_blob_24336 si476x_radio_read_acf_blob 3 24336 NULL 116468+si476x_radio_read_acf_blob_24336 si476x_radio_read_acf_blob 3 24336 NULL
110335+C_SYSC_pwritev_24345 C_SYSC_pwritev 3 24345 NULL 116469+prepare_pages_24349 prepare_pages 0 24349 NULL
110336+kzalloc_node_24352 kzalloc_node 1 24352 NULL 116470+kzalloc_node_24352 kzalloc_node 1 24352 NULL
110337+qla2x00_handle_queue_full_24365 qla2x00_handle_queue_full 2 24365 NULL 116471+qla2x00_handle_queue_full_24365 qla2x00_handle_queue_full 2 24365 NULL
110338+cfi_read_pri_24366 cfi_read_pri 3 24366 NULL 116472+cfi_read_pri_24366 cfi_read_pri 3 24366 NULL
110339+btrfs_item_size_nr_24367 btrfs_item_size_nr 0 24367 NULL 116473+btrfs_item_size_nr_24367 btrfs_item_size_nr 0 24367 NULL
110340+igetword_24373 igetword 0 24373 NULL 116474+igetword_24373 igetword 0 24373 NULL nohasharray
116475+break_deleg_24373 break_deleg 0 24373 &igetword_24373
110341+max_io_len_24384 max_io_len 0-1 24384 NULL 116476+max_io_len_24384 max_io_len 0-1 24384 NULL
110342+mpt_alloc_res_24387 mpt_alloc_res 5 24387 NULL 116477+mpt_alloc_res_24387 mpt_alloc_res 5 24387 NULL
116478+xfs_bmapi_read_24392 xfs_bmapi_read 0 24392 NULL
110343+osc_cur_grant_bytes_seq_write_24396 osc_cur_grant_bytes_seq_write 3 24396 NULL 116479+osc_cur_grant_bytes_seq_write_24396 osc_cur_grant_bytes_seq_write 3 24396 NULL
110344+getxattr_24398 getxattr 4 24398 NULL nohasharray 116480+getxattr_24398 getxattr 4 24398 NULL nohasharray
110345+pvr2_v4l2_ioctl_24398 pvr2_v4l2_ioctl 2 24398 &getxattr_24398 116481+pvr2_v4l2_ioctl_24398 pvr2_v4l2_ioctl 2 24398 &getxattr_24398
@@ -110369,12 +116505,13 @@ index 0000000..9529806
110369+SyS_poll_24620 SyS_poll 2 24620 NULL 116505+SyS_poll_24620 SyS_poll 2 24620 NULL
110370+context_alloc_24645 context_alloc 3 24645 NULL 116506+context_alloc_24645 context_alloc 3 24645 NULL
110371+blk_rq_err_bytes_24650 blk_rq_err_bytes 0 24650 NULL 116507+blk_rq_err_bytes_24650 blk_rq_err_bytes 0 24650 NULL
116508+xfs_log_commit_cil_24653 xfs_log_commit_cil 0 24653 NULL
116509+btrfs_check_data_free_space_24692 btrfs_check_data_free_space 0 24692 NULL
110372+datafab_write_data_24696 datafab_write_data 4 24696 NULL 116510+datafab_write_data_24696 datafab_write_data 4 24696 NULL
110373+intelfbhw_get_p1p2_24703 intelfbhw_get_p1p2 2 24703 NULL 116511+intelfbhw_get_p1p2_24703 intelfbhw_get_p1p2 2 24703 NULL
110374+simple_attr_read_24738 simple_attr_read 3 24738 NULL 116512+simple_attr_read_24738 simple_attr_read 3 24738 NULL
110375+qla2x00_change_queue_depth_24742 qla2x00_change_queue_depth 2 24742 NULL 116513+qla2x00_change_queue_depth_24742 qla2x00_change_queue_depth 2 24742 NULL
110376+get_dma_residue_24749 get_dma_residue 0 24749 NULL 116514+get_dma_residue_24749 get_dma_residue 0 24749 NULL
110377+ocfs2_cow_file_pos_24751 ocfs2_cow_file_pos 3 24751 NULL
110378+kgdb_hex2mem_24755 kgdb_hex2mem 3 24755 NULL 116515+kgdb_hex2mem_24755 kgdb_hex2mem 3 24755 NULL
110379+ocfs2_read_blocks_24777 ocfs2_read_blocks 0 24777 NULL 116516+ocfs2_read_blocks_24777 ocfs2_read_blocks 0 24777 NULL
110380+datablob_hmac_verify_24786 datablob_hmac_verify 4 24786 NULL 116517+datablob_hmac_verify_24786 datablob_hmac_verify 4 24786 NULL
@@ -110389,14 +116526,15 @@ index 0000000..9529806
110389+l2cap_create_basic_pdu_24869 l2cap_create_basic_pdu 3 24869 &pnp_alloc_24869 116526+l2cap_create_basic_pdu_24869 l2cap_create_basic_pdu 3 24869 &pnp_alloc_24869
110390+queues_read_24877 queues_read 3 24877 NULL 116527+queues_read_24877 queues_read 3 24877 NULL
110391+__vxge_hw_vp_initialize_24885 __vxge_hw_vp_initialize 2 24885 NULL 116528+__vxge_hw_vp_initialize_24885 __vxge_hw_vp_initialize 2 24885 NULL
116529+xfs_qm_dqattach_24898 xfs_qm_dqattach 0 24898 NULL
110392+codec_list_read_file_24910 codec_list_read_file 3 24910 NULL 116530+codec_list_read_file_24910 codec_list_read_file 3 24910 NULL
110393+v4l2_ctrl_new_24927 v4l2_ctrl_new 7 24927 NULL nohasharray 116531+v4l2_ctrl_new_24927 v4l2_ctrl_new 7 24927 NULL nohasharray
110394+__btrfs_free_extent_24927 __btrfs_free_extent 7 24927 &v4l2_ctrl_new_24927 116532+__btrfs_free_extent_24927 __btrfs_free_extent 7 24927 &v4l2_ctrl_new_24927
110395+ocfs2_fiemap_24949 ocfs2_fiemap 4-3 24949 NULL 116533+ocfs2_fiemap_24949 ocfs2_fiemap 4-3 24949 NULL
110396+packet_sendmsg_24954 packet_sendmsg 4 24954 NULL 116534+packet_sendmsg_24954 packet_sendmsg 4 24954 NULL
110397+ll_layout_fetch_24961 ll_layout_fetch 0 24961 NULL
110398+twl_i2c_write_u8_24976 twl_i2c_write_u8 3 24976 NULL 116535+twl_i2c_write_u8_24976 twl_i2c_write_u8 3 24976 NULL
110399+llc_ui_sendmsg_24987 llc_ui_sendmsg 4 24987 NULL 116536+llc_ui_sendmsg_24987 llc_ui_sendmsg 4 24987 NULL
116537+slot_get_24999 slot_get 0 24999 NULL
110400+key_conf_hw_key_idx_read_25003 key_conf_hw_key_idx_read 3 25003 NULL 116538+key_conf_hw_key_idx_read_25003 key_conf_hw_key_idx_read 3 25003 NULL
110401+il_dbgfs_channels_read_25005 il_dbgfs_channels_read 3 25005 NULL 116539+il_dbgfs_channels_read_25005 il_dbgfs_channels_read 3 25005 NULL
110402+ni_660x_num_counters_25031 ni_660x_num_counters 0 25031 NULL 116540+ni_660x_num_counters_25031 ni_660x_num_counters 0 25031 NULL
@@ -110406,10 +116544,10 @@ index 0000000..9529806
110406+gs_buf_alloc_25067 gs_buf_alloc 2 25067 NULL 116544+gs_buf_alloc_25067 gs_buf_alloc 2 25067 NULL
110407+ll_track_pid_seq_write_25068 ll_track_pid_seq_write 3 25068 NULL 116545+ll_track_pid_seq_write_25068 ll_track_pid_seq_write 3 25068 NULL
110408+SYSC_listxattr_25072 SYSC_listxattr 3 25072 NULL 116546+SYSC_listxattr_25072 SYSC_listxattr 3 25072 NULL
110409+iwl_dbgfs_tx_flush_write_25091 iwl_dbgfs_tx_flush_write 3 25091 NULL
110410+ima_appraise_measurement_25093 ima_appraise_measurement 6 25093 NULL 116547+ima_appraise_measurement_25093 ima_appraise_measurement 6 25093 NULL
110411+blkg_path_25099 blkg_path 3 25099 NULL 116548+blkg_path_25099 blkg_path 3 25099 NULL
110412+snd_rawmidi_kernel_write_25106 snd_rawmidi_kernel_write 3 25106 NULL 116549+snd_rawmidi_kernel_write_25106 snd_rawmidi_kernel_write 3 25106 NULL
116550+gfs2_quota_check_25130 gfs2_quota_check 0 25130 NULL
110413+ipath_init_qp_table_25167 ipath_init_qp_table 2 25167 NULL 116551+ipath_init_qp_table_25167 ipath_init_qp_table 2 25167 NULL
110414+kvm_mmu_notifier_change_pte_25169 kvm_mmu_notifier_change_pte 3 25169 NULL 116552+kvm_mmu_notifier_change_pte_25169 kvm_mmu_notifier_change_pte 3 25169 NULL
110415+sctp_getsockopt_local_addrs_25178 sctp_getsockopt_local_addrs 2 25178 NULL 116553+sctp_getsockopt_local_addrs_25178 sctp_getsockopt_local_addrs 2 25178 NULL
@@ -110425,24 +116563,27 @@ index 0000000..9529806
110425+unix_mkname_25368 unix_mkname 0-2 25368 NULL 116563+unix_mkname_25368 unix_mkname 0-2 25368 NULL
110426+sel_read_mls_25369 sel_read_mls 3 25369 NULL 116564+sel_read_mls_25369 sel_read_mls 3 25369 NULL
110427+vsp1_entity_init_25407 vsp1_entity_init 3 25407 NULL 116565+vsp1_entity_init_25407 vsp1_entity_init 3 25407 NULL
116566+xfs_ialloc_pagi_init_25411 xfs_ialloc_pagi_init 0 25411 NULL
110428+dai_list_read_file_25421 dai_list_read_file 3 25421 NULL 116567+dai_list_read_file_25421 dai_list_read_file 3 25421 NULL
110429+generic_file_buffered_write_25464 generic_file_buffered_write 4 25464 NULL 116568+xfs_qm_dqtobp_25448 xfs_qm_dqtobp 0 25448 NULL
116569+generic_file_buffered_write_25464 generic_file_buffered_write 4-0-7 25464 NULL
110430+ipath_decode_err_25468 ipath_decode_err 3 25468 NULL 116570+ipath_decode_err_25468 ipath_decode_err 3 25468 NULL
110431+crypto_hash_digestsize_25469 crypto_hash_digestsize 0 25469 NULL 116571+crypto_hash_digestsize_25469 crypto_hash_digestsize 0 25469 NULL
110432+ivtv_buf_copy_from_user_25502 ivtv_buf_copy_from_user 4-0 25502 NULL 116572+ivtv_buf_copy_from_user_25502 ivtv_buf_copy_from_user 4-0 25502 NULL
110433+snd_pcm_plugin_build_25505 snd_pcm_plugin_build 5 25505 NULL 116573+snd_pcm_plugin_build_25505 snd_pcm_plugin_build 5 25505 NULL
116574+xfs_alloc_fix_freelist_25514 xfs_alloc_fix_freelist 0 25514 NULL
110434+sb_permission_25523 sb_permission 0 25523 NULL 116575+sb_permission_25523 sb_permission 0 25523 NULL
110435+ext3_get_inode_loc_25542 ext3_get_inode_loc 0 25542 NULL 116576+ext3_get_inode_loc_25542 ext3_get_inode_loc 0 25542 NULL
110436+ieee80211_if_read_path_refresh_time_25545 ieee80211_if_read_path_refresh_time 3 25545 NULL 116577+ieee80211_if_read_path_refresh_time_25545 ieee80211_if_read_path_refresh_time 3 25545 NULL
110437+wimax_addr_scnprint_25548 wimax_addr_scnprint 2 25548 NULL 116578+wimax_addr_scnprint_25548 wimax_addr_scnprint 2 25548 NULL
110438+ht_print_chan_25556 ht_print_chan 3-4-0 25556 NULL 116579+ht_print_chan_25556 ht_print_chan 0-3-4 25556 NULL
110439+skb_tailroom_25567 skb_tailroom 0 25567 NULL 116580+skb_tailroom_25567 skb_tailroom 0 25567 NULL
110440+ping_recvmsg_25597 ping_recvmsg 4 25597 NULL 116581+ping_recvmsg_25597 ping_recvmsg 4 25597 NULL
110441+copy_user_generic_25611 copy_user_generic 0 25611 NULL 116582+copy_user_generic_25611 copy_user_generic 0 25611 NULL
110442+proc_coredump_filter_write_25625 proc_coredump_filter_write 3 25625 NULL 116583+proc_coredump_filter_write_25625 proc_coredump_filter_write 3 25625 NULL
110443+befs_utf2nls_25628 befs_utf2nls 3 25628 NULL nohasharray 116584+befs_utf2nls_25628 befs_utf2nls 3 25628 NULL nohasharray
110444+__get_user_pages_25628 __get_user_pages 0 25628 &befs_utf2nls_25628 116585+__get_user_pages_25628 __get_user_pages 0 25628 &befs_utf2nls_25628
110445+__direct_map_25647 __direct_map 6-5 25647 NULL 116586+__direct_map_25647 __direct_map 5-6 25647 NULL
110446+aircable_prepare_write_buffer_25669 aircable_prepare_write_buffer 3 25669 NULL 116587+aircable_prepare_write_buffer_25669 aircable_prepare_write_buffer 3 25669 NULL
110447+lpfc_idiag_cmd_get_25672 lpfc_idiag_cmd_get 2 25672 NULL 116588+lpfc_idiag_cmd_get_25672 lpfc_idiag_cmd_get 2 25672 NULL
110448+sta_inactive_ms_read_25690 sta_inactive_ms_read 3 25690 NULL 116589+sta_inactive_ms_read_25690 sta_inactive_ms_read 3 25690 NULL
@@ -110453,6 +116594,7 @@ index 0000000..9529806
110453+cxgbi_device_portmap_create_25747 cxgbi_device_portmap_create 3 25747 NULL 116594+cxgbi_device_portmap_create_25747 cxgbi_device_portmap_create 3 25747 NULL
110454+event_rx_pool_read_25792 event_rx_pool_read 3 25792 NULL 116595+event_rx_pool_read_25792 event_rx_pool_read 3 25792 NULL
110455+sg_read_25799 sg_read 3 25799 NULL 116596+sg_read_25799 sg_read 3 25799 NULL
116597+xfs_alloc_ag_vextent_exact_25810 xfs_alloc_ag_vextent_exact 0 25810 NULL
110456+system_enable_read_25815 system_enable_read 3 25815 NULL 116598+system_enable_read_25815 system_enable_read 3 25815 NULL
110457+realloc_buffer_25816 realloc_buffer 2 25816 NULL 116599+realloc_buffer_25816 realloc_buffer 2 25816 NULL
110458+pwr_missing_bcns_read_25824 pwr_missing_bcns_read 3 25824 NULL 116600+pwr_missing_bcns_read_25824 pwr_missing_bcns_read 3 25824 NULL
@@ -110473,11 +116615,10 @@ index 0000000..9529806
110473+udp_setsockopt_25985 udp_setsockopt 5 25985 NULL 116615+udp_setsockopt_25985 udp_setsockopt 5 25985 NULL
110474+lustre_msg_buflen_v2_25997 lustre_msg_buflen_v2 0 25997 NULL 116616+lustre_msg_buflen_v2_25997 lustre_msg_buflen_v2 0 25997 NULL
110475+SyS_process_vm_readv_26019 SyS_process_vm_readv 3-5 26019 NULL 116617+SyS_process_vm_readv_26019 SyS_process_vm_readv 3-5 26019 NULL
110476+xfs_xattr_acl_set_26028 xfs_xattr_acl_set 4 26028 NULL
110477+mptscsih_change_queue_depth_26036 mptscsih_change_queue_depth 2 26036 NULL 116618+mptscsih_change_queue_depth_26036 mptscsih_change_queue_depth 2 26036 NULL
110478+selinux_inode_post_setxattr_26037 selinux_inode_post_setxattr 4 26037 NULL 116619+selinux_inode_post_setxattr_26037 selinux_inode_post_setxattr 4 26037 NULL
110479+tun_do_read_26047 tun_do_read 5 26047 NULL
110480+keyctl_update_key_26061 keyctl_update_key 3 26061 NULL 116620+keyctl_update_key_26061 keyctl_update_key 3 26061 NULL
116621+btrfs_wait_ordered_range_26086 btrfs_wait_ordered_range 0 26086 NULL
110481+rx_rx_wa_density_dropped_frame_read_26095 rx_rx_wa_density_dropped_frame_read 3 26095 NULL 116622+rx_rx_wa_density_dropped_frame_read_26095 rx_rx_wa_density_dropped_frame_read 3 26095 NULL
110482+read_sb_page_26119 read_sb_page 5 26119 NULL 116623+read_sb_page_26119 read_sb_page 5 26119 NULL
110483+ath9k_hw_name_26146 ath9k_hw_name 3 26146 NULL 116624+ath9k_hw_name_26146 ath9k_hw_name 3 26146 NULL
@@ -110492,12 +116633,12 @@ index 0000000..9529806
110492+mwifiex_regrdwr_write_26225 mwifiex_regrdwr_write 3 26225 NULL 116633+mwifiex_regrdwr_write_26225 mwifiex_regrdwr_write 3 26225 NULL
110493+_scsih_change_queue_depth_26230 _scsih_change_queue_depth 2 26230 NULL 116634+_scsih_change_queue_depth_26230 _scsih_change_queue_depth 2 26230 NULL
110494+rxrpc_recvmsg_26233 rxrpc_recvmsg 4 26233 NULL 116635+rxrpc_recvmsg_26233 rxrpc_recvmsg 4 26233 NULL
110495+bio_split_26235 bio_split 2 26235 NULL 116636+simple_setattr_26234 simple_setattr 0 26234 NULL
116637+genwqe_ffdc_buff_size_26263 genwqe_ffdc_buff_size 0 26263 NULL
110496+crypto_ctxsize_26278 crypto_ctxsize 0 26278 NULL 116638+crypto_ctxsize_26278 crypto_ctxsize 0 26278 NULL
110497+apei_resources_request_26279 apei_resources_request 0 26279 NULL 116639+apei_resources_request_26279 apei_resources_request 0 26279 NULL
110498+wacom_set_device_mode_26280 wacom_set_device_mode 3 26280 NULL 116640+wacom_set_device_mode_26280 wacom_set_device_mode 3 26280 NULL
110499+snd_pcm_plug_client_channels_buf_26309 snd_pcm_plug_client_channels_buf 0-3 26309 NULL nohasharray 116641+snd_pcm_plug_client_channels_buf_26309 snd_pcm_plug_client_channels_buf 0-3 26309 NULL
110500+pax_get_random_long_26309 pax_get_random_long 0 26309 &snd_pcm_plug_client_channels_buf_26309
110501+pwr_wake_on_host_read_26321 pwr_wake_on_host_read 3 26321 NULL 116642+pwr_wake_on_host_read_26321 pwr_wake_on_host_read 3 26321 NULL
110502+check_can_nocow_26336 check_can_nocow 2 26336 NULL 116643+check_can_nocow_26336 check_can_nocow 2 26336 NULL
110503+snd_vx_check_reg_bit_26344 snd_vx_check_reg_bit 0 26344 NULL 116644+snd_vx_check_reg_bit_26344 snd_vx_check_reg_bit 0 26344 NULL
@@ -110516,15 +116657,19 @@ index 0000000..9529806
110516+uhid_char_write_26502 uhid_char_write 3 26502 NULL 116657+uhid_char_write_26502 uhid_char_write 3 26502 NULL
110517+vfio_pci_set_msi_trigger_26507 vfio_pci_set_msi_trigger 4-3 26507 NULL 116658+vfio_pci_set_msi_trigger_26507 vfio_pci_set_msi_trigger 4-3 26507 NULL
110518+iwl_dbgfs_rf_reset_read_26512 iwl_dbgfs_rf_reset_read 3 26512 NULL 116659+iwl_dbgfs_rf_reset_read_26512 iwl_dbgfs_rf_reset_read 3 26512 NULL
116660+alloc_ep_req_26521 alloc_ep_req 3-2 26521 NULL
110519+SyS_rt_sigpending_26538 SyS_rt_sigpending 2 26538 NULL 116661+SyS_rt_sigpending_26538 SyS_rt_sigpending 2 26538 NULL
110520+__vhost_add_used_n_26554 __vhost_add_used_n 3 26554 NULL 116662+__vhost_add_used_n_26554 __vhost_add_used_n 3 26554 NULL
110521+dio_new_bio_26562 dio_new_bio 0 26562 NULL 116663+dio_new_bio_26562 dio_new_bio 0 26562 NULL
110522+rts51x_read_mem_26577 rts51x_read_mem 4 26577 NULL 116664+rts51x_read_mem_26577 rts51x_read_mem 4 26577 NULL
116665+xfs_rtcheck_range_26614 xfs_rtcheck_range 0 26614 NULL
110523+pwr_fix_tsf_ps_read_26627 pwr_fix_tsf_ps_read 3 26627 NULL 116666+pwr_fix_tsf_ps_read_26627 pwr_fix_tsf_ps_read 3 26627 NULL
110524+irq_alloc_generic_chip_26650 irq_alloc_generic_chip 2 26650 NULL nohasharray 116667+irq_alloc_generic_chip_26650 irq_alloc_generic_chip 2 26650 NULL nohasharray
110525+inb_p_26650 inb_p 0 26650 &irq_alloc_generic_chip_26650 116668+inb_p_26650 inb_p 0 26650 &irq_alloc_generic_chip_26650
110526+nouveau_volt_create__26654 nouveau_volt_create_ 4 26654 NULL 116669+nouveau_volt_create__26654 nouveau_volt_create_ 4 26654 NULL
110527+cipso_v4_map_cat_rbm_hton_26680 cipso_v4_map_cat_rbm_hton 0 26680 NULL 116670+cipso_v4_map_cat_rbm_hton_26680 cipso_v4_map_cat_rbm_hton 0 26680 NULL
116671+flowinfo_read_26683 flowinfo_read 3 26683 NULL
116672+sysfs_add_file_26716 sysfs_add_file 0 26716 NULL
110528+nouveau_namedb_create__26732 nouveau_namedb_create_ 7 26732 NULL 116673+nouveau_namedb_create__26732 nouveau_namedb_create_ 7 26732 NULL
110529+pipeline_tcp_rx_stat_fifo_int_read_26745 pipeline_tcp_rx_stat_fifo_int_read 3 26745 NULL 116674+pipeline_tcp_rx_stat_fifo_int_read_26745 pipeline_tcp_rx_stat_fifo_int_read 3 26745 NULL
110530+bos_desc_26752 bos_desc 0 26752 NULL 116675+bos_desc_26752 bos_desc 0 26752 NULL
@@ -110534,11 +116679,15 @@ index 0000000..9529806
110534+cipso_v4_genopt_26812 cipso_v4_genopt 0 26812 NULL 116679+cipso_v4_genopt_26812 cipso_v4_genopt 0 26812 NULL
110535+iwl_trans_read_mem32_26825 iwl_trans_read_mem32 0 26825 NULL 116680+iwl_trans_read_mem32_26825 iwl_trans_read_mem32 0 26825 NULL
110536+smk_write_load_26829 smk_write_load 3 26829 NULL 116681+smk_write_load_26829 smk_write_load 3 26829 NULL
116682+xfs_alloc_pagf_init_26834 xfs_alloc_pagf_init 0 26834 NULL
110537+scnprint_id_26842 scnprint_id 3-0 26842 NULL 116683+scnprint_id_26842 scnprint_id 3-0 26842 NULL
110538+ecryptfs_miscdev_write_26847 ecryptfs_miscdev_write 3 26847 NULL 116684+ecryptfs_miscdev_write_26847 ecryptfs_miscdev_write 3 26847 NULL
116685+ss_alloc_ep_req_26848 ss_alloc_ep_req 2 26848 NULL
110539+tipc_conn_sendmsg_26867 tipc_conn_sendmsg 5 26867 NULL 116686+tipc_conn_sendmsg_26867 tipc_conn_sendmsg 5 26867 NULL
110540+ath6kl_create_qos_write_26879 ath6kl_create_qos_write 3 26879 NULL 116687+ath6kl_create_qos_write_26879 ath6kl_create_qos_write 3 26879 NULL
110541+svc_print_xprts_26881 svc_print_xprts 0 26881 NULL 116688+svc_print_xprts_26881 svc_print_xprts 0 26881 NULL
116689+skb_zerocopy_headlen_26910 skb_zerocopy_headlen 0 26910 NULL
116690+hhf_zalloc_26912 hhf_zalloc 1 26912 NULL
110542+cfg80211_process_auth_26916 cfg80211_process_auth 3 26916 NULL 116691+cfg80211_process_auth_26916 cfg80211_process_auth 3 26916 NULL
110543+x25_asy_change_mtu_26928 x25_asy_change_mtu 2 26928 NULL 116692+x25_asy_change_mtu_26928 x25_asy_change_mtu 2 26928 NULL
110544+scsi_tgt_copy_sense_26933 scsi_tgt_copy_sense 3 26933 NULL 116693+scsi_tgt_copy_sense_26933 scsi_tgt_copy_sense 3 26933 NULL
@@ -110548,6 +116697,7 @@ index 0000000..9529806
110548+do_trimming_26952 do_trimming 3 26952 NULL nohasharray 116697+do_trimming_26952 do_trimming 3 26952 NULL nohasharray
110549+extract_entropy_user_26952 extract_entropy_user 3 26952 &do_trimming_26952 116698+extract_entropy_user_26952 extract_entropy_user 3 26952 &do_trimming_26952
110550+do_direct_IO_26979 do_direct_IO 0 26979 NULL 116699+do_direct_IO_26979 do_direct_IO 0 26979 NULL
116700+xfs_filestream_associate_27030 xfs_filestream_associate 0 27030 NULL
110551+__videobuf_alloc_vb_27062 __videobuf_alloc_vb 1 27062 NULL 116701+__videobuf_alloc_vb_27062 __videobuf_alloc_vb 1 27062 NULL
110552+ext4_convert_unwritten_extents_27064 ext4_convert_unwritten_extents 4-3-0 27064 NULL 116702+ext4_convert_unwritten_extents_27064 ext4_convert_unwritten_extents 4-3-0 27064 NULL
110553+snd_pcm_lib_period_bytes_27071 snd_pcm_lib_period_bytes 0 27071 NULL 116703+snd_pcm_lib_period_bytes_27071 snd_pcm_lib_period_bytes 0 27071 NULL
@@ -110577,9 +116727,10 @@ index 0000000..9529806
110577+seq_read_27411 seq_read 3 27411 NULL 116727+seq_read_27411 seq_read 3 27411 NULL
110578+ib_dma_map_sg_27413 ib_dma_map_sg 0 27413 NULL 116728+ib_dma_map_sg_27413 ib_dma_map_sg 0 27413 NULL
110579+ieee80211_if_read_smps_27416 ieee80211_if_read_smps 3 27416 NULL 116729+ieee80211_if_read_smps_27416 ieee80211_if_read_smps 3 27416 NULL
110580+ocfs2_refcount_cal_cow_clusters_27422 ocfs2_refcount_cal_cow_clusters 0-3-4 27422 NULL 116730+ocfs2_refcount_cal_cow_clusters_27422 ocfs2_refcount_cal_cow_clusters 0 27422 NULL
110581+cypress_write_27423 cypress_write 4 27423 NULL 116731+cypress_write_27423 cypress_write 4 27423 NULL
110582+sddr09_read_data_27447 sddr09_read_data 3 27447 NULL 116732+sddr09_read_data_27447 sddr09_read_data 3 27447 NULL
116733+xfs_btree_lookup_get_block_27448 xfs_btree_lookup_get_block 0 27448 NULL
110583+v4l2_ctrl_new_std_menu_items_27487 v4l2_ctrl_new_std_menu_items 4 27487 NULL 116734+v4l2_ctrl_new_std_menu_items_27487 v4l2_ctrl_new_std_menu_items 4 27487 NULL
110584+hcd_buffer_alloc_27495 hcd_buffer_alloc 2 27495 NULL 116735+hcd_buffer_alloc_27495 hcd_buffer_alloc 2 27495 NULL
110585+ip_set_get_h32_27498 ip_set_get_h32 0 27498 NULL 116736+ip_set_get_h32_27498 ip_set_get_h32 0 27498 NULL
@@ -110594,7 +116745,8 @@ index 0000000..9529806
110594+ocfs2_xattr_ibody_get_27642 ocfs2_xattr_ibody_get 0 27642 NULL nohasharray 116745+ocfs2_xattr_ibody_get_27642 ocfs2_xattr_ibody_get 0 27642 NULL nohasharray
110595+nl80211_send_connect_result_27642 nl80211_send_connect_result 5-7 27642 &ocfs2_xattr_ibody_get_27642 nohasharray 116746+nl80211_send_connect_result_27642 nl80211_send_connect_result 5-7 27642 &ocfs2_xattr_ibody_get_27642 nohasharray
110596+read_flush_procfs_27642 read_flush_procfs 3 27642 &nl80211_send_connect_result_27642 nohasharray 116747+read_flush_procfs_27642 read_flush_procfs 3 27642 &nl80211_send_connect_result_27642 nohasharray
110597+ocfs2_direct_IO_27642 ocfs2_direct_IO 4 27642 &read_flush_procfs_27642 116748+ocfs2_direct_IO_27642 ocfs2_direct_IO 4 27642 &read_flush_procfs_27642 nohasharray
116749+xfs_alloc_vextent_27642 xfs_alloc_vextent 0 27642 &ocfs2_direct_IO_27642
110598+add_new_gdb_27643 add_new_gdb 3 27643 NULL 116750+add_new_gdb_27643 add_new_gdb 3 27643 NULL
110599+btrfs_fallocate_27647 btrfs_fallocate 3-4 27647 NULL 116751+btrfs_fallocate_27647 btrfs_fallocate 3-4 27647 NULL
110600+qnx6_readpages_27657 qnx6_readpages 4 27657 NULL 116752+qnx6_readpages_27657 qnx6_readpages 4 27657 NULL
@@ -110609,7 +116761,6 @@ index 0000000..9529806
110609+twl4030_set_gpio_dataout_27792 twl4030_set_gpio_dataout 1 27792 NULL 116761+twl4030_set_gpio_dataout_27792 twl4030_set_gpio_dataout 1 27792 NULL
110610+SyS_readv_27804 SyS_readv 3 27804 NULL 116762+SyS_readv_27804 SyS_readv 3 27804 NULL
110611+mpihelp_mul_27805 mpihelp_mul 5-3 27805 NULL 116763+mpihelp_mul_27805 mpihelp_mul 5-3 27805 NULL
110612+fwtty_buffer_rx_27821 fwtty_buffer_rx 3 27821 NULL
110613+hpt374_read_freq_27828 hpt374_read_freq 0 27828 NULL 116764+hpt374_read_freq_27828 hpt374_read_freq 0 27828 NULL
110614+init_header_complete_27833 init_header_complete 0 27833 NULL 116765+init_header_complete_27833 init_header_complete 0 27833 NULL
110615+read_profile_27859 read_profile 3 27859 NULL 116766+read_profile_27859 read_profile 3 27859 NULL
@@ -110617,13 +116768,17 @@ index 0000000..9529806
110617+ieee80211_if_read_dot11MeshHWMProotInterval_27873 ieee80211_if_read_dot11MeshHWMProotInterval 3 27873 NULL 116768+ieee80211_if_read_dot11MeshHWMProotInterval_27873 ieee80211_if_read_dot11MeshHWMProotInterval 3 27873 NULL
110618+unix_seqpacket_sendmsg_27893 unix_seqpacket_sendmsg 4 27893 NULL 116769+unix_seqpacket_sendmsg_27893 unix_seqpacket_sendmsg 4 27893 NULL
110619+check_mapped_name_27943 check_mapped_name 3 27943 NULL 116770+check_mapped_name_27943 check_mapped_name 3 27943 NULL
110620+tracing_clock_write_27961 tracing_clock_write 3 27961 NULL 116771+bio_next_split_27961 bio_next_split 2 27961 NULL nohasharray
116772+tracing_clock_write_27961 tracing_clock_write 3 27961 &bio_next_split_27961
116773+security_path_chown_27966 security_path_chown 0 27966 NULL
110621+tipc_media_addr_printf_27971 tipc_media_addr_printf 2 27971 NULL 116774+tipc_media_addr_printf_27971 tipc_media_addr_printf 2 27971 NULL
110622+device_register_27972 device_register 0 27972 NULL nohasharray 116775+device_register_27972 device_register 0 27972 NULL nohasharray
110623+mic_rx_pkts_read_27972 mic_rx_pkts_read 3 27972 &device_register_27972 116776+mic_rx_pkts_read_27972 mic_rx_pkts_read 3 27972 &device_register_27972
110624+pci_enable_device_flags_27977 pci_enable_device_flags 0 27977 NULL 116777+xfs_alloc_fixup_trees_27975 xfs_alloc_fixup_trees 0 27975 NULL
110625+f2fs_bio_alloc_27983 f2fs_bio_alloc 2 27983 NULL 116778+pci_enable_device_flags_27977 pci_enable_device_flags 0 27977 NULL nohasharray
116779+__kernfs_setattr_27977 __kernfs_setattr 0 27977 &pci_enable_device_flags_27977
110626+edt_ft5x06_debugfs_raw_data_read_28002 edt_ft5x06_debugfs_raw_data_read 3 28002 NULL 116780+edt_ft5x06_debugfs_raw_data_read_28002 edt_ft5x06_debugfs_raw_data_read 3 28002 NULL
116781+seq_get_buf_28006 seq_get_buf 0 28006 NULL
110627+snd_rawmidi_write_28008 snd_rawmidi_write 3 28008 NULL 116782+snd_rawmidi_write_28008 snd_rawmidi_write 3 28008 NULL
110628+powercap_register_zone_28028 powercap_register_zone 6 28028 NULL 116783+powercap_register_zone_28028 powercap_register_zone 6 28028 NULL
110629+sctp_setsockopt_maxburst_28041 sctp_setsockopt_maxburst 3 28041 NULL 116784+sctp_setsockopt_maxburst_28041 sctp_setsockopt_maxburst 3 28041 NULL
@@ -110636,6 +116791,7 @@ index 0000000..9529806
110636+mmc_test_alloc_mem_28102 mmc_test_alloc_mem 3-2 28102 NULL 116791+mmc_test_alloc_mem_28102 mmc_test_alloc_mem 3-2 28102 NULL
110637+rx_defrag_need_defrag_read_28117 rx_defrag_need_defrag_read 3 28117 NULL 116792+rx_defrag_need_defrag_read_28117 rx_defrag_need_defrag_read 3 28117 NULL
110638+vgacon_adjust_height_28124 vgacon_adjust_height 2 28124 NULL 116793+vgacon_adjust_height_28124 vgacon_adjust_height 2 28124 NULL
116794+memblock_virt_alloc_from_nopanic_28146 memblock_virt_alloc_from_nopanic 1 28146 NULL
110639+video_read_28148 video_read 3 28148 NULL 116795+video_read_28148 video_read 3 28148 NULL
110640+snd_midi_channel_alloc_set_28153 snd_midi_channel_alloc_set 1 28153 NULL 116796+snd_midi_channel_alloc_set_28153 snd_midi_channel_alloc_set 1 28153 NULL
110641+stats_dot11FCSErrorCount_read_28154 stats_dot11FCSErrorCount_read 3 28154 NULL 116797+stats_dot11FCSErrorCount_read_28154 stats_dot11FCSErrorCount_read 3 28154 NULL
@@ -110655,6 +116811,8 @@ index 0000000..9529806
110655+kstrtos16_from_user_28300 kstrtos16_from_user 2 28300 NULL 116811+kstrtos16_from_user_28300 kstrtos16_from_user 2 28300 NULL
110656+nouveau_compat_ioctl_28305 nouveau_compat_ioctl 2 28305 NULL 116812+nouveau_compat_ioctl_28305 nouveau_compat_ioctl 2 28305 NULL
110657+snd_pcm_oss_read_28317 snd_pcm_oss_read 3 28317 NULL 116813+snd_pcm_oss_read_28317 snd_pcm_oss_read 3 28317 NULL
116814+security_inode_link_28327 security_inode_link 0 28327 NULL
116815+generic_write_checks_28329 generic_write_checks 0 28329 NULL
110658+bm_entry_write_28338 bm_entry_write 3 28338 NULL 116816+bm_entry_write_28338 bm_entry_write 3 28338 NULL
110659+tcp_copy_to_iovec_28344 tcp_copy_to_iovec 3 28344 NULL 116817+tcp_copy_to_iovec_28344 tcp_copy_to_iovec 3 28344 NULL
110660+snapshot_write_28351 snapshot_write 3 28351 NULL 116818+snapshot_write_28351 snapshot_write 3 28351 NULL
@@ -110666,9 +116824,11 @@ index 0000000..9529806
110666+subdev_ioctl_28417 subdev_ioctl 2 28417 NULL 116824+subdev_ioctl_28417 subdev_ioctl 2 28417 NULL
110667+ksocknal_alloc_tx_28426 ksocknal_alloc_tx 2 28426 NULL 116825+ksocknal_alloc_tx_28426 ksocknal_alloc_tx 2 28426 NULL
110668+mpage_readpages_28436 mpage_readpages 3 28436 NULL 116826+mpage_readpages_28436 mpage_readpages 3 28436 NULL
116827+xfs_rtfind_back_28450 xfs_rtfind_back 0 28450 NULL
110669+snd_emu10k1_efx_read_28452 snd_emu10k1_efx_read 2 28452 NULL 116828+snd_emu10k1_efx_read_28452 snd_emu10k1_efx_read 2 28452 NULL
110670+key_mic_failures_read_28457 key_mic_failures_read 3 28457 NULL 116829+key_mic_failures_read_28457 key_mic_failures_read 3 28457 NULL
110671+alloc_irq_cpu_rmap_28459 alloc_irq_cpu_rmap 1 28459 NULL 116830+alloc_irq_cpu_rmap_28459 alloc_irq_cpu_rmap 1 28459 NULL
116831+__filemap_fdatawrite_28485 __filemap_fdatawrite 0 28485 NULL
110672+ps_poll_upsd_utilization_read_28519 ps_poll_upsd_utilization_read 3 28519 NULL 116832+ps_poll_upsd_utilization_read_28519 ps_poll_upsd_utilization_read 3 28519 NULL
110673+i2400m_tx_stats_read_28527 i2400m_tx_stats_read 3 28527 NULL 116833+i2400m_tx_stats_read_28527 i2400m_tx_stats_read 3 28527 NULL
110674+sel_read_policycap_28544 sel_read_policycap 3 28544 NULL 116834+sel_read_policycap_28544 sel_read_policycap 3 28544 NULL
@@ -110678,12 +116838,14 @@ index 0000000..9529806
110678+sysfs_create_bin_file_28551 sysfs_create_bin_file 0 28551 NULL 116838+sysfs_create_bin_file_28551 sysfs_create_bin_file 0 28551 NULL
110679+b43legacy_debugfs_write_28556 b43legacy_debugfs_write 3 28556 NULL 116839+b43legacy_debugfs_write_28556 b43legacy_debugfs_write 3 28556 NULL
110680+asymmetric_verify_28567 asymmetric_verify 3 28567 NULL 116840+asymmetric_verify_28567 asymmetric_verify 3 28567 NULL
116841+gfs2_meta_indirect_buffer_28573 gfs2_meta_indirect_buffer 0 28573 NULL
110681+oxygen_read32_28582 oxygen_read32 0 28582 NULL 116842+oxygen_read32_28582 oxygen_read32 0 28582 NULL
110682+extract_entropy_28604 extract_entropy 5-3 28604 NULL 116843+extract_entropy_28604 extract_entropy 5-3 28604 NULL
110683+kfifo_unused_28612 kfifo_unused 0 28612 NULL 116844+kfifo_unused_28612 kfifo_unused 0 28612 NULL
110684+snd_nm256_capture_copy_28622 snd_nm256_capture_copy 5-3 28622 NULL 116845+snd_nm256_capture_copy_28622 snd_nm256_capture_copy 5-3 28622 NULL
110685+setup_usemap_28636 setup_usemap 3-4 28636 NULL 116846+setup_usemap_28636 setup_usemap 3-4 28636 NULL
110686+qib_handle_6120_hwerrors_28642 qib_handle_6120_hwerrors 3 28642 NULL 116847+qib_handle_6120_hwerrors_28642 qib_handle_6120_hwerrors 3 28642 NULL
116848+xfs_bmap_finish_28644 xfs_bmap_finish 0 28644 NULL
110687+p9_fcall_alloc_28652 p9_fcall_alloc 1 28652 NULL 116849+p9_fcall_alloc_28652 p9_fcall_alloc 1 28652 NULL
110688+read_nic_io_byte_28654 read_nic_io_byte 0 28654 NULL 116850+read_nic_io_byte_28654 read_nic_io_byte 0 28654 NULL
110689+blk_queue_resize_tags_28670 blk_queue_resize_tags 2 28670 NULL 116851+blk_queue_resize_tags_28670 blk_queue_resize_tags 2 28670 NULL
@@ -110697,7 +116859,6 @@ index 0000000..9529806
110697+rpc_pipe_generic_upcall_28766 rpc_pipe_generic_upcall 4 28766 NULL 116859+rpc_pipe_generic_upcall_28766 rpc_pipe_generic_upcall 4 28766 NULL
110698+ath6kl_get_num_reg_28780 ath6kl_get_num_reg 0 28780 NULL 116860+ath6kl_get_num_reg_28780 ath6kl_get_num_reg 0 28780 NULL
110699+sel_write_member_28800 sel_write_member 3 28800 NULL 116861+sel_write_member_28800 sel_write_member 3 28800 NULL
110700+cgroup_file_read_28804 cgroup_file_read 3 28804 NULL
110701+iwl_dbgfs_rxon_filter_flags_read_28832 iwl_dbgfs_rxon_filter_flags_read 3 28832 NULL 116862+iwl_dbgfs_rxon_filter_flags_read_28832 iwl_dbgfs_rxon_filter_flags_read 3 28832 NULL
110702+vp_request_msix_vectors_28849 vp_request_msix_vectors 2 28849 NULL 116863+vp_request_msix_vectors_28849 vp_request_msix_vectors 2 28849 NULL
110703+ipv6_renew_options_28867 ipv6_renew_options 5 28867 NULL 116864+ipv6_renew_options_28867 ipv6_renew_options 5 28867 NULL
@@ -110707,9 +116868,11 @@ index 0000000..9529806
110707+ps_upsd_timeouts_read_28924 ps_upsd_timeouts_read 3 28924 NULL 116868+ps_upsd_timeouts_read_28924 ps_upsd_timeouts_read 3 28924 NULL
110708+iwl_dbgfs_sleep_level_override_write_28925 iwl_dbgfs_sleep_level_override_write 3 28925 NULL 116869+iwl_dbgfs_sleep_level_override_write_28925 iwl_dbgfs_sleep_level_override_write 3 28925 NULL
110709+push_rx_28939 push_rx 3 28939 NULL 116870+push_rx_28939 push_rx 3 28939 NULL
116871+mxuport_prepare_write_buffer_28943 mxuport_prepare_write_buffer 3 28943 NULL
110710+btrfs_trim_block_group_28963 btrfs_trim_block_group 3-4 28963 NULL 116872+btrfs_trim_block_group_28963 btrfs_trim_block_group 3-4 28963 NULL
110711+alloc_sched_domains_28972 alloc_sched_domains 1 28972 NULL 116873+alloc_sched_domains_28972 alloc_sched_domains 1 28972 NULL
110712+hash_net6_expire_28979 hash_net6_expire 4 28979 NULL 116874+hash_net6_expire_28979 hash_net6_expire 4 28979 NULL
116875+xfs_alloc_update_28982 xfs_alloc_update 0 28982 NULL
110713+hci_sock_setsockopt_28993 hci_sock_setsockopt 5 28993 NULL 116876+hci_sock_setsockopt_28993 hci_sock_setsockopt 5 28993 NULL
110714+bin_uuid_28999 bin_uuid 3 28999 NULL 116877+bin_uuid_28999 bin_uuid 3 28999 NULL
110715+fd_execute_rw_29004 fd_execute_rw 3 29004 NULL 116878+fd_execute_rw_29004 fd_execute_rw 3 29004 NULL
@@ -110717,11 +116880,12 @@ index 0000000..9529806
110717+rxrpc_sendmsg_29049 rxrpc_sendmsg 4 29049 NULL 116880+rxrpc_sendmsg_29049 rxrpc_sendmsg 4 29049 NULL
110718+btrfs_root_bytenr_29058 btrfs_root_bytenr 0 29058 NULL 116881+btrfs_root_bytenr_29058 btrfs_root_bytenr 0 29058 NULL
110719+iso_packets_buffer_init_29061 iso_packets_buffer_init 3-4 29061 NULL 116882+iso_packets_buffer_init_29061 iso_packets_buffer_init 3-4 29061 NULL
110720+roundup_64_29066 roundup_64 2-0-1 29066 NULL
110721+lpfc_idiag_extacc_drivr_get_29067 lpfc_idiag_extacc_drivr_get 0-3 29067 NULL 116883+lpfc_idiag_extacc_drivr_get_29067 lpfc_idiag_extacc_drivr_get 0-3 29067 NULL
110722+sctp_getsockopt_assoc_stats_29074 sctp_getsockopt_assoc_stats 2 29074 NULL 116884+sctp_getsockopt_assoc_stats_29074 sctp_getsockopt_assoc_stats 2 29074 NULL
116885+xfs_alloc_ag_vextent_small_29084 xfs_alloc_ag_vextent_small 0 29084 NULL
110723+iwl_dbgfs_log_event_write_29088 iwl_dbgfs_log_event_write 3 29088 NULL 116886+iwl_dbgfs_log_event_write_29088 iwl_dbgfs_log_event_write 3 29088 NULL
110724+i915_error_object_create_sized_29091 i915_error_object_create_sized 3 29091 NULL 116887+i915_error_object_create_sized_29091 i915_error_object_create_sized 3 29091 NULL
116888+ccp_init_dm_workarea_29097 ccp_init_dm_workarea 3 29097 NULL
110725+isdn_ppp_write_29109 isdn_ppp_write 4 29109 NULL 116889+isdn_ppp_write_29109 isdn_ppp_write 4 29109 NULL
110726+snprintf_29125 snprintf 0 29125 NULL 116890+snprintf_29125 snprintf 0 29125 NULL
110727+iov_shorten_29130 iov_shorten 0 29130 NULL 116891+iov_shorten_29130 iov_shorten 0 29130 NULL
@@ -110736,14 +116900,15 @@ index 0000000..9529806
110736+security_context_to_sid_core_29248 security_context_to_sid_core 2 29248 NULL 116900+security_context_to_sid_core_29248 security_context_to_sid_core 2 29248 NULL
110737+prism2_set_genericelement_29277 prism2_set_genericelement 3 29277 NULL 116901+prism2_set_genericelement_29277 prism2_set_genericelement 3 29277 NULL
110738+ext4_fiemap_29296 ext4_fiemap 4 29296 NULL 116902+ext4_fiemap_29296 ext4_fiemap 4 29296 NULL
116903+xfs_bmap_btree_to_extents_29297 xfs_bmap_btree_to_extents 0 29297 NULL
110739+sn9c102_read_29305 sn9c102_read 3 29305 NULL 116904+sn9c102_read_29305 sn9c102_read 3 29305 NULL
110740+__fuse_get_req_29315 __fuse_get_req 2 29315 NULL 116905+__fuse_get_req_29315 __fuse_get_req 2 29315 NULL
110741+lprocfs_write_helper_29323 lprocfs_write_helper 2 29323 NULL 116906+lprocfs_write_helper_29323 lprocfs_write_helper 2 29323 NULL
116907+xfs_bmbt_change_owner_29325 xfs_bmbt_change_owner 0 29325 NULL
110742+kvm_handle_hva_29326 kvm_handle_hva 2 29326 NULL 116908+kvm_handle_hva_29326 kvm_handle_hva 2 29326 NULL
110743+tun_put_user_29337 tun_put_user 5 29337 NULL 116909+tun_put_user_29337 tun_put_user 5 29337 NULL
110744+__alloc_ei_netdev_29338 __alloc_ei_netdev 1 29338 NULL 116910+__alloc_ei_netdev_29338 __alloc_ei_netdev 1 29338 NULL
110745+l2cap_sock_setsockopt_old_29346 l2cap_sock_setsockopt_old 4 29346 NULL 116911+l2cap_sock_setsockopt_old_29346 l2cap_sock_setsockopt_old 4 29346 NULL
110746+mwifiex_cfg80211_mgmt_tx_29387 mwifiex_cfg80211_mgmt_tx 7 29387 NULL
110747+read_file_tx99_power_29405 read_file_tx99_power 3 29405 NULL 116912+read_file_tx99_power_29405 read_file_tx99_power 3 29405 NULL
110748+mempool_create_29437 mempool_create 1 29437 NULL 116913+mempool_create_29437 mempool_create 1 29437 NULL
110749+crypto_ahash_alignmask_29445 crypto_ahash_alignmask 0 29445 NULL 116914+crypto_ahash_alignmask_29445 crypto_ahash_alignmask 0 29445 NULL
@@ -110754,19 +116919,23 @@ index 0000000..9529806
110754+simple_strtoul_29480 simple_strtoul 0 29480 NULL 116919+simple_strtoul_29480 simple_strtoul 0 29480 NULL
110755+btmrvl_pscmd_write_29504 btmrvl_pscmd_write 3 29504 NULL 116920+btmrvl_pscmd_write_29504 btmrvl_pscmd_write 3 29504 NULL
110756+btrfs_file_extent_disk_bytenr_29505 btrfs_file_extent_disk_bytenr 0 29505 NULL 116921+btrfs_file_extent_disk_bytenr_29505 btrfs_file_extent_disk_bytenr 0 29505 NULL
116922+usnic_vnic_spec_dump_29508 usnic_vnic_spec_dump 2 29508 NULL
110757+write_file_regidx_29517 write_file_regidx 3 29517 NULL 116923+write_file_regidx_29517 write_file_regidx 3 29517 NULL
110758+atk_debugfs_ggrp_read_29522 atk_debugfs_ggrp_read 3 29522 NULL 116924+atk_debugfs_ggrp_read_29522 atk_debugfs_ggrp_read 3 29522 NULL
116925+add_to_page_cache_lru_29534 add_to_page_cache_lru 0 29534 NULL
110759+ftrace_write_29551 ftrace_write 3 29551 NULL 116926+ftrace_write_29551 ftrace_write 3 29551 NULL
110760+idetape_queue_rw_tail_29562 idetape_queue_rw_tail 3 29562 NULL 116927+idetape_queue_rw_tail_29562 idetape_queue_rw_tail 3 29562 NULL
110761+leaf_dealloc_29566 leaf_dealloc 3 29566 NULL 116928+leaf_dealloc_29566 leaf_dealloc 3 29566 NULL
110762+kvm_read_guest_virt_system_29569 kvm_read_guest_virt_system 4-2 29569 NULL 116929+kvm_read_guest_virt_system_29569 kvm_read_guest_virt_system 4-2 29569 NULL
110763+lbs_lowsnr_read_29571 lbs_lowsnr_read 3 29571 NULL 116930+lbs_lowsnr_read_29571 lbs_lowsnr_read 3 29571 NULL
116931+security_path_chmod_29578 security_path_chmod 0 29578 NULL
110764+iwl_dbgfs_missed_beacon_write_29586 iwl_dbgfs_missed_beacon_write 3 29586 NULL 116932+iwl_dbgfs_missed_beacon_write_29586 iwl_dbgfs_missed_beacon_write 3 29586 NULL
110765+pvr2_hdw_report_unlocked_29589 pvr2_hdw_report_unlocked 4-0 29589 NULL 116933+pvr2_hdw_report_unlocked_29589 pvr2_hdw_report_unlocked 4-0 29589 NULL
110766+dio_set_defer_completion_29599 dio_set_defer_completion 0 29599 NULL 116934+dio_set_defer_completion_29599 dio_set_defer_completion 0 29599 NULL
110767+slots_per_page_29601 slots_per_page 0 29601 NULL 116935+slots_per_page_29601 slots_per_page 0 29601 NULL
110768+osc_cached_mb_seq_write_29610 osc_cached_mb_seq_write 3 29610 NULL 116936+osc_cached_mb_seq_write_29610 osc_cached_mb_seq_write 3 29610 NULL
110769+nla_get_u16_29624 nla_get_u16 0 29624 NULL 116937+nla_get_u16_29624 nla_get_u16 0 29624 NULL
116938+gfs2_alloc_blocks_29630 gfs2_alloc_blocks 0 29630 NULL
110770+tx_frag_cache_hit_read_29639 tx_frag_cache_hit_read 3 29639 NULL 116939+tx_frag_cache_hit_read_29639 tx_frag_cache_hit_read 3 29639 NULL
110771+sctp_make_abort_user_29654 sctp_make_abort_user 3 29654 NULL 116940+sctp_make_abort_user_29654 sctp_make_abort_user 3 29654 NULL
110772+sisusb_write_mem_bulk_29678 sisusb_write_mem_bulk 4 29678 NULL 116941+sisusb_write_mem_bulk_29678 sisusb_write_mem_bulk 4 29678 NULL
@@ -110781,40 +116950,45 @@ index 0000000..9529806
110781+__probe_kernel_write_29842 __probe_kernel_write 3 29842 NULL 116950+__probe_kernel_write_29842 __probe_kernel_write 3 29842 NULL
110782+kvm_read_hva_atomic_29848 kvm_read_hva_atomic 3 29848 NULL 116951+kvm_read_hva_atomic_29848 kvm_read_hva_atomic 3 29848 NULL
110783+count_partial_29850 count_partial 0 29850 NULL 116952+count_partial_29850 count_partial 0 29850 NULL
116953+xfs_rtfind_forw_29866 xfs_rtfind_forw 0 29866 NULL
110784+write_file_bool_bmps_29870 write_file_bool_bmps 3 29870 NULL 116954+write_file_bool_bmps_29870 write_file_bool_bmps 3 29870 NULL
110785+ipv6_setsockopt_29871 ipv6_setsockopt 5 29871 NULL 116955+ipv6_setsockopt_29871 ipv6_setsockopt 5 29871 NULL
110786+scsi_end_request_29876 scsi_end_request 3 29876 NULL 116956+scsi_end_request_29876 scsi_end_request 3 29876 NULL
110787+crypto_aead_alignmask_29885 crypto_aead_alignmask 0 29885 NULL 116957+crypto_aead_alignmask_29885 crypto_aead_alignmask 0 29885 NULL
116958+xfs_alloc_read_agf_29893 xfs_alloc_read_agf 0 29893 NULL
110788+lov_ost_pool_extend_29914 lov_ost_pool_extend 2 29914 NULL 116959+lov_ost_pool_extend_29914 lov_ost_pool_extend 2 29914 NULL
110789+write_file_queue_29922 write_file_queue 3 29922 NULL 116960+write_file_queue_29922 write_file_queue 3 29922 NULL
110790+ext4_xattr_set_acl_29930 ext4_xattr_set_acl 4 29930 NULL
110791+__btrfs_getxattr_29947 __btrfs_getxattr 0 29947 NULL nohasharray 116961+__btrfs_getxattr_29947 __btrfs_getxattr 0 29947 NULL nohasharray
110792+ipv6_recv_error_29947 ipv6_recv_error 3 29947 &__btrfs_getxattr_29947 116962+ipv6_recv_error_29947 ipv6_recv_error 3 29947 &__btrfs_getxattr_29947
110793+dev_mem_write_30028 dev_mem_write 3 30028 NULL 116963+dev_mem_write_30028 dev_mem_write 3 30028 NULL
110794+alloc_netdev_mqs_30030 alloc_netdev_mqs 1 30030 NULL 116964+alloc_netdev_mqs_30030 alloc_netdev_mqs 1 30030 NULL
116965+sysfs_add_file_mode_ns_30038 sysfs_add_file_mode_ns 0 30038 NULL
110795+scsi_vpd_inquiry_30040 scsi_vpd_inquiry 4 30040 NULL 116966+scsi_vpd_inquiry_30040 scsi_vpd_inquiry 4 30040 NULL
110796+drp_wmove_30043 drp_wmove 4 30043 NULL 116967+drp_wmove_30043 drp_wmove 4 30043 NULL
116968+mem_cgroup_charge_common_30047 mem_cgroup_charge_common 0 30047 NULL
110797+__pci_request_selected_regions_30058 __pci_request_selected_regions 0 30058 NULL 116969+__pci_request_selected_regions_30058 __pci_request_selected_regions 0 30058 NULL
110798+cxgbi_ddp_reserve_30091 cxgbi_ddp_reserve 4 30091 NULL 116970+cxgbi_ddp_reserve_30091 cxgbi_ddp_reserve 4 30091 NULL
110799+snd_midi_channel_init_set_30092 snd_midi_channel_init_set 1 30092 NULL 116971+snd_midi_channel_init_set_30092 snd_midi_channel_init_set 1 30092 NULL
110800+rx_filter_data_filter_read_30098 rx_filter_data_filter_read 3 30098 NULL 116972+rx_filter_data_filter_read_30098 rx_filter_data_filter_read 3 30098 NULL
110801+defragment_dma_buffer_30113 defragment_dma_buffer 0 30113 NULL 116973+defragment_dma_buffer_30113 defragment_dma_buffer 0 30113 NULL
116974+xfs_iget_cache_miss_30115 xfs_iget_cache_miss 0 30115 NULL
110802+spi_async_locked_30117 spi_async_locked 0 30117 NULL 116975+spi_async_locked_30117 spi_async_locked 0 30117 NULL
110803+recv_stream_30138 recv_stream 4 30138 NULL 116976+recv_stream_30138 recv_stream 4 30138 NULL
110804+u_memcpya_30139 u_memcpya 3-2 30139 NULL 116977+u_memcpya_30139 u_memcpya 3-2 30139 NULL
116978+dbg_port_buf_30145 dbg_port_buf 2 30145 NULL
110805+elfcorehdr_read_30159 elfcorehdr_read 2 30159 NULL 116979+elfcorehdr_read_30159 elfcorehdr_read 2 30159 NULL
110806+alloc_switch_ctx_30165 alloc_switch_ctx 2 30165 NULL 116980+alloc_switch_ctx_30165 alloc_switch_ctx 2 30165 NULL
110807+expand_inode_data_30169 expand_inode_data 2-3 30169 NULL 116981+expand_inode_data_30169 expand_inode_data 3-2 30169 NULL
110808+mempool_create_page_pool_30189 mempool_create_page_pool 1 30189 NULL 116982+mempool_create_page_pool_30189 mempool_create_page_pool 1 30189 NULL
110809+drm_property_create_bitmask_30195 drm_property_create_bitmask 5 30195 NULL 116983+drm_property_create_bitmask_30195 drm_property_create_bitmask 5 30195 NULL
116984+__genwqe_readq_30197 __genwqe_readq 0 30197 NULL
110810+usblp_ioctl_30203 usblp_ioctl 2 30203 NULL 116985+usblp_ioctl_30203 usblp_ioctl 2 30203 NULL
110811+read_4k_modal_eeprom_30212 read_4k_modal_eeprom 3 30212 NULL 116986+read_4k_modal_eeprom_30212 read_4k_modal_eeprom 3 30212 NULL
110812+SyS_semop_30227 SyS_semop 3 30227 NULL
110813+bitmap_file_set_bit_30228 bitmap_file_set_bit 2 30228 NULL 116987+bitmap_file_set_bit_30228 bitmap_file_set_bit 2 30228 NULL
110814+ocfs2_calc_bg_discontig_credits_30230 ocfs2_calc_bg_discontig_credits 0 30230 NULL 116988+shmem_unuse_inode_30263 shmem_unuse_inode 0 30263 NULL
110815+rawv6_recvmsg_30265 rawv6_recvmsg 4 30265 NULL 116989+rawv6_recvmsg_30265 rawv6_recvmsg 4 30265 NULL
110816+hfsplus_trusted_setxattr_30270 hfsplus_trusted_setxattr 4 30270 NULL 116990+try_break_deleg_30271 try_break_deleg 0 30271 NULL nohasharray
110817+isr_pci_pm_read_30271 isr_pci_pm_read 3 30271 NULL 116991+isr_pci_pm_read_30271 isr_pci_pm_read 3 30271 &try_break_deleg_30271
110818+compat_readv_30273 compat_readv 3 30273 NULL 116992+compat_readv_30273 compat_readv 3 30273 NULL
110819+skcipher_sendmsg_30290 skcipher_sendmsg 4 30290 NULL 116993+skcipher_sendmsg_30290 skcipher_sendmsg 4 30290 NULL
110820+pipeline_sec_frag_swi_read_30294 pipeline_sec_frag_swi_read 3 30294 NULL 116994+pipeline_sec_frag_swi_read_30294 pipeline_sec_frag_swi_read 3 30294 NULL
@@ -110824,7 +116998,9 @@ index 0000000..9529806
110824+i8254_read_30330 i8254_read 0 30330 NULL 116998+i8254_read_30330 i8254_read 0 30330 NULL
110825+resource_from_user_30341 resource_from_user 3 30341 NULL 116999+resource_from_user_30341 resource_from_user 3 30341 NULL
110826+o2nm_this_node_30342 o2nm_this_node 0 30342 NULL 117000+o2nm_this_node_30342 o2nm_this_node 0 30342 NULL
117001+gfs2_trans_begin_30359 gfs2_trans_begin 0 30359 NULL
110827+kstrtou32_from_user_30361 kstrtou32_from_user 2 30361 NULL 117002+kstrtou32_from_user_30361 kstrtou32_from_user 2 30361 NULL
117003+pagecache_write_begin_30364 pagecache_write_begin 0 30364 NULL
110828+C_SYSC_readv_30369 C_SYSC_readv 3 30369 NULL 117004+C_SYSC_readv_30369 C_SYSC_readv 3 30369 NULL
110829+blkdev_issue_zeroout_30392 blkdev_issue_zeroout 3 30392 NULL 117005+blkdev_issue_zeroout_30392 blkdev_issue_zeroout 3 30392 NULL
110830+c4iw_init_resource_30393 c4iw_init_resource 2-3 30393 NULL 117006+c4iw_init_resource_30393 c4iw_init_resource 2-3 30393 NULL
@@ -110840,6 +117016,8 @@ index 0000000..9529806
110840+adu_write_30487 adu_write 3 30487 NULL 117016+adu_write_30487 adu_write 3 30487 NULL
110841+dtim_interval_write_30489 dtim_interval_write 3 30489 NULL 117017+dtim_interval_write_30489 dtim_interval_write 3 30489 NULL
110842+batadv_send_tt_request_30493 batadv_send_tt_request 5 30493 NULL 117018+batadv_send_tt_request_30493 batadv_send_tt_request 5 30493 NULL
117019+__send_duplicate_bios_30498 __send_duplicate_bios 4 30498 NULL
117020+memblock_virt_alloc_node_30515 memblock_virt_alloc_node 1 30515 NULL
110843+dwc3_testmode_write_30516 dwc3_testmode_write 3 30516 NULL 117021+dwc3_testmode_write_30516 dwc3_testmode_write 3 30516 NULL
110844+set_config_30526 set_config 0 30526 NULL nohasharray 117022+set_config_30526 set_config 0 30526 NULL nohasharray
110845+debug_debug2_read_30526 debug_debug2_read 3 30526 &set_config_30526 117023+debug_debug2_read_30526 debug_debug2_read 3 30526 &set_config_30526
@@ -110847,10 +117025,7 @@ index 0000000..9529806
110847+disk_expand_part_tbl_30561 disk_expand_part_tbl 2 30561 NULL 117025+disk_expand_part_tbl_30561 disk_expand_part_tbl 2 30561 NULL
110848+set_le_30581 set_le 4 30581 NULL 117026+set_le_30581 set_le 4 30581 NULL
110849+blk_init_tags_30592 blk_init_tags 1 30592 NULL 117027+blk_init_tags_30592 blk_init_tags 1 30592 NULL
110850+i2c_hid_get_report_length_30598 i2c_hid_get_report_length 0 30598 NULL 117028+sgl_map_user_pages_30610 sgl_map_user_pages 2 30610 NULL
110851+sgl_map_user_pages_30610 sgl_map_user_pages 2 30610 NULL nohasharray
110852+cpufreq_get_global_kobject_30610 cpufreq_get_global_kobject 0 30610 &sgl_map_user_pages_30610
110853+SyS_msgrcv_30611 SyS_msgrcv 3 30611 NULL
110854+macvtap_sendmsg_30629 macvtap_sendmsg 4 30629 NULL 117029+macvtap_sendmsg_30629 macvtap_sendmsg 4 30629 NULL
110855+ieee80211_if_read_dot11MeshAwakeWindowDuration_30631 ieee80211_if_read_dot11MeshAwakeWindowDuration 3 30631 NULL 117030+ieee80211_if_read_dot11MeshAwakeWindowDuration_30631 ieee80211_if_read_dot11MeshAwakeWindowDuration 3 30631 NULL
110856+compat_raw_setsockopt_30634 compat_raw_setsockopt 5 30634 NULL 117031+compat_raw_setsockopt_30634 compat_raw_setsockopt 5 30634 NULL
@@ -110858,18 +117033,23 @@ index 0000000..9529806
110858+SyS_listxattr_30647 SyS_listxattr 3 30647 NULL 117033+SyS_listxattr_30647 SyS_listxattr 3 30647 NULL
110859+jffs2_flash_read_30667 jffs2_flash_read 0 30667 NULL 117034+jffs2_flash_read_30667 jffs2_flash_read 0 30667 NULL
110860+ni_ai_fifo_read_30681 ni_ai_fifo_read 3 30681 NULL 117035+ni_ai_fifo_read_30681 ni_ai_fifo_read 3 30681 NULL
110861+dccp_setsockopt_ccid_30701 dccp_setsockopt_ccid 4 30701 NULL 117036+dccp_setsockopt_ccid_30701 dccp_setsockopt_ccid 4 30701 NULL nohasharray
117037+xfs_bmap_add_extent_unwritten_real_30701 xfs_bmap_add_extent_unwritten_real 0 30701 &dccp_setsockopt_ccid_30701
110862+lbs_wrbbp_write_30712 lbs_wrbbp_write 3 30712 NULL 117038+lbs_wrbbp_write_30712 lbs_wrbbp_write 3 30712 NULL
110863+lbs_debugfs_read_30721 lbs_debugfs_read 3 30721 NULL 117039+lbs_debugfs_read_30721 lbs_debugfs_read 3 30721 NULL
110864+snd_nm256_playback_silence_30727 snd_nm256_playback_silence 4-3 30727 NULL 117040+snd_nm256_playback_silence_30727 snd_nm256_playback_silence 4-3 30727 NULL
110865+snapshot_status_30744 snapshot_status 5 30744 NULL 117041+snapshot_status_30744 snapshot_status 5 30744 NULL
110866+fuse_conn_limit_write_30777 fuse_conn_limit_write 3 30777 NULL 117042+fuse_conn_limit_write_30777 fuse_conn_limit_write 3 30777 NULL
117043+__bio_alloc_30787 __bio_alloc 3 30787 NULL
110867+smk_read_doi_30813 smk_read_doi 3 30813 NULL 117044+smk_read_doi_30813 smk_read_doi 3 30813 NULL
117045+xlog_grant_head_wait_30829 xlog_grant_head_wait 0 30829 NULL
110868+get_kobj_path_length_30831 get_kobj_path_length 0 30831 NULL 117046+get_kobj_path_length_30831 get_kobj_path_length 0 30831 NULL
117047+ath10k_write_fw_dbglog_30835 ath10k_write_fw_dbglog 3 30835 NULL
110869+sctp_setsockopt_auth_chunk_30843 sctp_setsockopt_auth_chunk 3 30843 NULL 117048+sctp_setsockopt_auth_chunk_30843 sctp_setsockopt_auth_chunk 3 30843 NULL
110870+wd_autoreset_write_30862 wd_autoreset_write 3 30862 NULL 117049+wd_autoreset_write_30862 wd_autoreset_write 3 30862 NULL
110871+ieee80211_if_fmt_dropped_frames_no_route_30884 ieee80211_if_fmt_dropped_frames_no_route 3 30884 NULL 117050+ieee80211_if_fmt_dropped_frames_no_route_30884 ieee80211_if_fmt_dropped_frames_no_route 3 30884 NULL
110872+pn_recvmsg_30887 pn_recvmsg 4 30887 NULL 117051+pn_recvmsg_30887 pn_recvmsg 4 30887 NULL
117052+usnic_debugfs_buildinfo_read_30928 usnic_debugfs_buildinfo_read 3 30928 NULL
110873+sctp_setsockopt_rtoinfo_30941 sctp_setsockopt_rtoinfo 3 30941 NULL 117053+sctp_setsockopt_rtoinfo_30941 sctp_setsockopt_rtoinfo 3 30941 NULL
110874+tty_insert_flip_string_flags_30969 tty_insert_flip_string_flags 4 30969 NULL 117054+tty_insert_flip_string_flags_30969 tty_insert_flip_string_flags 4 30969 NULL
110875+huge_page_mask_30981 huge_page_mask 0 30981 NULL 117055+huge_page_mask_30981 huge_page_mask 0 30981 NULL
@@ -110878,7 +117058,7 @@ index 0000000..9529806
110878+ima_eventsig_init_31022 ima_eventsig_init 5 31022 NULL 117058+ima_eventsig_init_31022 ima_eventsig_init 5 31022 NULL
110879+template_fmt_size_31033 template_fmt_size 0 31033 NULL 117059+template_fmt_size_31033 template_fmt_size 0 31033 NULL
110880+do_setup_msi_irqs_31043 do_setup_msi_irqs 2 31043 NULL 117060+do_setup_msi_irqs_31043 do_setup_msi_irqs 2 31043 NULL
110881+stride_pg_count_31053 stride_pg_count 0-2-1-4-3-5 31053 NULL 117061+stride_pg_count_31053 stride_pg_count 0-3-2-1-4-5 31053 NULL
110882+lbs_failcount_read_31063 lbs_failcount_read 3 31063 NULL 117062+lbs_failcount_read_31063 lbs_failcount_read 3 31063 NULL
110883+sctp_setsockopt_context_31091 sctp_setsockopt_context 3 31091 NULL 117063+sctp_setsockopt_context_31091 sctp_setsockopt_context 3 31091 NULL
110884+proc_gid_map_write_31093 proc_gid_map_write 3 31093 NULL 117064+proc_gid_map_write_31093 proc_gid_map_write 3 31093 NULL
@@ -110904,6 +117084,7 @@ index 0000000..9529806
110904+sisusbcon_scroll_31315 sisusbcon_scroll 5-2-3 31315 NULL 117084+sisusbcon_scroll_31315 sisusbcon_scroll 5-2-3 31315 NULL
110905+command_file_write_31318 command_file_write 3 31318 NULL 117085+command_file_write_31318 command_file_write 3 31318 NULL
110906+hwerr_crcbits_31334 hwerr_crcbits 4 31334 NULL 117086+hwerr_crcbits_31334 hwerr_crcbits 4 31334 NULL
117087+radix_tree_insert_31336 radix_tree_insert 0 31336 NULL
110907+em28xx_init_usb_xfer_31337 em28xx_init_usb_xfer 4-6 31337 NULL 117088+em28xx_init_usb_xfer_31337 em28xx_init_usb_xfer 4-6 31337 NULL
110908+outlen_write_31358 outlen_write 3 31358 NULL 117089+outlen_write_31358 outlen_write 3 31358 NULL
110909+ieee80211_rx_mgmt_auth_31366 ieee80211_rx_mgmt_auth 3 31366 NULL 117090+ieee80211_rx_mgmt_auth_31366 ieee80211_rx_mgmt_auth 3 31366 NULL
@@ -110930,7 +117111,9 @@ index 0000000..9529806
110930+snd_compr_get_avail_31584 snd_compr_get_avail 0 31584 NULL 117111+snd_compr_get_avail_31584 snd_compr_get_avail 0 31584 NULL
110931+iwl_dbgfs_ucode_tx_stats_read_31611 iwl_dbgfs_ucode_tx_stats_read 3 31611 NULL 117112+iwl_dbgfs_ucode_tx_stats_read_31611 iwl_dbgfs_ucode_tx_stats_read 3 31611 NULL
110932+mtd_get_user_prot_info_31616 mtd_get_user_prot_info 0 31616 NULL 117113+mtd_get_user_prot_info_31616 mtd_get_user_prot_info 0 31616 NULL
110933+arvo_sysfs_read_31617 arvo_sysfs_read 6 31617 NULL 117114+arvo_sysfs_read_31617 arvo_sysfs_read 6 31617 NULL nohasharray
117115+memblock_virt_alloc_nopanic_31617 memblock_virt_alloc_nopanic 1 31617 &arvo_sysfs_read_31617
117116+usnic_ib_dump_vf_31623 usnic_ib_dump_vf 3 31623 NULL
110934+videobuf_read_one_31637 videobuf_read_one 3 31637 NULL 117117+videobuf_read_one_31637 videobuf_read_one 3 31637 NULL
110935+pod_alloc_sysex_buffer_31651 pod_alloc_sysex_buffer 3 31651 NULL 117118+pod_alloc_sysex_buffer_31651 pod_alloc_sysex_buffer 3 31651 NULL
110936+xfer_secondary_pool_31661 xfer_secondary_pool 2 31661 NULL 117119+xfer_secondary_pool_31661 xfer_secondary_pool 2 31661 NULL
@@ -110938,6 +117121,8 @@ index 0000000..9529806
110938+copy_from_user_nmi_31672 copy_from_user_nmi 3-0 31672 NULL 117121+copy_from_user_nmi_31672 copy_from_user_nmi 3-0 31672 NULL
110939+forced_ps_read_31685 forced_ps_read 3 31685 NULL 117122+forced_ps_read_31685 forced_ps_read 3 31685 NULL
110940+fst_recover_rx_error_31687 fst_recover_rx_error 3 31687 NULL 117123+fst_recover_rx_error_31687 fst_recover_rx_error 3 31687 NULL
117124+gfs2_dir_check_31711 gfs2_dir_check 0 31711 NULL
117125+rs_pretty_print_rate_31727 rs_pretty_print_rate 0 31727 NULL
110941+utf16s_to_utf8s_31735 utf16s_to_utf8s 0 31735 NULL nohasharray 117126+utf16s_to_utf8s_31735 utf16s_to_utf8s 0 31735 NULL nohasharray
110942+lu_buf_check_and_grow_31735 lu_buf_check_and_grow 2 31735 &utf16s_to_utf8s_31735 117127+lu_buf_check_and_grow_31735 lu_buf_check_and_grow 2 31735 &utf16s_to_utf8s_31735
110943+shmem_pwrite_slow_31741 shmem_pwrite_slow 3-2 31741 NULL 117128+shmem_pwrite_slow_31741 shmem_pwrite_slow 3-2 31741 NULL
@@ -110946,6 +117131,7 @@ index 0000000..9529806
110946+bcm_char_read_31750 bcm_char_read 3 31750 NULL 117131+bcm_char_read_31750 bcm_char_read 3 31750 NULL
110947+snd_seq_device_new_31753 snd_seq_device_new 4 31753 NULL 117132+snd_seq_device_new_31753 snd_seq_device_new 4 31753 NULL
110948+SyS_lsetxattr_31766 SyS_lsetxattr 4 31766 NULL 117133+SyS_lsetxattr_31766 SyS_lsetxattr 4 31766 NULL
117134+osync_buffers_list_31789 osync_buffers_list 0 31789 NULL
110949+usblp_cache_device_id_string_31790 usblp_cache_device_id_string 0 31790 NULL 117135+usblp_cache_device_id_string_31790 usblp_cache_device_id_string 0 31790 NULL
110950+ecryptfs_send_message_locked_31801 ecryptfs_send_message_locked 2 31801 NULL 117136+ecryptfs_send_message_locked_31801 ecryptfs_send_message_locked 2 31801 NULL
110951+isr_rx_procs_read_31804 isr_rx_procs_read 3 31804 NULL 117137+isr_rx_procs_read_31804 isr_rx_procs_read 3 31804 NULL
@@ -110953,7 +117139,9 @@ index 0000000..9529806
110953+SyS_msgsnd_31814 SyS_msgsnd 3 31814 NULL 117139+SyS_msgsnd_31814 SyS_msgsnd 3 31814 NULL
110954+strnlen_user_31815 strnlen_user 0-2 31815 NULL 117140+strnlen_user_31815 strnlen_user 0-2 31815 NULL
110955+sta_last_signal_read_31818 sta_last_signal_read 3 31818 NULL 117141+sta_last_signal_read_31818 sta_last_signal_read 3 31818 NULL
117142+clone_bio_31854 clone_bio 4-3 31854 NULL
110956+SyS_ppoll_31855 SyS_ppoll 2 31855 NULL 117143+SyS_ppoll_31855 SyS_ppoll 2 31855 NULL
117144+foreach_descriptor_31873 foreach_descriptor 0 31873 NULL
110957+iwl_dbgfs_disable_ht40_write_31876 iwl_dbgfs_disable_ht40_write 3 31876 NULL 117145+iwl_dbgfs_disable_ht40_write_31876 iwl_dbgfs_disable_ht40_write 3 31876 NULL
110958+drm_mode_crtc_set_gamma_size_31881 drm_mode_crtc_set_gamma_size 2 31881 NULL 117146+drm_mode_crtc_set_gamma_size_31881 drm_mode_crtc_set_gamma_size 2 31881 NULL
110959+ddb_output_write_31902 ddb_output_write 3-0 31902 NULL 117147+ddb_output_write_31902 ddb_output_write 3-0 31902 NULL
@@ -110967,6 +117155,7 @@ index 0000000..9529806
110967+vb2_write_31948 vb2_write 3 31948 NULL 117155+vb2_write_31948 vb2_write 3 31948 NULL
110968+pvr2_ctrl_get_valname_31951 pvr2_ctrl_get_valname 4 31951 NULL 117156+pvr2_ctrl_get_valname_31951 pvr2_ctrl_get_valname 4 31951 NULL
110969+regcache_rbtree_sync_31964 regcache_rbtree_sync 2 31964 NULL 117157+regcache_rbtree_sync_31964 regcache_rbtree_sync 2 31964 NULL
117158+iwl_rx_packet_payload_len_31965 iwl_rx_packet_payload_len 0 31965 NULL
110970+copy_from_user_toio_31966 copy_from_user_toio 3 31966 NULL 117159+copy_from_user_toio_31966 copy_from_user_toio 3 31966 NULL
110971+iblock_execute_rw_31982 iblock_execute_rw 3 31982 NULL nohasharray 117160+iblock_execute_rw_31982 iblock_execute_rw 3 31982 NULL nohasharray
110972+vx_read_status_31982 vx_read_status 0 31982 &iblock_execute_rw_31982 117161+vx_read_status_31982 vx_read_status 0 31982 &iblock_execute_rw_31982
@@ -110975,11 +117164,10 @@ index 0000000..9529806
110975+sysfs_create_file_31996 sysfs_create_file 0 31996 NULL 117164+sysfs_create_file_31996 sysfs_create_file 0 31996 NULL
110976+calc_hmac_32010 calc_hmac 3 32010 NULL 117165+calc_hmac_32010 calc_hmac 3 32010 NULL
110977+aead_len_32021 aead_len 0 32021 NULL 117166+aead_len_32021 aead_len 0 32021 NULL
110978+posix_acl_set_32037 posix_acl_set 4 32037 NULL
110979+stk_read_32038 stk_read 3 32038 NULL 117167+stk_read_32038 stk_read 3 32038 NULL
110980+ocfs2_update_edge_lengths_32046 ocfs2_update_edge_lengths 3 32046 NULL
110981+SYSC_llistxattr_32061 SYSC_llistxattr 3 32061 NULL 117168+SYSC_llistxattr_32061 SYSC_llistxattr 3 32061 NULL
110982+proc_scsi_devinfo_write_32064 proc_scsi_devinfo_write 3 32064 NULL 117169+proc_scsi_devinfo_write_32064 proc_scsi_devinfo_write 3 32064 NULL
117170+xfs_buf_iowait_32068 xfs_buf_iowait 0 32068 NULL
110983+cow_file_range_inline_32091 cow_file_range_inline 3 32091 NULL 117171+cow_file_range_inline_32091 cow_file_range_inline 3 32091 NULL
110984+bio_alloc_32095 bio_alloc 2 32095 NULL 117172+bio_alloc_32095 bio_alloc 2 32095 NULL
110985+ath6kl_fwlog_read_32101 ath6kl_fwlog_read 3 32101 NULL 117173+ath6kl_fwlog_read_32101 ath6kl_fwlog_read 3 32101 NULL
@@ -110989,6 +117177,7 @@ index 0000000..9529806
110989+do_writepages_32173 do_writepages 0 32173 NULL 117177+do_writepages_32173 do_writepages 0 32173 NULL
110990+del_ptr_32197 del_ptr 4 32197 NULL 117178+del_ptr_32197 del_ptr 4 32197 NULL
110991+wusb_ccm_mac_32199 wusb_ccm_mac 7 32199 NULL 117179+wusb_ccm_mac_32199 wusb_ccm_mac 7 32199 NULL
117180+__mem_cgroup_try_charge_swapin_32204 __mem_cgroup_try_charge_swapin 0 32204 NULL
110992+riva_get_cmap_len_32218 riva_get_cmap_len 0 32218 NULL 117181+riva_get_cmap_len_32218 riva_get_cmap_len 0 32218 NULL
110993+caif_seqpkt_recvmsg_32241 caif_seqpkt_recvmsg 4 32241 NULL 117182+caif_seqpkt_recvmsg_32241 caif_seqpkt_recvmsg 4 32241 NULL
110994+lbs_lowrssi_read_32242 lbs_lowrssi_read 3 32242 NULL 117183+lbs_lowrssi_read_32242 lbs_lowrssi_read 3 32242 NULL
@@ -110998,6 +117187,7 @@ index 0000000..9529806
110998+SyS_select_32319 SyS_select 1 32319 NULL 117187+SyS_select_32319 SyS_select 1 32319 NULL
110999+nouveau_bar_create__32332 nouveau_bar_create_ 4 32332 NULL 117188+nouveau_bar_create__32332 nouveau_bar_create_ 4 32332 NULL
111000+nl80211_send_mlme_event_32337 nl80211_send_mlme_event 4 32337 NULL 117189+nl80211_send_mlme_event_32337 nl80211_send_mlme_event 4 32337 NULL
117190+xfs_bmap_extsize_align_32338 xfs_bmap_extsize_align 0 32338 NULL
111001+t4_alloc_mem_32342 t4_alloc_mem 1 32342 NULL 117191+t4_alloc_mem_32342 t4_alloc_mem 1 32342 NULL
111002+dispatch_ioctl_32357 dispatch_ioctl 2 32357 NULL nohasharray 117192+dispatch_ioctl_32357 dispatch_ioctl 2 32357 NULL nohasharray
111003+rx_streaming_always_write_32357 rx_streaming_always_write 3 32357 &dispatch_ioctl_32357 117193+rx_streaming_always_write_32357 rx_streaming_always_write 3 32357 &dispatch_ioctl_32357
@@ -111007,6 +117197,7 @@ index 0000000..9529806
111007+ll_setxattr_common_32398 ll_setxattr_common 4 32398 NULL 117197+ll_setxattr_common_32398 ll_setxattr_common 4 32398 NULL
111008+xfs_iext_add_indirect_multi_32400 xfs_iext_add_indirect_multi 3 32400 NULL 117198+xfs_iext_add_indirect_multi_32400 xfs_iext_add_indirect_multi 3 32400 NULL
111009+vmci_qp_alloc_32405 vmci_qp_alloc 5-3 32405 NULL 117199+vmci_qp_alloc_32405 vmci_qp_alloc 5-3 32405 NULL
117200+xfs_alloc_put_freelist_32437 xfs_alloc_put_freelist 0 32437 NULL
111010+cache_status_32462 cache_status 5 32462 NULL 117201+cache_status_32462 cache_status 5 32462 NULL
111011+fill_readbuf_32464 fill_readbuf 3 32464 NULL 117202+fill_readbuf_32464 fill_readbuf 3 32464 NULL
111012+dgap_usertoboard_32490 dgap_usertoboard 4 32490 NULL 117203+dgap_usertoboard_32490 dgap_usertoboard 4 32490 NULL
@@ -111016,8 +117207,7 @@ index 0000000..9529806
111016+ctrl_std_val_to_sym_32516 ctrl_std_val_to_sym 5 32516 NULL 117207+ctrl_std_val_to_sym_32516 ctrl_std_val_to_sym 5 32516 NULL
111017+disconnect_32521 disconnect 4 32521 NULL 117208+disconnect_32521 disconnect 4 32521 NULL
111018+qsfp_read_32522 qsfp_read 0-2-4 32522 NULL 117209+qsfp_read_32522 qsfp_read 0-2-4 32522 NULL
111019+ocfs2_refresh_qinfo_32524 ocfs2_refresh_qinfo 0 32524 NULL nohasharray 117210+ocfs2_refresh_qinfo_32524 ocfs2_refresh_qinfo 0 32524 NULL
111020+audio_get_intf_req_32524 audio_get_intf_req 0 32524 &ocfs2_refresh_qinfo_32524
111021+ilo_read_32531 ilo_read 3 32531 NULL 117211+ilo_read_32531 ilo_read 3 32531 NULL
111022+ieee80211_if_read_estab_plinks_32533 ieee80211_if_read_estab_plinks 3 32533 NULL 117212+ieee80211_if_read_estab_plinks_32533 ieee80211_if_read_estab_plinks 3 32533 NULL
111023+format_devstat_counter_32550 format_devstat_counter 3 32550 NULL 117213+format_devstat_counter_32550 format_devstat_counter 3 32550 NULL
@@ -111027,6 +117217,7 @@ index 0000000..9529806
111027+pipeline_tcp_tx_stat_fifo_int_read_32589 pipeline_tcp_tx_stat_fifo_int_read 3 32589 NULL 117217+pipeline_tcp_tx_stat_fifo_int_read_32589 pipeline_tcp_tx_stat_fifo_int_read 3 32589 NULL
111028+read_file_beacon_32595 read_file_beacon 3 32595 NULL 117218+read_file_beacon_32595 read_file_beacon 3 32595 NULL
111029+ieee80211_if_read_dropped_frames_congestion_32603 ieee80211_if_read_dropped_frames_congestion 3 32603 NULL 117219+ieee80211_if_read_dropped_frames_congestion_32603 ieee80211_if_read_dropped_frames_congestion 3 32603 NULL
117220+xfs_bmap_last_offset_32614 xfs_bmap_last_offset 0 32614 NULL
111030+irda_recvmsg_dgram_32631 irda_recvmsg_dgram 4 32631 NULL 117221+irda_recvmsg_dgram_32631 irda_recvmsg_dgram 4 32631 NULL
111031+cfg80211_roamed_32632 cfg80211_roamed 5-7 32632 NULL 117222+cfg80211_roamed_32632 cfg80211_roamed 5-7 32632 NULL
111032+kvmalloc_32646 kvmalloc 1 32646 NULL 117223+kvmalloc_32646 kvmalloc 1 32646 NULL
@@ -111034,24 +117225,26 @@ index 0000000..9529806
111034+generic_readlink_32654 generic_readlink 3 32654 NULL 117225+generic_readlink_32654 generic_readlink 3 32654 NULL
111035+move_addr_to_kernel_32673 move_addr_to_kernel 2 32673 NULL 117226+move_addr_to_kernel_32673 move_addr_to_kernel 2 32673 NULL
111036+apei_res_add_32674 apei_res_add 0 32674 NULL 117227+apei_res_add_32674 apei_res_add 0 32674 NULL
111037+compat_SyS_preadv_32679 compat_SyS_preadv 3 32679 NULL
111038+jfs_readpages_32702 jfs_readpages 4 32702 NULL 117228+jfs_readpages_32702 jfs_readpages 4 32702 NULL
117229+xfs_filestream_new_ag_32711 xfs_filestream_new_ag 0 32711 NULL
111039+rt2x00debug_read_queue_dump_32712 rt2x00debug_read_queue_dump 3 32712 NULL 117230+rt2x00debug_read_queue_dump_32712 rt2x00debug_read_queue_dump 3 32712 NULL
117231+xfs_bmbt_update_32713 xfs_bmbt_update 0 32713 NULL
111040+i40e_pci_sriov_enable_32742 i40e_pci_sriov_enable 2 32742 NULL 117232+i40e_pci_sriov_enable_32742 i40e_pci_sriov_enable 2 32742 NULL
111041+megasas_change_queue_depth_32747 megasas_change_queue_depth 2 32747 NULL 117233+megasas_change_queue_depth_32747 megasas_change_queue_depth 2 32747 NULL
111042+stats_read_ul_32751 stats_read_ul 3 32751 NULL 117234+stats_read_ul_32751 stats_read_ul 3 32751 NULL
111043+vmci_transport_dgram_dequeue_32775 vmci_transport_dgram_dequeue 4 32775 NULL 117235+vmci_transport_dgram_dequeue_32775 vmci_transport_dgram_dequeue 4 32775 NULL
111044+sctp_tsnmap_grow_32784 sctp_tsnmap_grow 2 32784 NULL 117236+sctp_tsnmap_grow_32784 sctp_tsnmap_grow 2 32784 NULL
117237+xfs_trans_read_buf_32795 xfs_trans_read_buf 0 32795 NULL
111045+rproc_name_read_32805 rproc_name_read 3 32805 NULL 117238+rproc_name_read_32805 rproc_name_read 3 32805 NULL
117239+sta_tx_latency_stat_read_32862 sta_tx_latency_stat_read 3 32862 NULL
111046+new_tape_buffer_32866 new_tape_buffer 2 32866 NULL 117240+new_tape_buffer_32866 new_tape_buffer 2 32866 NULL
111047+cifs_writedata_alloc_32880 cifs_writedata_alloc 1 32880 NULL nohasharray 117241+cifs_writedata_alloc_32880 cifs_writedata_alloc 1 32880 NULL nohasharray
111048+ath6kl_usb_submit_ctrl_in_32880 ath6kl_usb_submit_ctrl_in 6 32880 &cifs_writedata_alloc_32880 117242+ath6kl_usb_submit_ctrl_in_32880 ath6kl_usb_submit_ctrl_in 6 32880 &cifs_writedata_alloc_32880
111049+vp702x_usb_inout_cmd_32884 vp702x_usb_inout_cmd 6-4 32884 NULL 117243+vp702x_usb_inout_cmd_32884 vp702x_usb_inout_cmd 4-6 32884 NULL
111050+il_dbgfs_tx_stats_read_32913 il_dbgfs_tx_stats_read 3 32913 NULL 117244+il_dbgfs_tx_stats_read_32913 il_dbgfs_tx_stats_read 3 32913 NULL
111051+zlib_inflate_workspacesize_32927 zlib_inflate_workspacesize 0 32927 NULL 117245+zlib_inflate_workspacesize_32927 zlib_inflate_workspacesize 0 32927 NULL
111052+rmap_recycle_32938 rmap_recycle 3 32938 NULL 117246+rmap_recycle_32938 rmap_recycle 3 32938 NULL
111053+xfs_log_reserve_32959 xfs_log_reserve 2 32959 NULL 117247+xfs_log_reserve_32959 xfs_log_reserve 0 32959 NULL
111054+ocfs2_check_dir_trailer_32968 ocfs2_check_dir_trailer 0 32968 NULL
111055+compat_filldir_32999 compat_filldir 3 32999 NULL 117248+compat_filldir_32999 compat_filldir 3 32999 NULL
111056+SyS_syslog_33007 SyS_syslog 3 33007 NULL 117249+SyS_syslog_33007 SyS_syslog 3 33007 NULL
111057+br_multicast_set_hash_max_33012 br_multicast_set_hash_max 2 33012 NULL 117250+br_multicast_set_hash_max_33012 br_multicast_set_hash_max 2 33012 NULL
@@ -111066,8 +117259,9 @@ index 0000000..9529806
111066+alloc_tio_33077 alloc_tio 3 33077 NULL 117259+alloc_tio_33077 alloc_tio 3 33077 NULL
111067+acl_permission_check_33083 acl_permission_check 0 33083 NULL 117260+acl_permission_check_33083 acl_permission_check 0 33083 NULL
111068+fb_sys_write_33130 fb_sys_write 3 33130 NULL 117261+fb_sys_write_33130 fb_sys_write 3 33130 NULL
111069+__len_within_target_33132 __len_within_target 0 33132 NULL 117262+notify_change_33143 notify_change 0 33143 NULL
111070+SyS_poll_33152 SyS_poll 2 33152 NULL 117263+SyS_poll_33152 SyS_poll 2 33152 NULL
117264+_pci_add_cap_save_buffer_33153 _pci_add_cap_save_buffer 4 33153 NULL
111071+debug_debug6_read_33168 debug_debug6_read 3 33168 NULL 117265+debug_debug6_read_33168 debug_debug6_read 3 33168 NULL
111072+dataflash_read_fact_otp_33204 dataflash_read_fact_otp 3-2 33204 NULL 117266+dataflash_read_fact_otp_33204 dataflash_read_fact_otp 3-2 33204 NULL
111073+pp_read_33210 pp_read 3 33210 NULL 117267+pp_read_33210 pp_read 3 33210 NULL
@@ -111088,13 +117282,13 @@ index 0000000..9529806
111088+ocfs2_allocate_unwritten_extents_33394 ocfs2_allocate_unwritten_extents 3-2 33394 NULL 117282+ocfs2_allocate_unwritten_extents_33394 ocfs2_allocate_unwritten_extents 3-2 33394 NULL
111089+cfs_trace_copyin_string_33396 cfs_trace_copyin_string 4 33396 NULL 117283+cfs_trace_copyin_string_33396 cfs_trace_copyin_string 4 33396 NULL
111090+snd_pcm_capture_ioctl1_33408 snd_pcm_capture_ioctl1 0 33408 NULL 117284+snd_pcm_capture_ioctl1_33408 snd_pcm_capture_ioctl1 0 33408 NULL
117285+filemap_fdatawrite_33415 filemap_fdatawrite 0 33415 NULL
111091+hash_netiface6_expire_33421 hash_netiface6_expire 4 33421 NULL 117286+hash_netiface6_expire_33421 hash_netiface6_expire 4 33421 NULL
111092+dis_tap_write_33426 dis_tap_write 3 33426 NULL 117287+dis_tap_write_33426 dis_tap_write 3 33426 NULL
111093+message_stats_list_33440 message_stats_list 5 33440 NULL 117288+message_stats_list_33440 message_stats_list 5 33440 NULL
111094+ovs_vport_alloc_33475 ovs_vport_alloc 1 33475 NULL 117289+ovs_vport_alloc_33475 ovs_vport_alloc 1 33475 NULL
111095+create_entry_33479 create_entry 2 33479 NULL 117290+create_entry_33479 create_entry 2 33479 NULL
111096+ip_setsockopt_33487 ip_setsockopt 5 33487 NULL nohasharray 117291+ip_setsockopt_33487 ip_setsockopt 5 33487 NULL
111097+elf_map_33487 elf_map 0-2 33487 &ip_setsockopt_33487
111098+res_counter_read_33499 res_counter_read 4 33499 NULL 117292+res_counter_read_33499 res_counter_read 4 33499 NULL
111099+hash_netnet4_expire_33500 hash_netnet4_expire 4 33500 NULL 117293+hash_netnet4_expire_33500 hash_netnet4_expire 4 33500 NULL
111100+fb_read_33506 fb_read 3 33506 NULL 117294+fb_read_33506 fb_read 3 33506 NULL
@@ -111110,17 +117304,20 @@ index 0000000..9529806
111110+xt_compat_target_offset_33608 xt_compat_target_offset 0 33608 NULL 117304+xt_compat_target_offset_33608 xt_compat_target_offset 0 33608 NULL
111111+usb_gstrings_attach_33615 usb_gstrings_attach 3 33615 NULL nohasharray 117305+usb_gstrings_attach_33615 usb_gstrings_attach 3 33615 NULL nohasharray
111112+il_dbgfs_qos_read_33615 il_dbgfs_qos_read 3 33615 &usb_gstrings_attach_33615 117306+il_dbgfs_qos_read_33615 il_dbgfs_qos_read 3 33615 &usb_gstrings_attach_33615
117307+xfs_btree_check_sblock_33618 xfs_btree_check_sblock 0 33618 NULL
111113+stride_page_count_33641 stride_page_count 2 33641 NULL 117308+stride_page_count_33641 stride_page_count 2 33641 NULL
111114+irq_blk_threshold_read_33666 irq_blk_threshold_read 3 33666 NULL 117309+irq_blk_threshold_read_33666 irq_blk_threshold_read 3 33666 NULL
111115+inw_p_33668 inw_p 0 33668 NULL 117310+inw_p_33668 inw_p 0 33668 NULL
111116+arp_hdr_len_33671 arp_hdr_len 0 33671 NULL 117311+arp_hdr_len_33671 arp_hdr_len 0 33671 NULL
111117+i2c_hid_alloc_buffers_33673 i2c_hid_alloc_buffers 2 33673 NULL 117312+i2c_hid_alloc_buffers_33673 i2c_hid_alloc_buffers 2 33673 NULL
117313+submit_one_bio_33683 submit_one_bio 0 33683 NULL
111118+nv50_disp_dmac_create__33696 nv50_disp_dmac_create_ 6 33696 NULL 117314+nv50_disp_dmac_create__33696 nv50_disp_dmac_create_ 6 33696 NULL
111119+netlink_sendmsg_33708 netlink_sendmsg 4 33708 NULL 117315+netlink_sendmsg_33708 netlink_sendmsg 4 33708 NULL
111120+tipc_link_stats_33716 tipc_link_stats 3 33716 NULL 117316+tipc_link_stats_33716 tipc_link_stats 3 33716 NULL
111121+ext4_wb_update_i_disksize_33717 ext4_wb_update_i_disksize 2 33717 NULL 117317+ext4_wb_update_i_disksize_33717 ext4_wb_update_i_disksize 2 33717 NULL
111122+pvr2_stream_buffer_count_33719 pvr2_stream_buffer_count 2 33719 NULL 117318+pvr2_stream_buffer_count_33719 pvr2_stream_buffer_count 2 33719 NULL
111123+write_file_spectral_count_33723 write_file_spectral_count 3 33723 NULL 117319+write_file_spectral_count_33723 write_file_spectral_count 3 33723 NULL
117320+read_file_node_recv_33729 read_file_node_recv 3 33729 NULL
111124+__mutex_lock_interruptible_slowpath_33735 __mutex_lock_interruptible_slowpath 0 33735 NULL 117321+__mutex_lock_interruptible_slowpath_33735 __mutex_lock_interruptible_slowpath 0 33735 NULL
111125+vifs_state_read_33762 vifs_state_read 3 33762 NULL 117322+vifs_state_read_33762 vifs_state_read 3 33762 NULL
111126+hashtab_create_33769 hashtab_create 3 33769 NULL 117323+hashtab_create_33769 hashtab_create 3 33769 NULL
@@ -111131,18 +117328,20 @@ index 0000000..9529806
111131+ext4_journal_extend_33835 ext4_journal_extend 2 33835 NULL 117328+ext4_journal_extend_33835 ext4_journal_extend 2 33835 NULL
111132+oz_cdev_write_33852 oz_cdev_write 3 33852 NULL 117329+oz_cdev_write_33852 oz_cdev_write 3 33852 NULL
111133+get_user_pages_33908 get_user_pages 0 33908 NULL 117330+get_user_pages_33908 get_user_pages 0 33908 NULL
117331+sg_nents_33909 sg_nents 0 33909 NULL
111134+ath6kl_roam_mode_write_33912 ath6kl_roam_mode_write 3 33912 NULL 117332+ath6kl_roam_mode_write_33912 ath6kl_roam_mode_write 3 33912 NULL
111135+queue_logical_block_size_33918 queue_logical_block_size 0 33918 NULL 117333+queue_logical_block_size_33918 queue_logical_block_size 0 33918 NULL
111136+sel_read_avc_cache_threshold_33942 sel_read_avc_cache_threshold 3 33942 NULL 117334+sel_read_avc_cache_threshold_33942 sel_read_avc_cache_threshold 3 33942 NULL
111137+lpfc_idiag_ctlacc_read_33943 lpfc_idiag_ctlacc_read 3 33943 NULL 117335+lpfc_idiag_ctlacc_read_33943 lpfc_idiag_ctlacc_read 3 33943 NULL
111138+read_file_tgt_rx_stats_33944 read_file_tgt_rx_stats 3 33944 NULL 117336+read_file_tgt_rx_stats_33944 read_file_tgt_rx_stats 3 33944 NULL
111139+hfsplus_osx_setxattr_33952 hfsplus_osx_setxattr 4 33952 NULL
111140+__proc_dump_kernel_33954 __proc_dump_kernel 5 33954 NULL 117337+__proc_dump_kernel_33954 __proc_dump_kernel 5 33954 NULL
117338+btrfs_delalloc_reserve_metadata_33963 btrfs_delalloc_reserve_metadata 0 33963 NULL
111141+vga_switcheroo_debugfs_write_33984 vga_switcheroo_debugfs_write 3 33984 NULL 117339+vga_switcheroo_debugfs_write_33984 vga_switcheroo_debugfs_write 3 33984 NULL
111142+lbs_lowrssi_write_34025 lbs_lowrssi_write 3 34025 NULL 117340+lbs_lowrssi_write_34025 lbs_lowrssi_write 3 34025 NULL
111143+ppp_write_34034 ppp_write 3 34034 NULL 117341+ppp_write_34034 ppp_write 3 34034 NULL
111144+tty_insert_flip_string_34042 tty_insert_flip_string 3-0 34042 NULL 117342+tty_insert_flip_string_34042 tty_insert_flip_string 3-0 34042 NULL
111145+memcg_update_all_caches_34068 memcg_update_all_caches 1 34068 NULL 117343+memcg_update_all_caches_34068 memcg_update_all_caches 1 34068 NULL
117344+xfs_dialloc_34078 xfs_dialloc 0 34078 NULL
111146+pipeline_pipeline_fifo_full_read_34095 pipeline_pipeline_fifo_full_read 3 34095 NULL 117345+pipeline_pipeline_fifo_full_read_34095 pipeline_pipeline_fifo_full_read 3 34095 NULL
111147+__irq_domain_add_34101 __irq_domain_add 2 34101 NULL 117346+__irq_domain_add_34101 __irq_domain_add 2 34101 NULL
111148+proc_scsi_host_write_34107 proc_scsi_host_write 3 34107 NULL 117347+proc_scsi_host_write_34107 proc_scsi_host_write 3 34107 NULL
@@ -111152,8 +117351,8 @@ index 0000000..9529806
111152+shmem_pread_fast_34147 shmem_pread_fast 3 34147 NULL 117351+shmem_pread_fast_34147 shmem_pread_fast 3 34147 NULL
111153+ocfs2_xattr_list_entry_34165 ocfs2_xattr_list_entry 0 34165 NULL 117352+ocfs2_xattr_list_entry_34165 ocfs2_xattr_list_entry 0 34165 NULL
111154+skb_to_sgvec_34171 skb_to_sgvec 0 34171 NULL 117353+skb_to_sgvec_34171 skb_to_sgvec 0 34171 NULL
117354+xfs_bmapi_write_34208 xfs_bmapi_write 0 34208 NULL
111155+ext4_da_write_begin_34215 ext4_da_write_begin 3-4 34215 NULL 117355+ext4_da_write_begin_34215 ext4_da_write_begin 3-4 34215 NULL
111156+sysfs_bin_read_34228 sysfs_bin_read 3 34228 NULL
111157+bl_pipe_downcall_34264 bl_pipe_downcall 3 34264 NULL 117356+bl_pipe_downcall_34264 bl_pipe_downcall 3 34264 NULL
111158+ocfs2_dlm_lock_34265 ocfs2_dlm_lock 0 34265 NULL 117357+ocfs2_dlm_lock_34265 ocfs2_dlm_lock 0 34265 NULL
111159+device_private_init_34279 device_private_init 0 34279 NULL 117358+device_private_init_34279 device_private_init 0 34279 NULL
@@ -111172,11 +117371,11 @@ index 0000000..9529806
111172+ivtv_read_pos_34400 ivtv_read_pos 3 34400 &iwl_calib_set_34400 117371+ivtv_read_pos_34400 ivtv_read_pos 3 34400 &iwl_calib_set_34400
111173+wd_exp_mode_write_34407 wd_exp_mode_write 3 34407 NULL 117372+wd_exp_mode_write_34407 wd_exp_mode_write 3 34407 NULL
111174+nl80211_send_disassoc_34424 nl80211_send_disassoc 4 34424 NULL 117373+nl80211_send_disassoc_34424 nl80211_send_disassoc 4 34424 NULL
117374+__extent_read_full_page_34437 __extent_read_full_page 0 34437 NULL
111175+usbtest_alloc_urb_34446 usbtest_alloc_urb 3-5 34446 NULL 117375+usbtest_alloc_urb_34446 usbtest_alloc_urb 3-5 34446 NULL
111176+mwifiex_regrdwr_read_34472 mwifiex_regrdwr_read 3 34472 NULL 117376+mwifiex_regrdwr_read_34472 mwifiex_regrdwr_read 3 34472 NULL
111177+skcipher_sndbuf_34476 skcipher_sndbuf 0 34476 NULL 117377+skcipher_sndbuf_34476 skcipher_sndbuf 0 34476 NULL
111178+i2o_parm_field_get_34477 i2o_parm_field_get 5 34477 NULL 117378+i2o_parm_field_get_34477 i2o_parm_field_get 5 34477 NULL
111179+ocfs2_mv_xattr_buckets_34484 ocfs2_mv_xattr_buckets 6 34484 NULL
111180+security_inode_permission_34488 security_inode_permission 0 34488 NULL 117379+security_inode_permission_34488 security_inode_permission 0 34488 NULL
111181+SyS_pwritev_34494 SyS_pwritev 3 34494 NULL 117380+SyS_pwritev_34494 SyS_pwritev 3 34494 NULL
111182+qp_alloc_res_34496 qp_alloc_res 5 34496 NULL 117381+qp_alloc_res_34496 qp_alloc_res 5 34496 NULL
@@ -111191,7 +117390,7 @@ index 0000000..9529806
111191+inet6_ifla6_size_34591 inet6_ifla6_size 0 34591 NULL 117390+inet6_ifla6_size_34591 inet6_ifla6_size 0 34591 NULL
111192+ceph_msgpool_init_34599 ceph_msgpool_init 4 34599 NULL nohasharray 117391+ceph_msgpool_init_34599 ceph_msgpool_init 4 34599 NULL nohasharray
111193+cw1200_queue_init_34599 cw1200_queue_init 4 34599 &ceph_msgpool_init_34599 117392+cw1200_queue_init_34599 cw1200_queue_init 4 34599 &ceph_msgpool_init_34599
111194+brcmf_cfg80211_mgmt_tx_34608 brcmf_cfg80211_mgmt_tx 7 34608 NULL 117393+bio_integrity_bytes_34602 bio_integrity_bytes 2 34602 NULL
111195+__jffs2_ref_totlen_34609 __jffs2_ref_totlen 0 34609 NULL 117394+__jffs2_ref_totlen_34609 __jffs2_ref_totlen 0 34609 NULL
111196+apei_get_nvs_resources_34616 apei_get_nvs_resources 0 34616 NULL 117395+apei_get_nvs_resources_34616 apei_get_nvs_resources 0 34616 NULL
111197+__cfg80211_disconnected_34622 __cfg80211_disconnected 3 34622 NULL 117396+__cfg80211_disconnected_34622 __cfg80211_disconnected 3 34622 NULL
@@ -111207,12 +117406,14 @@ index 0000000..9529806
111207+lsm_alloc_plain_34755 lsm_alloc_plain 1 34755 NULL 117406+lsm_alloc_plain_34755 lsm_alloc_plain 1 34755 NULL
111208+bootmode_store_34762 bootmode_store 4 34762 NULL 117407+bootmode_store_34762 bootmode_store 4 34762 NULL
111209+device_add_34766 device_add 0 34766 NULL 117408+device_add_34766 device_add 0 34766 NULL
117409+xfs_iget_cache_hit_34767 xfs_iget_cache_hit 0 34767 NULL
111210+qib_cdev_init_34778 qib_cdev_init 1 34778 NULL 117410+qib_cdev_init_34778 qib_cdev_init 1 34778 NULL
111211+SYSC_keyctl_34800 SYSC_keyctl 4 34800 NULL 117411+SYSC_keyctl_34800 SYSC_keyctl 4 34800 NULL
111212+can_nocow_extent_34801 can_nocow_extent 2 34801 NULL 117412+can_nocow_extent_34801 can_nocow_extent 2 34801 NULL
111213+drbd_get_max_capacity_34804 drbd_get_max_capacity 0 34804 NULL 117413+drbd_get_max_capacity_34804 drbd_get_max_capacity 0 34804 NULL
111214+ll_setxattr_34806 ll_setxattr 4 34806 NULL 117414+ll_setxattr_34806 ll_setxattr 4 34806 NULL
111215+file_page_index_34820 file_page_index 0-2 34820 NULL 117415+file_page_index_34820 file_page_index 0-2 34820 NULL
117416+bio_segments_34832 bio_segments 0 34832 NULL
111216+b43_debugfs_write_34838 b43_debugfs_write 3 34838 NULL 117417+b43_debugfs_write_34838 b43_debugfs_write 3 34838 NULL
111217+nl_portid_hash_zalloc_34843 nl_portid_hash_zalloc 1 34843 NULL 117418+nl_portid_hash_zalloc_34843 nl_portid_hash_zalloc 1 34843 NULL
111218+acpi_system_write_wakeup_device_34853 acpi_system_write_wakeup_device 3 34853 NULL 117419+acpi_system_write_wakeup_device_34853 acpi_system_write_wakeup_device 3 34853 NULL
@@ -111220,20 +117421,23 @@ index 0000000..9529806
111220+ieee80211_if_read_txpower_34871 ieee80211_if_read_txpower 3 34871 NULL 117421+ieee80211_if_read_txpower_34871 ieee80211_if_read_txpower 3 34871 NULL
111221+msg_print_text_34889 msg_print_text 0 34889 NULL 117422+msg_print_text_34889 msg_print_text 0 34889 NULL
111222+ieee80211_if_write_34894 ieee80211_if_write 3 34894 NULL 117423+ieee80211_if_write_34894 ieee80211_if_write 3 34894 NULL
117424+gfs2_glock_wait_34913 gfs2_glock_wait 0 34913 NULL
111223+si476x_radio_read_rsq_primary_blob_34916 si476x_radio_read_rsq_primary_blob 3 34916 NULL 117425+si476x_radio_read_rsq_primary_blob_34916 si476x_radio_read_rsq_primary_blob 3 34916 NULL
111224+__inode_permission_34925 __inode_permission 0 34925 NULL nohasharray 117426+btrfs_super_chunk_root_34925 btrfs_super_chunk_root 0 34925 NULL nohasharray
111225+btrfs_super_chunk_root_34925 btrfs_super_chunk_root 0 34925 &__inode_permission_34925 117427+__inode_permission_34925 __inode_permission 0 34925 &btrfs_super_chunk_root_34925
111226+ceph_aio_write_34930 ceph_aio_write 4 34930 NULL 117428+ceph_aio_write_34930 ceph_aio_write 4 34930 NULL
111227+sec_flags2str_34933 sec_flags2str 3 34933 NULL 117429+sec_flags2str_34933 sec_flags2str 3 34933 NULL
111228+snd_info_entry_read_34938 snd_info_entry_read 3 34938 NULL 117430+snd_info_entry_read_34938 snd_info_entry_read 3 34938 NULL
111229+i2c_transfer_34958 i2c_transfer 0 34958 NULL 117431+i2c_transfer_34958 i2c_transfer 0 34958 NULL
111230+do_add_page_to_bio_34974 do_add_page_to_bio 2-10 34974 NULL 117432+do_add_page_to_bio_34974 do_add_page_to_bio 2-10 34974 NULL
117433+print_message_35000 print_message 0 35000 NULL
111231+rx_rx_hdr_overflow_read_35002 rx_rx_hdr_overflow_read 3 35002 NULL 117434+rx_rx_hdr_overflow_read_35002 rx_rx_hdr_overflow_read 3 35002 NULL
111232+l2cap_skbuff_fromiovec_35003 l2cap_skbuff_fromiovec 4-3 35003 NULL 117435+l2cap_skbuff_fromiovec_35003 l2cap_skbuff_fromiovec 4-3 35003 NULL
111233+sisusb_copy_memory_35016 sisusb_copy_memory 4 35016 NULL 117436+sisusb_copy_memory_35016 sisusb_copy_memory 4 35016 NULL
111234+coda_psdev_read_35029 coda_psdev_read 3 35029 NULL 117437+coda_psdev_read_35029 coda_psdev_read 3 35029 NULL
111235+brcmf_sdio_chip_writenvram_35042 brcmf_sdio_chip_writenvram 4 35042 NULL 117438+xfs_rtallocate_extent_35052 xfs_rtallocate_extent 0 35052 NULL
111236+pwr_connection_out_of_sync_read_35061 pwr_connection_out_of_sync_read 3 35061 NULL 117439+pwr_connection_out_of_sync_read_35061 pwr_connection_out_of_sync_read 3 35061 NULL
117440+ntfs_attr_extend_initialized_35084 ntfs_attr_extend_initialized 0 35084 NULL
111237+__kfifo_uint_must_check_helper_35097 __kfifo_uint_must_check_helper 0-1 35097 NULL 117441+__kfifo_uint_must_check_helper_35097 __kfifo_uint_must_check_helper 0-1 35097 NULL
111238+capi_write_35104 capi_write 3 35104 NULL nohasharray 117442+capi_write_35104 capi_write 3 35104 NULL nohasharray
111239+tx_tx_done_template_read_35104 tx_tx_done_template_read 3 35104 &capi_write_35104 117443+tx_tx_done_template_read_35104 tx_tx_done_template_read 3 35104 &capi_write_35104
@@ -111243,8 +117447,8 @@ index 0000000..9529806
111243+iscsi_conn_setup_35159 iscsi_conn_setup 2 35159 NULL 117447+iscsi_conn_setup_35159 iscsi_conn_setup 2 35159 NULL
111244+ieee80211_if_read_bssid_35161 ieee80211_if_read_bssid 3 35161 NULL 117448+ieee80211_if_read_bssid_35161 ieee80211_if_read_bssid 3 35161 NULL
111245+unix_stream_recvmsg_35210 unix_stream_recvmsg 4 35210 NULL 117449+unix_stream_recvmsg_35210 unix_stream_recvmsg 4 35210 NULL
111246+security_key_getsecurity_35218 security_key_getsecurity 0 35218 NULL nohasharray 117450+striped_read_35218 striped_read 0-2 35218 NULL nohasharray
111247+striped_read_35218 striped_read 0-2 35218 &security_key_getsecurity_35218 117451+security_key_getsecurity_35218 security_key_getsecurity 0 35218 &striped_read_35218
111248+rx_rx_cmplt_task_read_35226 rx_rx_cmplt_task_read 3 35226 NULL 117452+rx_rx_cmplt_task_read_35226 rx_rx_cmplt_task_read 3 35226 NULL
111249+set_fd_set_35249 set_fd_set 1 35249 NULL 117453+set_fd_set_35249 set_fd_set 1 35249 NULL
111250+ioapic_setup_resources_35255 ioapic_setup_resources 1 35255 NULL 117454+ioapic_setup_resources_35255 ioapic_setup_resources 1 35255 NULL
@@ -111254,9 +117458,11 @@ index 0000000..9529806
111254+irda_recvmsg_stream_35280 irda_recvmsg_stream 4 35280 NULL 117458+irda_recvmsg_stream_35280 irda_recvmsg_stream 4 35280 NULL
111255+i2o_block_end_request_35282 i2o_block_end_request 3 35282 NULL 117459+i2o_block_end_request_35282 i2o_block_end_request 3 35282 NULL
111256+isr_rx_rdys_read_35283 isr_rx_rdys_read 3 35283 NULL 117460+isr_rx_rdys_read_35283 isr_rx_rdys_read 3 35283 NULL
111257+__btrfs_buffered_write_35311 __btrfs_buffered_write 3 35311 NULL nohasharray 117461+__btrfs_buffered_write_35311 __btrfs_buffered_write 3-0 35311 NULL nohasharray
111258+brcmf_sdio_forensic_read_35311 brcmf_sdio_forensic_read 3 35311 &__btrfs_buffered_write_35311 117462+brcmf_sdio_forensic_read_35311 brcmf_sdio_forensic_read 3 35311 &__btrfs_buffered_write_35311
111259+tracing_read_pipe_35312 tracing_read_pipe 3 35312 NULL 117463+tracing_read_pipe_35312 tracing_read_pipe 3 35312 NULL
117464+sta_tx_latency_stat_write_35323 sta_tx_latency_stat_write 3 35323 NULL
117465+xfs_btree_check_lblock_35333 xfs_btree_check_lblock 0 35333 NULL
111260+ieee80211_if_fmt_ap_power_level_35347 ieee80211_if_fmt_ap_power_level 3 35347 NULL 117466+ieee80211_if_fmt_ap_power_level_35347 ieee80211_if_fmt_ap_power_level 3 35347 NULL
111261+nouveau_devinit_create__35348 nouveau_devinit_create_ 4 35348 NULL 117467+nouveau_devinit_create__35348 nouveau_devinit_create_ 4 35348 NULL
111262+ieee80211_rx_mgmt_deauth_35351 ieee80211_rx_mgmt_deauth 3 35351 NULL 117468+ieee80211_rx_mgmt_deauth_35351 ieee80211_rx_mgmt_deauth 3 35351 NULL
@@ -111265,6 +117471,8 @@ index 0000000..9529806
111265+SyS_getxattr_35408 SyS_getxattr 4 35408 NULL 117471+SyS_getxattr_35408 SyS_getxattr 4 35408 NULL
111266+rawv6_send_hdrinc_35425 rawv6_send_hdrinc 3 35425 NULL 117472+rawv6_send_hdrinc_35425 rawv6_send_hdrinc 3 35425 NULL
111267+buffer_to_user_35439 buffer_to_user 3 35439 NULL 117473+buffer_to_user_35439 buffer_to_user 3 35439 NULL
117474+efx_mcdi_rpc_async_quiet_35460 efx_mcdi_rpc_async_quiet 4-5 35460 NULL
117475+macvtap_do_read_35475 macvtap_do_read 3 35475 NULL
111268+fiemap_prepare_and_copy_exts_35494 fiemap_prepare_and_copy_exts 5 35494 NULL 117476+fiemap_prepare_and_copy_exts_35494 fiemap_prepare_and_copy_exts 5 35494 NULL
111269+btrfs_prealloc_file_range_trans_35500 btrfs_prealloc_file_range_trans 4 35500 NULL 117477+btrfs_prealloc_file_range_trans_35500 btrfs_prealloc_file_range_trans 4 35500 NULL
111270+async_setkey_35521 async_setkey 3 35521 NULL 117478+async_setkey_35521 async_setkey 3 35521 NULL
@@ -111272,9 +117480,9 @@ index 0000000..9529806
111272+iwl_dbgfs_bt_traffic_read_35534 iwl_dbgfs_bt_traffic_read 3 35534 NULL 117480+iwl_dbgfs_bt_traffic_read_35534 iwl_dbgfs_bt_traffic_read 3 35534 NULL
111273+pstore_mkfile_35536 pstore_mkfile 7 35536 NULL 117481+pstore_mkfile_35536 pstore_mkfile 7 35536 NULL
111274+rxpipe_tx_xfr_host_int_trig_rx_data_read_35538 rxpipe_tx_xfr_host_int_trig_rx_data_read 3 35538 NULL 117482+rxpipe_tx_xfr_host_int_trig_rx_data_read_35538 rxpipe_tx_xfr_host_int_trig_rx_data_read 3 35538 NULL
117483+ocfs2_write_zero_page_35539 ocfs2_write_zero_page 3 35539 NULL
111275+ibnl_put_attr_35541 ibnl_put_attr 3 35541 NULL 117484+ibnl_put_attr_35541 ibnl_put_attr 3 35541 NULL
111276+ieee80211_if_write_smps_35550 ieee80211_if_write_smps 3 35550 NULL 117485+ieee80211_if_write_smps_35550 ieee80211_if_write_smps 3 35550 NULL
111277+sysfs_create_subdir_35567 sysfs_create_subdir 0 35567 NULL
111278+ext4_blocks_for_truncate_35579 ext4_blocks_for_truncate 0 35579 NULL 117486+ext4_blocks_for_truncate_35579 ext4_blocks_for_truncate 0 35579 NULL
111279+ext2_acl_from_disk_35580 ext2_acl_from_disk 2 35580 NULL 117487+ext2_acl_from_disk_35580 ext2_acl_from_disk 2 35580 NULL
111280+spk_msg_set_35586 spk_msg_set 3 35586 NULL 117488+spk_msg_set_35586 spk_msg_set 3 35586 NULL
@@ -111284,11 +117492,9 @@ index 0000000..9529806
111284+ptlrpcd_steal_rqset_35637 ptlrpcd_steal_rqset 0 35637 NULL 117492+ptlrpcd_steal_rqset_35637 ptlrpcd_steal_rqset 0 35637 NULL
111285+spi_register_board_info_35651 spi_register_board_info 2 35651 NULL 117493+spi_register_board_info_35651 spi_register_board_info 2 35651 NULL
111286+rdmaltWithLock_35669 rdmaltWithLock 0 35669 NULL 117494+rdmaltWithLock_35669 rdmaltWithLock 0 35669 NULL
111287+compat_sys_kexec_load_35674 compat_sys_kexec_load 2 35674 NULL
111288+SYSC_pwritev_35690 SYSC_pwritev 3 35690 NULL 117495+SYSC_pwritev_35690 SYSC_pwritev 3 35690 NULL
111289+rds_page_copy_user_35691 rds_page_copy_user 4 35691 NULL 117496+rds_page_copy_user_35691 rds_page_copy_user 4 35691 NULL
111290+md_super_write_35703 md_super_write 4 35703 NULL 117497+md_super_write_35703 md_super_write 4 35703 NULL
111291+ocfs2_extent_recs_per_gd_35710 ocfs2_extent_recs_per_gd 0 35710 NULL
111292+iwl_dbgfs_disable_ht40_read_35761 iwl_dbgfs_disable_ht40_read 3 35761 NULL 117498+iwl_dbgfs_disable_ht40_read_35761 iwl_dbgfs_disable_ht40_read 3 35761 NULL
111293+udf_alloc_i_data_35786 udf_alloc_i_data 2 35786 NULL 117499+udf_alloc_i_data_35786 udf_alloc_i_data 2 35786 NULL
111294+pvr2_hdw_cpufw_get_35824 pvr2_hdw_cpufw_get 0-4-2 35824 NULL 117500+pvr2_hdw_cpufw_get_35824 pvr2_hdw_cpufw_get 0-4-2 35824 NULL
@@ -111310,7 +117516,6 @@ index 0000000..9529806
111310+generic_ocp_read_35974 generic_ocp_read 3 35974 &ceph_buffer_new_35974 117516+generic_ocp_read_35974 generic_ocp_read 3 35974 &ceph_buffer_new_35974
111311+acl_alloc_35979 acl_alloc 1 35979 NULL 117517+acl_alloc_35979 acl_alloc 1 35979 NULL
111312+device_add_class_symlinks_35985 device_add_class_symlinks 0 35985 NULL 117518+device_add_class_symlinks_35985 device_add_class_symlinks 0 35985 NULL
111313+generic_file_aio_read_35987 generic_file_aio_read 0 35987 NULL
111314+write_file_antenna_35998 write_file_antenna 3 35998 NULL nohasharray 117519+write_file_antenna_35998 write_file_antenna 3 35998 NULL nohasharray
111315+kuc_alloc_35998 kuc_alloc 1 35998 &write_file_antenna_35998 117520+kuc_alloc_35998 kuc_alloc 1 35998 &write_file_antenna_35998
111316+il3945_ucode_tx_stats_read_36016 il3945_ucode_tx_stats_read 3 36016 NULL 117521+il3945_ucode_tx_stats_read_36016 il3945_ucode_tx_stats_read 3 36016 NULL
@@ -111329,7 +117534,6 @@ index 0000000..9529806
111329+ext3_readpages_36144 ext3_readpages 4 36144 NULL 117534+ext3_readpages_36144 ext3_readpages 4 36144 NULL
111330+twl_set_36154 twl_set 2 36154 NULL 117535+twl_set_36154 twl_set 2 36154 NULL
111331+b1_alloc_card_36155 b1_alloc_card 1 36155 NULL 117536+b1_alloc_card_36155 b1_alloc_card 1 36155 NULL
111332+btrfs_file_extent_inline_len_36158 btrfs_file_extent_inline_len 0 36158 NULL
111333+snd_korg1212_copy_from_36169 snd_korg1212_copy_from 6 36169 NULL 117537+snd_korg1212_copy_from_36169 snd_korg1212_copy_from 6 36169 NULL
111334+SyS_kexec_load_36176 SyS_kexec_load 2 36176 NULL 117538+SyS_kexec_load_36176 SyS_kexec_load 2 36176 NULL
111335+ramoops_init_przs_36199 ramoops_init_przs 4 36199 NULL 117539+ramoops_init_przs_36199 ramoops_init_przs 4 36199 NULL
@@ -111359,24 +117563,25 @@ index 0000000..9529806
111359+tunables_read_36385 tunables_read 3 36385 NULL 117563+tunables_read_36385 tunables_read 3 36385 NULL
111360+afs_alloc_flat_call_36399 afs_alloc_flat_call 2-3 36399 NULL 117564+afs_alloc_flat_call_36399 afs_alloc_flat_call 2-3 36399 NULL
111361+sierra_write_36402 sierra_write 4 36402 NULL 117565+sierra_write_36402 sierra_write 4 36402 NULL
111362+iwl_dbgfs_d3_sram_write_36403 iwl_dbgfs_d3_sram_write 3 36403 NULL 117566+qdsb_get_36409 qdsb_get 0 36409 NULL
111363+SyS_sethostname_36417 SyS_sethostname 2 36417 NULL 117567+SyS_sethostname_36417 SyS_sethostname 2 36417 NULL
111364+ReadW6692B_36445 ReadW6692B 0 36445 NULL 117568+ReadW6692B_36445 ReadW6692B 0 36445 NULL
111365+sctp_tsnmap_init_36446 sctp_tsnmap_init 2 36446 NULL 117569+sctp_tsnmap_init_36446 sctp_tsnmap_init 2 36446 NULL
111366+alloc_etherdev_mqs_36450 alloc_etherdev_mqs 1 36450 NULL 117570+alloc_etherdev_mqs_36450 alloc_etherdev_mqs 1 36450 NULL
111367+SyS_process_vm_writev_36476 SyS_process_vm_writev 3-5 36476 NULL 117571+SyS_process_vm_writev_36476 SyS_process_vm_writev 3-5 36476 NULL
117572+lock_and_cleanup_extent_if_need_36480 lock_and_cleanup_extent_if_need 0 36480 NULL
111368+b43_nphy_load_samples_36481 b43_nphy_load_samples 3 36481 NULL 117573+b43_nphy_load_samples_36481 b43_nphy_load_samples 3 36481 NULL
111369+tx_tx_checksum_result_read_36490 tx_tx_checksum_result_read 3 36490 NULL nohasharray 117574+ip6_append_data_36490 ip6_append_data 4 36490 NULL nohasharray
111370+ip6_append_data_36490 ip6_append_data 4 36490 &tx_tx_checksum_result_read_36490 117575+tx_tx_checksum_result_read_36490 tx_tx_checksum_result_read 3 36490 &ip6_append_data_36490
111371+cmd_loop_36491 cmd_loop 0 36491 NULL 117576+cmd_loop_36491 cmd_loop 0 36491 NULL
111372+__hwahc_op_set_ptk_36510 __hwahc_op_set_ptk 5 36510 NULL 117577+__hwahc_op_set_ptk_36510 __hwahc_op_set_ptk 5 36510 NULL
111373+mcam_v4l_read_36513 mcam_v4l_read 3 36513 NULL 117578+mcam_v4l_read_36513 mcam_v4l_read 3 36513 NULL
117579+_iwl_dbgfs_fw_nmi_write_36515 _iwl_dbgfs_fw_nmi_write 3 36515 NULL
111374+get_param_l_36518 get_param_l 0 36518 NULL 117580+get_param_l_36518 get_param_l 0 36518 NULL
111375+ieee80211_if_read_fwded_frames_36520 ieee80211_if_read_fwded_frames 3 36520 NULL 117581+ieee80211_if_read_fwded_frames_36520 ieee80211_if_read_fwded_frames 3 36520 NULL
111376+crypto_aead_authsize_36537 crypto_aead_authsize 0 36537 NULL 117582+crypto_aead_authsize_36537 crypto_aead_authsize 0 36537 NULL
111377+cpu_type_read_36540 cpu_type_read 3 36540 NULL 117583+cpu_type_read_36540 cpu_type_read 3 36540 NULL
111378+__kfifo_to_user_36555 __kfifo_to_user 3-0 36555 NULL nohasharray 117584+__kfifo_to_user_36555 __kfifo_to_user 3-0 36555 NULL
111379+macvtap_do_read_36555 macvtap_do_read 4 36555 &__kfifo_to_user_36555
111380+btrfs_get_token_64_36572 btrfs_get_token_64 0 36572 NULL 117585+btrfs_get_token_64_36572 btrfs_get_token_64 0 36572 NULL
111381+__erst_read_36579 __erst_read 0 36579 NULL 117586+__erst_read_36579 __erst_read 0 36579 NULL
111382+put_cmsg_36589 put_cmsg 4 36589 NULL 117587+put_cmsg_36589 put_cmsg 4 36589 NULL
@@ -111393,7 +117598,7 @@ index 0000000..9529806
111393+cxgbi_device_register_36746 cxgbi_device_register 1-2 36746 NULL 117598+cxgbi_device_register_36746 cxgbi_device_register 1-2 36746 NULL
111394+ps_poll_upsd_timeouts_read_36755 ps_poll_upsd_timeouts_read 3 36755 NULL 117599+ps_poll_upsd_timeouts_read_36755 ps_poll_upsd_timeouts_read 3 36755 NULL
111395+ptp_filter_init_36780 ptp_filter_init 2 36780 NULL 117600+ptp_filter_init_36780 ptp_filter_init 2 36780 NULL
111396+i40e_init_lan_hmc_36796 i40e_init_lan_hmc 2-3-4-5 36796 NULL 117601+i40e_init_lan_hmc_36796 i40e_init_lan_hmc 5-4-3-2 36796 NULL
111397+proc_fault_inject_read_36802 proc_fault_inject_read 3 36802 NULL 117602+proc_fault_inject_read_36802 proc_fault_inject_read 3 36802 NULL
111398+hiddev_ioctl_36816 hiddev_ioctl 2 36816 NULL 117603+hiddev_ioctl_36816 hiddev_ioctl 2 36816 NULL
111399+int_hardware_entry_36833 int_hardware_entry 3 36833 NULL 117604+int_hardware_entry_36833 int_hardware_entry 3 36833 NULL
@@ -111407,9 +117612,9 @@ index 0000000..9529806
111407+ib_ucm_alloc_data_36885 ib_ucm_alloc_data 3 36885 NULL 117612+ib_ucm_alloc_data_36885 ib_ucm_alloc_data 3 36885 NULL
111408+selinux_inode_notifysecctx_36896 selinux_inode_notifysecctx 3 36896 NULL 117613+selinux_inode_notifysecctx_36896 selinux_inode_notifysecctx 3 36896 NULL
111409+OS_kmalloc_36909 OS_kmalloc 1 36909 NULL 117614+OS_kmalloc_36909 OS_kmalloc 1 36909 NULL
111410+audio_set_endpoint_req_36918 audio_set_endpoint_req 0 36918 NULL
111411+crypto_blkcipher_ivsize_36944 crypto_blkcipher_ivsize 0 36944 NULL 117615+crypto_blkcipher_ivsize_36944 crypto_blkcipher_ivsize 0 36944 NULL
111412+il4965_rs_sta_dbgfs_scale_table_write_36979 il4965_rs_sta_dbgfs_scale_table_write 3 36979 NULL 117616+il4965_rs_sta_dbgfs_scale_table_write_36979 il4965_rs_sta_dbgfs_scale_table_write 3 36979 NULL
117617+xfs_btree_check_sptr_36984 xfs_btree_check_sptr 0 36984 NULL
111413+drbd_new_dev_size_36998 drbd_new_dev_size 0-3 36998 NULL 117618+drbd_new_dev_size_36998 drbd_new_dev_size 0-3 36998 NULL
111414+auok190xfb_write_37001 auok190xfb_write 3 37001 NULL 117619+auok190xfb_write_37001 auok190xfb_write 3 37001 NULL
111415+setxattr_37006 setxattr 4 37006 NULL 117620+setxattr_37006 setxattr 4 37006 NULL
@@ -111422,14 +117627,13 @@ index 0000000..9529806
111422+parse_command_37079 parse_command 2 37079 NULL 117627+parse_command_37079 parse_command 2 37079 NULL
111423+pipeline_cs_rx_packet_in_read_37089 pipeline_cs_rx_packet_in_read 3 37089 NULL 117628+pipeline_cs_rx_packet_in_read_37089 pipeline_cs_rx_packet_in_read 3 37089 NULL
111424+tun_get_user_37094 tun_get_user 5 37094 NULL 117629+tun_get_user_37094 tun_get_user 5 37094 NULL
117630+xlog_grant_head_check_37116 xlog_grant_head_check 0 37116 NULL
111425+has_wrprotected_page_37123 has_wrprotected_page 3-2 37123 NULL 117631+has_wrprotected_page_37123 has_wrprotected_page 3-2 37123 NULL
111426+snd_hda_get_conn_list_37132 snd_hda_get_conn_list 0 37132 NULL 117632+snd_hda_get_conn_list_37132 snd_hda_get_conn_list 0 37132 NULL
111427+mtt_free_res_37144 mtt_free_res 5 37144 NULL 117633+mtt_free_res_37144 mtt_free_res 5 37144 NULL
111428+msg_word_37164 msg_word 0 37164 NULL 117634+msg_word_37164 msg_word 0 37164 NULL
111429+f2fs_direct_IO_37167 f2fs_direct_IO 4 37167 NULL 117635+f2fs_direct_IO_37167 f2fs_direct_IO 4 37167 NULL
111430+can_set_xattr_37182 can_set_xattr 4 37182 NULL
111431+vcc_recvmsg_37198 vcc_recvmsg 4 37198 NULL 117636+vcc_recvmsg_37198 vcc_recvmsg 4 37198 NULL
111432+sysfs_add_file_37200 sysfs_add_file 0 37200 NULL
111433+forced_ps_write_37209 forced_ps_write 3 37209 NULL 117637+forced_ps_write_37209 forced_ps_write 3 37209 NULL
111434+crypto_shash_descsize_37212 crypto_shash_descsize 0 37212 NULL nohasharray 117638+crypto_shash_descsize_37212 crypto_shash_descsize 0 37212 NULL nohasharray
111435+ext4_ind_direct_IO_37212 ext4_ind_direct_IO 0-4 37212 &crypto_shash_descsize_37212 117639+ext4_ind_direct_IO_37212 ext4_ind_direct_IO 0-4 37212 &crypto_shash_descsize_37212
@@ -111438,28 +117642,30 @@ index 0000000..9529806
111438+__do_replace_37227 __do_replace 5 37227 NULL 117642+__do_replace_37227 __do_replace 5 37227 NULL
111439+iwl_dbgfs_d3_sram_read_37237 iwl_dbgfs_d3_sram_read 3 37237 NULL 117643+iwl_dbgfs_d3_sram_read_37237 iwl_dbgfs_d3_sram_read 3 37237 NULL
111440+rx_filter_dup_filter_read_37238 rx_filter_dup_filter_read 3 37238 NULL 117644+rx_filter_dup_filter_read_37238 rx_filter_dup_filter_read 3 37238 NULL
117645+xfs_reclaim_inode_37257 xfs_reclaim_inode 0 37257 NULL
111441+exofs_max_io_pages_37263 exofs_max_io_pages 0-2 37263 NULL 117646+exofs_max_io_pages_37263 exofs_max_io_pages 0-2 37263 NULL
117647+_iwl_dbgfs_fw_restart_write_37270 _iwl_dbgfs_fw_restart_write 3 37270 NULL
111442+ieee80211_if_read_power_mode_37305 ieee80211_if_read_power_mode 3 37305 NULL 117648+ieee80211_if_read_power_mode_37305 ieee80211_if_read_power_mode 3 37305 NULL
111443+ext3_direct_IO_37308 ext3_direct_IO 4 37308 NULL 117649+ext3_direct_IO_37308 ext3_direct_IO 4 37308 NULL
111444+ocfs2_calc_extend_credits_37310 ocfs2_calc_extend_credits 0 37310 NULL
111445+jffs2_write_dirent_37311 jffs2_write_dirent 5 37311 NULL 117650+jffs2_write_dirent_37311 jffs2_write_dirent 5 37311 NULL
111446+send_msg_37323 send_msg 4 37323 NULL 117651+send_msg_37323 send_msg 4 37323 NULL
111447+l2cap_create_connless_pdu_37327 l2cap_create_connless_pdu 3 37327 NULL nohasharray 117652+l2cap_create_connless_pdu_37327 l2cap_create_connless_pdu 3 37327 NULL nohasharray
111448+bnx2x_vf_fill_fw_str_37327 bnx2x_vf_fill_fw_str 3 37327 &l2cap_create_connless_pdu_37327 117653+bnx2x_vf_fill_fw_str_37327 bnx2x_vf_fill_fw_str 3 37327 &l2cap_create_connless_pdu_37327
111449+scsi_mode_select_37330 scsi_mode_select 6 37330 NULL 117654+scsi_mode_select_37330 scsi_mode_select 6 37330 NULL
111450+rxrpc_server_sendmsg_37331 rxrpc_server_sendmsg 4 37331 NULL 117655+rxrpc_server_sendmsg_37331 rxrpc_server_sendmsg 4 37331 NULL
117656+xfs_iomap_write_allocate_37336 xfs_iomap_write_allocate 0 37336 NULL
111451+security_inode_getsecurity_37354 security_inode_getsecurity 0 37354 NULL 117657+security_inode_getsecurity_37354 security_inode_getsecurity 0 37354 NULL
111452+hci_sock_sendmsg_37420 hci_sock_sendmsg 4 37420 NULL 117658+hci_sock_sendmsg_37420 hci_sock_sendmsg 4 37420 NULL
111453+acpi_os_allocate_zeroed_37422 acpi_os_allocate_zeroed 1 37422 NULL 117659+acpi_os_allocate_zeroed_37422 acpi_os_allocate_zeroed 1 37422 NULL
111454+tty_insert_flip_string_fixed_flag_37428 tty_insert_flip_string_fixed_flag 4-0 37428 NULL 117660+tty_insert_flip_string_fixed_flag_37428 tty_insert_flip_string_fixed_flag 4-0 37428 NULL
111455+iwl_print_last_event_logs_37433 iwl_print_last_event_logs 7-9-0 37433 NULL 117661+iwl_print_last_event_logs_37433 iwl_print_last_event_logs 0-7-9 37433 NULL
111456+fru_alloc_37442 fru_alloc 1 37442 NULL 117662+fru_alloc_37442 fru_alloc 1 37442 NULL
111457+tcp_established_options_37450 tcp_established_options 0 37450 NULL nohasharray 117663+tcp_established_options_37450 tcp_established_options 0 37450 NULL nohasharray
111458+tipc_send2port_37450 tipc_send2port 4 37450 &tcp_established_options_37450 117664+tipc_send2port_37450 tipc_send2port 4 37450 &tcp_established_options_37450
117665+xfs_btree_dec_cursor_37452 xfs_btree_dec_cursor 0 37452 NULL
111459+brcmf_sdio_dump_console_37455 brcmf_sdio_dump_console 4 37455 NULL 117666+brcmf_sdio_dump_console_37455 brcmf_sdio_dump_console 4 37455 NULL
111460+get_est_timing_37484 get_est_timing 0 37484 NULL 117667+get_est_timing_37484 get_est_timing 0 37484 NULL
111461+kmem_realloc_37489 kmem_realloc 2 37489 NULL 117668+kmem_realloc_37489 kmem_realloc 2 37489 NULL
111462+__hfsplus_setxattr_37499 __hfsplus_setxattr 4 37499 NULL
111463+bitmap_dirty_bits_37503 bitmap_dirty_bits 2 37503 NULL 117669+bitmap_dirty_bits_37503 bitmap_dirty_bits 2 37503 NULL
111464+osc_active_seq_write_37514 osc_active_seq_write 3 37514 NULL 117670+osc_active_seq_write_37514 osc_active_seq_write 3 37514 NULL
111465+bdev_writeseg_37519 bdev_writeseg 2-3 37519 NULL 117671+bdev_writeseg_37519 bdev_writeseg 2-3 37519 NULL
@@ -111468,12 +117674,14 @@ index 0000000..9529806
111468+hdr_size_37536 hdr_size 0 37536 NULL 117674+hdr_size_37536 hdr_size 0 37536 NULL
111469+extent_map_end_37550 extent_map_end 0 37550 NULL 117675+extent_map_end_37550 extent_map_end 0 37550 NULL
111470+sep_create_dcb_dmatables_context_37551 sep_create_dcb_dmatables_context 6 37551 NULL 117676+sep_create_dcb_dmatables_context_37551 sep_create_dcb_dmatables_context 6 37551 NULL
117677+fat_cont_expand_37552 fat_cont_expand 0 37552 NULL
111471+ioat_chansts_37558 ioat_chansts 0 37558 NULL 117678+ioat_chansts_37558 ioat_chansts 0 37558 NULL
111472+xhci_alloc_streams_37586 xhci_alloc_streams 5 37586 NULL 117679+xhci_alloc_streams_37586 xhci_alloc_streams 5 37586 NULL
111473+qla2x00_debounce_register_37597 qla2x00_debounce_register 0 37597 NULL 117680+qla2x00_debounce_register_37597 qla2x00_debounce_register 0 37597 NULL
111474+kvm_read_guest_page_mmu_37611 kvm_read_guest_page_mmu 6 37611 NULL 117681+kvm_read_guest_page_mmu_37611 kvm_read_guest_page_mmu 6 37611 NULL
111475+SYSC_mbind_37622 SYSC_mbind 5 37622 NULL 117682+SYSC_mbind_37622 SYSC_mbind 5 37622 NULL
111476+SyS_mbind_37638 SyS_mbind 5 37638 NULL 117683+SyS_mbind_37638 SyS_mbind 5 37638 NULL
117684+may_delete_37656 may_delete 0 37656 NULL
111477+bio_copy_user_iov_37660 bio_copy_user_iov 4 37660 NULL 117685+bio_copy_user_iov_37660 bio_copy_user_iov 4 37660 NULL
111478+rfcomm_sock_sendmsg_37661 rfcomm_sock_sendmsg 4 37661 NULL nohasharray 117686+rfcomm_sock_sendmsg_37661 rfcomm_sock_sendmsg 4 37661 NULL nohasharray
111479+vmw_framebuffer_dmabuf_dirty_37661 vmw_framebuffer_dmabuf_dirty 6 37661 &rfcomm_sock_sendmsg_37661 117687+vmw_framebuffer_dmabuf_dirty_37661 vmw_framebuffer_dmabuf_dirty 6 37661 &rfcomm_sock_sendmsg_37661
@@ -111481,11 +117689,11 @@ index 0000000..9529806
111481+__wa_seg_calculate_isoc_frame_count_37672 __wa_seg_calculate_isoc_frame_count 0 37672 NULL 117689+__wa_seg_calculate_isoc_frame_count_37672 __wa_seg_calculate_isoc_frame_count 0 37672 NULL
111482+ieee80211_if_read_rc_rateidx_mcs_mask_2ghz_37675 ieee80211_if_read_rc_rateidx_mcs_mask_2ghz 3 37675 NULL 117690+ieee80211_if_read_rc_rateidx_mcs_mask_2ghz_37675 ieee80211_if_read_rc_rateidx_mcs_mask_2ghz 3 37675 NULL
111483+regmap_map_read_file_37685 regmap_map_read_file 3 37685 NULL 117691+regmap_map_read_file_37685 regmap_map_read_file 3 37685 NULL
111484+page_chain_free_37697 page_chain_free 0 37697 NULL
111485+nametbl_header_37698 nametbl_header 2-0 37698 NULL 117692+nametbl_header_37698 nametbl_header 2-0 37698 NULL
111486+__le32_to_cpup_37702 __le32_to_cpup 0 37702 NULL 117693+__le32_to_cpup_37702 __le32_to_cpup 0 37702 NULL
111487+dynamic_ps_timeout_write_37713 dynamic_ps_timeout_write 3 37713 NULL 117694+dynamic_ps_timeout_write_37713 dynamic_ps_timeout_write 3 37713 NULL
111488+read_enabled_file_bool_37744 read_enabled_file_bool 3 37744 NULL 117695+read_enabled_file_bool_37744 read_enabled_file_bool 3 37744 NULL
117696+xfs_read_agf_37749 xfs_read_agf 0 37749 NULL
111489+ocfs2_control_cfu_37750 ocfs2_control_cfu 2 37750 NULL 117697+ocfs2_control_cfu_37750 ocfs2_control_cfu 2 37750 NULL
111490+ipath_cdev_init_37752 ipath_cdev_init 1 37752 NULL 117698+ipath_cdev_init_37752 ipath_cdev_init 1 37752 NULL
111491+dccp_setsockopt_cscov_37766 dccp_setsockopt_cscov 2 37766 NULL 117699+dccp_setsockopt_cscov_37766 dccp_setsockopt_cscov 2 37766 NULL
@@ -111532,12 +117740,13 @@ index 0000000..9529806
111532+cdev_add_38176 cdev_add 2-3 38176 NULL 117740+cdev_add_38176 cdev_add 2-3 38176 NULL
111533+rt2x00debug_write_rf_38195 rt2x00debug_write_rf 3 38195 NULL 117741+rt2x00debug_write_rf_38195 rt2x00debug_write_rf 3 38195 NULL
111534+get_ucode_user_38202 get_ucode_user 3 38202 NULL 117742+get_ucode_user_38202 get_ucode_user 3 38202 NULL
111535+osd_req_list_partition_collections_38223 osd_req_list_partition_collections 5 38223 NULL 117743+osd_req_list_partition_collections_38223 osd_req_list_partition_collections 5 38223 NULL nohasharray
117744+xfs_rtallocate_range_38223 xfs_rtallocate_range 0 38223 &osd_req_list_partition_collections_38223
111536+ceph_decode_16_38239 ceph_decode_16 0 38239 NULL 117745+ceph_decode_16_38239 ceph_decode_16 0 38239 NULL
111537+_ipw_read_reg32_38245 _ipw_read_reg32 0 38245 NULL 117746+_ipw_read_reg32_38245 _ipw_read_reg32 0 38245 NULL
117747+xfs_qm_dqrepair_38262 xfs_qm_dqrepair 0 38262 NULL
111538+mthca_alloc_icm_table_38268 mthca_alloc_icm_table 4-3 38268 NULL nohasharray 117748+mthca_alloc_icm_table_38268 mthca_alloc_icm_table 4-3 38268 NULL nohasharray
111539+ieee80211_if_read_auto_open_plinks_38268 ieee80211_if_read_auto_open_plinks 3 38268 &mthca_alloc_icm_table_38268 nohasharray 117749+ieee80211_if_read_auto_open_plinks_38268 ieee80211_if_read_auto_open_plinks 3 38268 &mthca_alloc_icm_table_38268
111540+SYSC_msgrcv_38268 SYSC_msgrcv 3 38268 &ieee80211_if_read_auto_open_plinks_38268
111541+xfs_bmbt_to_bmdr_38275 xfs_bmbt_to_bmdr 3 38275 NULL nohasharray 117750+xfs_bmbt_to_bmdr_38275 xfs_bmbt_to_bmdr 3 38275 NULL nohasharray
111542+xfs_bmdr_to_bmbt_38275 xfs_bmdr_to_bmbt 5 38275 &xfs_bmbt_to_bmdr_38275 117751+xfs_bmdr_to_bmbt_38275 xfs_bmdr_to_bmbt 5 38275 &xfs_bmbt_to_bmdr_38275
111543+ftdi_process_packet_38281 ftdi_process_packet 4 38281 NULL 117752+ftdi_process_packet_38281 ftdi_process_packet 4 38281 NULL
@@ -111546,11 +117755,11 @@ index 0000000..9529806
111546+ida_simple_get_38326 ida_simple_get 0 38326 NULL 117755+ida_simple_get_38326 ida_simple_get 0 38326 NULL
111547+__snd_gf1_look8_38333 __snd_gf1_look8 0 38333 NULL 117756+__snd_gf1_look8_38333 __snd_gf1_look8 0 38333 NULL
111548+btrfs_file_extent_disk_num_bytes_38363 btrfs_file_extent_disk_num_bytes 0 38363 NULL 117757+btrfs_file_extent_disk_num_bytes_38363 btrfs_file_extent_disk_num_bytes 0 38363 NULL
111549+xfs_free_file_space_38383 xfs_free_file_space 2-3 38383 NULL
111550+dn_sendmsg_38390 dn_sendmsg 4 38390 NULL 117758+dn_sendmsg_38390 dn_sendmsg 4 38390 NULL
111551+ieee80211_if_read_dtim_count_38419 ieee80211_if_read_dtim_count 3 38419 NULL 117759+ieee80211_if_read_dtim_count_38419 ieee80211_if_read_dtim_count 3 38419 NULL
111552+pmcraid_copy_sglist_38431 pmcraid_copy_sglist 3 38431 NULL 117760+pmcraid_copy_sglist_38431 pmcraid_copy_sglist 3 38431 NULL
111553+kvm_write_guest_38454 kvm_write_guest 4-2 38454 NULL 117761+kvm_write_guest_38454 kvm_write_guest 4-2 38454 NULL
117762+_iwl_dbgfs_scan_ant_rxchain_write_38479 _iwl_dbgfs_scan_ant_rxchain_write 3 38479 NULL
111554+blk_end_bidi_request_38482 blk_end_bidi_request 3-4 38482 NULL 117763+blk_end_bidi_request_38482 blk_end_bidi_request 3-4 38482 NULL
111555+dev_names_read_38509 dev_names_read 3 38509 NULL 117764+dev_names_read_38509 dev_names_read 3 38509 NULL
111556+iscsi_create_iface_38510 iscsi_create_iface 5 38510 NULL 117765+iscsi_create_iface_38510 iscsi_create_iface 5 38510 NULL
@@ -111563,6 +117772,7 @@ index 0000000..9529806
111563+_ipw_read32_38565 _ipw_read32 0 38565 NULL 117772+_ipw_read32_38565 _ipw_read32 0 38565 NULL
111564+snd_nm256_playback_copy_38567 snd_nm256_playback_copy 5-3 38567 NULL 117773+snd_nm256_playback_copy_38567 snd_nm256_playback_copy 5-3 38567 NULL
111565+copy_ctl_value_to_user_38587 copy_ctl_value_to_user 4 38587 NULL 117774+copy_ctl_value_to_user_38587 copy_ctl_value_to_user 4 38587 NULL
117775+rd_allocate_sgl_table_38607 rd_allocate_sgl_table 3 38607 NULL
111566+icn_writecmd_38629 icn_writecmd 2 38629 NULL 117776+icn_writecmd_38629 icn_writecmd 2 38629 NULL
111567+write_enabled_file_bool_38630 write_enabled_file_bool 3 38630 NULL 117777+write_enabled_file_bool_38630 write_enabled_file_bool 3 38630 NULL
111568+ext2_readpages_38640 ext2_readpages 4 38640 NULL 117778+ext2_readpages_38640 ext2_readpages 4 38640 NULL
@@ -111573,13 +117783,11 @@ index 0000000..9529806
111573+snd_es1371_wait_src_ready_38673 snd_es1371_wait_src_ready 0 38673 NULL 117783+snd_es1371_wait_src_ready_38673 snd_es1371_wait_src_ready 0 38673 NULL
111574+iscsit_dump_data_payload_38683 iscsit_dump_data_payload 2 38683 NULL 117784+iscsit_dump_data_payload_38683 iscsit_dump_data_payload 2 38683 NULL
111575+rbio_add_io_page_38700 rbio_add_io_page 6 38700 NULL 117785+rbio_add_io_page_38700 rbio_add_io_page 6 38700 NULL
111576+alloc_trace_probe_38720 alloc_trace_probe 6 38720 NULL
111577+w83977af_sir_interrupt_38738 w83977af_sir_interrupt 0 38738 NULL 117786+w83977af_sir_interrupt_38738 w83977af_sir_interrupt 0 38738 NULL
111578+udf_readpages_38761 udf_readpages 4 38761 NULL 117787+udf_readpages_38761 udf_readpages 4 38761 NULL
111579+iwl_dbgfs_thermal_throttling_read_38779 iwl_dbgfs_thermal_throttling_read 3 38779 NULL 117788+iwl_dbgfs_thermal_throttling_read_38779 iwl_dbgfs_thermal_throttling_read 3 38779 NULL
111580+bcache_device_init_38781 bcache_device_init 3 38781 NULL 117789+bcache_device_init_38781 bcache_device_init 3 38781 NULL
111581+snd_gus_dram_write_38784 snd_gus_dram_write 4 38784 NULL 117790+snd_gus_dram_write_38784 snd_gus_dram_write 4 38784 NULL
111582+slab_order_38794 slab_order 0 38794 NULL
111583+do_pci_enable_device_38802 do_pci_enable_device 0 38802 NULL 117791+do_pci_enable_device_38802 do_pci_enable_device 0 38802 NULL
111584+err_decode_38804 err_decode 2 38804 NULL 117792+err_decode_38804 err_decode 2 38804 NULL
111585+ipv6_renew_option_38813 ipv6_renew_option 3 38813 NULL 117793+ipv6_renew_option_38813 ipv6_renew_option 3 38813 NULL
@@ -111587,14 +117795,13 @@ index 0000000..9529806
111587+compat_udp_setsockopt_38840 compat_udp_setsockopt 5 38840 NULL 117795+compat_udp_setsockopt_38840 compat_udp_setsockopt 5 38840 NULL
111588+read_nic_io_word_38853 read_nic_io_word 0 38853 NULL 117796+read_nic_io_word_38853 read_nic_io_word 0 38853 NULL
111589+interfaces_38859 interfaces 2 38859 NULL 117797+interfaces_38859 interfaces 2 38859 NULL
111590+pci_msix_table_size_38867 pci_msix_table_size 0 38867 NULL
111591+dbgfs_state_38894 dbgfs_state 3 38894 NULL 117798+dbgfs_state_38894 dbgfs_state 3 38894 NULL
111592+f2fs_xattr_set_acl_38895 f2fs_xattr_set_acl 4 38895 NULL
111593+il_dbgfs_sram_write_38942 il_dbgfs_sram_write 3 38942 NULL 117799+il_dbgfs_sram_write_38942 il_dbgfs_sram_write 3 38942 NULL
111594+__ath6kl_wmi_send_mgmt_cmd_38971 __ath6kl_wmi_send_mgmt_cmd 7 38971 NULL 117800+__ath6kl_wmi_send_mgmt_cmd_38971 __ath6kl_wmi_send_mgmt_cmd 7 38971 NULL
111595+usb_maxpacket_38977 usb_maxpacket 0 38977 NULL nohasharray 117801+usb_maxpacket_38977 usb_maxpacket 0 38977 NULL nohasharray
111596+C_SYSC_preadv64_38977 C_SYSC_preadv64 3 38977 &usb_maxpacket_38977 117802+C_SYSC_preadv64_38977 C_SYSC_preadv64 3 38977 &usb_maxpacket_38977
111597+OSDSetBlock_38986 OSDSetBlock 2-4 38986 NULL 117803+OSDSetBlock_38986 OSDSetBlock 2-4 38986 NULL
117804+bio_clone_range_38997 bio_clone_range 2 38997 NULL
111598+lpfc_idiag_extacc_write_38998 lpfc_idiag_extacc_write 3 38998 NULL 117805+lpfc_idiag_extacc_write_38998 lpfc_idiag_extacc_write 3 38998 NULL
111599+get_nodes_39012 get_nodes 3 39012 NULL 117806+get_nodes_39012 get_nodes 3 39012 NULL
111600+twl6030_interrupt_unmask_39013 twl6030_interrupt_unmask 2 39013 NULL 117807+twl6030_interrupt_unmask_39013 twl6030_interrupt_unmask 2 39013 NULL
@@ -111619,6 +117826,7 @@ index 0000000..9529806
111619+pwr_cont_miss_bcns_spread_read_39250 pwr_cont_miss_bcns_spread_read 3 39250 &r128_compat_ioctl_39250 117826+pwr_cont_miss_bcns_spread_read_39250 pwr_cont_miss_bcns_spread_read 3 39250 &r128_compat_ioctl_39250
111620+i915_error_state_read_39254 i915_error_state_read 3 39254 NULL 117827+i915_error_state_read_39254 i915_error_state_read 3 39254 NULL
111621+rx_filter_protection_filter_read_39282 rx_filter_protection_filter_read 3 39282 NULL 117828+rx_filter_protection_filter_read_39282 rx_filter_protection_filter_read 3 39282 NULL
117829+_iwl_dbgfs_pm_params_write_39325 _iwl_dbgfs_pm_params_write 3 39325 NULL
111622+__cfg80211_connect_result_39326 __cfg80211_connect_result 4-6 39326 NULL 117830+__cfg80211_connect_result_39326 __cfg80211_connect_result 4-6 39326 NULL
111623+insert_reserved_file_extent_39327 insert_reserved_file_extent 3 39327 NULL 117831+insert_reserved_file_extent_39327 insert_reserved_file_extent 3 39327 NULL
111624+wimax_msg_alloc_39343 wimax_msg_alloc 4 39343 NULL 117832+wimax_msg_alloc_39343 wimax_msg_alloc 4 39343 NULL
@@ -111629,6 +117837,8 @@ index 0000000..9529806
111629+fnic_trace_debugfs_read_39380 fnic_trace_debugfs_read 3 39380 NULL 117837+fnic_trace_debugfs_read_39380 fnic_trace_debugfs_read 3 39380 NULL
111630+ps_poll_ps_poll_utilization_read_39383 ps_poll_ps_poll_utilization_read 3 39383 NULL 117838+ps_poll_ps_poll_utilization_read_39383 ps_poll_ps_poll_utilization_read 3 39383 NULL
111631+__send_to_port_39386 __send_to_port 3 39386 NULL 117839+__send_to_port_39386 __send_to_port 3 39386 NULL
117840+xfs_btree_dup_cursor_39394 xfs_btree_dup_cursor 0 39394 NULL
117841+gfs2_internal_read_39413 gfs2_internal_read 0 39413 NULL
111632+user_power_read_39414 user_power_read 3 39414 NULL 117842+user_power_read_39414 user_power_read 3 39414 NULL
111633+alloc_agpphysmem_i8xx_39427 alloc_agpphysmem_i8xx 1 39427 NULL 117843+alloc_agpphysmem_i8xx_39427 alloc_agpphysmem_i8xx 1 39427 NULL
111634+mic_desc_size_39464 mic_desc_size 0 39464 NULL 117844+mic_desc_size_39464 mic_desc_size 0 39464 NULL
@@ -111637,14 +117847,15 @@ index 0000000..9529806
111637+ieee80211_if_fmt_dot11MeshHWMPmaxPREQretries_39499 ieee80211_if_fmt_dot11MeshHWMPmaxPREQretries 3 39499 NULL 117847+ieee80211_if_fmt_dot11MeshHWMPmaxPREQretries_39499 ieee80211_if_fmt_dot11MeshHWMPmaxPREQretries 3 39499 NULL
111638+cl_req_alloc_39523 cl_req_alloc 4 39523 NULL 117848+cl_req_alloc_39523 cl_req_alloc 4 39523 NULL
111639+int_proc_write_39542 int_proc_write 3 39542 NULL 117849+int_proc_write_39542 int_proc_write 3 39542 NULL
111640+mdc_unpack_capa_39553 mdc_unpack_capa 0 39553 NULL
111641+pp_write_39554 pp_write 3 39554 NULL 117850+pp_write_39554 pp_write 3 39554 NULL
111642+datablob_format_39571 datablob_format 2 39571 NULL nohasharray 117851+datablob_format_39571 datablob_format 2 39571 NULL nohasharray
111643+ieee80211_if_read_fwded_mcast_39571 ieee80211_if_read_fwded_mcast 3 39571 &datablob_format_39571 117852+ieee80211_if_read_fwded_mcast_39571 ieee80211_if_read_fwded_mcast 3 39571 &datablob_format_39571
117853+memblock_virt_alloc_internal_39600 memblock_virt_alloc_internal 1 39600 NULL
111644+ext_depth_39607 ext_depth 0 39607 NULL 117854+ext_depth_39607 ext_depth 0 39607 NULL
111645+batadv_tt_tvlv_generate_39615 batadv_tt_tvlv_generate 4 39615 NULL 117855+batadv_tt_tvlv_generate_39615 batadv_tt_tvlv_generate 4 39615 NULL
111646+nfs_idmap_get_key_39616 nfs_idmap_get_key 2 39616 NULL 117856+nfs_idmap_get_key_39616 nfs_idmap_get_key 2 39616 NULL
111647+sdio_readb_39618 sdio_readb 0 39618 NULL 117857+sdio_readb_39618 sdio_readb 0 39618 NULL
117858+prepare_uptodate_page_39622 prepare_uptodate_page 0 39622 NULL
111648+set_dev_class_39645 set_dev_class 4 39645 NULL 117859+set_dev_class_39645 set_dev_class 4 39645 NULL
111649+snd_rme32_capture_copy_39653 snd_rme32_capture_copy 5 39653 NULL 117860+snd_rme32_capture_copy_39653 snd_rme32_capture_copy 5 39653 NULL
111650+tcp_try_rmem_schedule_39657 tcp_try_rmem_schedule 3 39657 NULL 117861+tcp_try_rmem_schedule_39657 tcp_try_rmem_schedule 3 39657 NULL
@@ -111662,6 +117873,7 @@ index 0000000..9529806
111662+read_file_modal_eeprom_39909 read_file_modal_eeprom 3 39909 NULL 117873+read_file_modal_eeprom_39909 read_file_modal_eeprom 3 39909 NULL
111663+gen_pool_add_virt_39913 gen_pool_add_virt 4 39913 NULL 117874+gen_pool_add_virt_39913 gen_pool_add_virt 4 39913 NULL
111664+dw210x_op_rw_39915 dw210x_op_rw 6 39915 NULL 117875+dw210x_op_rw_39915 dw210x_op_rw 6 39915 NULL
117876+__mnt_want_write_file_39917 __mnt_want_write_file 0 39917 NULL
111665+aes_encrypt_interrupt_read_39919 aes_encrypt_interrupt_read 3 39919 NULL 117877+aes_encrypt_interrupt_read_39919 aes_encrypt_interrupt_read 3 39919 NULL
111666+exofs_read_kern_39921 exofs_read_kern 6 39921 NULL nohasharray 117878+exofs_read_kern_39921 exofs_read_kern 6 39921 NULL nohasharray
111667+oom_score_adj_read_39921 oom_score_adj_read 3 39921 &exofs_read_kern_39921 117879+oom_score_adj_read_39921 oom_score_adj_read 3 39921 &exofs_read_kern_39921
@@ -111670,6 +117882,7 @@ index 0000000..9529806
111670+error_error_frame_read_39947 error_error_frame_read 3 39947 NULL 117882+error_error_frame_read_39947 error_error_frame_read 3 39947 NULL
111671+tty_prepare_flip_string_39955 tty_prepare_flip_string 3-0 39955 NULL 117883+tty_prepare_flip_string_39955 tty_prepare_flip_string 3-0 39955 NULL
111672+lstcon_group_list_39958 lstcon_group_list 2 39958 NULL 117884+lstcon_group_list_39958 lstcon_group_list 2 39958 NULL
117885+bio_chain_clone_range_39967 bio_chain_clone_range 3 39967 NULL
111673+dma_push_rx_39973 dma_push_rx 2 39973 NULL 117886+dma_push_rx_39973 dma_push_rx 2 39973 NULL
111674+broadsheetfb_write_39976 broadsheetfb_write 3 39976 NULL 117887+broadsheetfb_write_39976 broadsheetfb_write 3 39976 NULL
111675+mthca_array_init_39987 mthca_array_init 2 39987 NULL 117888+mthca_array_init_39987 mthca_array_init 2 39987 NULL
@@ -111683,6 +117896,7 @@ index 0000000..9529806
111683+l2cap_create_iframe_pdu_40055 l2cap_create_iframe_pdu 3 40055 NULL nohasharray 117896+l2cap_create_iframe_pdu_40055 l2cap_create_iframe_pdu 3 40055 NULL nohasharray
111684+add_tty_40055 add_tty 1 40055 &l2cap_create_iframe_pdu_40055 117897+add_tty_40055 add_tty 1 40055 &l2cap_create_iframe_pdu_40055
111685+atomic_xchg_40070 atomic_xchg 0 40070 NULL 117898+atomic_xchg_40070 atomic_xchg 0 40070 NULL
117899+xfs_rtbuf_get_40107 xfs_rtbuf_get 0 40107 NULL
111686+sctp_setsockopt_delayed_ack_40129 sctp_setsockopt_delayed_ack 3 40129 NULL 117900+sctp_setsockopt_delayed_ack_40129 sctp_setsockopt_delayed_ack 3 40129 NULL
111687+dwc2_max_desc_num_40132 dwc2_max_desc_num 0 40132 NULL 117901+dwc2_max_desc_num_40132 dwc2_max_desc_num 0 40132 NULL
111688+rx_rx_frame_checksum_read_40140 rx_rx_frame_checksum_read 3 40140 NULL 117902+rx_rx_frame_checksum_read_40140 rx_rx_frame_checksum_read 3 40140 NULL
@@ -111696,8 +117910,7 @@ index 0000000..9529806
111696+compress_file_range_40225 compress_file_range 3-4 40225 NULL 117910+compress_file_range_40225 compress_file_range 3-4 40225 NULL
111697+osst_read_40237 osst_read 3 40237 NULL 117911+osst_read_40237 osst_read 3 40237 NULL
111698+lpage_info_slot_40243 lpage_info_slot 3-1 40243 NULL 117912+lpage_info_slot_40243 lpage_info_slot 3-1 40243 NULL
111699+ocfs2_zero_extend_get_range_40248 ocfs2_zero_extend_get_range 4-3 40248 NULL 117913+ocfs2_zero_extend_get_range_40248 ocfs2_zero_extend_get_range 4 40248 NULL
111700+ptlrpc_queue_wait_40252 ptlrpc_queue_wait 0 40252 NULL
111701+rs_sta_dbgfs_scale_table_read_40262 rs_sta_dbgfs_scale_table_read 3 40262 NULL 117914+rs_sta_dbgfs_scale_table_read_40262 rs_sta_dbgfs_scale_table_read 3 40262 NULL
111702+ext2_fiemap_40271 ext2_fiemap 4 40271 NULL 117915+ext2_fiemap_40271 ext2_fiemap 4 40271 NULL
111703+usbnet_read_cmd_40275 usbnet_read_cmd 7 40275 NULL 117916+usbnet_read_cmd_40275 usbnet_read_cmd 7 40275 NULL
@@ -111717,6 +117930,7 @@ index 0000000..9529806
111717+afs_fs_store_data_40484 afs_fs_store_data 3-4-5-6 40484 NULL 117930+afs_fs_store_data_40484 afs_fs_store_data 3-4-5-6 40484 NULL
111718+batadv_hash_new_40491 batadv_hash_new 1 40491 NULL 117931+batadv_hash_new_40491 batadv_hash_new 1 40491 NULL
111719+devcgroup_inode_permission_40492 devcgroup_inode_permission 0 40492 NULL 117932+devcgroup_inode_permission_40492 devcgroup_inode_permission 0 40492 NULL
117933+xfs_iread_extents_40510 xfs_iread_extents 0 40510 NULL
111720+__ethtool_get_sset_count_40511 __ethtool_get_sset_count 0 40511 NULL 117934+__ethtool_get_sset_count_40511 __ethtool_get_sset_count 0 40511 NULL
111721+TSS_checkhmac2_40520 TSS_checkhmac2 5-7 40520 NULL 117935+TSS_checkhmac2_40520 TSS_checkhmac2 5-7 40520 NULL
111722+ixgbe_dbg_reg_ops_read_40540 ixgbe_dbg_reg_ops_read 3 40540 NULL 117936+ixgbe_dbg_reg_ops_read_40540 ixgbe_dbg_reg_ops_read 3 40540 NULL
@@ -111734,12 +117948,14 @@ index 0000000..9529806
111734+pci_enable_resources_40680 pci_enable_resources 0 40680 NULL 117948+pci_enable_resources_40680 pci_enable_resources 0 40680 NULL
111735+nfc_hci_set_param_40697 nfc_hci_set_param 5 40697 NULL 117949+nfc_hci_set_param_40697 nfc_hci_set_param 5 40697 NULL
111736+__seq_open_private_40715 __seq_open_private 3 40715 NULL 117950+__seq_open_private_40715 __seq_open_private 3 40715 NULL
117951+set_extent_bit_40719 set_extent_bit 0 40719 NULL
111737+fuse_readpages_40737 fuse_readpages 4 40737 NULL 117952+fuse_readpages_40737 fuse_readpages 4 40737 NULL
111738+xfs_iext_remove_direct_40744 xfs_iext_remove_direct 3 40744 NULL 117953+xfs_iext_remove_direct_40744 xfs_iext_remove_direct 3 40744 NULL
111739+security_inode_listxattr_40752 security_inode_listxattr 0 40752 NULL 117954+security_inode_listxattr_40752 security_inode_listxattr 0 40752 NULL
111740+card_send_command_40757 card_send_command 3 40757 NULL 117955+card_send_command_40757 card_send_command 3 40757 NULL
111741+ad1889_readl_40765 ad1889_readl 0 40765 NULL 117956+ad1889_readl_40765 ad1889_readl 0 40765 NULL
111742+pg_write_40766 pg_write 3 40766 NULL 117957+pg_write_40766 pg_write 3 40766 NULL
117958+kernfs_fop_read_40770 kernfs_fop_read 3 40770 NULL
111743+show_list_40775 show_list 3-0 40775 NULL 117959+show_list_40775 show_list 3-0 40775 NULL
111744+kfifo_out_copy_r_40784 kfifo_out_copy_r 3-0 40784 NULL 117960+kfifo_out_copy_r_40784 kfifo_out_copy_r 3-0 40784 NULL
111745+bitmap_weight_40791 bitmap_weight 0-2 40791 NULL 117961+bitmap_weight_40791 bitmap_weight 0-2 40791 NULL
@@ -111765,7 +117981,6 @@ index 0000000..9529806
111765+mISDN_sock_sendmsg_41035 mISDN_sock_sendmsg 4 41035 NULL 117981+mISDN_sock_sendmsg_41035 mISDN_sock_sendmsg 4 41035 NULL
111766+ocfs2_xattr_index_block_find_41040 ocfs2_xattr_index_block_find 0 41040 NULL 117982+ocfs2_xattr_index_block_find_41040 ocfs2_xattr_index_block_find 0 41040 NULL
111767+lprocfs_write_frac_helper_41050 lprocfs_write_frac_helper 2 41050 NULL 117983+lprocfs_write_frac_helper_41050 lprocfs_write_frac_helper 2 41050 NULL
111768+calculate_order_41061 calculate_order 0 41061 NULL
111769+vfs_listxattr_41062 vfs_listxattr 0 41062 NULL nohasharray 117984+vfs_listxattr_41062 vfs_listxattr 0 41062 NULL nohasharray
111770+beacon_filtering_write_41062 beacon_filtering_write 3 41062 &vfs_listxattr_41062 117985+beacon_filtering_write_41062 beacon_filtering_write 3 41062 &vfs_listxattr_41062
111771+cfg80211_inform_bss_frame_41078 cfg80211_inform_bss_frame 4 41078 NULL 117986+cfg80211_inform_bss_frame_41078 cfg80211_inform_bss_frame 4 41078 NULL
@@ -111775,11 +117990,9 @@ index 0000000..9529806
111775+provide_user_output_41105 provide_user_output 3 41105 NULL 117990+provide_user_output_41105 provide_user_output 3 41105 NULL
111776+f_audio_buffer_alloc_41110 f_audio_buffer_alloc 1 41110 NULL 117991+f_audio_buffer_alloc_41110 f_audio_buffer_alloc 1 41110 NULL
111777+ath10k_read_wmi_services_41112 ath10k_read_wmi_services 3 41112 NULL 117992+ath10k_read_wmi_services_41112 ath10k_read_wmi_services 3 41112 NULL
111778+ocfs2_extend_trans_41116 ocfs2_extend_trans 2 41116 NULL
111779+v4l2_ctrl_new_int_menu_41151 v4l2_ctrl_new_int_menu 4 41151 NULL 117993+v4l2_ctrl_new_int_menu_41151 v4l2_ctrl_new_int_menu 4 41151 NULL
111780+tx_frag_mpdu_alloc_failed_read_41167 tx_frag_mpdu_alloc_failed_read 3 41167 NULL 117994+tx_frag_mpdu_alloc_failed_read_41167 tx_frag_mpdu_alloc_failed_read 3 41167 NULL
111781+dvb_ca_write_41171 dvb_ca_write 3 41171 NULL 117995+dvb_ca_write_41171 dvb_ca_write 3 41171 NULL
111782+dgap_driver_kzmalloc_41189 dgap_driver_kzmalloc 1 41189 NULL
111783+compat_sys_process_vm_writev_41194 compat_sys_process_vm_writev 3-5 41194 NULL 117996+compat_sys_process_vm_writev_41194 compat_sys_process_vm_writev 3-5 41194 NULL
111784+dfs_file_write_41196 dfs_file_write 3 41196 NULL 117997+dfs_file_write_41196 dfs_file_write 3 41196 NULL
111785+nfs_page_array_len_41219 nfs_page_array_len 0-2-1 41219 NULL 117998+nfs_page_array_len_41219 nfs_page_array_len 0-2-1 41219 NULL
@@ -111790,6 +118003,7 @@ index 0000000..9529806
111790+o2hb_setup_one_bio_41341 o2hb_setup_one_bio 4 41341 NULL 118003+o2hb_setup_one_bio_41341 o2hb_setup_one_bio 4 41341 NULL
111791+twl_change_queue_depth_41342 twl_change_queue_depth 2 41342 NULL 118004+twl_change_queue_depth_41342 twl_change_queue_depth 2 41342 NULL
111792+rtw_android_set_block_41347 rtw_android_set_block 0 41347 NULL 118005+rtw_android_set_block_41347 rtw_android_set_block 0 41347 NULL
118006+ceph_do_getattr_41349 ceph_do_getattr 0 41349 NULL
111793+cnic_init_id_tbl_41354 cnic_init_id_tbl 2 41354 NULL 118007+cnic_init_id_tbl_41354 cnic_init_id_tbl 2 41354 NULL
111794+kmp_init_41373 kmp_init 2 41373 NULL 118008+kmp_init_41373 kmp_init 2 41373 NULL
111795+isr_commands_read_41398 isr_commands_read 3 41398 NULL 118009+isr_commands_read_41398 isr_commands_read 3 41398 NULL
@@ -111798,7 +118012,7 @@ index 0000000..9529806
111798+isdn_ppp_fill_rq_41428 isdn_ppp_fill_rq 2 41428 NULL 118012+isdn_ppp_fill_rq_41428 isdn_ppp_fill_rq 2 41428 NULL
111799+lbs_rdrf_read_41431 lbs_rdrf_read 3 41431 NULL 118013+lbs_rdrf_read_41431 lbs_rdrf_read 3 41431 NULL
111800+iio_device_alloc_41440 iio_device_alloc 1 41440 NULL 118014+iio_device_alloc_41440 iio_device_alloc 1 41440 NULL
111801+ntfs_file_buffered_write_41442 ntfs_file_buffered_write 6-4 41442 NULL 118015+ntfs_file_buffered_write_41442 ntfs_file_buffered_write 6-4-0 41442 NULL
111802+pcpu_build_alloc_info_41443 pcpu_build_alloc_info 1-2-3 41443 NULL 118016+pcpu_build_alloc_info_41443 pcpu_build_alloc_info 1-2-3 41443 NULL
111803+se_io_cb_41461 se_io_cb 3 41461 NULL 118017+se_io_cb_41461 se_io_cb 3 41461 NULL
111804+layout_leb_in_gaps_41470 layout_leb_in_gaps 0 41470 NULL 118018+layout_leb_in_gaps_41470 layout_leb_in_gaps 0 41470 NULL
@@ -111838,11 +118052,11 @@ index 0000000..9529806
111838+ixgbe_dbg_netdev_ops_read_41839 ixgbe_dbg_netdev_ops_read 3 41839 NULL 118052+ixgbe_dbg_netdev_ops_read_41839 ixgbe_dbg_netdev_ops_read 3 41839 NULL
111839+do_ip_setsockopt_41852 do_ip_setsockopt 5 41852 NULL 118053+do_ip_setsockopt_41852 do_ip_setsockopt 5 41852 NULL
111840+keyctl_instantiate_key_41855 keyctl_instantiate_key 3 41855 NULL 118054+keyctl_instantiate_key_41855 keyctl_instantiate_key 3 41855 NULL
118055+xfs_rtget_summary_41864 xfs_rtget_summary 0 41864 NULL
111841+pci_map_single_41869 pci_map_single 0 41869 NULL 118056+pci_map_single_41869 pci_map_single 0 41869 NULL
111842+usb_gadget_get_string_41871 usb_gadget_get_string 0 41871 NULL 118057+usb_gadget_get_string_41871 usb_gadget_get_string 0 41871 NULL
111843+v_APCI3120_InterruptDmaMoveBlock16bit_41914 v_APCI3120_InterruptDmaMoveBlock16bit 4 41914 NULL 118058+v_APCI3120_InterruptDmaMoveBlock16bit_41914 v_APCI3120_InterruptDmaMoveBlock16bit 4 41914 NULL
111844+get_fdb_entries_41916 get_fdb_entries 3 41916 NULL 118059+get_fdb_entries_41916 get_fdb_entries 3 41916 NULL
111845+nfsd_getxattr_41934 nfsd_getxattr 0 41934 NULL
111846+ext4_da_write_inline_data_begin_41935 ext4_da_write_inline_data_begin 3-4 41935 NULL 118060+ext4_da_write_inline_data_begin_41935 ext4_da_write_inline_data_begin 3-4 41935 NULL
111847+sci_rxfill_41945 sci_rxfill 0 41945 NULL 118061+sci_rxfill_41945 sci_rxfill 0 41945 NULL
111848+read_gssp_41947 read_gssp 3 41947 NULL 118062+read_gssp_41947 read_gssp 3 41947 NULL
@@ -111850,13 +118064,13 @@ index 0000000..9529806
111850+portnames_read_41958 portnames_read 3 41958 NULL 118064+portnames_read_41958 portnames_read 3 41958 NULL
111851+dst_mtu_41969 dst_mtu 0 41969 NULL 118065+dst_mtu_41969 dst_mtu 0 41969 NULL
111852+cx24116_writeregN_41975 cx24116_writeregN 4 41975 NULL 118066+cx24116_writeregN_41975 cx24116_writeregN 4 41975 NULL
118067+xfs_qm_dqalloc_41985 xfs_qm_dqalloc 0 41985 NULL
111853+pool_allocate_42012 pool_allocate 3 42012 NULL 118068+pool_allocate_42012 pool_allocate 3 42012 NULL
111854+spidev_sync_read_42014 spidev_sync_read 0 42014 NULL 118069+spidev_sync_read_42014 spidev_sync_read 0 42014 NULL
111855+rs_sta_dbgfs_scale_table_write_42017 rs_sta_dbgfs_scale_table_write 3 42017 NULL 118070+rs_sta_dbgfs_scale_table_write_42017 rs_sta_dbgfs_scale_table_write 3 42017 NULL
111856+create_dir_42025 create_dir 0 42025 NULL
111857+acpi_ut_create_buffer_object_42030 acpi_ut_create_buffer_object 1 42030 NULL 118071+acpi_ut_create_buffer_object_42030 acpi_ut_create_buffer_object 1 42030 NULL
111858+__btrfs_drop_extents_42032 __btrfs_drop_extents 5 42032 NULL
111859+__hwahc_op_set_gtk_42038 __hwahc_op_set_gtk 4 42038 NULL 118072+__hwahc_op_set_gtk_42038 __hwahc_op_set_gtk 4 42038 NULL
118073+alloc_trace_kprobe_42041 alloc_trace_kprobe 6 42041 NULL
111860+irda_sendmsg_ultra_42047 irda_sendmsg_ultra 4 42047 NULL 118074+irda_sendmsg_ultra_42047 irda_sendmsg_ultra 4 42047 NULL
111861+jffs2_do_link_42048 jffs2_do_link 6 42048 NULL 118075+jffs2_do_link_42048 jffs2_do_link 6 42048 NULL
111862+ps_poll_upsd_max_ap_turn_read_42050 ps_poll_upsd_max_ap_turn_read 3 42050 NULL 118076+ps_poll_upsd_max_ap_turn_read_42050 ps_poll_upsd_max_ap_turn_read 3 42050 NULL
@@ -111865,7 +118079,6 @@ index 0000000..9529806
111865+sk_chk_filter_42095 sk_chk_filter 2 42095 NULL 118079+sk_chk_filter_42095 sk_chk_filter 2 42095 NULL
111866+submit_inquiry_42108 submit_inquiry 3 42108 NULL 118080+submit_inquiry_42108 submit_inquiry 3 42108 NULL
111867+dw_dma_cyclic_prep_42113 dw_dma_cyclic_prep 3-4 42113 NULL 118081+dw_dma_cyclic_prep_42113 dw_dma_cyclic_prep 3-4 42113 NULL
111868+obd_get_info_42156 obd_get_info 0 42156 NULL
111869+blk_ioctl_zeroout_42160 blk_ioctl_zeroout 3 42160 NULL 118082+blk_ioctl_zeroout_42160 blk_ioctl_zeroout 3 42160 NULL
111870+mmc_align_data_size_42161 mmc_align_data_size 0-2 42161 NULL 118083+mmc_align_data_size_42161 mmc_align_data_size 0-2 42161 NULL
111871+read_file_base_eeprom_42168 read_file_base_eeprom 3 42168 NULL 118084+read_file_base_eeprom_42168 read_file_base_eeprom 3 42168 NULL
@@ -111873,9 +118086,11 @@ index 0000000..9529806
111873+write_file_beacon_42185 write_file_beacon 3 42185 NULL 118086+write_file_beacon_42185 write_file_beacon 3 42185 NULL
111874+get_znodes_to_commit_42201 get_znodes_to_commit 0 42201 NULL 118087+get_znodes_to_commit_42201 get_znodes_to_commit 0 42201 NULL
111875+pla_ocp_read_42235 pla_ocp_read 3 42235 NULL 118088+pla_ocp_read_42235 pla_ocp_read 3 42235 NULL
118089+xfs_rtfree_range_42244 xfs_rtfree_range 0 42244 NULL
111876+rx_defrag_need_decrypt_read_42253 rx_defrag_need_decrypt_read 3 42253 NULL 118090+rx_defrag_need_decrypt_read_42253 rx_defrag_need_decrypt_read 3 42253 NULL
111877+find_last_bit_42260 find_last_bit 0 42260 NULL 118091+find_last_bit_42260 find_last_bit 0 42260 NULL
111878+__pcpu_size_to_slot_42271 __pcpu_size_to_slot 0 42271 NULL 118092+__pcpu_size_to_slot_42271 __pcpu_size_to_slot 0 42271 NULL
118093+__tty_buffer_request_room_42276 __tty_buffer_request_room 2-0 42276 NULL
111879+snd_pcm_hw_param_value_max_42280 snd_pcm_hw_param_value_max 0 42280 NULL 118094+snd_pcm_hw_param_value_max_42280 snd_pcm_hw_param_value_max 0 42280 NULL
111880+__cpus_weight_42299 __cpus_weight 2-0 42299 NULL 118095+__cpus_weight_42299 __cpus_weight 2-0 42299 NULL
111881+sel_read_perm_42302 sel_read_perm 3 42302 NULL 118096+sel_read_perm_42302 sel_read_perm 3 42302 NULL
@@ -111892,7 +118107,6 @@ index 0000000..9529806
111892+krng_get_random_42420 krng_get_random 3 42420 NULL 118107+krng_get_random_42420 krng_get_random 3 42420 NULL
111893+gsm_data_alloc_42437 gsm_data_alloc 3 42437 NULL 118108+gsm_data_alloc_42437 gsm_data_alloc 3 42437 NULL
111894+key_conf_keyidx_read_42443 key_conf_keyidx_read 3 42443 NULL 118109+key_conf_keyidx_read_42443 key_conf_keyidx_read 3 42443 NULL
111895+alloc_request_42448 alloc_request 0 42448 NULL
111896+snd_pcm_action_group_42452 snd_pcm_action_group 0 42452 NULL 118110+snd_pcm_action_group_42452 snd_pcm_action_group 0 42452 NULL
111897+tcm_loop_change_queue_depth_42454 tcm_loop_change_queue_depth 2 42454 NULL 118111+tcm_loop_change_queue_depth_42454 tcm_loop_change_queue_depth 2 42454 NULL
111898+kuc_free_42455 kuc_free 2 42455 NULL 118112+kuc_free_42455 kuc_free 2 42455 NULL
@@ -111927,7 +118141,6 @@ index 0000000..9529806
111927+isku_sysfs_read_info_42781 isku_sysfs_read_info 6 42781 &cryptd_hash_setkey_42781 118141+isku_sysfs_read_info_42781 isku_sysfs_read_info 6 42781 &cryptd_hash_setkey_42781
111928+elfcorehdr_read_notes_42786 elfcorehdr_read_notes 2 42786 NULL 118142+elfcorehdr_read_notes_42786 elfcorehdr_read_notes 2 42786 NULL
111929+koneplus_sysfs_read_42792 koneplus_sysfs_read 6 42792 NULL 118143+koneplus_sysfs_read_42792 koneplus_sysfs_read 6 42792 NULL
111930+ptlrpc_request_bufs_pack_42793 ptlrpc_request_bufs_pack 0 42793 NULL
111931+ntfs_attr_extend_allocation_42796 ntfs_attr_extend_allocation 0 42796 NULL 118144+ntfs_attr_extend_allocation_42796 ntfs_attr_extend_allocation 0 42796 NULL
111932+fw_device_op_compat_ioctl_42804 fw_device_op_compat_ioctl 2 42804 NULL 118145+fw_device_op_compat_ioctl_42804 fw_device_op_compat_ioctl 2 42804 NULL
111933+drm_ioctl_42813 drm_ioctl 2 42813 NULL 118146+drm_ioctl_42813 drm_ioctl 2 42813 NULL
@@ -111939,14 +118152,14 @@ index 0000000..9529806
111939+xpc_kmalloc_cacheline_aligned_42895 xpc_kmalloc_cacheline_aligned 1 42895 NULL 118152+xpc_kmalloc_cacheline_aligned_42895 xpc_kmalloc_cacheline_aligned 1 42895 NULL
111940+hd_end_request_42904 hd_end_request 2 42904 NULL 118153+hd_end_request_42904 hd_end_request 2 42904 NULL
111941+sta_last_rx_rate_read_42909 sta_last_rx_rate_read 3 42909 NULL 118154+sta_last_rx_rate_read_42909 sta_last_rx_rate_read 3 42909 NULL
111942+sctp_getsockopt_maxburst_42941 sctp_getsockopt_maxburst 2 42941 NULL nohasharray 118155+xfs_bmapi_allocate_42938 xfs_bmapi_allocate 0 42938 NULL
111943+mdc_unpack_acl_42941 mdc_unpack_acl 0 42941 &sctp_getsockopt_maxburst_42941 118156+sctp_getsockopt_maxburst_42941 sctp_getsockopt_maxburst 2 42941 NULL
111944+vx_reset_chk_42946 vx_reset_chk 0 42946 NULL 118157+vx_reset_chk_42946 vx_reset_chk 0 42946 NULL
111945+blkdev_direct_IO_42962 blkdev_direct_IO 4 42962 NULL 118158+blkdev_direct_IO_42962 blkdev_direct_IO 4 42962 NULL
111946+read_file_node_stat_42964 read_file_node_stat 3 42964 NULL
111947+compat_udpv6_setsockopt_42981 compat_udpv6_setsockopt 5 42981 NULL 118159+compat_udpv6_setsockopt_42981 compat_udpv6_setsockopt 5 42981 NULL
111948+nfs_idmap_get_desc_42990 nfs_idmap_get_desc 4-2 42990 NULL nohasharray 118160+nfs_idmap_get_desc_42990 nfs_idmap_get_desc 4-2 42990 NULL nohasharray
111949+rtw_os_xmit_resource_alloc_42990 rtw_os_xmit_resource_alloc 3 42990 &nfs_idmap_get_desc_42990 118161+rtw_os_xmit_resource_alloc_42990 rtw_os_xmit_resource_alloc 3 42990 &nfs_idmap_get_desc_42990
118162+xfs_da_read_buf_43008 xfs_da_read_buf 0 43008 NULL
111950+isr_rx_mem_overflow_read_43025 isr_rx_mem_overflow_read 3 43025 NULL 118163+isr_rx_mem_overflow_read_43025 isr_rx_mem_overflow_read 3 43025 NULL
111951+wep_default_key_count_read_43035 wep_default_key_count_read 3 43035 NULL 118164+wep_default_key_count_read_43035 wep_default_key_count_read 3 43035 NULL
111952+nouveau_gpuobj_create__43072 nouveau_gpuobj_create_ 9 43072 NULL 118165+nouveau_gpuobj_create__43072 nouveau_gpuobj_create_ 9 43072 NULL
@@ -111966,6 +118179,7 @@ index 0000000..9529806
111966+ath10k_p2p_calc_noa_ie_len_43209 ath10k_p2p_calc_noa_ie_len 0 43209 NULL 118179+ath10k_p2p_calc_noa_ie_len_43209 ath10k_p2p_calc_noa_ie_len 0 43209 NULL
111967+f2fs_acl_from_disk_43210 f2fs_acl_from_disk 2 43210 NULL 118180+f2fs_acl_from_disk_43210 f2fs_acl_from_disk 2 43210 NULL
111968+atomic_long_add_return_43217 atomic_long_add_return 1-0 43217 NULL 118181+atomic_long_add_return_43217 atomic_long_add_return 1-0 43217 NULL
118182+inode_init_always_43225 inode_init_always 0 43225 NULL
111969+batadv_tt_tvlv_unicast_handler_v1_43239 batadv_tt_tvlv_unicast_handler_v1 5 43239 NULL 118183+batadv_tt_tvlv_unicast_handler_v1_43239 batadv_tt_tvlv_unicast_handler_v1 5 43239 NULL
111970+vmemmap_alloc_block_43245 vmemmap_alloc_block 1 43245 NULL 118184+vmemmap_alloc_block_43245 vmemmap_alloc_block 1 43245 NULL
111971+ide_end_rq_43269 ide_end_rq 4 43269 NULL 118185+ide_end_rq_43269 ide_end_rq 4 43269 NULL
@@ -111974,11 +118188,15 @@ index 0000000..9529806
111974+evtchn_write_43278 evtchn_write 3 43278 &parport_pc_ecp_write_block_pio_43278 118188+evtchn_write_43278 evtchn_write 3 43278 &parport_pc_ecp_write_block_pio_43278
111975+filemap_write_and_wait_range_43279 filemap_write_and_wait_range 0 43279 NULL 118189+filemap_write_and_wait_range_43279 filemap_write_and_wait_range 0 43279 NULL
111976+mpage_alloc_43299 mpage_alloc 3 43299 NULL 118190+mpage_alloc_43299 mpage_alloc 3 43299 NULL
111977+mmu_set_spte_43327 mmu_set_spte 7-6 43327 NULL 118191+mmu_set_spte_43327 mmu_set_spte 6-7 43327 NULL
111978+__ext4_get_inode_loc_43332 __ext4_get_inode_loc 0 43332 NULL 118192+__ext4_get_inode_loc_43332 __ext4_get_inode_loc 0 43332 NULL
118193+xfs_log_regrant_43350 xfs_log_regrant 0 43350 NULL
118194+gfs2_rgrp_bh_get_43375 gfs2_rgrp_bh_get 0 43375 NULL
118195+xfs_btree_new_iroot_43392 xfs_btree_new_iroot 0 43392 NULL
111979+xenfb_write_43412 xenfb_write 3 43412 NULL 118196+xenfb_write_43412 xenfb_write 3 43412 NULL
111980+__alloc_bootmem_low_43423 __alloc_bootmem_low 1 43423 NULL 118197+__alloc_bootmem_low_43423 __alloc_bootmem_low 1 43423 NULL
111981+usb_alloc_urb_43436 usb_alloc_urb 1 43436 NULL 118198+usb_alloc_urb_43436 usb_alloc_urb 1 43436 NULL
118199+cifs_writev_43437 cifs_writev 4 43437 NULL
111982+ath6kl_wmi_roam_tbl_event_rx_43440 ath6kl_wmi_roam_tbl_event_rx 3 43440 NULL 118200+ath6kl_wmi_roam_tbl_event_rx_43440 ath6kl_wmi_roam_tbl_event_rx 3 43440 NULL
111983+usb_string_43443 usb_string 0 43443 NULL nohasharray 118201+usb_string_43443 usb_string 0 43443 NULL nohasharray
111984+usemap_size_43443 usemap_size 0-2-1 43443 &usb_string_43443 118202+usemap_size_43443 usemap_size 0-2-1 43443 &usb_string_43443
@@ -112009,30 +118227,37 @@ index 0000000..9529806
112009+fuse_conn_congestion_threshold_write_43736 fuse_conn_congestion_threshold_write 3 43736 NULL 118227+fuse_conn_congestion_threshold_write_43736 fuse_conn_congestion_threshold_write 3 43736 NULL
112010+gigaset_initcs_43753 gigaset_initcs 2 43753 NULL 118228+gigaset_initcs_43753 gigaset_initcs 2 43753 NULL
112011+sctp_setsockopt_active_key_43755 sctp_setsockopt_active_key 3 43755 NULL 118229+sctp_setsockopt_active_key_43755 sctp_setsockopt_active_key 3 43755 NULL
118230+xfs_alloc_lookup_eq_43775 xfs_alloc_lookup_eq 0 43775 NULL
112012+ocfs2_xattr_get_value_outside_43787 ocfs2_xattr_get_value_outside 0 43787 NULL nohasharray 118231+ocfs2_xattr_get_value_outside_43787 ocfs2_xattr_get_value_outside 0 43787 NULL nohasharray
112013+byte_pos_43787 byte_pos 0-2 43787 &ocfs2_xattr_get_value_outside_43787 118232+byte_pos_43787 byte_pos 0-2 43787 &ocfs2_xattr_get_value_outside_43787
118233+xfs_trans_reserve_quota_bydquots_43797 xfs_trans_reserve_quota_bydquots 0 43797 NULL
112014+btrfs_copy_from_user_43806 btrfs_copy_from_user 0-3-1 43806 NULL 118234+btrfs_copy_from_user_43806 btrfs_copy_from_user 0-3-1 43806 NULL
118235+_xfs_filestream_update_ag_43824 _xfs_filestream_update_ag 0 43824 NULL
112015+ieee80211_if_fmt_element_ttl_43825 ieee80211_if_fmt_element_ttl 3 43825 NULL 118236+ieee80211_if_fmt_element_ttl_43825 ieee80211_if_fmt_element_ttl 3 43825 NULL
112016+ieee80211_alloc_hw_43829 ieee80211_alloc_hw 1 43829 NULL 118237+ieee80211_alloc_hw_43829 ieee80211_alloc_hw 1 43829 NULL
112017+read_flush_43851 read_flush 3 43851 NULL 118238+read_flush_43851 read_flush 3 43851 NULL
112018+pm860x_bulk_write_43875 pm860x_bulk_write 2-3 43875 NULL 118239+pm860x_bulk_write_43875 pm860x_bulk_write 2-3 43875 NULL
112019+SendString_43928 SendString 3 43928 NULL 118240+SendString_43928 SendString 3 43928 NULL
112020+stats_dot11RTSFailureCount_read_43948 stats_dot11RTSFailureCount_read 3 43948 NULL 118241+stats_dot11RTSFailureCount_read_43948 stats_dot11RTSFailureCount_read 3 43948 NULL
118242+xfs_trans_dqresv_43960 xfs_trans_dqresv 0 43960 NULL
112021+__get_required_blob_size_43980 __get_required_blob_size 0-3-2 43980 NULL 118243+__get_required_blob_size_43980 __get_required_blob_size 0-3-2 43980 NULL
112022+nla_reserve_43984 nla_reserve 3 43984 NULL 118244+nla_reserve_43984 nla_reserve 3 43984 NULL
112023+__clkdev_alloc_43990 __clkdev_alloc 1 43990 NULL 118245+__clkdev_alloc_43990 __clkdev_alloc 1 43990 NULL
112024+scsi_command_size_43992 scsi_command_size 0 43992 NULL nohasharray 118246+scsi_command_size_43992 scsi_command_size 0 43992 NULL nohasharray
112025+kvm_read_guest_virt_43992 kvm_read_guest_virt 4-2 43992 &scsi_command_size_43992 nohasharray 118247+kvm_read_guest_virt_43992 kvm_read_guest_virt 4-2 43992 &scsi_command_size_43992 nohasharray
112026+bcm_recvmsg_43992 bcm_recvmsg 4 43992 &kvm_read_guest_virt_43992 118248+bcm_recvmsg_43992 bcm_recvmsg 4 43992 &kvm_read_guest_virt_43992
118249+ulist_add_43994 ulist_add 0 43994 NULL
112027+emit_flags_44006 emit_flags 4-3 44006 NULL 118250+emit_flags_44006 emit_flags 4-3 44006 NULL
112028+write_flush_procfs_44011 write_flush_procfs 3 44011 NULL 118251+write_flush_procfs_44011 write_flush_procfs 3 44011 NULL
112029+fru_strlen_44046 fru_strlen 0 44046 NULL 118252+fru_strlen_44046 fru_strlen 0 44046 NULL
112030+ath9k_def_dump_modal_eeprom_44078 ath9k_def_dump_modal_eeprom 3-2-0 44078 NULL 118253+ath9k_def_dump_modal_eeprom_44078 ath9k_def_dump_modal_eeprom 3-2-0 44078 NULL
112031+SYSC_add_key_44079 SYSC_add_key 4 44079 NULL 118254+SYSC_add_key_44079 SYSC_add_key 4 44079 NULL
112032+__vxge_hw_vpath_tim_configure_44093 __vxge_hw_vpath_tim_configure 2 44093 NULL 118255+pci_msix_vec_count_44093 pci_msix_vec_count 0 44093 NULL nohasharray
118256+__vxge_hw_vpath_tim_configure_44093 __vxge_hw_vpath_tim_configure 2 44093 &pci_msix_vec_count_44093
112033+xlog_recover_add_to_cont_trans_44102 xlog_recover_add_to_cont_trans 4 44102 NULL 118257+xlog_recover_add_to_cont_trans_44102 xlog_recover_add_to_cont_trans 4 44102 NULL
112034+skb_frag_dma_map_44112 skb_frag_dma_map 0 44112 NULL 118258+skb_frag_dma_map_44112 skb_frag_dma_map 0 44112 NULL
112035+tracing_set_trace_read_44122 tracing_set_trace_read 3 44122 NULL 118259+file_remove_suid_44122 file_remove_suid 0 44122 NULL nohasharray
118260+tracing_set_trace_read_44122 tracing_set_trace_read 3 44122 &file_remove_suid_44122
112036+SyS_process_vm_writev_44129 SyS_process_vm_writev 3-5 44129 NULL 118261+SyS_process_vm_writev_44129 SyS_process_vm_writev 3-5 44129 NULL
112037+ttm_get_pages_44142 ttm_get_pages 2 44142 NULL 118262+ttm_get_pages_44142 ttm_get_pages 2 44142 NULL
112038+scsi_get_resid_44147 scsi_get_resid 0 44147 NULL 118263+scsi_get_resid_44147 scsi_get_resid 0 44147 NULL
@@ -112048,10 +118273,11 @@ index 0000000..9529806
112048+ath6kl_keepalive_read_44303 ath6kl_keepalive_read 3 44303 NULL 118273+ath6kl_keepalive_read_44303 ath6kl_keepalive_read 3 44303 NULL
112049+bitmap_scnprintf_44318 bitmap_scnprintf 0-2 44318 NULL 118274+bitmap_scnprintf_44318 bitmap_scnprintf 0-2 44318 NULL
112050+dispatch_proc_write_44320 dispatch_proc_write 3 44320 NULL 118275+dispatch_proc_write_44320 dispatch_proc_write 3 44320 NULL
118276+ccp_init_data_44324 ccp_init_data 5 44324 NULL
112051+rs_init_44327 rs_init 1 44327 NULL 118277+rs_init_44327 rs_init 1 44327 NULL
118278+radix_tree_maybe_preload_44346 radix_tree_maybe_preload 0 44346 NULL
112052+blk_queue_init_tags_44355 blk_queue_init_tags 2 44355 NULL nohasharray 118279+blk_queue_init_tags_44355 blk_queue_init_tags 2 44355 NULL nohasharray
112053+nfs_fscache_get_super_cookie_44355 nfs_fscache_get_super_cookie 3 44355 &blk_queue_init_tags_44355 118280+nfs_fscache_get_super_cookie_44355 nfs_fscache_get_super_cookie 3 44355 &blk_queue_init_tags_44355
112054+alloc_requests_44372 alloc_requests 0 44372 NULL
112055+rts_threshold_read_44384 rts_threshold_read 3 44384 NULL 118281+rts_threshold_read_44384 rts_threshold_read 3 44384 NULL
112056+mtip_hw_read_flags_44396 mtip_hw_read_flags 3 44396 NULL 118282+mtip_hw_read_flags_44396 mtip_hw_read_flags 3 44396 NULL
112057+aoedev_flush_44398 aoedev_flush 2 44398 NULL 118283+aoedev_flush_44398 aoedev_flush 2 44398 NULL
@@ -112059,7 +118285,7 @@ index 0000000..9529806
112059+drm_buffer_alloc_44405 drm_buffer_alloc 2 44405 NULL 118285+drm_buffer_alloc_44405 drm_buffer_alloc 2 44405 NULL
112060+osst_do_scsi_44410 osst_do_scsi 4 44410 NULL 118286+osst_do_scsi_44410 osst_do_scsi 4 44410 NULL
112061+ieee80211_if_read_rc_rateidx_mcs_mask_5ghz_44423 ieee80211_if_read_rc_rateidx_mcs_mask_5ghz 3 44423 NULL 118287+ieee80211_if_read_rc_rateidx_mcs_mask_5ghz_44423 ieee80211_if_read_rc_rateidx_mcs_mask_5ghz 3 44423 NULL
112062+iwl_dbgfs_bf_params_write_44450 iwl_dbgfs_bf_params_write 3 44450 NULL 118288+xfs_mod_incore_sb_44439 xfs_mod_incore_sb 0 44439 NULL
112063+write_file_debug_44476 write_file_debug 3 44476 NULL 118289+write_file_debug_44476 write_file_debug 3 44476 NULL
112064+btrfs_chunk_item_size_44478 btrfs_chunk_item_size 0-1 44478 NULL 118290+btrfs_chunk_item_size_44478 btrfs_chunk_item_size 0-1 44478 NULL
112065+sdio_align_size_44489 sdio_align_size 0-2 44489 NULL 118291+sdio_align_size_44489 sdio_align_size 0-2 44489 NULL
@@ -112072,21 +118298,22 @@ index 0000000..9529806
112072+SyS_io_getevents_44519 SyS_io_getevents 3 44519 NULL 118298+SyS_io_getevents_44519 SyS_io_getevents 3 44519 NULL
112073+ieee80211_rx_mgmt_assoc_resp_44525 ieee80211_rx_mgmt_assoc_resp 3 44525 NULL 118299+ieee80211_rx_mgmt_assoc_resp_44525 ieee80211_rx_mgmt_assoc_resp 3 44525 NULL
112074+comm_write_44537 comm_write 3 44537 NULL 118300+comm_write_44537 comm_write 3 44537 NULL
112075+xfs_log_calc_unit_res_44540 xfs_log_calc_unit_res 0-2 44540 NULL
112076+dgrp_config_proc_write_44571 dgrp_config_proc_write 3 44571 NULL 118301+dgrp_config_proc_write_44571 dgrp_config_proc_write 3 44571 NULL
118302+btrfs_set_extent_delalloc_44587 btrfs_set_extent_delalloc 0 44587 NULL
112077+nouveau_perfmon_create__44602 nouveau_perfmon_create_ 4 44602 NULL 118303+nouveau_perfmon_create__44602 nouveau_perfmon_create_ 4 44602 NULL
118304+xfs_bmapi_delay_44630 xfs_bmapi_delay 0 44630 NULL
112078+alloc_ctrl_packet_44667 alloc_ctrl_packet 1 44667 NULL 118305+alloc_ctrl_packet_44667 alloc_ctrl_packet 1 44667 NULL
112079+mpi_resize_44674 mpi_resize 2 44674 NULL 118306+mpi_resize_44674 mpi_resize 2 44674 NULL
112080+sysfs_create_link_44685 sysfs_create_link 0 44685 NULL 118307+sysfs_create_link_44685 sysfs_create_link 0 44685 NULL
112081+ts_read_44687 ts_read 3 44687 NULL 118308+ts_read_44687 ts_read 3 44687 NULL
112082+lov_emerg_alloc_44698 lov_emerg_alloc 1 44698 NULL 118309+lov_emerg_alloc_44698 lov_emerg_alloc 1 44698 NULL
112083+__ocfs2_rotate_tree_left_44705 __ocfs2_rotate_tree_left 3 44705 NULL
112084+xfer_to_user_44713 xfer_to_user 3 44713 NULL nohasharray 118310+xfer_to_user_44713 xfer_to_user 3 44713 NULL nohasharray
112085+__generic_block_fiemap_44713 __generic_block_fiemap 4 44713 &xfer_to_user_44713 118311+__generic_block_fiemap_44713 __generic_block_fiemap 4 44713 &xfer_to_user_44713
112086+_zd_iowrite32v_locked_44725 _zd_iowrite32v_locked 3 44725 NULL 118312+_zd_iowrite32v_locked_44725 _zd_iowrite32v_locked 3 44725 NULL
112087+clusterip_proc_write_44729 clusterip_proc_write 3 44729 NULL 118313+clusterip_proc_write_44729 clusterip_proc_write 3 44729 NULL
112088+fib_count_nexthops_44730 fib_count_nexthops 0 44730 NULL 118314+fib_count_nexthops_44730 fib_count_nexthops 0 44730 NULL
112089+key_tx_rx_count_read_44742 key_tx_rx_count_read 3 44742 NULL 118315+key_tx_rx_count_read_44742 key_tx_rx_count_read 3 44742 NULL
118316+bch_bio_max_sectors_44755 bch_bio_max_sectors 0 44755 NULL
112090+tnode_new_44757 tnode_new 3 44757 NULL nohasharray 118317+tnode_new_44757 tnode_new 3 44757 NULL nohasharray
112091+pty_write_44757 pty_write 3 44757 &tnode_new_44757 118318+pty_write_44757 pty_write 3 44757 &tnode_new_44757
112092+__videobuf_copy_stream_44769 __videobuf_copy_stream 4-0 44769 NULL 118319+__videobuf_copy_stream_44769 __videobuf_copy_stream 4-0 44769 NULL
@@ -112111,7 +118338,6 @@ index 0000000..9529806
112111+bytepos_delta_45017 bytepos_delta 0-2 45017 NULL 118338+bytepos_delta_45017 bytepos_delta 0-2 45017 NULL
112112+ptrace_writedata_45021 ptrace_writedata 4 45021 NULL 118339+ptrace_writedata_45021 ptrace_writedata 4 45021 NULL
112113+dm_kvzalloc_45025 dm_kvzalloc 1 45025 NULL 118340+dm_kvzalloc_45025 dm_kvzalloc 1 45025 NULL
112114+vhci_get_user_45039 vhci_get_user 3 45039 NULL
112115+sysfs_do_create_link_sd_45057 sysfs_do_create_link_sd 0 45057 NULL 118341+sysfs_do_create_link_sd_45057 sysfs_do_create_link_sd 0 45057 NULL
112116+sel_write_user_45060 sel_write_user 3 45060 NULL 118342+sel_write_user_45060 sel_write_user 3 45060 NULL
112117+snd_mixart_BA0_read_45069 snd_mixart_BA0_read 5 45069 NULL 118343+snd_mixart_BA0_read_45069 snd_mixart_BA0_read 5 45069 NULL
@@ -112122,11 +118348,12 @@ index 0000000..9529806
112122+cfs_trace_daemon_command_usrstr_45147 cfs_trace_daemon_command_usrstr 2 45147 NULL 118348+cfs_trace_daemon_command_usrstr_45147 cfs_trace_daemon_command_usrstr 2 45147 NULL
112123+gen_bitmask_string_45149 gen_bitmask_string 6 45149 NULL 118349+gen_bitmask_string_45149 gen_bitmask_string 6 45149 NULL
112124+device_write_45156 device_write 3 45156 NULL nohasharray 118350+device_write_45156 device_write 3 45156 NULL nohasharray
112125+ocfs2_remove_inode_range_45156 ocfs2_remove_inode_range 3-4 45156 &device_write_45156 118351+ocfs2_remove_inode_range_45156 ocfs2_remove_inode_range 3 45156 &device_write_45156
112126+tomoyo_write_self_45161 tomoyo_write_self 3 45161 NULL 118352+tomoyo_write_self_45161 tomoyo_write_self 3 45161 NULL
112127+sta_agg_status_write_45164 sta_agg_status_write 3 45164 NULL 118353+sta_agg_status_write_45164 sta_agg_status_write 3 45164 NULL
112128+snd_sb_csp_load_user_45190 snd_sb_csp_load_user 3 45190 NULL nohasharray 118354+snd_sb_csp_load_user_45190 snd_sb_csp_load_user 3 45190 NULL nohasharray
112129+sctp_pack_cookie_45190 sctp_pack_cookie 6 45190 &snd_sb_csp_load_user_45190 118355+sctp_pack_cookie_45190 sctp_pack_cookie 6 45190 &snd_sb_csp_load_user_45190
118356+__radix_tree_preload_45197 __radix_tree_preload 0 45197 NULL
112130+iso_alloc_urb_45206 iso_alloc_urb 4-5 45206 NULL 118357+iso_alloc_urb_45206 iso_alloc_urb 4-5 45206 NULL
112131+spi_alloc_master_45223 spi_alloc_master 2 45223 NULL 118358+spi_alloc_master_45223 spi_alloc_master 2 45223 NULL
112132+ieee80211_if_read_peer_45233 ieee80211_if_read_peer 3 45233 NULL 118359+ieee80211_if_read_peer_45233 ieee80211_if_read_peer 3 45233 NULL
@@ -112135,8 +118362,10 @@ index 0000000..9529806
112135+input_mt_init_slots_45279 input_mt_init_slots 2 45279 NULL 118362+input_mt_init_slots_45279 input_mt_init_slots 2 45279 NULL
112136+gfs2_fiemap_45282 gfs2_fiemap 4 45282 NULL 118363+gfs2_fiemap_45282 gfs2_fiemap 4 45282 NULL
112137+snd_pcm_oss_sync1_45298 snd_pcm_oss_sync1 2 45298 NULL 118364+snd_pcm_oss_sync1_45298 snd_pcm_oss_sync1 2 45298 NULL
118365+xfs_alert_fsblock_zero_45304 xfs_alert_fsblock_zero 0 45304 NULL
112138+e1000_tx_map_45309 e1000_tx_map 5 45309 NULL 118366+e1000_tx_map_45309 e1000_tx_map 5 45309 NULL
112139+copy_vm86_regs_from_user_45340 copy_vm86_regs_from_user 3 45340 NULL 118367+copy_vm86_regs_from_user_45340 copy_vm86_regs_from_user 3 45340 NULL
118368+brcmf_sdio_died_dump_45359 brcmf_sdio_died_dump 3 45359 NULL
112140+null_alloc_repbuf_45375 null_alloc_repbuf 3 45375 NULL 118369+null_alloc_repbuf_45375 null_alloc_repbuf 3 45375 NULL
112141+sock_recv_errqueue_45412 sock_recv_errqueue 3 45412 NULL 118370+sock_recv_errqueue_45412 sock_recv_errqueue 3 45412 NULL
112142+ieee80211_if_fmt_dot11MeshHWMProotInterval_45421 ieee80211_if_fmt_dot11MeshHWMProotInterval 3 45421 NULL 118371+ieee80211_if_fmt_dot11MeshHWMProotInterval_45421 ieee80211_if_fmt_dot11MeshHWMProotInterval 3 45421 NULL
@@ -112145,9 +118374,10 @@ index 0000000..9529806
112145+__node_remap_45458 __node_remap 4 45458 NULL 118374+__node_remap_45458 __node_remap 4 45458 NULL
112146+rds_ib_set_wr_signal_state_45463 rds_ib_set_wr_signal_state 0 45463 NULL 118375+rds_ib_set_wr_signal_state_45463 rds_ib_set_wr_signal_state 0 45463 NULL
112147+tracing_read_dyn_info_45468 tracing_read_dyn_info 3 45468 NULL 118376+tracing_read_dyn_info_45468 tracing_read_dyn_info 3 45468 NULL
118377+__calc_request_pg_45470 __calc_request_pg 0 45470 NULL
118378+xfs_btree_block_change_owner_45476 xfs_btree_block_change_owner 0 45476 NULL
112148+rds_message_copy_from_user_45510 rds_message_copy_from_user 3 45510 NULL 118379+rds_message_copy_from_user_45510 rds_message_copy_from_user 3 45510 NULL
112149+i40e_alloc_vfs_45511 i40e_alloc_vfs 2 45511 NULL 118380+i40e_alloc_vfs_45511 i40e_alloc_vfs 2 45511 NULL
112150+cgroup_read_u64_45532 cgroup_read_u64 5 45532 NULL
112151+copy_macs_45534 copy_macs 4 45534 NULL 118381+copy_macs_45534 copy_macs 4 45534 NULL
112152+nla_attr_size_45545 nla_attr_size 0-1 45545 NULL 118382+nla_attr_size_45545 nla_attr_size 0-1 45545 NULL
112153+v9fs_direct_read_45546 v9fs_direct_read 3 45546 NULL 118383+v9fs_direct_read_45546 v9fs_direct_read 3 45546 NULL
@@ -112178,16 +118408,17 @@ index 0000000..9529806
112178+ll_max_readahead_mb_seq_write_45815 ll_max_readahead_mb_seq_write 3 45815 NULL 118408+ll_max_readahead_mb_seq_write_45815 ll_max_readahead_mb_seq_write 3 45815 NULL
112179+memcg_update_cache_size_45828 memcg_update_cache_size 2 45828 NULL 118409+memcg_update_cache_size_45828 memcg_update_cache_size 2 45828 NULL
112180+ipv6_recv_rxpmtu_45830 ipv6_recv_rxpmtu 3 45830 NULL 118410+ipv6_recv_rxpmtu_45830 ipv6_recv_rxpmtu 3 45830 NULL
118411+insert_state_45848 insert_state 0 45848 NULL
112181+x509_process_extension_45854 x509_process_extension 5 45854 NULL 118412+x509_process_extension_45854 x509_process_extension 5 45854 NULL
112182+efx_tx_queue_insert_45859 efx_tx_queue_insert 2 45859 NULL 118413+efx_tx_queue_insert_45859 efx_tx_queue_insert 2 45859 NULL
112183+isdn_write_45863 isdn_write 3 45863 NULL 118414+isdn_write_45863 isdn_write 3 45863 NULL
112184+tpm_config_in_45880 tpm_config_in 0 45880 NULL 118415+tpm_config_in_45880 tpm_config_in 0 45880 NULL
112185+get_rdac_req_45882 get_rdac_req 3 45882 NULL 118416+get_rdac_req_45882 get_rdac_req 3 45882 NULL
112186+ima_eventdigest_init_common_45889 ima_eventdigest_init_common 2 45889 NULL
112187+ocfs2_xattr_block_find_45891 ocfs2_xattr_block_find 0 45891 NULL 118417+ocfs2_xattr_block_find_45891 ocfs2_xattr_block_find 0 45891 NULL
112188+cfs_cpt_weight_45903 cfs_cpt_weight 0 45903 NULL 118418+cfs_cpt_weight_45903 cfs_cpt_weight 0 45903 NULL
112189+wm_adsp_region_to_reg_45915 wm_adsp_region_to_reg 0-2 45915 NULL 118419+wm_adsp_region_to_reg_45915 wm_adsp_region_to_reg 0-2 45915 NULL
112190+dbgfs_frame_45917 dbgfs_frame 3 45917 NULL 118420+dbgfs_frame_45917 dbgfs_frame 3 45917 NULL
118421+btree_keys_cachelines_45928 btree_keys_cachelines 0 45928 NULL
112191+alloc_mr_45935 alloc_mr 1 45935 NULL 118422+alloc_mr_45935 alloc_mr 1 45935 NULL
112192+copy_to_45969 copy_to 3 45969 NULL 118423+copy_to_45969 copy_to 3 45969 NULL
112193+rb_simple_read_45972 rb_simple_read 3 45972 NULL 118424+rb_simple_read_45972 rb_simple_read 3 45972 NULL
@@ -112219,7 +118450,6 @@ index 0000000..9529806
112219+xen_setup_msi_irqs_46245 xen_setup_msi_irqs 2 46245 NULL 118450+xen_setup_msi_irqs_46245 xen_setup_msi_irqs 2 46245 NULL
112220+mpi_read_raw_data_46248 mpi_read_raw_data 2 46248 NULL 118451+mpi_read_raw_data_46248 mpi_read_raw_data 2 46248 NULL
112221+ReadReg_46277 ReadReg 0 46277 NULL 118452+ReadReg_46277 ReadReg 0 46277 NULL
112222+sptlrpc_req_get_ctx_46303 sptlrpc_req_get_ctx 0 46303 NULL
112223+sg_proc_write_dressz_46316 sg_proc_write_dressz 3 46316 NULL 118453+sg_proc_write_dressz_46316 sg_proc_write_dressz 3 46316 NULL
112224+__hwahc_dev_set_key_46328 __hwahc_dev_set_key 5 46328 NULL nohasharray 118454+__hwahc_dev_set_key_46328 __hwahc_dev_set_key 5 46328 NULL nohasharray
112225+compat_SyS_readv_46328 compat_SyS_readv 3 46328 &__hwahc_dev_set_key_46328 118455+compat_SyS_readv_46328 compat_SyS_readv 3 46328 &__hwahc_dev_set_key_46328
@@ -112242,13 +118472,14 @@ index 0000000..9529806
112242+dn_current_mss_46574 dn_current_mss 0 46574 NULL 118472+dn_current_mss_46574 dn_current_mss 0 46574 NULL
112243+serverworks_create_gatt_pages_46582 serverworks_create_gatt_pages 1 46582 NULL 118473+serverworks_create_gatt_pages_46582 serverworks_create_gatt_pages 1 46582 NULL
112244+snd_compr_write_data_46592 snd_compr_write_data 3 46592 NULL 118474+snd_compr_write_data_46592 snd_compr_write_data 3 46592 NULL
112245+il3945_stats_flag_46606 il3945_stats_flag 3-0 46606 NULL 118475+il3945_stats_flag_46606 il3945_stats_flag 0-3 46606 NULL
112246+vscnprintf_46617 vscnprintf 0-2 46617 NULL 118476+vscnprintf_46617 vscnprintf 0-2 46617 NULL
112247+__kfifo_out_r_46623 __kfifo_out_r 3-0 46623 NULL 118477+__kfifo_out_r_46623 __kfifo_out_r 3-0 46623 NULL
112248+request_key_async_with_auxdata_46624 request_key_async_with_auxdata 4 46624 NULL 118478+request_key_async_with_auxdata_46624 request_key_async_with_auxdata 4 46624 NULL
112249+pci_enable_device_46642 pci_enable_device 0 46642 NULL 118479+pci_enable_device_46642 pci_enable_device 0 46642 NULL
112250+vfs_getxattr_alloc_46649 vfs_getxattr_alloc 0 46649 NULL 118480+vfs_getxattr_alloc_46649 vfs_getxattr_alloc 0 46649 NULL
112251+e1000_tx_map_46672 e1000_tx_map 4 46672 NULL 118481+e1000_tx_map_46672 e1000_tx_map 4 46672 NULL
118482+l2cap_create_le_flowctl_pdu_46682 l2cap_create_le_flowctl_pdu 3 46682 NULL
112252+alloc_data_packet_46698 alloc_data_packet 1 46698 NULL 118483+alloc_data_packet_46698 alloc_data_packet 1 46698 NULL
112253+__ilog2_u32_46706 __ilog2_u32 0 46706 NULL 118484+__ilog2_u32_46706 __ilog2_u32 0 46706 NULL
112254+erst_dbg_write_46715 erst_dbg_write 3 46715 NULL 118485+erst_dbg_write_46715 erst_dbg_write 3 46715 NULL
@@ -112273,38 +118504,41 @@ index 0000000..9529806
112273+wlcore_alloc_hw_46917 wlcore_alloc_hw 1-3 46917 NULL 118504+wlcore_alloc_hw_46917 wlcore_alloc_hw 1-3 46917 NULL
112274+fb_write_46924 fb_write 3 46924 NULL 118505+fb_write_46924 fb_write 3 46924 NULL
112275+__sctp_setsockopt_connectx_46949 __sctp_setsockopt_connectx 3 46949 NULL 118506+__sctp_setsockopt_connectx_46949 __sctp_setsockopt_connectx 3 46949 NULL
112276+qla4xxx_post_aen_work_46953 qla4xxx_post_aen_work 3 46953 NULL 118507+qla4xxx_post_aen_work_46953 qla4xxx_post_aen_work 3 46953 NULL nohasharray
118508+ntfs_truncate_46953 ntfs_truncate 0 46953 &qla4xxx_post_aen_work_46953
112277+SYSC_poll_46965 SYSC_poll 2 46965 NULL 118509+SYSC_poll_46965 SYSC_poll 2 46965 NULL
112278+crypto_tfm_alg_alignmask_46971 crypto_tfm_alg_alignmask 0 46971 NULL 118510+crypto_tfm_alg_alignmask_46971 crypto_tfm_alg_alignmask 0 46971 NULL
112279+mgmt_pending_add_46976 mgmt_pending_add 5 46976 NULL 118511+mgmt_pending_add_46976 mgmt_pending_add 5 46976 NULL
112280+strlcat_46985 strlcat 3 46985 NULL 118512+strlcat_46985 strlcat 3 46985 NULL
112281+bitmap_file_clear_bit_46990 bitmap_file_clear_bit 2 46990 NULL 118513+bitmap_file_clear_bit_46990 bitmap_file_clear_bit 2 46990 NULL
112282+sel_write_bool_46996 sel_write_bool 3 46996 NULL nohasharray 118514+sel_write_bool_46996 sel_write_bool 3 46996 NULL
112283+gfs2_xattr_system_set_46996 gfs2_xattr_system_set 4 46996 &sel_write_bool_46996
112284+blk_rq_map_kern_47004 blk_rq_map_kern 4 47004 NULL 118515+blk_rq_map_kern_47004 blk_rq_map_kern 4 47004 NULL
112285+cx231xx_init_bulk_47024 cx231xx_init_bulk 3-2-4 47024 NULL 118516+cx231xx_init_bulk_47024 cx231xx_init_bulk 3-2-4 47024 NULL
112286+fs_path_len_47060 fs_path_len 0 47060 NULL 118517+fs_path_len_47060 fs_path_len 0 47060 NULL
118518+event_trigger_regex_write_47067 event_trigger_regex_write 3 47067 NULL
112287+ext4_xattr_list_entries_47070 ext4_xattr_list_entries 0 47070 NULL 118519+ext4_xattr_list_entries_47070 ext4_xattr_list_entries 0 47070 NULL
112288+pipeline_dec_packet_in_read_47076 pipeline_dec_packet_in_read 3 47076 NULL 118520+pipeline_dec_packet_in_read_47076 pipeline_dec_packet_in_read 3 47076 NULL
112289+scsi_deactivate_tcq_47086 scsi_deactivate_tcq 2 47086 NULL 118521+scsi_deactivate_tcq_47086 scsi_deactivate_tcq 2 47086 NULL
112290+iwl_dump_nic_event_log_47089 iwl_dump_nic_event_log 0 47089 NULL 118522+iwl_dump_nic_event_log_47089 iwl_dump_nic_event_log 0 47089 NULL
112291+ptlrpc_lprocfs_threads_max_seq_write_47104 ptlrpc_lprocfs_threads_max_seq_write 3 47104 NULL 118523+ptlrpc_lprocfs_threads_max_seq_write_47104 ptlrpc_lprocfs_threads_max_seq_write 3 47104 NULL
112292+mousedev_read_47123 mousedev_read 3 47123 NULL 118524+mousedev_read_47123 mousedev_read 3 47123 NULL
118525+upcall_msg_size_47141 upcall_msg_size 2 47141 NULL
112293+acpi_ut_initialize_buffer_47143 acpi_ut_initialize_buffer 2 47143 NULL nohasharray 118526+acpi_ut_initialize_buffer_47143 acpi_ut_initialize_buffer 2 47143 NULL nohasharray
112294+ses_recv_diag_47143 ses_recv_diag 4 47143 &acpi_ut_initialize_buffer_47143 118527+ses_recv_diag_47143 ses_recv_diag 4 47143 &acpi_ut_initialize_buffer_47143
112295+mxms_headerlen_47161 mxms_headerlen 0 47161 NULL 118528+mxms_headerlen_47161 mxms_headerlen 0 47161 NULL
112296+rs_sta_dbgfs_rate_scale_data_read_47165 rs_sta_dbgfs_rate_scale_data_read 3 47165 NULL 118529+rs_sta_dbgfs_rate_scale_data_read_47165 rs_sta_dbgfs_rate_scale_data_read 3 47165 NULL
112297+rts51x_ms_rw_47171 rts51x_ms_rw 3-4 47171 NULL 118530+rts51x_ms_rw_47171 rts51x_ms_rw 3-4 47171 NULL
112298+can_set_system_xattr_47182 can_set_system_xattr 4 47182 NULL 118531+xfs_btree_get_buf_block_47197 xfs_btree_get_buf_block 0 47197 NULL
112299+options_write_47243 options_write 3 47243 NULL 118532+options_write_47243 options_write 3 47243 NULL
112300+portcntrs_1_read_47253 portcntrs_1_read 3 47253 NULL 118533+portcntrs_1_read_47253 portcntrs_1_read 3 47253 NULL
112301+ablkcipher_next_slow_47274 ablkcipher_next_slow 4-3 47274 NULL 118534+ablkcipher_next_slow_47274 ablkcipher_next_slow 4-3 47274 NULL
112302+gfs2_readpages_47285 gfs2_readpages 4 47285 NULL 118535+gfs2_readpages_47285 gfs2_readpages 4 47285 NULL
112303+vsnprintf_47291 vsnprintf 0 47291 NULL 118536+vsnprintf_47291 vsnprintf 0 47291 NULL
112304+SYSC_semop_47292 SYSC_semop 3 47292 NULL
112305+tx_internal_desc_overflow_read_47300 tx_internal_desc_overflow_read 3 47300 NULL 118537+tx_internal_desc_overflow_read_47300 tx_internal_desc_overflow_read 3 47300 NULL
118538+xfs_trans_reserve_quota_nblks_47313 xfs_trans_reserve_quota_nblks 0 47313 NULL
112306+nouveau_fb_create__47316 nouveau_fb_create_ 4 47316 NULL 118539+nouveau_fb_create__47316 nouveau_fb_create_ 4 47316 NULL
112307+ieee80211_if_read_dot11MeshHoldingTimeout_47356 ieee80211_if_read_dot11MeshHoldingTimeout 3 47356 NULL 118540+ieee80211_if_read_dot11MeshHoldingTimeout_47356 ieee80211_if_read_dot11MeshHoldingTimeout 3 47356 NULL
118541+gfs2_replay_read_block_47357 gfs2_replay_read_block 0 47357 NULL
112308+avc_get_hash_stats_47359 avc_get_hash_stats 0 47359 NULL 118542+avc_get_hash_stats_47359 avc_get_hash_stats 0 47359 NULL
112309+kvm_arch_create_memslot_47364 kvm_arch_create_memslot 3 47364 NULL nohasharray 118543+kvm_arch_create_memslot_47364 kvm_arch_create_memslot 3 47364 NULL nohasharray
112310+__output_copy_user_47364 __output_copy_user 3 47364 &kvm_arch_create_memslot_47364 118544+__output_copy_user_47364 __output_copy_user 3 47364 &kvm_arch_create_memslot_47364
@@ -112318,12 +118552,9 @@ index 0000000..9529806
112318+sta_vht_capa_read_47409 sta_vht_capa_read 3 47409 NULL 118552+sta_vht_capa_read_47409 sta_vht_capa_read 3 47409 NULL
112319+crypto_ablkcipher_alignmask_47410 crypto_ablkcipher_alignmask 0 47410 NULL 118553+crypto_ablkcipher_alignmask_47410 crypto_ablkcipher_alignmask 0 47410 NULL
112320+lbs_wrrf_write_47418 lbs_wrrf_write 3 47418 NULL 118554+lbs_wrrf_write_47418 lbs_wrrf_write 3 47418 NULL
112321+posix_acl_from_disk_47445 posix_acl_from_disk 2 47445 NULL
112322+nvme_trans_send_fw_cmd_47479 nvme_trans_send_fw_cmd 4 47479 NULL 118555+nvme_trans_send_fw_cmd_47479 nvme_trans_send_fw_cmd 4 47479 NULL
112323+newpart_47485 newpart 6-4 47485 NULL 118556+newpart_47485 newpart 6-4 47485 NULL
112324+mcp23s17_read_regs_47491 mcp23s17_read_regs 4 47491 NULL
112325+core_sys_select_47494 core_sys_select 1 47494 NULL 118557+core_sys_select_47494 core_sys_select 1 47494 NULL
112326+alloc_arraycache_47505 alloc_arraycache 2 47505 NULL
112327+unlink_simple_47506 unlink_simple 3 47506 NULL 118558+unlink_simple_47506 unlink_simple 3 47506 NULL
112328+pstore_decompress_47510 pstore_decompress 0 47510 NULL 118559+pstore_decompress_47510 pstore_decompress 0 47510 NULL
112329+__proc_lnet_portal_rotor_47529 __proc_lnet_portal_rotor 5 47529 NULL 118560+__proc_lnet_portal_rotor_47529 __proc_lnet_portal_rotor 5 47529 NULL
@@ -112338,6 +118569,7 @@ index 0000000..9529806
112338+sctp_ssnmap_new_47608 sctp_ssnmap_new 2-1 47608 NULL 118569+sctp_ssnmap_new_47608 sctp_ssnmap_new 2-1 47608 NULL
112339+cache_read_pipefs_47615 cache_read_pipefs 3 47615 NULL 118570+cache_read_pipefs_47615 cache_read_pipefs 3 47615 NULL
112340+twl4030_clear_set_47624 twl4030_clear_set 4 47624 NULL 118571+twl4030_clear_set_47624 twl4030_clear_set 4 47624 NULL
118572+ccp_sha_setkey_47633 ccp_sha_setkey 3 47633 NULL
112341+get_size_47644 get_size 1-2 47644 NULL 118573+get_size_47644 get_size 1-2 47644 NULL
112342+packet_recvmsg_47700 packet_recvmsg 4 47700 NULL nohasharray 118574+packet_recvmsg_47700 packet_recvmsg 4 47700 NULL nohasharray
112343+ipath_format_hwmsg_47700 ipath_format_hwmsg 2 47700 &packet_recvmsg_47700 118575+ipath_format_hwmsg_47700 ipath_format_hwmsg 2 47700 &packet_recvmsg_47700
@@ -112377,6 +118609,7 @@ index 0000000..9529806
112377+palmas_bulk_write_48068 palmas_bulk_write 2-3-5 48068 NULL 118609+palmas_bulk_write_48068 palmas_bulk_write 2-3-5 48068 NULL
112378+disc_write_48070 disc_write 3 48070 NULL 118610+disc_write_48070 disc_write 3 48070 NULL
112379+mmc_alloc_host_48097 mmc_alloc_host 1 48097 NULL 118611+mmc_alloc_host_48097 mmc_alloc_host 1 48097 NULL
118612+xfs_read_agi_48100 xfs_read_agi 0 48100 NULL
112380+skb_copy_datagram_const_iovec_48102 skb_copy_datagram_const_iovec 4-2-5 48102 NULL 118613+skb_copy_datagram_const_iovec_48102 skb_copy_datagram_const_iovec 4-2-5 48102 NULL
112381+vmw_framebuffer_surface_dirty_48132 vmw_framebuffer_surface_dirty 6 48132 NULL 118614+vmw_framebuffer_surface_dirty_48132 vmw_framebuffer_surface_dirty 6 48132 NULL
112382+set_discoverable_48141 set_discoverable 4 48141 NULL 118615+set_discoverable_48141 set_discoverable 4 48141 NULL
@@ -112386,7 +118619,6 @@ index 0000000..9529806
112386+c4iw_id_table_alloc_48163 c4iw_id_table_alloc 3 48163 NULL 118619+c4iw_id_table_alloc_48163 c4iw_id_table_alloc 3 48163 NULL
112387+rbd_obj_method_sync_48170 rbd_obj_method_sync 8 48170 NULL 118620+rbd_obj_method_sync_48170 rbd_obj_method_sync 8 48170 NULL
112388+alloc_cc770dev_48186 alloc_cc770dev 1 48186 NULL 118621+alloc_cc770dev_48186 alloc_cc770dev 1 48186 NULL
112389+brcmf_sdio_chip_cm3_exitdl_48192 brcmf_sdio_chip_cm3_exitdl 4 48192 NULL
112390+cfg80211_process_deauth_48200 cfg80211_process_deauth 3 48200 NULL 118622+cfg80211_process_deauth_48200 cfg80211_process_deauth 3 48200 NULL
112391+ext4_index_trans_blocks_48205 ext4_index_trans_blocks 0-2 48205 NULL 118623+ext4_index_trans_blocks_48205 ext4_index_trans_blocks 0-2 48205 NULL
112392+snd_seq_dump_var_event_48209 snd_seq_dump_var_event 0 48209 NULL 118624+snd_seq_dump_var_event_48209 snd_seq_dump_var_event 0 48209 NULL
@@ -112404,7 +118636,6 @@ index 0000000..9529806
112404+lpfc_idiag_extacc_read_48301 lpfc_idiag_extacc_read 3 48301 NULL 118636+lpfc_idiag_extacc_read_48301 lpfc_idiag_extacc_read 3 48301 NULL
112405+timblogiw_read_48305 timblogiw_read 3 48305 NULL 118637+timblogiw_read_48305 timblogiw_read 3 48305 NULL
112406+hash_setkey_48310 hash_setkey 3 48310 NULL 118638+hash_setkey_48310 hash_setkey 3 48310 NULL
112407+audio_set_intf_req_48319 audio_set_intf_req 0 48319 NULL
112408+kvm_mmu_pte_write_48340 kvm_mmu_pte_write 2 48340 NULL 118639+kvm_mmu_pte_write_48340 kvm_mmu_pte_write 2 48340 NULL
112409+skb_add_data_48363 skb_add_data 3 48363 NULL 118640+skb_add_data_48363 skb_add_data 3 48363 NULL
112410+tx_frag_init_called_read_48377 tx_frag_init_called_read 3 48377 NULL 118641+tx_frag_init_called_read_48377 tx_frag_init_called_read 3 48377 NULL
@@ -112417,7 +118648,6 @@ index 0000000..9529806
112417+compat_SyS_preadv64_48469 compat_SyS_preadv64 3 48469 NULL 118648+compat_SyS_preadv64_48469 compat_SyS_preadv64 3 48469 NULL
112418+ipath_format_hwerrors_48487 ipath_format_hwerrors 5 48487 NULL 118649+ipath_format_hwerrors_48487 ipath_format_hwerrors 5 48487 NULL
112419+r8712_usbctrl_vendorreq_48489 r8712_usbctrl_vendorreq 6 48489 NULL 118650+r8712_usbctrl_vendorreq_48489 r8712_usbctrl_vendorreq 6 48489 NULL
112420+ocfs2_refcount_cow_48495 ocfs2_refcount_cow 3 48495 NULL
112421+send_control_msg_48498 send_control_msg 6 48498 NULL 118651+send_control_msg_48498 send_control_msg 6 48498 NULL
112422+count_masked_bytes_48507 count_masked_bytes 0-1 48507 NULL 118652+count_masked_bytes_48507 count_masked_bytes 0-1 48507 NULL
112423+diva_os_copy_to_user_48508 diva_os_copy_to_user 4 48508 NULL 118653+diva_os_copy_to_user_48508 diva_os_copy_to_user 4 48508 NULL
@@ -112431,6 +118661,7 @@ index 0000000..9529806
112431+mtd_read_48655 mtd_read 0 48655 NULL 118661+mtd_read_48655 mtd_read 0 48655 NULL
112432+aes_encrypt_packets_read_48666 aes_encrypt_packets_read 3 48666 NULL 118662+aes_encrypt_packets_read_48666 aes_encrypt_packets_read 3 48666 NULL
112433+sm501_create_subdev_48668 sm501_create_subdev 3-4 48668 NULL 118663+sm501_create_subdev_48668 sm501_create_subdev 3-4 48668 NULL
118664+security_inode_setattr_48689 security_inode_setattr 0 48689 NULL
112434+hysdn_log_write_48694 hysdn_log_write 3 48694 NULL 118665+hysdn_log_write_48694 hysdn_log_write 3 48694 NULL
112435+altera_drscan_48698 altera_drscan 2 48698 NULL 118666+altera_drscan_48698 altera_drscan 2 48698 NULL
112436+kvm_set_irq_routing_48704 kvm_set_irq_routing 3 48704 NULL 118667+kvm_set_irq_routing_48704 kvm_set_irq_routing 3 48704 NULL
@@ -112448,7 +118679,6 @@ index 0000000..9529806
112448+vc_do_resize_48842 vc_do_resize 3-4 48842 NULL 118679+vc_do_resize_48842 vc_do_resize 3-4 48842 NULL
112449+comedi_buf_write_alloc_48846 comedi_buf_write_alloc 0-2 48846 NULL 118680+comedi_buf_write_alloc_48846 comedi_buf_write_alloc 0-2 48846 NULL
112450+suspend_dtim_interval_write_48854 suspend_dtim_interval_write 3 48854 NULL 118681+suspend_dtim_interval_write_48854 suspend_dtim_interval_write 3 48854 NULL
112451+sptlrpc_cli_alloc_reqbuf_48855 sptlrpc_cli_alloc_reqbuf 0 48855 NULL
112452+C_SYSC_pwritev64_48864 C_SYSC_pwritev64 3 48864 NULL nohasharray 118682+C_SYSC_pwritev64_48864 C_SYSC_pwritev64 3 48864 NULL nohasharray
112453+viafb_dvp1_proc_write_48864 viafb_dvp1_proc_write 3 48864 &C_SYSC_pwritev64_48864 118683+viafb_dvp1_proc_write_48864 viafb_dvp1_proc_write 3 48864 &C_SYSC_pwritev64_48864
112454+__ffs_ep0_read_events_48868 __ffs_ep0_read_events 3 48868 NULL 118684+__ffs_ep0_read_events_48868 __ffs_ep0_read_events 3 48868 NULL
@@ -112461,16 +118691,18 @@ index 0000000..9529806
112461+event_heart_beat_read_48961 event_heart_beat_read 3 48961 NULL 118691+event_heart_beat_read_48961 event_heart_beat_read 3 48961 NULL
112462+nand_ecc_test_run_48966 nand_ecc_test_run 1 48966 NULL 118692+nand_ecc_test_run_48966 nand_ecc_test_run 1 48966 NULL
112463+vmci_handle_arr_create_48971 vmci_handle_arr_create 1 48971 NULL 118693+vmci_handle_arr_create_48971 vmci_handle_arr_create 1 48971 NULL
118694+xfs_trans_commit_48982 xfs_trans_commit 0 48982 NULL
118695+gfs2_dir_add_48987 gfs2_dir_add 0 48987 NULL
112464+rds_rm_size_48996 rds_rm_size 0-2 48996 NULL 118696+rds_rm_size_48996 rds_rm_size 0-2 48996 NULL
112465+sel_write_enforce_48998 sel_write_enforce 3 48998 NULL 118697+sel_write_enforce_48998 sel_write_enforce 3 48998 NULL
112466+null_alloc_rs_49019 null_alloc_rs 2 49019 NULL 118698+null_alloc_rs_49019 null_alloc_rs 2 49019 NULL
112467+filemap_check_errors_49022 filemap_check_errors 0 49022 NULL 118699+filemap_check_errors_49022 filemap_check_errors 0 49022 NULL
112468+aic_inb_49023 aic_inb 0 49023 NULL
112469+transient_status_49027 transient_status 4 49027 NULL 118700+transient_status_49027 transient_status 4 49027 NULL
118701+ll_xattr_cache_add_49032 ll_xattr_cache_add 4-0 49032 NULL
112470+iwl_mvm_power_legacy_dbgfs_read_49038 iwl_mvm_power_legacy_dbgfs_read 4 49038 NULL 118702+iwl_mvm_power_legacy_dbgfs_read_49038 iwl_mvm_power_legacy_dbgfs_read 4 49038 NULL
112471+aic7xxx_rem_scb_from_disc_list_49041 aic7xxx_rem_scb_from_disc_list 0 49041 NULL
112472+scsi_register_49094 scsi_register 2 49094 NULL 118703+scsi_register_49094 scsi_register 2 49094 NULL
112473+compat_do_readv_writev_49102 compat_do_readv_writev 4 49102 NULL 118704+compat_do_readv_writev_49102 compat_do_readv_writev 4 49102 NULL
118705+gfs2_diradd_alloc_required_49105 gfs2_diradd_alloc_required 0 49105 NULL
112474+xfrm_replay_state_esn_len_49119 xfrm_replay_state_esn_len 0 49119 NULL 118706+xfrm_replay_state_esn_len_49119 xfrm_replay_state_esn_len 0 49119 NULL
112475+ll_max_cached_mb_seq_write_49122 ll_max_cached_mb_seq_write 3 49122 NULL 118707+ll_max_cached_mb_seq_write_49122 ll_max_cached_mb_seq_write 3 49122 NULL
112476+pt_read_49136 pt_read 3 49136 NULL 118708+pt_read_49136 pt_read 3 49136 NULL
@@ -112486,7 +118718,6 @@ index 0000000..9529806
112486+il4965_rs_sta_dbgfs_stats_table_read_49206 il4965_rs_sta_dbgfs_stats_table_read 3 49206 NULL 118718+il4965_rs_sta_dbgfs_stats_table_read_49206 il4965_rs_sta_dbgfs_stats_table_read 3 49206 NULL
112487+do_jffs2_getxattr_49210 do_jffs2_getxattr 0 49210 NULL 118719+do_jffs2_getxattr_49210 do_jffs2_getxattr 0 49210 NULL
112488+nouveau_therm_create__49228 nouveau_therm_create_ 4 49228 NULL 118720+nouveau_therm_create__49228 nouveau_therm_create_ 4 49228 NULL
112489+hugetlb_cgroup_read_49259 hugetlb_cgroup_read 5 49259 NULL
112490+ieee80211_if_read_rssi_threshold_49260 ieee80211_if_read_rssi_threshold 3 49260 NULL 118721+ieee80211_if_read_rssi_threshold_49260 ieee80211_if_read_rssi_threshold 3 49260 NULL
112491+isku_sysfs_read_keys_media_49268 isku_sysfs_read_keys_media 6 49268 NULL 118722+isku_sysfs_read_keys_media_49268 isku_sysfs_read_keys_media 6 49268 NULL
112492+ptlrpc_check_set_49277 ptlrpc_check_set 0 49277 NULL 118723+ptlrpc_check_set_49277 ptlrpc_check_set 0 49277 NULL
@@ -112506,7 +118737,7 @@ index 0000000..9529806
112506+compat_do_msg_fill_49440 compat_do_msg_fill 3 49440 NULL 118737+compat_do_msg_fill_49440 compat_do_msg_fill 3 49440 NULL
112507+__hfsplus_getxattr_49460 __hfsplus_getxattr 0 49460 NULL 118738+__hfsplus_getxattr_49460 __hfsplus_getxattr 0 49460 NULL
112508+agp_3_5_isochronous_node_enable_49465 agp_3_5_isochronous_node_enable 3 49465 NULL 118739+agp_3_5_isochronous_node_enable_49465 agp_3_5_isochronous_node_enable 3 49465 NULL
112509+xfs_iformat_local_49472 xfs_iformat_local 4 49472 NULL 118740+xfs_iformat_local_49472 xfs_iformat_local 4-0 49472 NULL
112510+isr_decrypt_done_read_49490 isr_decrypt_done_read 3 49490 NULL 118741+isr_decrypt_done_read_49490 isr_decrypt_done_read 3 49490 NULL
112511+iwl_dbgfs_disable_power_off_read_49517 iwl_dbgfs_disable_power_off_read 3 49517 NULL 118742+iwl_dbgfs_disable_power_off_read_49517 iwl_dbgfs_disable_power_off_read 3 49517 NULL
112512+SyS_listxattr_49519 SyS_listxattr 3 49519 NULL 118743+SyS_listxattr_49519 SyS_listxattr 3 49519 NULL
@@ -112514,8 +118745,9 @@ index 0000000..9529806
112514+smk_write_access_49561 smk_write_access 3 49561 NULL 118745+smk_write_access_49561 smk_write_access 3 49561 NULL
112515+alloc_chunk_49575 alloc_chunk 1 49575 NULL 118746+alloc_chunk_49575 alloc_chunk 1 49575 NULL
112516+sctp_setsockopt_default_send_param_49578 sctp_setsockopt_default_send_param 3 49578 NULL 118747+sctp_setsockopt_default_send_param_49578 sctp_setsockopt_default_send_param 3 49578 NULL
112517+ptlrpc_request_pack_49581 ptlrpc_request_pack 0 49581 NULL
112518+readfifo_49583 readfifo 1 49583 NULL 118748+readfifo_49583 readfifo 1 49583 NULL
118749+gfs2_quota_lock_49587 gfs2_quota_lock 0 49587 NULL
118750+evm_inode_setattr_49594 evm_inode_setattr 0 49594 NULL
112519+tap_write_49595 tap_write 3 49595 NULL 118751+tap_write_49595 tap_write 3 49595 NULL
112520+isr_wakeups_read_49607 isr_wakeups_read 3 49607 NULL 118752+isr_wakeups_read_49607 isr_wakeups_read 3 49607 NULL
112521+btrfs_mksubvol_49616 btrfs_mksubvol 3 49616 NULL 118753+btrfs_mksubvol_49616 btrfs_mksubvol 3 49616 NULL
@@ -112523,6 +118755,7 @@ index 0000000..9529806
112523+smk_write_doi_49621 smk_write_doi 3 49621 NULL 118755+smk_write_doi_49621 smk_write_doi 3 49621 NULL
112524+port_fops_read_49626 port_fops_read 3 49626 NULL 118756+port_fops_read_49626 port_fops_read 3 49626 NULL
112525+btrfsic_cmp_log_and_dev_bytenr_49628 btrfsic_cmp_log_and_dev_bytenr 2 49628 NULL 118757+btrfsic_cmp_log_and_dev_bytenr_49628 btrfsic_cmp_log_and_dev_bytenr 2 49628 NULL
118758+xfs_ialloc_get_rec_49648 xfs_ialloc_get_rec 0 49648 NULL
112526+aa_simple_write_to_buffer_49683 aa_simple_write_to_buffer 4-3 49683 NULL 118759+aa_simple_write_to_buffer_49683 aa_simple_write_to_buffer 4-3 49683 NULL
112527+SyS_pwritev_49688 SyS_pwritev 3 49688 NULL 118760+SyS_pwritev_49688 SyS_pwritev 3 49688 NULL
112528+__copy_from_user_nocheck_49699 __copy_from_user_nocheck 0-3 49699 NULL 118761+__copy_from_user_nocheck_49699 __copy_from_user_nocheck 0-3 49699 NULL
@@ -112546,15 +118779,18 @@ index 0000000..9529806
112546+timeradd_entry_49850 timeradd_entry 3 49850 NULL 118779+timeradd_entry_49850 timeradd_entry 3 49850 NULL
112547+fiemap_count_to_size_49869 fiemap_count_to_size 0-1 49869 NULL 118780+fiemap_count_to_size_49869 fiemap_count_to_size 0-1 49869 NULL
112548+sctp_setsockopt_bindx_49870 sctp_setsockopt_bindx 3 49870 NULL 118781+sctp_setsockopt_bindx_49870 sctp_setsockopt_bindx 3 49870 NULL
112549+ceph_get_caps_49890 ceph_get_caps 0 49890 NULL
112550+osc_brw_49896 osc_brw 4 49896 NULL 118782+osc_brw_49896 osc_brw 4 49896 NULL
112551+config_ep_by_speed_49939 config_ep_by_speed 0 49939 NULL 118783+config_ep_by_speed_49939 config_ep_by_speed 0 49939 NULL
118784+xfs_ialloc_ag_alloc_49960 xfs_ialloc_ag_alloc 0 49960 NULL
112552+ieee80211_if_fmt_dtim_count_49987 ieee80211_if_fmt_dtim_count 3 49987 NULL 118785+ieee80211_if_fmt_dtim_count_49987 ieee80211_if_fmt_dtim_count 3 49987 NULL
112553+drm_buffer_copy_from_user_49990 drm_buffer_copy_from_user 3 49990 NULL 118786+drm_buffer_copy_from_user_49990 drm_buffer_copy_from_user 3 49990 NULL
112554+l2cap_chan_send_49995 l2cap_chan_send 3 49995 NULL 118787+l2cap_chan_send_49995 l2cap_chan_send 3 49995 NULL
112555+dn_mss_from_pmtu_50011 dn_mss_from_pmtu 0-2 50011 NULL 118788+dn_mss_from_pmtu_50011 dn_mss_from_pmtu 0-2 50011 NULL
118789+xfs_ialloc_inode_init_50015 xfs_ialloc_inode_init 0 50015 NULL
118790+security_context_to_sid_50019 security_context_to_sid 2 50019 NULL
112556+isdn_read_50021 isdn_read 3 50021 NULL 118791+isdn_read_50021 isdn_read 3 50021 NULL
112557+mdc_rename_pack_50023 mdc_rename_pack 4-6 50023 NULL 118792+mdc_rename_pack_50023 mdc_rename_pack 4-6 50023 NULL
118793+brcmf_debugfs_chipinfo_read_50033 brcmf_debugfs_chipinfo_read 3 50033 NULL
112558+ioread8_50049 ioread8 0 50049 NULL 118794+ioread8_50049 ioread8 0 50049 NULL
112559+fuse_conn_max_background_write_50061 fuse_conn_max_background_write 3 50061 NULL 118795+fuse_conn_max_background_write_50061 fuse_conn_max_background_write 3 50061 NULL
112560+__kfifo_dma_in_prepare_50081 __kfifo_dma_in_prepare 4 50081 NULL 118796+__kfifo_dma_in_prepare_50081 __kfifo_dma_in_prepare 4 50081 NULL
@@ -112567,8 +118803,8 @@ index 0000000..9529806
112567+rx_streaming_interval_write_50120 rx_streaming_interval_write 3 50120 NULL 118803+rx_streaming_interval_write_50120 rx_streaming_interval_write 3 50120 NULL
112568+jfs_direct_IO_50125 jfs_direct_IO 4 50125 NULL 118804+jfs_direct_IO_50125 jfs_direct_IO 4 50125 NULL
112569+SYSC_preadv_50134 SYSC_preadv 3 50134 NULL 118805+SYSC_preadv_50134 SYSC_preadv 3 50134 NULL
112570+copy_items_50140 copy_items 6 50140 NULL
112571+tx_frag_need_fragmentation_read_50153 tx_frag_need_fragmentation_read 3 50153 NULL 118806+tx_frag_need_fragmentation_read_50153 tx_frag_need_fragmentation_read 3 50153 NULL
118807+xfs_bwrite_50154 xfs_bwrite 0 50154 NULL
112572+kmalloc_node_50163 kmalloc_node 1 50163 NULL 118808+kmalloc_node_50163 kmalloc_node 1 50163 NULL
112573+rx_filter_ibss_filter_read_50167 rx_filter_ibss_filter_read 3 50167 NULL 118809+rx_filter_ibss_filter_read_50167 rx_filter_ibss_filter_read 3 50167 NULL
112574+ahd_probe_stack_size_50168 ahd_probe_stack_size 0 50168 NULL 118810+ahd_probe_stack_size_50168 ahd_probe_stack_size 0 50168 NULL
@@ -112600,14 +118836,19 @@ index 0000000..9529806
112600+l2tp_ip_sendmsg_50411 l2tp_ip_sendmsg 4 50411 NULL 118836+l2tp_ip_sendmsg_50411 l2tp_ip_sendmsg 4 50411 NULL
112601+iscsi_create_conn_50425 iscsi_create_conn 2 50425 NULL 118837+iscsi_create_conn_50425 iscsi_create_conn 2 50425 NULL
112602+validate_acl_mac_addrs_50429 validate_acl_mac_addrs 0 50429 NULL 118838+validate_acl_mac_addrs_50429 validate_acl_mac_addrs 0 50429 NULL
118839+xfs_alloc_update_counters_50441 xfs_alloc_update_counters 0 50441 NULL
112603+btrfs_error_discard_extent_50444 btrfs_error_discard_extent 2 50444 NULL 118840+btrfs_error_discard_extent_50444 btrfs_error_discard_extent 2 50444 NULL
112604+pgctrl_write_50453 pgctrl_write 3 50453 NULL 118841+pgctrl_write_50453 pgctrl_write 3 50453 NULL
112605+device_create_sys_dev_entry_50458 device_create_sys_dev_entry 0 50458 NULL 118842+device_create_sys_dev_entry_50458 device_create_sys_dev_entry 0 50458 NULL
112606+cfs_size_round_50472 cfs_size_round 0-1 50472 NULL 118843+cfs_size_round_50472 cfs_size_round 0-1 50472 NULL
112607+cdrom_read_cdda_50478 cdrom_read_cdda 4 50478 NULL 118844+cdrom_read_cdda_50478 cdrom_read_cdda 4 50478 NULL
118845+xfs_iformat_extents_50486 xfs_iformat_extents 0 50486 NULL
118846+gfs2_block_map_50492 gfs2_block_map 0 50492 NULL
112608+mei_io_cb_alloc_req_buf_50493 mei_io_cb_alloc_req_buf 2 50493 NULL 118847+mei_io_cb_alloc_req_buf_50493 mei_io_cb_alloc_req_buf 2 50493 NULL
112609+pwr_rcvd_awake_beacons_read_50505 pwr_rcvd_awake_beacons_read 3 50505 NULL 118848+pwr_rcvd_awake_beacons_read_50505 pwr_rcvd_awake_beacons_read 3 50505 NULL
112610+ath6kl_set_ap_probe_resp_ies_50539 ath6kl_set_ap_probe_resp_ies 3 50539 NULL 118849+ath6kl_set_ap_probe_resp_ies_50539 ath6kl_set_ap_probe_resp_ies 3 50539 NULL
118850+bh_get_50543 bh_get 0 50543 NULL
118851+gfs2_meta_inode_buffer_50544 gfs2_meta_inode_buffer 0 50544 NULL
112611+usbat_flash_write_data_50553 usbat_flash_write_data 4 50553 NULL 118852+usbat_flash_write_data_50553 usbat_flash_write_data 4 50553 NULL
112612+fat_readpages_50582 fat_readpages 4 50582 NULL 118853+fat_readpages_50582 fat_readpages 4 50582 NULL
112613+iwl_dbgfs_missed_beacon_read_50584 iwl_dbgfs_missed_beacon_read 3 50584 NULL 118854+iwl_dbgfs_missed_beacon_read_50584 iwl_dbgfs_missed_beacon_read 3 50584 NULL
@@ -112615,6 +118856,7 @@ index 0000000..9529806
112615+rx_rx_checksum_result_read_50617 rx_rx_checksum_result_read 3 50617 NULL 118856+rx_rx_checksum_result_read_50617 rx_rx_checksum_result_read 3 50617 NULL
112616+sparse_early_usemaps_alloc_node_50623 sparse_early_usemaps_alloc_node 4 50623 NULL 118857+sparse_early_usemaps_alloc_node_50623 sparse_early_usemaps_alloc_node 4 50623 NULL
112617+simple_transaction_get_50633 simple_transaction_get 3 50633 NULL 118858+simple_transaction_get_50633 simple_transaction_get 3 50633 NULL
118859+gfs2_unstuff_dinode_50644 gfs2_unstuff_dinode 0 50644 NULL
112618+ath6kl_tm_rx_event_50664 ath6kl_tm_rx_event 3 50664 NULL 118860+ath6kl_tm_rx_event_50664 ath6kl_tm_rx_event 3 50664 NULL
112619+bnad_debugfs_read_50665 bnad_debugfs_read 3 50665 NULL 118861+bnad_debugfs_read_50665 bnad_debugfs_read 3 50665 NULL
112620+prism2_read_fid_reg_50689 prism2_read_fid_reg 0 50689 NULL 118862+prism2_read_fid_reg_50689 prism2_read_fid_reg 0 50689 NULL
@@ -112624,10 +118866,12 @@ index 0000000..9529806
112624+__ext3_get_inode_loc_50744 __ext3_get_inode_loc 0 50744 NULL 118866+__ext3_get_inode_loc_50744 __ext3_get_inode_loc 0 50744 NULL
112625+ocfs2_xattr_block_get_50773 ocfs2_xattr_block_get 0 50773 NULL 118867+ocfs2_xattr_block_get_50773 ocfs2_xattr_block_get 0 50773 NULL
112626+tm6000_read_write_usb_50774 tm6000_read_write_usb 7 50774 NULL 118868+tm6000_read_write_usb_50774 tm6000_read_write_usb 7 50774 NULL
112627+bio_alloc_map_data_50782 bio_alloc_map_data 1-2 50782 NULL 118869+bio_alloc_map_data_50782 bio_alloc_map_data 2 50782 NULL
112628+tpm_write_50798 tpm_write 3 50798 NULL 118870+tpm_write_50798 tpm_write 3 50798 NULL
118871+tun_do_read_50800 tun_do_read 4 50800 NULL
112629+write_flush_50803 write_flush 3 50803 NULL 118872+write_flush_50803 write_flush 3 50803 NULL
112630+dvb_play_50814 dvb_play 3 50814 NULL 118873+dvb_play_50814 dvb_play 3 50814 NULL
118874+btrfs_stack_file_extent_disk_num_bytes_50825 btrfs_stack_file_extent_disk_num_bytes 0 50825 NULL
112631+dpcm_show_state_50827 dpcm_show_state 0 50827 NULL 118875+dpcm_show_state_50827 dpcm_show_state 0 50827 NULL
112632+SetArea_50835 SetArea 4 50835 NULL 118876+SetArea_50835 SetArea 4 50835 NULL
112633+videobuf_dma_init_user_50839 videobuf_dma_init_user 4-3 50839 NULL 118877+videobuf_dma_init_user_50839 videobuf_dma_init_user 4-3 50839 NULL
@@ -112635,6 +118879,7 @@ index 0000000..9529806
112635+SyS_lgetxattr_50889 SyS_lgetxattr 4 50889 NULL 118879+SyS_lgetxattr_50889 SyS_lgetxattr 4 50889 NULL
112636+netlbl_secattr_catmap_walk_rng_50894 netlbl_secattr_catmap_walk_rng 0-2 50894 NULL 118880+netlbl_secattr_catmap_walk_rng_50894 netlbl_secattr_catmap_walk_rng 0-2 50894 NULL
112637+__bdev_writeseg_50903 __bdev_writeseg 4 50903 NULL 118881+__bdev_writeseg_50903 __bdev_writeseg 4 50903 NULL
118882+xfs_alloc_get_freelist_50906 xfs_alloc_get_freelist 0 50906 NULL
112638+xfs_iext_remove_50909 xfs_iext_remove 3 50909 NULL 118883+xfs_iext_remove_50909 xfs_iext_remove 3 50909 NULL
112639+blk_rq_cur_sectors_50910 blk_rq_cur_sectors 0 50910 NULL 118884+blk_rq_cur_sectors_50910 blk_rq_cur_sectors 0 50910 NULL
112640+hash_recvmsg_50924 hash_recvmsg 4 50924 NULL 118885+hash_recvmsg_50924 hash_recvmsg 4 50924 NULL
@@ -112644,7 +118889,7 @@ index 0000000..9529806
112644+virtio_cread16_50951 virtio_cread16 0 50951 NULL 118889+virtio_cread16_50951 virtio_cread16 0 50951 NULL
112645+sdio_uart_write_50954 sdio_uart_write 3 50954 NULL 118890+sdio_uart_write_50954 sdio_uart_write 3 50954 NULL
112646+SyS_setxattr_50957 SyS_setxattr 4 50957 NULL 118891+SyS_setxattr_50957 SyS_setxattr 4 50957 NULL
112647+iwl_statistics_flag_50981 iwl_statistics_flag 3-0 50981 NULL 118892+iwl_statistics_flag_50981 iwl_statistics_flag 0-3 50981 NULL
112648+timeout_write_50991 timeout_write 3 50991 NULL 118893+timeout_write_50991 timeout_write 3 50991 NULL
112649+proc_write_51003 proc_write 3 51003 NULL 118894+proc_write_51003 proc_write 3 51003 NULL
112650+jbd2_journal_extend_51012 jbd2_journal_extend 2 51012 NULL 118895+jbd2_journal_extend_51012 jbd2_journal_extend 2 51012 NULL
@@ -112659,8 +118904,6 @@ index 0000000..9529806
112659+jbd2_journal_init_revoke_51088 jbd2_journal_init_revoke 2 51088 NULL 118904+jbd2_journal_init_revoke_51088 jbd2_journal_init_revoke 2 51088 NULL
112660+__ocfs2_find_path_51096 __ocfs2_find_path 0 51096 NULL 118905+__ocfs2_find_path_51096 __ocfs2_find_path 0 51096 NULL
112661+ti_recv_51110 ti_recv 3 51110 NULL 118906+ti_recv_51110 ti_recv 3 51110 NULL
112662+uasp_prepare_r_request_51124 uasp_prepare_r_request 0 51124 NULL
112663+nfs_map_name_to_uid_51132 nfs_map_name_to_uid 3 51132 NULL
112664+alloc_rtllib_51136 alloc_rtllib 1 51136 NULL 118907+alloc_rtllib_51136 alloc_rtllib 1 51136 NULL
112665+simple_xattr_set_51140 simple_xattr_set 4 51140 NULL 118908+simple_xattr_set_51140 simple_xattr_set 4 51140 NULL
112666+xfs_trans_get_efd_51148 xfs_trans_get_efd 3 51148 NULL 118909+xfs_trans_get_efd_51148 xfs_trans_get_efd 3 51148 NULL
@@ -112682,10 +118925,10 @@ index 0000000..9529806
112682+ipw_get_event_log_len_51341 ipw_get_event_log_len 0 51341 NULL 118925+ipw_get_event_log_len_51341 ipw_get_event_log_len 0 51341 NULL
112683+ieee80211_if_fmt_estab_plinks_51370 ieee80211_if_fmt_estab_plinks 3 51370 NULL 118926+ieee80211_if_fmt_estab_plinks_51370 ieee80211_if_fmt_estab_plinks 3 51370 NULL
112684+radeon_kms_compat_ioctl_51371 radeon_kms_compat_ioctl 2 51371 NULL 118927+radeon_kms_compat_ioctl_51371 radeon_kms_compat_ioctl 2 51371 NULL
112685+ceph_sync_read_51410 ceph_sync_read 3-0 51410 NULL
112686+blk_register_region_51424 blk_register_region 1-2 51424 NULL 118928+blk_register_region_51424 blk_register_region 1-2 51424 NULL
112687+mwifiex_rdeeprom_read_51429 mwifiex_rdeeprom_read 3 51429 NULL 118929+mwifiex_rdeeprom_read_51429 mwifiex_rdeeprom_read 3 51429 NULL
112688+hfsplus_brec_read_51436 hfsplus_brec_read 0 51436 NULL 118930+hfsplus_brec_read_51436 hfsplus_brec_read 0 51436 NULL
118931+xfs_mod_incore_sb_unlocked_51439 xfs_mod_incore_sb_unlocked 0 51439 NULL
112689+ieee80211_if_read_dot11MeshHWMPRootMode_51441 ieee80211_if_read_dot11MeshHWMPRootMode 3 51441 NULL 118932+ieee80211_if_read_dot11MeshHWMPRootMode_51441 ieee80211_if_read_dot11MeshHWMPRootMode 3 51441 NULL
112690+print_devstats_dot11ACKFailureCount_51443 print_devstats_dot11ACKFailureCount 3 51443 NULL 118933+print_devstats_dot11ACKFailureCount_51443 print_devstats_dot11ACKFailureCount 3 51443 NULL
112691+____alloc_ei_netdev_51475 ____alloc_ei_netdev 1 51475 NULL 118934+____alloc_ei_netdev_51475 ____alloc_ei_netdev 1 51475 NULL
@@ -112700,6 +118943,7 @@ index 0000000..9529806
112700+extent_fiemap_51621 extent_fiemap 3 51621 NULL 118943+extent_fiemap_51621 extent_fiemap 3 51621 NULL
112701+sctp_auth_create_key_51641 sctp_auth_create_key 1 51641 NULL 118944+sctp_auth_create_key_51641 sctp_auth_create_key 1 51641 NULL
112702+iscsi_create_session_51647 iscsi_create_session 3 51647 NULL 118945+iscsi_create_session_51647 iscsi_create_session 3 51647 NULL
118946+xfs_iformat_btree_51651 xfs_iformat_btree 0 51651 NULL
112703+ps_upsd_utilization_read_51669 ps_upsd_utilization_read 3 51669 NULL 118947+ps_upsd_utilization_read_51669 ps_upsd_utilization_read 3 51669 NULL
112704+sctp_setsockopt_associnfo_51684 sctp_setsockopt_associnfo 3 51684 NULL 118948+sctp_setsockopt_associnfo_51684 sctp_setsockopt_associnfo 3 51684 NULL
112705+host_mapping_level_51696 host_mapping_level 0 51696 NULL 118949+host_mapping_level_51696 host_mapping_level 0 51696 NULL
@@ -112732,6 +118976,7 @@ index 0000000..9529806
112732+snd_mask_min_51969 snd_mask_min 0 51969 NULL 118976+snd_mask_min_51969 snd_mask_min 0 51969 NULL
112733+__blkdev_get_51972 __blkdev_get 0 51972 NULL 118977+__blkdev_get_51972 __blkdev_get 0 51972 NULL
112734+get_zone_51981 get_zone 0-1 51981 NULL 118978+get_zone_51981 get_zone 0-1 51981 NULL
118979+cifs_strict_writev_51984 cifs_strict_writev 4 51984 NULL
112735+ath6kl_sdio_alloc_prep_scat_req_51986 ath6kl_sdio_alloc_prep_scat_req 2 51986 NULL 118980+ath6kl_sdio_alloc_prep_scat_req_51986 ath6kl_sdio_alloc_prep_scat_req 2 51986 NULL
112736+_c4iw_write_mem_dma_51991 _c4iw_write_mem_dma 3 51991 NULL 118981+_c4iw_write_mem_dma_51991 _c4iw_write_mem_dma 3 51991 NULL
112737+dwc3_mode_write_51997 dwc3_mode_write 3 51997 NULL 118982+dwc3_mode_write_51997 dwc3_mode_write 3 51997 NULL
@@ -112744,22 +118989,27 @@ index 0000000..9529806
112744+dvb_ringbuffer_avail_52057 dvb_ringbuffer_avail 0 52057 NULL 118989+dvb_ringbuffer_avail_52057 dvb_ringbuffer_avail 0 52057 NULL
112745+__fuse_request_alloc_52060 __fuse_request_alloc 1 52060 NULL 118990+__fuse_request_alloc_52060 __fuse_request_alloc 1 52060 NULL
112746+isofs_readpages_52067 isofs_readpages 4 52067 NULL 118991+isofs_readpages_52067 isofs_readpages 4 52067 NULL
118992+mxuport_process_read_urb_data_52072 mxuport_process_read_urb_data 3 52072 NULL
112747+nsm_get_handle_52089 nsm_get_handle 4 52089 NULL 118993+nsm_get_handle_52089 nsm_get_handle 4 52089 NULL
118994+ulist_add_merge_52096 ulist_add_merge 0 52096 NULL
112748+o2net_debug_read_52105 o2net_debug_read 3 52105 NULL 118995+o2net_debug_read_52105 o2net_debug_read 3 52105 NULL
112749+split_scan_timeout_write_52128 split_scan_timeout_write 3 52128 NULL 118996+split_scan_timeout_write_52128 split_scan_timeout_write 3 52128 NULL
112750+retry_count_read_52129 retry_count_read 3 52129 NULL 118997+retry_count_read_52129 retry_count_read 3 52129 NULL
118998+xfs_btree_change_owner_52137 xfs_btree_change_owner 0 52137 NULL
112751+gdm_usb_hci_send_52138 gdm_usb_hci_send 3 52138 NULL 118999+gdm_usb_hci_send_52138 gdm_usb_hci_send 3 52138 NULL
112752+sub_alloc_52140 sub_alloc 0 52140 NULL 119000+sub_alloc_52140 sub_alloc 0 52140 NULL
112753+hysdn_conf_write_52145 hysdn_conf_write 3 52145 NULL 119001+hysdn_conf_write_52145 hysdn_conf_write 3 52145 NULL
112754+htable_size_52148 htable_size 0-1 52148 NULL 119002+htable_size_52148 htable_size 0-1 52148 NULL
119003+gfs2_rs_alloc_52152 gfs2_rs_alloc 0 52152 NULL
112755+smk_write_load2_52155 smk_write_load2 3 52155 NULL 119004+smk_write_load2_52155 smk_write_load2 3 52155 NULL
112756+ieee80211_if_read_dot11MeshRetryTimeout_52168 ieee80211_if_read_dot11MeshRetryTimeout 3 52168 NULL 119005+ieee80211_if_read_dot11MeshRetryTimeout_52168 ieee80211_if_read_dot11MeshRetryTimeout 3 52168 NULL
112757+mga_compat_ioctl_52170 mga_compat_ioctl 2 52170 NULL 119006+mga_compat_ioctl_52170 mga_compat_ioctl 2 52170 NULL
112758+print_prefix_52176 print_prefix 0 52176 NULL 119007+print_prefix_52176 print_prefix 0 52176 NULL
112759+proc_pid_readlink_52186 proc_pid_readlink 3 52186 NULL 119008+proc_pid_readlink_52186 proc_pid_readlink 3 52186 NULL
119009+reiserfs_posix_acl_from_disk_52191 reiserfs_posix_acl_from_disk 2 52191 NULL
112760+vmci_qp_broker_alloc_52216 vmci_qp_broker_alloc 6-5 52216 NULL 119010+vmci_qp_broker_alloc_52216 vmci_qp_broker_alloc 6-5 52216 NULL
112761+fuse_request_alloc_52243 fuse_request_alloc 1 52243 NULL nohasharray 119011+fuse_request_alloc_52243 fuse_request_alloc 1 52243 NULL nohasharray
112762+xfs_iomap_eof_align_last_fsb_52243 xfs_iomap_eof_align_last_fsb 3 52243 &fuse_request_alloc_52243 119012+xfs_iomap_eof_align_last_fsb_52243 xfs_iomap_eof_align_last_fsb 0 52243 &fuse_request_alloc_52243
112763+mdiobus_alloc_size_52259 mdiobus_alloc_size 1 52259 NULL 119013+mdiobus_alloc_size_52259 mdiobus_alloc_size 1 52259 NULL
112764+shrink_slab_52261 shrink_slab 2 52261 NULL 119014+shrink_slab_52261 shrink_slab 2 52261 NULL
112765+sisusbcon_do_font_op_52271 sisusbcon_do_font_op 9 52271 NULL 119015+sisusbcon_do_font_op_52271 sisusbcon_do_font_op 9 52271 NULL
@@ -112770,7 +119020,8 @@ index 0000000..9529806
112770+hwflags_read_52318 hwflags_read 3 52318 NULL 119020+hwflags_read_52318 hwflags_read 3 52318 NULL
112771+test_unaligned_bulk_52333 test_unaligned_bulk 3 52333 NULL 119021+test_unaligned_bulk_52333 test_unaligned_bulk 3 52333 NULL
112772+hur_len_52339 hur_len 0 52339 NULL 119022+hur_len_52339 hur_len 0 52339 NULL
112773+bytes_to_frames_52362 bytes_to_frames 0-2 52362 NULL 119023+bytes_to_frames_52362 bytes_to_frames 0-2 52362 NULL nohasharray
119024+cap_inode_killpriv_52362 cap_inode_killpriv 0 52362 &bytes_to_frames_52362
112774+copy_entries_to_user_52367 copy_entries_to_user 1 52367 NULL 119025+copy_entries_to_user_52367 copy_entries_to_user 1 52367 NULL
112775+iwl_dump_fh_52371 iwl_dump_fh 0 52371 NULL 119026+iwl_dump_fh_52371 iwl_dump_fh 0 52371 NULL
112776+hfsplus_find_attr_52374 hfsplus_find_attr 0 52374 NULL 119027+hfsplus_find_attr_52374 hfsplus_find_attr 0 52374 NULL
@@ -112791,13 +119042,16 @@ index 0000000..9529806
112791+ocfs2_extend_no_holes_52483 ocfs2_extend_no_holes 3-4 52483 NULL 119042+ocfs2_extend_no_holes_52483 ocfs2_extend_no_holes 3-4 52483 NULL
112792+fd_do_rw_52495 fd_do_rw 3 52495 NULL 119043+fd_do_rw_52495 fd_do_rw 3 52495 NULL
112793+int_tasklet_entry_52500 int_tasklet_entry 3 52500 NULL 119044+int_tasklet_entry_52500 int_tasklet_entry 3 52500 NULL
119045+xfs_alloc_get_rec_52502 xfs_alloc_get_rec 0 52502 NULL
112794+lmv_get_easize_52504 lmv_get_easize 0 52504 NULL 119046+lmv_get_easize_52504 lmv_get_easize 0 52504 NULL
112795+pm_qos_power_write_52513 pm_qos_power_write 3 52513 NULL 119047+pm_qos_power_write_52513 pm_qos_power_write 3 52513 NULL
112796+bt_sock_stream_recvmsg_52518 bt_sock_stream_recvmsg 4 52518 NULL 119048+bt_sock_stream_recvmsg_52518 bt_sock_stream_recvmsg 4 52518 NULL
112797+dup_variable_bug_52525 dup_variable_bug 3 52525 NULL 119049+dup_variable_bug_52525 dup_variable_bug 3 52525 NULL
112798+raw_recvmsg_52529 raw_recvmsg 4 52529 NULL 119050+raw_recvmsg_52529 raw_recvmsg 4 52529 NULL
112799+dccpprobe_read_52549 dccpprobe_read 3 52549 NULL 119051+dccpprobe_read_52549 dccpprobe_read 3 52549 NULL
119052+ntfs_prepare_pages_for_non_resident_write_52556 ntfs_prepare_pages_for_non_resident_write 0 52556 NULL
112800+debug_level_proc_write_52572 debug_level_proc_write 3 52572 NULL 119053+debug_level_proc_write_52572 debug_level_proc_write 3 52572 NULL
119054+kernfs_setattr_52583 kernfs_setattr 0 52583 NULL
112801+isku_sysfs_read_macro_52587 isku_sysfs_read_macro 6 52587 NULL 119055+isku_sysfs_read_macro_52587 isku_sysfs_read_macro 6 52587 NULL
112802+SyS_setsockopt_52610 SyS_setsockopt 5 52610 NULL 119056+SyS_setsockopt_52610 SyS_setsockopt 5 52610 NULL
112803+ll_sa_entry_alloc_52611 ll_sa_entry_alloc 4 52611 NULL 119057+ll_sa_entry_alloc_52611 ll_sa_entry_alloc 4 52611 NULL
@@ -112816,7 +119070,7 @@ index 0000000..9529806
112816+ieee80211_if_read_beacon_timeout_52756 ieee80211_if_read_beacon_timeout 3 52756 NULL 119070+ieee80211_if_read_beacon_timeout_52756 ieee80211_if_read_beacon_timeout 3 52756 NULL
112817+nvme_trans_ext_inq_page_52776 nvme_trans_ext_inq_page 3 52776 NULL 119071+nvme_trans_ext_inq_page_52776 nvme_trans_ext_inq_page 3 52776 NULL
112818+pwr_rcvd_beacons_read_52836 pwr_rcvd_beacons_read 3 52836 NULL 119072+pwr_rcvd_beacons_read_52836 pwr_rcvd_beacons_read 3 52836 NULL
112819+ext2_xattr_set_acl_52857 ext2_xattr_set_acl 4 52857 NULL 119073+lb_alloc_ep_req_52837 lb_alloc_ep_req 2 52837 NULL
112820+mon_bin_get_event_52863 mon_bin_get_event 4-6 52863 NULL 119074+mon_bin_get_event_52863 mon_bin_get_event 4-6 52863 NULL
112821+twl6030_gpadc_write_52867 twl6030_gpadc_write 1 52867 NULL 119075+twl6030_gpadc_write_52867 twl6030_gpadc_write 1 52867 NULL
112822+qib_decode_6120_err_52876 qib_decode_6120_err 3 52876 NULL 119076+qib_decode_6120_err_52876 qib_decode_6120_err 3 52876 NULL
@@ -112832,10 +119086,9 @@ index 0000000..9529806
112832+ieee80211_if_fmt_fwded_mcast_52961 ieee80211_if_fmt_fwded_mcast 3 52961 NULL 119086+ieee80211_if_fmt_fwded_mcast_52961 ieee80211_if_fmt_fwded_mcast 3 52961 NULL
112833+tx_tx_exch_read_52986 tx_tx_exch_read 3 52986 NULL 119087+tx_tx_exch_read_52986 tx_tx_exch_read 3 52986 NULL
112834+num_node_state_52989 num_node_state 0 52989 NULL 119088+num_node_state_52989 num_node_state 0 52989 NULL
112835+efivarfs_file_write_53000 efivarfs_file_write 3 53000 NULL
112836+uasp_alloc_stream_res_53015 uasp_alloc_stream_res 0 53015 NULL
112837+btrfs_free_and_pin_reserved_extent_53016 btrfs_free_and_pin_reserved_extent 2 53016 NULL 119089+btrfs_free_and_pin_reserved_extent_53016 btrfs_free_and_pin_reserved_extent 2 53016 NULL
112838+tx_tx_exch_pending_read_53018 tx_tx_exch_pending_read 3 53018 NULL 119090+tx_tx_exch_pending_read_53018 tx_tx_exch_pending_read 3 53018 NULL
119091+xfs_rtfree_extent_53024 xfs_rtfree_extent 0 53024 NULL
112839+bio_cur_bytes_53037 bio_cur_bytes 0 53037 NULL 119092+bio_cur_bytes_53037 bio_cur_bytes 0 53037 NULL
112840+regcache_lzo_block_count_53056 regcache_lzo_block_count 0 53056 NULL 119093+regcache_lzo_block_count_53056 regcache_lzo_block_count 0 53056 NULL
112841+cfi_read_query_53066 cfi_read_query 0 53066 NULL 119094+cfi_read_query_53066 cfi_read_query 0 53066 NULL
@@ -112844,35 +119097,39 @@ index 0000000..9529806
112844+mic_virtio_copy_from_user_53107 mic_virtio_copy_from_user 3 53107 NULL 119097+mic_virtio_copy_from_user_53107 mic_virtio_copy_from_user 3 53107 NULL
112845+verity_status_53120 verity_status 5 53120 NULL 119098+verity_status_53120 verity_status 5 53120 NULL
112846+brcmf_usb_dl_cmd_53130 brcmf_usb_dl_cmd 4 53130 NULL 119099+brcmf_usb_dl_cmd_53130 brcmf_usb_dl_cmd 4 53130 NULL
112847+ps_poll_ps_poll_max_ap_turn_read_53140 ps_poll_ps_poll_max_ap_turn_read 3 53140 NULL 119100+inode_newsize_ok_53140 inode_newsize_ok 0 53140 NULL nohasharray
119101+ps_poll_ps_poll_max_ap_turn_read_53140 ps_poll_ps_poll_max_ap_turn_read 3 53140 &inode_newsize_ok_53140
112848+ieee80211_bss_info_update_53170 ieee80211_bss_info_update 4 53170 NULL 119102+ieee80211_bss_info_update_53170 ieee80211_bss_info_update 4 53170 NULL
112849+btrfs_io_bio_alloc_53179 btrfs_io_bio_alloc 2 53179 NULL 119103+btrfs_io_bio_alloc_53179 btrfs_io_bio_alloc 2 53179 NULL
119104+find_good_lh_53183 find_good_lh 0 53183 NULL
112850+clear_capture_buf_53192 clear_capture_buf 2 53192 NULL 119105+clear_capture_buf_53192 clear_capture_buf 2 53192 NULL
119106+xfs_btree_updkey_53195 xfs_btree_updkey 0 53195 NULL
112851+tx_tx_start_data_read_53219 tx_tx_start_data_read 3 53219 NULL 119107+tx_tx_start_data_read_53219 tx_tx_start_data_read 3 53219 NULL
112852+ptlrpc_lprocfs_req_history_max_seq_write_53243 ptlrpc_lprocfs_req_history_max_seq_write 3 53243 NULL 119108+ptlrpc_lprocfs_req_history_max_seq_write_53243 ptlrpc_lprocfs_req_history_max_seq_write 3 53243 NULL
112853+hfsplus_xattr_set_posix_acl_53249 hfsplus_xattr_set_posix_acl 4 53249 NULL 119109+xfs_trans_read_buf_map_53258 xfs_trans_read_buf_map 5-0 53258 NULL
112854+xfs_trans_read_buf_map_53258 xfs_trans_read_buf_map 5 53258 NULL
112855+wil_write_file_ssid_53266 wil_write_file_ssid 3 53266 NULL 119110+wil_write_file_ssid_53266 wil_write_file_ssid 3 53266 NULL
112856+btrfs_file_extent_num_bytes_53269 btrfs_file_extent_num_bytes 0 53269 NULL 119111+btrfs_file_extent_num_bytes_53269 btrfs_file_extent_num_bytes 0 53269 NULL
112857+ftrace_profile_write_53327 ftrace_profile_write 3 53327 NULL 119112+ftrace_profile_write_53327 ftrace_profile_write 3 53327 NULL
112858+find_nr_power_limit_53330 find_nr_power_limit 0 53330 NULL 119113+find_nr_power_limit_53330 find_nr_power_limit 0 53330 NULL
112859+gsm_control_reply_53333 gsm_control_reply 4 53333 NULL 119114+gsm_control_reply_53333 gsm_control_reply 4 53333 NULL
112860+vm_mmap_53339 vm_mmap 0 53339 NULL 119115+btree_keys_bytes_53348 btree_keys_bytes 0 53348 NULL
112861+read_6120_creg32_53363 read_6120_creg32 0 53363 NULL 119116+read_6120_creg32_53363 read_6120_creg32 0 53363 NULL
112862+sock_setbindtodevice_53369 sock_setbindtodevice 3 53369 NULL 119117+sock_setbindtodevice_53369 sock_setbindtodevice 3 53369 NULL
112863+get_random_bytes_arch_53370 get_random_bytes_arch 2 53370 NULL 119118+get_random_bytes_arch_53370 get_random_bytes_arch 2 53370 NULL
119119+xfs_imap_53389 xfs_imap 0 53389 NULL
112864+isr_cmd_cmplt_read_53439 isr_cmd_cmplt_read 3 53439 NULL 119120+isr_cmd_cmplt_read_53439 isr_cmd_cmplt_read 3 53439 NULL
112865+mwifiex_info_read_53447 mwifiex_info_read 3 53447 NULL 119121+mwifiex_info_read_53447 mwifiex_info_read 3 53447 NULL
112866+apei_exec_run_optional_53452 apei_exec_run_optional 0 53452 NULL 119122+apei_exec_run_optional_53452 apei_exec_run_optional 0 53452 NULL
112867+paging64_prefetch_gpte_53468 paging64_prefetch_gpte 4 53468 NULL 119123+paging64_prefetch_gpte_53468 paging64_prefetch_gpte 4 53468 NULL
112868+ima_write_template_field_data_53475 ima_write_template_field_data 2 53475 NULL 119124+ima_write_template_field_data_53475 ima_write_template_field_data 2 53475 NULL nohasharray
119125+create_trace_kprobe_53475 create_trace_kprobe 1 53475 &ima_write_template_field_data_53475
112869+iowarrior_read_53483 iowarrior_read 3 53483 NULL 119126+iowarrior_read_53483 iowarrior_read 3 53483 NULL
112870+osd_req_write_kern_53486 osd_req_write_kern 5 53486 NULL 119127+osd_req_write_kern_53486 osd_req_write_kern 5 53486 NULL
112871+do_verify_xattr_datum_53499 do_verify_xattr_datum 0 53499 NULL 119128+do_verify_xattr_datum_53499 do_verify_xattr_datum 0 53499 NULL
112872+snd_pcm_format_physical_width_53505 snd_pcm_format_physical_width 0 53505 NULL 119129+snd_pcm_format_physical_width_53505 snd_pcm_format_physical_width 0 53505 NULL
112873+dbAllocNext_53506 dbAllocNext 0 53506 NULL 119130+dbAllocNext_53506 dbAllocNext 0 53506 NULL
112874+ocfs2_xattr_set_acl_53508 ocfs2_xattr_set_acl 4 53508 NULL
112875+check_acl_53512 check_acl 0 53512 NULL 119131+check_acl_53512 check_acl 0 53512 NULL
119132+ll_xattr_cache_update_53515 ll_xattr_cache_update 4 53515 NULL
112876+nft_data_dump_53549 nft_data_dump 5 53549 NULL 119133+nft_data_dump_53549 nft_data_dump 5 53549 NULL
112877+SYSC_bind_53582 SYSC_bind 3 53582 NULL 119134+SYSC_bind_53582 SYSC_bind 3 53582 NULL
112878+cifs_utf16_bytes_53593 cifs_utf16_bytes 0 53593 NULL 119135+cifs_utf16_bytes_53593 cifs_utf16_bytes 0 53593 NULL
@@ -112887,11 +119144,11 @@ index 0000000..9529806
112887+bdev_logical_block_size_53690 bdev_logical_block_size 0 53690 NULL nohasharray 119144+bdev_logical_block_size_53690 bdev_logical_block_size 0 53690 NULL nohasharray
112888+igb_alloc_q_vector_53690 igb_alloc_q_vector 4-6 53690 &bdev_logical_block_size_53690 119145+igb_alloc_q_vector_53690 igb_alloc_q_vector 4-6 53690 &bdev_logical_block_size_53690
112889+find_overflow_devnum_53711 find_overflow_devnum 0 53711 NULL 119146+find_overflow_devnum_53711 find_overflow_devnum 0 53711 NULL
112890+bio_integrity_split_53714 bio_integrity_split 3 53714 NULL
112891+__proc_debug_mb_53732 __proc_debug_mb 5 53732 NULL 119147+__proc_debug_mb_53732 __proc_debug_mb 5 53732 NULL
112892+wdm_write_53735 wdm_write 3 53735 NULL 119148+wdm_write_53735 wdm_write 3 53735 NULL
112893+amdtp_out_stream_get_max_payload_53755 amdtp_out_stream_get_max_payload 0 53755 NULL nohasharray 119149+amdtp_out_stream_get_max_payload_53755 amdtp_out_stream_get_max_payload 0 53755 NULL nohasharray
112894+lpfc_idiag_queacc_read_qe_53755 lpfc_idiag_queacc_read_qe 0-2 53755 &amdtp_out_stream_get_max_payload_53755 119150+lpfc_idiag_queacc_read_qe_53755 lpfc_idiag_queacc_read_qe 0-2 53755 &amdtp_out_stream_get_max_payload_53755
119151+wa_populate_buf_in_urb_53758 wa_populate_buf_in_urb 3-4 53758 NULL
112895+ext2_acl_count_53773 ext2_acl_count 0-1 53773 NULL 119152+ext2_acl_count_53773 ext2_acl_count 0-1 53773 NULL
112896+__kfifo_dma_in_prepare_r_53792 __kfifo_dma_in_prepare_r 4-5 53792 NULL 119153+__kfifo_dma_in_prepare_r_53792 __kfifo_dma_in_prepare_r 4-5 53792 NULL
112897+qp_alloc_host_work_53798 qp_alloc_host_work 5-3 53798 NULL 119154+qp_alloc_host_work_53798 qp_alloc_host_work 5-3 53798 NULL
@@ -112902,6 +119159,7 @@ index 0000000..9529806
112902+pms_read_53873 pms_read 3 53873 NULL 119159+pms_read_53873 pms_read 3 53873 NULL
112903+ieee80211_if_fmt_dropped_frames_congestion_53883 ieee80211_if_fmt_dropped_frames_congestion 3 53883 NULL 119160+ieee80211_if_fmt_dropped_frames_congestion_53883 ieee80211_if_fmt_dropped_frames_congestion 3 53883 NULL
112904+SyS_setgroups_53900 SyS_setgroups 1 53900 NULL 119161+SyS_setgroups_53900 SyS_setgroups 1 53900 NULL
119162+posix_acl_chmod_53904 posix_acl_chmod 0 53904 NULL
112905+batadv_tt_tvlv_ogm_handler_v1_53909 batadv_tt_tvlv_ogm_handler_v1 5 53909 NULL 119163+batadv_tt_tvlv_ogm_handler_v1_53909 batadv_tt_tvlv_ogm_handler_v1 5 53909 NULL
112906+usb_serial_generic_write_53927 usb_serial_generic_write 4 53927 NULL 119164+usb_serial_generic_write_53927 usb_serial_generic_write 4 53927 NULL
112907+ocfs2_make_clusters_writable_53938 ocfs2_make_clusters_writable 0 53938 NULL 119165+ocfs2_make_clusters_writable_53938 ocfs2_make_clusters_writable 0 53938 NULL
@@ -112919,7 +119177,7 @@ index 0000000..9529806
112919+_malloc_54077 _malloc 1 54077 NULL 119177+_malloc_54077 _malloc 1 54077 NULL
112920+bitmap_bitremap_54096 bitmap_bitremap 4 54096 NULL 119178+bitmap_bitremap_54096 bitmap_bitremap 4 54096 NULL
112921+altera_set_ir_pre_54103 altera_set_ir_pre 2 54103 NULL nohasharray 119179+altera_set_ir_pre_54103 altera_set_ir_pre 2 54103 NULL nohasharray
112922+lustre_posix_acl_xattr_filter_54103 lustre_posix_acl_xattr_filter 2 54103 &altera_set_ir_pre_54103 119180+lustre_posix_acl_xattr_filter_54103 lustre_posix_acl_xattr_filter 2-0 54103 &altera_set_ir_pre_54103
112923+__comedi_buf_write_alloc_54112 __comedi_buf_write_alloc 0-2 54112 NULL 119181+__comedi_buf_write_alloc_54112 __comedi_buf_write_alloc 0-2 54112 NULL
112924+strn_len_54122 strn_len 0 54122 NULL 119182+strn_len_54122 strn_len 0 54122 NULL
112925+isku_receive_54130 isku_receive 4 54130 NULL 119183+isku_receive_54130 isku_receive 4 54130 NULL
@@ -112931,7 +119189,6 @@ index 0000000..9529806
112931+do_sys_poll_54221 do_sys_poll 2 54221 NULL 119189+do_sys_poll_54221 do_sys_poll 2 54221 NULL
112932+__register_chrdev_54223 __register_chrdev 2-3 54223 NULL 119190+__register_chrdev_54223 __register_chrdev 2-3 54223 NULL
112933+pi_read_regr_54231 pi_read_regr 0 54231 NULL 119191+pi_read_regr_54231 pi_read_regr 0 54231 NULL
112934+mcp23s08_read_regs_54246 mcp23s08_read_regs 4 54246 NULL
112935+reada_add_block_54247 reada_add_block 2 54247 NULL 119192+reada_add_block_54247 reada_add_block 2 54247 NULL
112936+xfs_dir2_sf_addname_hard_54254 xfs_dir2_sf_addname_hard 3 54254 NULL 119193+xfs_dir2_sf_addname_hard_54254 xfs_dir2_sf_addname_hard 3 54254 NULL
112937+ceph_msgpool_get_54258 ceph_msgpool_get 2 54258 NULL 119194+ceph_msgpool_get_54258 ceph_msgpool_get 2 54258 NULL
@@ -112948,7 +119205,6 @@ index 0000000..9529806
112948+br_fdb_fillbuf_54339 br_fdb_fillbuf 0 54339 NULL 119205+br_fdb_fillbuf_54339 br_fdb_fillbuf 0 54339 NULL
112949+__alloc_dev_table_54343 __alloc_dev_table 2 54343 NULL 119206+__alloc_dev_table_54343 __alloc_dev_table 2 54343 NULL
112950+__get_free_pages_54352 __get_free_pages 0 54352 NULL 119207+__get_free_pages_54352 __get_free_pages 0 54352 NULL
112951+tcf_hash_create_54360 tcf_hash_create 4 54360 NULL
112952+read_file_credit_dist_stats_54367 read_file_credit_dist_stats 3 54367 NULL 119208+read_file_credit_dist_stats_54367 read_file_credit_dist_stats 3 54367 NULL
112953+vfs_readlink_54368 vfs_readlink 3 54368 NULL 119209+vfs_readlink_54368 vfs_readlink 3 54368 NULL
112954+do_dccp_setsockopt_54377 do_dccp_setsockopt 5 54377 NULL nohasharray 119210+do_dccp_setsockopt_54377 do_dccp_setsockopt 5 54377 NULL nohasharray
@@ -112961,7 +119217,6 @@ index 0000000..9529806
112961+sparse_early_mem_maps_alloc_node_54485 sparse_early_mem_maps_alloc_node 4 54485 NULL 119217+sparse_early_mem_maps_alloc_node_54485 sparse_early_mem_maps_alloc_node 4 54485 NULL
112962+simple_strtoull_54493 simple_strtoull 0 54493 NULL 119218+simple_strtoull_54493 simple_strtoull 0 54493 NULL
112963+btrfs_ordered_sum_size_54509 btrfs_ordered_sum_size 0-2 54509 NULL 119219+btrfs_ordered_sum_size_54509 btrfs_ordered_sum_size 0-2 54509 NULL
112964+cgroup_write_X64_54514 cgroup_write_X64 5 54514 NULL
112965+rfc4106_set_key_54519 rfc4106_set_key 3 54519 NULL 119220+rfc4106_set_key_54519 rfc4106_set_key 3 54519 NULL
112966+vmci_transport_dgram_enqueue_54525 vmci_transport_dgram_enqueue 4 54525 NULL 119221+vmci_transport_dgram_enqueue_54525 vmci_transport_dgram_enqueue 4 54525 NULL
112967+viacam_read_54526 viacam_read 3 54526 NULL 119222+viacam_read_54526 viacam_read 3 54526 NULL
@@ -112992,22 +119247,22 @@ index 0000000..9529806
112992+iio_event_chrdev_read_54757 iio_event_chrdev_read 3 54757 NULL 119247+iio_event_chrdev_read_54757 iio_event_chrdev_read 3 54757 NULL
112993+adis16480_show_firmware_date_54762 adis16480_show_firmware_date 3 54762 NULL 119248+adis16480_show_firmware_date_54762 adis16480_show_firmware_date 3 54762 NULL
112994+ldsem_atomic_update_54774 ldsem_atomic_update 1 54774 NULL 119249+ldsem_atomic_update_54774 ldsem_atomic_update 1 54774 NULL
119250+xfs_rtallocate_extent_block_54791 xfs_rtallocate_extent_block 0 54791 NULL
112995+flexcop_device_kmalloc_54793 flexcop_device_kmalloc 1 54793 NULL 119251+flexcop_device_kmalloc_54793 flexcop_device_kmalloc 1 54793 NULL
112996+nfsd_write_54809 nfsd_write 6 54809 NULL 119252+nfsd_write_54809 nfsd_write 6 54809 NULL
112997+ar9287_dump_modal_eeprom_54814 ar9287_dump_modal_eeprom 3-2 54814 NULL 119253+ar9287_dump_modal_eeprom_54814 ar9287_dump_modal_eeprom 3-2 54814 NULL
112998+crypto_tfm_ctx_alignment_54815 crypto_tfm_ctx_alignment 0 54815 NULL nohasharray 119254+crypto_tfm_ctx_alignment_54815 crypto_tfm_ctx_alignment 0 54815 NULL nohasharray
112999+kvzalloc_54815 kvzalloc 1 54815 &crypto_tfm_ctx_alignment_54815 nohasharray 119255+kvzalloc_54815 kvzalloc 1 54815 &crypto_tfm_ctx_alignment_54815 nohasharray
113000+aes_decrypt_fail_read_54815 aes_decrypt_fail_read 3 54815 &kvzalloc_54815 119256+aes_decrypt_fail_read_54815 aes_decrypt_fail_read 3 54815 &kvzalloc_54815
113001+generic_perform_write_54832 generic_perform_write 3 54832 NULL 119257+generic_perform_write_54832 generic_perform_write 3-0 54832 NULL
113002+write_rio_54837 write_rio 3 54837 NULL 119258+write_rio_54837 write_rio 3 54837 NULL
113003+ext3_acl_from_disk_54839 ext3_acl_from_disk 2 54839 NULL nohasharray 119259+ext3_acl_from_disk_54839 ext3_acl_from_disk 2 54839 NULL nohasharray
113004+nouveau_engctx_create__54839 nouveau_engctx_create_ 8 54839 &ext3_acl_from_disk_54839 119260+nouveau_engctx_create__54839 nouveau_engctx_create_ 8 54839 &ext3_acl_from_disk_54839
113005+ll_layout_conf_54841 ll_layout_conf 0 54841 NULL
113006+ufx_ops_write_54848 ufx_ops_write 3 54848 NULL 119261+ufx_ops_write_54848 ufx_ops_write 3 54848 NULL
113007+printer_read_54851 printer_read 3 54851 NULL 119262+printer_read_54851 printer_read 3 54851 NULL
113008+alloc_ep_req_54860 alloc_ep_req 2 54860 NULL
113009+broadsheet_spiflash_rewrite_sector_54864 broadsheet_spiflash_rewrite_sector 2 54864 NULL 119263+broadsheet_spiflash_rewrite_sector_54864 broadsheet_spiflash_rewrite_sector 2 54864 NULL
113010+prism_build_supp_rates_54865 prism_build_supp_rates 0 54865 NULL 119264+prism_build_supp_rates_54865 prism_build_supp_rates 0 54865 NULL
119265+xfs_alloc_read_agfl_54879 xfs_alloc_read_agfl 0 54879 NULL
113011+iscsi_pool_init_54913 iscsi_pool_init 2-4 54913 NULL nohasharray 119266+iscsi_pool_init_54913 iscsi_pool_init 2-4 54913 NULL nohasharray
113012+kobject_set_name_vargs_54913 kobject_set_name_vargs 0 54913 &iscsi_pool_init_54913 119267+kobject_set_name_vargs_54913 kobject_set_name_vargs 0 54913 &iscsi_pool_init_54913
113013+btrfs_stack_chunk_num_stripes_54923 btrfs_stack_chunk_num_stripes 0 54923 NULL 119268+btrfs_stack_chunk_num_stripes_54923 btrfs_stack_chunk_num_stripes 0 54923 NULL
@@ -113028,8 +119283,11 @@ index 0000000..9529806
113028+crypto_ahash_setkey_55134 crypto_ahash_setkey 3 55134 NULL 119283+crypto_ahash_setkey_55134 crypto_ahash_setkey 3 55134 NULL
113029+filldir_55137 filldir 3 55137 NULL 119284+filldir_55137 filldir 3 55137 NULL
113030+ocfs2_truncate_file_55148 ocfs2_truncate_file 3 55148 NULL 119285+ocfs2_truncate_file_55148 ocfs2_truncate_file 3 55148 NULL
113031+npages_to_npools_55149 npages_to_npools 0-1 55149 NULL 119286+xfs_check_agi_freecount_55149 xfs_check_agi_freecount 0 55149 NULL nohasharray
119287+npages_to_npools_55149 npages_to_npools 0-1 55149 &xfs_check_agi_freecount_55149
113032+ieee80211_if_read_uapsd_queues_55150 ieee80211_if_read_uapsd_queues 3 55150 NULL 119288+ieee80211_if_read_uapsd_queues_55150 ieee80211_if_read_uapsd_queues 3 55150 NULL
119289+xfs_icsb_modify_counters_55156 xfs_icsb_modify_counters 0 55156 NULL
119290+gfs2_ri_update_55185 gfs2_ri_update 0 55185 NULL
113033+mtd_get_fact_prot_info_55186 mtd_get_fact_prot_info 0 55186 NULL 119291+mtd_get_fact_prot_info_55186 mtd_get_fact_prot_info 0 55186 NULL
113034+sel_write_relabel_55195 sel_write_relabel 3 55195 NULL 119292+sel_write_relabel_55195 sel_write_relabel 3 55195 NULL
113035+sched_feat_write_55202 sched_feat_write 3 55202 NULL 119293+sched_feat_write_55202 sched_feat_write 3 55202 NULL
@@ -113056,7 +119314,6 @@ index 0000000..9529806
113056+iwl_dbgfs_plcp_delta_read_55407 iwl_dbgfs_plcp_delta_read 3 55407 NULL 119314+iwl_dbgfs_plcp_delta_read_55407 iwl_dbgfs_plcp_delta_read 3 55407 NULL
113057+sysfs_chmod_file_55408 sysfs_chmod_file 0 55408 NULL 119315+sysfs_chmod_file_55408 sysfs_chmod_file 0 55408 NULL
113058+si476x_radio_read_rds_blckcnt_blob_55427 si476x_radio_read_rds_blckcnt_blob 3 55427 NULL 119316+si476x_radio_read_rds_blckcnt_blob_55427 si476x_radio_read_rds_blckcnt_blob 3 55427 NULL
113059+sysfs_sd_setattr_55437 sysfs_sd_setattr 0 55437 NULL
113060+__vxge_hw_channel_allocate_55462 __vxge_hw_channel_allocate 3 55462 NULL 119317+__vxge_hw_channel_allocate_55462 __vxge_hw_channel_allocate 3 55462 NULL
113061+cx23888_ir_rx_read_55473 cx23888_ir_rx_read 3 55473 NULL 119318+cx23888_ir_rx_read_55473 cx23888_ir_rx_read 3 55473 NULL
113062+snd_pcm_lib_write_55483 snd_pcm_lib_write 0-3 55483 NULL 119319+snd_pcm_lib_write_55483 snd_pcm_lib_write 0-3 55483 NULL
@@ -113064,6 +119321,7 @@ index 0000000..9529806
113064+batadv_tt_entries_55487 batadv_tt_entries 0-1 55487 NULL 119321+batadv_tt_entries_55487 batadv_tt_entries 0-1 55487 NULL
113065+ras_stride_increase_window_55501 ras_stride_increase_window 3 55501 NULL 119322+ras_stride_increase_window_55501 ras_stride_increase_window 3 55501 NULL
113066+tx_tx_done_int_template_read_55511 tx_tx_done_int_template_read 3 55511 NULL 119323+tx_tx_done_int_template_read_55511 tx_tx_done_int_template_read 3 55511 NULL
119324+xfs_btree_split_55515 xfs_btree_split 0 55515 NULL
113067+ea_get_55522 ea_get 3-0 55522 NULL 119325+ea_get_55522 ea_get 3-0 55522 NULL
113068+buffer_size_55534 buffer_size 0 55534 NULL 119326+buffer_size_55534 buffer_size 0 55534 NULL
113069+set_msr_interception_55538 set_msr_interception 2 55538 NULL 119327+set_msr_interception_55538 set_msr_interception 2 55538 NULL
@@ -113071,11 +119329,9 @@ index 0000000..9529806
113071+dgap_do_config_load_55548 dgap_do_config_load 2 55548 NULL 119329+dgap_do_config_load_55548 dgap_do_config_load 2 55548 NULL
113072+hash_ipport6_expire_55549 hash_ipport6_expire 4 55549 NULL 119330+hash_ipport6_expire_55549 hash_ipport6_expire 4 55549 NULL
113073+dm_stats_list_55551 dm_stats_list 4 55551 NULL 119331+dm_stats_list_55551 dm_stats_list 4 55551 NULL
113074+__vdev_disk_physio_55568 __vdev_disk_physio 4 55568 NULL
113075+add_partition_55588 add_partition 2 55588 NULL 119332+add_partition_55588 add_partition 2 55588 NULL
113076+kstrtou8_from_user_55599 kstrtou8_from_user 2 55599 NULL 119333+kstrtou8_from_user_55599 kstrtou8_from_user 2 55599 NULL
113077+SyS_keyctl_55602 SyS_keyctl 4 55602 NULL nohasharray 119334+SyS_keyctl_55602 SyS_keyctl 4 55602 NULL
113078+config_buf_55602 config_buf 0 55602 &SyS_keyctl_55602
113079+macvtap_put_user_55609 macvtap_put_user 4 55609 NULL 119335+macvtap_put_user_55609 macvtap_put_user 4 55609 NULL
113080+selinux_setprocattr_55611 selinux_setprocattr 4 55611 NULL 119336+selinux_setprocattr_55611 selinux_setprocattr 4 55611 NULL
113081+edge_tty_recv_55622 edge_tty_recv 3 55622 NULL 119337+edge_tty_recv_55622 edge_tty_recv 3 55622 NULL
@@ -113087,7 +119343,6 @@ index 0000000..9529806
113087+il_dbgfs_tx_queue_read_55668 il_dbgfs_tx_queue_read 3 55668 NULL 119343+il_dbgfs_tx_queue_read_55668 il_dbgfs_tx_queue_read 3 55668 NULL
113088+get_info_55681 get_info 3 55681 NULL 119344+get_info_55681 get_info 3 55681 NULL
113089+iwl_dbgfs_plcp_delta_write_55682 iwl_dbgfs_plcp_delta_write 3 55682 NULL 119345+iwl_dbgfs_plcp_delta_write_55682 iwl_dbgfs_plcp_delta_write 3 55682 NULL
113090+echo_big_lmm_get_55690 echo_big_lmm_get 0 55690 NULL
113091+genl_allocate_reserve_groups_55705 genl_allocate_reserve_groups 1 55705 NULL 119346+genl_allocate_reserve_groups_55705 genl_allocate_reserve_groups 1 55705 NULL
113092+pm8001_store_update_fw_55716 pm8001_store_update_fw 4 55716 NULL 119347+pm8001_store_update_fw_55716 pm8001_store_update_fw 4 55716 NULL
113093+ocfs2_lock_refcount_tree_55719 ocfs2_lock_refcount_tree 0 55719 NULL 119348+ocfs2_lock_refcount_tree_55719 ocfs2_lock_refcount_tree 0 55719 NULL
@@ -113117,6 +119372,7 @@ index 0000000..9529806
113117+btrfs_clone_55977 btrfs_clone 5-3 55977 NULL 119372+btrfs_clone_55977 btrfs_clone 5-3 55977 NULL
113118+wa_xfer_create_subset_sg_55992 wa_xfer_create_subset_sg 3-2 55992 NULL 119373+wa_xfer_create_subset_sg_55992 wa_xfer_create_subset_sg 3-2 55992 NULL
113119+nvme_alloc_iod_56027 nvme_alloc_iod 1-2 56027 NULL 119374+nvme_alloc_iod_56027 nvme_alloc_iod 1-2 56027 NULL
119375+usb_ocp_write_56047 usb_ocp_write 4 56047 NULL
113120+dccp_sendmsg_56058 dccp_sendmsg 4 56058 NULL 119376+dccp_sendmsg_56058 dccp_sendmsg 4 56058 NULL
113121+pscsi_get_bio_56103 pscsi_get_bio 1 56103 NULL 119377+pscsi_get_bio_56103 pscsi_get_bio 1 56103 NULL
113122+add_sysfs_param_56108 add_sysfs_param 0 56108 NULL 119378+add_sysfs_param_56108 add_sysfs_param 0 56108 NULL
@@ -113142,6 +119398,7 @@ index 0000000..9529806
113142+snd_rawmidi_read_56337 snd_rawmidi_read 3 56337 NULL 119398+snd_rawmidi_read_56337 snd_rawmidi_read 3 56337 NULL
113143+vxge_os_dma_malloc_async_56348 vxge_os_dma_malloc_async 3 56348 NULL 119399+vxge_os_dma_malloc_async_56348 vxge_os_dma_malloc_async 3 56348 NULL
113144+mite_device_bytes_transferred_56355 mite_device_bytes_transferred 0 56355 NULL 119400+mite_device_bytes_transferred_56355 mite_device_bytes_transferred 0 56355 NULL
119401+qd_get_56365 qd_get 0 56365 NULL
113145+iov_iter_copy_from_user_atomic_56368 iov_iter_copy_from_user_atomic 4-0 56368 NULL 119402+iov_iter_copy_from_user_atomic_56368 iov_iter_copy_from_user_atomic 4-0 56368 NULL
113146+dev_read_56369 dev_read 3 56369 NULL 119403+dev_read_56369 dev_read 3 56369 NULL
113147+ath10k_read_simulate_fw_crash_56371 ath10k_read_simulate_fw_crash 3 56371 NULL 119404+ath10k_read_simulate_fw_crash_56371 ath10k_read_simulate_fw_crash 3 56371 NULL
@@ -113150,18 +119407,21 @@ index 0000000..9529806
113150+do_get_write_access_56410 do_get_write_access 0 56410 NULL 119407+do_get_write_access_56410 do_get_write_access 0 56410 NULL
113151+store_msg_56417 store_msg 3 56417 NULL 119408+store_msg_56417 store_msg 3 56417 NULL
113152+pppol2tp_sendmsg_56420 pppol2tp_sendmsg 4 56420 NULL 119409+pppol2tp_sendmsg_56420 pppol2tp_sendmsg 4 56420 NULL
119410+l2cap_segment_le_sdu_56426 l2cap_segment_le_sdu 4 56426 NULL
113153+fl_create_56435 fl_create 5 56435 NULL 119411+fl_create_56435 fl_create 5 56435 NULL
113154+gnttab_map_56439 gnttab_map 2 56439 NULL 119412+gnttab_map_56439 gnttab_map 2 56439 NULL
113155+cx231xx_init_isoc_56453 cx231xx_init_isoc 3-2-4 56453 NULL 119413+cx231xx_init_isoc_56453 cx231xx_init_isoc 3-2-4 56453 NULL
113156+set_connectable_56458 set_connectable 4 56458 NULL 119414+set_connectable_56458 set_connectable 4 56458 NULL
113157+osd_req_list_partition_objects_56464 osd_req_list_partition_objects 5 56464 NULL 119415+osd_req_list_partition_objects_56464 osd_req_list_partition_objects 5 56464 NULL
113158+putused_user_56467 putused_user 3 56467 NULL 119416+putused_user_56467 putused_user 3 56467 NULL
119417+ocfs2_zero_extend_range_56468 ocfs2_zero_extend_range 3-2 56468 NULL
113159+lbs_rdmac_write_56471 lbs_rdmac_write 3 56471 NULL 119418+lbs_rdmac_write_56471 lbs_rdmac_write 3 56471 NULL
113160+calc_linear_pos_56472 calc_linear_pos 0-3 56472 NULL 119419+calc_linear_pos_56472 calc_linear_pos 0-3 56472 NULL
113161+crypto_shash_alignmask_56486 crypto_shash_alignmask 0 56486 NULL 119420+crypto_shash_alignmask_56486 crypto_shash_alignmask 0 56486 NULL
113162+ieee80211_rx_mgmt_probe_beacon_56491 ieee80211_rx_mgmt_probe_beacon 3 56491 NULL 119421+ieee80211_rx_mgmt_probe_beacon_56491 ieee80211_rx_mgmt_probe_beacon 3 56491 NULL
119422+memblock_virt_alloc_56501 memblock_virt_alloc 1 56501 NULL
113163+init_map_ip_56508 init_map_ip 5 56508 NULL 119423+init_map_ip_56508 init_map_ip 5 56508 NULL
113164+lustre_posix_acl_xattr_reduce_space_56512 lustre_posix_acl_xattr_reduce_space 3 56512 NULL 119424+lustre_posix_acl_xattr_reduce_space_56512 lustre_posix_acl_xattr_reduce_space 3-0-2 56512 NULL
113165+cfg80211_connect_result_56515 cfg80211_connect_result 4-6 56515 NULL 119425+cfg80211_connect_result_56515 cfg80211_connect_result 4-6 56515 NULL
113166+ip_options_get_56538 ip_options_get 4 56538 NULL 119426+ip_options_get_56538 ip_options_get 4 56538 NULL
113167+ll_wr_track_id_56544 ll_wr_track_id 2 56544 NULL 119427+ll_wr_track_id_56544 ll_wr_track_id 2 56544 NULL
@@ -113179,11 +119439,13 @@ index 0000000..9529806
113179+dvb_ringbuffer_read_user_56702 dvb_ringbuffer_read_user 3-0 56702 NULL 119439+dvb_ringbuffer_read_user_56702 dvb_ringbuffer_read_user 3-0 56702 NULL
113180+sta_flags_read_56710 sta_flags_read 3 56710 NULL 119440+sta_flags_read_56710 sta_flags_read 3 56710 NULL
113181+ipv6_getsockopt_sticky_56711 ipv6_getsockopt_sticky 5 56711 NULL 119441+ipv6_getsockopt_sticky_56711 ipv6_getsockopt_sticky 5 56711 NULL
119442+xfs_btree_decrement_56718 xfs_btree_decrement 0 56718 NULL
113182+__wa_xfer_setup_segs_56725 __wa_xfer_setup_segs 2 56725 NULL 119443+__wa_xfer_setup_segs_56725 __wa_xfer_setup_segs 2 56725 NULL
113183+__copy_from_user_ll_56738 __copy_from_user_ll 0-3 56738 NULL 119444+__copy_from_user_ll_56738 __copy_from_user_ll 0-3 56738 NULL
113184+drm_agp_bind_pages_56748 drm_agp_bind_pages 3 56748 NULL 119445+drm_agp_bind_pages_56748 drm_agp_bind_pages 3 56748 NULL
113185+btrfsic_map_block_56751 btrfsic_map_block 2 56751 NULL 119446+btrfsic_map_block_56751 btrfsic_map_block 2 56751 NULL
113186+ttm_alloc_new_pages_56792 ttm_alloc_new_pages 5 56792 NULL 119447+ttm_alloc_new_pages_56792 ttm_alloc_new_pages 5 56792 NULL
119448+ion_ioctl_56806 ion_ioctl 2 56806 NULL
113187+do_syslog_56807 do_syslog 3 56807 NULL 119449+do_syslog_56807 do_syslog 3 56807 NULL
113188+mtdchar_write_56831 mtdchar_write 3 56831 NULL 119450+mtdchar_write_56831 mtdchar_write 3 56831 NULL
113189+snd_rawmidi_kernel_write1_56847 snd_rawmidi_kernel_write1 4-0 56847 NULL 119451+snd_rawmidi_kernel_write1_56847 snd_rawmidi_kernel_write1 4-0 56847 NULL
@@ -113193,10 +119455,10 @@ index 0000000..9529806
113193+debug_debug3_read_56894 debug_debug3_read 3 56894 NULL 119455+debug_debug3_read_56894 debug_debug3_read 3 56894 NULL
113194+batadv_tt_update_changes_56895 batadv_tt_update_changes 3 56895 NULL 119456+batadv_tt_update_changes_56895 batadv_tt_update_changes 3 56895 NULL
113195+hfsplus_find_cat_56899 hfsplus_find_cat 0 56899 NULL 119457+hfsplus_find_cat_56899 hfsplus_find_cat 0 56899 NULL
113196+hfsplus_setxattr_56902 hfsplus_setxattr 4 56902 NULL
113197+strcspn_56913 strcspn 0 56913 NULL 119458+strcspn_56913 strcspn 0 56913 NULL
113198+__kfifo_out_56927 __kfifo_out 0-3 56927 NULL 119459+__kfifo_out_56927 __kfifo_out 0-3 56927 NULL
113199+journal_init_revoke_56933 journal_init_revoke 2 56933 NULL 119460+journal_init_revoke_56933 journal_init_revoke 2 56933 NULL
119461+xfs_alloc_ag_vextent_56943 xfs_alloc_ag_vextent 0 56943 NULL
113200+nouveau_xtensa_create__56952 nouveau_xtensa_create_ 8 56952 NULL 119462+nouveau_xtensa_create__56952 nouveau_xtensa_create_ 8 56952 NULL
113201+diva_get_driver_info_56967 diva_get_driver_info 0 56967 NULL 119463+diva_get_driver_info_56967 diva_get_driver_info 0 56967 NULL
113202+nouveau_device_create__56984 nouveau_device_create_ 6 56984 NULL 119464+nouveau_device_create__56984 nouveau_device_create_ 6 56984 NULL
@@ -113215,18 +119477,19 @@ index 0000000..9529806
113215+altera_get_note_57099 altera_get_note 6 57099 NULL 119477+altera_get_note_57099 altera_get_note 6 57099 NULL
113216+hpfs_readpages_57106 hpfs_readpages 4 57106 NULL 119478+hpfs_readpages_57106 hpfs_readpages 4 57106 NULL
113217+crypto_compress_ctxsize_57109 crypto_compress_ctxsize 0 57109 NULL 119479+crypto_compress_ctxsize_57109 crypto_compress_ctxsize 0 57109 NULL
113218+sysfs_write_file_57116 sysfs_write_file 3 57116 NULL
113219+cipso_v4_gentag_loc_57119 cipso_v4_gentag_loc 0 57119 NULL 119480+cipso_v4_gentag_loc_57119 cipso_v4_gentag_loc 0 57119 NULL
113220+rds_ib_sub_signaled_57136 rds_ib_sub_signaled 2 57136 NULL nohasharray 119481+rds_ib_sub_signaled_57136 rds_ib_sub_signaled 2 57136 NULL nohasharray
113221+nl80211_send_deauth_57136 nl80211_send_deauth 4 57136 &rds_ib_sub_signaled_57136 nohasharray 119482+nl80211_send_deauth_57136 nl80211_send_deauth 4 57136 &rds_ib_sub_signaled_57136 nohasharray
113222+ima_show_htable_value_57136 ima_show_htable_value 2 57136 &nl80211_send_deauth_57136 119483+ima_show_htable_value_57136 ima_show_htable_value 2 57136 &nl80211_send_deauth_57136
113223+snd_sonicvibes_getdmac_57140 snd_sonicvibes_getdmac 0 57140 NULL 119484+snd_sonicvibes_getdmac_57140 snd_sonicvibes_getdmac 0 57140 NULL
119485+_iwl_dbgfs_bf_params_write_57141 _iwl_dbgfs_bf_params_write 3 57141 NULL
113224+udl_prime_create_57159 udl_prime_create 2 57159 NULL 119486+udl_prime_create_57159 udl_prime_create 2 57159 NULL
113225+stk_prepare_sio_buffers_57168 stk_prepare_sio_buffers 2 57168 NULL 119487+stk_prepare_sio_buffers_57168 stk_prepare_sio_buffers 2 57168 NULL
113226+rx_hw_stuck_read_57179 rx_hw_stuck_read 3 57179 NULL 119488+rx_hw_stuck_read_57179 rx_hw_stuck_read 3 57179 NULL
113227+hash_netnet6_expire_57191 hash_netnet6_expire 4 57191 NULL 119489+hash_netnet6_expire_57191 hash_netnet6_expire 4 57191 NULL
113228+tt3650_ci_msg_57219 tt3650_ci_msg 4 57219 NULL 119490+tt3650_ci_msg_57219 tt3650_ci_msg 4 57219 NULL
113229+dma_fifo_alloc_57236 dma_fifo_alloc 5-3-2 57236 NULL 119491+dma_fifo_alloc_57236 dma_fifo_alloc 5-3-2 57236 NULL
119492+flush_space_57241 flush_space 0 57241 NULL
113230+rsxx_cram_write_57244 rsxx_cram_write 3 57244 NULL 119493+rsxx_cram_write_57244 rsxx_cram_write 3 57244 NULL
113231+ieee80211_if_fmt_tsf_57249 ieee80211_if_fmt_tsf 3 57249 NULL 119494+ieee80211_if_fmt_tsf_57249 ieee80211_if_fmt_tsf 3 57249 NULL
113232+oprofilefs_ulong_from_user_57251 oprofilefs_ulong_from_user 3 57251 NULL 119495+oprofilefs_ulong_from_user_57251 oprofilefs_ulong_from_user 3 57251 NULL
@@ -113235,7 +119498,8 @@ index 0000000..9529806
113235+pstore_file_read_57288 pstore_file_read 3 57288 NULL 119498+pstore_file_read_57288 pstore_file_read 3 57288 NULL
113236+snd_pcm_read_57289 snd_pcm_read 3 57289 NULL 119499+snd_pcm_read_57289 snd_pcm_read 3 57289 NULL
113237+ftdi_elan_write_57309 ftdi_elan_write 3 57309 NULL 119500+ftdi_elan_write_57309 ftdi_elan_write 3 57309 NULL
113238+write_file_regval_57313 write_file_regval 3 57313 NULL 119501+xfs_iread_57313 xfs_iread 0 57313 NULL nohasharray
119502+write_file_regval_57313 write_file_regval 3 57313 &xfs_iread_57313
113239+__mxt_write_reg_57326 __mxt_write_reg 3 57326 NULL 119503+__mxt_write_reg_57326 __mxt_write_reg 3 57326 NULL
113240+usblp_read_57342 usblp_read 3 57342 NULL 119504+usblp_read_57342 usblp_read 3 57342 NULL
113241+print_devstats_dot11RTSFailureCount_57347 print_devstats_dot11RTSFailureCount 3 57347 NULL 119505+print_devstats_dot11RTSFailureCount_57347 print_devstats_dot11RTSFailureCount 3 57347 NULL
@@ -113253,7 +119517,8 @@ index 0000000..9529806
113253+bnad_debugfs_write_regwr_57500 bnad_debugfs_write_regwr 3 57500 NULL 119517+bnad_debugfs_write_regwr_57500 bnad_debugfs_write_regwr 3 57500 NULL
113254+skb_headlen_57501 skb_headlen 0 57501 NULL 119518+skb_headlen_57501 skb_headlen 0 57501 NULL
113255+copy_in_user_57502 copy_in_user 3 57502 NULL 119519+copy_in_user_57502 copy_in_user 3 57502 NULL
113256+ckhdid_printf_57505 ckhdid_printf 2 57505 NULL 119520+ckhdid_printf_57505 ckhdid_printf 2 57505 NULL nohasharray
119521+gfs2_quota_hold_57505 gfs2_quota_hold 0 57505 &ckhdid_printf_57505
113257+init_tag_map_57515 init_tag_map 3 57515 NULL 119522+init_tag_map_57515 init_tag_map 3 57515 NULL
113258+il_dbgfs_force_reset_read_57517 il_dbgfs_force_reset_read 3 57517 NULL nohasharray 119523+il_dbgfs_force_reset_read_57517 il_dbgfs_force_reset_read 3 57517 NULL nohasharray
113259+wil_read_file_ssid_57517 wil_read_file_ssid 3 57517 &il_dbgfs_force_reset_read_57517 119524+wil_read_file_ssid_57517 wil_read_file_ssid 3 57517 &il_dbgfs_force_reset_read_57517
@@ -113271,6 +119536,7 @@ index 0000000..9529806
113271+tx_tx_retry_template_read_57623 tx_tx_retry_template_read 3 57623 NULL 119536+tx_tx_retry_template_read_57623 tx_tx_retry_template_read 3 57623 NULL
113272+sisusbcon_putcs_57630 sisusbcon_putcs 3 57630 NULL 119537+sisusbcon_putcs_57630 sisusbcon_putcs 3 57630 NULL
113273+mem_read_57631 mem_read 3 57631 NULL 119538+mem_read_57631 mem_read 3 57631 NULL
119539+xfs_alloc_ag_vextent_near_57653 xfs_alloc_ag_vextent_near 0 57653 NULL
113274+r3964_write_57662 r3964_write 4 57662 NULL 119540+r3964_write_57662 r3964_write 4 57662 NULL
113275+proc_ns_readlink_57664 proc_ns_readlink 3 57664 NULL 119541+proc_ns_readlink_57664 proc_ns_readlink 3 57664 NULL
113276+__lgwrite_57669 __lgwrite 4 57669 NULL 119542+__lgwrite_57669 __lgwrite 4 57669 NULL
@@ -113283,23 +119549,28 @@ index 0000000..9529806
113283+ieee80211_if_fmt_dot11MeshHWMPpreqMinInterval_57762 ieee80211_if_fmt_dot11MeshHWMPpreqMinInterval 3 57762 NULL 119549+ieee80211_if_fmt_dot11MeshHWMPpreqMinInterval_57762 ieee80211_if_fmt_dot11MeshHWMPpreqMinInterval 3 57762 NULL
113284+SYSC_process_vm_writev_57776 SYSC_process_vm_writev 3-5 57776 NULL 119550+SYSC_process_vm_writev_57776 SYSC_process_vm_writev 3-5 57776 NULL
113285+apei_exec_collect_resources_57788 apei_exec_collect_resources 0 57788 NULL 119551+apei_exec_collect_resources_57788 apei_exec_collect_resources 0 57788 NULL
119552+security_inode_unlink_57791 security_inode_unlink 0 57791 NULL
113286+ld2_57794 ld2 0 57794 NULL 119553+ld2_57794 ld2 0 57794 NULL
113287+ivtv_read_57796 ivtv_read 3 57796 NULL 119554+ivtv_read_57796 ivtv_read 3 57796 NULL
119555+ion_test_ioctl_57799 ion_test_ioctl 2 57799 NULL
113288+bfad_debugfs_read_regrd_57830 bfad_debugfs_read_regrd 3 57830 NULL 119556+bfad_debugfs_read_regrd_57830 bfad_debugfs_read_regrd 3 57830 NULL
113289+copy_to_user_57835 copy_to_user 3-0 57835 NULL 119557+copy_to_user_57835 copy_to_user 3-0 57835 NULL
113290+flash_read_57843 flash_read 3 57843 NULL 119558+xfs_rtpick_extent_57843 xfs_rtpick_extent 0 57843 NULL nohasharray
119559+flash_read_57843 flash_read 3 57843 &xfs_rtpick_extent_57843
113291+kiblnd_create_tx_pool_57846 kiblnd_create_tx_pool 2 57846 NULL 119560+kiblnd_create_tx_pool_57846 kiblnd_create_tx_pool 2 57846 NULL
119561+radeon_ttm_gtt_read_57879 radeon_ttm_gtt_read 3 57879 NULL
113292+xt_alloc_table_info_57903 xt_alloc_table_info 1 57903 NULL 119562+xt_alloc_table_info_57903 xt_alloc_table_info 1 57903 NULL
113293+iio_read_first_n_kfifo_57910 iio_read_first_n_kfifo 2 57910 NULL 119563+iio_read_first_n_kfifo_57910 iio_read_first_n_kfifo 2 57910 NULL
119564+ll_xattr_find_get_lock_57912 ll_xattr_find_get_lock 0 57912 NULL
113294+memcg_caches_array_size_57918 memcg_caches_array_size 0-1 57918 NULL 119565+memcg_caches_array_size_57918 memcg_caches_array_size 0-1 57918 NULL
113295+twl_i2c_write_57923 twl_i2c_write 3-4 57923 NULL 119566+twl_i2c_write_57923 twl_i2c_write 3-4 57923 NULL
113296+__snd_gf1_look16_57925 __snd_gf1_look16 0 57925 NULL 119567+__snd_gf1_look16_57925 __snd_gf1_look16 0 57925 NULL
113297+sel_read_handle_unknown_57933 sel_read_handle_unknown 3 57933 NULL 119568+sel_read_handle_unknown_57933 sel_read_handle_unknown 3 57933 NULL
119569+xfs_inode_item_format_convert_57937 xfs_inode_item_format_convert 0 57937 NULL
113298+xfs_mru_cache_create_57943 xfs_mru_cache_create 3 57943 NULL 119570+xfs_mru_cache_create_57943 xfs_mru_cache_create 3 57943 NULL
113299+key_algorithm_read_57946 key_algorithm_read 3 57946 NULL 119571+key_algorithm_read_57946 key_algorithm_read 3 57946 NULL
113300+ip_set_alloc_57953 ip_set_alloc 1 57953 NULL nohasharray 119572+ip_set_alloc_57953 ip_set_alloc 1 57953 NULL nohasharray
113301+ioat3_dca_count_dca_slots_57953 ioat3_dca_count_dca_slots 0 57953 &ip_set_alloc_57953 119573+ioat3_dca_count_dca_slots_57953 ioat3_dca_count_dca_slots 0 57953 &ip_set_alloc_57953
113302+do_rx_dma_57996 do_rx_dma 5 57996 NULL
113303+rx_reset_counter_read_58001 rx_reset_counter_read 3 58001 NULL 119574+rx_reset_counter_read_58001 rx_reset_counter_read 3 58001 NULL
113304+iwl_dbgfs_ucode_rx_stats_read_58023 iwl_dbgfs_ucode_rx_stats_read 3 58023 NULL 119575+iwl_dbgfs_ucode_rx_stats_read_58023 iwl_dbgfs_ucode_rx_stats_read 3 58023 NULL
113305+io_playback_transfer_58030 io_playback_transfer 4 58030 NULL 119576+io_playback_transfer_58030 io_playback_transfer 4 58030 NULL
@@ -113309,8 +119580,12 @@ index 0000000..9529806
113309+cm4040_write_58079 cm4040_write 3 58079 NULL 119580+cm4040_write_58079 cm4040_write 3 58079 NULL
113310+ipv6_flowlabel_opt_58135 ipv6_flowlabel_opt 3 58135 NULL nohasharray 119581+ipv6_flowlabel_opt_58135 ipv6_flowlabel_opt 3 58135 NULL nohasharray
113311+slhc_init_58135 slhc_init 1-2 58135 &ipv6_flowlabel_opt_58135 119582+slhc_init_58135 slhc_init 1-2 58135 &ipv6_flowlabel_opt_58135
119583+rd_build_prot_space_58137 rd_build_prot_space 2 58137 NULL
119584+xfs_bmap_add_extent_delay_real_58151 xfs_bmap_add_extent_delay_real 0 58151 NULL
119585+xfs_btree_update_58167 xfs_btree_update 0 58167 NULL
113312+garmin_write_bulk_58191 garmin_write_bulk 3 58191 NULL 119586+garmin_write_bulk_58191 garmin_write_bulk 3 58191 NULL
113313+ieee80211_if_fmt_flags_58205 ieee80211_if_fmt_flags 3 58205 NULL 119587+ieee80211_if_fmt_flags_58205 ieee80211_if_fmt_flags 3 58205 NULL
119588+i40evf_allocate_virt_mem_d_58210 i40evf_allocate_virt_mem_d 3 58210 NULL
113314+btrfsic_create_link_to_next_block_58246 btrfsic_create_link_to_next_block 4 58246 NULL 119589+btrfsic_create_link_to_next_block_58246 btrfsic_create_link_to_next_block 4 58246 NULL
113315+read_file_debug_58256 read_file_debug 3 58256 NULL 119590+read_file_debug_58256 read_file_debug 3 58256 NULL
113316+osc_max_dirty_mb_seq_write_58263 osc_max_dirty_mb_seq_write 3 58263 NULL 119591+osc_max_dirty_mb_seq_write_58263 osc_max_dirty_mb_seq_write 3 58263 NULL
@@ -113329,17 +119604,19 @@ index 0000000..9529806
113329+_drbd_md_sync_page_io_58403 _drbd_md_sync_page_io 6 58403 NULL 119604+_drbd_md_sync_page_io_58403 _drbd_md_sync_page_io 6 58403 NULL
113330+kvm_mmu_write_protect_pt_masked_58406 kvm_mmu_write_protect_pt_masked 3 58406 NULL nohasharray 119605+kvm_mmu_write_protect_pt_masked_58406 kvm_mmu_write_protect_pt_masked 3 58406 NULL nohasharray
113331+idetape_pad_zeros_58406 idetape_pad_zeros 2 58406 &kvm_mmu_write_protect_pt_masked_58406 119606+idetape_pad_zeros_58406 idetape_pad_zeros 2 58406 &kvm_mmu_write_protect_pt_masked_58406
119607+xfs_btree_get_rec_58410 xfs_btree_get_rec 0 58410 NULL
113332+i2400m_pld_size_58415 i2400m_pld_size 0 58415 NULL 119608+i2400m_pld_size_58415 i2400m_pld_size 0 58415 NULL
113333+capabilities_read_58457 capabilities_read 3 58457 NULL 119609+capabilities_read_58457 capabilities_read 3 58457 NULL
119610+usnic_vnic_get_resources_58462 usnic_vnic_get_resources 3 58462 NULL
113334+lpfc_idiag_baracc_read_58466 lpfc_idiag_baracc_read 3 58466 NULL nohasharray 119611+lpfc_idiag_baracc_read_58466 lpfc_idiag_baracc_read 3 58466 NULL nohasharray
113335+compat_do_ipt_set_ctl_58466 compat_do_ipt_set_ctl 4 58466 &lpfc_idiag_baracc_read_58466 119612+compat_do_ipt_set_ctl_58466 compat_do_ipt_set_ctl 4 58466 &lpfc_idiag_baracc_read_58466
113336+nv_rd08_58472 nv_rd08 0 58472 NULL 119613+nv_rd08_58472 nv_rd08 0 58472 NULL
113337+acpi_tables_sysfs_init_58477 acpi_tables_sysfs_init 0 58477 NULL 119614+acpi_tables_sysfs_init_58477 acpi_tables_sysfs_init 0 58477 NULL
113338+snd_gf1_read_addr_58483 snd_gf1_read_addr 0 58483 NULL 119615+snd_gf1_read_addr_58483 snd_gf1_read_addr 0 58483 NULL
113339+snd_rme96_capture_copy_58484 snd_rme96_capture_copy 5 58484 NULL 119616+snd_rme96_capture_copy_58484 snd_rme96_capture_copy 5 58484 NULL
113340+btrfs_cont_expand_58498 btrfs_cont_expand 2-3 58498 NULL 119617+btrfs_cont_expand_58498 btrfs_cont_expand 0-2-3 58498 NULL
119618+gfs2_dir_get_new_buffer_58509 gfs2_dir_get_new_buffer 0 58509 NULL
113341+rndis_add_response_58544 rndis_add_response 2 58544 NULL 119619+rndis_add_response_58544 rndis_add_response 2 58544 NULL
113342+ldlm_srv_pool_shrink_58554 ldlm_srv_pool_shrink 0 58554 NULL
113343+wep_decrypt_fail_read_58567 wep_decrypt_fail_read 3 58567 NULL 119620+wep_decrypt_fail_read_58567 wep_decrypt_fail_read 3 58567 NULL
113344+scnprint_mac_oui_58578 scnprint_mac_oui 3-0 58578 NULL 119621+scnprint_mac_oui_58578 scnprint_mac_oui 3-0 58578 NULL
113345+get_rhf_errstring_58582 get_rhf_errstring 3 58582 NULL 119622+get_rhf_errstring_58582 get_rhf_errstring 3 58582 NULL
@@ -113349,6 +119626,7 @@ index 0000000..9529806
113349+ecryptfs_write_end_58594 ecryptfs_write_end 5-3 58594 NULL 119626+ecryptfs_write_end_58594 ecryptfs_write_end 5-3 58594 NULL
113350+radeon_bo_size_58606 radeon_bo_size 0 58606 NULL 119627+radeon_bo_size_58606 radeon_bo_size 0 58606 NULL
113351+skb_copy_to_page_nocache_58624 skb_copy_to_page_nocache 6 58624 NULL 119628+skb_copy_to_page_nocache_58624 skb_copy_to_page_nocache 6 58624 NULL
119629+filemap_fdatawrite_range_58630 filemap_fdatawrite_range 0 58630 NULL
113352+tx_tx_start_fw_gen_read_58648 tx_tx_start_fw_gen_read 3 58648 NULL 119630+tx_tx_start_fw_gen_read_58648 tx_tx_start_fw_gen_read 3 58648 NULL
113353+iwl_dbgfs_rx_handlers_write_58655 iwl_dbgfs_rx_handlers_write 3 58655 NULL 119631+iwl_dbgfs_rx_handlers_write_58655 iwl_dbgfs_rx_handlers_write 3 58655 NULL
113354+find_zero_58685 find_zero 0-1 58685 NULL 119632+find_zero_58685 find_zero 0-1 58685 NULL
@@ -113370,10 +119648,11 @@ index 0000000..9529806
113370+lprocfs_wr_pinger_recov_58914 lprocfs_wr_pinger_recov 3 58914 NULL 119648+lprocfs_wr_pinger_recov_58914 lprocfs_wr_pinger_recov 3 58914 NULL
113371+print_devstats_dot11FCSErrorCount_58919 print_devstats_dot11FCSErrorCount 3 58919 NULL 119649+print_devstats_dot11FCSErrorCount_58919 print_devstats_dot11FCSErrorCount 3 58919 NULL
113372+pipeline_cs_rx_packet_out_read_58926 pipeline_cs_rx_packet_out_read 3 58926 NULL 119650+pipeline_cs_rx_packet_out_read_58926 pipeline_cs_rx_packet_out_read 3 58926 NULL
113373+sptlrpc_import_sec_adapt_58948 sptlrpc_import_sec_adapt 0 58948 NULL 119651+xfs_bmap_read_extents_58936 xfs_bmap_read_extents 0 58936 NULL
113374+wait_table_hash_nr_entries_58962 wait_table_hash_nr_entries 0 58962 NULL 119652+wait_table_hash_nr_entries_58962 wait_table_hash_nr_entries 0 58962 NULL
113375+ieee80211_if_fmt_dot11MeshHWMPactivePathToRootTimeout_58965 ieee80211_if_fmt_dot11MeshHWMPactivePathToRootTimeout 3 58965 NULL 119653+ieee80211_if_fmt_dot11MeshHWMPactivePathToRootTimeout_58965 ieee80211_if_fmt_dot11MeshHWMPactivePathToRootTimeout 3 58965 NULL
113376+crypto_aead_ivsize_58970 crypto_aead_ivsize 0 58970 NULL 119654+crypto_aead_ivsize_58970 crypto_aead_ivsize 0 58970 NULL
119655+__mem_cgroup_try_charge_58976 __mem_cgroup_try_charge 0 58976 NULL
113377+init_list_set_59005 init_list_set 3 59005 NULL 119656+init_list_set_59005 init_list_set 3 59005 NULL
113378+ep_write_59008 ep_write 3 59008 NULL 119657+ep_write_59008 ep_write 3 59008 NULL
113379+lpfc_idiag_baracc_write_59014 lpfc_idiag_baracc_write 3 59014 NULL 119658+lpfc_idiag_baracc_write_59014 lpfc_idiag_baracc_write 3 59014 NULL
@@ -113382,32 +119661,34 @@ index 0000000..9529806
113382+selinux_transaction_write_59038 selinux_transaction_write 3 59038 NULL 119661+selinux_transaction_write_59038 selinux_transaction_write 3 59038 NULL
113383+crypto_aead_reqsize_59039 crypto_aead_reqsize 0 59039 NULL 119662+crypto_aead_reqsize_59039 crypto_aead_reqsize 0 59039 NULL
113384+regmap_bulk_write_59049 regmap_bulk_write 2-4 59049 NULL 119663+regmap_bulk_write_59049 regmap_bulk_write 2-4 59049 NULL
113385+sysfs_link_sibling_59078 sysfs_link_sibling 0 59078 NULL
113386+mmc_sd_num_wr_blocks_59112 mmc_sd_num_wr_blocks 0 59112 NULL 119664+mmc_sd_num_wr_blocks_59112 mmc_sd_num_wr_blocks 0 59112 NULL
113387+scsi_io_completion_59122 scsi_io_completion 2 59122 NULL 119665+scsi_io_completion_59122 scsi_io_completion 2 59122 NULL nohasharray
119666+sta_tx_latency_stat_table_59122 sta_tx_latency_stat_table 0-4-5 59122 &scsi_io_completion_59122
113388+nfc_llcp_send_i_frame_59130 nfc_llcp_send_i_frame 3 59130 NULL 119667+nfc_llcp_send_i_frame_59130 nfc_llcp_send_i_frame 3 59130 NULL
113389+print_devstats_dot11RTSSuccessCount_59145 print_devstats_dot11RTSSuccessCount 3 59145 NULL nohasharray 119668+print_devstats_dot11RTSSuccessCount_59145 print_devstats_dot11RTSSuccessCount 3 59145 NULL nohasharray
113390+framebuffer_alloc_59145 framebuffer_alloc 1 59145 &print_devstats_dot11RTSSuccessCount_59145 119669+framebuffer_alloc_59145 framebuffer_alloc 1 59145 &print_devstats_dot11RTSSuccessCount_59145
113391+radeon_compat_ioctl_59150 radeon_compat_ioctl 2 59150 NULL 119670+radeon_compat_ioctl_59150 radeon_compat_ioctl 2 59150 NULL
113392+pvr2_hdw_report_clients_59152 pvr2_hdw_report_clients 3 59152 NULL 119671+pvr2_hdw_report_clients_59152 pvr2_hdw_report_clients 3 59152 NULL
113393+md_getxattr_59161 md_getxattr 0 59161 NULL
113394+ksize_59176 ksize 0 59176 NULL 119672+ksize_59176 ksize 0 59176 NULL
113395+setup_window_59178 setup_window 4-2-5-7 59178 NULL 119673+setup_window_59178 setup_window 4-2-5-7 59178 NULL
113396+ocfs2_move_extent_59187 ocfs2_move_extent 2-5 59187 NULL 119674+ocfs2_move_extent_59187 ocfs2_move_extent 2-5 59187 NULL
119675+xfs_ialloc_next_rec_59193 xfs_ialloc_next_rec 0 59193 NULL
113397+xfs_iext_realloc_indirect_59211 xfs_iext_realloc_indirect 2 59211 NULL 119676+xfs_iext_realloc_indirect_59211 xfs_iext_realloc_indirect 2 59211 NULL
113398+check_mapped_selector_name_59216 check_mapped_selector_name 5 59216 NULL 119677+check_mapped_selector_name_59216 check_mapped_selector_name 5 59216 NULL
113399+dt3155_read_59226 dt3155_read 3 59226 NULL 119678+dt3155_read_59226 dt3155_read 3 59226 NULL
113400+paging64_gpte_to_gfn_lvl_59229 paging64_gpte_to_gfn_lvl 0-1-2 59229 NULL 119679+paging64_gpte_to_gfn_lvl_59229 paging64_gpte_to_gfn_lvl 0-1-2 59229 NULL
113401+tty_prepare_flip_string_flags_59240 tty_prepare_flip_string_flags 4 59240 NULL
113402+nla_len_59258 nla_len 0 59258 NULL 119680+nla_len_59258 nla_len 0 59258 NULL
113403+drbd_bm_write_page_59290 drbd_bm_write_page 2 59290 NULL 119681+drbd_bm_write_page_59290 drbd_bm_write_page 2 59290 NULL
113404+btrfs_insert_dir_item_59304 btrfs_insert_dir_item 4 59304 NULL 119682+btrfs_insert_dir_item_59304 btrfs_insert_dir_item 4 59304 NULL
119683+xfs_iformat_fork_59312 xfs_iformat_fork 0 59312 NULL
113405+fd_copyout_59323 fd_copyout 3 59323 NULL 119684+fd_copyout_59323 fd_copyout 3 59323 NULL
113406+read_9287_modal_eeprom_59327 read_9287_modal_eeprom 3 59327 NULL 119685+read_9287_modal_eeprom_59327 read_9287_modal_eeprom 3 59327 NULL
113407+rx_defrag_in_process_called_read_59338 rx_defrag_in_process_called_read 3 59338 NULL 119686+rx_defrag_in_process_called_read_59338 rx_defrag_in_process_called_read 3 59338 NULL
113408+xfs_attrmulti_attr_set_59346 xfs_attrmulti_attr_set 4 59346 NULL 119687+xfs_attrmulti_attr_set_59346 xfs_attrmulti_attr_set 4 59346 NULL nohasharray
119688+xfs_alloc_lookup_le_59346 xfs_alloc_lookup_le 0 59346 &xfs_attrmulti_attr_set_59346
113409+__map_request_59350 __map_request 0 59350 NULL 119689+__map_request_59350 __map_request 0 59350 NULL
113410+f2fs_fallocate_59377 f2fs_fallocate 3-4 59377 NULL 119690+gfs2_quota_lock_check_59353 gfs2_quota_lock_check 0 59353 NULL
119691+f2fs_fallocate_59377 f2fs_fallocate 4-3 59377 NULL
113411+pvr2_debugifc_print_info_59380 pvr2_debugifc_print_info 3 59380 NULL 119692+pvr2_debugifc_print_info_59380 pvr2_debugifc_print_info 3 59380 NULL
113412+journal_init_dev_59384 journal_init_dev 5 59384 NULL 119693+journal_init_dev_59384 journal_init_dev 5 59384 NULL
113413+__net_get_random_once_59389 __net_get_random_once 2 59389 NULL 119694+__net_get_random_once_59389 __net_get_random_once 2 59389 NULL
@@ -113420,6 +119701,7 @@ index 0000000..9529806
113420+mic_vringh_copy_59523 mic_vringh_copy 4 59523 NULL 119701+mic_vringh_copy_59523 mic_vringh_copy 4 59523 NULL
113421+mpi_get_nbits_59551 mpi_get_nbits 0 59551 NULL 119702+mpi_get_nbits_59551 mpi_get_nbits 0 59551 NULL
113422+tunables_write_59563 tunables_write 3 59563 NULL 119703+tunables_write_59563 tunables_write 3 59563 NULL
119704+bio_split_59564 bio_split 2 59564 NULL
113423+__copy_from_user_ll_nozero_59571 __copy_from_user_ll_nozero 0-3 59571 NULL 119705+__copy_from_user_ll_nozero_59571 __copy_from_user_ll_nozero 0-3 59571 NULL
113424+write_pbl_59583 write_pbl 4 59583 NULL 119706+write_pbl_59583 write_pbl 4 59583 NULL
113425+memdup_user_59590 memdup_user 2 59590 NULL 119707+memdup_user_59590 memdup_user 2 59590 NULL
@@ -113429,6 +119711,7 @@ index 0000000..9529806
113429+mtrr_write_59622 mtrr_write 3 59622 NULL 119711+mtrr_write_59622 mtrr_write 3 59622 NULL
113430+find_first_zero_bit_59636 find_first_zero_bit 0 59636 NULL 119712+find_first_zero_bit_59636 find_first_zero_bit 0 59636 NULL
113431+SyS_setdomainname_59646 SyS_setdomainname 2 59646 NULL 119713+SyS_setdomainname_59646 SyS_setdomainname 2 59646 NULL
119714+file_update_time_59647 file_update_time 0 59647 NULL
113432+hidraw_read_59650 hidraw_read 3 59650 NULL 119715+hidraw_read_59650 hidraw_read 3 59650 NULL
113433+v9fs_xattr_set_acl_59651 v9fs_xattr_set_acl 4 59651 NULL 119716+v9fs_xattr_set_acl_59651 v9fs_xattr_set_acl 4 59651 NULL
113434+__devcgroup_check_permission_59665 __devcgroup_check_permission 0 59665 NULL 119717+__devcgroup_check_permission_59665 __devcgroup_check_permission 0 59665 NULL
@@ -113442,10 +119725,10 @@ index 0000000..9529806
113442+qib_decode_7220_sdma_errs_59745 qib_decode_7220_sdma_errs 4 59745 NULL 119725+qib_decode_7220_sdma_errs_59745 qib_decode_7220_sdma_errs 4 59745 NULL
113443+strnlen_59746 strnlen 0 59746 NULL 119726+strnlen_59746 strnlen 0 59746 NULL
113444+ext3_acl_count_59754 ext3_acl_count 0-1 59754 NULL 119727+ext3_acl_count_59754 ext3_acl_count 0-1 59754 NULL
113445+long_retry_limit_read_59766 long_retry_limit_read 3 59766 NULL 119728+long_retry_limit_read_59766 long_retry_limit_read 3 59766 NULL nohasharray
119729+cap_inode_need_killpriv_59766 cap_inode_need_killpriv 0 59766 &long_retry_limit_read_59766
113446+venus_remove_59781 venus_remove 4 59781 NULL 119730+venus_remove_59781 venus_remove 4 59781 NULL
113447+mei_nfc_recv_59784 mei_nfc_recv 3 59784 NULL 119731+mei_nfc_recv_59784 mei_nfc_recv 3 59784 NULL
113448+C_SYSC_preadv_59801 C_SYSC_preadv 3 59801 NULL
113449+ipw_write_59807 ipw_write 3 59807 NULL 119732+ipw_write_59807 ipw_write 3 59807 NULL
113450+scsi_init_shared_tag_map_59812 scsi_init_shared_tag_map 2 59812 NULL 119733+scsi_init_shared_tag_map_59812 scsi_init_shared_tag_map 2 59812 NULL
113451+ieee80211_if_read_dot11MeshHWMPmaxPREQretries_59829 ieee80211_if_read_dot11MeshHWMPmaxPREQretries 3 59829 NULL 119734+ieee80211_if_read_dot11MeshHWMPmaxPREQretries_59829 ieee80211_if_read_dot11MeshHWMPmaxPREQretries 3 59829 NULL
@@ -113454,9 +119737,8 @@ index 0000000..9529806
113454+pvr2_ioread_set_sync_key_59882 pvr2_ioread_set_sync_key 3 59882 NULL 119737+pvr2_ioread_set_sync_key_59882 pvr2_ioread_set_sync_key 3 59882 NULL
113455+l2cap_sock_recvmsg_59886 l2cap_sock_recvmsg 4 59886 NULL 119738+l2cap_sock_recvmsg_59886 l2cap_sock_recvmsg 4 59886 NULL
113456+ffs_prepare_buffer_59892 ffs_prepare_buffer 2 59892 NULL 119739+ffs_prepare_buffer_59892 ffs_prepare_buffer 2 59892 NULL
113457+ocfs2_extend_rotate_transaction_59894 ocfs2_extend_rotate_transaction 2-3 59894 NULL
113458+aic7xxx_abort_waiting_scb_59932 aic7xxx_abort_waiting_scb 0 59932 NULL
113459+kvm_mmu_notifier_invalidate_range_start_59944 kvm_mmu_notifier_invalidate_range_start 3-4 59944 NULL 119740+kvm_mmu_notifier_invalidate_range_start_59944 kvm_mmu_notifier_invalidate_range_start 3-4 59944 NULL
119741+ath10k_read_dfs_stats_59949 ath10k_read_dfs_stats 3 59949 NULL
113460+dapm_widget_power_read_file_59950 dapm_widget_power_read_file 3 59950 NULL nohasharray 119742+dapm_widget_power_read_file_59950 dapm_widget_power_read_file 3 59950 NULL nohasharray
113461+il_dbgfs_rxon_flags_read_59950 il_dbgfs_rxon_flags_read 3 59950 &dapm_widget_power_read_file_59950 119743+il_dbgfs_rxon_flags_read_59950 il_dbgfs_rxon_flags_read 3 59950 &dapm_widget_power_read_file_59950
113462+il_dbgfs_missed_beacon_read_59956 il_dbgfs_missed_beacon_read 3 59956 NULL 119744+il_dbgfs_missed_beacon_read_59956 il_dbgfs_missed_beacon_read 3 59956 NULL
@@ -113464,10 +119746,12 @@ index 0000000..9529806
113464+osd_req_read_kern_59990 osd_req_read_kern 5 59990 NULL 119746+osd_req_read_kern_59990 osd_req_read_kern 5 59990 NULL
113465+ghash_async_setkey_60001 ghash_async_setkey 3 60001 NULL 119747+ghash_async_setkey_60001 ghash_async_setkey 3 60001 NULL
113466+ieee80211_if_fmt_dot11MeshAwakeWindowDuration_60006 ieee80211_if_fmt_dot11MeshAwakeWindowDuration 3 60006 NULL 119748+ieee80211_if_fmt_dot11MeshAwakeWindowDuration_60006 ieee80211_if_fmt_dot11MeshAwakeWindowDuration 3 60006 NULL
119749+copy_items_60009 copy_items 7 60009 NULL
113467+rawsock_sendmsg_60010 rawsock_sendmsg 4 60010 NULL 119750+rawsock_sendmsg_60010 rawsock_sendmsg 4 60010 NULL
113468+mthca_init_cq_60011 mthca_init_cq 2 60011 NULL 119751+mthca_init_cq_60011 mthca_init_cq 2 60011 NULL
113469+osd_req_list_dev_partitions_60027 osd_req_list_dev_partitions 4 60027 NULL 119752+osd_req_list_dev_partitions_60027 osd_req_list_dev_partitions 4 60027 NULL
113470+xlog_bread_offset_60030 xlog_bread_offset 3 60030 NULL 119753+xlog_bread_offset_60030 xlog_bread_offset 3 60030 NULL
119754+xfs_imap_to_bp_60034 xfs_imap_to_bp 0 60034 NULL
113471+bio_integrity_hw_sectors_60039 bio_integrity_hw_sectors 0-2 60039 NULL 119755+bio_integrity_hw_sectors_60039 bio_integrity_hw_sectors 0-2 60039 NULL
113472+do_ip6t_set_ctl_60040 do_ip6t_set_ctl 4 60040 NULL 119756+do_ip6t_set_ctl_60040 do_ip6t_set_ctl 4 60040 NULL
113473+vcs_size_60050 vcs_size 0 60050 NULL 119757+vcs_size_60050 vcs_size 0 60050 NULL
@@ -113507,10 +119791,13 @@ index 0000000..9529806
113507+snd_hda_get_num_raw_conns_60462 snd_hda_get_num_raw_conns 0 60462 NULL 119791+snd_hda_get_num_raw_conns_60462 snd_hda_get_num_raw_conns 0 60462 NULL
113508+crypto_shash_setkey_60483 crypto_shash_setkey 3 60483 NULL 119792+crypto_shash_setkey_60483 crypto_shash_setkey 3 60483 NULL
113509+lustre_msg_early_size_60496 lustre_msg_early_size 0 60496 NULL 119793+lustre_msg_early_size_60496 lustre_msg_early_size 0 60496 NULL
119794+xfs_btree_make_block_unfull_60511 xfs_btree_make_block_unfull 0 60511 NULL
113510+v9fs_fid_readn_60544 v9fs_fid_readn 4 60544 NULL 119795+v9fs_fid_readn_60544 v9fs_fid_readn 4 60544 NULL
113511+nonpaging_map_60551 nonpaging_map 4 60551 NULL 119796+nonpaging_map_60551 nonpaging_map 4 60551 NULL
113512+osc_lockless_truncate_seq_write_60553 osc_lockless_truncate_seq_write 3 60553 NULL 119797+osc_lockless_truncate_seq_write_60553 osc_lockless_truncate_seq_write 3 60553 NULL
113513+tracing_entries_write_60563 tracing_entries_write 3 60563 NULL 119798+tracing_entries_write_60563 tracing_entries_write 3 60563 NULL
119799+memblock_virt_alloc_try_nid_nopanic_60604 memblock_virt_alloc_try_nid_nopanic 1 60604 NULL
119800+inode_change_ok_60614 inode_change_ok 0 60614 NULL
113514+skb_transport_offset_60619 skb_transport_offset 0 60619 NULL 119801+skb_transport_offset_60619 skb_transport_offset 0 60619 NULL
113515+wl1273_fm_fops_write_60621 wl1273_fm_fops_write 3 60621 NULL 119802+wl1273_fm_fops_write_60621 wl1273_fm_fops_write 3 60621 NULL
113516+acl_alloc_stack_init_60630 acl_alloc_stack_init 1 60630 NULL 119803+acl_alloc_stack_init_60630 acl_alloc_stack_init 1 60630 NULL
@@ -113524,7 +119811,9 @@ index 0000000..9529806
113524+opticon_write_60775 opticon_write 4 60775 NULL 119811+opticon_write_60775 opticon_write 4 60775 NULL
113525+acl_alloc_num_60778 acl_alloc_num 1-2 60778 NULL 119812+acl_alloc_num_60778 acl_alloc_num 1-2 60778 NULL
113526+snd_pcm_oss_readv3_60792 snd_pcm_oss_readv3 3 60792 NULL 119813+snd_pcm_oss_readv3_60792 snd_pcm_oss_readv3 3 60792 NULL
119814+gfs2_bmap_alloc_60822 gfs2_bmap_alloc 0 60822 NULL
113527+pwr_tx_with_ps_read_60851 pwr_tx_with_ps_read 3 60851 NULL 119815+pwr_tx_with_ps_read_60851 pwr_tx_with_ps_read 3 60851 NULL
119816+__clone_and_map_data_bio_60861 __clone_and_map_data_bio 4-3 60861 NULL
113528+alloc_buf_60864 alloc_buf 3-2 60864 NULL 119817+alloc_buf_60864 alloc_buf 3-2 60864 NULL
113529+generic_writepages_60871 generic_writepages 0 60871 NULL 119818+generic_writepages_60871 generic_writepages 0 60871 NULL
113530+ext4_update_inline_data_60888 ext4_update_inline_data 3 60888 NULL 119819+ext4_update_inline_data_60888 ext4_update_inline_data 3 60888 NULL
@@ -113533,6 +119822,7 @@ index 0000000..9529806
113533+mgt_set_varlen_60916 mgt_set_varlen 4 60916 NULL 119822+mgt_set_varlen_60916 mgt_set_varlen 4 60916 NULL
113534+scrub_chunk_60926 scrub_chunk 5 60926 NULL 119823+scrub_chunk_60926 scrub_chunk 5 60926 NULL
113535+submit_extent_page_60928 submit_extent_page 5 60928 NULL 119824+submit_extent_page_60928 submit_extent_page 5 60928 NULL
119825+xfs_rtallocate_extent_size_60939 xfs_rtallocate_extent_size 0 60939 NULL
113536+pti_char_write_60960 pti_char_write 3 60960 NULL 119826+pti_char_write_60960 pti_char_write 3 60960 NULL
113537+mwifiex_alloc_sdio_mpa_buffers_60961 mwifiex_alloc_sdio_mpa_buffers 2-3 60961 NULL 119827+mwifiex_alloc_sdio_mpa_buffers_60961 mwifiex_alloc_sdio_mpa_buffers 2-3 60961 NULL
113538+__a2mp_build_60987 __a2mp_build 3 60987 NULL 119828+__a2mp_build_60987 __a2mp_build 3 60987 NULL
@@ -113545,20 +119835,21 @@ index 0000000..9529806
113545+fuse_send_write_61053 fuse_send_write 0-4 61053 NULL 119835+fuse_send_write_61053 fuse_send_write 0-4 61053 NULL
113546+bitmap_scnlistprintf_61062 bitmap_scnlistprintf 0-2 61062 NULL 119836+bitmap_scnlistprintf_61062 bitmap_scnlistprintf 0-2 61062 NULL
113547+ahash_align_buffer_size_61070 ahash_align_buffer_size 0-1-2 61070 NULL 119837+ahash_align_buffer_size_61070 ahash_align_buffer_size 0-1-2 61070 NULL
119838+xfs_dabuf_map_61093 xfs_dabuf_map 0 61093 NULL
113548+get_derived_key_61100 get_derived_key 4 61100 NULL 119839+get_derived_key_61100 get_derived_key 4 61100 NULL
113549+i40e_calculate_l2fpm_size_61104 i40e_calculate_l2fpm_size 0-1-2-3-4 61104 NULL 119840+mem_cgroup_cache_charge_61101 mem_cgroup_cache_charge 0 61101 NULL
119841+i40e_calculate_l2fpm_size_61104 i40e_calculate_l2fpm_size 0-4-3-2-1 61104 NULL
113550+alloc_chrdev_region_61112 alloc_chrdev_region 0 61112 NULL 119842+alloc_chrdev_region_61112 alloc_chrdev_region 0 61112 NULL
113551+__probe_kernel_read_61119 __probe_kernel_read 3 61119 NULL 119843+__probe_kernel_read_61119 __probe_kernel_read 3 61119 NULL
113552+vmemmap_alloc_block_buf_61126 vmemmap_alloc_block_buf 1 61126 NULL 119844+vmemmap_alloc_block_buf_61126 vmemmap_alloc_block_buf 1 61126 NULL
113553+afs_proc_cells_write_61139 afs_proc_cells_write 3 61139 NULL 119845+afs_proc_cells_write_61139 afs_proc_cells_write 3 61139 NULL
113554+brcmf_sdio_chip_cr4_exitdl_61143 brcmf_sdio_chip_cr4_exitdl 4 61143 NULL
113555+osl_malloc_61156 osl_malloc 2 61156 NULL
113556+pair_device_61175 pair_device 4 61175 NULL nohasharray 119846+pair_device_61175 pair_device 4 61175 NULL nohasharray
113557+event_oom_late_read_61175 event_oom_late_read 3 61175 &pair_device_61175 119847+event_oom_late_read_61175 event_oom_late_read 3 61175 &pair_device_61175
113558+dio_bio_add_page_61178 dio_bio_add_page 0 61178 NULL 119848+dio_bio_add_page_61178 dio_bio_add_page 0 61178 NULL
113559+SyS_prctl_61202 SyS_prctl 4 61202 NULL 119849+SyS_prctl_61202 SyS_prctl 4 61202 NULL
113560+arch_hibernation_header_save_61212 arch_hibernation_header_save 0 61212 NULL 119850+arch_hibernation_header_save_61212 arch_hibernation_header_save 0 61212 NULL
113561+smk_read_ambient_61220 smk_read_ambient 3 61220 NULL 119851+smk_read_ambient_61220 smk_read_ambient 3 61220 NULL
119852+v9fs_mmap_file_read_61262 v9fs_mmap_file_read 3 61262 NULL
113562+btrfs_bio_alloc_61270 btrfs_bio_alloc 3 61270 NULL nohasharray 119853+btrfs_bio_alloc_61270 btrfs_bio_alloc 3 61270 NULL nohasharray
113563+find_get_pages_tag_61270 find_get_pages_tag 0 61270 &btrfs_bio_alloc_61270 nohasharray 119854+find_get_pages_tag_61270 find_get_pages_tag 0 61270 &btrfs_bio_alloc_61270 nohasharray
113564+ifalias_store_61270 ifalias_store 4 61270 &find_get_pages_tag_61270 119855+ifalias_store_61270 ifalias_store 4 61270 &find_get_pages_tag_61270
@@ -113575,7 +119866,6 @@ index 0000000..9529806
113575+f1x_map_sysaddr_to_csrow_61344 f1x_map_sysaddr_to_csrow 2 61344 NULL 119866+f1x_map_sysaddr_to_csrow_61344 f1x_map_sysaddr_to_csrow 2 61344 NULL
113576+debug_debug4_read_61367 debug_debug4_read 3 61367 NULL 119867+debug_debug4_read_61367 debug_debug4_read 3 61367 NULL
113577+system_enable_write_61396 system_enable_write 3 61396 NULL 119868+system_enable_write_61396 system_enable_write 3 61396 NULL
113578+xfs_zero_remaining_bytes_61423 xfs_zero_remaining_bytes 3 61423 NULL
113579+unix_stream_sendmsg_61455 unix_stream_sendmsg 4 61455 NULL 119869+unix_stream_sendmsg_61455 unix_stream_sendmsg 4 61455 NULL
113580+snd_pcm_lib_writev_transfer_61483 snd_pcm_lib_writev_transfer 5-4-2 61483 NULL 119870+snd_pcm_lib_writev_transfer_61483 snd_pcm_lib_writev_transfer 5-4-2 61483 NULL
113581+btrfs_item_size_61485 btrfs_item_size 0 61485 NULL 119871+btrfs_item_size_61485 btrfs_item_size 0 61485 NULL
@@ -113594,13 +119884,13 @@ index 0000000..9529806
113594+configfs_write_file_61621 configfs_write_file 3 61621 NULL 119884+configfs_write_file_61621 configfs_write_file 3 61621 NULL
113595+ieee80211_if_fmt_hw_queues_61629 ieee80211_if_fmt_hw_queues 3 61629 NULL 119885+ieee80211_if_fmt_hw_queues_61629 ieee80211_if_fmt_hw_queues 3 61629 NULL
113596+i2o_parm_table_get_61635 i2o_parm_table_get 6 61635 NULL 119886+i2o_parm_table_get_61635 i2o_parm_table_get 6 61635 NULL
113597+snd_pcm_oss_read3_61643 snd_pcm_oss_read3 0-3 61643 NULL 119887+snd_pcm_oss_read3_61643 snd_pcm_oss_read3 0-3 61643 NULL nohasharray
119888+tcf_hashinfo_init_61643 tcf_hashinfo_init 2 61643 &snd_pcm_oss_read3_61643
113598+resize_stripes_61650 resize_stripes 2 61650 NULL 119889+resize_stripes_61650 resize_stripes 2 61650 NULL
113599+ttm_page_pool_free_61661 ttm_page_pool_free 2-0 61661 NULL 119890+ttm_page_pool_free_61661 ttm_page_pool_free 2-0 61661 NULL
113600+insert_one_name_61668 insert_one_name 7 61668 NULL 119891+insert_one_name_61668 insert_one_name 7 61668 NULL
113601+qib_format_hwmsg_61679 qib_format_hwmsg 2 61679 NULL 119892+qib_format_hwmsg_61679 qib_format_hwmsg 2 61679 NULL
113602+lock_loop_61681 lock_loop 1 61681 NULL 119893+lock_loop_61681 lock_loop 1 61681 NULL
113603+__do_tune_cpucache_61684 __do_tune_cpucache 2 61684 NULL
113604+filter_read_61692 filter_read 3 61692 NULL 119894+filter_read_61692 filter_read 3 61692 NULL
113605+iov_length_61716 iov_length 0 61716 NULL 119895+iov_length_61716 iov_length 0 61716 NULL
113606+fragmentation_threshold_read_61718 fragmentation_threshold_read 3 61718 NULL 119896+fragmentation_threshold_read_61718 fragmentation_threshold_read 3 61718 NULL
@@ -113608,6 +119898,8 @@ index 0000000..9529806
113608+read_file_interrupt_61742 read_file_interrupt 3 61742 NULL nohasharray 119898+read_file_interrupt_61742 read_file_interrupt 3 61742 NULL nohasharray
113609+read_file_regval_61742 read_file_regval 3 61742 &read_file_interrupt_61742 119899+read_file_regval_61742 read_file_regval 3 61742 &read_file_interrupt_61742
113610+SyS_sendto_61763 SyS_sendto 6 61763 NULL 119900+SyS_sendto_61763 SyS_sendto 6 61763 NULL
119901+gfs2_meta_wait_61773 gfs2_meta_wait 0 61773 NULL
119902+xfs_file_dio_aio_write_61801 xfs_file_dio_aio_write 0 61801 NULL
113611+mls_compute_context_len_61812 mls_compute_context_len 0 61812 NULL 119903+mls_compute_context_len_61812 mls_compute_context_len 0 61812 NULL
113612+bfad_debugfs_write_regwr_61841 bfad_debugfs_write_regwr 3 61841 NULL 119904+bfad_debugfs_write_regwr_61841 bfad_debugfs_write_regwr 3 61841 NULL
113613+regcache_sync_block_61846 regcache_sync_block 5-4 61846 NULL 119905+regcache_sync_block_61846 regcache_sync_block 5-4 61846 NULL
@@ -113619,8 +119911,7 @@ index 0000000..9529806
113619+btrfs_ioctl_clone_61886 btrfs_ioctl_clone 3-4-5 61886 NULL 119911+btrfs_ioctl_clone_61886 btrfs_ioctl_clone 3-4-5 61886 NULL
113620+lprocfs_write_frac_u64_helper_61897 lprocfs_write_frac_u64_helper 2 61897 NULL 119912+lprocfs_write_frac_u64_helper_61897 lprocfs_write_frac_u64_helper 2 61897 NULL
113621+lov_mds_md_stripecnt_61899 lov_mds_md_stripecnt 0-1 61899 NULL 119913+lov_mds_md_stripecnt_61899 lov_mds_md_stripecnt 0-1 61899 NULL
113622+clear_refs_write_61904 clear_refs_write 3 61904 NULL nohasharray 119914+clear_refs_write_61904 clear_refs_write 3 61904 NULL
113623+import_sec_check_expire_61904 import_sec_check_expire 0 61904 &clear_refs_write_61904
113624+rx_filter_arp_filter_read_61914 rx_filter_arp_filter_read 3 61914 NULL 119915+rx_filter_arp_filter_read_61914 rx_filter_arp_filter_read 3 61914 NULL
113625+au0828_init_isoc_61917 au0828_init_isoc 3-2-4 61917 NULL 119916+au0828_init_isoc_61917 au0828_init_isoc 3-2-4 61917 NULL
113626+sctp_sendmsg_61919 sctp_sendmsg 4 61919 NULL 119917+sctp_sendmsg_61919 sctp_sendmsg 4 61919 NULL
@@ -113629,9 +119920,9 @@ index 0000000..9529806
113629+il4965_ucode_rx_stats_read_61948 il4965_ucode_rx_stats_read 3 61948 NULL 119920+il4965_ucode_rx_stats_read_61948 il4965_ucode_rx_stats_read 3 61948 NULL
113630+squashfs_read_id_index_table_61961 squashfs_read_id_index_table 4 61961 NULL 119921+squashfs_read_id_index_table_61961 squashfs_read_id_index_table 4 61961 NULL
113631+fix_read_error_61965 fix_read_error 4 61965 NULL 119922+fix_read_error_61965 fix_read_error 4 61965 NULL
113632+ocfs2_quota_write_61972 ocfs2_quota_write 4-5 61972 NULL
113633+fd_locked_ioctl_61978 fd_locked_ioctl 3 61978 NULL 119923+fd_locked_ioctl_61978 fd_locked_ioctl 3 61978 NULL
113634+cow_file_range_61979 cow_file_range 3 61979 NULL 119924+cow_file_range_61979 cow_file_range 3 61979 NULL
119925+set_extent_delalloc_61982 set_extent_delalloc 0 61982 NULL
113635+dequeue_event_62000 dequeue_event 3 62000 NULL 119926+dequeue_event_62000 dequeue_event 3 62000 NULL
113636+xt_compat_match_offset_62011 xt_compat_match_offset 0 62011 NULL 119927+xt_compat_match_offset_62011 xt_compat_match_offset 0 62011 NULL
113637+SyS_setxattr_62019 SyS_setxattr 4 62019 NULL 119928+SyS_setxattr_62019 SyS_setxattr 4 62019 NULL
@@ -113641,6 +119932,8 @@ index 0000000..9529806
113641+sctp_user_addto_chunk_62047 sctp_user_addto_chunk 2-3 62047 NULL 119932+sctp_user_addto_chunk_62047 sctp_user_addto_chunk 2-3 62047 NULL
113642+do_pselect_62061 do_pselect 1 62061 NULL 119933+do_pselect_62061 do_pselect 1 62061 NULL
113643+pcpu_alloc_bootmem_62074 pcpu_alloc_bootmem 2 62074 NULL 119934+pcpu_alloc_bootmem_62074 pcpu_alloc_bootmem 2 62074 NULL
119935+_xfs_log_force_lsn_62083 _xfs_log_force_lsn 0 62083 NULL
119936+fat_setattr_62084 fat_setattr 0 62084 NULL
113644+jffs2_security_setxattr_62107 jffs2_security_setxattr 4 62107 NULL 119937+jffs2_security_setxattr_62107 jffs2_security_setxattr 4 62107 NULL
113645+btrfs_direct_IO_62114 btrfs_direct_IO 4 62114 NULL 119938+btrfs_direct_IO_62114 btrfs_direct_IO 4 62114 NULL
113646+ip_recv_error_62117 ip_recv_error 3 62117 NULL 119939+ip_recv_error_62117 ip_recv_error 3 62117 NULL
@@ -113655,17 +119948,16 @@ index 0000000..9529806
113655+prism54_wpa_bss_ie_get_62173 prism54_wpa_bss_ie_get 0 62173 NULL 119948+prism54_wpa_bss_ie_get_62173 prism54_wpa_bss_ie_get 0 62173 NULL
113656+write_file_dfs_62180 write_file_dfs 3 62180 NULL 119949+write_file_dfs_62180 write_file_dfs 3 62180 NULL
113657+alloc_upcall_62186 alloc_upcall 2 62186 NULL 119950+alloc_upcall_62186 alloc_upcall 2 62186 NULL
113658+btrfs_xattr_acl_set_62203 btrfs_xattr_acl_set 4 62203 NULL
113659+sock_kmalloc_62205 sock_kmalloc 2 62205 NULL 119951+sock_kmalloc_62205 sock_kmalloc 2 62205 NULL
119952+smk_read_syslog_62227 smk_read_syslog 3 62227 NULL
113660+SYSC_setgroups16_62232 SYSC_setgroups16 1 62232 NULL 119953+SYSC_setgroups16_62232 SYSC_setgroups16 1 62232 NULL
113661+nfsd_read_file_62241 nfsd_read_file 6 62241 NULL 119954+nfsd_read_file_62241 nfsd_read_file 6 62241 NULL
113662+subtract_dirty_62242 subtract_dirty 2-3 62242 NULL 119955+subtract_dirty_62242 subtract_dirty 2-3 62242 NULL
113663+get_random_int_62279 get_random_int 0 62279 NULL 119956+ion_handle_test_dma_62262 ion_handle_test_dma 4-5 62262 NULL
113664+il_dbgfs_sram_read_62296 il_dbgfs_sram_read 3 62296 NULL 119957+il_dbgfs_sram_read_62296 il_dbgfs_sram_read 3 62296 NULL
113665+sparse_early_usemaps_alloc_pgdat_section_62304 sparse_early_usemaps_alloc_pgdat_section 2 62304 NULL 119958+sparse_early_usemaps_alloc_pgdat_section_62304 sparse_early_usemaps_alloc_pgdat_section 2 62304 NULL
113666+subsystem_filter_read_62310 subsystem_filter_read 3 62310 NULL 119959+subsystem_filter_read_62310 subsystem_filter_read 3 62310 NULL
113667+Wb35Reg_BurstWrite_62327 Wb35Reg_BurstWrite 4 62327 NULL 119960+Wb35Reg_BurstWrite_62327 Wb35Reg_BurstWrite 4 62327 NULL
113668+ocfs2_xattr_buckets_per_cluster_62330 ocfs2_xattr_buckets_per_cluster 0 62330 NULL
113669+subseq_list_62332 subseq_list 3-0 62332 NULL 119961+subseq_list_62332 subseq_list 3-0 62332 NULL
113670+ll_statahead_max_seq_write_62333 ll_statahead_max_seq_write 3 62333 NULL 119962+ll_statahead_max_seq_write_62333 ll_statahead_max_seq_write 3 62333 NULL
113671+flash_write_62354 flash_write 3 62354 NULL 119963+flash_write_62354 flash_write 3 62354 NULL
@@ -113673,6 +119965,7 @@ index 0000000..9529806
113673+rx_rx_timeout_read_62389 rx_rx_timeout_read 3 62389 NULL 119965+rx_rx_timeout_read_62389 rx_rx_timeout_read 3 62389 NULL
113674+altera_irscan_62396 altera_irscan 2 62396 NULL 119966+altera_irscan_62396 altera_irscan 2 62396 NULL
113675+set_ssp_62411 set_ssp 4 62411 NULL 119967+set_ssp_62411 set_ssp 4 62411 NULL
119968+udf_expand_file_adinicb_62470 udf_expand_file_adinicb 0 62470 NULL
113676+ext_rts51x_sd_execute_read_data_62501 ext_rts51x_sd_execute_read_data 9 62501 NULL 119969+ext_rts51x_sd_execute_read_data_62501 ext_rts51x_sd_execute_read_data 9 62501 NULL
113677+pep_sendmsg_62524 pep_sendmsg 4 62524 NULL 119970+pep_sendmsg_62524 pep_sendmsg 4 62524 NULL
113678+test_iso_queue_62534 test_iso_queue 5 62534 NULL 119971+test_iso_queue_62534 test_iso_queue 5 62534 NULL
@@ -113680,19 +119973,19 @@ index 0000000..9529806
113680+sco_sock_sendmsg_62542 sco_sock_sendmsg 4 62542 NULL 119973+sco_sock_sendmsg_62542 sco_sock_sendmsg 4 62542 NULL
113681+qib_refresh_qsfp_cache_62547 qib_refresh_qsfp_cache 0 62547 NULL 119974+qib_refresh_qsfp_cache_62547 qib_refresh_qsfp_cache 0 62547 NULL
113682+link_send_sections_long_62557 link_send_sections_long 3 62557 NULL 119975+link_send_sections_long_62557 link_send_sections_long 3 62557 NULL
119976+compute_bitstructs_62570 compute_bitstructs 0 62570 NULL
113683+xfrm_user_policy_62573 xfrm_user_policy 4 62573 NULL 119977+xfrm_user_policy_62573 xfrm_user_policy 4 62573 NULL
113684+compat_SyS_rt_sigpending_62580 compat_SyS_rt_sigpending 2 62580 NULL
113685+get_subdir_62581 get_subdir 3 62581 NULL 119978+get_subdir_62581 get_subdir 3 62581 NULL
113686+nfsd_vfs_read_62605 nfsd_vfs_read 6 62605 NULL 119979+nfsd_vfs_read_62605 nfsd_vfs_read 6 62605 NULL
113687+tipc_port_recv_sections_62609 tipc_port_recv_sections 3 62609 NULL 119980+tipc_port_recv_sections_62609 tipc_port_recv_sections 3 62609 NULL
113688+dut_mode_write_62630 dut_mode_write 3 62630 NULL 119981+dut_mode_write_62630 dut_mode_write 3 62630 NULL
113689+vfs_fsync_range_62635 vfs_fsync_range 0 62635 NULL 119982+vfs_fsync_range_62635 vfs_fsync_range 0 62635 NULL
113690+lpfc_sli4_queue_alloc_62646 lpfc_sli4_queue_alloc 3 62646 NULL 119983+lpfc_sli4_queue_alloc_62646 lpfc_sli4_queue_alloc 3 62646 NULL
113691+ocfs2_wait_for_mask_interruptible_62675 ocfs2_wait_for_mask_interruptible 0 62675 NULL
113692+printer_req_alloc_62687 printer_req_alloc 2 62687 NULL 119984+printer_req_alloc_62687 printer_req_alloc 2 62687 NULL
113693+bioset_integrity_create_62708 bioset_integrity_create 2 62708 NULL 119985+bioset_integrity_create_62708 bioset_integrity_create 2 62708 NULL
113694+gfs2_log_write_62717 gfs2_log_write 3 62717 NULL 119986+gfs2_log_write_62717 gfs2_log_write 3 62717 NULL
113695+rdm_62719 rdm 0 62719 NULL 119987+rdm_62719 rdm 0 62719 NULL
119988+add_to_page_cache_62724 add_to_page_cache 0 62724 NULL
113696+obd_ioctl_popdata_62741 obd_ioctl_popdata 3 62741 NULL 119989+obd_ioctl_popdata_62741 obd_ioctl_popdata 3 62741 NULL
113697+key_replays_read_62746 key_replays_read 3 62746 NULL 119990+key_replays_read_62746 key_replays_read 3 62746 NULL
113698+lov_verify_lmm_62747 lov_verify_lmm 2 62747 NULL 119991+lov_verify_lmm_62747 lov_verify_lmm 2 62747 NULL
@@ -113708,6 +120001,7 @@ index 0000000..9529806
113708+rx_fcs_err_read_62844 rx_fcs_err_read 3 62844 NULL 120001+rx_fcs_err_read_62844 rx_fcs_err_read 3 62844 NULL
113709+read_nic_io_dword_62859 read_nic_io_dword 0 62859 NULL 120002+read_nic_io_dword_62859 read_nic_io_dword 0 62859 NULL
113710+l2tp_ip6_recvmsg_62874 l2tp_ip6_recvmsg 4 62874 NULL 120003+l2tp_ip6_recvmsg_62874 l2tp_ip6_recvmsg 4 62874 NULL
120004+xfs_rtmodify_range_62877 xfs_rtmodify_range 0 62877 NULL
113711+aoechr_write_62883 aoechr_write 3 62883 NULL 120005+aoechr_write_62883 aoechr_write 3 62883 NULL
113712+if_spi_host_to_card_62890 if_spi_host_to_card 4 62890 NULL 120006+if_spi_host_to_card_62890 if_spi_host_to_card 4 62890 NULL
113713+ocfs2_validate_gd_parent_62905 ocfs2_validate_gd_parent 0 62905 NULL 120007+ocfs2_validate_gd_parent_62905 ocfs2_validate_gd_parent 0 62905 NULL
@@ -113715,7 +120009,8 @@ index 0000000..9529806
113715+getdqbuf_62908 getdqbuf 1 62908 NULL 120009+getdqbuf_62908 getdqbuf 1 62908 NULL
113716+ll_statahead_agl_seq_write_62928 ll_statahead_agl_seq_write 3 62928 NULL 120010+ll_statahead_agl_seq_write_62928 ll_statahead_agl_seq_write 3 62928 NULL
113717+agp_create_user_memory_62955 agp_create_user_memory 1 62955 NULL 120011+agp_create_user_memory_62955 agp_create_user_memory 1 62955 NULL
113718+kstrtoull_from_user_63026 kstrtoull_from_user 2 63026 NULL 120012+kstrtoull_from_user_63026 kstrtoull_from_user 2 63026 NULL nohasharray
120013+xfs_trans_reserve_63026 xfs_trans_reserve 0 63026 &kstrtoull_from_user_63026
113719+__vb2_perform_fileio_63033 __vb2_perform_fileio 3 63033 NULL 120014+__vb2_perform_fileio_63033 __vb2_perform_fileio 3 63033 NULL
113720+pipeline_defrag_to_csum_swi_read_63037 pipeline_defrag_to_csum_swi_read 3 63037 NULL 120015+pipeline_defrag_to_csum_swi_read_63037 pipeline_defrag_to_csum_swi_read 3 63037 NULL
113721+scsi_host_alloc_63041 scsi_host_alloc 2 63041 NULL 120016+scsi_host_alloc_63041 scsi_host_alloc 2 63041 NULL
@@ -113732,6 +120027,7 @@ index 0000000..9529806
113732+ptp_read_63251 ptp_read 4 63251 NULL 120027+ptp_read_63251 ptp_read 4 63251 NULL
113733+xfs_dir2_leaf_getdents_63262 xfs_dir2_leaf_getdents 3 63262 NULL 120028+xfs_dir2_leaf_getdents_63262 xfs_dir2_leaf_getdents 3 63262 NULL
113734+raid5_resize_63306 raid5_resize 2 63306 NULL 120029+raid5_resize_63306 raid5_resize 2 63306 NULL
120030+ath10k_read_fw_dbglog_63323 ath10k_read_fw_dbglog 3 63323 NULL
113735+proc_info_read_63344 proc_info_read 3 63344 NULL 120031+proc_info_read_63344 proc_info_read 3 63344 NULL
113736+ps_upsd_max_sptime_read_63362 ps_upsd_max_sptime_read 3 63362 NULL 120032+ps_upsd_max_sptime_read_63362 ps_upsd_max_sptime_read 3 63362 NULL
113737+idmouse_read_63374 idmouse_read 3 63374 NULL 120033+idmouse_read_63374 idmouse_read 3 63374 NULL
@@ -113747,13 +120043,15 @@ index 0000000..9529806
113747+read_kcore_63488 read_kcore 3 63488 NULL 120043+read_kcore_63488 read_kcore 3 63488 NULL
113748+snd_pcm_plug_write_transfer_63503 snd_pcm_plug_write_transfer 0-3 63503 NULL 120044+snd_pcm_plug_write_transfer_63503 snd_pcm_plug_write_transfer 0-3 63503 NULL
113749+efx_mcdi_rpc_async_63529 efx_mcdi_rpc_async 4-5 63529 NULL 120045+efx_mcdi_rpc_async_63529 efx_mcdi_rpc_async 4-5 63529 NULL
113750+ubi_more_leb_change_data_63534 ubi_more_leb_change_data 4 63534 NULL 120046+ubi_more_leb_change_data_63534 ubi_more_leb_change_data 4 63534 NULL nohasharray
120047+generic_cont_expand_simple_63534 generic_cont_expand_simple 0 63534 &ubi_more_leb_change_data_63534
113751+write_file_spectral_period_63536 write_file_spectral_period 3 63536 NULL 120048+write_file_spectral_period_63536 write_file_spectral_period 3 63536 NULL
113752+if_sdio_read_scratch_63540 if_sdio_read_scratch 0 63540 NULL 120049+if_sdio_read_scratch_63540 if_sdio_read_scratch 0 63540 NULL
113753+append_to_buffer_63550 append_to_buffer 3 63550 NULL 120050+append_to_buffer_63550 append_to_buffer 3 63550 NULL
113754+kvm_write_guest_page_63555 kvm_write_guest_page 5 63555 NULL 120051+kvm_write_guest_page_63555 kvm_write_guest_page 5 63555 NULL
113755+rproc_alloc_63577 rproc_alloc 5 63577 NULL 120052+rproc_alloc_63577 rproc_alloc 5 63577 NULL
113756+write_debug_level_63613 write_debug_level 3 63613 NULL 120053+write_debug_level_63613 write_debug_level 3 63613 NULL
120054+__spi_validate_63618 __spi_validate 0 63618 NULL
113757+symbol_build_supp_rates_63634 symbol_build_supp_rates 0 63634 NULL 120055+symbol_build_supp_rates_63634 symbol_build_supp_rates 0 63634 NULL
113758+proc_loginuid_write_63648 proc_loginuid_write 3 63648 NULL 120056+proc_loginuid_write_63648 proc_loginuid_write 3 63648 NULL
113759+ValidateDSDParamsChecksum_63654 ValidateDSDParamsChecksum 3 63654 NULL 120057+ValidateDSDParamsChecksum_63654 ValidateDSDParamsChecksum 3 63654 NULL
@@ -113769,7 +120067,6 @@ index 0000000..9529806
113769+spidev_compat_ioctl_63778 spidev_compat_ioctl 2 63778 NULL 120067+spidev_compat_ioctl_63778 spidev_compat_ioctl 2 63778 NULL
113770+mwifiex_11n_create_rx_reorder_tbl_63806 mwifiex_11n_create_rx_reorder_tbl 4 63806 NULL 120068+mwifiex_11n_create_rx_reorder_tbl_63806 mwifiex_11n_create_rx_reorder_tbl 4 63806 NULL
113771+copy_nodes_to_user_63807 copy_nodes_to_user 2 63807 NULL 120069+copy_nodes_to_user_63807 copy_nodes_to_user 2 63807 NULL
113772+prepare_copy_63826 prepare_copy 2 63826 NULL
113773+sel_write_load_63830 sel_write_load 3 63830 NULL 120070+sel_write_load_63830 sel_write_load 3 63830 NULL
113774+ll_readlink_63836 ll_readlink 3 63836 NULL 120071+ll_readlink_63836 ll_readlink 3 63836 NULL
113775+proc_pid_attr_write_63845 proc_pid_attr_write 3 63845 NULL 120072+proc_pid_attr_write_63845 proc_pid_attr_write 3 63845 NULL
@@ -113779,21 +120076,23 @@ index 0000000..9529806
113779+afs_send_simple_reply_63940 afs_send_simple_reply 3 63940 NULL 120076+afs_send_simple_reply_63940 afs_send_simple_reply 3 63940 NULL
113780+__team_options_register_63941 __team_options_register 3 63941 NULL 120077+__team_options_register_63941 __team_options_register 3 63941 NULL
113781+macvtap_recvmsg_63949 macvtap_recvmsg 4 63949 NULL 120078+macvtap_recvmsg_63949 macvtap_recvmsg 4 63949 NULL
113782+sysfs_add_one_63969 sysfs_add_one 0 63969 NULL 120079+xfs_iflush_63956 xfs_iflush 0 63956 NULL
113783+set_bredr_63975 set_bredr 4 63975 NULL 120080+set_bredr_63975 set_bredr 4 63975 NULL
113784+construct_key_and_link_63985 construct_key_and_link 3 63985 NULL 120081+construct_key_and_link_63985 construct_key_and_link 3 63985 NULL
113785+rs_extent_to_bm_page_63996 rs_extent_to_bm_page 0-1 63996 NULL 120082+rs_extent_to_bm_page_63996 rs_extent_to_bm_page 0-1 63996 NULL
113786+read_file_frameerrors_64001 read_file_frameerrors 3 64001 NULL 120083+read_file_frameerrors_64001 read_file_frameerrors 3 64001 NULL
113787+hfsplus_security_setxattr_64009 hfsplus_security_setxattr 4 64009 NULL
113788+SyS_rt_sigpending_64018 SyS_rt_sigpending 2 64018 NULL 120084+SyS_rt_sigpending_64018 SyS_rt_sigpending 2 64018 NULL
113789+dbAllocDmapLev_64030 dbAllocDmapLev 0 64030 NULL 120085+dbAllocDmapLev_64030 dbAllocDmapLev 0 64030 NULL
113790+SyS_fsetxattr_64039 SyS_fsetxattr 4 64039 NULL 120086+SyS_fsetxattr_64039 SyS_fsetxattr 4 64039 NULL
120087+__generic_file_aio_write_64049 __generic_file_aio_write 0 64049 NULL
113791+get_u8_64076 get_u8 0 64076 NULL 120088+get_u8_64076 get_u8 0 64076 NULL
113792+xilly_malloc_64077 xilly_malloc 2 64077 NULL 120089+xilly_malloc_64077 xilly_malloc 2 64077 NULL
113793+sl_realloc_bufs_64086 sl_realloc_bufs 2 64086 NULL 120090+sl_realloc_bufs_64086 sl_realloc_bufs 2 64086 NULL
113794+vmci_handle_arr_get_size_64088 vmci_handle_arr_get_size 0 64088 NULL 120091+vmci_handle_arr_get_size_64088 vmci_handle_arr_get_size 0 64088 NULL
113795+lbs_highrssi_read_64089 lbs_highrssi_read 3 64089 NULL 120092+lbs_highrssi_read_64089 lbs_highrssi_read 3 64089 NULL
113796+SyS_set_mempolicy_64096 SyS_set_mempolicy 3 64096 NULL 120093+gfs2_inplace_reserve_64096 gfs2_inplace_reserve 0 64096 NULL nohasharray
120094+SyS_set_mempolicy_64096 SyS_set_mempolicy 3 64096 &gfs2_inplace_reserve_64096
120095+to_bytes_64103 to_bytes 0-1 64103 NULL
113797+SyS_mq_timedsend_64107 SyS_mq_timedsend 3 64107 NULL 120096+SyS_mq_timedsend_64107 SyS_mq_timedsend 3 64107 NULL
113798+rdma_addr_size_64116 rdma_addr_size 0 64116 NULL 120097+rdma_addr_size_64116 rdma_addr_size 0 64116 NULL
113799+do_load_xattr_datum_64118 do_load_xattr_datum 0 64118 NULL 120098+do_load_xattr_datum_64118 do_load_xattr_datum 0 64118 NULL
@@ -113801,16 +120100,17 @@ index 0000000..9529806
113801+ext4_prepare_inline_data_64124 ext4_prepare_inline_data 3 64124 NULL 120100+ext4_prepare_inline_data_64124 ext4_prepare_inline_data 3 64124 NULL
113802+init_bch_64130 init_bch 1-2 64130 NULL 120101+init_bch_64130 init_bch 1-2 64130 NULL
113803+ablkcipher_copy_iv_64140 ablkcipher_copy_iv 3 64140 NULL 120102+ablkcipher_copy_iv_64140 ablkcipher_copy_iv 3 64140 NULL
113804+read_div_64147 read_div 0 64147 NULL
113805+dlfb_ops_write_64150 dlfb_ops_write 3 64150 NULL 120103+dlfb_ops_write_64150 dlfb_ops_write 3 64150 NULL
113806+cpumask_scnprintf_64170 cpumask_scnprintf 0-2 64170 NULL 120104+cpumask_scnprintf_64170 cpumask_scnprintf 0-2 64170 NULL
120105+kernfs_iop_setxattr_64220 kernfs_iop_setxattr 4 64220 NULL
113807+xfs_vm_direct_IO_64223 xfs_vm_direct_IO 4 64223 NULL 120106+xfs_vm_direct_IO_64223 xfs_vm_direct_IO 4 64223 NULL
113808+read_pulse_64227 read_pulse 0-3 64227 NULL 120107+read_pulse_64227 read_pulse 0-3 64227 NULL
113809+ea_len_64229 ea_len 0 64229 NULL 120108+ea_len_64229 ea_len 0 64229 NULL
120109+xfs_rtmodify_summary_64265 xfs_rtmodify_summary 0 64265 NULL
113810+io_capture_transfer_64276 io_capture_transfer 4 64276 NULL 120110+io_capture_transfer_64276 io_capture_transfer 4 64276 NULL
113811+btrfs_file_extent_offset_64278 btrfs_file_extent_offset 0 64278 NULL 120111+btrfs_file_extent_offset_64278 btrfs_file_extent_offset 0 64278 NULL
113812+sta_current_tx_rate_read_64286 sta_current_tx_rate_read 3 64286 NULL 120112+sta_current_tx_rate_read_64286 sta_current_tx_rate_read 3 64286 NULL
113813+xfs_dir_cilookup_result_64288 xfs_dir_cilookup_result 3 64288 NULL nohasharray 120113+xfs_dir_cilookup_result_64288 xfs_dir_cilookup_result 3-0 64288 NULL nohasharray
113814+event_id_read_64288 event_id_read 3 64288 &xfs_dir_cilookup_result_64288 120114+event_id_read_64288 event_id_read 3 64288 &xfs_dir_cilookup_result_64288
113815+ocfs2_block_check_validate_bhs_64302 ocfs2_block_check_validate_bhs 0 64302 NULL 120115+ocfs2_block_check_validate_bhs_64302 ocfs2_block_check_validate_bhs 0 64302 NULL
113816+snd_hda_get_sub_nodes_64304 snd_hda_get_sub_nodes 0 64304 NULL 120116+snd_hda_get_sub_nodes_64304 snd_hda_get_sub_nodes 0 64304 NULL
@@ -113835,7 +120135,8 @@ index 0000000..9529806
113835+read_file_spectral_short_repeat_64431 read_file_spectral_short_repeat 3 64431 NULL 120135+read_file_spectral_short_repeat_64431 read_file_spectral_short_repeat 3 64431 NULL
113836+ax25_recvmsg_64441 ax25_recvmsg 4 64441 NULL 120136+ax25_recvmsg_64441 ax25_recvmsg 4 64441 NULL
113837+single_open_size_64483 single_open_size 4 64483 NULL 120137+single_open_size_64483 single_open_size 4 64483 NULL
113838+p54_parse_rssical_64493 p54_parse_rssical 3 64493 NULL 120138+p54_parse_rssical_64493 p54_parse_rssical 3 64493 NULL nohasharray
120139+xfs_inode_ag_walk_64493 xfs_inode_ag_walk 0 64493 &p54_parse_rssical_64493
113839+msg_data_sz_64503 msg_data_sz 0 64503 NULL 120140+msg_data_sz_64503 msg_data_sz 0 64503 NULL
113840+remove_uuid_64505 remove_uuid 4 64505 NULL 120141+remove_uuid_64505 remove_uuid 4 64505 NULL
113841+crypto_blkcipher_alignmask_64520 crypto_blkcipher_alignmask 0 64520 NULL 120142+crypto_blkcipher_alignmask_64520 crypto_blkcipher_alignmask 0 64520 NULL
@@ -113858,7 +120159,6 @@ index 0000000..9529806
113858+efx_tsoh_get_buffer_64664 efx_tsoh_get_buffer 3 64664 NULL 120159+efx_tsoh_get_buffer_64664 efx_tsoh_get_buffer 3 64664 NULL
113859+rx_rx_out_of_mpdu_nodes_read_64668 rx_rx_out_of_mpdu_nodes_read 3 64668 NULL 120160+rx_rx_out_of_mpdu_nodes_read_64668 rx_rx_out_of_mpdu_nodes_read 3 64668 NULL
113860+nr_free_zone_pages_64680 nr_free_zone_pages 0 64680 NULL 120161+nr_free_zone_pages_64680 nr_free_zone_pages 0 64680 NULL
113861+sec_bulk_write_64691 sec_bulk_write 2-3 64691 NULL
113862+snd_pcm_oss_capture_position_fixup_64713 snd_pcm_oss_capture_position_fixup 0 64713 NULL 120162+snd_pcm_oss_capture_position_fixup_64713 snd_pcm_oss_capture_position_fixup 0 64713 NULL
113863+dapm_bias_read_file_64715 dapm_bias_read_file 3 64715 NULL 120163+dapm_bias_read_file_64715 dapm_bias_read_file 3 64715 NULL
113864+atomic_add_return_64720 atomic_add_return 0-1 64720 NULL 120164+atomic_add_return_64720 atomic_add_return 0-1 64720 NULL
@@ -113877,8 +120177,10 @@ index 0000000..9529806
113877+ecryptfs_send_miscdev_64816 ecryptfs_send_miscdev 2 64816 NULL 120177+ecryptfs_send_miscdev_64816 ecryptfs_send_miscdev 2 64816 NULL
113878+do_kimage_alloc_64827 do_kimage_alloc 3 64827 NULL 120178+do_kimage_alloc_64827 do_kimage_alloc 3 64827 NULL
113879+altera_set_dr_pre_64862 altera_set_dr_pre 2 64862 NULL 120179+altera_set_dr_pre_64862 altera_set_dr_pre 2 64862 NULL
120180+pci_vc_do_save_buffer_64876 pci_vc_do_save_buffer 0 64876 NULL
113880+lprocfs_write_u64_helper_64880 lprocfs_write_u64_helper 2 64880 NULL 120181+lprocfs_write_u64_helper_64880 lprocfs_write_u64_helper 2 64880 NULL
113881+ffs_epfile_io_64886 ffs_epfile_io 3 64886 NULL 120182+ffs_epfile_io_64886 ffs_epfile_io 3 64886 NULL
120183+xfs_imap_lookup_64906 xfs_imap_lookup 0 64906 NULL
113882+ieee80211_if_read_ave_beacon_64924 ieee80211_if_read_ave_beacon 3 64924 NULL 120184+ieee80211_if_read_ave_beacon_64924 ieee80211_if_read_ave_beacon 3 64924 NULL
113883+ip_options_get_from_user_64958 ip_options_get_from_user 4 64958 NULL 120185+ip_options_get_from_user_64958 ip_options_get_from_user 4 64958 NULL
113884+traceprobe_probes_write_64969 traceprobe_probes_write 3 64969 NULL 120186+traceprobe_probes_write_64969 traceprobe_probes_write 3 64969 NULL
@@ -113892,12 +120194,13 @@ index 0000000..9529806
113892+batadv_socket_write_65083 batadv_socket_write 3 65083 NULL 120194+batadv_socket_write_65083 batadv_socket_write 3 65083 NULL
113893+ocfs2_truncate_cluster_pages_65086 ocfs2_truncate_cluster_pages 2 65086 NULL 120195+ocfs2_truncate_cluster_pages_65086 ocfs2_truncate_cluster_pages 2 65086 NULL
113894+ath9k_dump_mci_btcoex_65090 ath9k_dump_mci_btcoex 3-0 65090 NULL 120196+ath9k_dump_mci_btcoex_65090 ath9k_dump_mci_btcoex 3-0 65090 NULL
113895+uasp_alloc_cmd_65097 uasp_alloc_cmd 0 65097 NULL
113896+generic_ocp_write_65107 generic_ocp_write 4 65107 NULL 120197+generic_ocp_write_65107 generic_ocp_write 4 65107 NULL
120198+__xfs_bmapi_allocate_65142 __xfs_bmapi_allocate 0 65142 NULL
113897+rx_rx_done_read_65217 rx_rx_done_read 3 65217 NULL 120199+rx_rx_done_read_65217 rx_rx_done_read 3 65217 NULL
113898+print_endpoint_stat_65232 print_endpoint_stat 3-4-0 65232 NULL 120200+print_endpoint_stat_65232 print_endpoint_stat 3-4-0 65232 NULL
113899+whci_n_caps_65247 whci_n_caps 0 65247 NULL 120201+whci_n_caps_65247 whci_n_caps 0 65247 NULL
113900+kmalloc_parameter_65279 kmalloc_parameter 1 65279 NULL 120202+kmalloc_parameter_65279 kmalloc_parameter 1 65279 NULL
120203+xfs_btree_check_ptr_65281 xfs_btree_check_ptr 0 65281 NULL
113901+compat_core_sys_select_65285 compat_core_sys_select 1 65285 NULL 120204+compat_core_sys_select_65285 compat_core_sys_select 1 65285 NULL
113902+mpi_set_buffer_65294 mpi_set_buffer 3 65294 NULL 120205+mpi_set_buffer_65294 mpi_set_buffer 3 65294 NULL
113903+redirected_tty_write_65297 redirected_tty_write 3 65297 NULL 120206+redirected_tty_write_65297 redirected_tty_write 3 65297 NULL
@@ -113918,16 +120221,115 @@ index 0000000..9529806
113918+usb_alloc_coherent_65444 usb_alloc_coherent 2 65444 NULL 120221+usb_alloc_coherent_65444 usb_alloc_coherent 2 65444 NULL
113919+il_dbgfs_wd_timeout_write_65464 il_dbgfs_wd_timeout_write 3 65464 NULL 120222+il_dbgfs_wd_timeout_write_65464 il_dbgfs_wd_timeout_write 3 65464 NULL
113920+clear_user_65470 clear_user 2 65470 NULL 120223+clear_user_65470 clear_user 2 65470 NULL
120224+xfs_alloc_lookup_ge_65481 xfs_alloc_lookup_ge 0 65481 NULL
113921+dpcm_state_read_file_65489 dpcm_state_read_file 3 65489 NULL 120225+dpcm_state_read_file_65489 dpcm_state_read_file 3 65489 NULL
113922+lookup_inline_extent_backref_65493 lookup_inline_extent_backref 9 65493 NULL 120226+lookup_inline_extent_backref_65493 lookup_inline_extent_backref 9 65493 NULL
113923+nvme_trans_standard_inquiry_page_65526 nvme_trans_standard_inquiry_page 4 65526 NULL 120227+nvme_trans_standard_inquiry_page_65526 nvme_trans_standard_inquiry_page 4 65526 NULL
113924+tree_mod_log_eb_copy_65535 tree_mod_log_eb_copy 6 65535 NULL 120228+tree_mod_log_eb_copy_65535 tree_mod_log_eb_copy 6 65535 NULL
113925diff --git a/tools/gcc/size_overflow_plugin.c b/tools/gcc/size_overflow_plugin.c 120229diff --git a/tools/gcc/size_overflow_plugin/size_overflow_hash_aux.data b/tools/gcc/size_overflow_plugin/size_overflow_hash_aux.data
120230new file mode 100644
120231index 0000000..560cd7b
120232--- /dev/null
120233+++ b/tools/gcc/size_overflow_plugin/size_overflow_hash_aux.data
120234@@ -0,0 +1,92 @@
120235+spa_set_aux_vdevs_746 spa_set_aux_vdevs 3 746 NULL
120236+zfs_lookup_2144 zfs_lookup 0 2144 NULL
120237+mappedread_2627 mappedread 2 2627 NULL
120238+vdev_disk_dio_alloc_2957 vdev_disk_dio_alloc 1 2957 NULL
120239+nv_alloc_pushpage_spl_4286 nv_alloc_pushpage_spl 2 4286 NULL
120240+zpl_xattr_get_4574 zpl_xattr_get 0 4574 NULL
120241+sa_replace_all_by_template_5699 sa_replace_all_by_template 3 5699 NULL
120242+dmu_write_6048 dmu_write 4-3 6048 NULL
120243+dmu_buf_hold_array_6095 dmu_buf_hold_array 4-3 6095 NULL
120244+update_pages_6225 update_pages 2-3 6225 NULL
120245+bio_nr_pages_7117 bio_nr_pages 0-2 7117 NULL
120246+dmu_buf_hold_array_by_bonus_8562 dmu_buf_hold_array_by_bonus 3-2 8562 NULL
120247+zpios_dmu_write_8858 zpios_dmu_write 4-5 8858 NULL
120248+ddi_copyout_9401 ddi_copyout 3 9401 NULL
120249+avl_numnodes_12384 avl_numnodes 0 12384 NULL
120250+dmu_write_uio_dnode_12473 dmu_write_uio_dnode 3 12473 NULL
120251+dmu_xuio_init_12866 dmu_xuio_init 2 12866 NULL
120252+zpl_read_common_14389 zpl_read_common 0 14389 NULL
120253+dmu_snapshot_realname_14632 dmu_snapshot_realname 4 14632 NULL
120254+kmem_alloc_debug_14852 kmem_alloc_debug 1 14852 NULL
120255+kmalloc_node_nofail_15151 kmalloc_node_nofail 1 15151 NULL
120256+dmu_write_uio_16351 dmu_write_uio 4 16351 NULL
120257+zfs_log_write_16524 zfs_log_write 6-5 16524 NULL
120258+sa_build_layouts_16910 sa_build_layouts 3 16910 NULL
120259+dsl_dir_namelen_17053 dsl_dir_namelen 0 17053 NULL
120260+kcopy_copy_to_user_17336 kcopy_copy_to_user 5 17336 NULL
120261+sa_add_layout_entry_17507 sa_add_layout_entry 3 17507 NULL
120262+sa_attr_table_setup_18029 sa_attr_table_setup 3 18029 NULL
120263+uiocopy_18680 uiocopy 2 18680 NULL
120264+dmu_buf_hold_array_by_dnode_19125 dmu_buf_hold_array_by_dnode 2-3 19125 NULL
120265+zpl_acl_from_xattr_21141 zpl_acl_from_xattr 2 21141 NULL
120266+dsl_pool_tx_assign_init_22518 dsl_pool_tx_assign_init 2 22518 NULL
120267+nvlist_lookup_byte_array_22527 nvlist_lookup_byte_array 0 22527 NULL
120268+sa_replace_all_by_template_locked_22533 sa_replace_all_by_template_locked 3 22533 NULL
120269+tsd_hash_table_init_22559 tsd_hash_table_init 1 22559 NULL
120270+spa_vdev_remove_aux_23966 spa_vdev_remove_aux 4 23966 NULL
120271+zpl_xattr_acl_set_access_24129 zpl_xattr_acl_set_access 4 24129 NULL
120272+dmu_assign_arcbuf_24622 dmu_assign_arcbuf 2 24622 NULL
120273+zap_lookup_norm_25166 zap_lookup_norm 9 25166 NULL
120274+dmu_prealloc_25456 dmu_prealloc 4-3 25456 NULL
120275+kmalloc_nofail_26347 kmalloc_nofail 1 26347 NULL
120276+zfsctl_snapshot_zpath_27578 zfsctl_snapshot_zpath 2 27578 NULL
120277+zpios_dmu_read_30015 zpios_dmu_read 4-5 30015 NULL
120278+splat_write_30943 splat_write 3 30943 NULL
120279+zpl_xattr_get_sa_31183 zpl_xattr_get_sa 0 31183 NULL
120280+dmu_read_uio_31467 dmu_read_uio 4 31467 NULL
120281+zfs_replay_fuids_31479 zfs_replay_fuids 4 31479 NULL
120282+spa_history_log_to_phys_31632 spa_history_log_to_phys 0-1 31632 NULL
120283+__zpl_xattr_get_32601 __zpl_xattr_get 0 32601 NULL
120284+proc_copyout_string_34049 proc_copyout_string 2 34049 NULL
120285+nv_alloc_sleep_spl_34544 nv_alloc_sleep_spl 2 34544 NULL
120286+nv_alloc_nosleep_spl_34761 nv_alloc_nosleep_spl 2 34761 NULL
120287+zap_leaf_array_match_36922 zap_leaf_array_match 4 36922 NULL
120288+copyinstr_36980 copyinstr 3 36980 NULL
120289+zpl_xattr_acl_set_default_37864 zpl_xattr_acl_set_default 4 37864 NULL
120290+splat_read_38116 splat_read 3 38116 NULL
120291+sa_setup_38756 sa_setup 4 38756 NULL
120292+vdev_disk_physio_39898 vdev_disk_physio 3 39898 NULL
120293+arc_buf_size_39982 arc_buf_size 0 39982 NULL
120294+kzalloc_nofail_40719 kzalloc_nofail 1 40719 NULL
120295+fuidstr_to_sid_40777 fuidstr_to_sid 4 40777 NULL
120296+vdev_raidz_matrix_reconstruct_40852 vdev_raidz_matrix_reconstruct 2-3 40852 NULL
120297+sa_find_layout_40892 sa_find_layout 4 40892 NULL
120298+zpl_xattr_get_dir_41918 zpl_xattr_get_dir 0 41918 NULL
120299+zfs_sa_get_xattr_42600 zfs_sa_get_xattr 0 42600 NULL
120300+zpl_xattr_acl_set_42808 zpl_xattr_acl_set 4 42808 NULL
120301+xdr_dec_array_43091 xdr_dec_array 5 43091 NULL
120302+dsl_dataset_namelen_43136 dsl_dataset_namelen 0 43136 NULL
120303+kcopy_write_43683 kcopy_write 3 43683 NULL
120304+uiomove_44355 uiomove 2 44355 NULL
120305+dmu_read_44418 dmu_read 4-3 44418 NULL
120306+ddi_copyin_44846 ddi_copyin 3 44846 NULL
120307+kcopy_do_get_45061 kcopy_do_get 5 45061 NULL
120308+copyin_45945 copyin 3 45945 NULL
120309+zil_itx_create_46555 zil_itx_create 2 46555 NULL
120310+dmu_write_uio_dbuf_48064 dmu_write_uio_dbuf 3 48064 NULL
120311+blk_rq_pos_48233 blk_rq_pos 0 48233 NULL
120312+spa_history_write_49650 spa_history_write 3 49650 NULL
120313+kcopy_copy_pages_to_user_49823 kcopy_copy_pages_to_user 3-4 49823 NULL
120314+zfs_log_write_50162 zfs_log_write 6-5 50162 NULL
120315+i_fm_alloc_51038 i_fm_alloc 2 51038 NULL
120316+copyout_51409 copyout 3 51409 NULL
120317+zvol_log_write_54898 zvol_log_write 4-3 54898 NULL
120318+zfs_acl_node_alloc_55641 zfs_acl_node_alloc 1 55641 NULL
120319+get_nvlist_56685 get_nvlist 2 56685 NULL
120320+zprop_get_numprops_56820 zprop_get_numprops 0 56820 NULL
120321+splat_taskq_test4_common_59829 splat_taskq_test4_common 5 59829 NULL
120322+zfs_replay_domain_cnt_61399 zfs_replay_domain_cnt 0 61399 NULL
120323+zpios_write_61823 zpios_write 3 61823 NULL
120324+proc_copyin_string_62019 proc_copyin_string 4 62019 NULL
120325+random_get_pseudo_bytes_64611 random_get_pseudo_bytes 2 64611 NULL
120326+zpios_read_64734 zpios_read 3 64734 NULL
120327diff --git a/tools/gcc/size_overflow_plugin/size_overflow_plugin.c b/tools/gcc/size_overflow_plugin/size_overflow_plugin.c
113926new file mode 100644 120328new file mode 100644
113927index 0000000..fa0524c 120329index 0000000..e6fe17b
113928--- /dev/null 120330--- /dev/null
113929+++ b/tools/gcc/size_overflow_plugin.c 120331+++ b/tools/gcc/size_overflow_plugin/size_overflow_plugin.c
113930@@ -0,0 +1,4101 @@ 120332@@ -0,0 +1,259 @@
113931+/* 120333+/*
113932+ * Copyright 2011-2014 by Emese Revfy <re.emese@gmail.com> 120334+ * Copyright 2011-2014 by Emese Revfy <re.emese@gmail.com>
113933+ * Licensed under the GPL v2, or (at your option) v3 120335+ * Licensed under the GPL v2, or (at your option) v3
@@ -113943,99 +120345,27 @@ index 0000000..fa0524c
113943+ * The recomputed argument is checked against TYPE_MAX and an event is logged on overflow and the triggering process is killed. 120345+ * The recomputed argument is checked against TYPE_MAX and an event is logged on overflow and the triggering process is killed.
113944+ * 120346+ *
113945+ * Usage: 120347+ * Usage:
113946+ * $ # for 4.5/4.6/C based 4.7 120348+ * $ make
113947+ * $ gcc -I`gcc -print-file-name=plugin`/include -I`gcc -print-file-name=plugin`/include/c-family -fPIC -shared -O2 -std=gnu99 -ggdb -o size_overflow_plugin.so size_overflow_plugin.c 120349+ * $ make run
113948+ * $ # for C++ based 4.7/4.8+
113949+ * $ g++ -I`g++ -print-file-name=plugin`/include -I`g++ -print-file-name=plugin`/include/c-family -fPIC -shared -O2 -std=gnu++98 -fno-rtti -ggdb -o size_overflow_plugin.so size_overflow_plugin.c
113950+ *
113951+ * $ gcc -fplugin=./size_overflow_plugin.so test.c -O2
113952+ */ 120350+ */
113953+ 120351+
113954+#include "gcc-common.h" 120352+#include "gcc-common.h"
120353+#include "size_overflow.h"
113955+ 120354+
113956+int plugin_is_GPL_compatible; 120355+int plugin_is_GPL_compatible;
113957+ 120356+
113958+static struct plugin_info size_overflow_plugin_info = { 120357+tree report_size_overflow_decl;
113959+ .version = "20140317",
113960+ .help = "no-size-overflow\tturn off size overflow checking\n",
113961+};
113962+ 120358+
113963+#define BEFORE_STMT true 120359+tree size_overflow_type_HI;
113964+#define AFTER_STMT false 120360+tree size_overflow_type_SI;
113965+#define CREATE_NEW_VAR NULL_TREE 120361+tree size_overflow_type_DI;
113966+#define CODES_LIMIT 32 120362+tree size_overflow_type_TI;
113967+#define MAX_PARAM 31
113968+#define VEC_LEN 128
113969+#define RET_CHECK NULL_TREE
113970+#define CANNOT_FIND_ARG 32
113971+#define WRONG_NODE 32
113972+#define NOT_INTENTIONAL_ASM NULL
113973+#define MIN_CHECK true
113974+#define MAX_CHECK false
113975+ 120363+
113976+#define TURN_OFF_ASM_STR "# size_overflow MARK_TURN_OFF " 120364+static struct plugin_info size_overflow_plugin_info = {
113977+#define YES_ASM_STR "# size_overflow MARK_YES " 120365+ .version = "20140517",
113978+#define OK_ASM_STR "# size_overflow " 120366+ .help = "no-size-overflow\tturn off size overflow checking\n",
113979+
113980+struct size_overflow_hash {
113981+ const struct size_overflow_hash * const next;
113982+ const char * const name;
113983+ const unsigned int param;
113984+};
113985+
113986+#include "size_overflow_hash.h"
113987+
113988+enum mark {
113989+ MARK_NO, MARK_YES, MARK_NOT_INTENTIONAL, MARK_TURN_OFF
113990+};
113991+
113992+static unsigned int call_count;
113993+
113994+enum stmt_flags {
113995+ MY_STMT, NO_CAST_CHECK, VISITED_STMT, NO_FLAGS
113996+};
113997+
113998+struct visited {
113999+ struct visited *next;
114000+ const_tree fndecl;
114001+ unsigned int num;
114002+};
114003+
114004+struct next_cgraph_node {
114005+ struct next_cgraph_node *next;
114006+ struct cgraph_node *current_function;
114007+ tree callee_fndecl;
114008+ unsigned int num;
114009+};
114010+
114011+struct interesting_node {
114012+ struct interesting_node *next;
114013+ gimple first_stmt;
114014+ const_tree fndecl;
114015+ tree node;
114016+#if BUILDING_GCC_VERSION <= 4007
114017+ VEC(tree, gc) *last_nodes;
114018+#else
114019+ vec<tree, va_gc> *last_nodes;
114020+#endif
114021+ unsigned int num;
114022+ enum mark intentional_attr_decl;
114023+ enum mark intentional_attr_cur_fndecl;
114024+ gimple intentional_mark_from_gimple;
114025+}; 120367+};
114026+ 120368+
114027+static tree report_size_overflow_decl;
114028+
114029+static tree expand(struct pointer_set_t *visited, struct cgraph_node *caller_node, tree lhs);
114030+static void set_conditions(struct pointer_set_t *visited, bool *interesting_conditions, const_tree lhs);
114031+static void walk_use_def(struct pointer_set_t *visited, struct interesting_node *cur_node, tree lhs);
114032+static enum mark search_intentional(struct pointer_set_t *visited, const_tree lhs);
114033+static void search_size_overflow_attribute(struct pointer_set_t *visited, tree lhs);
114034+
114035+static void check_size_overflow(struct cgraph_node *caller_node, gimple stmt, tree size_overflow_type, tree cast_rhs, tree rhs, bool before);
114036+static tree get_size_overflow_type(gimple stmt, const_tree node);
114037+static tree dup_assign(struct pointer_set_t *visited, gimple oldstmt, const_tree node, tree rhs1, tree rhs2, tree __unused rhs3);
114038+
114039+static tree handle_size_overflow_attribute(tree *node, tree __unused name, tree args, int __unused flags, bool *no_add_attrs) 120369+static tree handle_size_overflow_attribute(tree *node, tree __unused name, tree args, int __unused flags, bool *no_add_attrs)
114040+{ 120370+{
114041+ unsigned int arg_count; 120371+ unsigned int arg_count;
@@ -114131,117 +120461,166 @@ index 0000000..fa0524c
114131+ register_attribute(&intentional_overflow_attr); 120461+ register_attribute(&intentional_overflow_attr);
114132+} 120462+}
114133+ 120463+
114134+static enum stmt_flags get_stmt_flag(gimple stmt) 120464+static tree create_typedef(tree type, const char* ident)
114135+{ 120465+{
114136+ bool bit_1, bit_2; 120466+ tree new_type, decl;
114137+
114138+ bit_1 = gimple_plf(stmt, GF_PLF_1);
114139+ bit_2 = gimple_plf(stmt, GF_PLF_2);
114140+ 120467+
114141+ if (!bit_1 && !bit_2) 120468+ new_type = build_variant_type_copy(type);
114142+ return NO_FLAGS; 120469+ decl = build_decl(BUILTINS_LOCATION, TYPE_DECL, get_identifier(ident), new_type);
114143+ if (bit_1 && bit_2) 120470+ DECL_ORIGINAL_TYPE(decl) = type;
114144+ return MY_STMT; 120471+ TYPE_NAME(new_type) = decl;
114145+ if (!bit_1 && bit_2) 120472+ return new_type;
114146+ return VISITED_STMT;
114147+ return NO_CAST_CHECK;
114148+} 120473+}
114149+ 120474+
114150+static void set_stmt_flag(gimple stmt, enum stmt_flags new_flag) 120475+// Create the noreturn report_size_overflow() function decl.
120476+static void size_overflow_start_unit(void __unused *gcc_data, void __unused *user_data)
114151+{ 120477+{
114152+ bool bit_1, bit_2; 120478+ tree const_char_ptr_type_node;
120479+ tree fntype;
114153+ 120480+
114154+ switch (new_flag) { 120481+ const_char_ptr_type_node = build_pointer_type(build_type_variant(char_type_node, 1, 0));
114155+ case NO_FLAGS: 120482+
114156+ bit_1 = bit_2 = false; 120483+ size_overflow_type_HI = create_typedef(intHI_type_node, "size_overflow_type_HI");
114157+ break; 120484+ size_overflow_type_SI = create_typedef(intSI_type_node, "size_overflow_type_SI");
114158+ case MY_STMT: 120485+ size_overflow_type_DI = create_typedef(intDI_type_node, "size_overflow_type_DI");
114159+ bit_1 = bit_2 = true; 120486+ size_overflow_type_TI = create_typedef(intTI_type_node, "size_overflow_type_TI");
114160+ break; 120487+
114161+ case VISITED_STMT: 120488+ // void report_size_overflow(const char *loc_file, unsigned int loc_line, const char *current_func, const char *ssa_var)
114162+ bit_1 = false; 120489+ fntype = build_function_type_list(void_type_node,
114163+ bit_2 = true; 120490+ const_char_ptr_type_node,
114164+ break; 120491+ unsigned_type_node,
114165+ case NO_CAST_CHECK: 120492+ const_char_ptr_type_node,
114166+ bit_1 = true; 120493+ const_char_ptr_type_node,
114167+ bit_2 = false; 120494+ NULL_TREE);
114168+ break; 120495+ report_size_overflow_decl = build_fn_decl("report_size_overflow", fntype);
114169+ default:
114170+ gcc_unreachable();
114171+ }
114172+ 120496+
114173+ gimple_set_plf(stmt, GF_PLF_1, bit_1); 120497+ DECL_ASSEMBLER_NAME(report_size_overflow_decl);
114174+ gimple_set_plf(stmt, GF_PLF_2, bit_2); 120498+ TREE_PUBLIC(report_size_overflow_decl) = 1;
120499+ DECL_EXTERNAL(report_size_overflow_decl) = 1;
120500+ DECL_ARTIFICIAL(report_size_overflow_decl) = 1;
120501+ TREE_THIS_VOLATILE(report_size_overflow_decl) = 1;
114175+} 120502+}
114176+ 120503+
114177+static bool is_bool(const_tree node)
114178+{
114179+ const_tree type;
114180+ 120504+
114181+ if (node == NULL_TREE) 120505+extern struct gimple_opt_pass pass_dce;
114182+ return false;
114183+ 120506+
114184+ type = TREE_TYPE(node); 120507+static struct opt_pass *make_dce_pass(void)
114185+ if (!INTEGRAL_TYPE_P(type)) 120508+{
114186+ return false; 120509+#if BUILDING_GCC_VERSION >= 4009
114187+ if (TREE_CODE(type) == BOOLEAN_TYPE) 120510+ return make_pass_dce(g);
114188+ return true; 120511+#else
114189+ if (TYPE_PRECISION(type) == 1) 120512+ return &pass_dce.pass;
114190+ return true; 120513+#endif
114191+ return false;
114192+} 120514+}
114193+ 120515+
114194+static bool skip_types(const_tree var) 120516+
120517+int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version)
114195+{ 120518+{
114196+ tree type; 120519+ int i;
114197+ enum tree_code code; 120520+ const char * const plugin_name = plugin_info->base_name;
120521+ const int argc = plugin_info->argc;
120522+ const struct plugin_argument * const argv = plugin_info->argv;
120523+ bool enable = true;
120524+ struct register_pass_info insert_size_overflow_asm_pass_info;
120525+ struct register_pass_info __unused dump_before_pass_info;
120526+ struct register_pass_info __unused dump_after_pass_info;
120527+ struct register_pass_info insert_size_overflow_check_info;
120528+ struct register_pass_info dce_pass_info;
120529+ static const struct ggc_root_tab gt_ggc_r_gt_size_overflow[] = {
120530+ {
120531+ .base = &report_size_overflow_decl,
120532+ .nelt = 1,
120533+ .stride = sizeof(report_size_overflow_decl),
120534+ .cb = &gt_ggc_mx_tree_node,
120535+ .pchw = &gt_pch_nx_tree_node
120536+ },
120537+ LAST_GGC_ROOT_TAB
120538+ };
114198+ 120539+
114199+ if (is_gimple_constant(var)) 120540+ insert_size_overflow_asm_pass_info.pass = make_insert_size_overflow_asm_pass();
114200+ return true; 120541+ insert_size_overflow_asm_pass_info.reference_pass_name = "ssa";
120542+ insert_size_overflow_asm_pass_info.ref_pass_instance_number = 1;
120543+ insert_size_overflow_asm_pass_info.pos_op = PASS_POS_INSERT_AFTER;
114201+ 120544+
114202+ switch (TREE_CODE(var)) { 120545+ dump_before_pass_info.pass = make_dump_pass();
114203+ case ADDR_EXPR: 120546+ dump_before_pass_info.reference_pass_name = "increase_alignment";
114204+#if BUILDING_GCC_VERSION >= 4006 120547+ dump_before_pass_info.ref_pass_instance_number = 1;
114205+ case MEM_REF: 120548+ dump_before_pass_info.pos_op = PASS_POS_INSERT_BEFORE;
114206+#endif 120549+
114207+ case ARRAY_REF: 120550+ insert_size_overflow_check_info.pass = make_insert_size_overflow_check();
114208+ case BIT_FIELD_REF: 120551+ insert_size_overflow_check_info.reference_pass_name = "increase_alignment";
114209+ case INDIRECT_REF: 120552+ insert_size_overflow_check_info.ref_pass_instance_number = 1;
114210+ case TARGET_MEM_REF: 120553+ insert_size_overflow_check_info.pos_op = PASS_POS_INSERT_BEFORE;
114211+ case COMPONENT_REF: 120554+
114212+ case VAR_DECL: 120555+ dump_after_pass_info.pass = make_dump_pass();
114213+ case VIEW_CONVERT_EXPR: 120556+ dump_after_pass_info.reference_pass_name = "increase_alignment";
114214+ return true; 120557+ dump_after_pass_info.ref_pass_instance_number = 1;
114215+ default: 120558+ dump_after_pass_info.pos_op = PASS_POS_INSERT_BEFORE;
114216+ break; 120559+
120560+ dce_pass_info.pass = make_dce_pass();
120561+ dce_pass_info.reference_pass_name = "vrp";
120562+ dce_pass_info.ref_pass_instance_number = 1;
120563+ dce_pass_info.pos_op = PASS_POS_INSERT_AFTER;
120564+
120565+ if (!plugin_default_version_check(version, &gcc_version)) {
120566+ error(G_("incompatible gcc/plugin versions"));
120567+ return 1;
114217+ } 120568+ }
114218+ 120569+
114219+ code = TREE_CODE(var); 120570+ for (i = 0; i < argc; ++i) {
114220+ gcc_assert(code == SSA_NAME || code == PARM_DECL); 120571+ if (!strcmp(argv[i].key, "no-size-overflow")) {
120572+ enable = false;
120573+ continue;
120574+ }
120575+ error(G_("unkown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key);
120576+ }
114221+ 120577+
114222+ type = TREE_TYPE(var); 120578+ register_callback(plugin_name, PLUGIN_INFO, NULL, &size_overflow_plugin_info);
114223+ switch (TREE_CODE(type)) { 120579+ if (enable) {
114224+ case INTEGER_TYPE: 120580+ register_callback(plugin_name, PLUGIN_START_UNIT, &size_overflow_start_unit, NULL);
114225+ case ENUMERAL_TYPE: 120581+ register_callback(plugin_name, PLUGIN_REGISTER_GGC_ROOTS, NULL, (void *)&gt_ggc_r_gt_size_overflow);
114226+ return false; 120582+ register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &insert_size_overflow_asm_pass_info);
114227+ case BOOLEAN_TYPE: 120583+// register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &dump_before_pass_info);
114228+ return is_bool(var); 120584+ register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &insert_size_overflow_check_info);
114229+ default: 120585+// register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &dump_after_pass_info);
114230+ return true; 120586+ register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &dce_pass_info);
114231+ } 120587+ }
120588+ register_callback(plugin_name, PLUGIN_ATTRIBUTES, register_attributes, NULL);
120589+
120590+ return 0;
114232+} 120591+}
120592diff --git a/tools/gcc/size_overflow_plugin/size_overflow_plugin_hash.c b/tools/gcc/size_overflow_plugin/size_overflow_plugin_hash.c
120593new file mode 100644
120594index 0000000..0888f6c
120595--- /dev/null
120596+++ b/tools/gcc/size_overflow_plugin/size_overflow_plugin_hash.c
120597@@ -0,0 +1,364 @@
120598+/*
120599+ * Copyright 2011-2014 by Emese Revfy <re.emese@gmail.com>
120600+ * Licensed under the GPL v2, or (at your option) v3
120601+ *
120602+ * Homepage:
120603+ * http://www.grsecurity.net/~ephox/overflow_plugin/
120604+ *
120605+ * Documentation:
120606+ * http://forums.grsecurity.net/viewtopic.php?f=7&t=3043
120607+ *
120608+ * This plugin recomputes expressions of function arguments marked by a size_overflow attribute
120609+ * with double integer precision (DImode/TImode for 32/64 bit integer types).
120610+ * The recomputed argument is checked against TYPE_MAX and an event is logged on overflow and the triggering process is killed.
120611+ *
120612+ * Usage:
120613+ * $ make
120614+ * $ make run
120615+ */
114233+ 120616+
114234+static inline gimple get_def_stmt(const_tree node) 120617+#include "gcc-common.h"
114235+{ 120618+#include "size_overflow.h"
114236+ gcc_assert(node != NULL_TREE);
114237+ 120619+
114238+ if (skip_types(node)) 120620+#include "size_overflow_hash.h"
114239+ return NULL; 120621+#include "size_overflow_hash_aux.h"
114240+ 120622+
114241+ if (TREE_CODE(node) != SSA_NAME) 120623+#define CODES_LIMIT 32
114242+ return NULL;
114243+ return SSA_NAME_DEF_STMT(node);
114244+}
114245+ 120624+
114246+static unsigned char get_tree_code(const_tree type) 120625+static unsigned char get_tree_code(const_tree type)
114247+{ 120626+{
@@ -114375,7 +120754,17 @@ index 0000000..fa0524c
114375+ set_node_codes(TREE_VALUE(arg), fn_hash_data); 120754+ set_node_codes(TREE_VALUE(arg), fn_hash_data);
114376+} 120755+}
114377+ 120756+
114378+static const struct size_overflow_hash *get_function_hash(const_tree fndecl) 120757+static const struct size_overflow_hash *get_proper_hash_chain(const struct size_overflow_hash *entry, const char *func_name)
120758+{
120759+ while (entry) {
120760+ if (!strcmp(entry->name, func_name))
120761+ return entry;
120762+ entry = entry->next;
120763+ }
120764+ return NULL;
120765+}
120766+
120767+const struct size_overflow_hash *get_function_hash(const_tree fndecl)
114379+{ 120768+{
114380+ const struct size_overflow_hash *entry; 120769+ const struct size_overflow_hash *entry;
114381+ struct function_hash fn_hash_data; 120770+ struct function_hash fn_hash_data;
@@ -114395,13 +120784,11 @@ index 0000000..fa0524c
114395+ set_hash(func_name, &fn_hash_data); 120784+ set_hash(func_name, &fn_hash_data);
114396+ 120785+
114397+ entry = size_overflow_hash[fn_hash_data.hash]; 120786+ entry = size_overflow_hash[fn_hash_data.hash];
114398+ 120787+ entry = get_proper_hash_chain(entry, func_name);
114399+ while (entry) { 120788+ if (entry)
114400+ if (!strcmp(entry->name, func_name)) 120789+ return entry;
114401+ return entry; 120790+ entry = size_overflow_hash_aux[fn_hash_data.hash];
114402+ entry = entry->next; 120791+ return get_proper_hash_chain(entry, func_name);
114403+ }
114404+ return NULL;
114405+} 120792+}
114406+ 120793+
114407+static void print_missing_msg(const_tree func, unsigned int argnum) 120794+static void print_missing_msg(const_tree func, unsigned int argnum)
@@ -114422,7 +120809,7 @@ index 0000000..fa0524c
114422+ inform(loc, "Function %s is missing from the size_overflow hash table +%s+%u+%u+", curfunc, curfunc, argnum, fn_hash_data.hash); 120809+ inform(loc, "Function %s is missing from the size_overflow hash table +%s+%u+%u+", curfunc, curfunc, argnum, fn_hash_data.hash);
114423+} 120810+}
114424+ 120811+
114425+static unsigned int find_arg_number_tree(const_tree arg, const_tree func) 120812+unsigned int find_arg_number_tree(const_tree arg, const_tree func)
114426+{ 120813+{
114427+ tree var; 120814+ tree var;
114428+ unsigned int argnum = 1; 120815+ unsigned int argnum = 1;
@@ -114440,1240 +120827,65 @@ index 0000000..fa0524c
114440+ return CANNOT_FIND_ARG; 120827+ return CANNOT_FIND_ARG;
114441+} 120828+}
114442+ 120829+
114443+static tree create_new_var(tree type) 120830+static const char *get_asm_string(const_gimple stmt)
114444+{
114445+ tree new_var = create_tmp_var(type, "cicus");
114446+
114447+ add_referenced_var(new_var);
114448+ return new_var;
114449+}
114450+
114451+static gimple create_binary_assign(enum tree_code code, gimple stmt, tree rhs1, tree rhs2)
114452+{
114453+ gimple assign;
114454+ gimple_stmt_iterator gsi = gsi_for_stmt(stmt);
114455+ tree type = TREE_TYPE(rhs1);
114456+ tree lhs = create_new_var(type);
114457+
114458+ gcc_assert(types_compatible_p(type, TREE_TYPE(rhs2)));
114459+ assign = gimple_build_assign_with_ops(code, lhs, rhs1, rhs2);
114460+ gimple_assign_set_lhs(assign, make_ssa_name(lhs, assign));
114461+
114462+ gsi_insert_before(&gsi, assign, GSI_NEW_STMT);
114463+ update_stmt(assign);
114464+ set_stmt_flag(assign, MY_STMT);
114465+ return assign;
114466+}
114467+
114468+static tree cast_a_tree(tree type, tree var)
114469+{
114470+ gcc_assert(type != NULL_TREE);
114471+ gcc_assert(var != NULL_TREE);
114472+ gcc_assert(fold_convertible_p(type, var));
114473+
114474+ return fold_convert(type, var);
114475+}
114476+
114477+static tree get_lhs(const_gimple stmt)
114478+{
114479+ switch (gimple_code(stmt)) {
114480+ case GIMPLE_ASSIGN:
114481+ case GIMPLE_CALL:
114482+ return gimple_get_lhs(stmt);
114483+ case GIMPLE_PHI:
114484+ return gimple_phi_result(stmt);
114485+ default:
114486+ return NULL_TREE;
114487+ }
114488+}
114489+
114490+static bool skip_cast(tree dst_type, const_tree rhs, bool force)
114491+{
114492+ const_gimple def_stmt = get_def_stmt(rhs);
114493+
114494+ if (force)
114495+ return false;
114496+
114497+ if (is_gimple_constant(rhs))
114498+ return false;
114499+
114500+ if (!def_stmt || gimple_code(def_stmt) == GIMPLE_NOP)
114501+ return false;
114502+
114503+ if (!types_compatible_p(dst_type, TREE_TYPE(rhs)))
114504+ return false;
114505+
114506+ // DI type can be on 32 bit (from create_assign) but overflow type stays DI
114507+ if (LONG_TYPE_SIZE == GET_MODE_BITSIZE(SImode))
114508+ return false;
114509+
114510+ return true;
114511+}
114512+
114513+static gimple build_cast_stmt(tree dst_type, tree rhs, tree lhs, gimple_stmt_iterator *gsi, bool before, bool force)
114514+{
114515+ gimple assign, def_stmt;
114516+
114517+ gcc_assert(dst_type != NULL_TREE && rhs != NULL_TREE);
114518+ if (gsi_end_p(*gsi) && before == AFTER_STMT)
114519+ gcc_unreachable();
114520+
114521+ def_stmt = get_def_stmt(rhs);
114522+ if (def_stmt && gimple_code(def_stmt) != GIMPLE_NOP && skip_cast(dst_type, rhs, force) && get_stmt_flag(def_stmt) == MY_STMT)
114523+ return def_stmt;
114524+
114525+ if (lhs == CREATE_NEW_VAR)
114526+ lhs = create_new_var(dst_type);
114527+
114528+ assign = gimple_build_assign(lhs, cast_a_tree(dst_type, rhs));
114529+
114530+ if (!gsi_end_p(*gsi)) {
114531+ location_t loc = gimple_location(gsi_stmt(*gsi));
114532+ gimple_set_location(assign, loc);
114533+ }
114534+
114535+ gimple_assign_set_lhs(assign, make_ssa_name(lhs, assign));
114536+
114537+ if (before)
114538+ gsi_insert_before(gsi, assign, GSI_NEW_STMT);
114539+ else
114540+ gsi_insert_after(gsi, assign, GSI_NEW_STMT);
114541+ update_stmt(assign);
114542+ return assign;
114543+}
114544+
114545+static tree cast_to_new_size_overflow_type(gimple stmt, tree rhs, tree size_overflow_type, bool before)
114546+{
114547+ gimple_stmt_iterator gsi;
114548+ tree lhs;
114549+ gimple new_stmt;
114550+
114551+ if (rhs == NULL_TREE)
114552+ return NULL_TREE;
114553+
114554+ gsi = gsi_for_stmt(stmt);
114555+ new_stmt = build_cast_stmt(size_overflow_type, rhs, CREATE_NEW_VAR, &gsi, before, false);
114556+ set_stmt_flag(new_stmt, MY_STMT);
114557+
114558+ lhs = get_lhs(new_stmt);
114559+ gcc_assert(lhs != NULL_TREE);
114560+ return lhs;
114561+}
114562+
114563+static tree cast_to_TI_type(gimple stmt, tree node)
114564+{
114565+ gimple_stmt_iterator gsi;
114566+ gimple cast_stmt;
114567+ tree type = TREE_TYPE(node);
114568+
114569+ if (types_compatible_p(type, intTI_type_node))
114570+ return node;
114571+
114572+ gsi = gsi_for_stmt(stmt);
114573+ cast_stmt = build_cast_stmt(intTI_type_node, node, CREATE_NEW_VAR, &gsi, BEFORE_STMT, false);
114574+ set_stmt_flag(cast_stmt, MY_STMT);
114575+ return gimple_assign_lhs(cast_stmt);
114576+}
114577+
114578+static tree create_assign(struct pointer_set_t *visited, gimple oldstmt, tree rhs1, bool before)
114579+{
114580+ tree lhs, new_lhs;
114581+ gimple_stmt_iterator gsi;
114582+
114583+ if (rhs1 == NULL_TREE) {
114584+ debug_gimple_stmt(oldstmt);
114585+ error("%s: rhs1 is NULL_TREE", __func__);
114586+ gcc_unreachable();
114587+ }
114588+
114589+ switch (gimple_code(oldstmt)) {
114590+ case GIMPLE_ASM:
114591+ lhs = rhs1;
114592+ break;
114593+ case GIMPLE_CALL:
114594+ case GIMPLE_ASSIGN:
114595+ lhs = gimple_get_lhs(oldstmt);
114596+ break;
114597+ default:
114598+ debug_gimple_stmt(oldstmt);
114599+ gcc_unreachable();
114600+ }
114601+
114602+ gsi = gsi_for_stmt(oldstmt);
114603+ pointer_set_insert(visited, oldstmt);
114604+ if (lookup_stmt_eh_lp(oldstmt) != 0) {
114605+ basic_block next_bb, cur_bb;
114606+ const_edge e;
114607+
114608+ gcc_assert(before == false);
114609+ gcc_assert(stmt_can_throw_internal(oldstmt));
114610+ gcc_assert(gimple_code(oldstmt) == GIMPLE_CALL);
114611+ gcc_assert(!gsi_end_p(gsi));
114612+
114613+ cur_bb = gimple_bb(oldstmt);
114614+ next_bb = cur_bb->next_bb;
114615+ e = find_edge(cur_bb, next_bb);
114616+ gcc_assert(e != NULL);
114617+ gcc_assert(e->flags & EDGE_FALLTHRU);
114618+
114619+ gsi = gsi_after_labels(next_bb);
114620+ gcc_assert(!gsi_end_p(gsi));
114621+
114622+ before = true;
114623+ oldstmt = gsi_stmt(gsi);
114624+ }
114625+
114626+ new_lhs = cast_to_new_size_overflow_type(oldstmt, rhs1, get_size_overflow_type(oldstmt, lhs), before);
114627+ return new_lhs;
114628+}
114629+
114630+static tree dup_assign(struct pointer_set_t *visited, gimple oldstmt, const_tree node, tree rhs1, tree rhs2, tree __unused rhs3)
114631+{
114632+ gimple stmt;
114633+ gimple_stmt_iterator gsi;
114634+ tree size_overflow_type, new_var, lhs = gimple_assign_lhs(oldstmt);
114635+
114636+ if (get_stmt_flag(oldstmt) == MY_STMT)
114637+ return lhs;
114638+
114639+ if (gimple_num_ops(oldstmt) != 4 && rhs1 == NULL_TREE) {
114640+ rhs1 = gimple_assign_rhs1(oldstmt);
114641+ rhs1 = create_assign(visited, oldstmt, rhs1, BEFORE_STMT);
114642+ }
114643+ if (gimple_num_ops(oldstmt) == 3 && rhs2 == NULL_TREE) {
114644+ rhs2 = gimple_assign_rhs2(oldstmt);
114645+ rhs2 = create_assign(visited, oldstmt, rhs2, BEFORE_STMT);
114646+ }
114647+
114648+ stmt = gimple_copy(oldstmt);
114649+ gimple_set_location(stmt, gimple_location(oldstmt));
114650+ set_stmt_flag(stmt, MY_STMT);
114651+
114652+ if (gimple_assign_rhs_code(oldstmt) == WIDEN_MULT_EXPR)
114653+ gimple_assign_set_rhs_code(stmt, MULT_EXPR);
114654+
114655+ size_overflow_type = get_size_overflow_type(oldstmt, node);
114656+
114657+ new_var = create_new_var(size_overflow_type);
114658+ new_var = make_ssa_name(new_var, stmt);
114659+ gimple_assign_set_lhs(stmt, new_var);
114660+
114661+ if (rhs1 != NULL_TREE)
114662+ gimple_assign_set_rhs1(stmt, rhs1);
114663+
114664+ if (rhs2 != NULL_TREE)
114665+ gimple_assign_set_rhs2(stmt, rhs2);
114666+#if BUILDING_GCC_VERSION >= 4006
114667+ if (rhs3 != NULL_TREE)
114668+ gimple_assign_set_rhs3(stmt, rhs3);
114669+#endif
114670+ gimple_set_vuse(stmt, gimple_vuse(oldstmt));
114671+ gimple_set_vdef(stmt, gimple_vdef(oldstmt));
114672+
114673+ gsi = gsi_for_stmt(oldstmt);
114674+ gsi_insert_after(&gsi, stmt, GSI_SAME_STMT);
114675+ update_stmt(stmt);
114676+ pointer_set_insert(visited, oldstmt);
114677+ return gimple_assign_lhs(stmt);
114678+}
114679+
114680+static tree cast_parm_decl(tree phi_ssa_name, tree arg, tree size_overflow_type, basic_block bb)
114681+{
114682+ gimple assign;
114683+ gimple_stmt_iterator gsi;
114684+ basic_block first_bb;
114685+
114686+ gcc_assert(SSA_NAME_IS_DEFAULT_DEF(arg));
114687+
114688+ if (bb->index == 0) {
114689+ first_bb = split_block_after_labels(ENTRY_BLOCK_PTR_FOR_FN(cfun))->dest;
114690+ gcc_assert(dom_info_available_p(CDI_DOMINATORS));
114691+ set_immediate_dominator(CDI_DOMINATORS, first_bb, ENTRY_BLOCK_PTR_FOR_FN(cfun));
114692+ bb = first_bb;
114693+ }
114694+
114695+ gsi = gsi_after_labels(bb);
114696+ assign = build_cast_stmt(size_overflow_type, arg, phi_ssa_name, &gsi, BEFORE_STMT, false);
114697+ set_stmt_flag(assign, MY_STMT);
114698+
114699+ return gimple_assign_lhs(assign);
114700+}
114701+
114702+static tree use_phi_ssa_name(tree ssa_name_var, tree new_arg)
114703+{
114704+ gimple_stmt_iterator gsi;
114705+ gimple assign, def_stmt = get_def_stmt(new_arg);
114706+
114707+ if (gimple_code(def_stmt) == GIMPLE_PHI) {
114708+ gsi = gsi_after_labels(gimple_bb(def_stmt));
114709+ assign = build_cast_stmt(TREE_TYPE(new_arg), new_arg, ssa_name_var, &gsi, BEFORE_STMT, true);
114710+ } else {
114711+ gsi = gsi_for_stmt(def_stmt);
114712+ assign = build_cast_stmt(TREE_TYPE(new_arg), new_arg, ssa_name_var, &gsi, AFTER_STMT, true);
114713+ }
114714+
114715+ set_stmt_flag(assign, MY_STMT);
114716+ return gimple_assign_lhs(assign);
114717+}
114718+
114719+static tree cast_visited_phi_arg(tree ssa_name_var, tree arg, tree size_overflow_type)
114720+{
114721+ basic_block bb;
114722+ gimple_stmt_iterator gsi;
114723+ const_gimple def_stmt;
114724+ gimple assign;
114725+
114726+ def_stmt = get_def_stmt(arg);
114727+ bb = gimple_bb(def_stmt);
114728+ gcc_assert(bb->index != 0);
114729+ gsi = gsi_after_labels(bb);
114730+
114731+ assign = build_cast_stmt(size_overflow_type, arg, ssa_name_var, &gsi, BEFORE_STMT, false);
114732+ set_stmt_flag(assign, MY_STMT);
114733+ return gimple_assign_lhs(assign);
114734+}
114735+
114736+static tree create_new_phi_arg(tree ssa_name_var, tree new_arg, gimple oldstmt, unsigned int i)
114737+{
114738+ tree size_overflow_type;
114739+ tree arg;
114740+ const_gimple def_stmt;
114741+
114742+ if (new_arg != NULL_TREE && is_gimple_constant(new_arg))
114743+ return new_arg;
114744+
114745+ arg = gimple_phi_arg_def(oldstmt, i);
114746+ def_stmt = get_def_stmt(arg);
114747+ gcc_assert(def_stmt != NULL);
114748+ size_overflow_type = get_size_overflow_type(oldstmt, arg);
114749+
114750+ switch (gimple_code(def_stmt)) {
114751+ case GIMPLE_PHI:
114752+ return cast_visited_phi_arg(ssa_name_var, arg, size_overflow_type);
114753+ case GIMPLE_NOP: {
114754+ basic_block bb;
114755+
114756+ bb = gimple_phi_arg_edge(oldstmt, i)->src;
114757+ return cast_parm_decl(ssa_name_var, arg, size_overflow_type, bb);
114758+ }
114759+ case GIMPLE_ASM: {
114760+ gimple_stmt_iterator gsi;
114761+ gimple assign, stmt = get_def_stmt(arg);
114762+
114763+ gsi = gsi_for_stmt(stmt);
114764+ assign = build_cast_stmt(size_overflow_type, arg, ssa_name_var, &gsi, AFTER_STMT, false);
114765+ set_stmt_flag(assign, MY_STMT);
114766+ return gimple_assign_lhs(assign);
114767+ }
114768+ default:
114769+ gcc_assert(new_arg != NULL_TREE);
114770+ gcc_assert(types_compatible_p(TREE_TYPE(new_arg), size_overflow_type));
114771+ return use_phi_ssa_name(ssa_name_var, new_arg);
114772+ }
114773+}
114774+
114775+static gimple overflow_create_phi_node(gimple oldstmt, tree result)
114776+{
114777+ basic_block bb;
114778+ gimple phi;
114779+ gimple_seq seq;
114780+ gimple_stmt_iterator gsi = gsi_for_stmt(oldstmt);
114781+
114782+ bb = gsi_bb(gsi);
114783+
114784+ if (result == NULL_TREE) {
114785+ tree old_result = gimple_phi_result(oldstmt);
114786+ tree size_overflow_type = get_size_overflow_type(oldstmt, old_result);
114787+
114788+ result = create_new_var(size_overflow_type);
114789+ }
114790+
114791+ phi = create_phi_node(result, bb);
114792+ gimple_phi_set_result(phi, make_ssa_name(result, phi));
114793+ seq = phi_nodes(bb);
114794+ gsi = gsi_last(seq);
114795+ gsi_remove(&gsi, false);
114796+
114797+ gsi = gsi_for_stmt(oldstmt);
114798+ gsi_insert_after(&gsi, phi, GSI_NEW_STMT);
114799+ gimple_set_bb(phi, bb);
114800+ set_stmt_flag(phi, MY_STMT);
114801+ return phi;
114802+}
114803+
114804+#if BUILDING_GCC_VERSION <= 4007
114805+static tree create_new_phi_node(VEC(tree, heap) **args, tree ssa_name_var, gimple oldstmt)
114806+#else
114807+static tree create_new_phi_node(vec<tree, va_heap, vl_embed> *&args, tree ssa_name_var, gimple oldstmt)
114808+#endif
114809+{
114810+ gimple new_phi;
114811+ unsigned int i;
114812+ tree arg, result;
114813+ location_t loc = gimple_location(oldstmt);
114814+
114815+#if BUILDING_GCC_VERSION <= 4007
114816+ gcc_assert(!VEC_empty(tree, *args));
114817+#else
114818+ gcc_assert(!args->is_empty());
114819+#endif
114820+
114821+ new_phi = overflow_create_phi_node(oldstmt, ssa_name_var);
114822+ result = gimple_phi_result(new_phi);
114823+ ssa_name_var = SSA_NAME_VAR(result);
114824+
114825+#if BUILDING_GCC_VERSION <= 4007
114826+ FOR_EACH_VEC_ELT(tree, *args, i, arg) {
114827+#else
114828+ FOR_EACH_VEC_SAFE_ELT(args, i, arg) {
114829+#endif
114830+ arg = create_new_phi_arg(ssa_name_var, arg, oldstmt, i);
114831+ add_phi_arg(new_phi, arg, gimple_phi_arg_edge(oldstmt, i), loc);
114832+ }
114833+
114834+#if BUILDING_GCC_VERSION <= 4007
114835+ VEC_free(tree, heap, *args);
114836+#else
114837+ vec_free(args);
114838+#endif
114839+ update_stmt(new_phi);
114840+ return result;
114841+}
114842+
114843+static tree handle_phi(struct pointer_set_t *visited, struct cgraph_node *caller_node, tree orig_result)
114844+{
114845+ tree ssa_name_var = NULL_TREE;
114846+#if BUILDING_GCC_VERSION <= 4007
114847+ VEC(tree, heap) *args = NULL;
114848+#else
114849+ vec<tree, va_heap, vl_embed> *args = NULL;
114850+#endif
114851+ gimple oldstmt = get_def_stmt(orig_result);
114852+ unsigned int i, len = gimple_phi_num_args(oldstmt);
114853+
114854+ pointer_set_insert(visited, oldstmt);
114855+ for (i = 0; i < len; i++) {
114856+ tree arg, new_arg;
114857+
114858+ arg = gimple_phi_arg_def(oldstmt, i);
114859+ new_arg = expand(visited, caller_node, arg);
114860+
114861+ if (ssa_name_var == NULL_TREE && new_arg != NULL_TREE)
114862+ ssa_name_var = SSA_NAME_VAR(new_arg);
114863+
114864+ if (is_gimple_constant(arg)) {
114865+ tree size_overflow_type = get_size_overflow_type(oldstmt, arg);
114866+
114867+ new_arg = cast_a_tree(size_overflow_type, arg);
114868+ }
114869+
114870+#if BUILDING_GCC_VERSION <= 4007
114871+ VEC_safe_push(tree, heap, args, new_arg);
114872+#else
114873+ vec_safe_push(args, new_arg);
114874+#endif
114875+ }
114876+
114877+#if BUILDING_GCC_VERSION <= 4007
114878+ return create_new_phi_node(&args, ssa_name_var, oldstmt);
114879+#else
114880+ return create_new_phi_node(args, ssa_name_var, oldstmt);
114881+#endif
114882+}
114883+
114884+static tree change_assign_rhs(gimple stmt, const_tree orig_rhs, tree new_rhs)
114885+{ 120831+{
114886+ gimple assign; 120832+ if (!stmt)
114887+ gimple_stmt_iterator gsi = gsi_for_stmt(stmt); 120833+ return NULL;
114888+ tree origtype = TREE_TYPE(orig_rhs); 120834+ if (gimple_code(stmt) != GIMPLE_ASM)
114889+ 120835+ return NULL;
114890+ gcc_assert(is_gimple_assign(stmt));
114891+ 120836+
114892+ assign = build_cast_stmt(origtype, new_rhs, CREATE_NEW_VAR, &gsi, BEFORE_STMT, false); 120837+ return gimple_asm_string(stmt);
114893+ set_stmt_flag(assign, MY_STMT);
114894+ return gimple_assign_lhs(assign);
114895+} 120838+}
114896+ 120839+
114897+static bool is_a_cast_and_const_overflow(const_tree no_const_rhs) 120840+bool is_size_overflow_intentional_asm_turn_off(const_gimple stmt)
114898+{ 120841+{
114899+ const_tree rhs1, lhs, rhs1_type, lhs_type; 120842+ const char *str;
114900+ enum machine_mode lhs_mode, rhs_mode;
114901+ gimple def_stmt = get_def_stmt(no_const_rhs);
114902+
114903+ if (!def_stmt || !gimple_assign_cast_p(def_stmt))
114904+ return false;
114905+ 120843+
114906+ rhs1 = gimple_assign_rhs1(def_stmt); 120844+ str = get_asm_string(stmt);
114907+ lhs = gimple_assign_lhs(def_stmt); 120845+ if (!str)
114908+ rhs1_type = TREE_TYPE(rhs1);
114909+ lhs_type = TREE_TYPE(lhs);
114910+ rhs_mode = TYPE_MODE(rhs1_type);
114911+ lhs_mode = TYPE_MODE(lhs_type);
114912+ if (TYPE_UNSIGNED(lhs_type) == TYPE_UNSIGNED(rhs1_type) || lhs_mode != rhs_mode)
114913+ return false; 120846+ return false;
114914+ 120847+ return !strncmp(str, TURN_OFF_ASM_STR, sizeof(TURN_OFF_ASM_STR) - 1);
114915+ return true;
114916+}
114917+
114918+static tree create_cast_assign(struct pointer_set_t *visited, gimple stmt)
114919+{
114920+ tree rhs1 = gimple_assign_rhs1(stmt);
114921+ tree lhs = gimple_assign_lhs(stmt);
114922+ const_tree rhs1_type = TREE_TYPE(rhs1);
114923+ const_tree lhs_type = TREE_TYPE(lhs);
114924+
114925+ if (TYPE_UNSIGNED(rhs1_type) == TYPE_UNSIGNED(lhs_type))
114926+ return create_assign(visited, stmt, lhs, AFTER_STMT);
114927+
114928+ return create_assign(visited, stmt, rhs1, AFTER_STMT);
114929+} 120848+}
114930+ 120849+
114931+static bool no_uses(tree node) 120850+bool is_size_overflow_intentional_asm_yes(const_gimple stmt)
114932+{ 120851+{
114933+ imm_use_iterator imm_iter; 120852+ const char *str;
114934+ use_operand_p use_p;
114935+
114936+ FOR_EACH_IMM_USE_FAST(use_p, imm_iter, node) {
114937+ const_gimple use_stmt = USE_STMT(use_p);
114938+ 120853+
114939+ if (use_stmt == NULL) 120854+ str = get_asm_string(stmt);
114940+ return true; 120855+ if (!str)
114941+ if (is_gimple_debug(use_stmt))
114942+ continue;
114943+ return false; 120856+ return false;
114944+ } 120857+ return !strncmp(str, YES_ASM_STR, sizeof(YES_ASM_STR) - 1);
114945+ return true;
114946+} 120858+}
114947+ 120859+
114948+// 3.8.5 mm/page-writeback.c __ilog2_u64(): ret, uint + uintmax; uint -> int; int max 120860+bool is_size_overflow_asm(const_gimple stmt)
114949+static bool is_const_plus_unsigned_signed_truncation(const_tree lhs)
114950+{ 120861+{
114951+ tree rhs1, lhs_type, rhs_type, rhs2, not_const_rhs; 120862+ const char *str;
114952+ gimple def_stmt = get_def_stmt(lhs);
114953+
114954+ if (!def_stmt || !gimple_assign_cast_p(def_stmt))
114955+ return false;
114956+
114957+ rhs1 = gimple_assign_rhs1(def_stmt);
114958+ rhs_type = TREE_TYPE(rhs1);
114959+ lhs_type = TREE_TYPE(lhs);
114960+ if (TYPE_UNSIGNED(lhs_type) || !TYPE_UNSIGNED(rhs_type))
114961+ return false;
114962+ if (TYPE_MODE(lhs_type) != TYPE_MODE(rhs_type))
114963+ return false;
114964+
114965+ def_stmt = get_def_stmt(rhs1);
114966+ if (!def_stmt || !is_gimple_assign(def_stmt) || gimple_num_ops(def_stmt) != 3)
114967+ return false;
114968+
114969+ if (gimple_assign_rhs_code(def_stmt) != PLUS_EXPR)
114970+ return false;
114971+ 120863+
114972+ rhs1 = gimple_assign_rhs1(def_stmt); 120864+ str = get_asm_string(stmt);
114973+ rhs2 = gimple_assign_rhs2(def_stmt); 120865+ if (!str)
114974+ if (!is_gimple_constant(rhs1) && !is_gimple_constant(rhs2))
114975+ return false; 120866+ return false;
114976+ 120867+ return !strncmp(str, OK_ASM_STR, sizeof(OK_ASM_STR) - 1);
114977+ if (is_gimple_constant(rhs2))
114978+ not_const_rhs = rhs1;
114979+ else
114980+ not_const_rhs = rhs2;
114981+
114982+ return no_uses(not_const_rhs);
114983+} 120868+}
114984+ 120869+
114985+static bool skip_lhs_cast_check(const_gimple stmt) 120870+bool is_a_return_check(const_tree node)
114986+{ 120871+{
114987+ const_tree rhs = gimple_assign_rhs1(stmt); 120872+ if (TREE_CODE(node) == FUNCTION_DECL)
114988+ const_gimple def_stmt = get_def_stmt(rhs);
114989+
114990+ // 3.8.2 kernel/futex_compat.c compat_exit_robust_list(): get_user() 64 ulong -> int (compat_long_t), int max
114991+ if (gimple_code(def_stmt) == GIMPLE_ASM)
114992+ return true;
114993+
114994+ if (is_const_plus_unsigned_signed_truncation(rhs))
114995+ return true; 120873+ return true;
114996+ 120874+
120875+ gcc_assert(TREE_CODE(node) == PARM_DECL);
114997+ return false; 120876+ return false;
114998+} 120877+}
114999+ 120878+
115000+static tree create_cast_overflow_check(struct pointer_set_t *visited, struct cgraph_node *caller_node, tree new_rhs1, gimple stmt) 120879+// Get the argnum of a function decl, if node is a return then the argnum is 0
115001+{ 120880+unsigned int get_function_num(const_tree node, const_tree orig_fndecl)
115002+ bool cast_lhs, cast_rhs;
115003+ tree lhs = gimple_assign_lhs(stmt);
115004+ tree rhs = gimple_assign_rhs1(stmt);
115005+ const_tree lhs_type = TREE_TYPE(lhs);
115006+ const_tree rhs_type = TREE_TYPE(rhs);
115007+ enum machine_mode lhs_mode = TYPE_MODE(lhs_type);
115008+ enum machine_mode rhs_mode = TYPE_MODE(rhs_type);
115009+ unsigned int lhs_size = GET_MODE_BITSIZE(lhs_mode);
115010+ unsigned int rhs_size = GET_MODE_BITSIZE(rhs_mode);
115011+
115012+ static bool check_lhs[3][4] = {
115013+ // ss su us uu
115014+ { false, true, true, false }, // lhs > rhs
115015+ { false, false, false, false }, // lhs = rhs
115016+ { true, true, true, true }, // lhs < rhs
115017+ };
115018+
115019+ static bool check_rhs[3][4] = {
115020+ // ss su us uu
115021+ { true, false, true, true }, // lhs > rhs
115022+ { true, false, true, true }, // lhs = rhs
115023+ { true, false, true, true }, // lhs < rhs
115024+ };
115025+
115026+ // skip lhs check on signed SI -> HI cast or signed SI -> QI cast !!!!
115027+ if (rhs_mode == SImode && !TYPE_UNSIGNED(rhs_type) && (lhs_mode == HImode || lhs_mode == QImode))
115028+ return create_assign(visited, stmt, lhs, AFTER_STMT);
115029+
115030+ if (lhs_size > rhs_size) {
115031+ cast_lhs = check_lhs[0][TYPE_UNSIGNED(rhs_type) + 2 * TYPE_UNSIGNED(lhs_type)];
115032+ cast_rhs = check_rhs[0][TYPE_UNSIGNED(rhs_type) + 2 * TYPE_UNSIGNED(lhs_type)];
115033+ } else if (lhs_size == rhs_size) {
115034+ cast_lhs = check_lhs[1][TYPE_UNSIGNED(rhs_type) + 2 * TYPE_UNSIGNED(lhs_type)];
115035+ cast_rhs = check_rhs[1][TYPE_UNSIGNED(rhs_type) + 2 * TYPE_UNSIGNED(lhs_type)];
115036+ } else {
115037+ cast_lhs = check_lhs[2][TYPE_UNSIGNED(rhs_type) + 2 * TYPE_UNSIGNED(lhs_type)];
115038+ cast_rhs = check_rhs[2][TYPE_UNSIGNED(rhs_type) + 2 * TYPE_UNSIGNED(lhs_type)];
115039+ }
115040+
115041+ if (!cast_lhs && !cast_rhs)
115042+ return dup_assign(visited, stmt, lhs, new_rhs1, NULL_TREE, NULL_TREE);
115043+
115044+ if (cast_lhs && !skip_lhs_cast_check(stmt))
115045+ check_size_overflow(caller_node, stmt, TREE_TYPE(new_rhs1), new_rhs1, lhs, BEFORE_STMT);
115046+
115047+ if (cast_rhs)
115048+ check_size_overflow(caller_node, stmt, TREE_TYPE(new_rhs1), new_rhs1, rhs, BEFORE_STMT);
115049+
115050+ return dup_assign(visited, stmt, lhs, new_rhs1, NULL_TREE, NULL_TREE);
115051+}
115052+
115053+static tree handle_unary_rhs(struct pointer_set_t *visited, struct cgraph_node *caller_node, gimple stmt)
115054+{
115055+ tree rhs1, new_rhs1, lhs = gimple_assign_lhs(stmt);
115056+
115057+ if (get_stmt_flag(stmt) == MY_STMT)
115058+ return lhs;
115059+
115060+ rhs1 = gimple_assign_rhs1(stmt);
115061+ if (TREE_CODE(TREE_TYPE(rhs1)) == POINTER_TYPE)
115062+ return create_assign(visited, stmt, lhs, AFTER_STMT);
115063+
115064+ new_rhs1 = expand(visited, caller_node, rhs1);
115065+
115066+ if (new_rhs1 == NULL_TREE)
115067+ return create_cast_assign(visited, stmt);
115068+
115069+ if (get_stmt_flag(stmt) == NO_CAST_CHECK)
115070+ return dup_assign(visited, stmt, lhs, new_rhs1, NULL_TREE, NULL_TREE);
115071+
115072+ if (gimple_assign_rhs_code(stmt) == BIT_NOT_EXPR) {
115073+ tree size_overflow_type = get_size_overflow_type(stmt, rhs1);
115074+
115075+ new_rhs1 = cast_to_new_size_overflow_type(stmt, new_rhs1, size_overflow_type, BEFORE_STMT);
115076+ check_size_overflow(caller_node, stmt, size_overflow_type, new_rhs1, rhs1, BEFORE_STMT);
115077+ return create_assign(visited, stmt, lhs, AFTER_STMT);
115078+ }
115079+
115080+ if (!gimple_assign_cast_p(stmt))
115081+ return dup_assign(visited, stmt, lhs, new_rhs1, NULL_TREE, NULL_TREE);
115082+
115083+ return create_cast_overflow_check(visited, caller_node, new_rhs1, stmt);
115084+}
115085+
115086+static tree handle_unary_ops(struct pointer_set_t *visited, struct cgraph_node *caller_node, gimple stmt)
115087+{
115088+ tree rhs1, lhs = gimple_assign_lhs(stmt);
115089+ gimple def_stmt = get_def_stmt(lhs);
115090+
115091+ gcc_assert(gimple_code(def_stmt) != GIMPLE_NOP);
115092+ rhs1 = gimple_assign_rhs1(def_stmt);
115093+
115094+ if (is_gimple_constant(rhs1))
115095+ return create_assign(visited, def_stmt, lhs, AFTER_STMT);
115096+
115097+ switch (TREE_CODE(rhs1)) {
115098+ case SSA_NAME:
115099+ return handle_unary_rhs(visited, caller_node, def_stmt);
115100+ case ARRAY_REF:
115101+ case BIT_FIELD_REF:
115102+ case ADDR_EXPR:
115103+ case COMPONENT_REF:
115104+ case INDIRECT_REF:
115105+#if BUILDING_GCC_VERSION >= 4006
115106+ case MEM_REF:
115107+#endif
115108+ case TARGET_MEM_REF:
115109+ case VIEW_CONVERT_EXPR:
115110+ return create_assign(visited, def_stmt, lhs, AFTER_STMT);
115111+ case PARM_DECL:
115112+ case VAR_DECL:
115113+ return create_assign(visited, stmt, lhs, AFTER_STMT);
115114+
115115+ default:
115116+ debug_gimple_stmt(def_stmt);
115117+ debug_tree(rhs1);
115118+ gcc_unreachable();
115119+ }
115120+}
115121+
115122+static void insert_cond(basic_block cond_bb, tree arg, enum tree_code cond_code, tree type_value)
115123+{
115124+ gimple cond_stmt;
115125+ gimple_stmt_iterator gsi = gsi_last_bb(cond_bb);
115126+
115127+ cond_stmt = gimple_build_cond(cond_code, arg, type_value, NULL_TREE, NULL_TREE);
115128+ gsi_insert_after(&gsi, cond_stmt, GSI_CONTINUE_LINKING);
115129+ update_stmt(cond_stmt);
115130+}
115131+
115132+static tree create_string_param(tree string)
115133+{
115134+ tree i_type, a_type;
115135+ const int length = TREE_STRING_LENGTH(string);
115136+
115137+ gcc_assert(length > 0);
115138+
115139+ i_type = build_index_type(build_int_cst(NULL_TREE, length - 1));
115140+ a_type = build_array_type(char_type_node, i_type);
115141+
115142+ TREE_TYPE(string) = a_type;
115143+ TREE_CONSTANT(string) = 1;
115144+ TREE_READONLY(string) = 1;
115145+
115146+ return build1(ADDR_EXPR, ptr_type_node, string);
115147+}
115148+
115149+static void insert_cond_result(struct cgraph_node *caller_node, basic_block bb_true, const_gimple stmt, const_tree arg, bool min)
115150+{
115151+ gimple func_stmt;
115152+ const_gimple def_stmt;
115153+ const_tree loc_line;
115154+ tree loc_file, ssa_name, current_func;
115155+ expanded_location xloc;
115156+ char *ssa_name_buf;
115157+ int len;
115158+ struct cgraph_edge *edge;
115159+ struct cgraph_node *callee_node;
115160+ int frequency;
115161+ gimple_stmt_iterator gsi = gsi_start_bb(bb_true);
115162+
115163+ def_stmt = get_def_stmt(arg);
115164+ xloc = expand_location(gimple_location(def_stmt));
115165+
115166+ if (!gimple_has_location(def_stmt)) {
115167+ xloc = expand_location(gimple_location(stmt));
115168+ if (!gimple_has_location(stmt))
115169+ xloc = expand_location(DECL_SOURCE_LOCATION(current_function_decl));
115170+ }
115171+
115172+ loc_line = build_int_cstu(unsigned_type_node, xloc.line);
115173+
115174+ loc_file = build_string(strlen(xloc.file) + 1, xloc.file);
115175+ loc_file = create_string_param(loc_file);
115176+
115177+ current_func = build_string(DECL_NAME_LENGTH(current_function_decl) + 1, DECL_NAME_POINTER(current_function_decl));
115178+ current_func = create_string_param(current_func);
115179+
115180+ gcc_assert(DECL_NAME(SSA_NAME_VAR(arg)) != NULL);
115181+ call_count++;
115182+ len = asprintf(&ssa_name_buf, "%s_%u %s, count: %u\n", DECL_NAME_POINTER(SSA_NAME_VAR(arg)), SSA_NAME_VERSION(arg), min ? "min" : "max", call_count);
115183+ gcc_assert(len > 0);
115184+ ssa_name = build_string(len + 1, ssa_name_buf);
115185+ free(ssa_name_buf);
115186+ ssa_name = create_string_param(ssa_name);
115187+
115188+ // void report_size_overflow(const char *file, unsigned int line, const char *func, const char *ssa_name)
115189+ func_stmt = gimple_build_call(report_size_overflow_decl, 4, loc_file, loc_line, current_func, ssa_name);
115190+ gsi_insert_after(&gsi, func_stmt, GSI_CONTINUE_LINKING);
115191+
115192+ callee_node = cgraph_get_create_node(report_size_overflow_decl);
115193+ frequency = compute_call_stmt_bb_frequency(current_function_decl, bb_true);
115194+
115195+ edge = cgraph_create_edge(caller_node, callee_node, func_stmt, bb_true->count, frequency, bb_true->loop_depth);
115196+ gcc_assert(edge != NULL);
115197+}
115198+
115199+static void __unused print_the_code_insertions(const_gimple stmt)
115200+{
115201+ location_t loc = gimple_location(stmt);
115202+
115203+ inform(loc, "Integer size_overflow check applied here.");
115204+}
115205+
115206+static void insert_check_size_overflow(struct cgraph_node *caller_node, gimple stmt, enum tree_code cond_code, tree arg, tree type_value, bool before, bool min)
115207+{ 120881+{
115208+ basic_block cond_bb, join_bb, bb_true; 120882+ if (is_a_return_check(node))
115209+ edge e; 120883+ return 0;
115210+ gimple_stmt_iterator gsi = gsi_for_stmt(stmt);
115211+
115212+ cond_bb = gimple_bb(stmt);
115213+ if (before)
115214+ gsi_prev(&gsi);
115215+ if (gsi_end_p(gsi))
115216+ e = split_block_after_labels(cond_bb);
115217+ else 120884+ else
115218+ e = split_block(cond_bb, gsi_stmt(gsi)); 120885+ return find_arg_number_tree(node, orig_fndecl);
115219+ cond_bb = e->src;
115220+ join_bb = e->dest;
115221+ e->flags = EDGE_FALSE_VALUE;
115222+ e->probability = REG_BR_PROB_BASE;
115223+
115224+ bb_true = create_empty_bb(cond_bb);
115225+ make_edge(cond_bb, bb_true, EDGE_TRUE_VALUE);
115226+ make_edge(cond_bb, join_bb, EDGE_FALSE_VALUE);
115227+ make_edge(bb_true, join_bb, EDGE_FALLTHRU);
115228+
115229+ gcc_assert(dom_info_available_p(CDI_DOMINATORS));
115230+ set_immediate_dominator(CDI_DOMINATORS, bb_true, cond_bb);
115231+ set_immediate_dominator(CDI_DOMINATORS, join_bb, cond_bb);
115232+
115233+ if (current_loops != NULL) {
115234+ gcc_assert(cond_bb->loop_father == join_bb->loop_father);
115235+ add_bb_to_loop(bb_true, cond_bb->loop_father);
115236+ }
115237+
115238+ insert_cond(cond_bb, arg, cond_code, type_value);
115239+ insert_cond_result(caller_node, bb_true, stmt, arg, min);
115240+
115241+// print_the_code_insertions(stmt);
115242+}
115243+
115244+static void check_size_overflow(struct cgraph_node *caller_node, gimple stmt, tree size_overflow_type, tree cast_rhs, tree rhs, bool before)
115245+{
115246+ const_tree rhs_type = TREE_TYPE(rhs);
115247+ tree cast_rhs_type, type_max_type, type_min_type, type_max, type_min;
115248+
115249+ gcc_assert(rhs_type != NULL_TREE);
115250+ if (TREE_CODE(rhs_type) == POINTER_TYPE)
115251+ return;
115252+
115253+ gcc_assert(TREE_CODE(rhs_type) == INTEGER_TYPE || TREE_CODE(rhs_type) == ENUMERAL_TYPE);
115254+
115255+ if (is_const_plus_unsigned_signed_truncation(rhs))
115256+ return;
115257+
115258+ type_max = cast_a_tree(size_overflow_type, TYPE_MAX_VALUE(rhs_type));
115259+ // typemax (-1) < typemin (0)
115260+ if (TREE_OVERFLOW(type_max))
115261+ return;
115262+
115263+ type_min = cast_a_tree(size_overflow_type, TYPE_MIN_VALUE(rhs_type));
115264+
115265+ cast_rhs_type = TREE_TYPE(cast_rhs);
115266+ type_max_type = TREE_TYPE(type_max);
115267+ gcc_assert(types_compatible_p(cast_rhs_type, type_max_type));
115268+
115269+ insert_check_size_overflow(caller_node, stmt, GT_EXPR, cast_rhs, type_max, before, MAX_CHECK);
115270+
115271+ // special case: get_size_overflow_type(), 32, u64->s
115272+ if (LONG_TYPE_SIZE == GET_MODE_BITSIZE(SImode) && TYPE_UNSIGNED(size_overflow_type) && !TYPE_UNSIGNED(rhs_type))
115273+ return;
115274+
115275+ type_min_type = TREE_TYPE(type_min);
115276+ gcc_assert(types_compatible_p(type_max_type, type_min_type));
115277+ insert_check_size_overflow(caller_node, stmt, LT_EXPR, cast_rhs, type_min, before, MIN_CHECK);
115278+}
115279+
115280+static bool is_a_constant_overflow(const_gimple stmt, const_tree rhs)
115281+{
115282+ if (gimple_assign_rhs_code(stmt) == MIN_EXPR)
115283+ return false;
115284+ if (!is_gimple_constant(rhs))
115285+ return false;
115286+ return true;
115287+}
115288+
115289+static tree get_def_stmt_rhs(const_tree var)
115290+{
115291+ tree rhs1, def_stmt_rhs1;
115292+ gimple rhs1_def_stmt, def_stmt_rhs1_def_stmt, def_stmt;
115293+
115294+ def_stmt = get_def_stmt(var);
115295+ if (!gimple_assign_cast_p(def_stmt))
115296+ return NULL_TREE;
115297+ gcc_assert(gimple_code(def_stmt) != GIMPLE_NOP && get_stmt_flag(def_stmt) == MY_STMT && gimple_assign_cast_p(def_stmt));
115298+
115299+ rhs1 = gimple_assign_rhs1(def_stmt);
115300+ rhs1_def_stmt = get_def_stmt(rhs1);
115301+ if (!gimple_assign_cast_p(rhs1_def_stmt))
115302+ return rhs1;
115303+
115304+ def_stmt_rhs1 = gimple_assign_rhs1(rhs1_def_stmt);
115305+ def_stmt_rhs1_def_stmt = get_def_stmt(def_stmt_rhs1);
115306+
115307+ switch (gimple_code(def_stmt_rhs1_def_stmt)) {
115308+ case GIMPLE_CALL:
115309+ case GIMPLE_NOP:
115310+ case GIMPLE_ASM:
115311+ case GIMPLE_PHI:
115312+ return def_stmt_rhs1;
115313+ case GIMPLE_ASSIGN:
115314+ return rhs1;
115315+ default:
115316+ debug_gimple_stmt(def_stmt_rhs1_def_stmt);
115317+ gcc_unreachable();
115318+ }
115319+}
115320+
115321+static tree handle_intentional_overflow(struct pointer_set_t *visited, struct cgraph_node *caller_node, bool check_overflow, gimple stmt, tree change_rhs, tree new_rhs2)
115322+{
115323+ tree new_rhs, orig_rhs;
115324+ void (*gimple_assign_set_rhs)(gimple, tree);
115325+ tree rhs1 = gimple_assign_rhs1(stmt);
115326+ tree rhs2 = gimple_assign_rhs2(stmt);
115327+ tree lhs = gimple_assign_lhs(stmt);
115328+
115329+ if (!check_overflow)
115330+ return create_assign(visited, stmt, lhs, AFTER_STMT);
115331+
115332+ if (change_rhs == NULL_TREE)
115333+ return create_assign(visited, stmt, lhs, AFTER_STMT);
115334+
115335+ if (new_rhs2 == NULL_TREE) {
115336+ orig_rhs = rhs1;
115337+ gimple_assign_set_rhs = &gimple_assign_set_rhs1;
115338+ } else {
115339+ orig_rhs = rhs2;
115340+ gimple_assign_set_rhs = &gimple_assign_set_rhs2;
115341+ }
115342+
115343+ check_size_overflow(caller_node, stmt, TREE_TYPE(change_rhs), change_rhs, orig_rhs, BEFORE_STMT);
115344+
115345+ new_rhs = change_assign_rhs(stmt, orig_rhs, change_rhs);
115346+ gimple_assign_set_rhs(stmt, new_rhs);
115347+ update_stmt(stmt);
115348+
115349+ return create_assign(visited, stmt, lhs, AFTER_STMT);
115350+}
115351+
115352+static bool is_subtraction_special(const_gimple stmt)
115353+{
115354+ gimple rhs1_def_stmt, rhs2_def_stmt;
115355+ const_tree rhs1_def_stmt_rhs1, rhs2_def_stmt_rhs1, rhs1_def_stmt_lhs, rhs2_def_stmt_lhs;
115356+ enum machine_mode rhs1_def_stmt_rhs1_mode, rhs2_def_stmt_rhs1_mode, rhs1_def_stmt_lhs_mode, rhs2_def_stmt_lhs_mode;
115357+ const_tree rhs1 = gimple_assign_rhs1(stmt);
115358+ const_tree rhs2 = gimple_assign_rhs2(stmt);
115359+
115360+ if (is_gimple_constant(rhs1) || is_gimple_constant(rhs2))
115361+ return false;
115362+
115363+ gcc_assert(TREE_CODE(rhs1) == SSA_NAME && TREE_CODE(rhs2) == SSA_NAME);
115364+
115365+ if (gimple_assign_rhs_code(stmt) != MINUS_EXPR)
115366+ return false;
115367+
115368+ rhs1_def_stmt = get_def_stmt(rhs1);
115369+ rhs2_def_stmt = get_def_stmt(rhs2);
115370+ if (!gimple_assign_cast_p(rhs1_def_stmt) || !gimple_assign_cast_p(rhs2_def_stmt))
115371+ return false;
115372+
115373+ rhs1_def_stmt_rhs1 = gimple_assign_rhs1(rhs1_def_stmt);
115374+ rhs2_def_stmt_rhs1 = gimple_assign_rhs1(rhs2_def_stmt);
115375+ rhs1_def_stmt_lhs = gimple_assign_lhs(rhs1_def_stmt);
115376+ rhs2_def_stmt_lhs = gimple_assign_lhs(rhs2_def_stmt);
115377+ rhs1_def_stmt_rhs1_mode = TYPE_MODE(TREE_TYPE(rhs1_def_stmt_rhs1));
115378+ rhs2_def_stmt_rhs1_mode = TYPE_MODE(TREE_TYPE(rhs2_def_stmt_rhs1));
115379+ rhs1_def_stmt_lhs_mode = TYPE_MODE(TREE_TYPE(rhs1_def_stmt_lhs));
115380+ rhs2_def_stmt_lhs_mode = TYPE_MODE(TREE_TYPE(rhs2_def_stmt_lhs));
115381+ if (GET_MODE_BITSIZE(rhs1_def_stmt_rhs1_mode) <= GET_MODE_BITSIZE(rhs1_def_stmt_lhs_mode))
115382+ return false;
115383+ if (GET_MODE_BITSIZE(rhs2_def_stmt_rhs1_mode) <= GET_MODE_BITSIZE(rhs2_def_stmt_lhs_mode))
115384+ return false;
115385+
115386+ set_stmt_flag(rhs1_def_stmt, NO_CAST_CHECK);
115387+ set_stmt_flag(rhs2_def_stmt, NO_CAST_CHECK);
115388+ return true;
115389+}
115390+
115391+static tree handle_integer_truncation(struct pointer_set_t *visited, struct cgraph_node *caller_node, const_tree lhs)
115392+{
115393+ tree new_rhs1, new_rhs2;
115394+ tree new_rhs1_def_stmt_rhs1, new_rhs2_def_stmt_rhs1, new_lhs;
115395+ gimple assign, stmt = get_def_stmt(lhs);
115396+ tree rhs1 = gimple_assign_rhs1(stmt);
115397+ tree rhs2 = gimple_assign_rhs2(stmt);
115398+
115399+ if (!is_subtraction_special(stmt))
115400+ return NULL_TREE;
115401+
115402+ new_rhs1 = expand(visited, caller_node, rhs1);
115403+ new_rhs2 = expand(visited, caller_node, rhs2);
115404+
115405+ new_rhs1_def_stmt_rhs1 = get_def_stmt_rhs(new_rhs1);
115406+ new_rhs2_def_stmt_rhs1 = get_def_stmt_rhs(new_rhs2);
115407+
115408+ if (new_rhs1_def_stmt_rhs1 == NULL_TREE || new_rhs2_def_stmt_rhs1 == NULL_TREE)
115409+ return NULL_TREE;
115410+
115411+ if (!types_compatible_p(TREE_TYPE(new_rhs1_def_stmt_rhs1), TREE_TYPE(new_rhs2_def_stmt_rhs1))) {
115412+ new_rhs1_def_stmt_rhs1 = cast_to_TI_type(stmt, new_rhs1_def_stmt_rhs1);
115413+ new_rhs2_def_stmt_rhs1 = cast_to_TI_type(stmt, new_rhs2_def_stmt_rhs1);
115414+ }
115415+
115416+ assign = create_binary_assign(MINUS_EXPR, stmt, new_rhs1_def_stmt_rhs1, new_rhs2_def_stmt_rhs1);
115417+ new_lhs = gimple_assign_lhs(assign);
115418+ check_size_overflow(caller_node, assign, TREE_TYPE(new_lhs), new_lhs, rhs1, AFTER_STMT);
115419+
115420+ return dup_assign(visited, stmt, lhs, new_rhs1, new_rhs2, NULL_TREE);
115421+}
115422+
115423+static bool is_a_neg_overflow(const_gimple stmt, const_tree rhs)
115424+{
115425+ const_gimple def_stmt;
115426+
115427+ if (TREE_CODE(rhs) != SSA_NAME)
115428+ return false;
115429+
115430+ if (gimple_assign_rhs_code(stmt) != PLUS_EXPR)
115431+ return false;
115432+
115433+ def_stmt = get_def_stmt(rhs);
115434+ if (!is_gimple_assign(def_stmt) || gimple_assign_rhs_code(def_stmt) != BIT_NOT_EXPR)
115435+ return false;
115436+
115437+ return true;
115438+}
115439+
115440+static tree handle_binary_ops(struct pointer_set_t *visited, struct cgraph_node *caller_node, tree lhs)
115441+{
115442+ tree rhs1, rhs2, new_lhs;
115443+ gimple def_stmt = get_def_stmt(lhs);
115444+ tree new_rhs1 = NULL_TREE;
115445+ tree new_rhs2 = NULL_TREE;
115446+
115447+ rhs1 = gimple_assign_rhs1(def_stmt);
115448+ rhs2 = gimple_assign_rhs2(def_stmt);
115449+
115450+ /* no DImode/TImode division in the 32/64 bit kernel */
115451+ switch (gimple_assign_rhs_code(def_stmt)) {
115452+ case RDIV_EXPR:
115453+ case TRUNC_DIV_EXPR:
115454+ case CEIL_DIV_EXPR:
115455+ case FLOOR_DIV_EXPR:
115456+ case ROUND_DIV_EXPR:
115457+ case TRUNC_MOD_EXPR:
115458+ case CEIL_MOD_EXPR:
115459+ case FLOOR_MOD_EXPR:
115460+ case ROUND_MOD_EXPR:
115461+ case EXACT_DIV_EXPR:
115462+ case POINTER_PLUS_EXPR:
115463+ case BIT_AND_EXPR:
115464+ return create_assign(visited, def_stmt, lhs, AFTER_STMT);
115465+ default:
115466+ break;
115467+ }
115468+
115469+ new_lhs = handle_integer_truncation(visited, caller_node, lhs);
115470+ if (new_lhs != NULL_TREE)
115471+ return new_lhs;
115472+
115473+ if (TREE_CODE(rhs1) == SSA_NAME)
115474+ new_rhs1 = expand(visited, caller_node, rhs1);
115475+ if (TREE_CODE(rhs2) == SSA_NAME)
115476+ new_rhs2 = expand(visited, caller_node, rhs2);
115477+
115478+ if (is_a_neg_overflow(def_stmt, rhs2))
115479+ return handle_intentional_overflow(visited, caller_node, true, def_stmt, new_rhs1, NULL_TREE);
115480+ if (is_a_neg_overflow(def_stmt, rhs1))
115481+ return handle_intentional_overflow(visited, caller_node, true, def_stmt, new_rhs2, new_rhs2);
115482+
115483+
115484+ if (is_a_constant_overflow(def_stmt, rhs2))
115485+ return handle_intentional_overflow(visited, caller_node, !is_a_cast_and_const_overflow(rhs1), def_stmt, new_rhs1, NULL_TREE);
115486+ if (is_a_constant_overflow(def_stmt, rhs1))
115487+ return handle_intentional_overflow(visited, caller_node, !is_a_cast_and_const_overflow(rhs2), def_stmt, new_rhs2, new_rhs2);
115488+
115489+ return dup_assign(visited, def_stmt, lhs, new_rhs1, new_rhs2, NULL_TREE);
115490+}
115491+
115492+#if BUILDING_GCC_VERSION >= 4006
115493+static tree get_new_rhs(struct pointer_set_t *visited, struct cgraph_node *caller_node, tree size_overflow_type, tree rhs)
115494+{
115495+ if (is_gimple_constant(rhs))
115496+ return cast_a_tree(size_overflow_type, rhs);
115497+ if (TREE_CODE(rhs) != SSA_NAME)
115498+ return NULL_TREE;
115499+ return expand(visited, caller_node, rhs);
115500+}
115501+
115502+static tree handle_ternary_ops(struct pointer_set_t *visited, struct cgraph_node *caller_node, tree lhs)
115503+{
115504+ tree rhs1, rhs2, rhs3, new_rhs1, new_rhs2, new_rhs3, size_overflow_type;
115505+ gimple def_stmt = get_def_stmt(lhs);
115506+
115507+ size_overflow_type = get_size_overflow_type(def_stmt, lhs);
115508+
115509+ rhs1 = gimple_assign_rhs1(def_stmt);
115510+ rhs2 = gimple_assign_rhs2(def_stmt);
115511+ rhs3 = gimple_assign_rhs3(def_stmt);
115512+ new_rhs1 = get_new_rhs(visited, caller_node, size_overflow_type, rhs1);
115513+ new_rhs2 = get_new_rhs(visited, caller_node, size_overflow_type, rhs2);
115514+ new_rhs3 = get_new_rhs(visited, caller_node, size_overflow_type, rhs3);
115515+
115516+ return dup_assign(visited, def_stmt, lhs, new_rhs1, new_rhs2, new_rhs3);
115517+}
115518+#endif
115519+
115520+static tree get_size_overflow_type(gimple stmt, const_tree node)
115521+{
115522+ const_tree type;
115523+ tree new_type;
115524+
115525+ gcc_assert(node != NULL_TREE);
115526+
115527+ type = TREE_TYPE(node);
115528+
115529+ if (get_stmt_flag(stmt) == MY_STMT)
115530+ return TREE_TYPE(node);
115531+
115532+ switch (TYPE_MODE(type)) {
115533+ case QImode:
115534+ new_type = intHI_type_node;
115535+ break;
115536+ case HImode:
115537+ new_type = intSI_type_node;
115538+ break;
115539+ case SImode:
115540+ new_type = intDI_type_node;
115541+ break;
115542+ case DImode:
115543+ if (LONG_TYPE_SIZE == GET_MODE_BITSIZE(SImode))
115544+ new_type = TYPE_UNSIGNED(type) ? unsigned_intDI_type_node : intDI_type_node;
115545+ else
115546+ new_type = intTI_type_node;
115547+ break;
115548+ case TImode:
115549+ gcc_assert(!TYPE_UNSIGNED(type));
115550+ new_type = intTI_type_node;
115551+ break;
115552+ default:
115553+ debug_tree((tree)node);
115554+ error("%s: unsupported gcc configuration (%qE).", __func__, current_function_decl);
115555+ gcc_unreachable();
115556+ }
115557+
115558+ if (TYPE_QUALS(type) != 0)
115559+ return build_qualified_type(new_type, TYPE_QUALS(type));
115560+ return new_type;
115561+}
115562+
115563+static tree expand_visited(gimple def_stmt)
115564+{
115565+ const_gimple next_stmt;
115566+ gimple_stmt_iterator gsi;
115567+ enum gimple_code code = gimple_code(def_stmt);
115568+
115569+ if (code == GIMPLE_ASM)
115570+ return NULL_TREE;
115571+
115572+ gsi = gsi_for_stmt(def_stmt);
115573+ gsi_next(&gsi);
115574+
115575+ if (gimple_code(def_stmt) == GIMPLE_PHI && gsi_end_p(gsi))
115576+ return NULL_TREE;
115577+ gcc_assert(!gsi_end_p(gsi));
115578+ next_stmt = gsi_stmt(gsi);
115579+
115580+ if (gimple_code(def_stmt) == GIMPLE_PHI && get_stmt_flag((gimple)next_stmt) != MY_STMT)
115581+ return NULL_TREE;
115582+ gcc_assert(get_stmt_flag((gimple)next_stmt) == MY_STMT);
115583+
115584+ return get_lhs(next_stmt);
115585+}
115586+
115587+static tree expand(struct pointer_set_t *visited, struct cgraph_node *caller_node, tree lhs)
115588+{
115589+ gimple def_stmt;
115590+
115591+ def_stmt = get_def_stmt(lhs);
115592+
115593+ if (!def_stmt || gimple_code(def_stmt) == GIMPLE_NOP)
115594+ return NULL_TREE;
115595+
115596+ if (get_stmt_flag(def_stmt) == MY_STMT)
115597+ return lhs;
115598+
115599+ if (pointer_set_contains(visited, def_stmt))
115600+ return expand_visited(def_stmt);
115601+
115602+ switch (gimple_code(def_stmt)) {
115603+ case GIMPLE_PHI:
115604+ return handle_phi(visited, caller_node, lhs);
115605+ case GIMPLE_CALL:
115606+ case GIMPLE_ASM:
115607+ return create_assign(visited, def_stmt, lhs, AFTER_STMT);
115608+ case GIMPLE_ASSIGN:
115609+ switch (gimple_num_ops(def_stmt)) {
115610+ case 2:
115611+ return handle_unary_ops(visited, caller_node, def_stmt);
115612+ case 3:
115613+ return handle_binary_ops(visited, caller_node, lhs);
115614+#if BUILDING_GCC_VERSION >= 4006
115615+ case 4:
115616+ return handle_ternary_ops(visited, caller_node, lhs);
115617+#endif
115618+ }
115619+ default:
115620+ debug_gimple_stmt(def_stmt);
115621+ error("%s: unknown gimple code", __func__);
115622+ gcc_unreachable();
115623+ }
115624+}
115625+
115626+static tree cast_to_orig_type(gimple stmt, const_tree orig_node, tree new_node)
115627+{
115628+ const_gimple assign;
115629+ tree orig_type = TREE_TYPE(orig_node);
115630+ gimple_stmt_iterator gsi = gsi_for_stmt(stmt);
115631+
115632+ assign = build_cast_stmt(orig_type, new_node, CREATE_NEW_VAR, &gsi, BEFORE_STMT, false);
115633+ return gimple_assign_lhs(assign);
115634+}
115635+
115636+static void change_orig_node(struct interesting_node *cur_node, tree new_node)
115637+{
115638+ void (*set_rhs)(gimple, tree);
115639+ gimple stmt = cur_node->first_stmt;
115640+ const_tree orig_node = cur_node->node;
115641+
115642+ switch (gimple_code(stmt)) {
115643+ case GIMPLE_RETURN:
115644+ gimple_return_set_retval(stmt, cast_to_orig_type(stmt, orig_node, new_node));
115645+ break;
115646+ case GIMPLE_CALL:
115647+ gimple_call_set_arg(stmt, cur_node->num - 1, cast_to_orig_type(stmt, orig_node, new_node));
115648+ break;
115649+ case GIMPLE_ASSIGN:
115650+ switch (cur_node->num) {
115651+ case 1:
115652+ set_rhs = &gimple_assign_set_rhs1;
115653+ break;
115654+ case 2:
115655+ set_rhs = &gimple_assign_set_rhs2;
115656+ break;
115657+#if BUILDING_GCC_VERSION >= 4006
115658+ case 3:
115659+ set_rhs = &gimple_assign_set_rhs3;
115660+ break;
115661+#endif
115662+ default:
115663+ gcc_unreachable();
115664+ }
115665+
115666+ set_rhs(stmt, cast_to_orig_type(stmt, orig_node, new_node));
115667+ break;
115668+ default:
115669+ debug_gimple_stmt(stmt);
115670+ gcc_unreachable();
115671+ }
115672+
115673+ update_stmt(stmt);
115674+} 120886+}
115675+ 120887+
115676+static unsigned int get_correct_arg_count(unsigned int argnum, const_tree fndecl) 120888+unsigned int get_correct_arg_count(unsigned int argnum, const_tree fndecl)
115677+{ 120889+{
115678+ const struct size_overflow_hash *hash; 120890+ const struct size_overflow_hash *hash;
115679+ unsigned int new_argnum; 120891+ unsigned int new_argnum;
@@ -115706,81 +120918,6 @@ index 0000000..fa0524c
115706+ return CANNOT_FIND_ARG; 120918+ return CANNOT_FIND_ARG;
115707+} 120919+}
115708+ 120920+
115709+// Don't want to duplicate entries in next_cgraph_node
115710+static bool is_in_next_cgraph_node(struct next_cgraph_node *head, struct cgraph_node *node, const_tree fndecl, unsigned int num)
115711+{
115712+ const_tree new_callee_fndecl;
115713+ struct next_cgraph_node *cur_node;
115714+
115715+ if (fndecl == RET_CHECK)
115716+ new_callee_fndecl = NODE_DECL(node);
115717+ else
115718+ new_callee_fndecl = fndecl;
115719+
115720+ for (cur_node = head; cur_node; cur_node = cur_node->next) {
115721+ if (!operand_equal_p(NODE_DECL(cur_node->current_function), NODE_DECL(node), 0))
115722+ continue;
115723+ if (!operand_equal_p(cur_node->callee_fndecl, new_callee_fndecl, 0))
115724+ continue;
115725+ if (num == cur_node->num)
115726+ return true;
115727+ }
115728+ return false;
115729+}
115730+
115731+/* Add a next_cgraph_node into the list for handle_function().
115732+ * handle_function() iterates over all the next cgraph nodes and
115733+ * starts the overflow check insertion process.
115734+ */
115735+static struct next_cgraph_node *create_new_next_cgraph_node(struct next_cgraph_node *head, struct cgraph_node *node, tree fndecl, unsigned int num)
115736+{
115737+ struct next_cgraph_node *new_node;
115738+
115739+ if (is_in_next_cgraph_node(head, node, fndecl, num))
115740+ return head;
115741+
115742+ new_node = (struct next_cgraph_node *)xmalloc(sizeof(*new_node));
115743+ new_node->current_function = node;
115744+ new_node->next = NULL;
115745+ new_node->num = num;
115746+ if (fndecl == RET_CHECK)
115747+ new_node->callee_fndecl = NODE_DECL(node);
115748+ else
115749+ new_node->callee_fndecl = fndecl;
115750+
115751+ if (!head)
115752+ return new_node;
115753+
115754+ new_node->next = head;
115755+ return new_node;
115756+}
115757+
115758+static struct next_cgraph_node *create_new_next_cgraph_nodes(struct next_cgraph_node *head, struct cgraph_node *node, unsigned int num)
115759+{
115760+ struct cgraph_edge *e;
115761+
115762+ if (num == 0)
115763+ return create_new_next_cgraph_node(head, node, RET_CHECK, num);
115764+
115765+ for (e = node->callers; e; e = e->next_caller) {
115766+ tree fndecl = gimple_call_fndecl(e->call_stmt);
115767+
115768+ gcc_assert(fndecl != NULL_TREE);
115769+ head = create_new_next_cgraph_node(head, e->caller, fndecl, num);
115770+ }
115771+
115772+ return head;
115773+}
115774+
115775+static bool is_a_return_check(const_tree node)
115776+{
115777+ if (TREE_CODE(node) == FUNCTION_DECL)
115778+ return true;
115779+
115780+ gcc_assert(TREE_CODE(node) == PARM_DECL);
115781+ return false;
115782+}
115783+
115784+static bool is_in_hash_table(const_tree fndecl, unsigned int num) 120921+static bool is_in_hash_table(const_tree fndecl, unsigned int num)
115785+{ 120922+{
115786+ const struct size_overflow_hash *hash; 120923+ const struct size_overflow_hash *hash;
@@ -115791,37 +120928,10 @@ index 0000000..fa0524c
115791+ return false; 120928+ return false;
115792+} 120929+}
115793+ 120930+
115794+struct missing_functions {
115795+ struct missing_functions *next;
115796+ const_tree node;
115797+ tree fndecl;
115798+};
115799+
115800+static struct missing_functions *create_new_missing_function(struct missing_functions *missing_fn_head, tree node)
115801+{
115802+ struct missing_functions *new_function;
115803+
115804+ new_function = (struct missing_functions *)xmalloc(sizeof(*new_function));
115805+ new_function->node = node;
115806+ new_function->next = NULL;
115807+
115808+ if (TREE_CODE(node) == FUNCTION_DECL)
115809+ new_function->fndecl = node;
115810+ else
115811+ new_function->fndecl = current_function_decl;
115812+ gcc_assert(new_function->fndecl);
115813+
115814+ if (!missing_fn_head)
115815+ return new_function;
115816+
115817+ new_function->next = missing_fn_head;
115818+ return new_function;
115819+}
115820+
115821+/* Check if the function has a size_overflow attribute or it is in the size_overflow hash table. 120931+/* Check if the function has a size_overflow attribute or it is in the size_overflow hash table.
115822+ * If the function is missing everywhere then print the missing message into stderr. 120932+ * If the function is missing everywhere then print the missing message into stderr.
115823+ */ 120933+ */
115824+static bool is_missing_function(const_tree orig_fndecl, unsigned int num) 120934+bool is_missing_function(const_tree orig_fndecl, unsigned int num)
115825+{ 120935+{
115826+ switch (DECL_FUNCTION_CODE(orig_fndecl)) { 120936+ switch (DECL_FUNCTION_CODE(orig_fndecl)) {
115827+#if BUILDING_GCC_VERSION >= 4008 120937+#if BUILDING_GCC_VERSION >= 4008
@@ -115849,2192 +120959,12 @@ index 0000000..fa0524c
115849+ return true; 120959+ return true;
115850+} 120960+}
115851+ 120961+
115852+// Get the argnum of a function decl, if node is a return then the argnum is 0
115853+static unsigned int get_function_num(const_tree node, const_tree orig_fndecl)
115854+{
115855+ if (is_a_return_check(node))
115856+ return 0;
115857+ else
115858+ return find_arg_number_tree(node, orig_fndecl);
115859+}
115860+
115861+/* If the function is missing from the hash table and it is a static function
115862+ * then create a next_cgraph_node from it for handle_function()
115863+ */
115864+static struct next_cgraph_node *check_missing_overflow_attribute_and_create_next_node(struct next_cgraph_node *cnodes, struct missing_functions *missing_fn_head)
115865+{
115866+ unsigned int num;
115867+ const_tree orig_fndecl;
115868+ struct cgraph_node *next_node = NULL;
115869+
115870+ orig_fndecl = DECL_ORIGIN(missing_fn_head->fndecl);
115871+
115872+ num = get_function_num(missing_fn_head->node, orig_fndecl);
115873+ if (num == CANNOT_FIND_ARG)
115874+ return cnodes;
115875+
115876+ if (!is_missing_function(orig_fndecl, num))
115877+ return cnodes;
115878+
115879+ next_node = cgraph_get_node(missing_fn_head->fndecl);
115880+ if (next_node && next_node->local.local)
115881+ cnodes = create_new_next_cgraph_nodes(cnodes, next_node, num);
115882+ return cnodes;
115883+}
115884+
115885+/* Search for missing size_overflow attributes on the last nodes in ipa and collect them
115886+ * into the next_cgraph_node list. They will be the next interesting returns or callees.
115887+ */
115888+static struct next_cgraph_node *search_overflow_attribute(struct next_cgraph_node *cnodes, struct interesting_node *cur_node)
115889+{
115890+ unsigned int i;
115891+ tree node;
115892+ struct missing_functions *cur, *missing_fn_head = NULL;
115893+
115894+#if BUILDING_GCC_VERSION <= 4007
115895+ FOR_EACH_VEC_ELT(tree, cur_node->last_nodes, i, node) {
115896+#else
115897+ FOR_EACH_VEC_ELT(*cur_node->last_nodes, i, node) {
115898+#endif
115899+ switch (TREE_CODE(node)) {
115900+ case PARM_DECL:
115901+ if (TREE_CODE(TREE_TYPE(node)) != INTEGER_TYPE)
115902+ break;
115903+ case FUNCTION_DECL:
115904+ missing_fn_head = create_new_missing_function(missing_fn_head, node);
115905+ break;
115906+ default:
115907+ break;
115908+ }
115909+ }
115910+
115911+ while (missing_fn_head) {
115912+ cnodes = check_missing_overflow_attribute_and_create_next_node(cnodes, missing_fn_head);
115913+
115914+ cur = missing_fn_head->next;
115915+ free(missing_fn_head);
115916+ missing_fn_head = cur;
115917+ }
115918+
115919+ return cnodes;
115920+}
115921+
115922+static void walk_phi_set_conditions(struct pointer_set_t *visited, bool *interesting_conditions, const_tree result)
115923+{
115924+ gimple phi = get_def_stmt(result);
115925+ unsigned int i, n = gimple_phi_num_args(phi);
115926+
115927+ pointer_set_insert(visited, phi);
115928+ for (i = 0; i < n; i++) {
115929+ const_tree arg = gimple_phi_arg_def(phi, i);
115930+
115931+ set_conditions(visited, interesting_conditions, arg);
115932+ }
115933+}
115934+
115935+enum conditions {
115936+ FROM_CONST, NOT_UNARY, CAST
115937+};
115938+
115939+// Search for constants, cast assignments and binary/ternary assignments
115940+static void set_conditions(struct pointer_set_t *visited, bool *interesting_conditions, const_tree lhs)
115941+{
115942+ gimple def_stmt = get_def_stmt(lhs);
115943+
115944+ if (is_gimple_constant(lhs)) {
115945+ interesting_conditions[FROM_CONST] = true;
115946+ return;
115947+ }
115948+
115949+ if (!def_stmt)
115950+ return;
115951+
115952+ if (pointer_set_contains(visited, def_stmt))
115953+ return;
115954+
115955+ switch (gimple_code(def_stmt)) {
115956+ case GIMPLE_NOP:
115957+ case GIMPLE_CALL:
115958+ case GIMPLE_ASM:
115959+ return;
115960+ case GIMPLE_PHI:
115961+ return walk_phi_set_conditions(visited, interesting_conditions, lhs);
115962+ case GIMPLE_ASSIGN:
115963+ if (gimple_num_ops(def_stmt) == 2) {
115964+ const_tree rhs = gimple_assign_rhs1(def_stmt);
115965+
115966+ if (gimple_assign_cast_p(def_stmt))
115967+ interesting_conditions[CAST] = true;
115968+
115969+ return set_conditions(visited, interesting_conditions, rhs);
115970+ } else {
115971+ interesting_conditions[NOT_UNARY] = true;
115972+ return;
115973+ }
115974+ default:
115975+ debug_gimple_stmt(def_stmt);
115976+ gcc_unreachable();
115977+ }
115978+}
115979+
115980+// determine whether duplication will be necessary or not.
115981+static void search_interesting_conditions(struct interesting_node *cur_node, bool *interesting_conditions)
115982+{
115983+ struct pointer_set_t *visited;
115984+
115985+ if (gimple_assign_cast_p(cur_node->first_stmt))
115986+ interesting_conditions[CAST] = true;
115987+ else if (is_gimple_assign(cur_node->first_stmt) && gimple_num_ops(cur_node->first_stmt) > 2)
115988+ interesting_conditions[NOT_UNARY] = true;
115989+
115990+ visited = pointer_set_create();
115991+ set_conditions(visited, interesting_conditions, cur_node->node);
115992+ pointer_set_destroy(visited);
115993+}
115994+
115995+// Remove the size_overflow asm stmt and create an assignment from the input and output of the asm
115996+static void replace_size_overflow_asm_with_assign(gimple asm_stmt, tree lhs, tree rhs)
115997+{
115998+ gimple assign;
115999+ gimple_stmt_iterator gsi;
116000+
116001+ // already removed
116002+ if (gimple_bb(asm_stmt) == NULL)
116003+ return;
116004+ gsi = gsi_for_stmt(asm_stmt);
116005+
116006+ assign = gimple_build_assign(lhs, rhs);
116007+ gsi_insert_before(&gsi, assign, GSI_SAME_STMT);
116008+ SSA_NAME_DEF_STMT(lhs) = assign;
116009+
116010+ gsi_remove(&gsi, true);
116011+}
116012+
116013+// Get the field decl of a component ref for intentional_overflow checking
116014+static const_tree search_field_decl(const_tree comp_ref)
116015+{
116016+ const_tree field = NULL_TREE;
116017+ unsigned int i, len = TREE_OPERAND_LENGTH(comp_ref);
116018+
116019+ for (i = 0; i < len; i++) {
116020+ field = TREE_OPERAND(comp_ref, i);
116021+ if (TREE_CODE(field) == FIELD_DECL)
116022+ break;
116023+ }
116024+ gcc_assert(TREE_CODE(field) == FIELD_DECL);
116025+ return field;
116026+}
116027+
116028+/* Get the fndecl of an interesting stmt, the fndecl is the caller function if the interesting
116029+ * stmt is a return otherwise it is the callee function.
116030+ */
116031+static const_tree get_interesting_orig_fndecl(const_gimple stmt, unsigned int argnum)
116032+{
116033+ const_tree fndecl;
116034+
116035+ if (argnum == 0)
116036+ fndecl = current_function_decl;
116037+ else
116038+ fndecl = gimple_call_fndecl(stmt);
116039+
116040+ if (fndecl == NULL_TREE)
116041+ return NULL_TREE;
116042+
116043+ return DECL_ORIGIN(fndecl);
116044+}
116045+
116046+/* Get the param of the intentional_overflow attribute.
116047+ * * 0: MARK_NOT_INTENTIONAL
116048+ * * 1..MAX_PARAM: MARK_YES
116049+ * * -1: MARK_TURN_OFF
116050+ */
116051+static tree get_attribute_param(const_tree decl)
116052+{
116053+ const_tree attr;
116054+
116055+ if (decl == NULL_TREE)
116056+ return NULL_TREE;
116057+
116058+ attr = lookup_attribute("intentional_overflow", DECL_ATTRIBUTES(decl));
116059+ if (!attr || !TREE_VALUE(attr))
116060+ return NULL_TREE;
116061+
116062+ return TREE_VALUE(attr);
116063+}
116064+
116065+// MARK_TURN_OFF
116066+static bool is_turn_off_intentional_attr(const_tree decl)
116067+{
116068+ const_tree param_head;
116069+
116070+ param_head = get_attribute_param(decl);
116071+ if (param_head == NULL_TREE)
116072+ return false;
116073+
116074+ if (TREE_INT_CST_HIGH(TREE_VALUE(param_head)) == -1)
116075+ return true;
116076+ return false;
116077+}
116078+
116079+// MARK_NOT_INTENTIONAL
116080+static bool is_end_intentional_intentional_attr(const_tree decl, unsigned int argnum)
116081+{
116082+ const_tree param_head;
116083+
116084+ if (argnum == 0)
116085+ return false;
116086+
116087+ param_head = get_attribute_param(decl);
116088+ if (param_head == NULL_TREE)
116089+ return false;
116090+
116091+ if (!TREE_INT_CST_LOW(TREE_VALUE(param_head)))
116092+ return true;
116093+ return false;
116094+}
116095+
116096+// MARK_YES
116097+static bool is_yes_intentional_attr(const_tree decl, unsigned int argnum)
116098+{
116099+ tree param, param_head;
116100+
116101+ if (argnum == 0)
116102+ return false;
116103+
116104+ param_head = get_attribute_param(decl);
116105+ for (param = param_head; param; param = TREE_CHAIN(param))
116106+ if (argnum == TREE_INT_CST_LOW(TREE_VALUE(param)))
116107+ return true;
116108+ return false;
116109+}
116110+
116111+static const char *get_asm_string(const_gimple stmt)
116112+{
116113+ if (!stmt)
116114+ return NULL;
116115+ if (gimple_code(stmt) != GIMPLE_ASM)
116116+ return NULL;
116117+
116118+ return gimple_asm_string(stmt);
116119+}
116120+
116121+static bool is_size_overflow_intentional_asm_turn_off(const_gimple stmt)
116122+{
116123+ const char *str;
116124+
116125+ str = get_asm_string(stmt);
116126+ if (!str)
116127+ return false;
116128+ return !strncmp(str, TURN_OFF_ASM_STR, sizeof(TURN_OFF_ASM_STR) - 1);
116129+}
116130+
116131+static bool is_size_overflow_intentional_asm_yes(const_gimple stmt)
116132+{
116133+ const char *str;
116134+
116135+ str = get_asm_string(stmt);
116136+ if (!str)
116137+ return false;
116138+ return !strncmp(str, YES_ASM_STR, sizeof(YES_ASM_STR) - 1);
116139+}
116140+
116141+static bool is_size_overflow_asm(const_gimple stmt)
116142+{
116143+ const char *str;
116144+
116145+ str = get_asm_string(stmt);
116146+ if (!str)
116147+ return false;
116148+ return !strncmp(str, OK_ASM_STR, sizeof(OK_ASM_STR) - 1);
116149+}
116150+
116151+static void print_missing_intentional(enum mark callee_attr, enum mark caller_attr, const_tree decl, unsigned int argnum)
116152+{
116153+ location_t loc;
116154+
116155+ if (caller_attr == MARK_NO || caller_attr == MARK_NOT_INTENTIONAL || caller_attr == MARK_TURN_OFF)
116156+ return;
116157+
116158+ if (callee_attr == MARK_NOT_INTENTIONAL || callee_attr == MARK_YES)
116159+ return;
116160+
116161+ loc = DECL_SOURCE_LOCATION(decl);
116162+ inform(loc, "The intentional_overflow attribute is missing from +%s+%u+", DECL_NAME_POINTER(decl), argnum);
116163+}
116164+
116165+/* Get the type of the intentional_overflow attribute of a node
116166+ * * MARK_TURN_OFF
116167+ * * MARK_YES
116168+ * * MARK_NO
116169+ * * MARK_NOT_INTENTIONAL
116170+ */
116171+static enum mark get_intentional_attr_type(const_tree node)
116172+{
116173+ const_tree cur_decl;
116174+
116175+ if (node == NULL_TREE)
116176+ return MARK_NO;
116177+
116178+ switch (TREE_CODE(node)) {
116179+ case COMPONENT_REF:
116180+ cur_decl = search_field_decl(node);
116181+ if (is_turn_off_intentional_attr(cur_decl))
116182+ return MARK_TURN_OFF;
116183+ if (is_end_intentional_intentional_attr(cur_decl, 1))
116184+ return MARK_YES;
116185+ break;
116186+ case PARM_DECL: {
116187+ unsigned int argnum;
116188+
116189+ cur_decl = DECL_ORIGIN(current_function_decl);
116190+ argnum = find_arg_number_tree(node, cur_decl);
116191+ if (argnum == CANNOT_FIND_ARG)
116192+ return MARK_NO;
116193+ if (is_yes_intentional_attr(cur_decl, argnum))
116194+ return MARK_YES;
116195+ if (is_end_intentional_intentional_attr(cur_decl, argnum))
116196+ return MARK_NOT_INTENTIONAL;
116197+ break;
116198+ }
116199+ case FUNCTION_DECL:
116200+ if (is_turn_off_intentional_attr(DECL_ORIGIN(node)))
116201+ return MARK_TURN_OFF;
116202+ break;
116203+ default:
116204+ break;
116205+ }
116206+ return MARK_NO;
116207+}
116208+
116209+// Search for the intentional_overflow attribute on the last nodes
116210+static enum mark search_last_nodes_intentional(struct interesting_node *cur_node)
116211+{
116212+ unsigned int i;
116213+ tree last_node;
116214+ enum mark mark = MARK_NO;
116215+
116216+#if BUILDING_GCC_VERSION <= 4007
116217+ FOR_EACH_VEC_ELT(tree, cur_node->last_nodes, i, last_node) {
116218+#else
116219+ FOR_EACH_VEC_ELT(*cur_node->last_nodes, i, last_node) {
116220+#endif
116221+ mark = get_intentional_attr_type(last_node);
116222+ if (mark != MARK_NO)
116223+ break;
116224+ }
116225+ return mark;
116226+}
116227+
116228+/* Check the intentional kind of size_overflow asm stmt (created by the gimple pass) and
116229+ * set the appropriate intentional_overflow type. Delete the asm stmt in the end.
116230+ */
116231+static bool is_intentional_attribute_from_gimple(struct interesting_node *cur_node)
116232+{
116233+ if (!cur_node->intentional_mark_from_gimple)
116234+ return false;
116235+
116236+ if (is_size_overflow_intentional_asm_yes(cur_node->intentional_mark_from_gimple))
116237+ cur_node->intentional_attr_cur_fndecl = MARK_YES;
116238+ else
116239+ cur_node->intentional_attr_cur_fndecl = MARK_TURN_OFF;
116240+
116241+ // skip param decls
116242+ if (gimple_asm_noutputs(cur_node->intentional_mark_from_gimple) == 0)
116243+ return true;
116244+ return true;
116245+}
116246+
116247+/* Search intentional_overflow attribute on caller and on callee too.
116248+ * 0</MARK_YES: no dup, search size_overflow and intentional_overflow attributes
116249+ * 0/MARK_NOT_INTENTIONAL: no dup, search size_overflow attribute (int)
116250+ * -1/MARK_TURN_OFF: no dup, no search, current_function_decl -> no dup
116251+*/
116252+static void check_intentional_attribute_ipa(struct interesting_node *cur_node)
116253+{
116254+ const_tree fndecl;
116255+
116256+ if (is_intentional_attribute_from_gimple(cur_node))
116257+ return;
116258+
116259+ if (is_turn_off_intentional_attr(DECL_ORIGIN(current_function_decl))) {
116260+ cur_node->intentional_attr_cur_fndecl = MARK_TURN_OFF;
116261+ return;
116262+ }
116263+
116264+ if (gimple_code(cur_node->first_stmt) == GIMPLE_ASM) {
116265+ cur_node->intentional_attr_cur_fndecl = MARK_NOT_INTENTIONAL;
116266+ return;
116267+ }
116268+
116269+ if (gimple_code(cur_node->first_stmt) == GIMPLE_ASSIGN)
116270+ return;
116271+
116272+ fndecl = get_interesting_orig_fndecl(cur_node->first_stmt, cur_node->num);
116273+ if (is_turn_off_intentional_attr(fndecl)) {
116274+ cur_node->intentional_attr_decl = MARK_TURN_OFF;
116275+ return;
116276+ }
116277+
116278+ if (is_end_intentional_intentional_attr(fndecl, cur_node->num))
116279+ cur_node->intentional_attr_decl = MARK_NOT_INTENTIONAL;
116280+ else if (is_yes_intentional_attr(fndecl, cur_node->num))
116281+ cur_node->intentional_attr_decl = MARK_YES;
116282+
116283+ cur_node->intentional_attr_cur_fndecl = search_last_nodes_intentional(cur_node);
116284+ print_missing_intentional(cur_node->intentional_attr_decl, cur_node->intentional_attr_cur_fndecl, cur_node->fndecl, cur_node->num);
116285+}
116286+
116287+// e.g., 3.8.2, 64, arch/x86/ia32/ia32_signal.c copy_siginfo_from_user32(): compat_ptr() u32 max
116288+static bool skip_asm(const_tree arg)
116289+{
116290+ gimple def_stmt = get_def_stmt(arg);
116291+
116292+ if (!def_stmt || !gimple_assign_cast_p(def_stmt))
116293+ return false;
116294+
116295+ def_stmt = get_def_stmt(gimple_assign_rhs1(def_stmt));
116296+ return def_stmt && gimple_code(def_stmt) == GIMPLE_ASM;
116297+}
116298+
116299+static void walk_use_def_phi(struct pointer_set_t *visited, struct interesting_node *cur_node, tree result)
116300+{
116301+ gimple phi = get_def_stmt(result);
116302+ unsigned int i, n = gimple_phi_num_args(phi);
116303+
116304+ pointer_set_insert(visited, phi);
116305+ for (i = 0; i < n; i++) {
116306+ tree arg = gimple_phi_arg_def(phi, i);
116307+
116308+ walk_use_def(visited, cur_node, arg);
116309+ }
116310+}
116311+
116312+static void walk_use_def_binary(struct pointer_set_t *visited, struct interesting_node *cur_node, tree lhs)
116313+{
116314+ gimple def_stmt = get_def_stmt(lhs);
116315+ tree rhs1, rhs2;
116316+
116317+ rhs1 = gimple_assign_rhs1(def_stmt);
116318+ rhs2 = gimple_assign_rhs2(def_stmt);
116319+
116320+ walk_use_def(visited, cur_node, rhs1);
116321+ walk_use_def(visited, cur_node, rhs2);
116322+}
116323+
116324+static void insert_last_node(struct interesting_node *cur_node, tree node)
116325+{
116326+ unsigned int i;
116327+ tree element;
116328+ enum tree_code code;
116329+
116330+ gcc_assert(node != NULL_TREE);
116331+
116332+ if (is_gimple_constant(node))
116333+ return;
116334+
116335+ code = TREE_CODE(node);
116336+ if (code == VAR_DECL) {
116337+ node = DECL_ORIGIN(node);
116338+ code = TREE_CODE(node);
116339+ }
116340+
116341+ if (code != PARM_DECL && code != FUNCTION_DECL && code != COMPONENT_REF)
116342+ return;
116343+
116344+#if BUILDING_GCC_VERSION <= 4007
116345+ FOR_EACH_VEC_ELT(tree, cur_node->last_nodes, i, element) {
116346+#else
116347+ FOR_EACH_VEC_ELT(*cur_node->last_nodes, i, element) {
116348+#endif
116349+ if (operand_equal_p(node, element, 0))
116350+ return;
116351+ }
116352+
116353+#if BUILDING_GCC_VERSION <= 4007
116354+ gcc_assert(VEC_length(tree, cur_node->last_nodes) < VEC_LEN);
116355+ VEC_safe_push(tree, gc, cur_node->last_nodes, node);
116356+#else
116357+ gcc_assert(cur_node->last_nodes->length() < VEC_LEN);
116358+ vec_safe_push(cur_node->last_nodes, node);
116359+#endif
116360+}
116361+
116362+// a size_overflow asm stmt in the control flow doesn't stop the recursion
116363+static void handle_asm_stmt(struct pointer_set_t *visited, struct interesting_node *cur_node, tree lhs, const_gimple stmt)
116364+{
116365+ if (!is_size_overflow_asm(stmt))
116366+ walk_use_def(visited, cur_node, SSA_NAME_VAR(lhs));
116367+}
116368+
116369+/* collect the parm_decls and fndecls (for checking a missing size_overflow attribute (ret or arg) or intentional_overflow)
116370+ * and component refs (for checking the intentional_overflow attribute).
116371+ */
116372+static void walk_use_def(struct pointer_set_t *visited, struct interesting_node *cur_node, tree lhs)
116373+{
116374+ const_gimple def_stmt;
116375+
116376+ if (TREE_CODE(lhs) != SSA_NAME) {
116377+ insert_last_node(cur_node, lhs);
116378+ return;
116379+ }
116380+
116381+ def_stmt = get_def_stmt(lhs);
116382+ if (!def_stmt)
116383+ return;
116384+
116385+ if (pointer_set_insert(visited, def_stmt))
116386+ return;
116387+
116388+ switch (gimple_code(def_stmt)) {
116389+ case GIMPLE_NOP:
116390+ return walk_use_def(visited, cur_node, SSA_NAME_VAR(lhs));
116391+ case GIMPLE_ASM:
116392+ return handle_asm_stmt(visited, cur_node, lhs, def_stmt);
116393+ case GIMPLE_CALL: {
116394+ tree fndecl = gimple_call_fndecl(def_stmt);
116395+
116396+ if (fndecl == NULL_TREE)
116397+ return;
116398+ insert_last_node(cur_node, fndecl);
116399+ return;
116400+ }
116401+ case GIMPLE_PHI:
116402+ return walk_use_def_phi(visited, cur_node, lhs);
116403+ case GIMPLE_ASSIGN:
116404+ switch (gimple_num_ops(def_stmt)) {
116405+ case 2:
116406+ return walk_use_def(visited, cur_node, gimple_assign_rhs1(def_stmt));
116407+ case 3:
116408+ return walk_use_def_binary(visited, cur_node, lhs);
116409+ }
116410+ default:
116411+ debug_gimple_stmt((gimple)def_stmt);
116412+ error("%s: unknown gimple code", __func__);
116413+ gcc_unreachable();
116414+ }
116415+}
116416+
116417+// Collect all the last nodes for checking the intentional_overflow and size_overflow attributes
116418+static void set_last_nodes(struct interesting_node *cur_node)
116419+{
116420+ struct pointer_set_t *visited;
116421+
116422+ visited = pointer_set_create();
116423+ walk_use_def(visited, cur_node, cur_node->node);
116424+ pointer_set_destroy(visited);
116425+}
116426+
116427+enum precond {
116428+ NO_ATTRIBUTE_SEARCH, NO_CHECK_INSERT, NONE
116429+};
116430+
116431+/* If there is a mark_turn_off intentional attribute on the caller or the callee then there is no duplication and missing size_overflow attribute check anywhere.
116432+ * There is only missing size_overflow attribute checking if the intentional_overflow attribute is the mark_no type.
116433+ * Stmt duplication is unnecessary if there are no binary/ternary assignements or if the unary assignment isn't a cast.
116434+ * It skips the possible error codes too. If the def_stmts trace back to a constant and there are no binary/ternary assigments then we assume that it is some kind of error code.
116435+ */
116436+static enum precond check_preconditions(struct interesting_node *cur_node)
116437+{
116438+ bool interesting_conditions[3] = {false, false, false};
116439+
116440+ set_last_nodes(cur_node);
116441+
116442+ check_intentional_attribute_ipa(cur_node);
116443+ if (cur_node->intentional_attr_decl == MARK_TURN_OFF || cur_node->intentional_attr_cur_fndecl == MARK_TURN_OFF)
116444+ return NO_ATTRIBUTE_SEARCH;
116445+
116446+ search_interesting_conditions(cur_node, interesting_conditions);
116447+
116448+ // error code
116449+ if (interesting_conditions[CAST] && interesting_conditions[FROM_CONST] && !interesting_conditions[NOT_UNARY])
116450+ return NO_ATTRIBUTE_SEARCH;
116451+
116452+ // unnecessary overflow check
116453+ if (!interesting_conditions[CAST] && !interesting_conditions[NOT_UNARY])
116454+ return NO_CHECK_INSERT;
116455+
116456+ if (cur_node->intentional_attr_cur_fndecl != MARK_NO)
116457+ return NO_CHECK_INSERT;
116458+
116459+ return NONE;
116460+}
116461+
116462+/* This function calls the main recursion function (expand) that duplicates the stmts. Before that it checks the intentional_overflow attribute and asm stmts,
116463+ * it decides whether the duplication is necessary or not and it searches for missing size_overflow attributes. After expand() it changes the orig node to the duplicated node
116464+ * in the original stmt (first stmt) and it inserts the overflow check for the arg of the callee or for the return value.
116465+ */
116466+static struct next_cgraph_node *handle_interesting_stmt(struct next_cgraph_node *cnodes, struct interesting_node *cur_node, struct cgraph_node *caller_node)
116467+{
116468+ enum precond ret;
116469+ struct pointer_set_t *visited;
116470+ tree new_node, orig_node = cur_node->node;
116471+
116472+ ret = check_preconditions(cur_node);
116473+ if (ret == NO_ATTRIBUTE_SEARCH)
116474+ return cnodes;
116475+
116476+ cnodes = search_overflow_attribute(cnodes, cur_node);
116477+
116478+ if (ret == NO_CHECK_INSERT)
116479+ return cnodes;
116480+
116481+ visited = pointer_set_create();
116482+ new_node = expand(visited, caller_node, orig_node);
116483+ pointer_set_destroy(visited);
116484+
116485+ if (new_node == NULL_TREE)
116486+ return cnodes;
116487+
116488+ change_orig_node(cur_node, new_node);
116489+ check_size_overflow(caller_node, cur_node->first_stmt, TREE_TYPE(new_node), new_node, orig_node, BEFORE_STMT);
116490+
116491+ return cnodes;
116492+}
116493+
116494+// Check visited interesting nodes.
116495+static bool is_in_interesting_node(struct interesting_node *head, const_gimple first_stmt, const_tree node, unsigned int num)
116496+{
116497+ struct interesting_node *cur;
116498+
116499+ for (cur = head; cur; cur = cur->next) {
116500+ if (!operand_equal_p(node, cur->node, 0))
116501+ continue;
116502+ if (num != cur->num)
116503+ continue;
116504+ if (first_stmt == cur->first_stmt)
116505+ return true;
116506+ }
116507+ return false;
116508+}
116509+
116510+/* Create an interesting node. The ipa pass starts to duplicate from these stmts.
116511+ first_stmt: it is the call or assignment or ret stmt, change_orig_node() will change the original node (retval, or function arg) in this
116512+ last_nodes: they are the last stmts in the recursion (they haven't a def_stmt). They are useful in the missing size_overflow attribute check and
116513+ the intentional_overflow attribute check. They are collected by set_last_nodes().
116514+ num: arg count of a call stmt or 0 when it is a ret
116515+ node: the recursion starts from here, it is a call arg or a return value
116516+ fndecl: the fndecl of the interesting node when the node is an arg. it is the fndecl of the callee function otherwise it is the fndecl of the caller (current_function_fndecl) function.
116517+ intentional_attr_decl: intentional_overflow attribute of the callee function
116518+ intentional_attr_cur_fndecl: intentional_overflow attribute of the caller function
116519+ intentional_mark_from_gimple: the intentional overflow type of size_overflow asm stmt from gimple if it exists
116520+ */
116521+static struct interesting_node *create_new_interesting_node(struct interesting_node *head, gimple first_stmt, tree node, unsigned int num, gimple asm_stmt)
116522+{
116523+ struct interesting_node *new_node;
116524+ tree fndecl;
116525+ enum gimple_code code;
116526+
116527+ gcc_assert(node != NULL_TREE);
116528+ code = gimple_code(first_stmt);
116529+ gcc_assert(code == GIMPLE_CALL || code == GIMPLE_ASM || code == GIMPLE_ASSIGN || code == GIMPLE_RETURN);
116530+
116531+ if (num == CANNOT_FIND_ARG)
116532+ return head;
116533+
116534+ if (skip_types(node))
116535+ return head;
116536+
116537+ if (skip_asm(node))
116538+ return head;
116539+
116540+ if (is_gimple_call(first_stmt))
116541+ fndecl = gimple_call_fndecl(first_stmt);
116542+ else
116543+ fndecl = current_function_decl;
116544+
116545+ if (fndecl == NULL_TREE)
116546+ return head;
116547+
116548+ if (is_in_interesting_node(head, first_stmt, node, num))
116549+ return head;
116550+
116551+ new_node = (struct interesting_node *)xmalloc(sizeof(*new_node));
116552+
116553+ new_node->next = NULL;
116554+ new_node->first_stmt = first_stmt;
116555+#if BUILDING_GCC_VERSION <= 4007
116556+ new_node->last_nodes = VEC_alloc(tree, gc, VEC_LEN);
116557+#else
116558+ vec_alloc(new_node->last_nodes, VEC_LEN);
116559+#endif
116560+ new_node->num = num;
116561+ new_node->node = node;
116562+ new_node->fndecl = fndecl;
116563+ new_node->intentional_attr_decl = MARK_NO;
116564+ new_node->intentional_attr_cur_fndecl = MARK_NO;
116565+ new_node->intentional_mark_from_gimple = asm_stmt;
116566+
116567+ if (!head)
116568+ return new_node;
116569+
116570+ new_node->next = head;
116571+ return new_node;
116572+}
116573+
116574+/* Check the ret stmts in the functions on the next cgraph node list (these functions will be in the hash table and they are reachable from ipa).
116575+ * If the ret stmt is in the next cgraph node list then it's an interesting ret.
116576+ */
116577+static struct interesting_node *handle_stmt_by_cgraph_nodes_ret(struct interesting_node *head, gimple stmt, struct next_cgraph_node *next_node)
116578+{
116579+ struct next_cgraph_node *cur_node;
116580+ tree ret = gimple_return_retval(stmt);
116581+
116582+ if (ret == NULL_TREE)
116583+ return head;
116584+
116585+ for (cur_node = next_node; cur_node; cur_node = cur_node->next) {
116586+ if (!operand_equal_p(cur_node->callee_fndecl, DECL_ORIGIN(current_function_decl), 0))
116587+ continue;
116588+ if (cur_node->num == 0)
116589+ head = create_new_interesting_node(head, stmt, ret, 0, NOT_INTENTIONAL_ASM);
116590+ }
116591+
116592+ return head;
116593+}
116594+
116595+/* Check the call stmts in the functions on the next cgraph node list (these functions will be in the hash table and they are reachable from ipa).
116596+ * If the call stmt is in the next cgraph node list then it's an interesting call.
116597+ */
116598+static struct interesting_node *handle_stmt_by_cgraph_nodes_call(struct interesting_node *head, gimple stmt, struct next_cgraph_node *next_node)
116599+{
116600+ unsigned int argnum;
116601+ tree arg;
116602+ const_tree fndecl;
116603+ struct next_cgraph_node *cur_node;
116604+
116605+ fndecl = gimple_call_fndecl(stmt);
116606+ if (fndecl == NULL_TREE)
116607+ return head;
116608+
116609+ for (cur_node = next_node; cur_node; cur_node = cur_node->next) {
116610+ if (!operand_equal_p(cur_node->callee_fndecl, fndecl, 0))
116611+ continue;
116612+ argnum = get_correct_arg_count(cur_node->num, fndecl);
116613+ gcc_assert(argnum != CANNOT_FIND_ARG);
116614+ if (argnum == 0)
116615+ continue;
116616+
116617+ arg = gimple_call_arg(stmt, argnum - 1);
116618+ head = create_new_interesting_node(head, stmt, arg, argnum, NOT_INTENTIONAL_ASM);
116619+ }
116620+
116621+ return head;
116622+}
116623+
116624+static unsigned int check_ops(const_tree orig_node, const_tree node, unsigned int ret_count)
116625+{
116626+ if (!operand_equal_p(orig_node, node, 0))
116627+ return WRONG_NODE;
116628+ if (skip_types(node))
116629+ return WRONG_NODE;
116630+ return ret_count;
116631+}
116632+
116633+// Get the index of the rhs node in an assignment
116634+static unsigned int get_assign_ops_count(const_gimple stmt, tree node)
116635+{
116636+ const_tree rhs1, rhs2;
116637+ unsigned int ret;
116638+
116639+ gcc_assert(stmt);
116640+ gcc_assert(is_gimple_assign(stmt));
116641+
116642+ rhs1 = gimple_assign_rhs1(stmt);
116643+ gcc_assert(rhs1 != NULL_TREE);
116644+
116645+ switch (gimple_num_ops(stmt)) {
116646+ case 2:
116647+ return check_ops(node, rhs1, 1);
116648+ case 3:
116649+ ret = check_ops(node, rhs1, 1);
116650+ if (ret != WRONG_NODE)
116651+ return ret;
116652+
116653+ rhs2 = gimple_assign_rhs2(stmt);
116654+ gcc_assert(rhs2 != NULL_TREE);
116655+ return check_ops(node, rhs2, 2);
116656+ default:
116657+ gcc_unreachable();
116658+ }
116659+}
116660+
116661+// Find the correct arg number of a call stmt. It is needed when the interesting function is a cloned function.
116662+static unsigned int find_arg_number_gimple(const_tree arg, const_gimple stmt)
116663+{
116664+ unsigned int i;
116665+
116666+ if (gimple_call_fndecl(stmt) == NULL_TREE)
116667+ return CANNOT_FIND_ARG;
116668+
116669+ for (i = 0; i < gimple_call_num_args(stmt); i++) {
116670+ tree node;
116671+
116672+ node = gimple_call_arg(stmt, i);
116673+ if (!operand_equal_p(arg, node, 0))
116674+ continue;
116675+ if (!skip_types(node))
116676+ return i + 1;
116677+ }
116678+
116679+ return CANNOT_FIND_ARG;
116680+}
116681+
116682+/* starting from the size_overflow asm stmt collect interesting stmts. They can be
116683+ * any of return, call or assignment stmts (because of inlining).
116684+ */
116685+static struct interesting_node *get_interesting_ret_or_call(struct pointer_set_t *visited, struct interesting_node *head, tree node, gimple intentional_asm)
116686+{
116687+ use_operand_p use_p;
116688+ imm_use_iterator imm_iter;
116689+ unsigned int argnum;
116690+
116691+ gcc_assert(TREE_CODE(node) == SSA_NAME);
116692+
116693+ if (pointer_set_insert(visited, node))
116694+ return head;
116695+
116696+ FOR_EACH_IMM_USE_FAST(use_p, imm_iter, node) {
116697+ gimple stmt = USE_STMT(use_p);
116698+
116699+ if (stmt == NULL)
116700+ return head;
116701+ if (is_gimple_debug(stmt))
116702+ continue;
116703+
116704+ switch (gimple_code(stmt)) {
116705+ case GIMPLE_CALL:
116706+ argnum = find_arg_number_gimple(node, stmt);
116707+ head = create_new_interesting_node(head, stmt, node, argnum, intentional_asm);
116708+ break;
116709+ case GIMPLE_RETURN:
116710+ head = create_new_interesting_node(head, stmt, node, 0, intentional_asm);
116711+ break;
116712+ case GIMPLE_ASSIGN:
116713+ argnum = get_assign_ops_count(stmt, node);
116714+ head = create_new_interesting_node(head, stmt, node, argnum, intentional_asm);
116715+ break;
116716+ case GIMPLE_PHI: {
116717+ tree result = gimple_phi_result(stmt);
116718+ head = get_interesting_ret_or_call(visited, head, result, intentional_asm);
116719+ break;
116720+ }
116721+ case GIMPLE_ASM:
116722+ if (gimple_asm_noutputs(stmt) != 0)
116723+ break;
116724+ if (!is_size_overflow_asm(stmt))
116725+ break;
116726+ head = create_new_interesting_node(head, stmt, node, 1, intentional_asm);
116727+ break;
116728+ case GIMPLE_COND:
116729+ case GIMPLE_SWITCH:
116730+ break;
116731+ default:
116732+ debug_gimple_stmt(stmt);
116733+ gcc_unreachable();
116734+ break;
116735+ }
116736+ }
116737+ return head;
116738+}
116739+
116740+static void remove_size_overflow_asm(gimple stmt)
116741+{
116742+ gimple_stmt_iterator gsi;
116743+ tree input, output;
116744+
116745+ if (!is_size_overflow_asm(stmt))
116746+ return;
116747+
116748+ if (gimple_asm_noutputs(stmt) == 0) {
116749+ gsi = gsi_for_stmt(stmt);
116750+ ipa_remove_stmt_references(cgraph_get_create_node(current_function_decl), stmt);
116751+ gsi_remove(&gsi, true);
116752+ return;
116753+ }
116754+
116755+ input = gimple_asm_input_op(stmt, 0);
116756+ output = gimple_asm_output_op(stmt, 0);
116757+ replace_size_overflow_asm_with_assign(stmt, TREE_VALUE(output), TREE_VALUE(input));
116758+}
116759+
116760+/* handle the size_overflow asm stmts from the gimple pass and collect the interesting stmts.
116761+ * If the asm stmt is a parm_decl kind (noutputs == 0) then remove it.
116762+ * If it is a simple asm stmt then replace it with an assignment from the asm input to the asm output.
116763+ */
116764+static struct interesting_node *handle_stmt_by_size_overflow_asm(gimple stmt, struct interesting_node *head)
116765+{
116766+ const_tree output;
116767+ struct pointer_set_t *visited;
116768+ gimple intentional_asm = NOT_INTENTIONAL_ASM;
116769+
116770+ if (!is_size_overflow_asm(stmt))
116771+ return head;
116772+
116773+ if (is_size_overflow_intentional_asm_yes(stmt) || is_size_overflow_intentional_asm_turn_off(stmt))
116774+ intentional_asm = stmt;
116775+
116776+ gcc_assert(gimple_asm_ninputs(stmt) == 1);
116777+
116778+ if (gimple_asm_noutputs(stmt) == 0 && is_size_overflow_intentional_asm_turn_off(stmt))
116779+ return head;
116780+
116781+ if (gimple_asm_noutputs(stmt) == 0) {
116782+ const_tree input;
116783+
116784+ if (!is_size_overflow_intentional_asm_turn_off(stmt))
116785+ return head;
116786+
116787+ input = gimple_asm_input_op(stmt, 0);
116788+ remove_size_overflow_asm(stmt);
116789+ if (is_gimple_constant(TREE_VALUE(input)))
116790+ return head;
116791+ visited = pointer_set_create();
116792+ head = get_interesting_ret_or_call(visited, head, TREE_VALUE(input), intentional_asm);
116793+ pointer_set_destroy(visited);
116794+ return head;
116795+ }
116796+
116797+ if (!is_size_overflow_intentional_asm_yes(stmt) && !is_size_overflow_intentional_asm_turn_off(stmt))
116798+ remove_size_overflow_asm(stmt);
116799+
116800+ visited = pointer_set_create();
116801+ output = gimple_asm_output_op(stmt, 0);
116802+ head = get_interesting_ret_or_call(visited, head, TREE_VALUE(output), intentional_asm);
116803+ pointer_set_destroy(visited);
116804+ return head;
116805+}
116806+
116807+/* Iterate over all the stmts of a function and look for the size_overflow asm stmts (they were created in the gimple pass)
116808+ * or a call stmt or a return stmt and store them in the interesting_node list
116809+ */
116810+static struct interesting_node *collect_interesting_stmts(struct next_cgraph_node *next_node)
116811+{
116812+ basic_block bb;
116813+ struct interesting_node *head = NULL;
116814+
116815+ FOR_ALL_BB_FN(bb, cfun) {
116816+ gimple_stmt_iterator gsi;
116817+
116818+ for (gsi = gsi_start_bb(bb); !gsi_end_p(gsi); gsi_next(&gsi)) {
116819+ enum gimple_code code;
116820+ gimple stmt = gsi_stmt(gsi);
116821+
116822+ code = gimple_code(stmt);
116823+
116824+ if (code == GIMPLE_ASM)
116825+ head = handle_stmt_by_size_overflow_asm(stmt, head);
116826+
116827+ if (!next_node)
116828+ continue;
116829+ if (code == GIMPLE_CALL)
116830+ head = handle_stmt_by_cgraph_nodes_call(head, stmt, next_node);
116831+ if (code == GIMPLE_RETURN)
116832+ head = handle_stmt_by_cgraph_nodes_ret(head, stmt, next_node);
116833+ }
116834+ }
116835+ return head;
116836+}
116837+
116838+static void set_current_function_decl(tree fndecl)
116839+{
116840+ gcc_assert(fndecl != NULL_TREE);
116841+
116842+ push_cfun(DECL_STRUCT_FUNCTION(fndecl));
116843+ calculate_dominance_info(CDI_DOMINATORS);
116844+ current_function_decl = fndecl;
116845+}
116846+
116847+static void unset_current_function_decl(void)
116848+{
116849+ free_dominance_info(CDI_DOMINATORS);
116850+ pop_cfun();
116851+ current_function_decl = NULL_TREE;
116852+}
116853+
116854+static void free_interesting_node(struct interesting_node *head)
116855+{
116856+ struct interesting_node *cur;
116857+
116858+ while (head) {
116859+ cur = head->next;
116860+#if BUILDING_GCC_VERSION <= 4007
116861+ VEC_free(tree, gc, head->last_nodes);
116862+#else
116863+ vec_free(head->last_nodes);
116864+#endif
116865+ free(head);
116866+ head = cur;
116867+ }
116868+}
116869+
116870+static struct visited *insert_visited_function(struct visited *head, struct interesting_node *cur_node)
116871+{
116872+ struct visited *new_visited;
116873+
116874+ new_visited = (struct visited *)xmalloc(sizeof(*new_visited));
116875+ new_visited->fndecl = cur_node->fndecl;
116876+ new_visited->num = cur_node->num;
116877+ new_visited->next = NULL;
116878+
116879+ if (!head)
116880+ return new_visited;
116881+
116882+ new_visited->next = head;
116883+ return new_visited;
116884+}
116885+
116886+/* Check whether the function was already visited. If the fndecl, the arg count of the fndecl and the first_stmt (call or return) are same then
116887+ * it is a visited function.
116888+ */
116889+static bool is_visited_function(struct visited *head, struct interesting_node *cur_node)
116890+{
116891+ struct visited *cur;
116892+
116893+ if (!head)
116894+ return false;
116895+
116896+ if (get_stmt_flag(cur_node->first_stmt) != VISITED_STMT)
116897+ return false;
116898+
116899+ for (cur = head; cur; cur = cur->next) {
116900+ if (!operand_equal_p(cur_node->fndecl, cur->fndecl, 0))
116901+ continue;
116902+ if (cur_node->num == cur->num)
116903+ return true;
116904+ }
116905+ return false;
116906+}
116907+
116908+static void free_next_cgraph_node(struct next_cgraph_node *head)
116909+{
116910+ struct next_cgraph_node *cur;
116911+
116912+ while (head) {
116913+ cur = head->next;
116914+ free(head);
116915+ head = cur;
116916+ }
116917+}
116918+
116919+static void remove_all_size_overflow_asm(void)
116920+{
116921+ basic_block bb;
116922+
116923+ FOR_ALL_BB_FN(bb, cfun) {
116924+ gimple_stmt_iterator si;
116925+
116926+ for (si = gsi_start_bb(bb); !gsi_end_p(si); gsi_next(&si))
116927+ remove_size_overflow_asm(gsi_stmt(si));
116928+ }
116929+}
116930+
116931+/* Main recursive walk of the ipa pass: iterate over the collected interesting stmts in a function
116932+ * (they are interesting if they have an associated size_overflow asm stmt) and recursively walk
116933+ * the newly collected interesting functions (they are interesting if there is control flow between
116934+ * the interesting stmts and them).
116935+ */
116936+static struct visited *handle_function(struct cgraph_node *node, struct next_cgraph_node *next_node, struct visited *visited)
116937+{
116938+ struct interesting_node *head, *cur_node;
116939+ struct next_cgraph_node *cur_cnodes, *cnodes_head = NULL;
116940+
116941+ set_current_function_decl(NODE_DECL(node));
116942+ call_count = 0;
116943+
116944+ head = collect_interesting_stmts(next_node);
116945+
116946+ for (cur_node = head; cur_node; cur_node = cur_node->next) {
116947+ if (is_visited_function(visited, cur_node))
116948+ continue;
116949+ cnodes_head = handle_interesting_stmt(cnodes_head, cur_node, node);
116950+ set_stmt_flag(cur_node->first_stmt, VISITED_STMT);
116951+ visited = insert_visited_function(visited, cur_node);
116952+ }
116953+
116954+ free_interesting_node(head);
116955+ remove_all_size_overflow_asm();
116956+ unset_current_function_decl();
116957+
116958+ for (cur_cnodes = cnodes_head; cur_cnodes; cur_cnodes = cur_cnodes->next)
116959+ visited = handle_function(cur_cnodes->current_function, cur_cnodes, visited);
116960+
116961+ free_next_cgraph_node(cnodes_head);
116962+ return visited;
116963+}
116964+
116965+static void free_visited(struct visited *head)
116966+{
116967+ struct visited *cur;
116968+
116969+ while (head) {
116970+ cur = head->next;
116971+ free(head);
116972+ head = cur;
116973+ }
116974+}
116975+
116976+// erase the local flag
116977+static void set_plf_false(void)
116978+{
116979+ basic_block bb;
116980+
116981+ FOR_ALL_BB_FN(bb, cfun) {
116982+ gimple_stmt_iterator si;
116983+
116984+ for (si = gsi_start_bb(bb); !gsi_end_p(si); gsi_next(&si))
116985+ set_stmt_flag(gsi_stmt(si), NO_FLAGS);
116986+ for (si = gsi_start_phis(bb); !gsi_end_p(si); gsi_next(&si))
116987+ set_stmt_flag(gsi_stmt(si), NO_FLAGS);
116988+ }
116989+}
116990+
116991+// Main entry point of the ipa pass: erases the plf flag of all stmts and iterates over all the functions
116992+static unsigned int search_function(void)
116993+{
116994+ struct cgraph_node *node;
116995+ struct visited *visited = NULL;
116996+
116997+ FOR_EACH_FUNCTION_WITH_GIMPLE_BODY(node) {
116998+ set_current_function_decl(NODE_DECL(node));
116999+ set_plf_false();
117000+ unset_current_function_decl();
117001+ }
117002+
117003+ FOR_EACH_FUNCTION_WITH_GIMPLE_BODY(node) {
117004+ gcc_assert(cgraph_function_flags_ready);
117005+#if BUILDING_GCC_VERSION <= 4007
117006+ gcc_assert(node->reachable);
117007+#endif
117008+
117009+ visited = handle_function(node, NULL, visited);
117010+ }
117011+
117012+ free_visited(visited);
117013+ return 0;
117014+}
117015+
117016+#if BUILDING_GCC_VERSION >= 4009
117017+static const struct pass_data ipa_pass_data = {
117018+#else
117019+static struct ipa_opt_pass_d ipa_pass = {
117020+ .pass = {
117021+#endif
117022+ .type = SIMPLE_IPA_PASS,
117023+ .name = "size_overflow",
117024+#if BUILDING_GCC_VERSION >= 4008
117025+ .optinfo_flags = OPTGROUP_NONE,
117026+#endif
117027+#if BUILDING_GCC_VERSION >= 4009
117028+ .has_gate = false,
117029+ .has_execute = true,
117030+#else
117031+ .gate = NULL,
117032+ .execute = search_function,
117033+ .sub = NULL,
117034+ .next = NULL,
117035+ .static_pass_number = 0,
117036+#endif
117037+ .tv_id = TV_NONE,
117038+ .properties_required = 0,
117039+ .properties_provided = 0,
117040+ .properties_destroyed = 0,
117041+ .todo_flags_start = 0,
117042+ .todo_flags_finish = TODO_verify_ssa | TODO_verify_stmts | TODO_remove_unused_locals | TODO_ggc_collect | TODO_verify_flow | TODO_dump_cgraph | TODO_dump_func | TODO_update_ssa_no_phi,
117043+#if BUILDING_GCC_VERSION < 4009
117044+ },
117045+ .generate_summary = NULL,
117046+ .write_summary = NULL,
117047+ .read_summary = NULL,
117048+#if BUILDING_GCC_VERSION >= 4006
117049+ .write_optimization_summary = NULL,
117050+ .read_optimization_summary = NULL,
117051+#endif
117052+ .stmt_fixup = NULL,
117053+ .function_transform_todo_flags_start = 0,
117054+ .function_transform = NULL,
117055+ .variable_transform = NULL,
117056+#endif
117057+};
117058+
117059+#if BUILDING_GCC_VERSION >= 4009
117060+namespace {
117061+class ipa_pass : public ipa_opt_pass_d {
117062+public:
117063+ ipa_pass() : ipa_opt_pass_d(ipa_pass_data, g, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL) {}
117064+ unsigned int execute() { return search_function(); }
117065+};
117066+}
117067+#endif
117068+
117069+static struct opt_pass *make_ipa_pass(void)
117070+{
117071+#if BUILDING_GCC_VERSION >= 4009
117072+ return new ipa_pass();
117073+#else
117074+ return &ipa_pass.pass;
117075+#endif
117076+}
117077+
117078+// data for the size_overflow asm stmt
117079+struct asm_data {
117080+ gimple def_stmt;
117081+ tree input;
117082+ tree output;
117083+};
117084+
117085+#if BUILDING_GCC_VERSION <= 4007
117086+static VEC(tree, gc) *create_asm_io_list(tree string, tree io)
117087+#else
117088+static vec<tree, va_gc> *create_asm_io_list(tree string, tree io)
117089+#endif
117090+{
117091+ tree list;
117092+#if BUILDING_GCC_VERSION <= 4007
117093+ VEC(tree, gc) *vec_list = NULL;
117094+#else
117095+ vec<tree, va_gc> *vec_list = NULL;
117096+#endif
117097+
117098+ list = build_tree_list(NULL_TREE, string);
117099+ list = chainon(NULL_TREE, build_tree_list(list, io));
117100+#if BUILDING_GCC_VERSION <= 4007
117101+ VEC_safe_push(tree, gc, vec_list, list);
117102+#else
117103+ vec_safe_push(vec_list, list);
117104+#endif
117105+ return vec_list;
117106+}
117107+
117108+static void create_asm_stmt(const char *str, tree str_input, tree str_output, struct asm_data *asm_data)
117109+{
117110+ gimple asm_stmt;
117111+ gimple_stmt_iterator gsi;
117112+#if BUILDING_GCC_VERSION <= 4007
117113+ VEC(tree, gc) *input, *output = NULL;
117114+#else
117115+ vec<tree, va_gc> *input, *output = NULL;
117116+#endif
117117+
117118+ input = create_asm_io_list(str_input, asm_data->input);
117119+
117120+ if (asm_data->output)
117121+ output = create_asm_io_list(str_output, asm_data->output);
117122+
117123+ asm_stmt = gimple_build_asm_vec(str, input, output, NULL, NULL);
117124+ gsi = gsi_for_stmt(asm_data->def_stmt);
117125+ gsi_insert_after(&gsi, asm_stmt, GSI_NEW_STMT);
117126+
117127+ if (asm_data->output)
117128+ SSA_NAME_DEF_STMT(asm_data->output) = asm_stmt;
117129+}
117130+
117131+static void replace_call_lhs(const struct asm_data *asm_data)
117132+{
117133+ gimple_set_lhs(asm_data->def_stmt, asm_data->input);
117134+ update_stmt(asm_data->def_stmt);
117135+ SSA_NAME_DEF_STMT(asm_data->input) = asm_data->def_stmt;
117136+}
117137+
117138+static enum mark search_intentional_phi(struct pointer_set_t *visited, const_tree result)
117139+{
117140+ enum mark cur_fndecl_attr;
117141+ gimple phi = get_def_stmt(result);
117142+ unsigned int i, n = gimple_phi_num_args(phi);
117143+
117144+ pointer_set_insert(visited, phi);
117145+ for (i = 0; i < n; i++) {
117146+ tree arg = gimple_phi_arg_def(phi, i);
117147+
117148+ cur_fndecl_attr = search_intentional(visited, arg);
117149+ if (cur_fndecl_attr != MARK_NO)
117150+ return cur_fndecl_attr;
117151+ }
117152+ return MARK_NO;
117153+}
117154+
117155+static enum mark search_intentional_binary(struct pointer_set_t *visited, const_tree lhs)
117156+{
117157+ enum mark cur_fndecl_attr;
117158+ const_tree rhs1, rhs2;
117159+ gimple def_stmt = get_def_stmt(lhs);
117160+
117161+ rhs1 = gimple_assign_rhs1(def_stmt);
117162+ rhs2 = gimple_assign_rhs2(def_stmt);
117163+
117164+ cur_fndecl_attr = search_intentional(visited, rhs1);
117165+ if (cur_fndecl_attr != MARK_NO)
117166+ return cur_fndecl_attr;
117167+ return search_intentional(visited, rhs2);
117168+}
117169+
117170+// Look up the intentional_overflow attribute on the caller and the callee functions.
117171+static enum mark search_intentional(struct pointer_set_t *visited, const_tree lhs)
117172+{
117173+ const_gimple def_stmt;
117174+
117175+ if (TREE_CODE(lhs) != SSA_NAME)
117176+ return get_intentional_attr_type(lhs);
117177+
117178+ def_stmt = get_def_stmt(lhs);
117179+ if (!def_stmt)
117180+ return MARK_NO;
117181+
117182+ if (pointer_set_contains(visited, def_stmt))
117183+ return MARK_NO;
117184+
117185+ switch (gimple_code(def_stmt)) {
117186+ case GIMPLE_NOP:
117187+ return search_intentional(visited, SSA_NAME_VAR(lhs));
117188+ case GIMPLE_ASM:
117189+ if (is_size_overflow_intentional_asm_turn_off(def_stmt))
117190+ return MARK_TURN_OFF;
117191+ return MARK_NO;
117192+ case GIMPLE_CALL:
117193+ return MARK_NO;
117194+ case GIMPLE_PHI:
117195+ return search_intentional_phi(visited, lhs);
117196+ case GIMPLE_ASSIGN:
117197+ switch (gimple_num_ops(def_stmt)) {
117198+ case 2:
117199+ return search_intentional(visited, gimple_assign_rhs1(def_stmt));
117200+ case 3:
117201+ return search_intentional_binary(visited, lhs);
117202+ }
117203+ case GIMPLE_RETURN:
117204+ return MARK_NO;
117205+ default:
117206+ debug_gimple_stmt((gimple)def_stmt);
117207+ error("%s: unknown gimple code", __func__);
117208+ gcc_unreachable();
117209+ }
117210+}
117211+
117212+// Check the intentional_overflow attribute and create the asm comment string for the size_overflow asm stmt.
117213+static enum mark check_intentional_attribute_gimple(const_tree arg, const_gimple stmt, unsigned int argnum)
117214+{
117215+ const_tree fndecl;
117216+ struct pointer_set_t *visited;
117217+ enum mark cur_fndecl_attr, decl_attr = MARK_NO;
117218+
117219+ fndecl = get_interesting_orig_fndecl(stmt, argnum);
117220+ if (is_end_intentional_intentional_attr(fndecl, argnum))
117221+ decl_attr = MARK_NOT_INTENTIONAL;
117222+ else if (is_yes_intentional_attr(fndecl, argnum))
117223+ decl_attr = MARK_YES;
117224+ else if (is_turn_off_intentional_attr(fndecl) || is_turn_off_intentional_attr(DECL_ORIGIN(current_function_decl))) {
117225+ return MARK_TURN_OFF;
117226+ }
117227+
117228+ visited = pointer_set_create();
117229+ cur_fndecl_attr = search_intentional(visited, arg);
117230+ pointer_set_destroy(visited);
117231+
117232+ switch (cur_fndecl_attr) {
117233+ case MARK_NO:
117234+ case MARK_TURN_OFF:
117235+ return cur_fndecl_attr;
117236+ default:
117237+ print_missing_intentional(decl_attr, cur_fndecl_attr, fndecl, argnum);
117238+ return MARK_YES;
117239+ }
117240+}
117241+
117242+static void check_missing_size_overflow_attribute(tree var)
117243+{
117244+ tree orig_fndecl;
117245+ unsigned int num;
117246+
117247+ if (is_a_return_check(var))
117248+ orig_fndecl = DECL_ORIGIN(var);
117249+ else
117250+ orig_fndecl = DECL_ORIGIN(current_function_decl);
117251+
117252+ num = get_function_num(var, orig_fndecl);
117253+ if (num == CANNOT_FIND_ARG)
117254+ return;
117255+
117256+ is_missing_function(orig_fndecl, num);
117257+}
117258+
117259+static void search_size_overflow_attribute_phi(struct pointer_set_t *visited, const_tree result)
117260+{
117261+ gimple phi = get_def_stmt(result);
117262+ unsigned int i, n = gimple_phi_num_args(phi);
117263+
117264+ pointer_set_insert(visited, phi);
117265+ for (i = 0; i < n; i++) {
117266+ tree arg = gimple_phi_arg_def(phi, i);
117267+
117268+ search_size_overflow_attribute(visited, arg);
117269+ }
117270+}
117271+
117272+static void search_size_overflow_attribute_binary(struct pointer_set_t *visited, const_tree lhs)
117273+{
117274+ const_gimple def_stmt = get_def_stmt(lhs);
117275+ tree rhs1, rhs2;
117276+
117277+ rhs1 = gimple_assign_rhs1(def_stmt);
117278+ rhs2 = gimple_assign_rhs2(def_stmt);
117279+
117280+ search_size_overflow_attribute(visited, rhs1);
117281+ search_size_overflow_attribute(visited, rhs2);
117282+}
117283+
117284+static void search_size_overflow_attribute(struct pointer_set_t *visited, tree lhs)
117285+{
117286+ const_gimple def_stmt;
117287+
117288+ if (TREE_CODE(lhs) == PARM_DECL) {
117289+ check_missing_size_overflow_attribute(lhs);
117290+ return;
117291+ }
117292+
117293+ def_stmt = get_def_stmt(lhs);
117294+ if (!def_stmt)
117295+ return;
117296+
117297+ if (pointer_set_insert(visited, def_stmt))
117298+ return;
117299+
117300+ switch (gimple_code(def_stmt)) {
117301+ case GIMPLE_NOP:
117302+ return search_size_overflow_attribute(visited, SSA_NAME_VAR(lhs));
117303+ case GIMPLE_ASM:
117304+ return;
117305+ case GIMPLE_CALL: {
117306+ tree fndecl = gimple_call_fndecl(def_stmt);
117307+
117308+ if (fndecl == NULL_TREE)
117309+ return;
117310+ check_missing_size_overflow_attribute(fndecl);
117311+ return;
117312+ }
117313+ case GIMPLE_PHI:
117314+ return search_size_overflow_attribute_phi(visited, lhs);
117315+ case GIMPLE_ASSIGN:
117316+ switch (gimple_num_ops(def_stmt)) {
117317+ case 2:
117318+ return search_size_overflow_attribute(visited, gimple_assign_rhs1(def_stmt));
117319+ case 3:
117320+ return search_size_overflow_attribute_binary(visited, lhs);
117321+ }
117322+ default:
117323+ debug_gimple_stmt((gimple)def_stmt);
117324+ error("%s: unknown gimple code", __func__);
117325+ gcc_unreachable();
117326+ }
117327+}
117328+
117329+// Search missing entries in the hash table (invoked from the gimple pass)
117330+static void search_missing_size_overflow_attribute_gimple(const_gimple stmt, unsigned int num)
117331+{
117332+ tree fndecl = NULL_TREE;
117333+ tree lhs;
117334+ struct pointer_set_t *visited;
117335+
117336+ if (is_turn_off_intentional_attr(DECL_ORIGIN(current_function_decl)))
117337+ return;
117338+
117339+ if (num == 0) {
117340+ gcc_assert(gimple_code(stmt) == GIMPLE_RETURN);
117341+ lhs = gimple_return_retval(stmt);
117342+ } else {
117343+ gcc_assert(is_gimple_call(stmt));
117344+ lhs = gimple_call_arg(stmt, num - 1);
117345+ fndecl = gimple_call_fndecl(stmt);
117346+ }
117347+
117348+ if (fndecl != NULL_TREE && is_turn_off_intentional_attr(DECL_ORIGIN(fndecl)))
117349+ return;
117350+
117351+ visited = pointer_set_create();
117352+ search_size_overflow_attribute(visited, lhs);
117353+ pointer_set_destroy(visited);
117354+}
117355+
117356+static void create_output_from_phi(gimple stmt, unsigned int argnum, struct asm_data *asm_data)
117357+{
117358+ gimple_stmt_iterator gsi;
117359+ gimple assign;
117360+
117361+ assign = gimple_build_assign(asm_data->input, asm_data->output);
117362+ gsi = gsi_for_stmt(stmt);
117363+ gsi_insert_before(&gsi, assign, GSI_NEW_STMT);
117364+ asm_data->def_stmt = assign;
117365+
117366+ asm_data->output = create_new_var(TREE_TYPE(asm_data->output));
117367+ asm_data->output = make_ssa_name(asm_data->output, stmt);
117368+ if (gimple_code(stmt) == GIMPLE_RETURN)
117369+ gimple_return_set_retval(stmt, asm_data->output);
117370+ else
117371+ gimple_call_set_arg(stmt, argnum - 1, asm_data->output);
117372+ update_stmt(stmt);
117373+}
117374+
117375+static char *create_asm_comment(unsigned int argnum, const_gimple stmt , const char *mark_str)
117376+{
117377+ const char *fn_name;
117378+ char *asm_comment;
117379+ unsigned int len;
117380+
117381+ if (argnum == 0)
117382+ fn_name = DECL_NAME_POINTER(current_function_decl);
117383+ else
117384+ fn_name = DECL_NAME_POINTER(gimple_call_fndecl(stmt));
117385+
117386+ len = asprintf(&asm_comment, "%s %s %u", mark_str, fn_name, argnum);
117387+ gcc_assert(len > 0);
117388+
117389+ return asm_comment;
117390+}
117391+
117392+static const char *convert_mark_to_str(enum mark mark)
117393+{
117394+ switch (mark) {
117395+ case MARK_NO:
117396+ return OK_ASM_STR;
117397+ case MARK_YES:
117398+ case MARK_NOT_INTENTIONAL:
117399+ return YES_ASM_STR;
117400+ case MARK_TURN_OFF:
117401+ return TURN_OFF_ASM_STR;
117402+ }
117403+
117404+ gcc_unreachable();
117405+}
117406+
117407+/* Create the input of the size_overflow asm stmt.
117408+ * When the arg of the callee function is a parm_decl it creates this kind of size_overflow asm stmt:
117409+ * __asm__("# size_overflow MARK_YES" : : "rm" size_1(D));
117410+ * The input field in asm_data will be empty if there is no need for further size_overflow asm stmt insertion.
117411+ * otherwise create the input (for a phi stmt the output too) of the asm stmt.
117412+ */
117413+static void create_asm_input(gimple stmt, unsigned int argnum, struct asm_data *asm_data)
117414+{
117415+ if (!asm_data->def_stmt) {
117416+ asm_data->input = NULL_TREE;
117417+ return;
117418+ }
117419+
117420+ asm_data->input = create_new_var(TREE_TYPE(asm_data->output));
117421+ asm_data->input = make_ssa_name(asm_data->input, asm_data->def_stmt);
117422+
117423+ switch (gimple_code(asm_data->def_stmt)) {
117424+ case GIMPLE_ASSIGN:
117425+ case GIMPLE_CALL:
117426+ replace_call_lhs(asm_data);
117427+ break;
117428+ case GIMPLE_PHI:
117429+ create_output_from_phi(stmt, argnum, asm_data);
117430+ break;
117431+ case GIMPLE_NOP: {
117432+ enum mark mark;
117433+ const char *mark_str;
117434+ char *asm_comment;
117435+
117436+ mark = check_intentional_attribute_gimple(asm_data->output, stmt, argnum);
117437+
117438+ asm_data->input = asm_data->output;
117439+ asm_data->output = NULL;
117440+ asm_data->def_stmt = stmt;
117441+
117442+ mark_str = convert_mark_to_str(mark);
117443+ asm_comment = create_asm_comment(argnum, stmt, mark_str);
117444+
117445+ create_asm_stmt(asm_comment, build_string(2, "rm"), NULL, asm_data);
117446+ free(asm_comment);
117447+ asm_data->input = NULL_TREE;
117448+ break;
117449+ }
117450+ case GIMPLE_ASM:
117451+ if (is_size_overflow_asm(asm_data->def_stmt)) {
117452+ asm_data->input = NULL_TREE;
117453+ break;
117454+ }
117455+ default:
117456+ debug_gimple_stmt(asm_data->def_stmt);
117457+ gcc_unreachable();
117458+ }
117459+}
117460+
117461+/* This is the gimple part of searching for a missing size_overflow attribute. If the intentional_overflow attribute type
117462+ * is of the right kind create the appropriate size_overflow asm stmts:
117463+ * __asm__("# size_overflow" : =rm" D.3344_8 : "0" cicus.4_16);
117464+ * __asm__("# size_overflow MARK_YES" : : "rm" size_1(D));
117465+ */
117466+static void create_size_overflow_asm(gimple stmt, tree output_node, unsigned int argnum)
117467+{
117468+ struct asm_data asm_data;
117469+ const char *mark_str;
117470+ char *asm_comment;
117471+ enum mark mark;
117472+
117473+ if (is_gimple_constant(output_node))
117474+ return;
117475+
117476+ asm_data.output = output_node;
117477+ mark = check_intentional_attribute_gimple(asm_data.output, stmt, argnum);
117478+ if (mark != MARK_TURN_OFF)
117479+ search_missing_size_overflow_attribute_gimple(stmt, argnum);
117480+
117481+ asm_data.def_stmt = get_def_stmt(asm_data.output);
117482+ if (is_size_overflow_intentional_asm_turn_off(asm_data.def_stmt))
117483+ return;
117484+
117485+ create_asm_input(stmt, argnum, &asm_data);
117486+ if (asm_data.input == NULL_TREE)
117487+ return;
117488+
117489+ mark_str = convert_mark_to_str(mark);
117490+ asm_comment = create_asm_comment(argnum, stmt, mark_str);
117491+ create_asm_stmt(asm_comment, build_string(1, "0"), build_string(3, "=rm"), &asm_data);
117492+ free(asm_comment);
117493+}
117494+
117495+// Insert an asm stmt with "MARK_TURN_OFF", "MARK_YES" or "MARK_NOT_INTENTIONAL".
117496+static bool create_mark_asm(gimple stmt, enum mark mark)
117497+{
117498+ struct asm_data asm_data;
117499+ const char *asm_str;
117500+
117501+ switch (mark) {
117502+ case MARK_TURN_OFF:
117503+ asm_str = TURN_OFF_ASM_STR;
117504+ break;
117505+ case MARK_NOT_INTENTIONAL:
117506+ case MARK_YES:
117507+ asm_str = YES_ASM_STR;
117508+ break;
117509+ default:
117510+ gcc_unreachable();
117511+ }
117512+
117513+ asm_data.def_stmt = stmt;
117514+ asm_data.output = gimple_call_lhs(stmt);
117515+
117516+ if (asm_data.output == NULL_TREE) {
117517+ asm_data.input = gimple_call_arg(stmt, 0);
117518+ if (is_gimple_constant(asm_data.input))
117519+ return false;
117520+ asm_data.output = NULL;
117521+ create_asm_stmt(asm_str, build_string(2, "rm"), NULL, &asm_data);
117522+ return true;
117523+ }
117524+
117525+ create_asm_input(stmt, 0, &asm_data);
117526+ gcc_assert(asm_data.input != NULL_TREE);
117527+
117528+ create_asm_stmt(asm_str, build_string(1, "0"), build_string(3, "=rm"), &asm_data);
117529+ return true;
117530+}
117531+
117532+static bool is_from_cast(const_tree node)
117533+{
117534+ gimple def_stmt = get_def_stmt(node);
117535+
117536+ if (!def_stmt)
117537+ return false;
117538+
117539+ if (gimple_assign_cast_p(def_stmt))
117540+ return true;
117541+
117542+ return false;
117543+}
117544+
117545+// Skip duplication when there is a minus expr and the type of rhs1 or rhs2 is a pointer_type.
117546+static bool skip_ptr_minus(gimple stmt)
117547+{
117548+ const_tree rhs1, rhs2, ptr1_rhs, ptr2_rhs;
117549+
117550+ if (gimple_assign_rhs_code(stmt) != MINUS_EXPR)
117551+ return false;
117552+
117553+ rhs1 = gimple_assign_rhs1(stmt);
117554+ if (!is_from_cast(rhs1))
117555+ return false;
117556+
117557+ rhs2 = gimple_assign_rhs2(stmt);
117558+ if (!is_from_cast(rhs2))
117559+ return false;
117560+
117561+ ptr1_rhs = gimple_assign_rhs1(get_def_stmt(rhs1));
117562+ ptr2_rhs = gimple_assign_rhs1(get_def_stmt(rhs2));
117563+
117564+ if (TREE_CODE(TREE_TYPE(ptr1_rhs)) != POINTER_TYPE && TREE_CODE(TREE_TYPE(ptr2_rhs)) != POINTER_TYPE)
117565+ return false;
117566+
117567+ create_mark_asm(stmt, MARK_YES);
117568+ return true;
117569+}
117570+
117571+static void walk_use_def_ptr(struct pointer_set_t *visited, const_tree lhs)
117572+{
117573+ gimple def_stmt;
117574+
117575+ def_stmt = get_def_stmt(lhs);
117576+ if (!def_stmt)
117577+ return;
117578+
117579+ if (pointer_set_insert(visited, def_stmt))
117580+ return;
117581+
117582+ switch (gimple_code(def_stmt)) {
117583+ case GIMPLE_NOP:
117584+ case GIMPLE_ASM:
117585+ case GIMPLE_CALL:
117586+ break;
117587+ case GIMPLE_PHI: {
117588+ unsigned int i, n = gimple_phi_num_args(def_stmt);
117589+
117590+ pointer_set_insert(visited, def_stmt);
117591+
117592+ for (i = 0; i < n; i++) {
117593+ tree arg = gimple_phi_arg_def(def_stmt, i);
117594+
117595+ walk_use_def_ptr(visited, arg);
117596+ }
117597+ }
117598+ case GIMPLE_ASSIGN:
117599+ switch (gimple_num_ops(def_stmt)) {
117600+ case 2:
117601+ walk_use_def_ptr(visited, gimple_assign_rhs1(def_stmt));
117602+ return;
117603+ case 3:
117604+ if (skip_ptr_minus(def_stmt))
117605+ return;
117606+
117607+ walk_use_def_ptr(visited, gimple_assign_rhs1(def_stmt));
117608+ walk_use_def_ptr(visited, gimple_assign_rhs2(def_stmt));
117609+ return;
117610+ default:
117611+ return;
117612+ }
117613+ default:
117614+ debug_gimple_stmt((gimple)def_stmt);
117615+ error("%s: unknown gimple code", __func__);
117616+ gcc_unreachable();
117617+ }
117618+}
117619+
117620+// Look for a ptr - ptr expression (e.g., cpuset_common_file_read() s - page)
117621+static void insert_mark_not_intentional_asm_at_ptr(const_tree arg)
117622+{
117623+ struct pointer_set_t *visited;
117624+
117625+ visited = pointer_set_create();
117626+ walk_use_def_ptr(visited, arg);
117627+ pointer_set_destroy(visited);
117628+}
117629+
117630+// Determine the return value and insert the asm stmt to mark the return stmt.
117631+static void insert_asm_ret(gimple stmt)
117632+{
117633+ tree ret;
117634+
117635+ ret = gimple_return_retval(stmt);
117636+ create_size_overflow_asm(stmt, ret, 0);
117637+}
117638+
117639+// Determine the correct arg index and arg and insert the asm stmt to mark the stmt.
117640+static void insert_asm_arg(gimple stmt, unsigned int orig_argnum)
117641+{
117642+ tree arg;
117643+ unsigned int argnum;
117644+
117645+ argnum = get_correct_arg_count(orig_argnum, gimple_call_fndecl(stmt));
117646+ gcc_assert(argnum != 0);
117647+ if (argnum == CANNOT_FIND_ARG)
117648+ return;
117649+
117650+ arg = gimple_call_arg(stmt, argnum - 1);
117651+ gcc_assert(arg != NULL_TREE);
117652+
117653+ // skip all ptr - ptr expressions
117654+ insert_mark_not_intentional_asm_at_ptr(arg);
117655+
117656+ create_size_overflow_asm(stmt, arg, argnum);
117657+}
117658+
117659+// If a function arg or the return value is marked by the size_overflow attribute then set its index in the array.
117660+static void set_argnum_attribute(const_tree attr, bool *argnums)
117661+{
117662+ unsigned int argnum;
117663+ tree attr_value;
117664+
117665+ for (attr_value = TREE_VALUE(attr); attr_value; attr_value = TREE_CHAIN(attr_value)) {
117666+ argnum = TREE_INT_CST_LOW(TREE_VALUE(attr_value));
117667+ argnums[argnum] = true;
117668+ }
117669+}
117670+
117671+// If a function arg or the return value is in the hash table then set its index in the array.
117672+static void set_argnum_hash(tree fndecl, bool *argnums)
117673+{
117674+ unsigned int num;
117675+ const struct size_overflow_hash *hash;
117676+
117677+ hash = get_function_hash(DECL_ORIGIN(fndecl));
117678+ if (!hash)
117679+ return;
117680+
117681+ for (num = 0; num <= MAX_PARAM; num++) {
117682+ if (!(hash->param & (1U << num)))
117683+ continue;
117684+
117685+ argnums[num] = true;
117686+ }
117687+}
117688+
117689+static bool is_all_the_argnums_empty(bool *argnums)
117690+{
117691+ unsigned int i;
117692+
117693+ for (i = 0; i <= MAX_PARAM; i++)
117694+ if (argnums[i])
117695+ return false;
117696+ return true;
117697+}
117698+
117699+// Check whether the arguments or the return value of the function are in the hash table or are marked by the size_overflow attribute.
117700+static void search_interesting_args(tree fndecl, bool *argnums)
117701+{
117702+ const_tree attr;
117703+
117704+ set_argnum_hash(fndecl, argnums);
117705+ if (!is_all_the_argnums_empty(argnums))
117706+ return;
117707+
117708+ attr = lookup_attribute("size_overflow", DECL_ATTRIBUTES(fndecl));
117709+ if (attr && TREE_VALUE(attr))
117710+ set_argnum_attribute(attr, argnums);
117711+}
117712+
117713+/*
117714+ * Look up the intentional_overflow attribute that turns off ipa based duplication
117715+ * on the callee function.
117716+ */
117717+static bool is_mark_turn_off_attribute(gimple stmt)
117718+{
117719+ enum mark mark;
117720+ const_tree fndecl = gimple_call_fndecl(stmt);
117721+
117722+ mark = get_intentional_attr_type(DECL_ORIGIN(fndecl));
117723+ if (mark == MARK_TURN_OFF)
117724+ return true;
117725+ return false;
117726+}
117727+
117728+// If the argument(s) of the callee function is/are in the hash table or are marked by an attribute then mark the call stmt with an asm stmt
117729+static void handle_interesting_function(gimple stmt)
117730+{
117731+ unsigned int argnum;
117732+ tree fndecl;
117733+ bool orig_argnums[MAX_PARAM + 1] = {false};
117734+
117735+ if (gimple_call_num_args(stmt) == 0)
117736+ return;
117737+ fndecl = gimple_call_fndecl(stmt);
117738+ if (fndecl == NULL_TREE)
117739+ return;
117740+ fndecl = DECL_ORIGIN(fndecl);
117741+
117742+ if (is_mark_turn_off_attribute(stmt)) {
117743+ create_mark_asm(stmt, MARK_TURN_OFF);
117744+ return;
117745+ }
117746+
117747+ search_interesting_args(fndecl, orig_argnums);
117748+
117749+ for (argnum = 1; argnum < MAX_PARAM; argnum++)
117750+ if (orig_argnums[argnum])
117751+ insert_asm_arg(stmt, argnum);
117752+}
117753+
117754+// If the return value of the caller function is in hash table (its index is 0) then mark the return stmt with an asm stmt
117755+static void handle_interesting_ret(gimple stmt)
117756+{
117757+ bool orig_argnums[MAX_PARAM + 1] = {false};
117758+
117759+ search_interesting_args(current_function_decl, orig_argnums);
117760+
117761+ if (orig_argnums[0])
117762+ insert_asm_ret(stmt);
117763+}
117764+
117765+// Iterate over all the stmts and search for call and return stmts and mark them if they're in the hash table
117766+static unsigned int search_interesting_functions(void)
117767+{
117768+ basic_block bb;
117769+
117770+ FOR_ALL_BB_FN(bb, cfun) {
117771+ gimple_stmt_iterator gsi;
117772+
117773+ for (gsi = gsi_start_bb(bb); !gsi_end_p(gsi); gsi_next(&gsi)) {
117774+ gimple stmt = gsi_stmt(gsi);
117775+
117776+ if (is_size_overflow_asm(stmt))
117777+ continue;
117778+
117779+ if (is_gimple_call(stmt))
117780+ handle_interesting_function(stmt);
117781+ else if (gimple_code(stmt) == GIMPLE_RETURN)
117782+ handle_interesting_ret(stmt);
117783+ }
117784+ }
117785+ return 0;
117786+}
117787+
117788+/*
117789+ * A lot of functions get inlined before the ipa passes so after the build_ssa gimple pass
117790+ * this pass inserts asm stmts to mark the interesting args
117791+ * that the ipa pass will detect and insert the size overflow checks for.
117792+ */
117793+#if BUILDING_GCC_VERSION >= 4009
117794+static const struct pass_data insert_size_overflow_asm_pass_data = {
117795+#else
117796+static struct gimple_opt_pass insert_size_overflow_asm_pass = {
117797+ .pass = {
117798+#endif
117799+ .type = GIMPLE_PASS,
117800+ .name = "insert_size_overflow_asm",
117801+#if BUILDING_GCC_VERSION >= 4008
117802+ .optinfo_flags = OPTGROUP_NONE,
117803+#endif
117804+#if BUILDING_GCC_VERSION >= 4009
117805+ .has_gate = false,
117806+ .has_execute = true,
117807+#else
117808+ .gate = NULL,
117809+ .execute = search_interesting_functions,
117810+ .sub = NULL,
117811+ .next = NULL,
117812+ .static_pass_number = 0,
117813+#endif
117814+ .tv_id = TV_NONE,
117815+ .properties_required = PROP_cfg,
117816+ .properties_provided = 0,
117817+ .properties_destroyed = 0,
117818+ .todo_flags_start = 0,
117819+ .todo_flags_finish = TODO_dump_func | TODO_verify_ssa | TODO_verify_stmts | TODO_remove_unused_locals | TODO_update_ssa_no_phi | TODO_cleanup_cfg | TODO_ggc_collect | TODO_verify_flow
117820+#if BUILDING_GCC_VERSION < 4009
117821+ }
117822+#endif
117823+};
117824+
117825+#if BUILDING_GCC_VERSION >= 4009
117826+namespace {
117827+class insert_size_overflow_asm_pass : public gimple_opt_pass {
117828+public:
117829+ insert_size_overflow_asm_pass() : gimple_opt_pass(insert_size_overflow_asm_pass_data, g) {}
117830+ unsigned int execute() { return search_interesting_functions(); }
117831+};
117832+}
117833+#endif
117834+
117835+static struct opt_pass *make_insert_size_overflow_asm_pass(void)
117836+{
117837+#if BUILDING_GCC_VERSION >= 4009
117838+ return new insert_size_overflow_asm_pass();
117839+#else
117840+ return &insert_size_overflow_asm_pass.pass;
117841+#endif
117842+}
117843+
117844+// Create the noreturn report_size_overflow() function decl.
117845+static void size_overflow_start_unit(void __unused *gcc_data, void __unused *user_data)
117846+{
117847+ tree const_char_ptr_type_node;
117848+ tree fntype;
117849+
117850+ const_char_ptr_type_node = build_pointer_type(build_type_variant(char_type_node, 1, 0));
117851+
117852+ // void report_size_overflow(const char *loc_file, unsigned int loc_line, const char *current_func, const char *ssa_var)
117853+ fntype = build_function_type_list(void_type_node,
117854+ const_char_ptr_type_node,
117855+ unsigned_type_node,
117856+ const_char_ptr_type_node,
117857+ const_char_ptr_type_node,
117858+ NULL_TREE);
117859+ report_size_overflow_decl = build_fn_decl("report_size_overflow", fntype);
117860+
117861+ DECL_ASSEMBLER_NAME(report_size_overflow_decl);
117862+ TREE_PUBLIC(report_size_overflow_decl) = 1;
117863+ DECL_EXTERNAL(report_size_overflow_decl) = 1;
117864+ DECL_ARTIFICIAL(report_size_overflow_decl) = 1;
117865+ TREE_THIS_VOLATILE(report_size_overflow_decl) = 1;
117866+}
117867+
117868+static unsigned int dump_functions(void)
117869+{
117870+ struct cgraph_node *node;
117871+
117872+ FOR_EACH_FUNCTION_WITH_GIMPLE_BODY(node) {
117873+ basic_block bb;
117874+
117875+ push_cfun(DECL_STRUCT_FUNCTION(NODE_DECL(node)));
117876+ current_function_decl = NODE_DECL(node);
117877+
117878+ fprintf(stderr, "-----------------------------------------\n%s\n-----------------------------------------\n", DECL_NAME_POINTER(current_function_decl));
117879+
117880+ FOR_ALL_BB_FN(bb, cfun) {
117881+ gimple_stmt_iterator si;
117882+
117883+ fprintf(stderr, "<bb %u>:\n", bb->index);
117884+ for (si = gsi_start_phis(bb); !gsi_end_p(si); gsi_next(&si))
117885+ debug_gimple_stmt(gsi_stmt(si));
117886+ for (si = gsi_start_bb(bb); !gsi_end_p(si); gsi_next(&si))
117887+ debug_gimple_stmt(gsi_stmt(si));
117888+ fprintf(stderr, "\n");
117889+ }
117890+
117891+ fprintf(stderr, "-------------------------------------------------------------------------\n");
117892+
117893+ pop_cfun();
117894+ current_function_decl = NULL_TREE;
117895+ }
117896+
117897+ fprintf(stderr, "###############################################################################\n");
117898+
117899+ return 0;
117900+}
117901+
117902+#if BUILDING_GCC_VERSION >= 4009
117903+static const struct pass_data dump_pass_data = {
117904+#else
117905+static struct ipa_opt_pass_d dump_pass = {
117906+ .pass = {
117907+#endif
117908+ .type = SIMPLE_IPA_PASS,
117909+ .name = "dump",
117910+#if BUILDING_GCC_VERSION >= 4008
117911+ .optinfo_flags = OPTGROUP_NONE,
117912+#endif
117913+#if BUILDING_GCC_VERSION >= 4009
117914+ .has_gate = false,
117915+ .has_execute = true,
117916+#else
117917+ .gate = NULL,
117918+ .execute = dump_functions,
117919+ .sub = NULL,
117920+ .next = NULL,
117921+ .static_pass_number = 0,
117922+#endif
117923+ .tv_id = TV_NONE,
117924+ .properties_required = 0,
117925+ .properties_provided = 0,
117926+ .properties_destroyed = 0,
117927+ .todo_flags_start = 0,
117928+ .todo_flags_finish = 0,
117929+#if BUILDING_GCC_VERSION < 4009
117930+ },
117931+ .generate_summary = NULL,
117932+ .write_summary = NULL,
117933+ .read_summary = NULL,
117934+#if BUILDING_GCC_VERSION >= 4006
117935+ .write_optimization_summary = NULL,
117936+ .read_optimization_summary = NULL,
117937+#endif
117938+ .stmt_fixup = NULL,
117939+ .function_transform_todo_flags_start = 0,
117940+ .function_transform = NULL,
117941+ .variable_transform = NULL,
117942+#endif
117943+};
117944+
117945+#if BUILDING_GCC_VERSION >= 4009
117946+namespace {
117947+class dump_pass : public ipa_opt_pass_d {
117948+public:
117949+ dump_pass() : ipa_opt_pass_d(dump_pass_data, g, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL) {}
117950+ unsigned int execute() { return dump_functions(); }
117951+};
117952+}
117953+#endif
117954+
117955+static struct opt_pass *make_dump_pass(void)
117956+{
117957+#if BUILDING_GCC_VERSION >= 4009
117958+ return new dump_pass();
117959+#else
117960+ return &dump_pass.pass;
117961+#endif
117962+}
117963+
117964+int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version)
117965+{
117966+ int i;
117967+ const char * const plugin_name = plugin_info->base_name;
117968+ const int argc = plugin_info->argc;
117969+ const struct plugin_argument * const argv = plugin_info->argv;
117970+ bool enable = true;
117971+ struct register_pass_info insert_size_overflow_asm_pass_info;
117972+ struct register_pass_info __unused dump_before_pass_info;
117973+ struct register_pass_info __unused dump_after_pass_info;
117974+ struct register_pass_info ipa_pass_info;
117975+ static const struct ggc_root_tab gt_ggc_r_gt_size_overflow[] = {
117976+ {
117977+ .base = &report_size_overflow_decl,
117978+ .nelt = 1,
117979+ .stride = sizeof(report_size_overflow_decl),
117980+ .cb = &gt_ggc_mx_tree_node,
117981+ .pchw = &gt_pch_nx_tree_node
117982+ },
117983+ LAST_GGC_ROOT_TAB
117984+ };
117985+
117986+ insert_size_overflow_asm_pass_info.pass = make_insert_size_overflow_asm_pass();
117987+ insert_size_overflow_asm_pass_info.reference_pass_name = "ssa";
117988+ insert_size_overflow_asm_pass_info.ref_pass_instance_number = 1;
117989+ insert_size_overflow_asm_pass_info.pos_op = PASS_POS_INSERT_AFTER;
117990+
117991+ dump_before_pass_info.pass = make_dump_pass();
117992+ dump_before_pass_info.reference_pass_name = "increase_alignment";
117993+ dump_before_pass_info.ref_pass_instance_number = 1;
117994+ dump_before_pass_info.pos_op = PASS_POS_INSERT_BEFORE;
117995+
117996+ ipa_pass_info.pass = make_ipa_pass();
117997+ ipa_pass_info.reference_pass_name = "increase_alignment";
117998+ ipa_pass_info.ref_pass_instance_number = 1;
117999+ ipa_pass_info.pos_op = PASS_POS_INSERT_BEFORE;
118000+
118001+ dump_after_pass_info.pass = make_dump_pass();
118002+ dump_after_pass_info.reference_pass_name = "increase_alignment";
118003+ dump_after_pass_info.ref_pass_instance_number = 1;
118004+ dump_after_pass_info.pos_op = PASS_POS_INSERT_BEFORE;
118005+
118006+ if (!plugin_default_version_check(version, &gcc_version)) {
118007+ error(G_("incompatible gcc/plugin versions"));
118008+ return 1;
118009+ }
118010+
118011+ for (i = 0; i < argc; ++i) {
118012+ if (!strcmp(argv[i].key, "no-size-overflow")) {
118013+ enable = false;
118014+ continue;
118015+ }
118016+ error(G_("unkown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key);
118017+ }
118018+
118019+ register_callback(plugin_name, PLUGIN_INFO, NULL, &size_overflow_plugin_info);
118020+ if (enable) {
118021+ register_callback(plugin_name, PLUGIN_START_UNIT, &size_overflow_start_unit, NULL);
118022+ register_callback(plugin_name, PLUGIN_REGISTER_GGC_ROOTS, NULL, (void *)&gt_ggc_r_gt_size_overflow);
118023+ register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &insert_size_overflow_asm_pass_info);
118024+// register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &dump_before_pass_info);
118025+ register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &ipa_pass_info);
118026+// register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &dump_after_pass_info);
118027+ }
118028+ register_callback(plugin_name, PLUGIN_ATTRIBUTES, register_attributes, NULL);
118029+
118030+ return 0;
118031+}
118032diff --git a/tools/gcc/stackleak_plugin.c b/tools/gcc/stackleak_plugin.c 120962diff --git a/tools/gcc/stackleak_plugin.c b/tools/gcc/stackleak_plugin.c
118033new file mode 100644 120963new file mode 100644
118034index 0000000..5c0b937 120964index 0000000..dd94983
118035--- /dev/null 120965--- /dev/null
118036+++ b/tools/gcc/stackleak_plugin.c 120966+++ b/tools/gcc/stackleak_plugin.c
118037@@ -0,0 +1,374 @@ 120967@@ -0,0 +1,376 @@
118038+/* 120968+/*
118039+ * Copyright 2011-2014 by the PaX Team <pageexec@freemail.hu> 120969+ * Copyright 2011-2014 by the PaX Team <pageexec@freemail.hu>
118040+ * Licensed under the GPL v2 120970+ * Licensed under the GPL v2
@@ -118316,25 +121246,27 @@ index 0000000..5c0b937
118316+ unsigned int execute() { return execute_stackleak_final(); } 121246+ unsigned int execute() { return execute_stackleak_final(); }
118317+}; 121247+};
118318+} 121248+}
118319+#endif
118320+ 121249+
118321+static struct opt_pass *make_stackleak_tree_instrument_pass(void) 121250+static opt_pass *make_stackleak_tree_instrument_pass(void)
118322+{ 121251+{
118323+#if BUILDING_GCC_VERSION >= 4009
118324+ return new stackleak_tree_instrument_pass(); 121252+ return new stackleak_tree_instrument_pass();
121253+}
121254+
121255+static opt_pass *make_stackleak_final_rtl_opt_pass(void)
121256+{
121257+ return new stackleak_final_rtl_opt_pass();
121258+}
118325+#else 121259+#else
121260+static struct opt_pass *make_stackleak_tree_instrument_pass(void)
121261+{
118326+ return &stackleak_tree_instrument_pass.pass; 121262+ return &stackleak_tree_instrument_pass.pass;
118327+#endif
118328+} 121263+}
118329+ 121264+
118330+static struct opt_pass *make_stackleak_final_rtl_opt_pass(void) 121265+static struct opt_pass *make_stackleak_final_rtl_opt_pass(void)
118331+{ 121266+{
118332+#if BUILDING_GCC_VERSION >= 4009
118333+ return new stackleak_final_rtl_opt_pass();
118334+#else
118335+ return &stackleak_final_rtl_opt_pass.pass; 121267+ return &stackleak_final_rtl_opt_pass.pass;
118336+#endif
118337+} 121268+}
121269+#endif
118338+ 121270+
118339+int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version) 121271+int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version)
118340+{ 121272+{
@@ -118411,10 +121343,10 @@ index 0000000..5c0b937
118411+} 121343+}
118412diff --git a/tools/gcc/structleak_plugin.c b/tools/gcc/structleak_plugin.c 121344diff --git a/tools/gcc/structleak_plugin.c b/tools/gcc/structleak_plugin.c
118413new file mode 100644 121345new file mode 100644
118414index 0000000..796569a 121346index 0000000..4ee2231
118415--- /dev/null 121347--- /dev/null
118416+++ b/tools/gcc/structleak_plugin.c 121348+++ b/tools/gcc/structleak_plugin.c
118417@@ -0,0 +1,273 @@ 121349@@ -0,0 +1,274 @@
118418+/* 121350+/*
118419+ * Copyright 2013-2014 by PaX Team <pageexec@freemail.hu> 121351+ * Copyright 2013-2014 by PaX Team <pageexec@freemail.hu>
118420+ * Licensed under the GPL v2 121352+ * Licensed under the GPL v2
@@ -118636,16 +121568,17 @@ index 0000000..796569a
118636+ unsigned int execute() { return handle_function(); } 121568+ unsigned int execute() { return handle_function(); }
118637+}; 121569+};
118638+} 121570+}
118639+#endif
118640+ 121571+
118641+static struct opt_pass *make_structleak_pass(void) 121572+static opt_pass *make_structleak_pass(void)
118642+{ 121573+{
118643+#if BUILDING_GCC_VERSION >= 4009
118644+ return new structleak_pass(); 121574+ return new structleak_pass();
121575+}
118645+#else 121576+#else
121577+static struct opt_pass *make_structleak_pass(void)
121578+{
118646+ return &structleak_pass.pass; 121579+ return &structleak_pass.pass;
118647+#endif
118648+} 121580+}
121581+#endif
118649+ 121582+
118650+int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version) 121583+int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version)
118651+{ 121584+{
@@ -118688,13 +121621,30 @@ index 0000000..796569a
118688+ 121621+
118689+ return 0; 121622+ return 0;
118690+} 121623+}
118691diff --git a/tools/lib/lk/Makefile b/tools/lib/lk/Makefile 121624diff --git a/tools/include/linux/compiler.h b/tools/include/linux/compiler.h
118692index 3dba0a4..97175dc 100644 121625index fbc6665..5e9ce79 100644
118693--- a/tools/lib/lk/Makefile 121626--- a/tools/include/linux/compiler.h
118694+++ b/tools/lib/lk/Makefile 121627+++ b/tools/include/linux/compiler.h
118695@@ -13,7 +13,7 @@ LIB_OBJS += $(OUTPUT)debugfs.o 121628@@ -35,4 +35,12 @@
121629 # define unlikely(x) __builtin_expect(!!(x), 0)
121630 #endif
121631
121632+#ifndef __size_overflow
121633+# define __size_overflow(...)
121634+#endif
121635+
121636+#ifndef __intentional_overflow
121637+# define __intentional_overflow(...)
121638+#endif
121639+
121640 #endif /* _TOOLS_LINUX_COMPILER_H */
121641diff --git a/tools/lib/api/Makefile b/tools/lib/api/Makefile
121642index ed2f51e..cc2d8f6 100644
121643--- a/tools/lib/api/Makefile
121644+++ b/tools/lib/api/Makefile
121645@@ -14,7 +14,7 @@ LIB_OBJS += $(OUTPUT)fs/debugfs.o
118696 121646
118697 LIBFILE = liblk.a 121647 LIBFILE = libapikfs.a
118698 121648
118699-CFLAGS = -ggdb3 -Wall -Wextra -std=gnu99 -Werror -O6 -D_FORTIFY_SOURCE=2 $(EXTRA_WARNINGS) $(EXTRA_CFLAGS) -fPIC 121649-CFLAGS = -ggdb3 -Wall -Wextra -std=gnu99 -Werror -O6 -D_FORTIFY_SOURCE=2 $(EXTRA_WARNINGS) $(EXTRA_CFLAGS) -fPIC
118700+CFLAGS = -ggdb3 -Wall -Wextra -std=gnu99 -Werror -O6 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $(EXTRA_WARNINGS) $(EXTRA_CFLAGS) -fPIC 121650+CFLAGS = -ggdb3 -Wall -Wextra -std=gnu99 -Werror -O6 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $(EXTRA_WARNINGS) $(EXTRA_CFLAGS) -fPIC
@@ -118702,7 +121652,7 @@ index 3dba0a4..97175dc 100644
118702 ALL_CFLAGS = $(CFLAGS) $(BASIC_CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 121652 ALL_CFLAGS = $(CFLAGS) $(BASIC_CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
118703 ALL_LDFLAGS = $(LDFLAGS) 121653 ALL_LDFLAGS = $(LDFLAGS)
118704diff --git a/tools/perf/util/include/asm/alternative-asm.h b/tools/perf/util/include/asm/alternative-asm.h 121654diff --git a/tools/perf/util/include/asm/alternative-asm.h b/tools/perf/util/include/asm/alternative-asm.h
118705index 6789d78..4afd019e 100644 121655index 6789d788..4afd019e 100644
118706--- a/tools/perf/util/include/asm/alternative-asm.h 121656--- a/tools/perf/util/include/asm/alternative-asm.h
118707+++ b/tools/perf/util/include/asm/alternative-asm.h 121657+++ b/tools/perf/util/include/asm/alternative-asm.h
118708@@ -5,4 +5,7 @@ 121658@@ -5,4 +5,7 @@
@@ -118713,25 +121663,8 @@ index 6789d78..4afd019e 100644
118713+ .endm 121663+ .endm
118714+ 121664+
118715 #endif 121665 #endif
118716diff --git a/tools/perf/util/include/linux/compiler.h b/tools/perf/util/include/linux/compiler.h
118717index b003ad7..c0a02f8 100644
118718--- a/tools/perf/util/include/linux/compiler.h
118719+++ b/tools/perf/util/include/linux/compiler.h
118720@@ -27,4 +27,12 @@
118721 # define __weak __attribute__((weak))
118722 #endif
118723
118724+#ifndef __size_overflow
118725+# define __size_overflow(...)
118726+#endif
118727+
118728+#ifndef __intentional_overflow
118729+# define __intentional_overflow(...)
118730+#endif
118731+
118732 #endif
118733diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c 121666diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
118734index 4f588bc..a543c97 100644 121667index 03a0381..8b31923 100644
118735--- a/virt/kvm/kvm_main.c 121668--- a/virt/kvm/kvm_main.c
118736+++ b/virt/kvm/kvm_main.c 121669+++ b/virt/kvm/kvm_main.c
118737@@ -76,12 +76,17 @@ LIST_HEAD(vm_list); 121670@@ -76,12 +76,17 @@ LIST_HEAD(vm_list);
@@ -118754,7 +121687,7 @@ index 4f588bc..a543c97 100644
118754 121687
118755 struct dentry *kvm_debugfs_dir; 121688 struct dentry *kvm_debugfs_dir;
118756 121689
118757@@ -751,7 +756,7 @@ int __kvm_set_memory_region(struct kvm *kvm, 121690@@ -758,7 +763,7 @@ int __kvm_set_memory_region(struct kvm *kvm,
118758 /* We can read the guest memory with __xxx_user() later on. */ 121691 /* We can read the guest memory with __xxx_user() later on. */
118759 if ((mem->slot < KVM_USER_MEM_SLOTS) && 121692 if ((mem->slot < KVM_USER_MEM_SLOTS) &&
118760 ((mem->userspace_addr & (PAGE_SIZE - 1)) || 121693 ((mem->userspace_addr & (PAGE_SIZE - 1)) ||
@@ -118783,7 +121716,7 @@ index 4f588bc..a543c97 100644
118783 } 121716 }
118784 EXPORT_SYMBOL_GPL(kvm_clear_guest_page); 121717 EXPORT_SYMBOL_GPL(kvm_clear_guest_page);
118785 121718
118786@@ -1872,7 +1885,7 @@ static int kvm_vcpu_release(struct inode *inode, struct file *filp) 121719@@ -1867,7 +1880,7 @@ static int kvm_vcpu_release(struct inode *inode, struct file *filp)
118787 return 0; 121720 return 0;
118788 } 121721 }
118789 121722
@@ -118832,7 +121765,7 @@ index 4f588bc..a543c97 100644
118832 hardware_disable_all_nolock(); 121765 hardware_disable_all_nolock();
118833 r = -EBUSY; 121766 r = -EBUSY;
118834 } 121767 }
118835@@ -3148,7 +3161,7 @@ static void kvm_sched_out(struct preempt_notifier *pn, 121768@@ -3121,7 +3134,7 @@ static void kvm_sched_out(struct preempt_notifier *pn,
118836 kvm_arch_vcpu_put(vcpu); 121769 kvm_arch_vcpu_put(vcpu);
118837 } 121770 }
118838 121771
@@ -118841,7 +121774,7 @@ index 4f588bc..a543c97 100644
118841 struct module *module) 121774 struct module *module)
118842 { 121775 {
118843 int r; 121776 int r;
118844@@ -3195,7 +3208,7 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, 121777@@ -3168,7 +3181,7 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align,
118845 if (!vcpu_align) 121778 if (!vcpu_align)
118846 vcpu_align = __alignof__(struct kvm_vcpu); 121779 vcpu_align = __alignof__(struct kvm_vcpu);
118847 kvm_vcpu_cache = kmem_cache_create("kvm_vcpu", vcpu_size, vcpu_align, 121780 kvm_vcpu_cache = kmem_cache_create("kvm_vcpu", vcpu_size, vcpu_align,
@@ -118850,7 +121783,7 @@ index 4f588bc..a543c97 100644
118850 if (!kvm_vcpu_cache) { 121783 if (!kvm_vcpu_cache) {
118851 r = -ENOMEM; 121784 r = -ENOMEM;
118852 goto out_free_3; 121785 goto out_free_3;
118853@@ -3205,9 +3218,11 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, 121786@@ -3178,9 +3191,11 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align,
118854 if (r) 121787 if (r)
118855 goto out_free; 121788 goto out_free;
118856 121789
@@ -118862,7 +121795,7 @@ index 4f588bc..a543c97 100644
118862 121795
118863 r = misc_register(&kvm_dev); 121796 r = misc_register(&kvm_dev);
118864 if (r) { 121797 if (r) {
118865@@ -3217,9 +3232,6 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, 121798@@ -3190,9 +3205,6 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align,
118866 121799
118867 register_syscore_ops(&kvm_syscore_ops); 121800 register_syscore_ops(&kvm_syscore_ops);
118868 121801
diff --git a/main/linux-virt-grsec/kernelconfig.x86 b/main/linux-virt-grsec/kernelconfig.x86
index 9a85d39f1d..74e00d39d9 100644
--- a/main/linux-virt-grsec/kernelconfig.x86
+++ b/main/linux-virt-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.13.0 Kernel Configuration 3# Linux/x86 3.14.5 Kernel Configuration
4# 4#
5# CONFIG_64BIT is not set 5# CONFIG_64BIT is not set
6CONFIG_X86_32=y 6CONFIG_X86_32=y
@@ -149,7 +149,6 @@ CONFIG_IPC_NS=y
149CONFIG_USER_NS=y 149CONFIG_USER_NS=y
150CONFIG_PID_NS=y 150CONFIG_PID_NS=y
151CONFIG_NET_NS=y 151CONFIG_NET_NS=y
152CONFIG_UIDGID_STRICT_TYPE_CHECKS=y
153CONFIG_SCHED_AUTOGROUP=y 152CONFIG_SCHED_AUTOGROUP=y
154# CONFIG_SYSFS_DEPRECATED is not set 153# CONFIG_SYSFS_DEPRECATED is not set
155# CONFIG_RELAY is not set 154# CONFIG_RELAY is not set
@@ -200,6 +199,7 @@ CONFIG_VM_EVENT_COUNTERS=y
200CONFIG_SLUB=y 199CONFIG_SLUB=y
201# CONFIG_SLOB is not set 200# CONFIG_SLOB is not set
202CONFIG_SLUB_CPU_PARTIAL=y 201CONFIG_SLUB_CPU_PARTIAL=y
202# CONFIG_SYSTEM_TRUSTED_KEYRING is not set
203# CONFIG_PROFILING is not set 203# CONFIG_PROFILING is not set
204CONFIG_HAVE_OPROFILE=y 204CONFIG_HAVE_OPROFILE=y
205CONFIG_OPROFILE_NMI_TIMER=y 205CONFIG_OPROFILE_NMI_TIMER=y
@@ -233,6 +233,7 @@ CONFIG_HAVE_CMPXCHG_LOCAL=y
233CONFIG_HAVE_CMPXCHG_DOUBLE=y 233CONFIG_HAVE_CMPXCHG_DOUBLE=y
234CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y 234CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
235CONFIG_HAVE_ARCH_SECCOMP_FILTER=y 235CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
236# CONFIG_CC_STACKPROTECTOR is not set
236CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y 237CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
237CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y 238CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
238CONFIG_HAVE_ARCH_SOFT_DIRTY=y 239CONFIG_HAVE_ARCH_SOFT_DIRTY=y
@@ -248,7 +249,6 @@ CONFIG_OLD_SIGACTION=y
248CONFIG_HAVE_GENERIC_DMA_COHERENT=y 249CONFIG_HAVE_GENERIC_DMA_COHERENT=y
249CONFIG_RT_MUTEXES=y 250CONFIG_RT_MUTEXES=y
250CONFIG_BASE_SMALL=0 251CONFIG_BASE_SMALL=0
251# CONFIG_SYSTEM_TRUSTED_KEYRING is not set
252CONFIG_MODULES=y 252CONFIG_MODULES=y
253# CONFIG_MODULE_FORCE_LOAD is not set 253# CONFIG_MODULE_FORCE_LOAD is not set
254CONFIG_MODULE_UNLOAD=y 254CONFIG_MODULE_UNLOAD=y
@@ -261,7 +261,7 @@ CONFIG_BLOCK=y
261CONFIG_LBDAF=y 261CONFIG_LBDAF=y
262CONFIG_BLK_DEV_BSG=y 262CONFIG_BLK_DEV_BSG=y
263CONFIG_BLK_DEV_BSGLIB=y 263CONFIG_BLK_DEV_BSGLIB=y
264# CONFIG_BLK_DEV_INTEGRITY is not set 264CONFIG_BLK_DEV_INTEGRITY=y
265# CONFIG_BLK_DEV_THROTTLING is not set 265# CONFIG_BLK_DEV_THROTTLING is not set
266# CONFIG_BLK_CMDLINE_PARSER is not set 266# CONFIG_BLK_CMDLINE_PARSER is not set
267 267
@@ -394,7 +394,6 @@ CONFIG_MICROCODE=m
394CONFIG_MICROCODE_INTEL=y 394CONFIG_MICROCODE_INTEL=y
395CONFIG_MICROCODE_AMD=y 395CONFIG_MICROCODE_AMD=y
396CONFIG_MICROCODE_OLD_INTERFACE=y 396CONFIG_MICROCODE_OLD_INTERFACE=y
397CONFIG_MICROCODE_INTEL_LIB=y
398# CONFIG_MICROCODE_INTEL_EARLY is not set 397# CONFIG_MICROCODE_INTEL_EARLY is not set
399# CONFIG_MICROCODE_AMD_EARLY is not set 398# CONFIG_MICROCODE_AMD_EARLY is not set
400CONFIG_X86_MSR=m 399CONFIG_X86_MSR=m
@@ -431,6 +430,7 @@ CONFIG_MIGRATION=y
431# CONFIG_PHYS_ADDR_T_64BIT is not set 430# CONFIG_PHYS_ADDR_T_64BIT is not set
432CONFIG_ZONE_DMA_FLAG=1 431CONFIG_ZONE_DMA_FLAG=1
433CONFIG_BOUNCE=y 432CONFIG_BOUNCE=y
433CONFIG_NEED_BOUNCE_POOL=y
434CONFIG_VIRT_TO_BUS=y 434CONFIG_VIRT_TO_BUS=y
435CONFIG_MMU_NOTIFIER=y 435CONFIG_MMU_NOTIFIER=y
436CONFIG_KSM=y 436CONFIG_KSM=y
@@ -441,6 +441,8 @@ CONFIG_CLEANCACHE=y
441# CONFIG_FRONTSWAP is not set 441# CONFIG_FRONTSWAP is not set
442# CONFIG_CMA is not set 442# CONFIG_CMA is not set
443# CONFIG_ZBUD is not set 443# CONFIG_ZBUD is not set
444CONFIG_ZSMALLOC=y
445# CONFIG_PGTABLE_MAPPING is not set
444# CONFIG_HIGHPTE is not set 446# CONFIG_HIGHPTE is not set
445# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set 447# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set
446CONFIG_X86_RESERVE_LOW=64 448CONFIG_X86_RESERVE_LOW=64
@@ -746,6 +748,7 @@ CONFIG_NF_NAT_SIP=m
746CONFIG_NF_NAT_TFTP=m 748CONFIG_NF_NAT_TFTP=m
747CONFIG_NETFILTER_SYNPROXY=m 749CONFIG_NETFILTER_SYNPROXY=m
748CONFIG_NF_TABLES=m 750CONFIG_NF_TABLES=m
751CONFIG_NF_TABLES_INET=m
749CONFIG_NFT_EXTHDR=m 752CONFIG_NFT_EXTHDR=m
750CONFIG_NFT_META=m 753CONFIG_NFT_META=m
751CONFIG_NFT_CT=m 754CONFIG_NFT_CT=m
@@ -755,6 +758,9 @@ CONFIG_NFT_COUNTER=m
755CONFIG_NFT_LOG=m 758CONFIG_NFT_LOG=m
756CONFIG_NFT_LIMIT=m 759CONFIG_NFT_LIMIT=m
757CONFIG_NFT_NAT=m 760CONFIG_NFT_NAT=m
761CONFIG_NFT_QUEUE=m
762CONFIG_NFT_REJECT=m
763CONFIG_NFT_REJECT_INET=m
758CONFIG_NFT_COMPAT=m 764CONFIG_NFT_COMPAT=m
759CONFIG_NETFILTER_XTABLES=m 765CONFIG_NETFILTER_XTABLES=m
760 766
@@ -797,6 +803,7 @@ CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
797# 803#
798CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m 804CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
799CONFIG_NETFILTER_XT_MATCH_BPF=m 805CONFIG_NETFILTER_XT_MATCH_BPF=m
806CONFIG_NETFILTER_XT_MATCH_CGROUP=m
800CONFIG_NETFILTER_XT_MATCH_CLUSTER=m 807CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
801CONFIG_NETFILTER_XT_MATCH_COMMENT=m 808CONFIG_NETFILTER_XT_MATCH_COMMENT=m
802CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m 809CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
@@ -813,8 +820,10 @@ CONFIG_NETFILTER_XT_MATCH_ESP=m
813CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m 820CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
814CONFIG_NETFILTER_XT_MATCH_HELPER=m 821CONFIG_NETFILTER_XT_MATCH_HELPER=m
815CONFIG_NETFILTER_XT_MATCH_HL=m 822CONFIG_NETFILTER_XT_MATCH_HL=m
823CONFIG_NETFILTER_XT_MATCH_IPCOMP=m
816CONFIG_NETFILTER_XT_MATCH_IPRANGE=m 824CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
817CONFIG_NETFILTER_XT_MATCH_IPVS=m 825CONFIG_NETFILTER_XT_MATCH_IPVS=m
826CONFIG_NETFILTER_XT_MATCH_L2TP=m
818CONFIG_NETFILTER_XT_MATCH_LENGTH=m 827CONFIG_NETFILTER_XT_MATCH_LENGTH=m
819CONFIG_NETFILTER_XT_MATCH_LIMIT=m 828CONFIG_NETFILTER_XT_MATCH_LIMIT=m
820CONFIG_NETFILTER_XT_MATCH_MAC=m 829CONFIG_NETFILTER_XT_MATCH_MAC=m
@@ -901,9 +910,9 @@ CONFIG_NF_DEFRAG_IPV4=m
901CONFIG_NF_CONNTRACK_IPV4=m 910CONFIG_NF_CONNTRACK_IPV4=m
902CONFIG_NF_CONNTRACK_PROC_COMPAT=y 911CONFIG_NF_CONNTRACK_PROC_COMPAT=y
903CONFIG_NF_TABLES_IPV4=m 912CONFIG_NF_TABLES_IPV4=m
904CONFIG_NFT_REJECT_IPV4=m
905CONFIG_NFT_CHAIN_ROUTE_IPV4=m 913CONFIG_NFT_CHAIN_ROUTE_IPV4=m
906CONFIG_NFT_CHAIN_NAT_IPV4=m 914CONFIG_NFT_CHAIN_NAT_IPV4=m
915CONFIG_NFT_REJECT_IPV4=m
907CONFIG_NF_TABLES_ARP=m 916CONFIG_NF_TABLES_ARP=m
908CONFIG_IP_NF_IPTABLES=m 917CONFIG_IP_NF_IPTABLES=m
909CONFIG_IP_NF_MATCH_AH=m 918CONFIG_IP_NF_MATCH_AH=m
@@ -939,6 +948,7 @@ CONFIG_NF_CONNTRACK_IPV6=m
939CONFIG_NF_TABLES_IPV6=m 948CONFIG_NF_TABLES_IPV6=m
940CONFIG_NFT_CHAIN_ROUTE_IPV6=m 949CONFIG_NFT_CHAIN_ROUTE_IPV6=m
941CONFIG_NFT_CHAIN_NAT_IPV6=m 950CONFIG_NFT_CHAIN_NAT_IPV6=m
951CONFIG_NFT_REJECT_IPV6=m
942CONFIG_IP6_NF_IPTABLES=m 952CONFIG_IP6_NF_IPTABLES=m
943CONFIG_IP6_NF_MATCH_AH=m 953CONFIG_IP6_NF_MATCH_AH=m
944CONFIG_IP6_NF_MATCH_EUI64=m 954CONFIG_IP6_NF_MATCH_EUI64=m
@@ -1049,6 +1059,7 @@ CONFIG_LAPB=m
1049CONFIG_PHONET=m 1059CONFIG_PHONET=m
1050CONFIG_IEEE802154=m 1060CONFIG_IEEE802154=m
1051CONFIG_IEEE802154_6LOWPAN=m 1061CONFIG_IEEE802154_6LOWPAN=m
1062CONFIG_6LOWPAN_IPHC=m
1052CONFIG_MAC802154=m 1063CONFIG_MAC802154=m
1053CONFIG_NET_SCHED=y 1064CONFIG_NET_SCHED=y
1054 1065
@@ -1076,6 +1087,8 @@ CONFIG_NET_SCH_QFQ=m
1076CONFIG_NET_SCH_CODEL=m 1087CONFIG_NET_SCH_CODEL=m
1077CONFIG_NET_SCH_FQ_CODEL=m 1088CONFIG_NET_SCH_FQ_CODEL=m
1078CONFIG_NET_SCH_FQ=m 1089CONFIG_NET_SCH_FQ=m
1090CONFIG_NET_SCH_HHF=m
1091CONFIG_NET_SCH_PIE=m
1079CONFIG_NET_SCH_INGRESS=m 1092CONFIG_NET_SCH_INGRESS=m
1080# CONFIG_NET_SCH_PLUG is not set 1093# CONFIG_NET_SCH_PLUG is not set
1081 1094
@@ -1131,7 +1144,8 @@ CONFIG_NET_MPLS_GSO=m
1131CONFIG_RPS=y 1144CONFIG_RPS=y
1132CONFIG_RFS_ACCEL=y 1145CONFIG_RFS_ACCEL=y
1133CONFIG_XPS=y 1146CONFIG_XPS=y
1134CONFIG_NETPRIO_CGROUP=m 1147CONFIG_CGROUP_NET_PRIO=m
1148CONFIG_CGROUP_NET_CLASSID=y
1135CONFIG_NET_RX_BUSY_POLL=y 1149CONFIG_NET_RX_BUSY_POLL=y
1136CONFIG_BQL=y 1150CONFIG_BQL=y
1137CONFIG_NET_FLOW_LIMIT=y 1151CONFIG_NET_FLOW_LIMIT=y
@@ -1206,6 +1220,8 @@ CONFIG_BLK_DEV=y
1206CONFIG_BLK_DEV_FD=m 1220CONFIG_BLK_DEV_FD=m
1207# CONFIG_PARIDE is not set 1221# CONFIG_PARIDE is not set
1208CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m 1222CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m
1223CONFIG_ZRAM=m
1224# CONFIG_ZRAM_DEBUG is not set
1209# CONFIG_BLK_CPQ_CISS_DA is not set 1225# CONFIG_BLK_CPQ_CISS_DA is not set
1210# CONFIG_BLK_DEV_DAC960 is not set 1226# CONFIG_BLK_DEV_DAC960 is not set
1211# CONFIG_BLK_DEV_UMEM is not set 1227# CONFIG_BLK_DEV_UMEM is not set
@@ -1346,7 +1362,6 @@ CONFIG_ISCSI_BOOT_SYSFS=m
1346# CONFIG_SCSI_ACARD is not set 1362# CONFIG_SCSI_ACARD is not set
1347# CONFIG_SCSI_AACRAID is not set 1363# CONFIG_SCSI_AACRAID is not set
1348# CONFIG_SCSI_AIC7XXX is not set 1364# CONFIG_SCSI_AIC7XXX is not set
1349# CONFIG_SCSI_AIC7XXX_OLD is not set
1350# CONFIG_SCSI_AIC79XX is not set 1365# CONFIG_SCSI_AIC79XX is not set
1351# CONFIG_SCSI_AIC94XX is not set 1366# CONFIG_SCSI_AIC94XX is not set
1352# CONFIG_SCSI_MVSAS is not set 1367# CONFIG_SCSI_MVSAS is not set
@@ -1525,15 +1540,16 @@ CONFIG_MD_FAULTY=m
1525CONFIG_BCACHE=m 1540CONFIG_BCACHE=m
1526# CONFIG_BCACHE_DEBUG is not set 1541# CONFIG_BCACHE_DEBUG is not set
1527# CONFIG_BCACHE_CLOSURES_DEBUG is not set 1542# CONFIG_BCACHE_CLOSURES_DEBUG is not set
1543CONFIG_BLK_DEV_DM_BUILTIN=y
1528CONFIG_BLK_DEV_DM=m 1544CONFIG_BLK_DEV_DM=m
1529# CONFIG_DM_DEBUG is not set 1545# CONFIG_DM_DEBUG is not set
1530CONFIG_DM_BUFIO=m 1546CONFIG_DM_BUFIO=m
1531CONFIG_DM_BIO_PRISON=m 1547CONFIG_DM_BIO_PRISON=m
1532CONFIG_DM_PERSISTENT_DATA=m 1548CONFIG_DM_PERSISTENT_DATA=m
1549# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
1533CONFIG_DM_CRYPT=m 1550CONFIG_DM_CRYPT=m
1534CONFIG_DM_SNAPSHOT=m 1551CONFIG_DM_SNAPSHOT=m
1535CONFIG_DM_THIN_PROVISIONING=m 1552CONFIG_DM_THIN_PROVISIONING=m
1536# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
1537CONFIG_DM_CACHE=m 1553CONFIG_DM_CACHE=m
1538CONFIG_DM_CACHE_MQ=m 1554CONFIG_DM_CACHE_MQ=m
1539CONFIG_DM_CACHE_CLEANER=m 1555CONFIG_DM_CACHE_CLEANER=m
@@ -1669,6 +1685,7 @@ CONFIG_E1000=m
1669# CONFIG_IXGBE is not set 1685# CONFIG_IXGBE is not set
1670# CONFIG_IXGBEVF is not set 1686# CONFIG_IXGBEVF is not set
1671# CONFIG_I40E is not set 1687# CONFIG_I40E is not set
1688# CONFIG_I40EVF is not set
1672# CONFIG_NET_VENDOR_I825XX is not set 1689# CONFIG_NET_VENDOR_I825XX is not set
1673# CONFIG_IP1000 is not set 1690# CONFIG_IP1000 is not set
1674# CONFIG_JME is not set 1691# CONFIG_JME is not set
@@ -1856,6 +1873,7 @@ CONFIG_INPUT_MISC=y
1856# Hardware I/O ports 1873# Hardware I/O ports
1857# 1874#
1858CONFIG_SERIO=y 1875CONFIG_SERIO=y
1876CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y
1859CONFIG_SERIO_I8042=y 1877CONFIG_SERIO_I8042=y
1860# CONFIG_SERIO_SERPORT is not set 1878# CONFIG_SERIO_SERPORT is not set
1861# CONFIG_SERIO_CT82C710 is not set 1879# CONFIG_SERIO_CT82C710 is not set
@@ -1999,6 +2017,7 @@ CONFIG_I2C_PIIX4=m
1999# I2C system bus drivers (mostly embedded / system-on-chip) 2017# I2C system bus drivers (mostly embedded / system-on-chip)
2000# 2018#
2001# CONFIG_I2C_CBUS_GPIO is not set 2019# CONFIG_I2C_CBUS_GPIO is not set
2020# CONFIG_I2C_DESIGNWARE_PLATFORM is not set
2002# CONFIG_I2C_DESIGNWARE_PCI is not set 2021# CONFIG_I2C_DESIGNWARE_PCI is not set
2003# CONFIG_I2C_EG20T is not set 2022# CONFIG_I2C_EG20T is not set
2004# CONFIG_I2C_GPIO is not set 2023# CONFIG_I2C_GPIO is not set
@@ -2014,6 +2033,7 @@ CONFIG_I2C_PIIX4=m
2014# CONFIG_I2C_DIOLAN_U2C is not set 2033# CONFIG_I2C_DIOLAN_U2C is not set
2015# CONFIG_I2C_PARPORT is not set 2034# CONFIG_I2C_PARPORT is not set
2016# CONFIG_I2C_PARPORT_LIGHT is not set 2035# CONFIG_I2C_PARPORT_LIGHT is not set
2036# CONFIG_I2C_ROBOTFUZZ_OSIF is not set
2017# CONFIG_I2C_TAOS_EVM is not set 2037# CONFIG_I2C_TAOS_EVM is not set
2018# CONFIG_I2C_TINY_USB is not set 2038# CONFIG_I2C_TINY_USB is not set
2019 2039
@@ -2056,6 +2076,7 @@ CONFIG_GPIO_ACPI=y
2056# CONFIG_GPIO_GENERIC_PLATFORM is not set 2076# CONFIG_GPIO_GENERIC_PLATFORM is not set
2057# CONFIG_GPIO_IT8761E is not set 2077# CONFIG_GPIO_IT8761E is not set
2058# CONFIG_GPIO_F7188X is not set 2078# CONFIG_GPIO_F7188X is not set
2079# CONFIG_GPIO_SCH311X is not set
2059# CONFIG_GPIO_TS5500 is not set 2080# CONFIG_GPIO_TS5500 is not set
2060# CONFIG_GPIO_SCH is not set 2081# CONFIG_GPIO_SCH is not set
2061# CONFIG_GPIO_ICH is not set 2082# CONFIG_GPIO_ICH is not set
@@ -2084,7 +2105,6 @@ CONFIG_GPIO_ACPI=y
2084# 2105#
2085# SPI GPIO expanders: 2106# SPI GPIO expanders:
2086# 2107#
2087# CONFIG_GPIO_MCP23S08 is not set
2088 2108
2089# 2109#
2090# AC97 GPIO expanders: 2110# AC97 GPIO expanders:
@@ -2254,6 +2274,7 @@ CONFIG_THERMAL_GOV_STEP_WISE=y
2254# CONFIG_THERMAL_GOV_USER_SPACE is not set 2274# CONFIG_THERMAL_GOV_USER_SPACE is not set
2255# CONFIG_THERMAL_EMULATION is not set 2275# CONFIG_THERMAL_EMULATION is not set
2256# CONFIG_INTEL_POWERCLAMP is not set 2276# CONFIG_INTEL_POWERCLAMP is not set
2277# CONFIG_ACPI_INT3403_THERMAL is not set
2257 2278
2258# 2279#
2259# Texas Instruments thermal drivers 2280# Texas Instruments thermal drivers
@@ -2266,6 +2287,7 @@ CONFIG_WATCHDOG_CORE=y
2266# Watchdog Device Drivers 2287# Watchdog Device Drivers
2267# 2288#
2268# CONFIG_SOFT_WATCHDOG is not set 2289# CONFIG_SOFT_WATCHDOG is not set
2290# CONFIG_DW_WATCHDOG is not set
2269# CONFIG_ACQUIRE_WDT is not set 2291# CONFIG_ACQUIRE_WDT is not set
2270# CONFIG_ADVANTECH_WDT is not set 2292# CONFIG_ADVANTECH_WDT is not set
2271# CONFIG_ALIM1535_WDT is not set 2293# CONFIG_ALIM1535_WDT is not set
@@ -2355,6 +2377,7 @@ CONFIG_MFD_CORE=m
2355# CONFIG_ABX500_CORE is not set 2377# CONFIG_ABX500_CORE is not set
2356# CONFIG_MFD_SYSCON is not set 2378# CONFIG_MFD_SYSCON is not set
2357# CONFIG_MFD_TI_AM335X_TSCADC is not set 2379# CONFIG_MFD_TI_AM335X_TSCADC is not set
2380# CONFIG_MFD_LP3943 is not set
2358# CONFIG_TPS6105X is not set 2381# CONFIG_TPS6105X is not set
2359# CONFIG_TPS65010 is not set 2382# CONFIG_TPS65010 is not set
2360# CONFIG_TPS6507X is not set 2383# CONFIG_TPS6507X is not set
@@ -2383,6 +2406,7 @@ CONFIG_AGP_SIS=m
2383# CONFIG_AGP_SWORKS is not set 2406# CONFIG_AGP_SWORKS is not set
2384CONFIG_AGP_VIA=m 2407CONFIG_AGP_VIA=m
2385# CONFIG_AGP_EFFICEON is not set 2408# CONFIG_AGP_EFFICEON is not set
2409CONFIG_INTEL_GTT=m
2386# CONFIG_VGA_ARB is not set 2410# CONFIG_VGA_ARB is not set
2387# CONFIG_VGA_SWITCHEROO is not set 2411# CONFIG_VGA_SWITCHEROO is not set
2388CONFIG_DRM=m 2412CONFIG_DRM=m
@@ -2407,6 +2431,7 @@ CONFIG_DRM_I915=m
2407# CONFIG_DRM_I915_KMS is not set 2431# CONFIG_DRM_I915_KMS is not set
2408# CONFIG_DRM_I915_FBDEV is not set 2432# CONFIG_DRM_I915_FBDEV is not set
2409# CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT is not set 2433# CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT is not set
2434# CONFIG_DRM_I915_UMS is not set
2410CONFIG_DRM_MGA=m 2435CONFIG_DRM_MGA=m
2411CONFIG_DRM_SIS=m 2436CONFIG_DRM_SIS=m
2412CONFIG_DRM_VIA=m 2437CONFIG_DRM_VIA=m
@@ -2421,6 +2446,7 @@ CONFIG_DRM_GMA3600=y
2421CONFIG_DRM_MGAG200=m 2446CONFIG_DRM_MGAG200=m
2422CONFIG_DRM_CIRRUS_QEMU=m 2447CONFIG_DRM_CIRRUS_QEMU=m
2423CONFIG_DRM_QXL=m 2448CONFIG_DRM_QXL=m
2449# CONFIG_DRM_BOCHS is not set
2424CONFIG_VGASTATE=m 2450CONFIG_VGASTATE=m
2425CONFIG_VIDEO_OUTPUT_CONTROL=m 2451CONFIG_VIDEO_OUTPUT_CONTROL=m
2426CONFIG_HDMI=y 2452CONFIG_HDMI=y
@@ -2455,6 +2481,7 @@ CONFIG_FB_VGA16=m
2455CONFIG_FB_UVESA=m 2481CONFIG_FB_UVESA=m
2456# CONFIG_FB_N411 is not set 2482# CONFIG_FB_N411 is not set
2457# CONFIG_FB_HGA is not set 2483# CONFIG_FB_HGA is not set
2484# CONFIG_FB_OPENCORES is not set
2458# CONFIG_FB_S1D13XXX is not set 2485# CONFIG_FB_S1D13XXX is not set
2459# CONFIG_FB_NVIDIA is not set 2486# CONFIG_FB_NVIDIA is not set
2460# CONFIG_FB_RIVA is not set 2487# CONFIG_FB_RIVA is not set
@@ -2612,20 +2639,20 @@ CONFIG_SND_HDA_INPUT_BEEP=y
2612CONFIG_SND_HDA_INPUT_BEEP_MODE=0 2639CONFIG_SND_HDA_INPUT_BEEP_MODE=0
2613CONFIG_SND_HDA_INPUT_JACK=y 2640CONFIG_SND_HDA_INPUT_JACK=y
2614# CONFIG_SND_HDA_PATCH_LOADER is not set 2641# CONFIG_SND_HDA_PATCH_LOADER is not set
2615CONFIG_SND_HDA_CODEC_REALTEK=y 2642CONFIG_SND_HDA_CODEC_REALTEK=m
2616CONFIG_SND_HDA_CODEC_ANALOG=y 2643CONFIG_SND_HDA_CODEC_ANALOG=m
2617CONFIG_SND_HDA_CODEC_SIGMATEL=y 2644CONFIG_SND_HDA_CODEC_SIGMATEL=m
2618CONFIG_SND_HDA_CODEC_VIA=y 2645CONFIG_SND_HDA_CODEC_VIA=m
2619CONFIG_SND_HDA_CODEC_HDMI=y 2646CONFIG_SND_HDA_CODEC_HDMI=m
2620CONFIG_SND_HDA_I915=y 2647CONFIG_SND_HDA_I915=y
2621CONFIG_SND_HDA_CODEC_CIRRUS=y 2648CONFIG_SND_HDA_CODEC_CIRRUS=m
2622CONFIG_SND_HDA_CODEC_CONEXANT=y 2649CONFIG_SND_HDA_CODEC_CONEXANT=m
2623CONFIG_SND_HDA_CODEC_CA0110=y 2650CONFIG_SND_HDA_CODEC_CA0110=m
2624CONFIG_SND_HDA_CODEC_CA0132=y 2651CONFIG_SND_HDA_CODEC_CA0132=m
2625# CONFIG_SND_HDA_CODEC_CA0132_DSP is not set 2652# CONFIG_SND_HDA_CODEC_CA0132_DSP is not set
2626CONFIG_SND_HDA_CODEC_CMEDIA=y 2653CONFIG_SND_HDA_CODEC_CMEDIA=m
2627CONFIG_SND_HDA_CODEC_SI3054=y 2654CONFIG_SND_HDA_CODEC_SI3054=m
2628CONFIG_SND_HDA_GENERIC=y 2655CONFIG_SND_HDA_GENERIC=m
2629CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0 2656CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
2630# CONFIG_SND_HDSP is not set 2657# CONFIG_SND_HDSP is not set
2631# CONFIG_SND_HDSPM is not set 2658# CONFIG_SND_HDSPM is not set
@@ -2825,7 +2852,9 @@ CONFIG_USB_STORAGE_ENE_UB6250=m
2825# 2852#
2826# CONFIG_USB_MDC800 is not set 2853# CONFIG_USB_MDC800 is not set
2827# CONFIG_USB_MICROTEK is not set 2854# CONFIG_USB_MICROTEK is not set
2855# CONFIG_USB_MUSB_HDRC is not set
2828# CONFIG_USB_DWC3 is not set 2856# CONFIG_USB_DWC3 is not set
2857# CONFIG_USB_DWC2 is not set
2829# CONFIG_USB_CHIPIDEA is not set 2858# CONFIG_USB_CHIPIDEA is not set
2830 2859
2831# 2860#
@@ -2866,6 +2895,7 @@ CONFIG_USB_STORAGE_ENE_UB6250=m
2866# USB Physical Layer drivers 2895# USB Physical Layer drivers
2867# 2896#
2868# CONFIG_USB_PHY is not set 2897# CONFIG_USB_PHY is not set
2898# CONFIG_USB_OTG_FSM is not set
2869# CONFIG_NOP_USB_XCEIV is not set 2899# CONFIG_NOP_USB_XCEIV is not set
2870# CONFIG_SAMSUNG_USB2PHY is not set 2900# CONFIG_SAMSUNG_USB2PHY is not set
2871# CONFIG_SAMSUNG_USB3PHY is not set 2901# CONFIG_SAMSUNG_USB3PHY is not set
@@ -2937,6 +2967,7 @@ CONFIG_RTC_DRV_MAX6900=m
2937CONFIG_RTC_DRV_RS5C372=m 2967CONFIG_RTC_DRV_RS5C372=m
2938CONFIG_RTC_DRV_ISL1208=m 2968CONFIG_RTC_DRV_ISL1208=m
2939# CONFIG_RTC_DRV_ISL12022 is not set 2969# CONFIG_RTC_DRV_ISL12022 is not set
2970# CONFIG_RTC_DRV_ISL12057 is not set
2940CONFIG_RTC_DRV_X1205=m 2971CONFIG_RTC_DRV_X1205=m
2941# CONFIG_RTC_DRV_PCF2127 is not set 2972# CONFIG_RTC_DRV_PCF2127 is not set
2942# CONFIG_RTC_DRV_PCF8523 is not set 2973# CONFIG_RTC_DRV_PCF8523 is not set
@@ -3036,11 +3067,11 @@ CONFIG_STAGING=y
3036# CONFIG_COMEDI is not set 3067# CONFIG_COMEDI is not set
3037# CONFIG_PANEL is not set 3068# CONFIG_PANEL is not set
3038# CONFIG_RTS5139 is not set 3069# CONFIG_RTS5139 is not set
3070# CONFIG_RTS5208 is not set
3039# CONFIG_TRANZPORT is not set 3071# CONFIG_TRANZPORT is not set
3040# CONFIG_IDE_PHISON is not set 3072# CONFIG_IDE_PHISON is not set
3041# CONFIG_LINE6_USB is not set 3073# CONFIG_LINE6_USB is not set
3042# CONFIG_DX_SEP is not set 3074# CONFIG_DX_SEP is not set
3043# CONFIG_ZSMALLOC is not set
3044# CONFIG_FB_SM7XX is not set 3075# CONFIG_FB_SM7XX is not set
3045# CONFIG_CRYSTALHD is not set 3076# CONFIG_CRYSTALHD is not set
3046# CONFIG_FB_XGI is not set 3077# CONFIG_FB_XGI is not set
@@ -3068,7 +3099,6 @@ CONFIG_STAGING=y
3068# CONFIG_CED1401 is not set 3099# CONFIG_CED1401 is not set
3069# CONFIG_DGRP is not set 3100# CONFIG_DGRP is not set
3070# CONFIG_FIREWIRE_SERIAL is not set 3101# CONFIG_FIREWIRE_SERIAL is not set
3071# CONFIG_USB_DWC2 is not set
3072# CONFIG_LUSTRE_FS is not set 3102# CONFIG_LUSTRE_FS is not set
3073# CONFIG_XILLYBUS is not set 3103# CONFIG_XILLYBUS is not set
3074# CONFIG_DGNC is not set 3104# CONFIG_DGNC is not set
@@ -3125,6 +3155,7 @@ CONFIG_FIRMWARE_MEMMAP=y
3125# CONFIG_DCDBAS is not set 3155# CONFIG_DCDBAS is not set
3126CONFIG_DMIID=y 3156CONFIG_DMIID=y
3127# CONFIG_DMI_SYSFS is not set 3157# CONFIG_DMI_SYSFS is not set
3158CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y
3128# CONFIG_ISCSI_IBFT_FIND is not set 3159# CONFIG_ISCSI_IBFT_FIND is not set
3129# CONFIG_GOOGLE_FIRMWARE is not set 3160# CONFIG_GOOGLE_FIRMWARE is not set
3130CONFIG_UEFI_CPER=y 3161CONFIG_UEFI_CPER=y
@@ -3203,7 +3234,6 @@ CONFIG_QUOTACTL=y
3203CONFIG_AUTOFS4_FS=m 3234CONFIG_AUTOFS4_FS=m
3204CONFIG_FUSE_FS=m 3235CONFIG_FUSE_FS=m
3205# CONFIG_CUSE is not set 3236# CONFIG_CUSE is not set
3206CONFIG_GENERIC_ACL=y
3207 3237
3208# 3238#
3209# Caches 3239# Caches
@@ -3327,6 +3357,7 @@ CONFIG_RPCSEC_GSS_KRB5=m
3327# CONFIG_SUNRPC_DEBUG is not set 3357# CONFIG_SUNRPC_DEBUG is not set
3328CONFIG_CEPH_FS=m 3358CONFIG_CEPH_FS=m
3329CONFIG_CEPH_FSCACHE=y 3359CONFIG_CEPH_FSCACHE=y
3360# CONFIG_CEPH_FS_POSIX_ACL is not set
3330CONFIG_CIFS=m 3361CONFIG_CIFS=m
3331# CONFIG_CIFS_STATS is not set 3362# CONFIG_CIFS_STATS is not set
3332# CONFIG_CIFS_WEAK_PW_HASH is not set 3363# CONFIG_CIFS_WEAK_PW_HASH is not set
@@ -3464,6 +3495,7 @@ CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
3464# CONFIG_DETECT_HUNG_TASK is not set 3495# CONFIG_DETECT_HUNG_TASK is not set
3465# CONFIG_PANIC_ON_OOPS is not set 3496# CONFIG_PANIC_ON_OOPS is not set
3466CONFIG_PANIC_ON_OOPS_VALUE=0 3497CONFIG_PANIC_ON_OOPS_VALUE=0
3498CONFIG_PANIC_TIMEOUT=0
3467CONFIG_SCHED_DEBUG=y 3499CONFIG_SCHED_DEBUG=y
3468CONFIG_SCHEDSTATS=y 3500CONFIG_SCHEDSTATS=y
3469CONFIG_TIMER_STATS=y 3501CONFIG_TIMER_STATS=y
@@ -3531,6 +3563,8 @@ CONFIG_TRACING_SUPPORT=y
3531# CONFIG_TEST_STRING_HELPERS is not set 3563# CONFIG_TEST_STRING_HELPERS is not set
3532CONFIG_TEST_KSTRTOX=m 3564CONFIG_TEST_KSTRTOX=m
3533# CONFIG_DMA_API_DEBUG is not set 3565# CONFIG_DMA_API_DEBUG is not set
3566# CONFIG_TEST_MODULE is not set
3567# CONFIG_TEST_USER_COPY is not set
3534# CONFIG_SAMPLES is not set 3568# CONFIG_SAMPLES is not set
3535CONFIG_HAVE_ARCH_KGDB=y 3569CONFIG_HAVE_ARCH_KGDB=y
3536# CONFIG_KGDB is not set 3570# CONFIG_KGDB is not set
@@ -3874,6 +3908,9 @@ CONFIG_CRYPTO_DEV_PADLOCK_AES=m
3874CONFIG_CRYPTO_DEV_PADLOCK_SHA=m 3908CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
3875CONFIG_CRYPTO_DEV_GEODE=m 3909CONFIG_CRYPTO_DEV_GEODE=m
3876# CONFIG_CRYPTO_DEV_HIFN_795X is not set 3910# CONFIG_CRYPTO_DEV_HIFN_795X is not set
3911CONFIG_CRYPTO_DEV_CCP=y
3912CONFIG_CRYPTO_DEV_CCP_DD=m
3913CONFIG_CRYPTO_DEV_CCP_CRYPTO=m
3877CONFIG_ASYMMETRIC_KEY_TYPE=m 3914CONFIG_ASYMMETRIC_KEY_TYPE=m
3878CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=m 3915CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=m
3879CONFIG_PUBLIC_KEY_ALGO_RSA=m 3916CONFIG_PUBLIC_KEY_ALGO_RSA=m
diff --git a/main/linux-virt-grsec/kernelconfig.x86_64 b/main/linux-virt-grsec/kernelconfig.x86_64
index 42c621b00b..5eab81d765 100644
--- a/main/linux-virt-grsec/kernelconfig.x86_64
+++ b/main/linux-virt-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.13.0 Kernel Configuration 3# Linux/x86 3.14.5 Kernel Configuration
4# 4#
5CONFIG_64BIT=y 5CONFIG_64BIT=y
6CONFIG_X86_64=y 6CONFIG_X86_64=y
@@ -155,7 +155,6 @@ CONFIG_IPC_NS=y
155CONFIG_USER_NS=y 155CONFIG_USER_NS=y
156CONFIG_PID_NS=y 156CONFIG_PID_NS=y
157CONFIG_NET_NS=y 157CONFIG_NET_NS=y
158CONFIG_UIDGID_STRICT_TYPE_CHECKS=y
159CONFIG_SCHED_AUTOGROUP=y 158CONFIG_SCHED_AUTOGROUP=y
160# CONFIG_SYSFS_DEPRECATED is not set 159# CONFIG_SYSFS_DEPRECATED is not set
161# CONFIG_RELAY is not set 160# CONFIG_RELAY is not set
@@ -204,6 +203,7 @@ CONFIG_VM_EVENT_COUNTERS=y
204CONFIG_SLUB=y 203CONFIG_SLUB=y
205# CONFIG_SLOB is not set 204# CONFIG_SLOB is not set
206CONFIG_SLUB_CPU_PARTIAL=y 205CONFIG_SLUB_CPU_PARTIAL=y
206# CONFIG_SYSTEM_TRUSTED_KEYRING is not set
207# CONFIG_PROFILING is not set 207# CONFIG_PROFILING is not set
208CONFIG_HAVE_OPROFILE=y 208CONFIG_HAVE_OPROFILE=y
209CONFIG_OPROFILE_NMI_TIMER=y 209CONFIG_OPROFILE_NMI_TIMER=y
@@ -235,6 +235,11 @@ CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y
235CONFIG_HAVE_CMPXCHG_LOCAL=y 235CONFIG_HAVE_CMPXCHG_LOCAL=y
236CONFIG_HAVE_CMPXCHG_DOUBLE=y 236CONFIG_HAVE_CMPXCHG_DOUBLE=y
237CONFIG_HAVE_ARCH_SECCOMP_FILTER=y 237CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
238CONFIG_HAVE_CC_STACKPROTECTOR=y
239CONFIG_CC_STACKPROTECTOR=y
240# CONFIG_CC_STACKPROTECTOR_NONE is not set
241CONFIG_CC_STACKPROTECTOR_REGULAR=y
242# CONFIG_CC_STACKPROTECTOR_STRONG is not set
238CONFIG_HAVE_CONTEXT_TRACKING=y 243CONFIG_HAVE_CONTEXT_TRACKING=y
239CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y 244CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
240CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y 245CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
@@ -250,7 +255,6 @@ CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK=y
250# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 255# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
251CONFIG_RT_MUTEXES=y 256CONFIG_RT_MUTEXES=y
252CONFIG_BASE_SMALL=0 257CONFIG_BASE_SMALL=0
253# CONFIG_SYSTEM_TRUSTED_KEYRING is not set
254CONFIG_MODULES=y 258CONFIG_MODULES=y
255# CONFIG_MODULE_FORCE_LOAD is not set 259# CONFIG_MODULE_FORCE_LOAD is not set
256CONFIG_MODULE_UNLOAD=y 260CONFIG_MODULE_UNLOAD=y
@@ -262,7 +266,7 @@ CONFIG_STOP_MACHINE=y
262CONFIG_BLOCK=y 266CONFIG_BLOCK=y
263CONFIG_BLK_DEV_BSG=y 267CONFIG_BLK_DEV_BSG=y
264CONFIG_BLK_DEV_BSGLIB=y 268CONFIG_BLK_DEV_BSGLIB=y
265# CONFIG_BLK_DEV_INTEGRITY is not set 269CONFIG_BLK_DEV_INTEGRITY=y
266# CONFIG_BLK_DEV_THROTTLING is not set 270# CONFIG_BLK_DEV_THROTTLING is not set
267# CONFIG_BLK_CMDLINE_PARSER is not set 271# CONFIG_BLK_CMDLINE_PARSER is not set
268 272
@@ -332,6 +336,7 @@ CONFIG_XEN_PVHVM=y
332CONFIG_XEN_MAX_DOMAIN_MEMORY=500 336CONFIG_XEN_MAX_DOMAIN_MEMORY=500
333CONFIG_XEN_SAVE_RESTORE=y 337CONFIG_XEN_SAVE_RESTORE=y
334# CONFIG_XEN_DEBUG_FS is not set 338# CONFIG_XEN_DEBUG_FS is not set
339CONFIG_XEN_PVH=y
335CONFIG_KVM_GUEST=y 340CONFIG_KVM_GUEST=y
336CONFIG_KVM_DEBUG_FS=y 341CONFIG_KVM_DEBUG_FS=y
337CONFIG_PARAVIRT_TIME_ACCOUNTING=y 342CONFIG_PARAVIRT_TIME_ACCOUNTING=y
@@ -377,7 +382,6 @@ CONFIG_MICROCODE=m
377CONFIG_MICROCODE_INTEL=y 382CONFIG_MICROCODE_INTEL=y
378CONFIG_MICROCODE_AMD=y 383CONFIG_MICROCODE_AMD=y
379CONFIG_MICROCODE_OLD_INTERFACE=y 384CONFIG_MICROCODE_OLD_INTERFACE=y
380CONFIG_MICROCODE_INTEL_LIB=y
381# CONFIG_MICROCODE_INTEL_EARLY is not set 385# CONFIG_MICROCODE_INTEL_EARLY is not set
382# CONFIG_MICROCODE_AMD_EARLY is not set 386# CONFIG_MICROCODE_AMD_EARLY is not set
383CONFIG_X86_MSR=m 387CONFIG_X86_MSR=m
@@ -416,6 +420,7 @@ CONFIG_MIGRATION=y
416CONFIG_PHYS_ADDR_T_64BIT=y 420CONFIG_PHYS_ADDR_T_64BIT=y
417CONFIG_ZONE_DMA_FLAG=1 421CONFIG_ZONE_DMA_FLAG=1
418CONFIG_BOUNCE=y 422CONFIG_BOUNCE=y
423CONFIG_NEED_BOUNCE_POOL=y
419CONFIG_VIRT_TO_BUS=y 424CONFIG_VIRT_TO_BUS=y
420CONFIG_MMU_NOTIFIER=y 425CONFIG_MMU_NOTIFIER=y
421CONFIG_KSM=y 426CONFIG_KSM=y
@@ -426,6 +431,7 @@ CONFIG_CLEANCACHE=y
426# CONFIG_FRONTSWAP is not set 431# CONFIG_FRONTSWAP is not set
427# CONFIG_CMA is not set 432# CONFIG_CMA is not set
428# CONFIG_ZBUD is not set 433# CONFIG_ZBUD is not set
434# CONFIG_ZSMALLOC is not set
429# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set 435# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set
430CONFIG_X86_RESERVE_LOW=64 436CONFIG_X86_RESERVE_LOW=64
431CONFIG_MTRR=y 437CONFIG_MTRR=y
@@ -438,7 +444,6 @@ CONFIG_ARCH_RANDOM=y
438# CONFIG_X86_SMAP is not set 444# CONFIG_X86_SMAP is not set
439# CONFIG_EFI is not set 445# CONFIG_EFI is not set
440# CONFIG_SECCOMP is not set 446# CONFIG_SECCOMP is not set
441# CONFIG_CC_STACKPROTECTOR is not set
442CONFIG_HZ_100=y 447CONFIG_HZ_100=y
443# CONFIG_HZ_250 is not set 448# CONFIG_HZ_250 is not set
444# CONFIG_HZ_300 is not set 449# CONFIG_HZ_300 is not set
@@ -726,6 +731,7 @@ CONFIG_NF_NAT_SIP=m
726CONFIG_NF_NAT_TFTP=m 731CONFIG_NF_NAT_TFTP=m
727CONFIG_NETFILTER_SYNPROXY=m 732CONFIG_NETFILTER_SYNPROXY=m
728CONFIG_NF_TABLES=m 733CONFIG_NF_TABLES=m
734CONFIG_NF_TABLES_INET=m
729CONFIG_NFT_EXTHDR=m 735CONFIG_NFT_EXTHDR=m
730CONFIG_NFT_META=m 736CONFIG_NFT_META=m
731CONFIG_NFT_CT=m 737CONFIG_NFT_CT=m
@@ -735,6 +741,9 @@ CONFIG_NFT_COUNTER=m
735CONFIG_NFT_LOG=m 741CONFIG_NFT_LOG=m
736CONFIG_NFT_LIMIT=m 742CONFIG_NFT_LIMIT=m
737CONFIG_NFT_NAT=m 743CONFIG_NFT_NAT=m
744CONFIG_NFT_QUEUE=m
745CONFIG_NFT_REJECT=m
746CONFIG_NFT_REJECT_INET=m
738CONFIG_NFT_COMPAT=m 747CONFIG_NFT_COMPAT=m
739CONFIG_NETFILTER_XTABLES=m 748CONFIG_NETFILTER_XTABLES=m
740 749
@@ -777,6 +786,7 @@ CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
777# 786#
778CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m 787CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
779CONFIG_NETFILTER_XT_MATCH_BPF=m 788CONFIG_NETFILTER_XT_MATCH_BPF=m
789CONFIG_NETFILTER_XT_MATCH_CGROUP=m
780CONFIG_NETFILTER_XT_MATCH_CLUSTER=m 790CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
781CONFIG_NETFILTER_XT_MATCH_COMMENT=m 791CONFIG_NETFILTER_XT_MATCH_COMMENT=m
782CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m 792CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
@@ -793,8 +803,10 @@ CONFIG_NETFILTER_XT_MATCH_ESP=m
793CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m 803CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
794CONFIG_NETFILTER_XT_MATCH_HELPER=m 804CONFIG_NETFILTER_XT_MATCH_HELPER=m
795CONFIG_NETFILTER_XT_MATCH_HL=m 805CONFIG_NETFILTER_XT_MATCH_HL=m
806CONFIG_NETFILTER_XT_MATCH_IPCOMP=m
796CONFIG_NETFILTER_XT_MATCH_IPRANGE=m 807CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
797CONFIG_NETFILTER_XT_MATCH_IPVS=m 808CONFIG_NETFILTER_XT_MATCH_IPVS=m
809CONFIG_NETFILTER_XT_MATCH_L2TP=m
798CONFIG_NETFILTER_XT_MATCH_LENGTH=m 810CONFIG_NETFILTER_XT_MATCH_LENGTH=m
799CONFIG_NETFILTER_XT_MATCH_LIMIT=m 811CONFIG_NETFILTER_XT_MATCH_LIMIT=m
800CONFIG_NETFILTER_XT_MATCH_MAC=m 812CONFIG_NETFILTER_XT_MATCH_MAC=m
@@ -881,9 +893,9 @@ CONFIG_NF_DEFRAG_IPV4=m
881CONFIG_NF_CONNTRACK_IPV4=m 893CONFIG_NF_CONNTRACK_IPV4=m
882CONFIG_NF_CONNTRACK_PROC_COMPAT=y 894CONFIG_NF_CONNTRACK_PROC_COMPAT=y
883CONFIG_NF_TABLES_IPV4=m 895CONFIG_NF_TABLES_IPV4=m
884CONFIG_NFT_REJECT_IPV4=m
885CONFIG_NFT_CHAIN_ROUTE_IPV4=m 896CONFIG_NFT_CHAIN_ROUTE_IPV4=m
886CONFIG_NFT_CHAIN_NAT_IPV4=m 897CONFIG_NFT_CHAIN_NAT_IPV4=m
898CONFIG_NFT_REJECT_IPV4=m
887CONFIG_NF_TABLES_ARP=m 899CONFIG_NF_TABLES_ARP=m
888CONFIG_IP_NF_IPTABLES=m 900CONFIG_IP_NF_IPTABLES=m
889CONFIG_IP_NF_MATCH_AH=m 901CONFIG_IP_NF_MATCH_AH=m
@@ -919,6 +931,7 @@ CONFIG_NF_CONNTRACK_IPV6=m
919CONFIG_NF_TABLES_IPV6=m 931CONFIG_NF_TABLES_IPV6=m
920CONFIG_NFT_CHAIN_ROUTE_IPV6=m 932CONFIG_NFT_CHAIN_ROUTE_IPV6=m
921CONFIG_NFT_CHAIN_NAT_IPV6=m 933CONFIG_NFT_CHAIN_NAT_IPV6=m
934CONFIG_NFT_REJECT_IPV6=m
922CONFIG_IP6_NF_IPTABLES=m 935CONFIG_IP6_NF_IPTABLES=m
923CONFIG_IP6_NF_MATCH_AH=m 936CONFIG_IP6_NF_MATCH_AH=m
924CONFIG_IP6_NF_MATCH_EUI64=m 937CONFIG_IP6_NF_MATCH_EUI64=m
@@ -1029,6 +1042,7 @@ CONFIG_LAPB=m
1029CONFIG_PHONET=m 1042CONFIG_PHONET=m
1030CONFIG_IEEE802154=m 1043CONFIG_IEEE802154=m
1031CONFIG_IEEE802154_6LOWPAN=m 1044CONFIG_IEEE802154_6LOWPAN=m
1045CONFIG_6LOWPAN_IPHC=m
1032CONFIG_MAC802154=m 1046CONFIG_MAC802154=m
1033CONFIG_NET_SCHED=y 1047CONFIG_NET_SCHED=y
1034 1048
@@ -1056,6 +1070,8 @@ CONFIG_NET_SCH_QFQ=m
1056CONFIG_NET_SCH_CODEL=m 1070CONFIG_NET_SCH_CODEL=m
1057CONFIG_NET_SCH_FQ_CODEL=m 1071CONFIG_NET_SCH_FQ_CODEL=m
1058CONFIG_NET_SCH_FQ=m 1072CONFIG_NET_SCH_FQ=m
1073CONFIG_NET_SCH_HHF=m
1074CONFIG_NET_SCH_PIE=m
1059CONFIG_NET_SCH_INGRESS=m 1075CONFIG_NET_SCH_INGRESS=m
1060# CONFIG_NET_SCH_PLUG is not set 1076# CONFIG_NET_SCH_PLUG is not set
1061 1077
@@ -1111,7 +1127,8 @@ CONFIG_NET_MPLS_GSO=m
1111CONFIG_RPS=y 1127CONFIG_RPS=y
1112CONFIG_RFS_ACCEL=y 1128CONFIG_RFS_ACCEL=y
1113CONFIG_XPS=y 1129CONFIG_XPS=y
1114CONFIG_NETPRIO_CGROUP=m 1130CONFIG_CGROUP_NET_PRIO=m
1131CONFIG_CGROUP_NET_CLASSID=y
1115CONFIG_NET_RX_BUSY_POLL=y 1132CONFIG_NET_RX_BUSY_POLL=y
1116CONFIG_BQL=y 1133CONFIG_BQL=y
1117CONFIG_BPF_JIT=y 1134CONFIG_BPF_JIT=y
@@ -1276,6 +1293,7 @@ CONFIG_VMWARE_VMCI=m
1276# Intel MIC Card Driver 1293# Intel MIC Card Driver
1277# 1294#
1278# CONFIG_INTEL_MIC_CARD is not set 1295# CONFIG_INTEL_MIC_CARD is not set
1296# CONFIG_GENWQE is not set
1279CONFIG_HAVE_IDE=y 1297CONFIG_HAVE_IDE=y
1280# CONFIG_IDE is not set 1298# CONFIG_IDE is not set
1281 1299
@@ -1333,7 +1351,6 @@ CONFIG_ISCSI_BOOT_SYSFS=m
1333# CONFIG_SCSI_ACARD is not set 1351# CONFIG_SCSI_ACARD is not set
1334# CONFIG_SCSI_AACRAID is not set 1352# CONFIG_SCSI_AACRAID is not set
1335# CONFIG_SCSI_AIC7XXX is not set 1353# CONFIG_SCSI_AIC7XXX is not set
1336# CONFIG_SCSI_AIC7XXX_OLD is not set
1337# CONFIG_SCSI_AIC79XX is not set 1354# CONFIG_SCSI_AIC79XX is not set
1338# CONFIG_SCSI_AIC94XX is not set 1355# CONFIG_SCSI_AIC94XX is not set
1339# CONFIG_SCSI_MVSAS is not set 1356# CONFIG_SCSI_MVSAS is not set
@@ -1510,15 +1527,16 @@ CONFIG_MD_FAULTY=m
1510CONFIG_BCACHE=m 1527CONFIG_BCACHE=m
1511# CONFIG_BCACHE_DEBUG is not set 1528# CONFIG_BCACHE_DEBUG is not set
1512# CONFIG_BCACHE_CLOSURES_DEBUG is not set 1529# CONFIG_BCACHE_CLOSURES_DEBUG is not set
1530CONFIG_BLK_DEV_DM_BUILTIN=y
1513CONFIG_BLK_DEV_DM=m 1531CONFIG_BLK_DEV_DM=m
1514# CONFIG_DM_DEBUG is not set 1532# CONFIG_DM_DEBUG is not set
1515CONFIG_DM_BUFIO=m 1533CONFIG_DM_BUFIO=m
1516CONFIG_DM_BIO_PRISON=m 1534CONFIG_DM_BIO_PRISON=m
1517CONFIG_DM_PERSISTENT_DATA=m 1535CONFIG_DM_PERSISTENT_DATA=m
1536# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
1518CONFIG_DM_CRYPT=m 1537CONFIG_DM_CRYPT=m
1519CONFIG_DM_SNAPSHOT=m 1538CONFIG_DM_SNAPSHOT=m
1520CONFIG_DM_THIN_PROVISIONING=m 1539CONFIG_DM_THIN_PROVISIONING=m
1521# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
1522CONFIG_DM_CACHE=m 1540CONFIG_DM_CACHE=m
1523CONFIG_DM_CACHE_MQ=m 1541CONFIG_DM_CACHE_MQ=m
1524CONFIG_DM_CACHE_CLEANER=m 1542CONFIG_DM_CACHE_CLEANER=m
@@ -1655,6 +1673,7 @@ CONFIG_E1000=m
1655# CONFIG_IXGBE is not set 1673# CONFIG_IXGBE is not set
1656# CONFIG_IXGBEVF is not set 1674# CONFIG_IXGBEVF is not set
1657# CONFIG_I40E is not set 1675# CONFIG_I40E is not set
1676# CONFIG_I40EVF is not set
1658# CONFIG_NET_VENDOR_I825XX is not set 1677# CONFIG_NET_VENDOR_I825XX is not set
1659# CONFIG_IP1000 is not set 1678# CONFIG_IP1000 is not set
1660# CONFIG_JME is not set 1679# CONFIG_JME is not set
@@ -1844,6 +1863,7 @@ CONFIG_INPUT_XEN_KBDDEV_FRONTEND=y
1844# Hardware I/O ports 1863# Hardware I/O ports
1845# 1864#
1846CONFIG_SERIO=y 1865CONFIG_SERIO=y
1866CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y
1847CONFIG_SERIO_I8042=y 1867CONFIG_SERIO_I8042=y
1848# CONFIG_SERIO_SERPORT is not set 1868# CONFIG_SERIO_SERPORT is not set
1849# CONFIG_SERIO_CT82C710 is not set 1869# CONFIG_SERIO_CT82C710 is not set
@@ -1985,6 +2005,7 @@ CONFIG_I2C_PIIX4=m
1985# I2C system bus drivers (mostly embedded / system-on-chip) 2005# I2C system bus drivers (mostly embedded / system-on-chip)
1986# 2006#
1987# CONFIG_I2C_CBUS_GPIO is not set 2007# CONFIG_I2C_CBUS_GPIO is not set
2008# CONFIG_I2C_DESIGNWARE_PLATFORM is not set
1988# CONFIG_I2C_DESIGNWARE_PCI is not set 2009# CONFIG_I2C_DESIGNWARE_PCI is not set
1989# CONFIG_I2C_EG20T is not set 2010# CONFIG_I2C_EG20T is not set
1990# CONFIG_I2C_GPIO is not set 2011# CONFIG_I2C_GPIO is not set
@@ -2000,6 +2021,7 @@ CONFIG_I2C_PIIX4=m
2000# CONFIG_I2C_DIOLAN_U2C is not set 2021# CONFIG_I2C_DIOLAN_U2C is not set
2001# CONFIG_I2C_PARPORT is not set 2022# CONFIG_I2C_PARPORT is not set
2002# CONFIG_I2C_PARPORT_LIGHT is not set 2023# CONFIG_I2C_PARPORT_LIGHT is not set
2024# CONFIG_I2C_ROBOTFUZZ_OSIF is not set
2003# CONFIG_I2C_TAOS_EVM is not set 2025# CONFIG_I2C_TAOS_EVM is not set
2004# CONFIG_I2C_TINY_USB is not set 2026# CONFIG_I2C_TINY_USB is not set
2005 2027
@@ -2041,6 +2063,7 @@ CONFIG_GPIO_ACPI=y
2041# CONFIG_GPIO_GENERIC_PLATFORM is not set 2063# CONFIG_GPIO_GENERIC_PLATFORM is not set
2042# CONFIG_GPIO_IT8761E is not set 2064# CONFIG_GPIO_IT8761E is not set
2043# CONFIG_GPIO_F7188X is not set 2065# CONFIG_GPIO_F7188X is not set
2066# CONFIG_GPIO_SCH311X is not set
2044# CONFIG_GPIO_TS5500 is not set 2067# CONFIG_GPIO_TS5500 is not set
2045# CONFIG_GPIO_SCH is not set 2068# CONFIG_GPIO_SCH is not set
2046# CONFIG_GPIO_ICH is not set 2069# CONFIG_GPIO_ICH is not set
@@ -2069,7 +2092,6 @@ CONFIG_GPIO_ACPI=y
2069# 2092#
2070# SPI GPIO expanders: 2093# SPI GPIO expanders:
2071# 2094#
2072# CONFIG_GPIO_MCP23S08 is not set
2073 2095
2074# 2096#
2075# AC97 GPIO expanders: 2097# AC97 GPIO expanders:
@@ -2239,6 +2261,7 @@ CONFIG_THERMAL_GOV_STEP_WISE=y
2239# CONFIG_THERMAL_GOV_USER_SPACE is not set 2261# CONFIG_THERMAL_GOV_USER_SPACE is not set
2240# CONFIG_THERMAL_EMULATION is not set 2262# CONFIG_THERMAL_EMULATION is not set
2241# CONFIG_INTEL_POWERCLAMP is not set 2263# CONFIG_INTEL_POWERCLAMP is not set
2264# CONFIG_ACPI_INT3403_THERMAL is not set
2242 2265
2243# 2266#
2244# Texas Instruments thermal drivers 2267# Texas Instruments thermal drivers
@@ -2251,6 +2274,7 @@ CONFIG_WATCHDOG_CORE=y
2251# Watchdog Device Drivers 2274# Watchdog Device Drivers
2252# 2275#
2253# CONFIG_SOFT_WATCHDOG is not set 2276# CONFIG_SOFT_WATCHDOG is not set
2277# CONFIG_DW_WATCHDOG is not set
2254# CONFIG_ACQUIRE_WDT is not set 2278# CONFIG_ACQUIRE_WDT is not set
2255# CONFIG_ADVANTECH_WDT is not set 2279# CONFIG_ADVANTECH_WDT is not set
2256# CONFIG_ALIM1535_WDT is not set 2280# CONFIG_ALIM1535_WDT is not set
@@ -2339,6 +2363,7 @@ CONFIG_MFD_CORE=m
2339# CONFIG_ABX500_CORE is not set 2363# CONFIG_ABX500_CORE is not set
2340# CONFIG_MFD_SYSCON is not set 2364# CONFIG_MFD_SYSCON is not set
2341# CONFIG_MFD_TI_AM335X_TSCADC is not set 2365# CONFIG_MFD_TI_AM335X_TSCADC is not set
2366# CONFIG_MFD_LP3943 is not set
2342# CONFIG_TPS6105X is not set 2367# CONFIG_TPS6105X is not set
2343# CONFIG_TPS65010 is not set 2368# CONFIG_TPS65010 is not set
2344# CONFIG_TPS6507X is not set 2369# CONFIG_TPS6507X is not set
@@ -2361,6 +2386,7 @@ CONFIG_AGP_AMD64=m
2361CONFIG_AGP_INTEL=m 2386CONFIG_AGP_INTEL=m
2362CONFIG_AGP_SIS=m 2387CONFIG_AGP_SIS=m
2363CONFIG_AGP_VIA=m 2388CONFIG_AGP_VIA=m
2389CONFIG_INTEL_GTT=m
2364# CONFIG_VGA_ARB is not set 2390# CONFIG_VGA_ARB is not set
2365# CONFIG_VGA_SWITCHEROO is not set 2391# CONFIG_VGA_SWITCHEROO is not set
2366CONFIG_DRM=m 2392CONFIG_DRM=m
@@ -2385,6 +2411,7 @@ CONFIG_DRM_I915=m
2385# CONFIG_DRM_I915_KMS is not set 2411# CONFIG_DRM_I915_KMS is not set
2386# CONFIG_DRM_I915_FBDEV is not set 2412# CONFIG_DRM_I915_FBDEV is not set
2387# CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT is not set 2413# CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT is not set
2414# CONFIG_DRM_I915_UMS is not set
2388CONFIG_DRM_MGA=m 2415CONFIG_DRM_MGA=m
2389CONFIG_DRM_SIS=m 2416CONFIG_DRM_SIS=m
2390CONFIG_DRM_VIA=m 2417CONFIG_DRM_VIA=m
@@ -2399,6 +2426,7 @@ CONFIG_DRM_GMA3600=y
2399CONFIG_DRM_MGAG200=m 2426CONFIG_DRM_MGAG200=m
2400CONFIG_DRM_CIRRUS_QEMU=m 2427CONFIG_DRM_CIRRUS_QEMU=m
2401CONFIG_DRM_QXL=m 2428CONFIG_DRM_QXL=m
2429# CONFIG_DRM_BOCHS is not set
2402CONFIG_VGASTATE=m 2430CONFIG_VGASTATE=m
2403CONFIG_VIDEO_OUTPUT_CONTROL=m 2431CONFIG_VIDEO_OUTPUT_CONTROL=m
2404CONFIG_HDMI=y 2432CONFIG_HDMI=y
@@ -2433,6 +2461,7 @@ CONFIG_FB_VGA16=m
2433CONFIG_FB_UVESA=m 2461CONFIG_FB_UVESA=m
2434# CONFIG_FB_N411 is not set 2462# CONFIG_FB_N411 is not set
2435# CONFIG_FB_HGA is not set 2463# CONFIG_FB_HGA is not set
2464# CONFIG_FB_OPENCORES is not set
2436# CONFIG_FB_S1D13XXX is not set 2465# CONFIG_FB_S1D13XXX is not set
2437# CONFIG_FB_NVIDIA is not set 2466# CONFIG_FB_NVIDIA is not set
2438# CONFIG_FB_RIVA is not set 2467# CONFIG_FB_RIVA is not set
@@ -2589,20 +2618,20 @@ CONFIG_SND_HDA_INPUT_BEEP=y
2589CONFIG_SND_HDA_INPUT_BEEP_MODE=0 2618CONFIG_SND_HDA_INPUT_BEEP_MODE=0
2590CONFIG_SND_HDA_INPUT_JACK=y 2619CONFIG_SND_HDA_INPUT_JACK=y
2591# CONFIG_SND_HDA_PATCH_LOADER is not set 2620# CONFIG_SND_HDA_PATCH_LOADER is not set
2592CONFIG_SND_HDA_CODEC_REALTEK=y 2621CONFIG_SND_HDA_CODEC_REALTEK=m
2593CONFIG_SND_HDA_CODEC_ANALOG=y 2622CONFIG_SND_HDA_CODEC_ANALOG=m
2594CONFIG_SND_HDA_CODEC_SIGMATEL=y 2623CONFIG_SND_HDA_CODEC_SIGMATEL=m
2595CONFIG_SND_HDA_CODEC_VIA=y 2624CONFIG_SND_HDA_CODEC_VIA=m
2596CONFIG_SND_HDA_CODEC_HDMI=y 2625CONFIG_SND_HDA_CODEC_HDMI=m
2597CONFIG_SND_HDA_I915=y 2626CONFIG_SND_HDA_I915=y
2598CONFIG_SND_HDA_CODEC_CIRRUS=y 2627CONFIG_SND_HDA_CODEC_CIRRUS=m
2599CONFIG_SND_HDA_CODEC_CONEXANT=y 2628CONFIG_SND_HDA_CODEC_CONEXANT=m
2600CONFIG_SND_HDA_CODEC_CA0110=y 2629CONFIG_SND_HDA_CODEC_CA0110=m
2601CONFIG_SND_HDA_CODEC_CA0132=y 2630CONFIG_SND_HDA_CODEC_CA0132=m
2602# CONFIG_SND_HDA_CODEC_CA0132_DSP is not set 2631# CONFIG_SND_HDA_CODEC_CA0132_DSP is not set
2603CONFIG_SND_HDA_CODEC_CMEDIA=y 2632CONFIG_SND_HDA_CODEC_CMEDIA=m
2604CONFIG_SND_HDA_CODEC_SI3054=y 2633CONFIG_SND_HDA_CODEC_SI3054=m
2605CONFIG_SND_HDA_GENERIC=y 2634CONFIG_SND_HDA_GENERIC=m
2606CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0 2635CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
2607# CONFIG_SND_HDSP is not set 2636# CONFIG_SND_HDSP is not set
2608# CONFIG_SND_HDSPM is not set 2637# CONFIG_SND_HDSPM is not set
@@ -2801,7 +2830,9 @@ CONFIG_USB_STORAGE_ENE_UB6250=m
2801# 2830#
2802# CONFIG_USB_MDC800 is not set 2831# CONFIG_USB_MDC800 is not set
2803# CONFIG_USB_MICROTEK is not set 2832# CONFIG_USB_MICROTEK is not set
2833# CONFIG_USB_MUSB_HDRC is not set
2804# CONFIG_USB_DWC3 is not set 2834# CONFIG_USB_DWC3 is not set
2835# CONFIG_USB_DWC2 is not set
2805# CONFIG_USB_CHIPIDEA is not set 2836# CONFIG_USB_CHIPIDEA is not set
2806 2837
2807# 2838#
@@ -2842,6 +2873,7 @@ CONFIG_USB_STORAGE_ENE_UB6250=m
2842# USB Physical Layer drivers 2873# USB Physical Layer drivers
2843# 2874#
2844# CONFIG_USB_PHY is not set 2875# CONFIG_USB_PHY is not set
2876# CONFIG_USB_OTG_FSM is not set
2845# CONFIG_NOP_USB_XCEIV is not set 2877# CONFIG_NOP_USB_XCEIV is not set
2846# CONFIG_SAMSUNG_USB2PHY is not set 2878# CONFIG_SAMSUNG_USB2PHY is not set
2847# CONFIG_SAMSUNG_USB3PHY is not set 2879# CONFIG_SAMSUNG_USB3PHY is not set
@@ -2913,6 +2945,7 @@ CONFIG_RTC_DRV_MAX6900=m
2913CONFIG_RTC_DRV_RS5C372=m 2945CONFIG_RTC_DRV_RS5C372=m
2914CONFIG_RTC_DRV_ISL1208=m 2946CONFIG_RTC_DRV_ISL1208=m
2915# CONFIG_RTC_DRV_ISL12022 is not set 2947# CONFIG_RTC_DRV_ISL12022 is not set
2948# CONFIG_RTC_DRV_ISL12057 is not set
2916CONFIG_RTC_DRV_X1205=m 2949CONFIG_RTC_DRV_X1205=m
2917# CONFIG_RTC_DRV_PCF2127 is not set 2950# CONFIG_RTC_DRV_PCF2127 is not set
2918# CONFIG_RTC_DRV_PCF8523 is not set 2951# CONFIG_RTC_DRV_PCF8523 is not set
@@ -3033,11 +3066,11 @@ CONFIG_STAGING=y
3033# CONFIG_COMEDI is not set 3066# CONFIG_COMEDI is not set
3034# CONFIG_PANEL is not set 3067# CONFIG_PANEL is not set
3035# CONFIG_RTS5139 is not set 3068# CONFIG_RTS5139 is not set
3069# CONFIG_RTS5208 is not set
3036# CONFIG_TRANZPORT is not set 3070# CONFIG_TRANZPORT is not set
3037# CONFIG_IDE_PHISON is not set 3071# CONFIG_IDE_PHISON is not set
3038# CONFIG_LINE6_USB is not set 3072# CONFIG_LINE6_USB is not set
3039# CONFIG_DX_SEP is not set 3073# CONFIG_DX_SEP is not set
3040# CONFIG_ZSMALLOC is not set
3041# CONFIG_FB_SM7XX is not set 3074# CONFIG_FB_SM7XX is not set
3042# CONFIG_CRYSTALHD is not set 3075# CONFIG_CRYSTALHD is not set
3043# CONFIG_FB_XGI is not set 3076# CONFIG_FB_XGI is not set
@@ -3065,7 +3098,6 @@ CONFIG_STAGING=y
3065# CONFIG_CED1401 is not set 3098# CONFIG_CED1401 is not set
3066# CONFIG_DGRP is not set 3099# CONFIG_DGRP is not set
3067# CONFIG_FIREWIRE_SERIAL is not set 3100# CONFIG_FIREWIRE_SERIAL is not set
3068# CONFIG_USB_DWC2 is not set
3069# CONFIG_LUSTRE_FS is not set 3101# CONFIG_LUSTRE_FS is not set
3070# CONFIG_XILLYBUS is not set 3102# CONFIG_XILLYBUS is not set
3071# CONFIG_DGNC is not set 3103# CONFIG_DGNC is not set
@@ -3123,6 +3155,7 @@ CONFIG_FIRMWARE_MEMMAP=y
3123# CONFIG_DCDBAS is not set 3155# CONFIG_DCDBAS is not set
3124CONFIG_DMIID=y 3156CONFIG_DMIID=y
3125# CONFIG_DMI_SYSFS is not set 3157# CONFIG_DMI_SYSFS is not set
3158CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y
3126# CONFIG_ISCSI_IBFT_FIND is not set 3159# CONFIG_ISCSI_IBFT_FIND is not set
3127# CONFIG_GOOGLE_FIRMWARE is not set 3160# CONFIG_GOOGLE_FIRMWARE is not set
3128CONFIG_UEFI_CPER=y 3161CONFIG_UEFI_CPER=y
@@ -3201,7 +3234,6 @@ CONFIG_QUOTACTL=y
3201CONFIG_AUTOFS4_FS=m 3234CONFIG_AUTOFS4_FS=m
3202CONFIG_FUSE_FS=m 3235CONFIG_FUSE_FS=m
3203# CONFIG_CUSE is not set 3236# CONFIG_CUSE is not set
3204CONFIG_GENERIC_ACL=y
3205 3237
3206# 3238#
3207# Caches 3239# Caches
@@ -3325,6 +3357,7 @@ CONFIG_RPCSEC_GSS_KRB5=m
3325# CONFIG_SUNRPC_DEBUG is not set 3357# CONFIG_SUNRPC_DEBUG is not set
3326CONFIG_CEPH_FS=m 3358CONFIG_CEPH_FS=m
3327CONFIG_CEPH_FSCACHE=y 3359CONFIG_CEPH_FSCACHE=y
3360# CONFIG_CEPH_FS_POSIX_ACL is not set
3328CONFIG_CIFS=m 3361CONFIG_CIFS=m
3329# CONFIG_CIFS_STATS is not set 3362# CONFIG_CIFS_STATS is not set
3330# CONFIG_CIFS_WEAK_PW_HASH is not set 3363# CONFIG_CIFS_WEAK_PW_HASH is not set
@@ -3461,6 +3494,7 @@ CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
3461# CONFIG_DETECT_HUNG_TASK is not set 3494# CONFIG_DETECT_HUNG_TASK is not set
3462# CONFIG_PANIC_ON_OOPS is not set 3495# CONFIG_PANIC_ON_OOPS is not set
3463CONFIG_PANIC_ON_OOPS_VALUE=0 3496CONFIG_PANIC_ON_OOPS_VALUE=0
3497CONFIG_PANIC_TIMEOUT=0
3464CONFIG_SCHED_DEBUG=y 3498CONFIG_SCHED_DEBUG=y
3465CONFIG_SCHEDSTATS=y 3499CONFIG_SCHEDSTATS=y
3466CONFIG_TIMER_STATS=y 3500CONFIG_TIMER_STATS=y
@@ -3529,6 +3563,8 @@ CONFIG_TRACING_SUPPORT=y
3529# CONFIG_TEST_STRING_HELPERS is not set 3563# CONFIG_TEST_STRING_HELPERS is not set
3530CONFIG_TEST_KSTRTOX=m 3564CONFIG_TEST_KSTRTOX=m
3531# CONFIG_DMA_API_DEBUG is not set 3565# CONFIG_DMA_API_DEBUG is not set
3566# CONFIG_TEST_MODULE is not set
3567# CONFIG_TEST_USER_COPY is not set
3532# CONFIG_SAMPLES is not set 3568# CONFIG_SAMPLES is not set
3533CONFIG_HAVE_ARCH_KGDB=y 3569CONFIG_HAVE_ARCH_KGDB=y
3534# CONFIG_KGDB is not set 3570# CONFIG_KGDB is not set
@@ -3630,6 +3666,7 @@ CONFIG_GRKERNSEC_JIT_HARDEN=y
3630CONFIG_GRKERNSEC_PERF_HARDEN=y 3666CONFIG_GRKERNSEC_PERF_HARDEN=y
3631# CONFIG_GRKERNSEC_RAND_THREADSTACK is not set 3667# CONFIG_GRKERNSEC_RAND_THREADSTACK is not set
3632CONFIG_GRKERNSEC_PROC_MEMMAP=y 3668CONFIG_GRKERNSEC_PROC_MEMMAP=y
3669CONFIG_GRKERNSEC_KSTACKOVERFLOW=y
3633# CONFIG_GRKERNSEC_BRUTE is not set 3670# CONFIG_GRKERNSEC_BRUTE is not set
3634# CONFIG_GRKERNSEC_MODHARDEN is not set 3671# CONFIG_GRKERNSEC_MODHARDEN is not set
3635# CONFIG_GRKERNSEC_HIDESYM is not set 3672# CONFIG_GRKERNSEC_HIDESYM is not set
@@ -3882,6 +3919,9 @@ CONFIG_CRYPTO_HW=y
3882CONFIG_CRYPTO_DEV_PADLOCK=m 3919CONFIG_CRYPTO_DEV_PADLOCK=m
3883CONFIG_CRYPTO_DEV_PADLOCK_AES=m 3920CONFIG_CRYPTO_DEV_PADLOCK_AES=m
3884CONFIG_CRYPTO_DEV_PADLOCK_SHA=m 3921CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
3922CONFIG_CRYPTO_DEV_CCP=y
3923CONFIG_CRYPTO_DEV_CCP_DD=m
3924CONFIG_CRYPTO_DEV_CCP_CRYPTO=m
3885CONFIG_ASYMMETRIC_KEY_TYPE=m 3925CONFIG_ASYMMETRIC_KEY_TYPE=m
3886CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=m 3926CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=m
3887CONFIG_PUBLIC_KEY_ALGO_RSA=m 3927CONFIG_PUBLIC_KEY_ALGO_RSA=m